软件工程讲义_第二章
合集下载
软件工程导论第2章

团队组建
01
根据项目需求和成员技能,组建高效、协作的团队。
角色分配
02
明确团队成员的角色和职责,确保每个成员都能充分发挥自己
的优势。
培训与发展
03
提供必要的培训和支持,促进团队成员的技能提升和职业发展。
沟通技巧及冲突解决策略
01
沟通技巧
建立有效的沟通机制,包括定期 会议、报告和反馈,确保信息畅 通。
型和混合模型等。
原型模型是一种通过构建原型 来验证需求和设计的软件开发 过程模型,适用于需求不明确
或需要用户反馈的项目。
增量模型是一种逐步增加软件 功能的软件开发过程模型,每 个增量都是一个可运行的软件 产品,适用于需求稳定且可以 逐步交付的项目。
混合模型是将多种软件开发过 程模型结合起来使用的软件开 发过程模型,根据项目特点和 需求选择最合适的开发过程模 型。
03 需求分析与管理
需求获取与整理
确定需求来源
与客户、利益相关者、业务领域专家等进行 沟通,收集原始需求。
需求分析
对分类后的需求进行深入分析,明确每项需 求的具体含义、实现方式和优先级。
需求分类
将收集到的需求按照功能、性能、安全、易 用性等方面进行分类。
需求整理
将分析后的需求进行整理,去除重复和冲突 的需求,形成清晰、完整的需求列表。
缺陷跟踪与修复流程
缺陷报告
测试人员发现缺陷后,应详细记录缺 陷信息并提交缺陷报告。
缺陷确认
开发团队对提交的缺陷进行确认,评 估其严重性和影响范围。
缺陷修复
开发团队根据缺陷报告进行修复,并 在修复后提交给测试团队进行验证。
缺陷关闭
测试团队对修复后的缺陷进行验证, 确认无误后关闭缺陷。
软件工程第2章

增量模型示意图
分析
设计
编码
测试
分析
设计
编码
测试
分析
设计
编码
测试
分析
设计
编码
测试
增量模型的优点与困难
优点:
能在较短时间内向用户提交可完成一些有用的工作产品 逐步增加产品功能可以使用户有较宽裕的时间学习和适应产品
困难:
在把每个新的增量构件集成到现有软件产品中时,必须不破坏原有的产品 必须把系统结构设计得便于按这种方式扩充 ; 向新现有产品中加入新构件的过程必须简单、方便;
管理需求
• 描述了如何提取、组织系统的功能性需求和约 束条件并把它们文档化;使用用例和脚本是捕 获功能性需求。
• 功能需求
– 用例(Use Case)分析技术
• 非功能需求
– 性能,可靠性,安全性
使用基于组件的架构
• 组件:功能清晰的模块或子系统 • 软件架构(Software Architecture)
软件生命周期的基本任务
软件定义 软 件 生 命 周 软件开发 期
问题定义 可行性研究 需求分析 系统设计
系统实现
软件运行和维护
系统分析:确定总目标、确定可行性、实际工程应 采取的策略及必须实行的功能、估计资源和成本、 制定工程计划——由系统分析员完成
概要设计 详细设计 编码和单元测试 综合测试
发现错误及时改正、环境改变时应修改适应、有新需求时及 时改进(每一次维护活动都是一次压缩和简化了的定义和开 发过程)。
测试
维护
瀑布模型 - 加入迭代过程
收集需求 分析 设计
工作过程中不可能不犯错,如在设
计阶段可能发现规格说明文档中的错 误,实际的瀑布模型是带反馈环的, 在后面阶段发现前面阶段的错误时, 需要沿着途中左侧的反馈线返回前面 阶段,修正前面阶段的产品错误后再 回来完成后面阶段的任务。
软件工程第二章PPT第2章

模块详细设计,包括模块详细功能、算法、数据结构和接口 信息的设计,拟定模块测试方案;
编制模块的详细规格说明
9
编码
选择一种程序设计语言; 写出正确的容易理解、容易维护的源程序模块; 产生可执行的目标程序。
10
测试-----保证软件质量的重要手段
任务
保证输出与要求的一致; 发现错误。
快速适应变化的需求),导致返工甚至推倒重来 无法预测新引入模块的影响 最终的形式难以预料 不适合需求模糊的系统
19
2.2.2 快速原型模型
快速原型模型的第一步是快速建立一个能反映用户 主要需求的原型系统,让用户在计算机上试用它,通 过实践来了解目标系统的概貌。 用户试用原型系统之后会提出许多修改意见,开发 人员按照用户的意见快速地修改原型系统,然后再次 请用户试用……。 一旦用户认为这个原型系统确实能做他们所需要的 工作,开发人员便可据此书写规格说明文档,根据这 份文档开发出可以满足用户的真实需求的软件
划分阶段的意义:简化每一步的工作内容,使因软件规 模增大而大大增加的软件复杂性变得 易于控制和管理。
2
问题定义 (要解决的问题是什么)
软件定义 可行性研究
(系统分析)
(该问题是否有行得通的解决办法)
需求分析 (目标系统必须做什么)
概要设计 (怎样实现目标系统)
软件生 命周期
系统设计 软件开发
详细设计 (应该怎样具体地实现这个系统)
形式化开发模型
转换模型(transformational model) 净室模型(cleanroommodel)
1
2.1 软件生存周期
定义
一个软件从开始计划起,到废弃不用止,称为软 件的生存周期。
包括计划、开发与运行三个时期。 计划时期:问题定义、可行性研究 开发时期:需求分析、系统设计、编码和测试 运行时期:系统维护阶段
编制模块的详细规格说明
9
编码
选择一种程序设计语言; 写出正确的容易理解、容易维护的源程序模块; 产生可执行的目标程序。
10
测试-----保证软件质量的重要手段
任务
保证输出与要求的一致; 发现错误。
快速适应变化的需求),导致返工甚至推倒重来 无法预测新引入模块的影响 最终的形式难以预料 不适合需求模糊的系统
19
2.2.2 快速原型模型
快速原型模型的第一步是快速建立一个能反映用户 主要需求的原型系统,让用户在计算机上试用它,通 过实践来了解目标系统的概貌。 用户试用原型系统之后会提出许多修改意见,开发 人员按照用户的意见快速地修改原型系统,然后再次 请用户试用……。 一旦用户认为这个原型系统确实能做他们所需要的 工作,开发人员便可据此书写规格说明文档,根据这 份文档开发出可以满足用户的真实需求的软件
划分阶段的意义:简化每一步的工作内容,使因软件规 模增大而大大增加的软件复杂性变得 易于控制和管理。
2
问题定义 (要解决的问题是什么)
软件定义 可行性研究
(系统分析)
(该问题是否有行得通的解决办法)
需求分析 (目标系统必须做什么)
概要设计 (怎样实现目标系统)
软件生 命周期
系统设计 软件开发
详细设计 (应该怎样具体地实现这个系统)
形式化开发模型
转换模型(transformational model) 净室模型(cleanroommodel)
1
2.1 软件生存周期
定义
一个软件从开始计划起,到废弃不用止,称为软 件的生存周期。
包括计划、开发与运行三个时期。 计划时期:问题定义、可行性研究 开发时期:需求分析、系统设计、编码和测试 运行时期:系统维护阶段
软件工程课件第2章

过程,也就是在较高层次上以较抽象的方式进 行的系统分析和设计的过程。
精选ppt
6
可行性研究的内容: 首先进一步分析和澄清问题定义,导出系统的
逻辑模型; 然后从系统逻辑模型出发,探索若干种可供选
择的主要解法(即系统实现方案); 对每种解法都研究它的可行性,至少应该从三
方面研究每种解法的可行性 。
精选ppt
3
关于系统规模和目标的报告书
1.项目名称:教材销售系统 2.问题:人工发售教材手续繁杂,且易出错。 3.项目目标:建立一个高效率、无差错的微机教材销售
系统。 4.项目规模:利用现有微型计算机,软件开发费用不超
过5000元。 5.初步想法:建议在系统中增加对缺书的统计与采购功
能。 6.可行性研究:建议进行大约10天的可行性研究,研究
该装配厂使用一台小型计算机,处理更新库存清单主文 件和产生定货报告。零件库存量的每一次变化称为一个事务, 由放在仓库中CRT终端输入到计算机中;系统中的库存清单 程序对事务进行处理,更新存储在磁盘上的库存清单主文件, 并且把必要的订货信息写在磁带上。最后,每天由报告生成 程序读一次磁带,并且打印出订货报告。
包括开发和运行该系统所需要的各种资源 如硬件、软件、人员和组织机构等 3. 费用预算:分阶段的人员费用、机时费用及其他费用 4. 进度安排:各阶段起始时间、完成文档及验证方式 5. 要交付的产品清单
精选ppt
16
8. 书写文档提交审查 把可行性研究各个步骤的工作结果写成清晰的
文档,请用户、客户组织的负责人及评审组审 查,以决定是否继续这项工程及是否接受分析 员推荐的方案。
库存清单 主文件
报告生成程序
定货报告
第三层:合成后的系统流程图
精选ppt
6
可行性研究的内容: 首先进一步分析和澄清问题定义,导出系统的
逻辑模型; 然后从系统逻辑模型出发,探索若干种可供选
择的主要解法(即系统实现方案); 对每种解法都研究它的可行性,至少应该从三
方面研究每种解法的可行性 。
精选ppt
3
关于系统规模和目标的报告书
1.项目名称:教材销售系统 2.问题:人工发售教材手续繁杂,且易出错。 3.项目目标:建立一个高效率、无差错的微机教材销售
系统。 4.项目规模:利用现有微型计算机,软件开发费用不超
过5000元。 5.初步想法:建议在系统中增加对缺书的统计与采购功
能。 6.可行性研究:建议进行大约10天的可行性研究,研究
该装配厂使用一台小型计算机,处理更新库存清单主文 件和产生定货报告。零件库存量的每一次变化称为一个事务, 由放在仓库中CRT终端输入到计算机中;系统中的库存清单 程序对事务进行处理,更新存储在磁盘上的库存清单主文件, 并且把必要的订货信息写在磁带上。最后,每天由报告生成 程序读一次磁带,并且打印出订货报告。
包括开发和运行该系统所需要的各种资源 如硬件、软件、人员和组织机构等 3. 费用预算:分阶段的人员费用、机时费用及其他费用 4. 进度安排:各阶段起始时间、完成文档及验证方式 5. 要交付的产品清单
精选ppt
16
8. 书写文档提交审查 把可行性研究各个步骤的工作结果写成清晰的
文档,请用户、客户组织的负责人及评审组审 查,以决定是否继续这项工程及是否接受分析 员推荐的方案。
库存清单 主文件
报告生成程序
定货报告
第三层:合成后的系统流程图
软件工程第二章

2.3.1、 2.3.1、成本估算技术
为了得到可靠的成本及工作量的估算,可采用如下 方法: (1) 将软件价格计算延迟到工程设计的最后,可得 到精确计算的价格。 (2) 基于已完成的类似项目进行估算。 (3) 使用相对简单的分解技术,生成项目成本和工 作量的估算。 (4) 使用一个或多个经验模型,进行软件成本和工 作量的估算。
2.2、可行性研究的方法步骤 2.2、可行性研究的方法步骤
2、研究目前正在使用的系统: 通过对现有系统的文档资料的阅读、分析 和研究,再如实地考虑该系统,总结出现 有系统的优点和不足,从而得出新系统的 雏形
2.2、可行性研究的方法步骤 2.2、可行性研究的方法步骤
3、导出新系统的高层逻辑模型: 在逐步明确目标系统应该具有的基本功能、 处理流程和所受的约束的基础上,可利用 建立逻辑模型的工具,定义新系统的逻辑 模型
1、货币的时间价值 通常以利率的形式表示货币的时间价值。假设年利 率为i ,如果现在存入P元,则n年后可以得到的钱数 为:
反之可以得到:
2.3.2、 2.3.2、几种度量效益的方法
2、投资回报期 所谓投资回收期就是使累计的经济效益等于最初投 资所需要的时间,我们通常其衡量一项开发工程的 价值。 显然,投资回收期越短获得利润就越快, 这项工程也就越值得投资。
3、运行可行性 4、法律可行性 5、开发方案可行性----选择最优 可行性研究最根本的任务是对以后的行动 路线提出建议
2.2、可行性研究的方法步骤 2.2、可行性研究的方法步骤
1、确定系统规模和目标: 通过对关键人员进行调查访问,仔细阅读 和分析有关的材料,确认目标系统的规模 和目标,并清晰地描述对目标系统的一切 限制和约束
2.1、可行性研究的任务 2.1、可行性研究的任务
软件工程第2章

3.领域需求
与软件系统的具体应用范围有关,具有特殊性 “简历信息自动获取和查询系统”,该系统的领域需求是,简历文 本内容应符合一般简历的需求,如应该包括姓名、年龄、专业等 必要信息 4.其他需求 法律需求、道德需求等 “简历信息自动获取和查询系统”,XML格式模板,互联网文件格式
11
第二章 软件需求工程
32
第二章 软件需求工程
STD的元素符号
–状态分为初态、终态、中间状态和复合态 –中间状态包括名字、状态变量和活动。状态变 量描述状态属性,活动是要执行的事件或动作。
33
第二章 软件需求工程
2 状态转换 有一个状态转换到另一个状态的关联就是状态转换。 状态转换是由事件或条件触发的。
3 事件 某一时刻发生的事情,是触发状态转换的条件或一系列动 作。 在中间状态的符号中,活动就是事件,其语法定义为 事件名(参数列表[条件列表])/动作表达式
36
第二章 软件需求工程
DD的定义形式
– 词条描述。详细说明了数据和控制信息在系统内 的传播途径。
37
第二章 软件需求工程
DD的定义形式
– 定义式,良好的数据结构
38
第二章 软件需求工程
DD的定义形式
– Warnier图,用树形结构表示数据的层次结构,利 用顺序、选择和重复三种结构对应数据的层次分 解,并指出可以从数据层次结构导出程序结构。
31
第二章 软件需求工程
2.4.4 面向状态转换的行为建模
行为建模是所有需求分析方法的操作性原则,系统状态的改 变是用状态转换图描述。 状态转换图(Status Transition Diagram ,STD)通过描述系统状
与软件系统的具体应用范围有关,具有特殊性 “简历信息自动获取和查询系统”,该系统的领域需求是,简历文 本内容应符合一般简历的需求,如应该包括姓名、年龄、专业等 必要信息 4.其他需求 法律需求、道德需求等 “简历信息自动获取和查询系统”,XML格式模板,互联网文件格式
11
第二章 软件需求工程
32
第二章 软件需求工程
STD的元素符号
–状态分为初态、终态、中间状态和复合态 –中间状态包括名字、状态变量和活动。状态变 量描述状态属性,活动是要执行的事件或动作。
33
第二章 软件需求工程
2 状态转换 有一个状态转换到另一个状态的关联就是状态转换。 状态转换是由事件或条件触发的。
3 事件 某一时刻发生的事情,是触发状态转换的条件或一系列动 作。 在中间状态的符号中,活动就是事件,其语法定义为 事件名(参数列表[条件列表])/动作表达式
36
第二章 软件需求工程
DD的定义形式
– 词条描述。详细说明了数据和控制信息在系统内 的传播途径。
37
第二章 软件需求工程
DD的定义形式
– 定义式,良好的数据结构
38
第二章 软件需求工程
DD的定义形式
– Warnier图,用树形结构表示数据的层次结构,利 用顺序、选择和重复三种结构对应数据的层次分 解,并指出可以从数据层次结构导出程序结构。
31
第二章 软件需求工程
2.4.4 面向状态转换的行为建模
行为建模是所有需求分析方法的操作性原则,系统状态的改 变是用状态转换图描述。 状态转换图(Status Transition Diagram ,STD)通过描述系统状
软件工程-第2章

下面给出第2.4节的例子中几个数据元素的数据字典 卡片,以具体说明数据字典卡片中上述几项内容的含义。
第2章可行性研究 2.5.4 数据字典的实现
2.5 数据字典
34
第2章可行性研究 2.5.4 数据字典的实现
主要内容
35
2.1 可行性研究的任务 2.2 可行性研究过程 2.3 系统流程图 2.4 数据流图 2.5 数据字典 2.6 成本/效益分析
正方形表示数据的源点或终点 圆角矩形代表变换数据的处理 开口矩形代表数据存储
箭头表示数据流,即特定数据的流 动方向
第2章可行性研究
2.4 数据流图
2.4 数据流图
15
2.4.2 例子
以简单例子说明怎样画数据流图
假设一家工厂的采购部每天需要一张订货报表,报表按零件编 号排序,表中列出所有需要再次订货的零件。对于每个需要再 次订货的零件应该列出下述数据:零件编号,零件名称,订货 数量,目前价格,主要供应者,次要供应者。零件入库或出库 称为事务,通过放在仓库中的CRT终端把事务报告给订货系统。 当某种零件的库存数量少于库存量临界值时就应该再次订货。
如右图所示。
第2章可行性研究
2.3.2 例子
主要内容
13
2.1 可行性研究的任务 2.2 可行性研究过程 2.3 系统流程图 2.4 数据流图 2.5 数据字典 2.6 成本/效益分析
第2章可行性研究
2.4 数据流图
2.4 数据流图
14
概念:
数据流图(DFD)是一种图形 化技术,它描绘信息流和 数据从输入移动到输出的 过程中所经受的变换。
第2章可行性研究 2.5.2 定义数据的方法
2.5 数据字典
31
2.5.3 数据字典的用途
第2章可行性研究 2.5.4 数据字典的实现
2.5 数据字典
34
第2章可行性研究 2.5.4 数据字典的实现
主要内容
35
2.1 可行性研究的任务 2.2 可行性研究过程 2.3 系统流程图 2.4 数据流图 2.5 数据字典 2.6 成本/效益分析
正方形表示数据的源点或终点 圆角矩形代表变换数据的处理 开口矩形代表数据存储
箭头表示数据流,即特定数据的流 动方向
第2章可行性研究
2.4 数据流图
2.4 数据流图
15
2.4.2 例子
以简单例子说明怎样画数据流图
假设一家工厂的采购部每天需要一张订货报表,报表按零件编 号排序,表中列出所有需要再次订货的零件。对于每个需要再 次订货的零件应该列出下述数据:零件编号,零件名称,订货 数量,目前价格,主要供应者,次要供应者。零件入库或出库 称为事务,通过放在仓库中的CRT终端把事务报告给订货系统。 当某种零件的库存数量少于库存量临界值时就应该再次订货。
如右图所示。
第2章可行性研究
2.3.2 例子
主要内容
13
2.1 可行性研究的任务 2.2 可行性研究过程 2.3 系统流程图 2.4 数据流图 2.5 数据字典 2.6 成本/效益分析
第2章可行性研究
2.4 数据流图
2.4 数据流图
14
概念:
数据流图(DFD)是一种图形 化技术,它描绘信息流和 数据从输入移动到输出的 过程中所经受的变换。
第2章可行性研究 2.5.2 定义数据的方法
2.5 数据字典
31
2.5.3 数据字典的用途
软件工程导论第2章

2可行性研究的步骤
(1)细化和修改“系统目标与范围的说明”,得 出新系统的逻辑模型。 (2)导出新系统的解决方案。 目的是根据新系统逻辑模型,设想若干个可能 的解决方案,以便比较和选择。便每种方案都要考 虑在技术上是否可行,并分析经济与社会的可行性。 (3)提出推荐的方案。 分析员必须清楚地表明这个方案的开发价值和 和推荐这个方案的理由。 推荐的方案应附有“系统流程图”和简单的 “数据流图”,以及比较详细的成本—效益分析。
改变自动化边界,把处理1.1,1.2和1.3放在同 一个边界内,这个系统将联机地接收事务、更新库 存清单和处理定货及输出定货信息;然而处理2将 以批量方式产生定货报表。
六. 数据字典
数据字典是关于数据的信息的集合,也就是对数据流 图中包含的所有元素的定义的集合。 数据字典的作用: 就是对软件中的每个数据规定一个定义条目,以保持数 据在系统中的一致性; 在软件分析和设计的过程中给人提供关于数据的描述信 息。 数据流图和数据字典共同构成系统的逻辑模型,没有 数据字典数据流图就不严格,然而没有数据流图数据字典 也难于发挥作用。只有数据流图和对数据流图中每个元素 的精确定义放在一起,才能共同构成系统的规格说明。
七. 成本/效益分析
通过估计新系统所需的成本和可能产生的效益, 从经济上衡量这个项目的开发价值,从而帮助客户 组织的负责人正确地作出是否投资于这个项目的决 定。
1. 成本估计
系统成本包括开发成本和运行维护成本。 (1)开发成本: 主要为人力消耗。通常先估计项目开发所需要 的人力,再乘以平均工资则得到开发费用。 (2)运行维护成本: 包括使用中的物质消耗,占用的操作和维护人 员数量,以及围绕这一项目的人员训练等费用。 在计划时期,对成本的计算只能是估计值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程是一种层次化的技术。任何工程方法必须构 建在质量承诺的基础上。 软件工程的基础是过程层。软件过程将各个技术层次 结合在一起,使得合理、及时地开发计算机软件成为 可能。 软件工程方法为构建软件提供技术上的解决方法。 软件工程工具为过程和方法提供自动化或半自动化的 支持。
软件过程
软件过程是工作产品构建时所执行的一系 列活动、动作和任务的集合。 活动主要实现宽泛的目标,与应用领域、 项目大小、结果复杂性或者实施软件工程 的重要程度没有直接关系。 动作包含了主要工作产品生产过程中的一 系列任务。 任务关注小而明确的目标,能够产生实际 产品。
增量模型
增量模型以迭代的方式运用瀑布模型。随 着时间的推移,增量模型在每个阶段运用 线性序列。每个线性序列生产出一个软件 的可交付增量。
增量模型
课本图2-5 增量模型
增量模型的使用方法
软件被作为一系列的增量来进行开发,每 一个增量都提交一个可以操作的产品,可 供用户评估。 第一个增量往往是核心产品:满足了基本 的需求,但是缺少附加的特性。 客户使用上一个增量的提交物并进行自己 评价,制定下一个增量计划,说明需要增 加的特性和功能。 重复上述过程,直到最终产品产生为止。
增量模型应用举例
应用举例:开发一个类似于Word的字处 理软件。 – 增量1:提供基本的文件管理、编辑和 文档生成功能。 – 增量2:提供高级的文档编辑功能。 – 增量3:实现拼写和语法检查功能。 – 增量4:完成高级的页面排版功能。
增量模型的优点
提高对用户需求的响应:用户看到可操作 的早期版本后会提出一些建议和需求,可 以在后续增量中调整。 人员分配灵活:如果找不到足够的开发人 员,可采用增量模型,早期的增量由少量 人员实现,如果客户反响较好,则在下一 个增量中投入更多的人力。 可规避技术风险:不确定的功能放在后面 开发。
过程模型
所有的过程模型都可用前述的过程框架概 括。过程模型的适用性是成功的关键,不 同的模型在一些方面有很大区别。 惯用过程模型:强调对过程活动和任务的 详细定义、识别和应用。 敏捷过程模型:强调项目的灵活性,并在 一些基本原则的指导下,采用非正式的方 式执行软件过程。
软件工程实践
实践的精髓
使用方法二:把原型系统作为需求分析的工具,明 确需求后,原型系统被抛弃。
原型开发应用举例
应用举例:开发一个教务管理系统。
第一次迭代:完成基本的学籍管理、选课和成绩管理 功能。(6周) 客户反馈:基本满意,但是对大数据量运行速度慢效 率,不需要学生自己维护学籍的功能等。 第二次迭代:修改细节,提高成绩统计和报表执行效 率(2周)。 客户反馈:需要严格的权限控制,报表打印格式不符 合要求。 第三次迭代:完善打印和权限控制功能。(2周) 客户反馈:可以进行正式应用验证。
运用瀑布模型遇到的问题
实际的项目很少遵守瀑布模型提出的 顺序。 客户通常难以清楚地描述所有的需求。 客户必须要有耐心,只有在项目接近 尾声的时候,他们才能得到可执行的 程序。
瀑布模型的适用场合
需求相当稳定,客户需求被全面的了解风 险管理。 开发团队对于这一应用领域非常熟悉。 外部环境的不可控因素很少。 小型清晰的项目或长周期的项目。
软件过程
软件过程可定义为一个为建造高质量软件 所需要完成的活动、动作和任务的框架。 软件过程定义了软件开发中采用的方法, 但软件工程还包含该过程中应用的技术 (技术方法和自动化工具)。 软件工程是由有创造力、用知识的人完成 的,他们根据产品构建的需要和市场需求, 选取成熟的软件过程。
通用过程模型
原型开发的优点
快速开发出可以演示的系统,方便了客户 沟通。 采用迭代技术能够使开发者逐步弄清客户 的需求。
原型开发存在的问题
软件工程实践
软件过程
软件同其他资产一样,是知识的具体体现,而 知识最初都是以分散的、不明确的、隐蔽的且不 完整的形式广泛存在的,因此,软件开发是一个 社会学习的过程。软件过程是一个对话,在对话 中,软件所必需的知识被收集在一起并在软件中 实现。过程提供了用户与设计人员之间、用户与 不断演化的工具之间以及设计人员与不断演化的 工具(技术)之间的交互途径。软件开发是一个 迭代的过程,在这个过程中,演化的工具本身就 作为沟通的媒介,每新一轮对话都可以从参与的 人员中获得更有用的知识。[BAE98]
原型开发模型
很多时候,客户提出了软件的一些基本功 能,但是没有详细定义输入、处理和输出 需求。另一种情况下,开发人员可能对算 法的效率、操作系统的兼容性和人机交互 的形式等情况不确定。在这些情况下,原 型开发范型是较好的解决方法。
原型开发模型
图2-6 原型开发模型
原型模型的使用方法
使用方法一:
瀑布模型
瀑布模型(the waterfall model),又被 称为经典生命周期,它提出了一个系统的、 顺序的软件开发方法,从用户需求规格说 明开始,通过策划、建模、构建和部署的 过程,最终提供一个完整的软件并提供持 续的技术支持。
瀑布模型
沟通
项目启动 需求获取
策划
项目估算 进度计划 项目跟踪
1.理解问题(沟通和分析) 2.计划解决方案(建模和软件设计) 3.实施计划(代码生成) 4.检查结果的正确性(测试和质量保证)
7个关注软件工程整体实践的核心原则 第1原则:存在价值 对用户是否有用 ?? 第2原则:保持简洁简洁不是简化不是快速和粗糙 ?? 第3原则:维护视图清晰的视图是软件项目成功的基础 ?? 第4原则:关注使用者让别人明白你在做什么 ?? 第5原则:面向未来设计不要限于一隅但不要过分 ?? 第6原则:计划复用复用省时省力但也有代价 ?? 第7原则:认真思考动手之前要认真思考 ??
过程模式
软件过程可以定义为一系列模式的组合, 这些模式定义了一系列的软件开发中需要 的活动、动作、工作任务、工作产品及其 相关的行为[AMB98] 通俗地讲,过程模式提供了一个模板—— 一种描述软件过程中重要特征的一致性方 法。通过模式组合,软件团队可以定义能 最好满足项目需求的开发过程。
过程模式模板[AMB98]
模式名称:应能清楚地表述该模式在软件过程中的功能。 目的:简洁地描述模式的目的。 类型:定义模式类型。 启动条件:描述模式应用的前提条件。 问题:描述模式将要解决的问题。 解决办法:描述模式的实现。 结束条件:描述模式成功执行之后的结果。 相关模式:以层次或其他图的方式列举与该模式相关的 其他模式。 已知应用实例:介绍该模式的具体实例。
过程框架
过程框架定义了若干个小的框架活动, 为完整的软件开发过程建立了基础。 这些框架活动可广泛应用于所有软件 开发项目。
通用框架活动
沟通:包含了与客户(和其他共利益者)之间大 量的交流和协作,还包括需求获取以及其他相关 活动。 策划:指为后续的软件工程工作制定计划。它 描述了需要执行的技术任务、可能的风险、资源 需求、工作产品和工作进度计划。 建模:它包括创建模型和设计两方面。创建模 型有助于客户和开发人员更好地理解软件需求; 设计可以实现需求。 构建:它包括编码(手写或自动生成)和测试。 部署:软件(全部或者完成的部分)交付到用户, 用户对其进行评测并给出反馈意见。
通用框架活动
对许多项目来说,随着项目的的开展,框 架活动可以迭代应用。即,在项目的多次 迭代过程中,沟通、策划、建模、构建、 部署等活动不断重复。每次项目迭代都会 产生一个软件增量,每个软件增量实现了 部分的软件特性和功能。随着每一次增量 的产生,软件逐渐完善。
普适性活动
软件项目跟踪和控制 风险管理 软件质量保证 正式技术评审 测量 软件配置管理 可复用管理 工作产品的准备和生产
增量模型存在的问题
每个附加的增量并入现有的新增量时应简单、方便 ——该类软 件的体系结构应当是开放的。 仍然无法处理需求发生变更的情况。 管理人员须有足够的技术能力来协调好 各增量之间的关系。
演化过程模型
演化模型是迭代的过程模型,使得软件工 程师能够逐步开发出更完整的软件版本。 迭代的思想:对一系列活动的重复应用, 用以评估一系列论断,解决一系列风险, 达成一系列开发目标,并逐步增量地建立 并完善一个有效的解决方案。 常见的演化过程模型有原型开发、螺旋模 型等。
过程模式
过程模式提供了一种有效的机制来描述各 种软件过程。模式使得软件工程组织能够 从高层抽象开始,开发层次化的过程描述。 高层抽象描述又进一步细化为一系列步骤 模式以描述框架活动,然后每一个步骤模 式又进一步逐层细化为更详细的任务模式。 过程模式一旦建立起来,就可以在过程变 体的定义中复用——即软件开发队伍可以 将模式作为过程模式的构建模块,定制特 定的过程模型。
惯例过程模型
惯例过程模型规定了一套过程元素——框 架活动、软件工程动作、任务、工作产品、 质量保证以及每个项目的变更控制机制。 每个过程模型还定义了工作流——即过程 元素之间相互关联的方式。 所有的软件过程模型都支持通用框架活动, 但是每一个模型都对框架活动有不同的侧 重,并且定义了不同的工作流如何以不同 的方式执行每一个框架活动。
任务集
任务集定义了为达到一个软件工程动作的 目标所需要完成的工作。每一个软件工程 动作都由若干个任务集构成,而每一个任 务集都由工作任务、工作产品、质量保证 点和项目里程碑等组成。通常选择最满足 项目需要和适合开发组特点的任务集。软 件工程动作可以根据软件项目的特定需要 和开发队伍的特点作适当的调整。
建模
分析 设计
构建
编码 测试
部署
交付 支持 反馈
瀑布模型
瀑布模型基本思想