软件工程复习材料由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“软件工程复习重点”。
1.软件的概念
一般可以将软件划分为系统软件、应用软件和介于这两者之间的中间件。计算机软件的传统定义为:软件是计算机系统中与硬件相依存的另一部分,软件包括程序、数据及其相关文档的完整集合。
程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。
2.软件的特性
1)形态特性。软件是无形的、不可见的逻辑实体。2)智能特性。3)开发特性。4)质量特性。5)生产特性。6)管理特性。7)环境特性。8)维护特性。9)废弃特性。10)应用特性。
软件危机:软件开发周期长、成本高、质量差、维护困难 原因
1)缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作的计划很难制订;
2)软件人员与用户的交流存在障碍;
3)软件开发过程不规范,缺少方法论和规范的指导;
4)随着软件规模的增大,其复杂性往往会呈指数型增长; 5)缺少有效的软件评测手段,提交用户的质量差。
1.1.1 软件工程的概念
软件工程是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
1.1.2 软件工程的目标
软件工程的目标是运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短的周期、较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。
衡量软件质量的6个特性:功能性、可靠性、可使用性、效率、可维护性和可移植性。1.1.3 软件工程的基本原理按软件生存周期分阶段制订计划并认真实施; 3 坚持进行阶段评审; 4 坚持严格的产品控制; 5 使用现代程序设计技术; 6 明确责任; 7 用人少而精;不断改进开发过程
软件生存期: 软件定义:问题定义、可行性研究和需求分析
软件开发:概要设计、详细设计、编码和测试
运行维护:改正性维护、适应性维护、完善性维护和预防性维护
软件工程方法学包含3个要素:方法、工具和过程。
3.1 软件需求分析阶段的任务:获取需求、分析需求、定义需求和验证需求
3.4 数据建模三要素:数据对象,属性,关系 3.5 行为建模三要素:状态,状态转换,事件
1.1.1 软件设计的阶段与任务:两个阶段:概要设计阶段和详细设计阶段
1.1.2 模块独立性
1)松散耦合:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合。
高度内聚:巧合内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,信息内聚,功能内聚
1.1.3 设计过程
(1)复查并精化数据流图;
(2)确定数据流图中数据流的类型,典型的数据流类型有变换型数据流和事务型数据流;
(3)导出初始的软件结构图;(4)逐级分解;
(5)精化软件结构;
(6)导出接口描述和全局数据结构
1.1.4 软件模块结构的改进方法 1)模块功能的完善化;
2)消除重复功能,改善软件结构;
3)模块的作用范围应在控制范围之内;
4)尽可能减少高扇出结构,随着深度增大扇入; 5)避免或减少使用病态连接; 6)模块的大小要适中
5.1.2 自顶向下、逐步细化的设计过程
一是将复杂问题的解法分解和细化成由若干个模块组成的层次结构; 二是将每个模块的功能逐步分解细化为一系列的处理。
7.1面向对象的主要概念(1)对象(2)类(3)继承
(4)消息:把向对象发出的操作请求称为消息;(5)关联:是两个或多个类之间的一个静态关系;
(6)聚合:一个对象由其它若干个对象作为其构成部分。
7.2基本原则主要有:抽象、分类、封装、消息通信、多态性、复杂性控制
8.1面向对象分析(OOA)是软件生命周期的一个阶段,具有一般分析方法所共有的内容、目标及策略。
(1)OOA模型分为3个层次:对象层、特征层和关系层。
12.1.1 软件维护的定义
称在软件运行/维护阶段对软件产品所进行的修改就是所谓的维护。1.改正性维护:诊断和改正错误的过程;
2.适应性维护:为了使软件适应外部环境或数据环境可能发生的变化,而修改软件的过程称为适应性维护; 3.完善性维护:
修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性,这种情况下进行的维护活动称为完善性维护。4..预防性维护
12.2 软件维护活动 1 软件维护申请报告 2 软件维护工作流程 3 维护档案记录 4 维护评价
12.3.3 修改程序的副作用以及其控制
所谓副作用是指因修改软件而造成的错误及其它不希望发生的情况 1.修改代码的副作用 2.修改数据的副作用 3.修改文档的副作用
12.4.1软件可维护性的定义
所谓软件可维护性,是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。
12.4.2 可维护性的度量 1.可理解性 2.可靠性 3.可测试性 4.可修改性 5.可移植性 6.效率
7.可使用性
10.2 传统软件过程模型 10.2.1 瀑布模型: 优点:(1)可强迫开发人员采用规范化的方法
(2)严格的规定了每个阶段必须提交的文档
(3)要求每个阶段交出的所有产品必须是经过验证的 缺点:(1)几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需求
(2)瀑布模型只适用于项目开始时需求已确定的情况
10.2.2 快速原型模型
优点:(1)有助于满足用户的真实需求。
(2)原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求。
(3)软件产品的开发基本上是按线性顺序进行。
(4)因为规格说明文档正确地描述了用户需求,因此,在开发过程的后续阶段不会因为发现规格说明文档的错误而进行较大的返工。
(5)开发人员通过建立原型系统已经学到了许多东西,因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性。(6)快速原型的突出特点是“快速”。10.2.3 增量模型
优点;(1)能在较短时间内向用户提交可完成一些有用的工作产品
(2)逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给用户组织带来的冲击。(3)项目失败的风险较低
(4)优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。10.2.4 螺旋模型 • 优点
对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。
减少了过多测试或测试不足所带来的风险。
在螺旋模型中维护只是模型的另一个周期,因而在维护和开发之间并没有本质区别。• 缺点
螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还以为一切正常。
10.2.5 喷泉模型