软件工程
第1章 软件工程学概述(2个题30分)
为什么会产生软件危机?
客观上:软件产品开发的复杂度和难度随软件规模呈指数级别增长
- 随着软件规模的急速增长,软件的开发方法已经不适用了
主观上:软件开发人员缺乏工程性的、系统性的方法论
- 程序员具有编程的能力,但对软件开发这一过程性较强的任务缺乏足够的工程性思维
- 对软件开发的一些认识的误区:软件神话
- 忽视需求分析、轻视软件维护
敏捷模型适用于什么场景?
特点与优势(价值观声明):
- 个体和交互胜过过程和工具
- 可以工作的软件胜过面面俱到的文档
- 客户合作胜过合同谈判
- 响应变化胜过遵循计划
适用场景:
- 项目团队的人数不能太多
- 项目经常发生变更
- 高风险的项目实施
- 开发人员可以参与决策
谈一谈软件设计对社会、环境、经济、健康的影响
- 使用软件替代人力计算,促进了社会生产力发展
- 有些仿真软件可以使用计算机进行仿真,节约了材料,保护了环境
- 软件设计促进了经济发展,使用一些软件可以更好的进行贸易、购物等等
- 优秀的软件可以促进人们身体健康,更好的监测身体情况
第2章 可行性分析
数据流图和软件结构层次图(数据流图2层)(10分)
数据流图:
顶层:
0层:
1层:
软件结构层次图:
成本效益分析(计不计复利)
1-4题
第3章 需求分析
可行性分析:探究经济可行性
第5章 总体设计
什么叫高内聚、低耦合?是否是内聚程度越高、耦合程度越低越好?
- 所谓的高内聚就是把功能相关的模块集合在一起。
- 所谓得低耦合就是把每个模块之间的关联性降到可控范围的最低。
- 并不是内聚越高越好,耦合越低越好,真正好的设计是在高内聚和低耦合间进行平衡,也就是说高内聚和低耦合是冲突的。
- 最强的内聚莫过于一个类只写一个函数,但这会带来一个明显的问题:类的数量急剧增多,这样就导致了其它类的耦合特别多,于是整个设计就变成了“高内聚高耦合”了。由于高耦合,整个系统变动同样非常频繁。
- 最弱的耦合是一个类将所有的函数都包含了,这样类完全不依赖其它类,耦合性是最低的。但这样会带来一个明显的问题:内聚性很低,于是整个设计就变成了“低耦合低内聚”了。由于低内聚,整个类的变动同样非常频繁。
- 真正做到高内聚、低耦合是很难的,很多时候未必一定要这样,更多的时候“最适合”的才是最好的。
第6章 详细设计
判定树(好好读题)(15分)
给出一个程序代码,画出程序流程图、流图,求出环形复杂度
第7章 实现
黑盒测试
- 黑盒测试的概念:从用户的角度进行测试,不必知道软件内部的逻辑结构
- 无效等价类
白盒测试(有程序片段,化为了流程图)
- 条件覆盖
- 判定
- 组合
第9章 面向对象方法学引述
给出一段文字,写出属性,画出类图(体现类与类之间的关系,只有两种)
总结
需要会画的图:
- 数据流图
- 软件结构层次图
- 判定树
- 程序流程图
- 流图
- 类图