ソフトウェアプロセスとライフサイクル
ソフトウェアプロセスとは、顧客のニーズや要望に沿ってシステムやアプリケーションを開発し、提供する一連の工程のことです。
生物と同じように、ソフトウェアには生まれてから死んでいくまでライフサイクルがあります。このソフトウェアのライフサイクルで、各工程でどのように業務を進めていくかに関する取り決めがソフトウェアプロセスになります。
各工程が厳密に定義されているわけではありませんが、標準的には以下の図のように分けられます。

各工程は次のような役割があります。
- 企画
- こんなシステムが欲しいと考えられる段階
- 要件定義
- システムに求める要件を定義する段階
- 設計
- どのような構成で作るかを考える段階
- 開発
- 具体的に作っていく段階
- 運用
- システムを使っていく段階
- 保守
- 新たなニーズにより、様々な改良が行われる段階
- 廃棄
- 最後は必要なくなり廃棄される
ライフサイクルにおける区切りを工程と呼び、それぞれの工程には成果物が存在します。時間が経つほどソフトウェアとしての成熟度が増加していきます。
ソフトウェア開発プロセス
ソフトウェア開発プロセスというと、特に要件定義〜保守までのことを考えることが多いです。さらに詳しく以下のように区分されます。
- 要件定義
- 開発すべきソフトウェアの機能をはっきりさせる
- システム設計
- 要求仕様としてまとめられた内容を具体的にソフトウェアとしてどう実現するかを設計
- 基本設計
- システムの見えるところを設計
- 詳細設計
- システムから見えない部分を設計
- コーディング
- 実際にプログラムを書く
- 単体テスト
- 一つのプログラムの動作が正しく動作することを検証
- 結合テスト
- 複数のプログラムを組み合わせて動作が正しく動作することを検証
- システムテスト
- ソフトウェア全体が仕様書通りに動作しているかを検証
- 運用テスト
- 実際の運用と同じ状態で検証

代表的なソフトウェアプロセス
ソフトウェアの開発はなるべく低コストで、最短時間で高品質なソフトウェアを提供することが求められます。この目標を達成するために、これまで複数のソフトウェアプロセスモデルが提案されています。その代表的なモデルを紹介します。
ウォータフォールモデル
最も古くからある開発モデルです。滝から水が流れ落ちるように工程が上から下へ流れる開発モデルなので、そう呼ばれています。
特徴として以下のようなものがあります。
- 各工程の区切りを明確化する
- 工程が完了しない限り、次の工程に進めない
- 次の工程に進むときに成果物を受け渡す
- 手戻りを最小化する
各工程を分け、次の工程に進むには成果物を生成してからでないと進めません。

V字モデル
V字モデルは、ウォータフォールモデルの派生モデルです。設計とテストを対応させたモデルで、各工程の対応関係を明示したモデルです。
このようにすることで、各工程に対して、実施すべきテスト工程は何かが一目でわかるようになっています。

ウォータフォールモデルとV字モデルの特徴と課題
特徴としては、
- 各工程の区切りが明確
- 工程が完了しないと次の工程に進めない
- 手戻りを最小化する
ということが挙げられます。
実際には、「工程が完了しないと次の工程に進めない」という制約が実際には難しい場合があります。後で決めるや途中での機能追加などができないため柔軟性には欠けることが課題です。
まとめ
本記事では、ソフトウェアプロセスとソフトウェアライフサイクルについて解説しました。また、ソフトウェア開発プロセスについても説明し、その代表的な開発モデルを紹介しました。
コメント