開発手法・メリットデメリット

 

ウォータフォール 

 特徴

ウォータフォールは言葉通り水が落ちることを表し、以下の工程を(本来は)手戻りなく順次行っていく開発手法を指します。

ウォーターフォール開発モデルは昔から利用されている開発手法でありSIerではほぼ採用されています。

また、これら開発手法は大規模開発に向いているとされており官公庁・金融など基幹システム対応などで採用されています。

 

メリット

  • 手法として確立されている。

→昔から利用されている実績のある開発手法であるため、各工程の進め方・手順など以前の手法を使いまわしていくことができます。※いい悪いは別として

  • ユーザ受け入れがしやすい

SIerなど最初に予算が決まって、実績のやり方であればユーザも予算確保がしやすく各工程への参加理解もあります。

 

デメリット

  • 最初の見積もりからずれやすい

ウォーターフォールはプロジェクトの初期(要件定義前後)に工数を確定させてしまうため後続フェーズで漏れている仕様、誤った仕様、追加仕様などイレギュラーが発生したときなどによって予算・工数が変動しやすいです。

ユーザが追加予算を受け入れてくれれば良いのですが、理解のないユーザの場合最初の予算から変えて頂けないこともあります。

 

  •  手戻りの影響が大きい

要件定義・設計など上流工程で入れ込んでしまった問題が後続の工程で発見することにより手戻りが発生します。この手戻りが後の工程で発生するほど影響が大きく

例えばシステムテストで要件定義の問題が発覚すると

要件定義修正 → 基本設計修正 → 詳細設計修正 → 製造 → 単体テスト → 結合テスト と一連の流れを繰り返してようやくシステムテストに戻れます。

ウォーターフォールモデルでは上流工程の品質向上が課題となります。

 

アジャイル

 アジャイル(Agile)とは直訳で「素早い」「機敏な」「頭の回転が速い」という意味があります。たまにドキュメント作成は後回しにして開発を優先する手法では?と勘違いする人もいますがそれは誤った理解です。

 特徴

アジャイルは1か月~数か月程度の短いスパンで要件定義→設計→製造→テスト→リリースを繰り返し行っていく開発手法です。この繰り返し単位をイテレーションといいます。アジャイル開発はスピード感が求められるWeb・モバイル開発などで効果を発揮します。

 

 メリット

  • 見積もりのずれが小さい

ウォーターフォールモデルでは大規模・長期化しやすく見積もりからのずれが発生しやすいですがアジャイル開発型の場合は小中規模で短期間を対象とするため見積もりからのずれ幅が小さくなりやすいです。

 

  • ユーザ要求が反映しやすい

ウォーターフォールとは異なり、設計は大部分を決めた後はユーザ・デベロッパーなどとコミュニケーションをとりつつフィードバックを行って改善を繰り返します。仕様変更や追加要求などに柔軟に対応しやすくスピード感を持って対応することができます。

 

デメリット

  • ユーザが不慣れ

SIer系の企業ではユーザが不慣れであることがデメリットとして挙げられます。ユーザは年度ごとに予算繰りを行いその中で必要なシステム改修などを依頼します。アジャイルなど小・中規模などの場合予算振り分け、契約が詳細化してしまいなれていないユーザには不向きでSIer企業では採用されにくいです。

しかし最近ではそのデメリットなどを払拭すべく少しずつ取り組み始めているSI企業も多数あります。

  • 管理が難しい

SIとは異なりスケジュールや進捗具合が把握しづらくコントロールが難しくなりやすいです。気づいたら納期を過ぎていた ということも珍しくありません。

 

スクラム

アジャイル開発の種類としてXP, FDD, スクラムなどありますが今回はスクラムについて記載します。

 特徴

 スクラム開発はチームのコミュニケーションを重視しての開発です。

・プロダクトへの要望を優先順位ごとに作成していく

・スプリントという短期間(1~4週間程度)の単位で開発を区切り、その中で計画を立てる。

・プロジェクトの進捗や状況を確認するため毎日メンバー同士で確認しあう。

・作っている機能が正しいかどうか定期的に確認する。

 

メリット

・ 短い期間で成果が挙げられる

スクラムでは優先順位の高い機能から順に開発を推し進めるため、短い期間で高い成果が得られやすいです。アジャイル開発ではベストエフォートを目指して開発することが多いので非常にこのメリットはありがたいです。

 

・チーム内で発生している問題の検知が早い

スクラムでは日々ミーティングを行うので困っていることや分からないことなどを素直に話し合うことが推奨されています。密に連携することで課題などを即座に検知・解消に向かうことができます。

 

・自立的なチーム作り

スクラムでは各開発メンバーが自分で工数見積もりを行い、期限を切るためチーム内に承認を得るために各自の考えが深まりセルフマネジメントを助長します。

また自分のタスクだけでなくチームとして計画を達成するために全員で考えていくことができそれぞれの視野が広がります。

 

デメリット

・習得が困難

ウォーターフォールモデルと異なりアジャイル開発はなじみが薄く習得に時間が掛かります。定着には数スプリントは掛かることを意識する必要があります。

 

 

参考

https://geechs-magazine.com/tag/tech/20160212