Several common software development model analysis


Outline

Software development model (Software Development Model) refers to the structural framework of all software development processes, activities and tasks. Software development including requirements, design, coding, testing and maintenance phases.

Software development model can clearly express the whole basis of the software development process, clearly defines the main activities and tasks to be accomplished, used as a software project work intuitively. For different software systems, may use different development methods, using different programming languages ​​and a variety of different skills personnel involved in the work, the use of different management methods and means, as well as allowing the use of different software tools and different software engineering surroundings.

Software development model first appeared in the waterfall model 1970 W · Royce raised. This model gives a fixed order, the gradual transition from survival activities on a stage to the next stage, as the water tumble, end up software product developed, and put into use. But when calculating the Extension to the field of statistical analysis, business affairs, most programs using high-level languages ​​(such as FORTRAN, COBOL, etc.) to write. Waterfall model there is also a lack of flexibility, not enough would have been unable to clarify the exact needs by concurrent activities and other shortcomings. Common software development model as well as the evolution model, spiral model, the fountain model, intelligent model.

A typical development model

1. Doing modified model (Build-and-Fix Model);

2. Waterfall model (Waterfall Model);

3. rapid prototyping model (Rapid Prototype Model);

4. incremental model (Incremental Model);

The spiral model (Spiral Model);

6. Evolution model (incremental model);

7. Fountain model (fountain model);

8. The intelligence model (fourth generation technologies (4GL));

The hybrid model (hybrid model)

1. Doing modified model (Build-and-Fix Model)

Unfortunately, many products are using the "learning by doing reform" model of development. In this model, neither the specification nor been designed with the customer's software needs to be constantly modified again and again. In this model, developers get the project immediately on demand programming, debugging generated by the first version of the software. After available to users, if a program error occurs, or a user put forward new requirements for developers to modify the code again, until the user satisfaction.

This is a way to develop a similar workshop on writing hundreds of lines of small programs, not bad, but this approach is the development of any size is not satisfactory, the main question is:

(1) lack of planning and design aspects, the structure of the software with the constant changes from bad to worse, making it impossible to continue to modify;

(2) ignore the needs of links to software developers a great deal of risk;

(3) does not consider the maintainability of tests and procedures, and there is no documentation, software maintenance is very difficult.

2. Waterfall model (Waterfall Model)

http://img3.mukewang.com/5d78b36a0001d0d505120412.jpg

1970 Winston Royce made the famous "waterfall model", until the early 1980s, it has been the only software development model is widely used.

The waterfall model of software life cycle is divided into planning, requirements analysis, software design, programming, software testing and operation and maintenance of six basic activities, and provides for them from top to bottom, mutual convergence of fixed order, as water falls, progressively falling.

In the waterfall model of software development activities in strict accordance with a linear fashion, to accept the results of the work currently active on an activity, the implementation of content required to complete. The current results of the work activities need to be validated, if verified, then the result as input to the next activity, an activity continued under otherwise modified.

Waterfall model emphasizes the role of the document, and require each stage should be carefully verified. However, this linear process model is too idealistic, is no longer suitable for modern software development model, was almost abandoned by the industry, the main question is:

Various stages of division (1) completely fixed, a large amount of documents between stage, which greatly increased the workload;

(2) Since the development model is linear, the user only until the end of the whole process of development in order to see the results, thus increasing the risk of development;

(3) Early errors may have to wait until late in the development and testing stage can be found, then serious consequences.

3. rapid prototyping model (Rapid Prototype Model)

我们应该认识到,"线性"是人们最容易掌握并能熟练应用的思想方法。当人们碰到一个复杂的"非线性"问题时,总是千方百计地将其分解或转化为一系列简单的线性问题,然后逐个解决。一个软件系统的整体可能是复杂的,而单个子程序总是简单的,可以用线性的方式来实现,否则干活就太累了。线性是一种简洁,简洁就是美。当我们领会了线性的精神,就不要再呆板地套用线性模型的外表,而应该用活它。例如增量模型实质就是分段的线性模型,螺旋模型则是接连的弯曲了的线性模型,在其它模型中也能够找到线性模型的影子。

http://img2.mukewang.com/5d78b37400015fca02680354.jpg

快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。

显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。

快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。

我司快速开发原型产品:www.learun.cn/Home/VerificationForm.

4. 增量模型(Incremental Model)

http://img4.mukewang.com/5d78b37c0001e1e203910171.jpg

与建造大厦相同,软件也是一步一步建造起来的。在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。

增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。

但是,增量模型也存在以下缺陷:

(1)由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。

(2) 在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。

在使用增量模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。

例如,使用增量模型开发字处理软件。可以考虑,第一个增量发布基本的文件管理、编辑和文档生成功能,第二个增量发布更加完善的编辑和文档生成功能,第三个增量实现拼写和文法检查功能,第四个增量完成高级的页面布局功能。

5. 螺旋模型(Spiral Model)

1988年,Barry Boehm正式发表了软件系统开发的"螺旋模型",它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。

螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:   (1) 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;

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

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

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

螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:

(1)螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。

(2)如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。

(3)软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险 。

一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。

6.演化模型(incremental model)

主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现。软件开发人员根据用户的需求,首先开发核心系统。当该核心系统投入运行后,用户试用之,完成他们的工作,并提出精化系统、增强系统能力的需求。软件开发人员根据用户的反馈,实施开发的迭代过程。第一迭代过程均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管理的子集。

在开发模式上采取分批循环开发的办法,每循环开发一部分的功能,它们成为这个产品的原型的新增功能。于是,设计就不断地演化出新的系统。 实际上,这个模型可看作是重复执行的多个“瀑布模型”。

“演化模型”要求开发人员有能力把项目的产品需求分解为不同组,以便分批循环开发。这种分组并不是绝对随意性的,而是要根据功能的重要性及对总体设计的基础结构的影响而作出判断。有经验指出,每个开发循环以六周到八周为适当的长度。

7. 喷泉模型(fountain model, (面向对象的生存期模型, OO模型))

http://img.mukewang.com/5d78b3850001960902570229.jpg

喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。

8.智能模型(四代技术(4GL))

智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。这种方法需要四代语言(4GL)的支持。4GL不同于三代语言,其主要特征是用户界面极端友好,即使没有受过训练的非专业程序员,也能用它编写程序;它是一种声明式、交互式和非过程性编程语言。4GL还具有高效的程序代码、智能缺省假设、完备的数据库和应用程序生成器。目前市场上流行的4GL(如Foxpro等)都不同程度地具有上述特征。但4GL目前主要限于事务信息系统的中、小型应用程序的开发。

9.混合模型(hybrid model)

过程开发模型又叫混合模型(hybrid model),或元模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。

各种模型的比较

每个软件开发组织应该选择适合于该组织的软件开发模型,并且应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点。几种常见模型的优缺点:

瀑布模型:文档驱动,系统可能不满足客户的需求;

快速原型模型;关注满足客户需求,可能导致系统设计差、效率低,难于维护;

增量模型:开发早期反馈及时,易于维护,需要开放式体系结构,可能会设计差、效率低;  

螺旋模型:风险驱动,人员需要有经验且经过充分训练。

原文:windy


Guess you like

Origin blog.51cto.com/14260196/2437489