软考-软件工程开发模型
软考-软件工程开发模型
参考视频: 软件工程概述&开发模型 ,配合视频理解更清晰~
软件的生命周期为:需求分析
、软件设计
、软件开发
、运行维护直至被淘汰
几个阶段。
软件工程支持 4 个活动,简称 PDCA,分别是:Plan、Do、Check、Action
- 软件规格说明:规定软件功能及其运行时限制
- 软件开发:开发出满足规格说明的软件
- 软件确认:确认开发的软件能满足用户需求
- 软件演进:软件在运行过程中不断改进以满足用户新的需求
为了使软件生命周期中的各项任务有序进行,需要一定的模型给予规程约束,这就是软件生命周期模型。
1、瀑布模型
基础知识:
【1】又被称为生命周期法
【2】开发计划分为:软件计划、需求分析、软件设计、程序编码、软件测试、运行维护 6 个阶段
优点:
【1】为项目提供了按阶段划分的检查点
【2】当前一阶段完成后,只需要关注后一阶段
【3】提供了一个模板,使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导
缺点:
【1】各个阶段产生了大量的文档,极大地增加了工作量
【2】开发模型是线性的,用户只有在开发末期才能看到开发成果,从而增加了开发风险
【3】不适应用户需求的变化,并且在需求分析阶段不可能完全获取
【4】前期未发现的错误在后面的开发活动中可能被扩散,进而导致整个项目开发失败
适用场景:
【1】需求明确或很少变更的项目
2、原型化模型
基础知识:
【1】快速建立一个目标系统的最初版本,并交给用户试用、补充和修改
,再进行新的版本开发,直到用户满意
【2】成败的关键和效率的高低,在于模型的建立和建模的速度
【3】按照最终的结果可以分为抛弃型原型和演化型原型
适用场景:
【1】用户需求不明确
3、螺旋模型
基础知识:
【1】瀑布型模型和演化型原型相结合
【2】强调风险分析
【3】每一次迭代分为:目标设定、风险分析、开发和有效性验证、评审
适用场景:
【1】大型软件开发
【2】面向规格说明、面向过程和面向对象的开发,及几种开发方法的组合
4、敏捷模型
基础知识:
【1】适应型(图右)而非预设型(或者叫可预测型,图左)
【2】以人为本而非以过程为本,强调开发人员有权做技术方面的所有决定
,强调相关人员的沟通
,提倡面对面交流
【3】迭代增量式的开发过程
迭代(图左),增量(图右)
敏捷模型是一组,包含下面多种:
4.1 极限编程(XP)
基础知识:
【1】价值观是:交流、朴素、反馈和勇气,将开发过程分解为一个个相对比较简单的小周期
4.2 水晶方法
基础知识:
【1】提倡“机动性”,认为每个项目都有独特
的角色、过程模式、工作产品和实践。
4.3 SCRUM
基础知识:
【1】侧重于项目管理,迭代式增量软件开发过程
4.4 特征驱动开发方法(FDD)
基础知识:
【1】一种迭代开发模型,认为有效的软件开发需要三要素:人、过程和技术
4.5 开放源码(很少考)
基础知识:
【1】程序员地域上分布十分广泛
4.6 ASD 方法(很少考)
基础知识:
【1】核心是三个非线性的、重叠的开放阶段:猜测、开放和学习
4.7 动态系统开放方法(DSDM)(很少考)
基础知识:
【1】倡导以业务为核心
5、构件组装模型(CBSD)
基础知识:
【1】利用模块化方法,将整个系统模块化,在一定构件模型的支持下,复用构件库中的一个或多个构件,通过组合手段高效率、高质量的构造软件系统
【2】融合了螺旋模型的许多特征,本质上是演化的,开发过程是迭代的
【3】基于构件的软件开发分为:需求分析和定义、体系结构设计、构件库的建立、应用软件构建、测试和发布
6、V 模型
基础知识:
【1】测试分段(每一步都有对应的测试)
【2】测试计划先行(例如详细设计阶段做单元测试的测试计划,这样提前做下一步骤的测试计划)
7、W 模型
基础知识:
【1】依据“尽早且持续进行软件测试
”的原则,开发流程与测试活动并行展开
8、快速应用开发模型(RAD)
基础知识:
【1】增量型软件开发模型
【2】通过大量使用可复用构件,采用基于构件的开发方法快速开发,强调极短的开发周期
【3】流程分为:业务建模、数据建模、过程建模、应用生成、测试与交付
适用场景:
【1】模块化要求程度比较高