ソフトウェア開発方法論

主要なソフトウェア開発モデル

アジャイル型開発


ウォーターフォールモデル(Water-Fall)

ウォーターフォール開発は、開発工程を分析・設計・実装・テスト・運用などの各段階に分け、水が流れ落ちるように一方向へ工程を進めていく開発手法です。
各工程ごとの成果物(要求仕様定義や設計書など)を完成させていき、原則として前工程が完了しないと次工程には進まないようにします。
ウォーターフォール開発は仕様が決まっていて、変更が起きづらいシステムの開発に適しています。


プロトタイプ型開発

プロトタイプ型開発とは、要件定義の段階で試作品(プロトタイプ)を作り、その結果を以降の開発工程に反映させる開発手法です。
この手法は、早期に完成イメージを顧客と共有できるため、ユーザ要求が不明確な場合やユーザーインターフェース(UI)を重視するシステムを開発する場合に適しています。


スパイラルモデル(Spiral Model、スパイラル型開発)

スパイラルモデルとは、機能ごとに開発の小さなサイクルを繰り返し、設計とプロトタイピングを繰り返して開発していく手法です。


その他のソフトウェア開発モデル

段階的モデル(Incremental Model:インクリメンタルモデル)

段階的モデルとは、最初は要求のコア部分のみを開発し、その後に機能を順次追加していき、完成まで繰り返していく開発手法です。
システムを幾つかのサブシステムに分割して,それぞれの開発を並行して進めます。
サブシステムを並列進行で開発する点がスパイラルモデルと異なります。


進化的モデル(Evolutionary Model、進展的モデル、成長モデル)

進化的モデルとは、要求が確定した部分から開発に着手し、要件定義~テストを繰り返しながら機能を追加していく開発手法です。
要求に不明確な部分があるので、開発を繰り返しながら徐々に要求内容を洗練していきます。
概念的には、スパイラルモデルは成長モデルのひとつの形態とみなすことができます。


RAD(Rapid Application Development)

RAD (Rapid Application Development) は、プロトタイプを反復的に開発・構築していく開発手法です。
プロトタイプ型開発とスパイラル型開発を組み合わせ、RADツールを用いて高速にシステムを開発する点が特徴です。


ソフトウェアクリーンルーム(Cleanroom Software Engineering)

ソフトウェアクリーンルームとは、IBMにてハーラン・ミルズらが開発した、検証可能な信頼性を保った開発手法です。
クリーンルーム手法の主眼はバグ除去よりもバグ予測にあります。


ICONIX

ICONIXとは、Doug Rosenberg(ダグ・ローゼンバーグ)氏によって開発された、ユースケース駆動開発のソフトウェア開発方法論です。
2007年に刊行された「ユースケース駆動開発実践ガイド:ダグ・ローゼンバーグ著」でICONIXプロセスが提唱され、ソフトウェア開発のためのUMLモデリング手法として広まりました。
この開発プロセスは、システムに対する要求を元にドメインモデル/ユースケースを検討し、そこからロバストネス分析を実施する点が大きな特徴です。


Unified Process (UP, Unified Software Development Proces)

統一モデリング言語 (UML) に基づく反復型ソフトウェア開発方法論フレームワークです。
UPはガイドラインやベストプラクティス、作業成果物の定義などを提示しており、開発を効率化します。
UPを発展させたプロセスフレームワークは複数ありますが、最も人気が高いのはIBMによるラショナル統一プロセス(Rational Unified Process:RUP)です。


DevOps(デブオープス)

DevOpsとは、開発チームを意味する「Development」と、運用チームを意味する「Operations」を組み合わせた造語です。
対立関係になりやすい開発チームと運用チームが連携し合うことにより、システム開発・運用を高品質かつ効率よく行う開発手法です。
DevOpsは、Flickr(フリッカー)の開発者らが2009年に提唱した開発手法です。


設計アプローチの開発モデル

アジャイル型開発やウォーターフォール型開発などは、開発プロセスの観点で見た開発モデルです。
それに対して、設計アプローチの観点で見た開発モデルが以下となります。


POA(Process Oriented Approach:プロセス中心アプローチ)

プロセス中心アプローチとは、業務プロセスや機能に着目したシステム開発手法です。
機能を 1 つのプロセスと考えて、そのプロセスを段階的に細分化していき、最終的に最小機能であるモジュールに分割していきます。
図法としては、DFD(DFD : Data Flow Diagram)やフローチャート、状態遷移図などを用いてモデリングします。


DOA(Data Oriented Approach:データ中心アプローチ)

データ中心アプローチとは、データを中心に据えた設計を行うシステム開発手法です。
データ全体をモデル化し、データベースを設計し、個々のシステムはデータベースを中心に設計することでデータの整合性や一貫性を保つような業務モデルを作成します
図法としては、E-R 図(E-R : Entity-Relationship Diagram)を用いてモデリングします。


OOA(Object Oriented Approach:オブジェクト指向アプローチ)

属性(データ)と手続き(メソッド)を一体化したクラスを単位として分析・設計を進めるシステム開発手法です。
図法としては、UML(UML : Unified Modeling Language)を用います。


SOA(Service-Oriented Architecture:サービス指向アーキテクチャ)

サービス指向アーキテクチャとは、個々の利用者に提供するサービスを、実現する機能単位の集まりと捉えて、利用者や業務上から要求されるサービスを設計するシステム開発手法です。
個々の利用者は、組合せ自由なブロックのように、必要なサービスを必要な分だけ組み合わせて利用します。
業務処理の変化をシステムの変更に素早く反映できるため、アプリケーション構造改革アプローチとも呼ばれます。