一、瀑布式 Waterfall
瀑布模型,简而言之,就是等一个阶段所有工作完成之后,再进入下一个阶段。
由W.W.Royce在1970年最初提出的软件开发模型。
瀑布开发模式:
瀑布开发模式有以下显著的特点:
1.严格把软件项目的开发分隔成各个开发阶段:需求分析,要件定义,基本设计,详细设计,编码,单体测试,结合测试,系统测试等。
使用里程碑的方式,严格定义了各开发阶段的输入和输出。如果达不到要求的输出,下一阶段的工作就不展开。
2.重视和强调过程文档,在开发的中后期才会看到软件原型,早起只能通过文档来了解系统的模样。
在这种情况下,文档的重要性仿佛已经超过了代码的重要性。
3.瀑布模型把每个开发阶段都定义为黑盒,希望每个阶段的人员只关心自己阶段的工作,不需要关注其他阶段的工作。
好处是:可以让开发人员能够更专注于本职工作,提高阶段效率。
坏处是:
a.由于各阶段的开发人员只能接触到自己工作范围内的东西,所以对客户需求的理解程度高低不等,开发人员更像是定义为流水线上的工人。
b.对于客户需求变更,编码人员会比设计人员更容易产生很强的抵触情绪。
c.在每个开发阶段都会有一些信息刻意的不让其他开发阶段的人员知道(本意是为了提到效率,但实际上有时候产生的是互相的理解偏差)。
4.瀑布模型产生的管理文档(计划书,进度表)等,能让不太了解该项目的人也能看懂项目的进度情况(只有能看懂百分比就行),很适合向领导汇报用。所以管理人员比较喜欢瀑布模型,但是开发人员不喜欢,因为它束缚了开发人员的创造性。
5.既然叫做瀑布,就意味着不应该走回头路。否则如果出现返工,付出的代价会很大。
软件生命周期前期造成的Bug的影响比后期的大的多。
代价比较大的主要原因还是每个开发阶段的步子过大,每一次调整都可能伤筋动骨。
6.更适合需求相对稳定的大型项目。
二、敏捷开发Agile Development
简单来说,就是把大项目变成小项目,把大时间点变成小时间点,持续集成,持续交付。
CI/CD。Continuous Integration(持续集成),Continuous Delivery(持续交付)或Continuous Deployment(持续部署)。
1990年代兴起。
scrum是比较流行的一种。
Scrum框架包括3个角色、5个会议、3套工具。
3个角色:
1. Scrum Master,Scrum过程的管理者,服务于PO、团队和组织;
2. PO: Product Owner,对产品Roadmap和Backlog负责,确保产品价值最大化。
3. Dev Team:架构师、开发人员、测试人员等,负责实现Sprint目标。
5个会议
三、DevOps
Development&&Operations
四、螺旋式递增模式
1988年,巴利·玻姆(Barry Boehm)正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
一般在软件开发初期阶段需求不是很明确时,采用渐进式的开发模式。螺旋模型是渐进式开发模型的代表之一。
这对于那些规模庞大、复杂度高、风险大的项目尤其适合
优点:
–强调严格的全过程风险管理
–强调各开发阶段的质量
–提供机会检讨项目是否有价值继续下去
缺点:
–引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。这需要人 员、资金和时间的投入
五、V-Model:
汽车级产品V模型开发模式
六、CMMI
参考:
软件开发周期的常见模型(v,w模型)
https://blog.csdn.net/weixin_40720301/article/details/102816101