管理进化

软件开发模式有哪几种


摘要:常用的软件开发模式有四种:1、瀑布开发模式;2、迭代式开发模式;3、螺旋开发模式;4、敏捷开发模式;四种开发模式并没有绝对的优劣之分,都有各自的优势和缺点,具体适合的项目类型也要根据团队、项目的现状而定。具体我们将在文章中说明。

详细解答:

1、瀑布模型

瀑布式开发是由W.W.Royce在1970年提出的软件开发模型,是一种比较老的计算机软件开发模式,也是典型的预见性的开发模式。在瀑布式开发模式中,开发严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤进行,步骤的成果作为衡量进度的方法,例如需求规格、设计文档、测试计划和代码审阅等。

瀑布式开发最早强调系统开发应有完整的周期,且必须完整地经历每个周期内的每个开发阶段,并系统化地考量分析所涉及的技术、时间与资源投入等。

瀑布式开发的主要问题是它的严格分级导致自由度降低,项目早期即作出承诺会导致对后期需求的变化难以调整且代价很大,这在需求不明晰并且在项目进行过程中可能有变化的情况下基本上是不可行的。

2、迭代式开发

迭代式开发也被称为迭代增量式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式的一些弱点,有更高的成功率。在迭代式开发中,整个开发工作被组织为一系列短小的、固定长度的小项目,每次迭代都包括需求分析、设计、实现与测试。

采用迭代式开发时,工作可以在需求被完整地确定之前启动,并在一次迭代种完成系统的一部分功能或业务,再通过客户的反馈来细化需求,并开始新一轮的迭代。

迭代式开发的优点

1)降低风险

2)得到早期用户反馈

3)持续的测试和集成

4)使用变更

5)提高复用性

3、螺旋开发

螺旋式开发是由巴利·波姆(Barry Boehm)在1988年正式发表的软件系统开发模型,它兼顾了快速原型的迭代特征及瀑布模型的系统化和严格监控,其最大的特点是引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减少损失。

同时,在每个迭代阶段构建原型是螺旋模型用来减少风险的方法。螺旋模型更适合大型的昂贵的系统级的软件开发,一开始应用的规模很小,当项目被定义得更好、更稳定时逐渐展开。其核心在于不需要在刚开始时就把所有事情都定义清楚,可以先定义最重要的功能去实现它,然后听取客户的意见,再进入下一个阶段,入此不断循环、重复,直到得到满意的产品。螺旋模型在很大程度上是一种风险驱动的方法体系,因为在每个阶段及经常发生的循环之前,都必须先进行风险评估。

螺旋式开发有如下特点

(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;

(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;

(3)实施工程:实施软件开发和验证;

(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。

4、敏捷开发

敏捷软件开发又被称为敏捷开发,是一种从1990年开始逐渐引起人们广泛关注的新型软件开发方式,具有应对快速变化的需求的软件开发能力。它的具体名称、理念、过程、术语都不尽相同,相对于非敏捷开发,更强调程序员团队与业务专家之间的紧密协作及面对面沟通,比单纯通过书面文档沟通更有效,能更频繁地交付新的软件版本,使自我组织、自我约束的团队能够更好地适应需求的变化,也更注重软件开发过程中人的作用。

敏捷软件开发有如下特点:

1)首要任务是尽早地、持续地交付可评价的软件,以使客户满意。

2)乐于接受需求变更,即使在开发后期也是如此。敏捷软件开发能够驾驭需求的变化,从而赢得竞争优势。

3)频繁交付可使用的软件,交付的间隔越短越好,可以从几个月缩减到几个星期。

4)在整个项目开发期间,业务人员和开发人员必须朝夕工作在一起。

5)围绕那些有推动力的人们来构建项目,给予他们所需的环境和支持,并且相信他们能够把工作做好。

6)开发团队及在开发团队内部进行最快速、有效的传递信息的方法是面对面交谈。

7)可使用的软件是进度的主要衡量指标。

8)提倡可持续发现。出资人、开发人员及使用者应该共同维持稳定的开发速度。

9)为了增强敏捷能力,应持续关注技术上的杰出成果和良好的设计。

10)简洁,最小化那些没有必要投入的工作量是至关重要的。

11)最好的架构、需求和设计都源于自我组织的团队。

12)团队定期反思如何变得更有战斗力,然后相应地转变并调整其行为。

延伸阅读:

四者对比区别

传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试,从测试到提交大概这样的流程,要求每一个开发阶段都要做到最好。特别是前期阶段,设计的越完美,提交后的成本损失就越少。

迭代式开发,不要求每一个阶段的任务做的都是最完美的,而是明明知道还有很多不足的地方,却偏偏不去完善它,而是把主要功能先搭建起来为目的,以最短的时间,最少的损失,先完成一个“不完美的成果物”直至提交。然后再通过客户或用户的反馈信息,在这个“不完美的成果物”上逐步进行完善。

螺旋开发,很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。

敏捷开发,相比迭代式开发两者都强调在较短的开发周期提交软件,但是,敏捷开发的周期可能更短,并且更加强调队伍中的高度协作。

敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调适应性而非预见性。适应性的方法集中在快速适应现实的变化。当项目的需求起了变化,团队应该迅速适应。这个团队可能很难确切描述未来将会如何变化。

智齿客服