当前位置:文档之家› 清华大学软件工程教材

清华大学软件工程教材

14
案例:IBM 开发过程流程
发布管理过程
计划文档
产品规划过程
产品目标文档
功能测试过程
待测试的代码
体系结构设计阶段
体系结构文档
编码阶段
程序代码 单元测试 文档
功能规格说明阶段
功能说明文档
单元测试阶段
测试后代码
设计规格说明阶段
设计说明文档
代码审查阶段 编码与单元测试子流程
设计子流程 软件开发流程
15
预估可选方案, 明确并解决风险
评审 需求规划和 生命周期规划
仿真,模型,基准测试
规划下一阶段
开发和检验下 一产品
30
螺旋模型
螺旋回线
– 每一个回线表示开发过程的一个阶段 – 例如最中心的第一个回线可能与系统可行性有关,接着第二 个回线与需求定义有关,第三个回线与软件设计有关等
四个步骤
– 确定该阶段目标,完成这些目标的可选方案及其约束条件 – 从风险角度分析方案的开发策略,努力排除各种潜在的风 险,在需求不适当的情况下可能需要建造原型系统 – 软件开发和验证工作 – 评价该阶段的结果,并规划下一个开发阶段
– 基于组件的软件体系结构 – 基于组件的开发过程
抽象描述 抽象描述
系统 系统 体系结构 体系结构
系统 系统 规格说明 规格说明
接口说明 接口说明
组件说明 组件说明
数据结构 数据结构 说明 说明
算法说明 算法说明
设计产品
12
软件确认
验证和确认(V&V)需要指出软件是否符合规格说明 以及是否满足客户的需求.
– 验证和确认包括检查和评审过程以及系统测试 – 系统测试是使用由规格说明产生的测试用例执行软件的过程
8
过程定义模板
项目
1. 目标 2. 所有者 3. 输入 4. 输出 5. 入口准则 6. 出口准则 7. 任务 8. 依赖/约束 9. 确认
目的
该过程的目的是什么? 谁是负责该过程?谁负责文档,交流,维护和持续改进此过程? 该过程的输入是什么?这些输入来自何处?这些输入有什么约束 和依赖? 该过程的输出是什么?这些输出去向如何?这些输出有什么约束 和依赖? 该过程的启动要求是什么? 该过程的结束要求是什么? 实现该过程目标需要什么任务? 该过程任务或步骤中有什么依赖或约束? 该过程的度量标准是什么?如何知道任务是否达到预期?如何知 道目标是否满足?
24
瀑布模型
适用
– 在开发的早期阶段软件需求被完整确定
挑战
– 实际的项目开发很少是线性的过程,客户很难明确地描述软 件需求
缺点
– 各个阶段的划分完全固定,阶段之间产生大量的文档,极大 地增加了工作量 – 开发过程中很难响应客户的变更要求 – 早期的错误可能要等到开发后期的测试阶段才能发现,进而 带来严重的后果
软件过程
清华大学软件学院
内容提纲
软件过程
– 基本概念 – 基本活动:需求工程,软件开发,测试和演化 You are here! 你在这儿!
软件过程模型
– – – – – – 瀑布模型 快速原型模型 增量模型 螺旋模型 形式化方法模型 基于组件的开发模型
案例:微软公司软件开发过程模型
2
建造一个房屋的过程
软件过程模型
– 软件过程模型是对实际过程的抽象描述 – 包括软件过程的活动,软件产品以及参与人员的不同角色
常见的软件过程模型
– – – – – – 瀑布模型 快速原型模型 增量模型 螺旋模型 形式化方法模型 基于组件的开发模型
23
瀑布模型
需求定义与分析 需求定义与分析 软件设计 软件设计 软件实现 软件实现 软件测试 软件测试 软件运行与维护 软件运行与维护 开发阶段严格按照线性方式进行 每一个阶段具有相关的里程碑和 交付产品 每一个阶段需要确认和验证 强调文档的作用
13
软件演化
软件的内在本质是灵活的和可变的
– 随着业务需求的变化,软件必须进化和变更 – 尽管在开发过程和演化(维护)过程之间存在划分,但是现 实中全新的系统越来越少
认识软件演化过程
– 好的软件需要维护 – 维护软件的成本是很高的,应该在开发阶段考虑维护的问题 – 文档是很重要的,但在实际开发中经常存在文档过时或缺少 文档的情况
输出文档
– 代码审查结果 – 编码与单元测试过程检查单
20
讨论:课程实验项目的软件过程
项目开始
项目规划
需求阶段
软件开发
开发阶段 稳定阶段 项目结束
软件测试 项目收尾 软件交付 软件维护
需求分析 软件原型
迭代开发1 迭代开发2 集成测试
软件需求 规格说明
软件 设计说明
软件 代码
软件测试文档 可交付的软件
用户需求
过程定义 活动定义 活动关系 过程制品
过程资源 参与人员 活动工具
过程执行
用户反馈 过程改进 过程结果
软件产品
7
定义软件过程的步骤
输入 入口 准则 任务 确认 流程 出口 准则 输出
定义
– – – – 入口准则:何时开始该步骤? 可重复的任务:应该做什么? 确认:如何知道做得怎样? 出口准则:已经完成了吗?
34
基于组件的开发模型
基于组件的开发技术是使用可重用的组件或商业组件 建立复杂的软件系统.
需求定义 需求定义 组件分析 组件分析 组件选取 需求修改 需求修改 面向复用的 面向复用的 系统设计 系统设计
开发和集成 开发和集成 组件更新
系统验证 系统验证
组件库 组件库
35
基于组件的开发模型
组件开发技术的两个重要因素
9
软件过程的基本活动
软件过程的四个基本活动
– 规格说明(Specification) 定义软件功能以及对其使用的限制 – 软件开发(Development) 设计和实现满足规格说明的软件 – 软件确认(Validation) 验证软件以保证能够满足客户的要求 – 软件演化(Evolution) 改进软件以适应不断变化的需求
相同的生命周期
不同的过程
3
任务思维模式
用户需求
过程 产品
问题
– 假设:软件需求可以在开发初期完全确定下来 – 与用户的交互只是发生在确定需求之时和发布产品之后 – 现实情况很少符合上述假设
4
过程思维模式
用户需求
过程 产品反馈Fra bibliotek好处– 通过提高可见性来降低开发风险 – 允许在项目进展过程中基于用户的反馈进行项目变更
设计规格说明的批准者
– 开发负责人
17
案例:设计规格说明阶段
流程
– – – – – 设计负责人决定所建设计规格说明书的数量和范围 设计规格说明负责人参考模板创建文档 将设计规格说明书发布在配置库中 评审文档 开发负责人批准所有的设计规格说明书
18
案例:编码与单元测试子流程
入口准则
– 已经获得功能规格说明和设计规格说明
适用
– 小型或中等规模的交互式系统 – 大型系统的某些部分,例如用户界面 – 生命周期较短的系统
27
增量模型
定义 定义 框架需求 框架需求 增量 1 (核心产品) 设计 设计 体系结构 体系结构
分析 分析 分析 分析
设计 设计 设计 设计
编码 编码 编码 编码
测试 测试 测试 测试
交付 交付 交付 交付
案例:设计规格说明阶段
入口准则
– 由计划负责人和开发负责人决定是否在编码之前需要更详细 的设计规格说明
出口准则
– 设计规格说明书通过批准
输入
– 与该模块相关的功能规格说明
输出
– – – – 经批准的设计规格说明书 与所批准的设计规格说明书相关的配置项 评审文档的质量记录 批准文档的质量记录
迭代
项目里程碑
21
内容提纲
软件过程
– 基本概念 – 基本活动:需求工程,软件开发,测试和演化
软件过程模型
– – – – – – 瀑布模型 快速原型模型 增量模型 螺旋模型 形式化方法模型 基于组件的开发模型 You are here! 你在这儿!
案例:微软公司软件开发过程模型
22
软件过程模型
出口准则
– 体系结构文档 – 代码已编写并准备进行构建
输入
– 软件开发文档 – 软件设计文档
输出
– 代码 – 单元测试检查单
19
案例:编码与单元测试子流程
代码审查者
– 由代码审查过程指导手册中指定人员
编码与单元测试过程
– – – – 基于编码指南编写程序代码 对所编写代码进行单元测试 执行代码审查 将代码登入配置管理系统
16
案例:设计规格说明阶段
设计规格说明的评审者
– 固定评审人
计划负责人,开发负责人,功能测试负责人 相关组件的开发负责人(由计划负责人决定) 可用性测试代表(如果在功能规格说明或用户接口文档中缺少附 加的外部接口细节)
– 可选评审人
开发团队人员 系统测试和性能测试人员,文档编写人员,可用性测试人员
5
软件过程的概念
软件过程是软件工程人员为了获得软件产品而在软件 工具的支持下实施的一系列软件工程活动. 软件过程应该明确定义
– 团队人员的工作和职责 – 所执行的活动及其顺序关系 – 活动的内容和步骤
软件过程的目标
– 标准化,预见性,生产率,高质量,计划进度和预算的能力
6
软件过程的运行机制
集成和 集成和 系统测试 系统测试
33
形式化方法模型
适用
– 特别适合于那些对安全性,可靠性和保密性要求极高的软件 系统,这些系统需要在投入运行前进行验证
优点
– 由于数学方法具有严密性和准确性,形式化方法开发过程所 交付的软件系统具有较少的缺陷和较高的安全性
相关主题