主要学习系统开发的基础知识,包括软件开发方法的基本概念、需求管理、开发管理、设计方法、软件重用和逆向工程等相关知识
软件开发方法
1、软件开发生命周期
需求规格说明书
- 系统名称
- 功能描述
- 接口
- 基本数据结构
- 性能
- 开发标准
- 验收原则
概要设计
定义功能模块及功能模块之间的关系
详细设计
研究模块内部
- 算法与数据结构
- 数据分布
- 数据组织
- 模块间信息接口
- 用户界面等设计
测试
- 单元测试
- 集成测试
- 确认测试
- 系统测试
2、软件开发模型
瀑布模型
严格按照软件生命周期各阶段顺序执行
- 有利于人员的组织管理,但明显存在使用缺陷:用户并不能了清晰定义及描述其需求、初始版本的呈现周期较长
原型模型
提前通过可视化的方式呈现需求
原型获取有三种途径
- 利用模拟软件系统的人机界面和人机交互方式
- 真正开发一个原型
- 寻求一个或者几个类似的软件
螺旋模型
在快速原型的基础上扩展的,支持大型软件开发,适用于面向规格说明,面向过程和面向对象的软件开发方法
可分为多个周期开发,每个周期由4个阶段组成
- 目标设定
- 风险分析
- 开发和有效性验证
- 评审
基于四代技术的模型
侧重于支持软件的设计和是现阶段,并支持全过程,
其主要特征:
- 非过程化语言:可通过生成器代替编程语言
- 与数据库密切相关
3、敏捷方法
特点
- 强调“适应性”,非“预设性”
- 强调“面向人的”,非“面向过程的”
核心思想
- 适应性
- 以人为本
- 迭代增量式的开发过程
主要内容
4个核心价值观:
- 沟通
设计者、开发者和客户之间
- 简单
满足当前需求,代码简单化
- 反馈
- 勇气
12条实践原则 - 简单设计
- 测试驱动
- 代码重构
- 结对编程
- 持续集成
- 现场客户
- 发行版本小型化
- 系统隐喻
- 代码集体所有制
- 规则策略
- 规范代码
- 40小时工作机制
4、RUP
9个核心工作流
- 业务建模
- 需求
- 分析与设计
- 实现
- 测试
- 部署
- 配置与管理
- 项目管理
- 环境
4个阶段
- 初始
- 细化
- 构造
- 移交
特点:
用例驱动
-
以体系结构为中心
- 体系结构的设计与代码设计无关,并不依赖于程序语言
- 迭代与增量
- 体系结构层次的设计问题包括
- 系统的总体组织
- 全局控制
- 通信协议
- 同步
- 数据存取
- 给设计元素分配特定功能
- 设计元素的组织
- 物理分布
- 系统的伸缩性
- 性能
-
4+1视图模型
-
逻辑视图
描述系统功能,最终用户关注
-
实现试图
描述系统配置、装配,程序员关注
-
进程试图
描述系统性能、吞吐,集成人员关注
-
部署试图
描述系统安装、托盘结构,系统工程师关注
-
用例视图
描述人机互动的系统行为,分析人员和测试人员关注
-
-
RUP是一个通用的过程模板,包括开发指南、开发过程产物及过程中的角色说明,可用于各类项目,因体系庞大,需要针对具体实例进行适当裁剪
裁剪步骤
- 确定开发过程设计的工作流
- 确定工作流的产出
- 确定4个阶段间的演进
- 确定每个阶段的迭代计划
- 规划工作流内部结构(难点)
5、软件系统工具
衡量因素
- 功能
- 易用性
- 稳健性
- 硬件要求
- 性能
- 服务
- 支持
工具包含
- 需求分析工具
- 设计工具
- 编码与排错工具
- 测试工具
软件工具
- 需求分析工具
基于自然语言或图形描述工具
基于形式化需求定义语言的工具
其他需求分析工具 - 设计工具(设计规范)
概要设计规范
详细设计规范 - 编码与排错工具
- 编码工具
- 编辑程序
- 汇编程序
- 编译程序
- 生成程序
- 排错工具
- 编码工具
- 软件维护工具
- 版本控制工具
- 文档分析工具
- 开发信息库工具
- 逆向工程工具
反编译工具的使用属于逆向工程的范畴
- 再工程工具
目前的工具主要集中在代码重构、程序结构重构、数据结构重构等方面
- 软件管理和软件支持工具
- 项目管理工具
- 配置管理工具
- 软件评价工具
如Mc-Cabe可以对环路复杂度进行度量
需求管理
1、需求管理原则
CMM模型第二级关键过程域增减需求管理的内容,目标是
- 为软件需求建立基线
- 软件计划、产品和活动与软件需求保持一致
2、需求规格说明的版本控制
- 变更内容
- 日期
- 变更人员
- 变更原因
3、需求属性
- 创建时间
- 版本号
- 创建人
- 批准人
- 状态
- 原因和依据
- 涉及子系统
- 涉及产品版本号
- 验收/接受的标准
- 优先级
- 稳定性
4、需求变更
为严格控制软件项目,需要确保
- 评估已提出的变更
- 适当的人选评估和决策变更
- 变更应及时通知所有人
- 需求变更需要遵循一定的程序
需求变更管理的目的是将变更产生的负面影响降到最低
- 问题分析和变更描述
- 变更分析和成本计算
- 变更实现
需求变更应遵循的原则
- 必须遵循变更控制程序
- 变更未经批准不得实施
- 变更应有变更控制委员会进行评估和决策
- 项目干系人有权获悉变更信息
- 变更库中原始文档不得更改或者删除
- 变更实施均应可追溯到已获批的变更请求
变更控制委员会的总则/章程
- 目的
- 授权范围
- 成员构成
- 决策流程
- 操作步骤
5、需求跟踪
需求跟踪链 traceability link
- 客户需求向前追溯到软件需求(需求变更更新至需求规格说明书中)
- 从软件需求回溯相应的客户需求(确认每个需求的源头)
- 从软件需求向前追溯到下一级工工作产品(逐步确保最终产品满足需求)
- 从产品部件回溯到软件需求(验证部件来源)
6、需求变更的代价和风险
变更只能在项目时间、预算、资源等限制允许范围内进行协商
进行影响分析的能力依赖于跟踪能力、数据的质量和完整性
开发管理
1、项目的范围、时间、成本
范围
- 项目章程(初始的范围说明书)
- 项目范围管理计划
- 组织过程资产(过程性成果)
- 批准的变更申请
时间管理
- 活动定义(WBS)
- 活动排序
- 活动资源估算
- 活动历时估算
- 指定进度计划