システム開発の謎が全てわかるシリーズ②〜開発手法編〜
そもそもシステム開発とは何なのか
システム開発は企業が抱える課題を解決するための仕組みを作ることで、 プログラムを作成したりすることだけがシステム開発ではありません。ビジネスを構築したい、業務の効率化をしたいなど開発する内容は様々です。
前半は手法の話、後半は手法と開発目的のマッピングを記載したいと思います。
開発手法
システム開発手法には大きく4つあります。が、個人的には2つ知っていれば十分だと思います。ウォーターフォール開発と、アジャイル開発です。(他のサイトなどではスパイラルモデル、プロトタイプモデルってのがあったりしますが、アジャイルのスクラムやリーンとほぼ同義だと思っています)
では2つの手法について完全な個人の主観も交えながらメリデメを書いていきます。
ウォーターフォール開発
ウォーターフォールはいわゆる「システム開発と言えばこれ」と想像しやすい方式で、作りたいものを相談して、動くものを納品してもらい、対価を支払います。
契約はほぼ一括請負型となります。納品後は一定期間(通常1年)は不具合対応を瑕疵として対応依頼できます。
メリット
最初に予算を立てやすい
スケジュールも立てやすい
最初に完成のイメージが湧きやすい(気がする)
デメリット
仕様変更しづらい
要件定義、設計などフェーズが終わってから仕様変更をしようとすれば全て別費用となります。上流フェーズに関わる変更であるほど変更コストは跳ね上がります。
強引な仕様変更はプロジェクト全体のスケジュール遅延を発生させます。仕様変更とスケジュールの見直しは基本的にセットで考えるべきです。
ウォーターフォールと仕様変更
ウォーターフォールは最初に決めたものを作ることが目的であり、
途中で作るものを変えたり、お客さんの要望を聞いてフレキシブルに製作したりすることはできません。それを勘違いして「もっと要望を聞いてほしい」や「うちの社員とワンチームでやってほしい」と言われても不可能です。それでもまかり通っているのはどこかで誰かが疲弊しているでしょう。
アジャイル開発
アジャイルは小さい単位で計画、設計、実装、テストを繰り返していく開発手法です。優先度を決めて重要な機能を優先して制作を行っていき全体を構築していく流れになります。
契約はほぼ準委任契約となります。(一部派遣契約もあるかもしれません。)準委任契約は業務遂行することを契約するものなので瑕疵は発生しません。また指揮命令権は所属の会社となります。直接当人への指示は出せません。
メリット
仕様変更に強い
世の中のニーズにプロダクトを合わせやすい
開発スピードが速い
実際にはプロトタイプの制作までの期間が短く小さく始められる、といったものです。開発スピード自体が上がるわけではありません。
デメリット
予算見通しが立てづらい
随時改善していくから当然といえば当然。
半年頑張ってダメだったら諦めるとか、そういう割り切りも必要かも
スケジュールが立てづらい
随時改善していくから当然といえば当然。
マイルストーンなどを置いてプロダクトを管理する体制を取るべき
開発手法と目的
さて、ここからが本題です。なぜこんな開発手法があるのかそれを説明します。システム開発は大きく2種類の作り方があると思っています。
トップダウンで作るものが完全に決まっている
市場の動向を見ながら作っていきたい
ウォーターフォールで作るべきもの
作るものが決まっている場合は断然ウォーターフォールで作っていくべきです。これは納品が義務付けられているので、契約上は対価に対して欲しいものがほぼ確実に手に入ります。(もちろん、「本当に」手に入るかどうかはプロジェクトの成否に関わります)
ウォーターフォールは「請負」という契約で行うのが一般的ですので、納品物揃った段階でお金を支払うものになります。ただし仕様が曖昧だった部分は全て曖昧なまま納品されるので要件定義は必ず確実に行いましょう。要件定義フェーズだけは準委任契約するのがおすすめです。
アジャイルで作るべきもの
市場の動向を見ながら、徐々に大きくしていきながら作っていく場合はアジャイルが適切です。MVP(Minimum Viable Product)と呼ばれる、目的を達成できる最低限の状態の製品やサービスをユーザーに提供し、得られたフィードバックを参考に新機能の追加や改善を繰り返す手法を取ることで、市場動向を見ながら改善を重ねてプロダクトを成長させる事が出来ます。
まとめ
プロダクトを小さく作って成長させたいのに、ウォーターフォールで制作を提案されたり、逆に短期間で成果物が欲しいのにアジャイルを提案されたりすると、前提知識がない場合不幸な結果を生むことが少なくないと思います。
世間ではウォーターフォールをけちょんけちょんに言ってるような記事もありますが、適材適所で選択すべきだと思います。