ソフトウェア開発モデル
ソフトウェアを開発する際、次の4つの進め方がある。
ウォータフォールモデル
上流工程(要件定義、設計)から下流工程(開発、テスト)へと順に進める。
1つ1つの工程を確実に完了させて進むため、大規模なプロジェクトに適しているよ。
ただし、ウォータフォール開発は前の工程に後戻りしないため、途中で顧客の要求が変わった場合、それに対応することが難しい。
例えば、テストの段階まで進んでいる時に、ある機能を変更してほしいと言われても、多くの作業がやり直しになってしまうよ。
機能1~3の要件定義、機能1~3の設計、機能1~3の開発、機能1~3のテストと進めていくよ。
アジャイル開発
顧客の変更要求に迅速に適応するソフトウェアの開発モデル。
アジャイル(agile)には素早い、機敏なという意味があるよ。
アジャイル開発では、要件定義、設計、開発、テストといった工程を、短い期間で繰り返す。この短い期間のことをイテレーションといい、通常は1週間から1か月だよ。
短い期間で開発を繰り返すことにより、途中で顧客の要求が変わったとしても、柔軟に対応することができる。
機能1の要件定義~テスト、機能2の要件定義~テスト、機能3の要件定義~テストと進めていくよ。
緑の枠で囲われている、例えば「機能1の要件定義~テスト」がイテレーションに当たるよ。
具体的には、次のような方法で行われる。
- XP(Extreme Programming)
これらをチームで実践するよ。
ペアプログラミング エンジニアが2人1組になり、相談やレビューを行いながら共同でプログラミングする。 リファクタリング 外部から見た動作は変えずに、内部から見てわかりやすくなるようコードを改善する。 テスト駆動型開発 テストケースで設定したテストをパスすることを目標にプログラミングする。 - スクラム
共通のゴールに到達するため、チームを組んで仕事の進める方法のこと。
チームごとに役割やタスクを分散しつつ、コミュニケーションを取りながら開発を進める。
また、チームが一定の作業を完了するための、短く区切られた期間をスプリントというよ。
プロトタイピングモデル
本格的な開発に入る前に、試作品(プロトタイプ)を作成するソフトウェアの開発モデル。
作成したプロトタイプをお客さんに渡し、完成イメージなど認識に相違がないかを確認する。
相違がある場合は修正して再確認を依頼、認識に相違がない場合は本格的に開発を進めるよ。
スパイラルモデル
システムの機能を分割し、分割した機能ごとに要件定義、設計、開発、テストを何度も繰り返していく。
アジャイル開発とスパイラルモデルはよく似ているけれど、リリースのタイミングが異なるよ。
機能1の要件定義~テスト、機能2の要件定義~テスト、機能3の要件定義~テストと進めていくよ。
アジャイル開発は機能1の要件定義~テスト後に機能1をリリースする。一方、スパイラルモデルは全ての機能の要件定義~テスト後に全ての機能をリリースする。
ソフトウェア開発モデルに関する用語
ソフトウェア開発モデルに関する次の用語も覚えておこう。
DevOps(Development and Operations)は、開発(Development)と運用(Operations)の担当者が協力してソフトウェアを開発すること。開発担当と運用担当が連携することで、迅速かつスムーズに開発するよ。
RAD(Rapid Application Development)は、スパイラルモデルとプロトタイピングモデルを取り入れたソフトウェア開発モデル。ユーザーを含む少人数のチームで開発を進め、プロトタイプを作成し評価することを繰り返して、完成品に近づけていくよ。