反復型および段階的開発

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

反復型および増分型開発は、反復型設計または反復法開発用の増分ビルドモデルの両方の任意の組み合わせです

この用語の使用はソフトウェア開発で始まり、反復型と増分型の2つの用語の長年の組み合わせ[1]が、大規模な開発努力のために広く提案されてきました。たとえば、1985年のDOD-STD-2167 [2] は(セクション4.1.2で)次のように述べています。「ソフトウェア開発中に、ソフトウェア開発サイクルの複数の反復が同時に進行している可能性があります。」「このプロセスは、「進化的買収」または「インクリメンタルビルド」アプローチとして説明できます。」ソフトウェアでは、反復と増分の関係は、ソフトウェア開発プロセス全体によって決定されます。

反復型開発モデル

概要

アジャイルプロジェクト管理における典型的な反復サイクルの簡略化されたバージョン

この方法の背後にある基本的な考え方は、繰り返しのサイクル(反復)と一度に小さな部分(増分)でシステムを開発し、ソフトウェア開発者がシステムの以前のパーツまたはバージョンの開発中に学んだことを利用できるようにすることです。学習は、システムの開発と使用の両方から得られます。プロセスの可能な重要なステップは、ソフトウェア要件のサブセットの単純な実装から始まり、完全なシステムが実装されるまで、進化するバージョンを繰り返し強化します。反復で、設計変更が行われ、新しい機能機能が追加されます。[3]

手順自体は、初期化ステップ、反復ステップ、およびプロジェクト制御リストで構成されています。初期化ステップでは、システムの基本バージョンが作成されます。この最初の実装の目標は、ユーザーが反応できる製品を作成することです。問題の重要な側面のサンプルを提供し、理解して簡単に実装できるほど単純なソリューションを提供する必要があります。反復プロセスをガイドするために、実行する必要のあるすべてのタスクの記録を含むプロジェクト制御リストが作成されます。これには、実装する新機能や既存のソリューションの再設計の領域などの項目が含まれます。コントロールリストは、分析フェーズの結果として絶えず改訂されています。

イテレーションには再設計が含まれ、イテレーションの実装はシンプルでわかりやすく、モジュール式であり、その段階で、またはプロジェクト制御リストに追加されたタスクとして再設計をサポートします。[明確化が必要]設計の詳細のレベルは、反復的なアプローチによって決定されません。軽量の反復プロジェクトでは、コードはシステムのドキュメントの主要なソースを表す場合があります。ただし、重要な反復プロジェクトでは、正式なソフトウェア設計ドキュメントを使用できます。反復の分析は、ユーザーのフィードバックと利用可能なプログラム分析機能に基づいています。構造、モジュール性、使いやすさの分析が含まれます、信頼性、効率、および目標の達成。プロジェクト管理リストは、分析結果に照らして変更されます。

反復型開発。

フェーズ

インクリメンタル開発は、システム機能をインクリメンタル(部分)にスライスします。各増分で、機能のスライスは、要件から展開まで、分野を超えた作業を通じて提供されます統合プロセスは、増分/反復をフェーズ(開始、精緻化、構築、および移行)にグループ化します。

  • Inceptionは、プロジェクトの範囲、要件(機能的および非機能的)、およびリスクを高レベルで識別しますが、作業を見積もることができるほど詳細に識別します。
  • エラボレーションは、最大のリスクを軽減し、非機能要件を満たす実用的なアーキテクチャを提供します。
  • 構築は、機能要件の分析、設計、実装、およびテストから生成された本番環境に対応したコードでアーキテクチャを段階的に埋めます。
  • 移行により、システムが実稼働環境に移行します。

各フェーズは1つ以上の反復に分割できます。これらの反復は通常、機能ボックスではなくタイムボックス化されています。アーキテクトとアナリストは、開発者とテスターよりも1回先に作業を行い、作業成果物のバックログをいっぱいに保ちます。

使用法/履歴

初期の使用例の多くは、CraigLarmanVictorBasiliの記事「反復型開発:簡単な歴史」[4]に記載されており、最も初期のものの1つはNASAの1960年代のプロジェクトマーキュリーです。

これらのMercuryエンジニアの一部は、後にIBM内に新しい部門を設立しました。そこでは、「IIDの主要な成功のもう1つの初期の印象的な例は、NASAのスペースシャトルソフトウェアの中心であり、1977年から構築された主要なアビオニクスソフトウェアシステムでした。チームは、31か月にわたって17回の反復でIIDを適用し、反復ごとに平均して約8週間でした。ウォーターフォールのライフサイクルを回避する動機は、ソフトウェア開発プロセス中にシャトルプログラムの要件が変更されたことです。」[4]

米国国防総省などの一部の組織は、MIL-STD-498「明らかに進化的買収とIIDを奨励する」から始まる反復的な方法論を好みます。

2000年にリリースされたDoD命令5000.2は、IIDを明確に優先すると述べています。

フル機能を実現するには、進化的アプローチとシングルステップ[ウォーターフォール]の2つのアプローチがあります。進化論的アプローチが好ましい。…[この]アプローチでは、ユーザーに提供される最終的な機能は2つ以上のブロックに分割され、機能の増分が増加します...ソフトウェア開発は、継続的に拡張するソフトウェアバージョンが初期の開発。段階的に行うこともできます。

DoDI 5000.02の最近の改訂では、「スパイラル開発」について言及していませんが、ソフトウェアを多用する開発/調達プログラムのベースラインとして一般的なアプローチを提唱しています。[5]さらに、米国国際開発庁(USAID)は、プログラミングサイクルに反復的かつ段階的な開発アプローチを採用して、国際開発プロジェクトを設計、監視、評価、学習、および適応させ、組み込みに焦点を当てたプロジェクト管理アプローチを採用しています。プログラミングを反復および適応させるためのコラボレーション、学習、および適応戦略。[6]

ウォーターフォール開発との対比

ソフトウェア開発プロジェクトの失敗の主な原因はモデルの選択であるため、細心の注意を払って行う必要があります。[漠然とした] [7]

たとえば、ウォーターフォール開発パラダイムは、各分野のプロジェクト全体の作業成果物を1つのステップで完了してから、次のステップで次の分野に進みます。ビジネス価値は、プロジェクトの最後でのみ一度に提供されますが、反復的なアプローチでは、バックトラック[必要な説明]が可能です。2つのアプローチを比較すると、いくつかのパターンが現れ始めています。[要出典]

  • ユーザーの関与:ウォーターフォールモデルでは、ユーザーはモデルの2つの段階、つまり要件と受け入れテスト、および場合によってはユーザー教育資料の作成に関与します。一方、インクリメンタルモデルでは、クライアントはすべての段階に関与します。
  • 変動性:ソフトウェアは、ユーザーの受け入れテストのために、ライフサイクルのビルド段階が完了した後にのみユーザーに配信されます。一方、すべての増分はユーザーに配信され、ユーザーの承認後、開発者は次のモジュールに進むことができます。
  • 人材:インクリメンタルモデルでは、ウォーターフォールモデルと比較して必要なスタッフが少なくなる可能性があります。
  • 時間制限:運用製品は数か月後に配信されますが、インクリメンタルモデルでは、製品は数週間以内にユーザーに提供されます。
  • プロジェクトサイズ:ウォーターフォールモデルは小規模プロジェクトには適していませんが、インクリメンタルモデルは小規模および大規模プロジェクトに適しています。

実装ガイドライン

ソフトウェアの実装と分析を推進するガイドラインは次のとおりです。[要出典]

  • 変更の設計、コーディング、およびテストが困難な場合は、再設計または再コーディングの必要性を示す必要があります。
  • 変更は、分離された見つけやすいモジュールに簡単に収まる必要があります。そうでない場合は、再設計が必要になる可能性があります。
  • テーブルの変更は特に簡単に行う必要があります。テーブルの変更が迅速かつ簡単に行われない場合は、再設計が必要です。
  • 反復が進むにつれて、変更が容易になるはずです。そうでない場合は、設計上の欠陥やパッチの急増などの基本的な問題があります。
  • パッチは通常、1回または2回の反復でのみ存在できるようにする必要があります。実装段階での再設計を回避するために、パッチが必要になる場合があります。
  • 既存の実装を頻繁に分析して、プロジェクトの目標をどの程度達成できるかを判断する必要があります。
  • プログラム分析機能は、部分的な実装の分析を支援するために利用可能な場合はいつでも使用する必要があります。
  • 現在の実装の欠陥の兆候について、ユーザーの反応を求めて分析する必要があります。

ハードウェアおよび組み込みシステムでの使用

反復型および増分型開発という用語はソフトウェア業界で始まりましたが、多くのハードウェアおよび組み込みソフトウェア の開発努力では、反復型および増分型の手法が使用されています。

この例は、多くの業界で見られる可能性があります。この考え方の転換によって最近大きな影響を受けたセクターの1つは宇宙発射産業であり、宇宙発射を追求する民間企業の形成によってもたらされた、より速くより広範な技術革新によってもたらされた実質的な新しい競争力が働いています。SpaceX [8]RocketLab [9]などのこれらの企業は過去10年間で両方とも商用軌道打ち上げサービスを提供しています。これは10年前に6か国しか行っていなかったことです[10]。前に。技術開発アプローチ、価格設定、およびサービス提供における新しいイノベーション(以前に飛行した(再利用可能な)ブースターステージで宇宙に飛ぶために2016年以来存在していた機能を含む)は、宇宙へのアクセスを取得するための価格をさらに下げます。[11] [8]

SpaceXは、反復的な設計手法を宇宙産業に導入する取り組みについて明確に述べており、宇宙船、ロケット、電子機器、航空電子工学、および運用中の飛行ハードウェア操作でこの技術を使用しています。[12]

業界が変化し始めているため、他の打ち上げ競合他社も政府機関との長期的な開発慣行を変え始めています。たとえば、米国の大手打ち上げサービスプロバイダーで あるユナイテッドローンチアライアンス(ULA)は、2015年に、打ち上げビジネスを再構築する10年にわたるプロジェクトを開始しましたつまり、反復型の段階的アプローチを使用して、部分的に再利用可能なものに到達します。そして、次の10年間ではるかに低コストの打ち上げシステム。[13]

も参照してください

メモ

  1. ^ ラーマン、クレイグ(2003年6月)。「反復型および増分型開発:簡単な歴史」 (PDF)コンピューター36(6):47–56。土井10.1109 /MC.2003.1204375ISSN0018-9162 _ S2CID9240477 _ 私たちは、1957年にロサンゼルスで、Bernie Dimsdale [IBMのServiceBureauCorporation]の指揮の下で段階的な開発を行っていました。彼はジョン・フォン・ノイマンの同僚でした、おそらく彼はそこでそれを学んだか、それを完全に自然であると仮定しました。私が知る限り、ハーブ・ジェイコブス(主に私たち全員が参加しましたが)がモトローラの大規模なシミュレーションを開発したことを覚えています。
  2. ^ Everyspec.comのDOD-STD-2167防衛システムソフトウェア開発(1985年6月4日)
  3. ^ Farcic、Viktor(2014年1月21日)。「ソフトウェア開発モデル:反復型および増分型開発」テクノロジーカンバセーション
  4. ^ a b 反復型および増分型開発:簡単な歴史、CraigLarmanおよびVictorBasili、IEEE Computer、2003年6月
  5. ^ ケンドール、フランク; ギルモア、J。マイケル; ハルヴォルセン、テリー(2017-02-02)。「ディフェンスアクイジションシステムの運用」(PDF)DoD発行取得技術兵站長官の下。pp。12–14。2017年8月9日にオリジナル(PDF)からアーカイブされました2017年8月9日取得
  6. ^ USAID。「ADS第201章プログラムサイクル運用ポリシー」2017年4月19日取得
  7. ^ 「ウォーターフォールとインクリメンタルモデルの違い」2016年5月19日。[永久リンク切れ]
  8. ^ a b Belfiore、Michael(2013年12月9日)。「TheRocketeer」外交政策2018年11月11日取得
  9. ^ 「ロケットラボの以前は秘密だった新しいメガファクトリーの独占的な内部調査!」毎日の宇宙飛行士2018年10月11日2018年11月11日取得
  10. ^ クラーク、スティーブン(2008年9月28日)。「ファルコン1ロケットのついに甘い成功」SpaceflightNow 2018年11月11日取得軌道に到達するのに成功した最初の民間開発の液体燃料ロケット。
  11. ^ バーガー、エリック(2018-06-25)。「アポロ以前のロシアのプロトンロケットは、ついに飛行を停止する。技術的な問題、スペースXの台頭が要因となっている」arsTechica 2018年6月26日取得SpaceXのFalcon9ロケットなどの低コストの代替品の急速な台頭により、特定の年の陽子の打ち上げ数は8個程度から1個か2個に減少しました。
  12. ^ Fernholz、Tim(2014年10月21日)。「イーロンマスクのSpaceXがボーイングを混乱させ、NASAを飛躍させ、真剣な宇宙会社になるために必要なこと」クォーツ2018年11月11日取得しかし、SpaceXは常にそれ自体をテクノロジー企業と考えており、NASAとの衝突は、コンピューター開発者、または問題のあるhealthcare.govの展開に精通している人なら誰でも世代を超えて認識されることがよくあります。SpaceXは反復的な設計プロセスに従い、テストに応じてプロトタイプを継続的に改善しました。従来の製品管理では、完全に実行される堅牢な計画、つまりコスト超過のレシピが必要です。
  13. ^ Gruss、Mike(2015-04-24)。「計画の進化:ULAエグゼクティブはバルカンデザインの選択の背後にあるロジックを綴る」スペースニュース2015年4月25日取得ULAの4月13日の発表では、最初の反復が基本的に新しい第1ステージを備えたアトラス5であるインクリメンタルアプローチを使用して、バルカンと呼ばれるロケットを開発する予定です。

参考文献