软件开发模型
瀑布模型 | 容易理解,管理成本低,需求清晰明确无变更情况下交付时间稳定且快 |
喷泉模型 | 以用户需求为动力 |
原型模式 | 用户的需求不明确的小项目 |
演化/迭代模型 | 尽快投入使用,需求不断变更 |
增量模型 | 构建核心产品尽快投入使用 |
螺旋模型 | 大规模的项目,风险分析,每个增量都需要风险评估 |
极限编程 | 设计简单、持续集成、全程配合客户 |
水晶法 | 每一个项目对应每一套策略 |
并列争求法 | 30天为一迭代冲刺。两个人一台电脑 |
V模型 | 质量保证活动,基本需求逐步细化 |
结构化开发方法
外部实体 | |
加工 | |
数据存储 |
面向对象开发方法
部署图 | 展示软件和硬件的物理关系/面向对象系统的物理模型 |
类图 | 一组对象、接口、协作和它们之间的关系 |
通信图 | 收发消息的对象的结构组织 |
构建/组织图 | 组件之间的组织和依赖 |
组合 | 部分——整体 | 菱形实心箭头指向整体 | 整体消失,部分也消失 | |
聚合 | 整体消失,部分依然存在 | |||
依赖 | ||||
实现 | ||||
继承 | ||||
参与者 | ||||
用例 | ||||
提供方 | ||||
需求方 |
<<include>> | 包含关系 | 箭头指向子用例 | 当基本用例执行时,包含的用例一定会执行 | |
<<extend>> | 扩展关系 | 箭头指向父用例 | 当基本用例执行时,扩展的用例可能会执行 | |
Generalize | 泛化关系 | 箭头指向父用例 | 子用例继承父用例的属性和方法 |
构件图/组件图 | ||
状态图 | 描述一个对象内的交互;起点是超状态 | |
序列图 | 表示一个用例和多个对象的行为 对象名 : 类名 | |
活动图 | 描述业务流程 |
Gantt图 | Gantt图不能清晰的描述各个任务之间的依赖关系 |
Pert图 | 不能描述任务的并行情况 |
类图 | 一组对象、接口、协作和它们之间的关系 |
通信图 | 收发消息的对象的结构组织 |
组件图 | 组件之间的组织和依赖 |
部署图 | 面向对象系统的物理模型 |
静态建模 | 类图、对象图、用例图 |
动态建模 | 序列图(顺序图、时序图)、通信图(协作图)、状态图、活动图 |
物理建模 | 构件图(组件图)、部署图 |
交互图 | 序列图(顺序图、时序图)、通信图(协作图) |
面向对象
面向对象分析的活动顺序:
认定对象、组织对象、描述对象的相互作用、确定对象的操作、定义对象的内部信息
面向对象设计的的活动顺序:
识别类及对象、定义属性、定义服务、识别关系、识别包
数据建模 | E-R |
功能建模 | DFD数据流图 |
行为建模 | UML |
内容耦合 | A访问B的内部数据 |
标记耦合 | 结构体 |
耦合程度取决于 | 调用方式、接口的复杂程度、调用接口的参数 |
巧合内聚 | 相同无联系的语句内聚 | 会影响耦合关系 |
通信内聚 | 同一个数据结构 | |
时间内聚 | 同时执行 |
1 | 初始级 | 杂乱无章,软件没有明确步骤,完成全靠个人努力 |
2 | 可重复级 | 建立基本的项目管理和实践来跟踪项目费用、进度和功能性 |
3 | 已定义级 | 组织具有标准软件的过程 |
4 | 已管理级 | 对软件过程和产品都有定量的理解和控制 |
5 | 优化级 | 先进的新思想和新技术促进过程不断改进 |
可靠性 | 成熟性、容错性、易恢复性 |
功能性 | 安全性 |
软件测试
编写驱动模块 | 编写桩程序 | |
自顶向下 | 不需要 | 需要 |
自底向上 | 需要 | 不需要 |