ソフトウェア開発におけるウォーターフォールモデルの長所と短所を理解する

文:Contributor Melonfire(Special to TechRepublic)
翻訳校正:村上雅章・野崎裕子
2008/03/24 08:00

ソフトウェア開発において長きにわたって使われながらも、賛否両論の声が渦巻くウォーターフォールモデルの基本概念を説明したうえで、その長所と短所について考える。

 このモデルには、さまざまな工程に対して異なった名前が付けられた複数のバリエーションが存在している。しかし、一般的には、以下の6つの工程に分割されたものであると考えられている。

  1. 要求分析:これは最初の工程であり、顧客が必要とするものに関する情報を収集し、製品が解決しなければならない問題をできる限り明確な表現で定義するという作業を含んでいるため、全工程のなかでも最も重要な工程であると言える。分析を行うにあたっては、顧客の業務内容およびその制約や、製品が提供しなければならない機能、達成すべきパフォーマンスレベル、互換性を持たせる必要のある外部システムについて理解を深める必要がある。こういった情報を得るために用いることのできる技法として、顧客とのインタビューやユースケース、ソフトウェアが提供すべき機能を書き連ねた「買い物リスト」などがある。分析の結果は一般的に、正式な要求仕様書にまとめられ、次の工程のインプットとして使用される。
  2. 設計:この工程は、「指定された要求を満足させるために、ハードウェアとソフトウェアのアーキテクチャやコンポーネント、モジュール、インタフェース、データなどを定義する」(出典:Wikipedia(英語))という作業から成り立っている。つまりこの工程には、ハードウェアとソフトウェアのアーキテクチャを定義したり、パフォーマンスとセキュリティの因子を規定したり、データストレージのコンテナや制約を設計に組み入れたり、IDEやプログラミング言語を選択したり、例外処理やリソース管理、インタフェースの接続性といった問題に取り組むうえでの戦略を示すといったことが含まれている。また、この工程では、ナビゲーションやアクセス可能性といった問題を含む、ユーザーインタフェース設計にも取り組むことになる。この工程の成果物は、1つ以上の設計仕様書であり、それは次の実装工程において使用される。
  3. 実装:この工程では、前の工程で作成された設計仕様書に従って製品を実際に製造することになる。この工程は通常の場合、プログラマーやインタフェースデザイナー、その他のスペシャリストからなる開発チームによって実行され、その過程ではコンパイラやデバッガ、インタープリタ、メディアエディタといったツールが使用される。この工程の成果物は、システムのアーキテクチャ要求を満足させるために、事前に定義されたコーティング標準に従って開発され、デバッグ、テスト、統合が行われた1つ以上の製品コンポーネントである。多人数のチームを必要とする大規模プロジェクトでは、コードへの変更を追跡したり、問題が発生した場合に過去のスナップショットに遡ることができるよう、バージョン管理システムを利用することが推奨される。
  4. テスト:この工程では、個々のコンポーネントと、統合された全体がともに系統立てて検証され、それらにエラーが存在せず、最初の工程で定義された要求すべてを満たしていることが確認される。また、独立した品質保証チームによって、製品が最初の工程で定義された要求をすべて、あるいは部分的に満たしているかどうかを評価するための「テストケース」が定義される。通常の場合、3種類のテストが行われる。すなわち、個々のコードモジュールに対するユニットテストと、統合された製品に対するシステムテスト、そして顧客自身または顧客の代理によって行われる公式の受け入れテストである。欠陥が発見された場合、それを記録した後、修正するために実装チームにフィードバックされる。また、この工程では、ユーザーマニュアルといった製品ドキュメントが作成され、レビューを経た後、公開される。
  5. 配備:この工程は、製品のテストが完了し、使用に適したものであると確認できた後に開始される。また、この工程には、顧客サイトにおけるシステムや製品のインストールと利用準備が含まれている。配備はインターネットや物理的なメディアを利用して行われる。なお、後日のアップデートを円滑にするために、配備対象には正式なバージョン番号を付与しておくことが一般的となっている。
  6. 保守:この工程は配備が完了した後に開始される。そしてこの工程には、属性の変更やパフォーマンスの向上を目的としたシステムや個々のコンポーネントの修正作業が含まれている。こういった修正は、顧客からの変更要求やシステムの本番運用中に発見された欠陥に対応するために必要となるものである。通常の場合、製品の保守サイクル中に発生するすべての変更は記録され、顧客がアップデートの恩恵を受けられるよう、新たな製品リリース(「メンテナンスリリース」と呼ばれ、更新されたバージョン番号が付与される)が行われる。
記事の感想やご意見をコメントでお寄せください(CNET_IDログインが必要です)
ログイン パスワードを忘れた方  |  新規登録
  • 今日のトップ記事
  • 昨日
  • 2日前
  • 3日前
  • 6日前
  • 7日前
  • 新着記事
  • 人気記事
  • 特集
  • ブログ