2.软件工程过程模型
2021-04-14 22:45:34 1 举报
AI智能生成
🔸软件工程过程模型 🔅对老师课堂的PPT整理成思维导图
作者其他创作
大纲/内容
2.软件工程过程模型
软件工程过程
是用以开发或维护软件及其相关产品的一系列活动
包括
软件工程活动
软件管理活动
研究层次
以质量焦点为基础
软件工程必须以有组织的软件质量保证为基础,对质量的关注构成了软件工程的根基
过程层
指出了如何把各种方法和工具进行综合才能使软件开发合理、及时的进行
定义了一组关键过程域(KPAs),作为对软件工程项目进行管理与控制的基础
方法层
涵盖了需求分析、设计、编程、测试、维护等各个环节,它指明了完成这些任务在技术上应当“如何做”
工具层
对过程和方法提供支持,使得工程活动、管理活动得以自动、半自动的进行
包括四种基本过程活动
软件规格说明
规定软件的功能,性能及其运行限制
软件开发
产生满足规格说明的软件,包括设计,编码等工作
软件确认
确认软件能满足客户提出的要求,对应于软件测试
软件演进
为满足客户变更要求,软件必须在使用过程中演进,以求尽量延长软件的生命周期
特点
(1) 易理解性
(2) 可见性
每个过程活动都以得到明确的结果而告终,保证过程的进展对外可见
(3) 可支持性
容易得到CASE工具的支持
(4) 可接受性
比较容易被软件工程师接受和使用
(5) 可靠性
不会出现过程错误,或者出现的过程错误能够 在产品出错之前被发现
(6) 健壮性
不受意外发生问题的干扰
(7) 可维护性
过程可以根据开发组织需求的改变而改进
(8) 高效率
从给出软件规格说明起,就能够较快地完成开发而交付使用
定义的模板
循环解决问题过程
宏观上,所有的软件开发过程都可看成是一个循环解决问题的过程
四个阶段
状态描述
表示了事物的当前状态
问题定义
标识了要解决的特定问题
技术开发
通过应用某些技术来解决问题
方案综述
提交解决结果(如文档、程序、数据、新产品等)给一开始就需要方案的人
软件工程过程模型
由软件工程师在实际工程活动中设计、提炼出的工程开发策略,用以覆盖软件过程中的基本阶段,确定所涉及的过程、方法、工具。
典型过程模型
瀑布模型
1970年W.Royce提出瀑布模型
特征
接受上一阶段的结果作为本阶段的输入
利用这一输入实施本阶段应完成的活动
对本阶段的工作进行评审
将本阶段的结果作为输出,传递给下一阶段
适用于需求确定,变更少的项目
缺点
缺乏灵活性
难以适应需求不明确或需求经常变化的软件开发
维护代价大
开发早期存在的问题往往要到交付使用时才发现
原型模型
原型(prototype)
是预期系统的一个可执行版本
反映了系统性质(如功能、计算结果等)的一个选定的子集
原型不必满足目标软件的所有约束
目的是能快速、低成本地构建系统的一个示范版本
类型
探索型
目的:弄清目标系统的要求,确定所希望的特性,并探讨多种方案的可行性
实验型
目的:验证方案或算法的合理性,在大规模开发和实现前,用于考核方案是否合适,规格说明是否可靠
使用策略
废弃(throw away)策略
主要用于定义需求
原型通常被废弃,然后根据探索或实验的结果用良好的结构和设计思想重新设计目标系统
原型可作为单独的过程模型使用,也常被作为一种方法或实现技术应用于其它过程模型中
通过迭代的过程快速建立与用户需求一致的原型
优点
减少不明确需求所带来的开发风险
开发人员需要掌握建立快速原型的技术和工具
使用范围
小型或者中等规模交互软件
大型系统的部分开发,例如:用户界面
生命周期较短的软件项目
快速应用开发(RAD)模型
是线性顺序模型的一个“高速”变种,强调极端的开发周期
通过使用基于构件的建造方法达到快速开发的效果
主要用于信息应用软件的开发
适用情况
需求得到很好理解
项目的范围约束明晰
开发阶段
业务建模
业务活动中的信息流被模型化
说明什么信息驱动业务流程、生成什么信息、谁负责生成该信息、该信息流向何处、谁处理它等
数据建模
标识出每个数据对象的特征属性
定义这些对象之间的关系
处理建模
创建处理描述以便增加、修改、删除或获取某个数据对象
应用生成
复用已有的程序构件或是创建可复用的构件
使用自动化工具辅助软件建造
测试及反复
测试所有新创建的构件、所有的接口
支持多小组并行工作
强调程序构件复用
开发周期短
不足
对构件复用依赖程度高
不适用技术风险很高,要采用较多新技术的项目2526
演化软件过程模型
基本思想
分期完成,分步提交(先提交有限功能版本,再完善)
利用“迭代”方法,渐进开发,生产出逐步完善的软件产品
适用于对软件需求缺乏准确认识的情况
比较
线性序列开发完成后能够交付一个完整系统
用于引导用户需求,验证算法,一般不交付最终产品
分类
增量模型
融合了瀑布模型的基本成分和演化模型的迭代特征
瀑布模型和演化模型的结合,增加了风险分析
强调每个增量都发布一个可运行的产品
1)在较短时间内向用户提交部分工作的产品
2)使用户可以看到所开发软件的中间版本
3)早期增量作为原型为后期增量开发提供需求
4)重要功能被首先交付,可以获得最多的测试
5)能有计划地管理技术风险
1)需要软件设计开放式的体系结构
2)增量的有效集成比较困难
3)容易退化为边学边做,使软件过程的控制失去整体性
需求经常变化
市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品
螺旋模型
螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动
制定计划
确定软件目标,选定实施方案,弄清项目开发的限制条件
风险分析
评价所选的方案,识别风险,消除风险
工程实施
实施软件开发,验证工作产品
客户评估
评价开发工作,提出修正建议
将质量目标放在首位
关注早期错误消除
风险驱动型
需要事先制订过程模型和发布产品
需要风险评估的经验
软件重用
“重用”是提升软件财富价值的有效途径
知识重用
使我们能够高效率的开发、维护一个又一个的软件项目
方法重用
帮助我们有章可循的解决各类工程问题
软件成分重用
使我们在需求分析、系统设计和编码事项的过程中能够事半功倍
可分解为
分析结果重用
在大部或局部雷同的项目中重复地使用已经被前驱项目证明是正确的部分
设计结果重用
在开发类同项目的软件,尤其是在软件移植过程中能够极大地减少工作量,提高工作效率
设计结果重用包括体系结构设计重用和详细设计重用两重内涵
代码重用
最直接的重用
包括基于“宏”的重用、基于函数库的重用和基于继承的重用三种不同的方法
框架
是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上/下文(Context)关系
好处
框架的最大好处就是重用
重用分析
重用设计
重用代码
使构件间的通信趋于简单
0 条评论
回复 删除
下一页