いくつかの一般的なソフトウェア開発モデル分析


アウトライン

ソフトウェア開発モデル(ソフトウェア開発モデル)は、すべてのソフトウェア開発プロセス、アクティビティとタスクの構造的枠組みを指します。要件、設計、コーディング、テスト、保守フェーズを含むソフトウェア開発。

ソフトウェア開発モデルは明らかにソフトウェア開発プロセスの全体の基礎を表現することができ、明確に直感的にソフトウェアプロジェクトの作業として使用する、達成することが主な活動とタスクを定義します。異なるソフトウェアシステムでは、さまざまなプログラミング言語や仕事、異なる管理方法と手段の使用に関わるさまざまなスキル要員のさまざまな方法を使って、ならびに異なるソフトウェアツールと異なるソフトウェア工学の使用を可能にする、さまざまな開発手法を使用することができます環境。

ソフトウェア開発モデルは、最初のロイスが上がっ・ウォーターフォールモデル1970 Wに登場しました。このモデルは、水のタンブルとして、開発されたソフトウェア製品を終わると、使用に入れ、一定の順序、次のステージにステージ上の生存活動から徐々に移行を提供します。統計分析、営業事務の分野への拡張を計算するときしかし、ほとんどのプログラムは書くために(などFORTRAN、COBOL、など)の高レベルの言語を使用して。柔軟性の欠如もあるウォーターフォールモデルは、十分ではないが、同時活動やその他の欠点により、正確なニーズを明確にすることができませんでしたでしょう。一般的なソフトウェア開発モデルと同様に進化モデル、スパイラルモデル、噴水モデル、インテリジェントなモデル。

典型的な開発モデル

1.こう修正モデル(ビルドおよびフィックスモデル)。

2.ウォーターフォールモデル(滝モデル)。

3.ラピッドプロトタイピングモデル(ラピッドプロトタイプモデル)。

4.インクリメンタルモデル(インクリメンタルモデル)。

スパイラルモデル(スパイラルモデル)。

6.進化モデル(増分モデル)。

7.噴水モデル(噴水モデル)。

8.知能モデル(第四世代技術(4GL))。

ハイブリッドモデル(ハイブリッドモデル)

1.こう修正モデル(モデルを修正ビルドと-)

残念ながら、多くの製品が開発の「学習改革を実行して、」モデルを使用しています。このモデルは、どちらの仕様も、顧客のソフトウェアで設計されて、常に何度も何度も変更する必要がある。このモデルでは、開発者がオンデマンドプログラミングですぐにプロジェクトを取得し、デバッグがによって生成されましたソフトウェアの最初のバージョン。ユーザーが利用できるの後、プログラムエラーが発生した場合、またはユーザーは、開発者がユーザーの満足度になるまで、再びコードを変更するための新たな要件を前方に置きます。

これは悪くない小さなプログラムの行数百人を書く上で同様のワークショップを開発するための方法ですが、このアプローチは、任意のサイズの開発は、主な質問がある満足のいくものではないです。

計画と設計面の(1)不足、悪い方へ悪いから一定の変更を伴うソフトウェアの構造、それが不可能な変更を継続すること。

(2)ソフトウェア開発リスクの多大へのリンクのニーズを無視します。

(3)ソフトウェアの保守が非常に困難であり、テストや手続きの保守性を考慮し、何のドキュメントはありません。

2.ウォーターフォールモデル(滝モデル)

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

1970年にはウィンストン・ロイスは、1980年代初めまでは、それが唯一のソフトウェア開発モデルが広く使用されている、有名な「ウォーターフォールモデル」を作りました。

ソフトウェアのライフサイクルのウォーターフォールモデルは、計画、要件分析、ソフトウェア設計、プログラミング、ソフトウェアのテストと操作と6つの基本活動の維持に分割され、上から下に彼らのために提供され、一定の秩序の相互の収束、水が落ちるように、徐々に落ちます。

直線的に厳密に従ってソフトウェア開発活動のウォーターフォールモデルでは、活動上の現在アクティブな作業の結果を受け入れるために、必要なコンテンツの実装が完了します。確認した場合、作業活動の現在の結果は、検証されるべき次のアクティビティへの入力、そうでなければ改変下で継続活動として、結果を必要とします。

ウォーターフォールモデルは、文書の役割を強調し、各ステージは、慎重に検証する必要がある必要があります。しかし、この線形プロセスモデルは、もはや現代のソフトウェア開発モデルに適しており、ほとんどの業界があまりにも理想主義的な放棄されなかったが、主な質問は次のとおりです。

分裂の様々な段階(1)完全に固定され、大幅に作業負荷を増加させたステージ間ドキュメントの大量。

(2)開発モデルは、このように開発のリスクを増大させる、結果のみを見るために開発プロセス全体が終了するまで、ユーザが線形であるからです。

(3)早期のエラーは、開発とテストの段階で後半は、その後、深刻な結果を見つけることができるようになるまで待つ必要があります。

3.ラピッドプロトタイピングモデル(迅速なプロトタイプモデル)

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

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


おすすめ

転載: blog.51cto.com/14260196/2437489