ソフトウェア開発方法論(SDM)は、
ソフトウェア開発を円滑に進めるためのルール、ガイドライン、手法をまとめたものです。これは
ソフトウェア工学の一分野であり、
システム開発方法論とも呼ばれます。
ソフトウェアや
情報システムは、特定の目的を達成するために開発されますが、開発プロセスは多様な
構造、制約、原則を含みます。SDMは、これらの開発スタイルを整理し、共通ルールや特定ルールの研究を通して、より効果的な開発を目指します。
SDMの歴史
SDMのフレームワークは1960年代に誕生しました。最も初期の定式化された方法論フレームワークは、
システム開発ライフサイクル(SDLC)です。SLDCは、アイデアの創出から
システムの実装まで、開発工程を段階的に進める考え方を基盤としています。1960年代、SDMは主に大企業の基幹業務
システム開発に用いられ、大規模な
データ処理や数値処理が中心でした。
SDMフレームワーク
SDMは、開発工程を
構造化し、計画、制御するためのフレームワークです。開発チームが作成する成果物の事前定義も含まれます。様々なフレームワークが考案されており、それぞれに長所と短所があります。すべてのプロジェクトに最適なフレームワークはなく、技術的、組織的な側面を考慮して選択する必要があります。これらのフレームワークは、公式文書で定義され、組織によって発展、サポートされています。
代表的なフレームワークには、以下のものがあります。
ラショナル統一プロセス(RUP): IBMが1998年に開発。
アジャイル統一プロセス(AUP): スコット・アンブラーが2005年に構築。
個別のSDM
SDMフレームワークを特定の組織やプロジェクトに適用する際には、具体的な開発方法論が用いられます。年代順に見ていきましょう。
1970年代
構造化
プログラミング(1969年~)
Cap Gemini SDM(1974年、PANDATAで開発)
1980年代
SSADM(1980年~)
情報要求分析/ソフト
システム方法論
1990年代
オブジェクト指向プログラミング(1990年代中期に主流化)
RAD(1991年~)
DSDM(1994年~)
スクラム(1995年~)
チーム・
ソフトウェア・プロセス(1998年~)
エクストリーム・プログラミング(1999年~)
具体的な開発手法
個別のSDMは、特定のフレームワークを
ソフトウェア開発・保守に適用する際の基礎となります。主要な手法を以下に解説します。
ウォーターフォール: 計画から実装までを直線的に進める手法。
プロトタイピング: プロトタイプを作成し、反復的に修正する手法。
インクリメンタル: 直線的な要素と反復的な要素を組み合わせた手法。
スパイラル: 設計とプロトタイピングを繰り返す手法。
RAD: プロトタイプを反復的に開発・構築する手法。
エクストリームプログラミング
ウォーターフォール
ウォーターフォールモデルは、
要求分析から保守までを順に進める開発手法です。各工程が明確で管理しやすい反面、変更への柔軟性に欠けるという弱点があります。大規模プロジェクトで採用されていましたが、現在ではより柔軟な手法が好まれる傾向にあります。
プロトタイピング
プロトタイピングは、開発初期段階で
プロトタイプを作成し、ユーザーのフィードバックを得ながら改善していく手法です。早期にユーザーのニーズを把握でき、開発中のリスクを軽減できるメリットがあります。
プロトタイプは最終的に破棄されることもあれば、そのまま製品開発に利用されることもあります。
反復型
反復型開発は、プロジェクトを小さく分割し、ウォーターフォールモデルを繰り返すことで、リスクを低減する手法です。全体の要求
仕様を最初に定義し、各反復で
システムの一部を完成させていきます。
スパイラル
スパイラルモデルは、
トップダウン設計とボトムアップ設計の利点を組み合わせた手法です。設計とプロトタイピングを繰り返し、リスクを最小化しつつ開発を進めます。各サイクルで目標、評価、開発、計画の4つの段階を経る点が特徴です。
RAD(ラピッドアプリケーション開発)
RADは、高品質な
システムを迅速かつ低コストで開発することを目指す手法です。プロトタイピングを反復的に行い、ユーザーの積極的な参加と高度な開発ツールを活用します。ビジネスニーズを重視し、技術的な洗練度は重視しない点が特徴です。
その他の方法論
上記以外にも、さまざまな方法論が存在します。
オブジェクト指向開発: グラディ・ブーチが提唱した
オブジェクト指向設計。
トップダウンプログラミング: IBMのハーラン・ミルズが
構造化
プログラミングを発展させたもの。
Unified Process(UP): 統一
モデリング言語(UML)に基づく
反復型開発方法論。
アジャイルソフトウェア開発: 自律的なチーム間の協力によって要求
仕様を発展させていく手法。
関連する話題
ビューモデル: システムと環境のビューポイントを提供するフレームワーク。
ビジネスプロセスとデータモデリング: 情報のグラフィカル表現による
ビジネスプロセスの可視化。
CASE: ソフトウェア開発工程で自動化ツールを利用する手法。
統合開発環境(IDE): プログラマ向けの包括的な開発環境。
モデリング言語: システム構造を表現する
人工言語。
プログラミングパラダイム: プログラミングの根本的なスタイル。
ソフトウェアフレームワーク: 再利用可能な設計の集合体。
まとめ
ソフトウェア開発方法論は、
ソフトウェア開発を成功に導くための重要な要素です。適切な方法論を選択し、効率的な開発プロセスを構築することで、高品質な
ソフトウェアを期日内に完成させることが可能になります。技術の進歩とともに、新たな開発方法論も登場しています。常に最新の
情報を把握し、最適な手法を適用することが重要です。