软件工程导论期末复习

软件危机的典型表现

  1. 对软件开发的成本和进度的估计往往很不准确
  2. 用户对“已完成的”软件系统不满意的现象经常发生
  3. 软件产品质量往往靠不住
  4. 软件常常是不可维护的
  5. 软件通常没有适当的文档资料
  6. 软件的成本在计算机系统总成本中所占比例逐年上升
  7. 软件开发成产率提高的速度,远远跟不上计算机应用迅速普及及深入的趋势

软件工程的三个基本要素:过程、工具、方法

软件工程的基本原理

  1. 用分阶段的生命周期计划严格管理
  2. 坚持进行阶段评审
  3. 实行严格的产品控制
  4. 采用现代程序设计技术
  5. 结果应能清楚地审查
  6. 开发小组的成员应该少而精
  7. 承认不断改进软件工程实践的必要性

面向对象方法学的四个要点

  1. 把对象作为融合了数据及在数据上的操作行为统一的软件构件
  2. 把所有的对象都划分成类
  3. 按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)
  4. 对象彼此间仅能通过发送消息互相联系

瀑布模型的优点

  1. 可强迫开发人采用规范的方法(例如:结构化技术);
  2. 严格地规定了每个阶段必须提交的文档
  3. 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证

瀑布模型各个阶段产生的文档是维护软件产品时必不可少的,没有文档的软件几乎是不可能维护的。

螺旋模型

为了降低交付给用户的产品不能满足用户需要的风险,一种行之有效的方法是在需求分析阶段快速地构建一个原型。在后续的阶段中也可以通过构造适当的原型来降低某些技术风险。

螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。

系统流程图(P38)

在进行可行性研究时需要了解和分析现有的系统,并以概括的方式表达对现有系统的认识。

系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图像符号以黑盒子形式描绘组成系统的每个部件(程序、文档、数据库、人工过程等)

数据流图(P40)

当数据在软件系统中移动时,它将被一系列“变换”所修改。数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。

数据字典

数据字典应由对下列4类元素的定义组成

  1. 数据流
  2. 数据流分量(即数据元素)
  3. 数据储存
  4. 处理

与用户沟通获取需求的方法

  1. 访谈
  2. 面向数据流自顶而下求精
  3. 简易的应用规格说明技术
  4. 快速建立软件原型

需求分析过程应建立的三个模型

数据模型、功能模型、行为模型

实体-联系图(P62)

ER图中包含了实体(即数据对象),关系和属性3种基本成分,通常用矩形框代表实体,用相连相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体(或关系)的属性,并用直线把实体(或关系)与其属性连接起来。

层次方框图(P68)

层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。

随着结构的精细化,层次方框图对数据结构也描绘得越来越详细,这种模式非常适合于需求分析阶段的需要。

总体设计:高内聚低耦合

总体设计设计原理

1.模块化

        采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。因为程序错误通常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试,因而有助于提高软件的可靠性。因为变动往往只涉及少数几个模块,所以模块化能够提高软件的可修改性。模块化也有助于软件开发工程的组织管理,一个复杂的大型程序可以由许多程序员分工编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的模块。

2.抽象

3.逐步求精

4.信息隐藏和局部化

5.模块独立

偶然内聚:如果一个模块完成一组任务,这些任务彼此之间即使有关系,关系也是很松散的,就叫做偶然内聚。

功能内聚:根据数据流图划分模块时,通常得到顺序内聚的模块,这种模块彼此之间的连接往往比较简单。如果模块内所有元素属于一个整体,完成一个单一的功能,则称为功能内聚。功能内聚是最高程度的内聚。

七种内聚:功能内聚(最紧密),顺序内聚,通信内聚,过程内聚,时间内聚,逻辑内聚,偶然内聚(最松散)。

启发规则3

深度、宽度、扇出和扇入都应适当

扇出是一个模块直接控制(调用)的模块数目,扇出过大意味着模块过于复杂,需要控制和协调过多的下级模块;扇出过小也不好。

一个模块的扇入表明有多少个上级模块直接调用它,扇入越大则共享该模块的上级模块数目越多,这是有好处的。

层次图和HIPO图(P102)了解概念。

层次图用来描绘软件的层次结构。

面向数据流的设计方法

面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。

信息流有下述两种类型:1.变换流;2.事务流

详细设计

详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。

结构程序设计

只用3种基本的控制结构就能实现任何单入口单出口的程序。这三种基本控制结构是:“顺序”,“选择”和“循环”

人机界面设计

人机界面设计是接口设计的一个重要组成部分。对于交互式系统来说,人机界面设计和数据设计,体系结构设计及过程设计一样重要。近年来,人机界面在系统设计种所占的比例越来越大,在个别系统中人机界面的设计工作量甚至占总设计量的一半以上。

盒图(P125)和判定表(P127)

McCabe方法

1.流图

        McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度

2.计算环形复杂度的方法

        有了描绘程序控制流的流图之后,可以用下面3种方法中的任何一种来计算环形复杂度:

        ①流图中线性无关的区域数等于环形复杂度。

        ②流图G的环形复杂度V(G) = E - N + 2,其中,E是流图中边的条数,N是节点数。

        ③流图G的环形复杂度V(G) = P + 1,其中P是流图中判定节点的数目。

实现

通常把编码和测试统称为实现

软件测试基础

暴露问题并不是软件测试的最终目的,发现问题是为了解决问题,测试阶段的根本目标是尽可能多的发现并排除软件中隐藏的错误,最终把一个高质量的软件系统交给用户使用

单元测试

单元测试集中检测软件设计最小单元——模块。通常单元测试和编码属于软件过程的统一阶段。

自顶向下集成测试

1.对主控制模块进行测试,测试时用存根程序代替所有直接附属于主控制模块的模块

2.根据选定的结合策略(深度优先或宽度优先),每次用一个实际模块代换一个存根程序(新结合进来的模块往往又需要新的存根程序)。

3.在结合进一个模块的同时进行测试

4.为了保证加入模块没有引进新的错误,可能需要进行回归测试

白盒测试技术——逻辑覆盖

  1. 语句覆盖
  2. 判定覆盖
  3. 条件覆盖
  4. 判定/条件覆盖
  5. 条件组合覆盖
  6. 点覆盖
  7. 边覆盖
  8. 路径覆盖

软件维护的定义

通过描述软件交付使用后可能进行的4项活动,具体地定义软件维护。

  1. 改正性维护:诊断和改正错误的过程
  2. 适应性维护:也就是为了和变化了的环境适当地配合而进行修改软件的活动,是既必要又经常的活动
  3. 完善性维护(通常占据软件维护工作的大部分)
  4. 预防性维护(目前这项维护相对较少)

用例图(P224)

能力成熟度模型

能力成熟度模型5个等级和特点

1.初始级

        软件过程的特征是无序的,有时甚至是混乱的

2.可重复级

        达到2级的一个目标是使项目管理过程稳定,从而使得软件机构能重复以前在成功项目中所进行过的软件项目工程实践

3.已定义级

        软件机构已经定义了完整的软件过程(过程模型),软件过程以及文档化和标准化

4.已管理级

        软件机构对软件过程(过程模型和过程实例)和软件产品都建立了定量的质量目标,所有项目的重要的过程活动都是可以度量的

5.优化级

        软件机构集中精力持续不断地改进软件过程。这一级包含了第4级的全部特征。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值