四、软件工程中的几种常见的开发模型
🏀瀑布模型
需求分析——》计划——》设计——》编码——》测试——》运行维护
特点:
不太重视测试,软件开发完成前不会进行测试(更看重前面的需求分析、计划、设计)
线性结构、一个阶段完成后才会进行下一步、效率不高
项目中的问题不能尽早的发现,很可能会错失解决问题的最佳时机。
需要保留足够的时间给测试、测试后置(瀑布模型的缺陷)
测试时间不够——》测试不充分——》暴露风险给用户
一个周期把所有的功能给完成——》一个可以运行的产品很晚才会给用户呈现
使用场景:因为不能够很好的迎接变化,使用与需求固定的小型项目
后面的模型都是在瀑布模型上进行了优化
🏀螺旋模型
螺旋模型:在瀑布模型的基础上进行 风险分析
在每个阶段都有风险分析这一步——》耗时耗力(成本好,团队需要风险分析方面的人才)
优点:
1、强调严格的全过程风险管理。
2、强调各开发阶段的质量。
3、提供机会检讨项目是否有价值继续下去。
缺点:
1、引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高
的要求。这需要人员、资金和时间的投入。
使用场景:大项目
瀑布模型 和螺旋模型对变化的项目不太友好,不容易都项目进行及时更改
🏀增量模型和迭代模型
增量模型:
将项目进行模块化,使其每个模块都能进行独立的编码测试和上线
优势:产品能够加载较短时间内尽快的交付给用户去使用
迭代模型:
一期一期的进行迭代
假如一个产品包含五个功能A、B、C、D、E
增量模型要一个一个的开发这五个不同的模块,但迭代模型会先完成这5个功能的基础版本,会再经历一期一期的迭代优化(在迭代的过程还可接收用户的使用建议)使其功能越来越优秀。
🏀敏捷模型
敏捷模型——2001年,以Kent Beck、Alistair Cockbum、Ward Cunningham、Martin Fowler等人为首的“轻量”过程派聚集在犹他州的Snowbird,决定把“敏捷”(Agile)作为新的过程家族的名称。
在会议上,他们提出了《敏捷宣言》http://agilemanifesto.org/: 我们通过身体力行和帮助他人来揭示更好的软件开发方式。经由这项工怍,我们形成了如下价值观
1、个体与交互重于过程和工具
强调团队内部人员进可能的进行高效的沟通
2、可用的软件重于完备的文档
敏捷模型最终的标准就是:可交付的软件
3、客户协作重于合同谈判
4、响应变化重于遵循计划
(在每对对比中,后者并非全无价值,但我们更看重前者)
敏捷宣言的特点:轻流程、轻文档、重目标、重产出
敏捷开发有很多种方式,其中 scrum(敏捷开发) 是比较流行的一种
scrum中三个重要的角色
- 产品经理(收集用户需求,转变软件需求:开发时就是依赖软件需求来开发的,对产品负责)
- 项目经理(推进项目的推进,为研发团队服务)
- 研发团队:不同技能的成员组成
敏捷模型是一版一版进行迭代的
每个迭代模型为1---4周
每日会议结束后的产物:可交付的软件
演示会议的产物:用户新的需求——》放到需求池中,下一次产品迭代再实现。
五、软件工程中的测试模型
V模型
特点:明确了测试有不同的类型,并且每个类型和前期的开发工作之间有相对应的关系。
缺点测试后置
W模型
W 模型,也称作双V模型。
看图说话:就是两个 V 模型 组成的。
特点:
开发一个V,软件测试一个V【双卡双待】
换个说法:软件开发 和 软件测试 是 同步进行的。
这样做,就解决了 V 模型的缺陷:W模型能够及时发现,并处理前期出现的问题。
缺点:
它仍然是 串行执行的过程,它是不支持 需求的变化。
也就是说:W模型是不支持敏捷开发的。