初めに
システム開発には開発手法というものがあるわけですが、皆さんはどんな開発手法をご存じでしょうか?
経験するまでよくわからない部分もあるかと思い、今回、代表的なものを調べてみました。
開発手法の種類と特徴
ウォーターフォール型
その名の通り、開発工程の上流から下流へ、滝が上から下へ落ちていくように一方通行で進む開発手法です。
工程や手順が明確なので確認もしやすいですが、仕様変更や修正等で手戻りがあると、一度上流に戻って開発を進め直す必要があります。
- メリット
-
- 成果物のチェックがしやすい
- 全体的な計画を立てやすい
- デメリット
-
- 前工程の失敗がダイレクトに後工程に影響してしまう
- 変更が生じた際の負担が大きい
- クライアントの意見が取り入れにくい
アジャイル型
プロジェクトを小分けして実装とテストを繰り返す手法です。
従来のシステム開発より開発期間を短縮できる特徴があります。
書いた人のイメージでは、ウォーターフォール型に比べて手戻りが少なくフットワークの軽い手法というイメージです。
- メリット
-
- 開発途中に問題が起きてもすぐにやり直しできる
- 仕様変更や追加機能の要望があっても柔軟に対応できる
- Webアプリ、スマートフォンアプリの開発に適している
- デメリット
-
- 開発の方向性がブレやすい
- スケジュールや進捗管理がコントロールしにくい
仕様変更の対応がスムーズな一方で、当初の仕様や計画とのズレには気を付ける必要があります。
アジャイル型にはその中にも多くの開発手法があります。有名なのがスクラム開発です。
スクラム開発は、その名の通りラグビーのスクラムが由来です。
チームメンバー同士でレビューをし、コミュニケーションを取りながらチーム全員で進めていく開発手法です。
プロトタイプ型
プロトタイプ型は早い段階から簡単な試作機を作り、最初に製品をイメージできるようにして、全体の開発工数を減らす開発手法とのことです。
簡易版とは言え、ユーザーは先に実際に動くものを見せてもらえるので、当初予想していなかった要求をその時点で明確にすることができるそうです。
試作品を確認してもらうスケジュールの調整のことも考えると、大規模のシステムには向いていないようです。
確かに、ある程度の仕様が固まったら線引きをして進んでいくだけにしないと、後が苦しくなりそうです。
- メリット
-
- 初期段階で完成品のイメージができる
- 開発後に大きな修正を防げる
- デメリット
-
- 大規模なシステム開発には向かない
- 開発側の負担が大きくなる
スパイラル型
小さな単位で設計、実装、テスト、プロトタイプ(試作)を繰り返していくことでゴールを目指す開発手法です。
小単位の反復で設計からテストまで行うのはアジャイル型に近いですが、まだ品質が保証されていない段階で試作をユーザーに提供するやり方はプロトタイプ型を踏襲しています。
その両方のメリットを取り入れ、最終的にクオリティの高い製品を作ることを目指すそうです。
こちらの手法も、ユーザーの要望を聞き応えているうちに開発期間が長期化してしまうことや、修正を繰り返していくうちにシステムが肥大化してしまい、要件定義にない仕様が増えてしまうリスクがあるとのことです。
- メリット
-
- 前工程が後工程に影響を与えない
- 仕様変更があっても柔軟に対応できる
- 質の高いシステムを作り上げることが可能
- デメリット
-
- 開発期間の長期化
- 初期の想定よりシステム仕様が肥大化してしまう
終わりに
開発手法について調べてみました。
書いた人はここで述べたウォーターフォール型、アジャイル型は経験がありますが、他は未経験です。
スクラム型は面談時にお話を伺ったことはありますが、チーム内でレビューをし合うことで、知識共有だけでなく、レビューする側の勉強にも良いと感じました。
案件単位で開発手法まで説明があることは多くないと思いますので、面談時の質問事項としてキープしておくのも良いと思います。