开发模型
瀑布模型
用于结构化模型开发
适用需求明确或者二次开发
原型模型
适用需求不明确
演化模型
增量模型
适用需求不明确
先做一块,再做一块,这样不断的对核心功能的审视,降低风险
螺旋模型
由多个模型组合成
适用需求不明确
引入了风险分析
V模型
注重测试,强调提早测试,测试贯穿模型的始终
喷泉模型
软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性
敏捷开发模型
适合小型项目
基本原则
- 短平快的会议
- 小型版本发布
- 较少的文档
- 合作为重
- 客户直接参与
- 自动化测试
- 适应性计划调整
- 结对编程
- 测试驱动开发
- 持续集成
- 重构
4大价值观:
- 沟通
- 简单
- 反馈
- 勇气
5大原则
- 快速反馈
- 简单性假设
- 逐步修改
- 提倡更改
- 优质工作
12个最佳实践
- 计划游戏
- 小型发布
- 隐喻
- 简单设计
- 测试先行
- 重构
- 结对编程
- 集体代码所有制
- 持续集成
- 每周工作40小时
- 现场客户
- 编码标准
信息系统开发方法
-
结构化法
用户至上
严格区分工作阶段,每阶段有任务与成果
强调系统开发过程的整体性和全局性
系统开发过程工程化,文档资料标准化
自顶向下,逐步分解(求精)
-
原型法
适用于需求不明确的开发
包括抛弃式原型和演化式原型
-
面向对象方法
更好的复用性
关键在于建立一个全面、合理、统一的模型
分析、设计、实现三个阶段,界限不明确
-
面向服务方法
SO方法有三个主要的抽象级别:操作、服务、业务流程
SOAD分为三个层次:基础设计层(底层服务构件)、应用结构层(服务之间的接口和服务级协定)和业务组织层(业务流程建模和服务流程编排)
服务建摸:分为服务发现、服务规约和服务实现三个阶段
需求的分类
业务需求
用户需求
系统需求
结构化设计
概要设计、详细设计
- 自顶向下、逐步求精
- 信息隐蔽
- 模块独立(高内聚、低耦合、复杂度)
内聚与耦合
内聚类型 | 描述 |
---|---|
功能内聚 | 完成一个单一功能,各个部分协同工作,缺一不可 |
顺序内聚 | 处理元素相关,而且必须顺序执行 |
通信内聚 | 所有处理元素集中在一个数据结构的区域上 |
过程内聚 | 处理元素相关,而且必须按特定的次序执行 |
瞬时内聚(时间内聚) | 所包含的任务必须在同一时间间隔内执行 |
逻辑内聚 | 完成逻辑上相关的一组任务 |
偶然内聚(巧合内聚) | 完成一组没有关系或松散关系的任务 |
耦合类型 | 描述 |
---|---|
非直接耦合 | 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的 |
数据耦合 | 一组模块借助参数表传递简单数据 |
标记耦合 | 一组模块通过参数表传递记录信息(数据结构) |
控制耦合 | 模块之间传递的信息中包含用于控制模块内部逻辑的信息 |
外部耦合 | 一组模块都访问同一全局简单变量,而且不是通过参数表传递该全局变量的信息 |
公共耦合 | 多个模块都访问同一个公共数据环境 |
内容耦合 | 一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口 |
软件测试
- 尽早、不断的进行测试
- 程序员避免测试自己设计的程序
- 既要选择有效、合理的数据,也要选择无效、不合理的数据
- 修改后应进行回归测试
- 尚未发现的错误数量与该程序已发现错误数成正比
测试用例设计
黑盒测试
- 等价类划分
- 边界值分析
- 错误推测
- 因果图
白盒测试
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 条件判定覆盖
- 修正的条件判断覆盖
- 条件组合覆盖
- 点覆盖
- 边覆盖
- 路径覆盖
McCabe复杂度
计算有向图G的环路复杂度公式为: V ( G ) = m − n + 2 V(G)=m-n+2 V(G)=m−n+2
说明:其中V(G)是有向图G中的环路个数,m是G中的有向弧数,n是G中的节点数。
系统运行与维护
软件维护是生命周期的一个完整部分。可以将软件维护定义为需要提供软件支持的全部活动,这些活动包括在交付前完成的活动,以及交付后完成的活动。交付前完成的活动包括交付后运行的计划和维护计划等;交付后的活动包括软件修改、培训、帮助资料等
可维护性
- 易分析性
- 易改变性
- 稳定性
- 易测试性
维护类型
- 改正性维护(25%)
- 适应性维护(20%)
- 完善性维护(50%)
- 预防性维护(5%)
软件过程改进
阶段式
成熟度等级 | 过程域 |
---|---|
已管理级 | 需求管理、项目计划、配置管理、项目监督与控制、供应商合同管理、度量和分析、过程和产品质量保证 |
已定义级 | 需求开发、技术解决方案、产品集成、验证、确认、组织级过程焦点、组织级过程定义、组织级培训、集成项目管理、风险管理、集成化的团队、决策分析和解决方案、组织级集成环境 |
定量管理级 | 组织级过程性能、定量项目管理 |
优化级 | 组织级改革与实施、因果分折和解决方案 |
连续式
连续式分组 | 过程域 |
---|---|
过程管理 | 组织级过程焦点、组织级过程定义、组织级培训、组织级过程性能、组织级改革与实施 |
项目管理 | 项目计划、项目监督与控制、供应商合同管理、集成项目管理、风险管理、集成化的团队、定量项目管理 |
工程 | 需求管理、需求开发、技术解决方案、产品集成、验证、确认 |
支持 | 配置管理、度量和分析、过程和产品质量保证、决策分析和解决方案、组织级集成环境、因果分析和解决方案 |