
この記事が気に入ったら
いいねしよう!
システム開発の代表的な手法の1つが「ウォーターフォール型システム開発」です。最近ではDevOpsが注目されていますが、従来、システム開発プロジェクトといえばウォーターフール型で進めていくのが一般的でした。
そのため最近では「ウォーターフォール型システム開発はもはや不要だ」「ウォーターフォール型システム開発は古すぎる」という声もあります。果たして本当にそうなのでしょうか?今回はウォーターフォール型の必要性について考えていきます。
ウォーターフォール型とはすべての開発工程が一連の流れで繋がっているものを指します。つまり滝(ウォーターフォール)のように、上流工程から下流工程へと連続的に開発工程が流れていくため、システム開発を1つの大きなプロジェクトと捉えて開発を進めていきます。プロジェクト全体としてのスケジュールも初期段階で固定し、納品日も決められます。そこに向けて1つ1つの開発工程を進めていくのがウォーターフォール型です。
それでは簡単に利点・欠点についてまとめてみます。
ウォーターフォール型のメリットは開発工程ごとに明確な成果物があることです。成果物の品質が保証できた段階で次のプロセスに移行するため、進捗管理が行いやすかったり、開発と同時にシステムの信頼性を向上できるという効果があります。そのためウォーターフォール型は確実性の高いシステム開発プロジェクトに向いている開発手法です。
その反対として、それぞれの工程で発生した問題への対処が難しいというデメリットがあります。1つ1つの開発工程が連鎖的に繋がっているため、ある開発工程で問題が起きるとかなりの手戻りが発生することもありますし、ちょっとしてシステム仕様変更がプロジェクト全体に影響を与えることもあります。そのためウォーターフォール型は、原則として絶対に後戻りが許されない開発手法とも言えます。
システム開発手法は当然ウォーターフォール型だけではなく、いろいろな手法があります。IT技術の発展や顧客ニーズの多様化などたくさんの要因によって、今ではウォーターフォール型を推進するシステム開発会社は徐々に減っています。各システム開発手法について確認していきましょう。
アジャイル型は「イテレーション」という短い開発期間をいくつも設定し、その中で優先順位の高い要件から開発を進めていくという手法です。ウォーターフォール型が1~100までの開発工程を1つ1つ進めていくものだとしたら、アジャイル型は1~10の工程を10個作ってプロジェクトを推進するような開発手法です。
アジャイル型のメリットは小単位の開発期間でプロジェクトを推進することで、プロジェクト途中で要件変更や何らかのトラブルが発生してもすぐに対処できるという点です。加えてクライアントの意向を最大限取り入れることができるので、短い開発期間で完成度のより高いシステムを開発できます。
ただしウォーターフォール型に比べてプロジェクトコントロールが難しいので、アジャイル型の知識・経験・技術を持ったシステムエンジニアの存在が欠かせません。
スクラム型はアジャイル型の一種なので、短い開発期間を設けてシステム開発プロジェクトを推進するという点は変わりません。ちなみにスクラム型の場合はその単位をイテレーションではなく「スプリント」といいます。
基本的には4週間以内で開発期間を設定し、その中で開発者同士の情報共有とレビューを頻繁に繰り返すことで、短期間で品質の高いシステム開発が行えます。ちなみにスクラムとはラグビー用語で、両陣が8名ずつ方を組んで1つの集団を作り、ぶつかり合う際のフォーメーションを指しています。
スクラム型は開発者同士のコミュニケーションと信頼性がとても重要な開発手法なので、開発メンバーが入れ替われ立ち代わり変化するような環境には不向きです。
DevOps型は開発チーム(Development)と運用チーム(Operation)が互いに協力をしてシステム開発プロジェクトを推進する手法です。開発チームと運用チームが対立関係にあるシステム開発会社は多いですが、両チームの最終的な目的は「システムを通じてユーザーの課題を解決したり利便性を向上するということで一致しているはずです。
DevOps型ではシステム開発プロジェクトの中でも継続的に機能をリリースするようなサービス提供に向いているもので、以下のような組織文化を作ることが大切だとされています。
関連記事:DevOpsとは?その基本とアジャイルとの違いを解説
ここまでの説明で、ウォーターフォール型は古い手法というイメージで捉えたかたも多いのではないでしょうか?実際に一部のコミュニティではウォーターフォール型の不要論が飛び交っていますし、ウォーターフォール型にはメリットが無いとしている開発者もいます。しかし本当にそうなのでしょうか?ウォーターフォール型の必要性を知るために、ここで改めてメリットとデメリットを整理しましょう。
以上のメリットとデメリットから考えるに、ウォーターフォール型は大規模なシステム開発プロジェクトかつ、確実性が強く問われるプロジェクトに向いていると言えます。そのためウォーターフォール型が不要というわけではありません。大切なのはウォーターフォール型のメリットを最大にしながら、デメリットを如何に打ち消していくかということになるのでしょう。
この記事が気に入ったら
いいねしよう!