一.瀑布模型
- 瀑布模型在软件工程中占有重要地位,是所有其他模型的基础框架。
- 瀑布模型的每一个阶段都只执行一次,因此是线性顺序进行的软件开发模式。
(1)优点:
- 强调开发的阶段性;
- 强调需求分析和早起计划;
- 强调产品测试。
(2)缺点:
- 依赖于早期进行的唯一一次需求分析,不能适应需求的变化;
- 由于是单一流程,开发中的经验教训不能的及时反馈给应用于本产品的过程;
- 风险往往迟至后期的测试阶段才显露,因而失去较早的纠正机会。
瀑布模型的一个大缺陷在于,如果在需求引入的一个缺陷要到测试阶段甚至更后的阶段才发现,通常会导致前面阶段的工作大面积返工。
二.螺旋模型
- 一般在软件开发初期阶段需求不是很明确时,采用渐进式的开发模式。螺旋模型是渐进式开发模型的代表之一。
- 这对于那些规模庞大、复杂度高、风险大的项目尤其适合。这种迭代开发的模式给软件测试带来了新的要求,它不允许有一段独立的测试时间和阶段,测试必须跟随开发的迭代而迭代。因此,回归测试就显得尤为重要。
(1)优点:
- 强调严格的全过程风险分析
- 强调各开发阶段的质量
- 提供机会检讨项目是否有价值继续下去
(2)缺点:
引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。这需要人员、资金和时间的投入
三.增量和迭代
- 增量开发能显著降低项目的风险,结合软件持续构建机制,构成了当今流行的软件工程最佳实践之一。
- 增量开发模型,鼓励用户反馈,在每个迭代过程中,促使开发小组以一种循环的、可预测的方式驱动产品的开发。因此,在这种开发模式下,每一次的迭代都意味着可能有需求的更改、构建出新的可执行软件版本,意味着测试需要频繁进行,测试人员需要与开发人员更加紧密地协作。
- 增量通常和迭代混为一谈,但是其实两者是有区别的。增量是逐块建造的概念,例如画一幅人物画,我们可以先画人的头部,再画身体,再画手脚……而迭代是反复求精的概念,同样是画人物画,我们可以采用先画整体轮廓,再勾勒出基本雏形,再细化、着色
四.敏捷开发
- 面对面的沟通(认为比书面的文档更有效)
- 频繁交付新的软件版本
- 紧凑而自我组织型的团队
- 能够很好地适应需求变化的代码编写和团队组织方法
- 更注重软件开发中人的作用
- 强调程序员团队与业务专家之间的紧密协作
敏捷的主要贡献在于他更多地思考了如何去激发开发人员的工作热情。
敏捷开发的价值观总括:
个体与交互 重于过程和工具(面对面沟通)
可用的软件 重于完备的文档
客户协作 重于合同谈判(强调程序员与业务专家之间的紧密协作)
响应变化 重于遵循计划(频繁交付新的软件版本)
敏捷开发的原则:
1、凝聚人的力量,紧密协(合)作。
2、聚焦客户价值,消除浪费
3、持续地学习与改进
(1)scrum里面的角色:
scrum由product owner(产品经理)、scrum master(项目经理)和team(研发团队)组成。 其中:
- product owner负责整理user story(用户故事),定义其商业价值,对其进行排序,制定发布计划,对产品负责。
- scrum master 负责召开各种会议,协调项目,为研发团队服务。
- 研发团队则由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品
迭代开发
与瀑布不同,scrum将产品的开发分解为若干个小sprint(迭代),其周期从1周到4周不等,但一般不会超过4周。参与的团队成员一般是5到9人。每期迭代要完成的user story是固定的。每次迭代会产生一定的交付。
敏捷中的测试
1.测试工作的核心内客是没有变的,就是不断地找Bug,只是要调整好自己的心态,一切以敏捷的原则为主。
2.测试人员不能依赖文档,测试用例作用减弱,更多的采用思维导图、探索性测试(强调自由度,设计和执行同时执行,根据测试结果不断调整测试计划)、自动化测试
3.敏捷讲求合作,在敏捷项目组中,测试人员应该更主动点,多向开发人员了解需求、讨论设计、一起研究Bug出现的原因