2017.07.17

【DevOps 用語集】システム開発手法【2020年3月24日更新】

DevOps Hub編集部
このエントリーをはてなブックマークに追加

システム開発手法について

今回は数多くあるシステム開発手法の中から、

・ウォーターフォール型
・アジャイル型
・プロトタイプ型
・スパイラル型

を紹介していきます。

ウォーターフォール型

ウォーターフォール型とはシステムの開発を「要件定義」「設計」「実装」「テスト」などの工程に分けて順番に各工程をすすめていく方法のことです。
ガントチャート等を利用して、工程を一度で終わらせるように計画を立てて進捗管理をしていきます。

ウォーターフォール.png

メリット

・これまでのシステム開発のデフォルトのような手法なので、適用事例も多く存在する。
・要件定義の段階でユーザーの要求が明確になっているので全体的な計画を立てやすい。
・各工程ごとの成果を文書化して承認されたときに次工程に進むため、状況が明確化され進捗管理も容易になる。

デメリット

・開発の最初の段階で仕様などを決定してから作業を行うのがウォーターフォール型の特徴のため、途中で仕様の変更があった際に最初に決めたことを変更することが難しい。
・前工程には戻らないという想定で進めていくため、手戻りが必要になった際には納期の遅れや予算オーバーにつながる。

アジャイル型

アジャイル開発は最初から厳密な仕様は決めずに、おおよその仕様だけで細かい反復(イテレーション)開発を行っていく方法です。
小さい単位で「設計」「実装」「テスト」を行い、その小さい単位ごとにリリースします。小さい単位でサービスを稼働させておいて、短い期間でリリースを繰り返しシステムの機能を追加・改良していく手法になります。
DevOpsという観点では、アジャイル開発を行っている企業が多く見受けられます。手戻りの少ない方法で開発の効率をあげようと考えていることが多いです。

アジャイル.png

メリット

・小さい単位での設計→実装→テストを繰り返して組み上げていくため、不具合が生じた際にも手戻りの工数を最小限に抑えることができる。
・仕様の変更や追加に対して柔軟に対応することが可能になる。

デメリット

・小さい単位での作業を繰り返すため、全体のスケジュールや進捗の管理がしにくい。
・変化に柔軟に対応するあまり、ユーザからの要求が多くなり作業が長引いてしまう恐れがある。

リーン開発について

アジャイル開発の中の手法の一つであるリーン開発について触れていきます。
リーン開発とは「トヨタ生産方式」をシステム開発工程に応用させた、無駄を取り除くことを目的とした開発手法です。
仮説を立てる→製品を作る→ユーザーに利用してもらい検証、という流れを繰り返します。
・リーン開発→「顧客開発」...顧客や市場に目を向けて、計測・学習を繰り返し、どのくらい売れたかを重要視

トヨタ生産方式トヨタ自動車株式会社HPより引用)

プロトタイプ型

開発の早い段階で試作品を作成して、その試作品をユーザー側で確認・評価を行い、システムの仕様を確定させていくという開発方法です。

プロトタイプ.png

メリット

・試作品を先に作るので、早い段階で完成品のイメージができる。
・試作品を検証して作り直していくため、大きな修正がなくスムーズに開発を行いやすい。

デメリット

・大規模なシステムの開発だと関わる人数も多いため、関係者を全員集めて何度も試作品の検証を行うのは作業効率が悪くなる。
・依頼者側の要望が細かくなり、プロジェクトの収束ができなくなってしまうケースがある。

スパイラル型

スパイラル型は「設計」「実装」「テスト」の一通りの工程を繰り返し行うことでシステムの質を高めていくという手法です。
システムを複数のサブシステムに分割して、そのサブシステムごとに順番に開発を進めていきます。
各サブシステムが終わるごとにユーザーに確認してもらい、全体が完成したらリリースを行います。

スパイラル.png

メリット

・アジャイル同様、小さい単位でスケジュールを組んでいくため、変更が容易にできる。
・試作品をもとにユーザーからフィードバックをもらうことができるので不具合にいち早く気づくことができる。

デメリット

・フィードバックのたびに課題が見つかると、何度もシステム開発を行わなければならず、開発終了までに時間を要してしまう。
・当初の想定よりもシステムが大きくなってしまい、予算オーバーになってしまう可能性もある。

-------------------------------------------------------------------------------------

様々な開発方法がありますが、好みで開発手法を選択してはいけません。
システム開発での失敗のリスクを減らすためにも、まずはシステムの特性をよく理解し、そのシステムに適した開発手法を選択することが重要となります。

関連リンク

ZDNet Japan デジタルトランスフォーメーションセミナー「ポスト2020のIT再考 ビジネスを勝ち抜く"アジャイルエンタープライズ"の世界」レポート
アジャイル開発におけるGitLabの使い方

この記事の著者:DevOps Hub編集部

DevOps Hub編集部は、DevOpsに関するコラム、インタビューなどさまざまな記事をお届けします。


DevOps Hubのアカウントをフォローして
更新情報を受け取る

  • Like on Feedly
    follow us in feedly

関連記事

このエントリーをはてなブックマークに追加

お問い合わせ

DevOpsに関することなら
お気軽にご相談ください。

Facebook、TwitterでDevOpsに関する
情報配信を行っています。