软件生命周期:按开发软件的规模和复杂程度,从时间上把软件开发的整个过程(从计划开发到软件报废为止的整个历史阶段)进行分解,形成相对独立的几个阶段。
每个阶段有分解成几个具体的任务,然后按规定顺序依次完成各阶段的任务并规定一套标准的文档作为各个阶段的开发成果,最后生产出高质量的软件。
软件开发模型:由于项目,需求的模式不同,所以在软件生命周期过程中选择的软件开发模型也会有所不同,在历史上,软件开发模型经历了【边做边改】,瀑布,螺旋,敏捷等模式的变更
瀑布模型
计划 ---》需求分析 ---》设计 ---》编码 ---》测试 ---》运行维护
特点: 1.软件开发的各项活动严格按照线性方式进行
2.当前活动接受上一活动的工作结果
3.当前活动的工作结果需要进行验证
缺点: 1.由于开发模型是线性的,增加了开发风险
2.早起的错误可能要等到后期的阶段才能发现(测试阶段发现需求上面的错误)
3.各个阶段固定,阶段之间产生大量文档,极大增加工作量
原型模型
客户与开发公司紧密联系,开发周期长,开发会受到需求变更的影响
特点: 1.实现客户与系统的交互
2.进一步细化待开发软件需求
3.开发人员可以确认客户真正想要的需求是什么
螺旋模型
制定计划 ---》风险分析 ---》实施工程(需求确认,软件需求,软件产品设计,设计确认与认证,详细设计,开发,测试) ---》客户评估
特点: 1.螺旋模型是将瀑布模型与快速原型模型结合起来的
2.强调了其他模型所忽视的风险分析(告诉客户哪些能做哪些不能做,做出来的效果是怎样的)
3.每一次螺旋包括四个步骤:制定计划,风险分析,实施工程,客户评估
缺点:
1.强调风险分析,但要求客户接受并相信这种分析,是不容易的
敏捷模型
敏捷开发是一种以人为核心,迭代,循序渐进的开发方法
(将一个大需求拆分掉,将一个大功能拆分成许多个小的子功能,然后增量开发)
特点:
1.短周期开发
2.增量开发
3.由程序员和测试人员编写自动化测试来监控开发进度
4.通过口头沟通,测试和代码来交流系统的结构和意图
5.编写代码之前先写测试代码,也叫作测试先行(接口开发完,写接口测试代码)
缺点:
1.团队的组建较难,人员素质要求较高
2.对测试人员要求完全掌握各种脚本编程语言,能执行单元测试,自动化测试