软件工程期末复习
软件危机的原因:一方面是与软件本身的特点有关,另一方面是由软件开发和维护的方法不正确有关。
软件危机包含两方面问题:
- 如何开发软件,以满足不断增长,日趋复杂的需求;
- 如何维护数量不断膨胀的软件产品。
过程与活动
过程:问题定义、可行性研究、需求分析、设计、实施、测试、部署
可行性研究:成本/效益
过程模型
过程模型:线性、瀑布、V、环形。。。(不推荐)
过程模型推荐
XP: 小型团队、需求变化频繁、开发周期短的项目(尤其适合互联网软件)
螺旋: 大型、复杂、风险高、需求不明确的项目
RUP 统一过程模型
- 面向对象、用例驱动:以用例为中心,符合面向对象开发思想
- 可迭代、可增量:每个迭代都能交付可运行的软件
- 风险驱动:在早期识别并降低风险
- 文档规范、过程标准化:有明确的阶段、里程碑和文档产物
- 可视化建模:强调UML建模,方便沟通与分析
适合: 大中型、复杂项目,需求复杂、风险高的项目
增量模型
- 可分阶段交付:每个增量都是一个子系统,能早交付部分功能
- 降低风险:问题可在后续增量中修复
- 用户反馈快:用户能早体验到产品并反馈
- 适应需求变化:后续增量可以增加新需求
适合: 需求较清楚,但无法一次开发完成的项目;资金、时间有限,想逐步发布的项目
需求分析
需求分析:做什么、不做什么、做到什么程度。
分为功能性、非功能性需求两类。
传统分析
数据流程图:分为总体(系统与环境的关系)、零级(描述主要功能)、细节三个层次。
行为建模:状态转换图 Petri 网
面向对象分析
用例图(用例建模)

- 参与者之间只有泛化(继承)关系
- 用例之间有泛化、包含include、扩展extend关系
类图(对象-关系建模)

- 实体类类图:类间有泛化(继承)、关联(聚合组合)、依赖。类和接口之间有实现。

- 参与类(分析类)类图:
- 边界类:系统及其参与者边界,xx界面类
- 控制类:系统控制逻辑,xxHandler
- 实体类:系统使用信息。
活动图(对象-行为建模)
时序图


活动图


设计方法
总体设计(概要、架构设计)
不应该陷入片面性,追踪分析模型,选择合适技术,可集成,可复用,有韧性,交互人性化。
软件架构应该反应整体组织结构和基本特征,体现层次结构、模块相互作用、全局重要的数据变量和数据结构、接口
详细设计
在软件构架的基础上进一步确定如何实现目 标系统,具体包括系统的模块(如类及其方 法)逻辑的详细设计、系统数据结构的设计、 系统数据库结构的设计、系统人-机接口的 设计等
分治
- 分治概念:将一个大的系统分解为一系列小 模块的过程和方法,是软件工程最重要的思 想之一
- 架构设计将系统分解为一组子系统或模 块,以及子系统或模块之间的接口。
- 详细设计子系统或模块被再次细分为子 模块 • 传统软件工程中的过程、函数 • 面向对象软件工程中的包、类、接口和方法等
最小成本邻域

软件开发成本随模块数量增加变小,但将模块组装起来的集成成本将随模块数量增加变大, 软件总成本为两个成本之和。模块成本和集成成本两个曲线的交汇点M代表了最低软件总成本,应尽量使系统划分的模块数量在M点所在的邻域内,即最小成本邻域
设计模式七大原则
设计模式原则:指导我们如何写出“低耦合、高内聚、可扩展、易维护”的代码。
- SRP 单一职责:一个类只有一个职责。
- ISP 接口隔离:接口应该专精一类功能。
- OCP 开闭:对扩展开放,对修改关闭。SPI
- LSP 里氏替换:子类应该可以替换父类对象,完全可以将其看做一个父类
- DIP 依赖倒转:依赖接口/抽象,而不是实现类。JDBC
- 迪米特法则:一个对象应该尽可能少了解别的对象,减少耦合。
- CRP 组合复用:组合优于继承,Car中用组合的形式引入Engine,避免继承地狱导致功能冗余。不过组合冗余代码较多,难以利用多态,也是需要注意的。
软件实施、测试
测试
测试:是选择适当的测试用例执行被测 程序的过程,其目的在于发现程序错误。有单元测试、集成测试、系统测试、alpha、beta、验收测试。掌握单元测试、集成测试、回 归测试基本概念,能根据实际情况设计集成测试的模块测试 顺序,并分析各种测试的优劣 以及分析模块测试次数。
测试用例:为特定目标开发的测试输入、 执行条件和预期结果的集合
白盒测试
导出测试用例是依据模块的编码,即模块的内部逻辑对测试者是可见的。掌握白盒测试方法,能根据实际项目情况采用基本途径测试、条件测试、循环测试等技术设计合适的测试用例。
黑盒测试
在接口级别进行的测试,不考虑程序内部逻辑。掌握黑盒测试方法,能根据实际项目情况采用等价类划分、边界值分析等技术设计合适的测试用例。
等价类划分


边界值分析



测试用例:
- 等价类划分:员工每年请假次数为[0, 10],因此可以形成3个等价类:<0、1~10、>10
- 边界值分析:基于上述等价类划分结果,采用边界值分析法生成的测试用例共有7个:-1、0、1、5、9、10、11
可验证的验收标准:
系统需界面友好
- 员工无需培训即可使用
- 经理经过2小时培训即可使用
- 部长经过2小时培训即可使用
较高可靠性
- 在使用系统的前三个月内,系统从未发生过崩溃(数据不可恢复)或死机现象
- 在随机的3个工作日内,系统可靠性指标都大于0.95%
独立途径集合:
