こんにちは。たかです。
今回はエンジニアに必須の知識である開発モデルについての記事になります。
自分の参画するプロジェクトの開発モデルがどういうものかを把握しておくことは重要なので、まだ曖昧だという方は一読しておくことをお勧めします。
1. ウォーターフォールモデル
最もメジャーな開発モデルがウォーターフォールモデルになります。
上図のようなVモデルでよく説明がなされる開発手法です。
要件定義→設計→開発→テストという工程が一方通行となっていることからウォーターフォール(滝)と呼ばれています。
上図の左上から右に向かって開発工程が進んでいき、緑の矢印で対になっている部分がもう一方の工程のレビューを行う意味を持っています。
要件定義通り動いているかの検証のため、ユーザの実際の想定動作に沿ったテストを行うことで要件漏れに気づくことができたり(ただしこのような事態になった場合大抵手遅れです…)、詳細設計通りプログラムが動くかどうかをプログラムの分岐ごとに単体テストを行って実際に意図したプログラムの動作結果になっているかをみたりします。
・メリット
各フェーズごとに実施する内容が決まっているため、プロジェクトの全体計画を立てて進捗を把握することが比較的容易
適材適所で人を割り当てやすく、忙しさのピークも見極めやすいので人の手配がスムーズに行える
最もメジャーな開発手法であるためノウハウも世の中にあふれている
製品の品質担保ができる
・デメリット
途中での仕様変更に対する可用性が低い
想定外の事態に陥った時に受け身が取りづらい
リリースまでに時間がかかる(最低半年はかかる、大規模なものであれば2年以上かかるものもある)
コストの割に効果が薄かった場合の損失が大きい(スモールスタートできない)
2. アジャイルモデル
近年ウォーターフォールに並んでメジャーな開発手法となっているのがアジャイルモデルです。
スマホアプリなどのエンドユーザにより近いアプリが世の中に出回っている中で、ウォーターフォールだと開発期間が長くなりすぎてユーザニーズに応えられなかったり、システムを世に出したはいいもののユーザの想定動作が異なっているという事態に対処するために生まれた開発手法です。
上図のように小さな単位で計画⇨設計⇨開発⇨テストの工程を繰り返す開発手法で、一つ一つの開発が終わったら次の計画を見直すことで次の計画を柔軟に変更することができます。
アプリを世にリリースするまでの期間が短くなることにより、より早く顧客からのレビューを受けることができたり、顧客のニーズのある部分に対して柔軟にアップデートを行うことができたりします。
・メリット
仕様変更に対する可用性が高い
リリースまでの期間が短く、顧客のレビューを反映させやすい
コストを抑えてスモールスタートさせることができる
プロダクトの更新頻度が高くなるので競合他社に対する競争力が高まる
・デメリット
プロジェクトの全体計画を立てづらく、人材が不足しがちになる
高いスキルを持った人でないとこなせない(全工程を同じメンバでやる必要があるので)
新しい開発手法(2000年代以後にできた手法)かつ日本では事例が少ないのでノウハウがまだ未成熟
製品の品質担保が難しい
まとめ
今回は主要な開発モデルについて解説しました。
筆者はこの2つのモデルのどちらも参画経験があります。
※今はアジャイルのプロジェクトに参画中
変化の早くなってきている今の時代において、今後アジャイルが増えていくのかなという感覚を抱いています。
上記の通りアジャイルモデルは基本的にウォーターフォールよりも高いスキルが求められるため、エンジニア中で差別化が起こり、できるエンジニアはより高単価になっていくはずです。
読者の皆様と一緒に筆者も日々スキルアップを目指していこうと思います!
また次回の記事をお楽しみに!