Comparison of software development modes (waterfall, iterative, spiral, agile)

1. The waterfall model is a software development model originally proposed by WWRoyce in 1970. Waterfall development is an old computer software development method.
The waterfall model is the most typical predictive method, which strictly follows the pre-planned sequence of requirements analysis, design, coding, integration, testing, and maintenance.
Step outcomes serve as a measure of progress, such as requirements specifications, design documents, test plans, and code reviews, to name a few. 

The main problem with waterfall is that its strict grading results in a reduced degree of freedom. Commitments made early in the project make it difficult and
expensive to adjust to changes in later requirements. The waterfall approach is largely infeasible when requirements are unknown and may change as the project progresses. 


2. Iterative development, also known as iterative incremental development or iterative evolutionary development , is a software development process opposite to traditional waterfall development. It makes up for some weaknesses in traditional development methods and has higher success rate and productivity.
What is iterative development?
The method of designing and implementing only a part of the product at a time and 
completing it step by step is called iterative development, and 
each design and implementation phase is called an iteration. 

In the iterative development method, the entire development work is organized as a series of short,
Small projects of a fixed length (such as 3 weeks) are called a series of iterations.
Each iteration includes requirements analysis, design, implementation and testing.
With this approach, development work can be initiated before requirements are fully identified,
and a portion of the system's functionality or business logic can be developed in one iteration.
The requirements are then refined through customer feedback and a new round of iterations begins.

Advantages of iterative development:
1. Reduce  risk
  2. Get early user feedback 3.   Continuous testing
  and integration
  4. Use change The Spiral Model", which combines the waterfall and rapid prototyping models, emphasizes risk analysis overlooked by other models, and is especially suitable for large and complex systems. The "spiral model" started out small and gradually unfolded as projects were better defined and more stable.   The core of the "spiral model" is that you don't need to define everything clearly at the beginning. You go easy, define the most important feature, implement it, and listen to the customer before moving on to the next stage. And so on and on and on until you get the final product you're satisfied with.        (1) Make a plan: determine the software goals, select an implementation plan, and clarify the constraints of project development;    (2) Risk analysis: analyze and evaluate the selected plan, and consider how to identify and eliminate risks;    (3) Implementation engineering: implement the software Development and verification;    (4) Customer evaluation: Evaluate the development work, put forward revision suggestions, and formulate next-step plans. The Spiral Model is largely a risk-driven methodology, as a risk assessment must first be undertaken before each stage and often before the cycle. Agile software development also known as agile development


















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

  • 人和交互 重于过程和工具。
  • 可以工作的软件 重于求全而完备的文档。
  • 客户协作重于合同谈判。
  • 随时应对变化重于循规蹈矩。


其中位于右边的内容虽然也有其价值,但是左边的内容最为重要。
人员彼此信任 人少但是精干 可以面对面的沟通

项目的敏捷开发:
敏捷开发小组主要的工作方式可以归纳为:作为一个整体工作; 按短迭代周期工作; 每次迭代交付一些成果; 
关注业务优先级; 检查与调整。

最重要的因素恐怕是项目的规模。规模增长,面对面的沟通就愈加困难,
因此敏捷方法更适用于较小的队伍,40、30、20、10人或者更少。
大规模的敏捷软件开发尚处于积极研究的领域。


四者对比区别:

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

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

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

敏捷开发,相比迭代式开发两者都强调在较短的开发周期提交软件,但是,敏捷开发的周期可能更短,并且更加强调队伍中的高度协作。
敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调适应性而非预见性。 

适应性的方法集中在快速适应现实的变化。当项目的需求起了变化,团队应该迅速适应。这个团队可能很难确切描述未来将会如何变化.

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326184443&siteId=291194637