第二章 软件生存周期与软件过程_PPT幻灯片
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
可行性研究
用最小的代价在尽可能短 的时间内确定问题是否能 够解决。 不是解决问题,而是确定 问题是否值得去解决。
2.6.1 可行性研究的内容与步骤
GB 8566-88 《计算机软件开发规范》中指出:
可行性研究的主要任务是“了解客户的要求 及现实环境,从技术、经济和社会因素等三方面研 究并论证本软件项目的可行性,编写可行性研究报 告,制定初步项目开发计划。” 可行性研究的最根本任务是:
与需求比 较后修正
形式化 规格说明
形式化开发记录
变换n ……
变换2
变换1
测试
系统需求
转换模型
目标系统
2.4.2净室模型(形式化的增量开发模型)
基于思想: 力求在分析和设计阶段就消除错误,
确保正确,然后在无缺陷或“洁净”的状态 下实现软件的制作。
三个关键技术:
• 置于统计过程控制之下的增量开发 • 基于函数的规范、设计、验证 • 统计测试和软件认证
• 按线性模型构建软件系统
听取用 户意见
建造/修改 原型
用户测试 运行原型
需求 原型开发
用户 反馈
原型评价 最终系统评价
最终 系统开发
快速原型法的过程模型
原型模型 — 适用情况
• 用户定义了一组一般性目标,但不能标 识出详细的输入、处理及输出需求;
• 开发者可能不能确定算法的有效性、操 作系统的适应性或人机交互的形式;
4. 采用增量模型比采用瀑布模型和快速原型 模型需要更精心的设计,但在设计阶段多 付出的劳动将在维护阶段获得回报。
2.3.2螺旋模型(Spiral Model)
螺旋模型为目前软件开发中最常 用的软件快发模型,是在结合瀑布模 型与快速原型模型基础上演变而成的, 尤其适用于大型软件的开发。
1.典型的迭代模型
技术可行性
度量一个特定技术信息系统解决方案的实用性及技术 资源的可用性
考虑的问题 (1)开发风险分析 (2)资源分析 (3)相关技术的发展(现有技术能 否实现新系统,技术难点、建议 采用技术的先进性)
举例
成本-效益(万元) 60
盈亏平衡点
该系统节省经费
40 该系统成本
20
0 1 2 3 4 5年
提交可运行软件. 4).在整个项目开发期间,业务人员和开发人员必须
天天都在一起工作. 5).以积极向上的员工为中心,建立项目组.
6).在团队内部,最有效,效率最高的传递信息的方法,就是面 对面交流.
7).测量项目进展的首要依据是可运行软件. 8).敏捷过程提倡可持续的开发,责任人,开发者和用户应该
先完成一个系统子集的开发,再按同样的开发 步骤增加功能 (系统子集),如此递增下去直至 满足全部系统需求。
系统的总体设计在初始子集设计阶段就应作出 设想。
增量1 需求
设计
和设计
交付客户
增量2
需求
设计 实现和集成
交付客房
增量3
需求
设计 实现和集成
交付客房
规格说明组
设计组 增量4
实现和集成组
需求
设计
实现和集成
• 在综合测试阶段将发现需求分析、设计 或编码阶段的许多错误。
—— 实际的瀑布模型
—— 瀑布模型的优缺点
• 瀑布模型有许多优点:可强迫开发人员采用规范 的方法(例如,结构化技术); 严格地规定了 每个阶段必须提交的文档;要求每个阶段交出的 所有产品都必须经过质量保证小组的仔细验证。 瀑布模型的成功在很大程度上是由于它基本上是 一种文档驱动的模型。
1.敏捷开发的价值观 1).个人和交互胜过过程和工具. 2).可以运行的软件胜过面面俱到的文档. 3).客户合作胜过合同谈判. 4).响应变化胜过遵循计划.
2.敏捷开发应遵循的12条原则 1).通过尽早的,不断的提交有价值的软件来
使顾客满意. 2).即使到了开发的后期,也欢迎改变需求. 3).以从几个星期到几个月为周期,尽快,不 断的
• 特点 –风险驱动
• 主要适用于内部开发的大规模软件项目 • 要有具有丰富风险评估专门知识的开发
人员,否则风险更大。
2.3.3构件集成模型
1.面向对象的基本概念 2.什么是构件 3.构件集成模型的特征
1.面向对象的基本概念 面向对象的一个简单的公式:
面向对象=对象+分类+继承+消息通信
2。什么是构件
2.2传统的软件过程
2.2.1瀑布模型 (Waterfall Model) 瀑布开发模型是一种基于软件生命周
期的线性开发模型,它与软件生命周期 的特点是一致的。
瀑布模型开发软件的特点:
1.阶段间具有顺序性和依性。 2.推迟实现的观点。 3.保证质量的观点。 4.存在的问题。
为保证软件质量,瀑布模型每一阶段必 须完成规定的文档,并对文档进行复审, 及早发现问题消除隐患。可参照下图如:
用户 通信
用户 评估
可重用部件组装模型
计划
标志候 选构件
风险
分析 进行下 一次迭代
查找 构件
产品开发及发布
将新构件 存入库中
若存在则 提取构件
若不存在则 构造构件
2.4形式化方法模型
2.4.1转换模型
1.转换模型的软件开发过程 (1)确定形式化的需求规格说明书 (2)进行自动的程序变换 (3)对形式化开发记录进行测试 2.转换模型的常用技术 (1) 基于模型的规格说明及其变换技术 (2) 基于代数结构及其变换技术 (3) 基于时序逻辑的规格说明和验证技术 (4)基于可视形式化技术
9)代码集体共有 10)编码标准 11)系统比喻 12)可持续的速度
2.6 软件可行性研究
可行性研究的目的
可行性研究的目的是弄清楚待开发的项目是不是 可能实现和值得进行,通常由系统分析员完成,并 需写出可行性论证的报告。
可行性论证其实是在高层次上进行的一次大大简 化了的需求分析与设计。
(GB 8567-88《 计算机软件产品开发文件编制指南 》)
统一过程有四个阶段
1.初始阶段
本阶段确定所设立的项目是否可行。
2.细化阶段
识别出剩余的大多数用例。对当前迭代的每个用例 进行细化,分析用例的处理流程,状态细节以及可能 发生的状态变化。
3.构造阶段
识别出剩余的用例。每一次迭代开发都是针对用例 进行分析,设计,编码,测试和集成的过程,所得到 的产品是满足项目需求的一个子集。由于细化阶段的 软件设计已经完成,这样各项目可以并行开发。
2.5.2 敏捷过程
敏捷开发(agile development)是一 种以人为核心,以迭代方式循序渐进开 发的方法,其软件开发的过程称为I“敏 捷过程”。
在2001年年初,由一些业界专家成立 了敏捷联盟(agile sofeware development alliance),起草了敏捷软 件开发宣言。
验证
风险分析 设计 验证
风险分析 编码 测试
风险分析 综合测试
简化的螺旋模型
维护
可看作在每个 阶段之前都增 加了风险分析 过程的快速原 型模型。
螺旋模型
• 优点 –对可选方案和约束条件的强调有利于 已有软件的重用,也有助于把软件质 量作为软件开发的一个重要目标; –减少了过多测试或测试不足; –维护和开发之间并没有本质区别。
用户要求 需求分析
需求规格说明书
软件分析与总体设计 软件结构图 详细设计 模块说明
系统测试
确认测试 维 综合测试
单元测试 程序清单
编码
传统瀑布模型存在什么问题?
• 传统的瀑布模型过于理想化。事实上, 人在工作过程中不可能不犯错误。
• 在设计阶段可能发生规格说明文档中的 错误。
• 而设计上的缺陷或错误可能在实现过程 中显现出来。
交付客房
增量模型图
增量Fra Baidu bibliotek型的优点
1. 在较短时间内向用户提交可完成部分工作 的产品,并分批、逐步地向用户提交产品。 从第一个构件交付之日起,用户就能做一 些有用的工作。
2. 整个软件产品被分解成许多个增量构件, 开发人员可以一个构件一个构件地逐步开 发。
3. 逐步增加产品功能可以使用户有较充裕的 时间学习和适应新产品,从而减少一个全 新的软件可能给客户组织带来的冲击。
净室模型
增量 #1
需求 收集
盒结构 规约
形式化 正确性 设计 验证
测试计划
代码 检查
统计性 使用测
试
验证
增量 #2
需求 收集
盒结构 规约
形式化 正确性 设计 验证
测试计划
代码 检查
统计性 使用测
试
验证
.
.
.
.
.
.
.
.
.
.
.
.
增量 #1
需求 收集
盒结构 规约
形式化 正确性 设计 验证
测试计划
代码 检查
为能够持续一个长期的,恒定的开发速度而努力. 9). 时刻关心技术上的精益求精. 10).简单是最基本的. 11).最好的构件,需求和设计出于自组织的团队. 12).每隔一定的时间,团队要反省如何才能更有效的工作,然
后相应的调整自己的行为.
2.5.3 极限编程
改编程包括12个核心实践:
1)完整团队 2)设计对策 3)测试 4)简单设计 5)结对编程 6)小软件编程 7)设计改进 8)持续集成
• ……
原型模型可能是最好的选择
2.3软件演化周期
2.3 软件演化模型
原型开发模型的出现,使人们 逐渐熟悉非线性的开发模型。随着 软件规模的不断增长,复杂软件开 始采用渐增式或迭代式的开发方式 。于是,一种称为演化模型( evolutionary mode)的渐进式的开 发模型应运而生。
2.3.1 增量模型(渐增模型) (Incremental Model)
快速原型模型工作过程
• 原型模型从需求收集开始。 开发者和用户在一起 定义软件的总体目标,标识出已知的需求,并规划 出进一步定义的区域。
• 然后是“快速设计”,快速设计集中于软件那些对 用户可见部分的表示。“快速设计”导致原型的建 造。
• 原型由用户评估,并进一步精化待开发软件的需求, 逐步调整原型使其满足客户的要求。同时开发者对 将要做的事情有更好的理解, 这个过程是迭代的。
• “瀑布模型是由文档驱动的”这个事实也是它的 一个主要缺点。 实际项目很少按照该模型给出的顺序进行; 用户常常难以清楚地给出所有需求; 用户必须有耐心,等到系统开发完成; 开发者常常被不必要地耽搁。
2.2.2快速原型模型
1.原型开发的优越性 2.原型开发的方法 3.原型模型的启示 4.应该防止的方向
对以后的行动方针提出建议。
1.研究的内容
(1) 经济可行性 (2) 技术可行性 (3) 运行可行性 (4) 法律可行性
经济可行性
度量系统解决方案的性能价格比。 考虑的问题: 成本/效益分析(开发、运行的成本/效益)
–有形成本、效益 –无形成本、效益
价值和成本的关系 –质量与价值、成本的关系 –价值/成本的均衡
统计性 使用测
试
验证
2.5 统一过程和敏 捷过程
2.5.1统一过程
统一过程描述了软件开发中各个环节 应该做什么,怎么做,什么时候做以及为 什么要做,描述了一组以某种顺序完成的 活动。
统一过程在一个二维空间中描述软件 开发活动,水平轴代表时间,显示了动态 过程的一面。垂直轴代表过程静态的一面 其中活动代表怎么做,用产品表示做什么 ,用人员表示谁来做,用工作流表示什么 时候来描述。
对象设计将事物封装成包含数据和加工该数据的 方法的对象,并抽象成为类.经过适当设计和实现的 类,也可称为构件(component).它们在某个领域中具 有一定的通用性,可以在不同的计算机软件系统中复 用.
3。构件集成模型的特点
构件集成模型利用预先封装好的构件来构造应 用软件系统.它融合了螺旋模型的不少特征,也支持 软件开发的迭代方法.
2.1软件生存周期
2.1 软件生存周期
一切的工业产品都有自己的生 存周期,软件(产品)也不例外。一个 软件从开始立项起,到废弃不用止, 统称为软件的生存周期(life cycle)。
软件生存周期一般被划分为设 计,开发和运行3个时期。
需求分析 软件分析 软件设计 编码测试 软件测试 运行维护 典型的软件生存周期
投资回收期
---------成本及效益分析图
运行可行性
• 产品交付给用户后用户可能不满意; • 到了预定的交付日期软件可能还未开发
出来; • 实际的开发成本可能超过预算; • 产品完成前一些关键的开发人员
“跳槽”了; • 产品投入市场之前竞争对手发布
了一个功能相近、价格更低的软 件等。
风险分析 快速原型
验证 风险分析 规格说明 验证
风险分析 变化的需求
螺旋模型是一种典型的迭代模型,每迭代一次,螺旋 线就前进一周。每轮螺旋均包含计划,风险分析,建立原 型,用户评审。
图1.8 螺旋模型
螺旋模型的基本思想
• 使用原型及其他方法来尽量降 低风险。
软件风险是任何软件开发项目中都普遍存在的 实际问题,项目越大,软件越复杂,承担该项 目所冒的风险也越大。例如: