软件工程复习

Posted by XDong on June 20, 2022

软件工程

第1章 软件工程学概述(2个题30分)

为什么会产生软件危机?

客观上:软件产品开发的复杂度和难度随软件规模呈指数级别增长

  • 随着软件规模的急速增长,软件的开发方法已经不适用了

主观上:软件开发人员缺乏工程性的、系统性的方法论

  • 程序员具有编程的能力,但对软件开发这一过程性较强的任务缺乏足够的工程性思维
  • 对软件开发的一些认识的误区:软件神话
  • 忽视需求分析、轻视软件维护

敏捷模型适用于什么场景?

特点与优势(价值观声明):

  1. 个体和交互胜过过程和工具
  2. 可以工作的软件胜过面面俱到的文档
  3. 客户合作胜过合同谈判
  4. 响应变化胜过遵循计划

适用场景:

  1. 项目团队的人数不能太多
  2. 项目经常发生变更
  3. 高风险的项目实施
  4. 开发人员可以参与决策

谈一谈软件设计对社会、环境、经济、健康的影响

  1. 使用软件替代人力计算,促进了社会生产力发展
  2. 有些仿真软件可以使用计算机进行仿真,节约了材料,保护了环境
  3. 软件设计促进了经济发展,使用一些软件可以更好的进行贸易、购物等等
  4. 优秀的软件可以促进人们身体健康,更好的监测身体情况

第2章 可行性分析

数据流图和软件结构层次图(数据流图2层)(10分)

数据流图: 顶层:数据流图顶层 0层:数据流图0层 1层:数据流图1层

软件结构层次图: 软件结构层次图

成本效益分析(计不计复利)

1-4题

1-4题

第3章 需求分析

可行性分析:探究经济可行性

经济可行性 经济可行性

第5章 总体设计

什么叫高内聚、低耦合?是否是内聚程度越高、耦合程度越低越好?

  • 所谓的高内聚就是把功能相关的模块集合在一起。
  • 所谓得低耦合就是把每个模块之间的关联性降到可控范围的最低。
  • 并不是内聚越高越好,耦合越低越好,真正好的设计是在高内聚和低耦合间进行平衡,也就是说高内聚和低耦合是冲突的。
  • 最强的内聚莫过于一个类只写一个函数,但这会带来一个明显的问题:类的数量急剧增多,这样就导致了其它类的耦合特别多,于是整个设计就变成了“高内聚高耦合”了。由于高耦合,整个系统变动同样非常频繁。
  • 最弱的耦合是一个类将所有的函数都包含了,这样类完全不依赖其它类,耦合性是最低的。但这样会带来一个明显的问题:内聚性很低,于是整个设计就变成了“低耦合低内聚”了。由于低内聚,整个类的变动同样非常频繁。
  • 真正做到高内聚、低耦合是很难的,很多时候未必一定要这样,更多的时候“最适合”的才是最好的。

第6章 详细设计

判定树(好好读题)(15分)

判定树

给出一个程序代码,画出程序流程图、流图,求出环形复杂度

流程图 流图

第7章 实现

黑盒测试

  • 黑盒测试的概念:从用户的角度进行测试,不必知道软件内部的逻辑结构
  • 无效等价类

白盒测试(有程序片段,化为了流程图)

  • 条件覆盖
  • 判定
  • 组合

第9章 面向对象方法学引述

给出一段文字,写出属性,画出类图(体现类与类之间的关系,只有两种)

复杂类图

总结

需要会画的图:

  • 数据流图
  • 软件结构层次图
  • 判定树
  • 程序流程图
  • 流图
  • 类图

附件