システム開発の手法にはどのようなものがあるかご存知ない方も多いのではないでしょうか。開発手法について知っておくと、開発会社にシステム開発を依頼する際にも役立ちます。本記事ではシステム開発の手法について解説します。
システム開発の代表的な手法
システム開発の代表的な手法は次の2つです。
-
- ウォーターフォール
- アジャイル
この2つ以外が用いられることもありますが、基本的にはこの2つから選択することがほとんどです。そのため、まずはこの2つの手法の特徴を覚えると良いでしょう。
1つ1つの開発手法について詳しく解説していきます。
1.ウォーターフォール
ウォーターフォール開発はシステム開発における各工程を順番にこなしていく、もっとも基本的な開発手法のことです。
システム開発は、要件定義・外部設計・内部設計・開発・テスト、などの工程に分かれます。ウォーターフォールでは1つずつ順番にこなしていき、最後のテストが完了したらリリースします。
「水が流れるように各工程を進めていく」ことから、ウォーターフォールと呼ばれています。前の工程に欠陥があった場合、次の工程には進めないため、1つ1つの工程で問題がないかしっかりチェックし、書類にまとめるなどの対処が必要になります。
2.アジャイル
アジャイル開発はシステム開発の各工程を何度も繰り返していき、システムの完成度を上げていく開発手法のことです。
ウォーターフォール同様に、要件定義・外部設計・内部設計・開発・テストの順番で行いますが、アジャイルではテストまで短いスパンで反復します。
最初のテストが終わったら、一度システムを依頼者に見せます。依頼者は「ここは別の機能にしてほしい」「もっと使いやすくしてほしい」など、システムに対する意見を出します。開発企業はその意見を元に、再度要件定義から行っていくのです。
依頼者の意見も取り入れて何度も開発をやり直す、というのがアジャイル開発の大きな特徴です。アジャイル開発も多くの開発企業で導入されています。
ウォーターフォールのメリット
ウォーターフォールは多くの開発企業で使われている手法です。なぜ使われているかというと、次の2つのメリットがあるためです。
-
- スケジュールを立てやすい
- 予算の確保をしやすい
これらのメリットを享受できることは開発企業にとって大きなことです。1つ1つのメリットについて詳しく解説していきます。
1.スケジュールを立てやすい
ウォーターフォールのメリットはスケジュールを立てやすいことです。ウォーターフォールでは開発を開始する段階で、各工程の工数を可視化できるのです。
各工程を終わらせるのにどの程度の工数が必要なのか、経験のあるエンジニアであれば、おおよその予測を立てることができます。工数を割り振った結果、顧客が提示する納期に間に合わないとわかれば、納期の変更をお願いするなどの対処が可能です。
また、各工程の工数を正確に割り振ることができると、各工程で何人のエンジニアが必要か、どのスキルを持った人材が必要か、なども推測しやすくなり、より詳細な計画を立てることができます。
もしエンジニアが足りない場合、他企業に外注化なども検討することが可能です。各エンジニアに無理なスケジュールで開発を依頼してしまう可能性が低くなるでしょう。
このように、開発スケジュールを立てられることには大きなメリットがあります。
2.予算の確保をしやすい
ウォーターフォールなら開発の予算の確保がしやすいです。開発当初に開発工数も必要なエンジニアの数も見積もることができるため、同時に開発費用も推測できます。
システム開発において予算を確保するというのは重要なことです。予算オーバーすると当然会社の利益を損なってしまいます。
ウォーターフォールのデメリット
アプリやシステムの種類や顧客の注文内容によっては、ウォーターフォールでは相性が悪い場合もあります。ウォーターフォールには次の2つのデメリットがあります。
-
- リリースまでに時間がかかる
- 仕様変更に柔軟に対応しにくい
1つ1つのデメリットについて詳しく解説していきます。
1.リリースまでに時間がかかる
ウォーターフォールの場合リリースまで時間がかかるのがデメリットです。各工程を丁寧に1つずつこなす必要があるため、どうしても時間はかかります。
単に各工程を終わらせるだけなら良いのですが、各工程で書類の作成なども行うと共に作業内容に問題がないかきちんと確認しなくてはいけません。もし前工程に不備があると、その次の工程も間違った方向へ進んでしまうからです。
たとえば、顧客の要望を正しく読み取ることができず間違った要件定義をしてしまい、かつそれがテスト段階で発覚した場合、再度要件定義からやり直さないといけません。そうなると、追加費用がかかってしまいます。
対してアジャイルの場合、リリースまで素早く終わらせることが可能です。
2.仕様変更に柔軟に対応しにくい
ウォーターフォールの場合、仕様変更に対応しにくいのも難点です。
大規模なシステムの場合、リリースまで何年もかかることもあります。その間に顧客の業務内容が変更されてしまい「業務内容の変更に合わせて業務システムの機能を修正したい」と要望が変わるかもしれません。
しかしウォーターフォールでは、最初にシステムの仕様をがっちりと固めそれにそって開発するため、途中で変更するのが困難です。途中で変更する場合、要件定義からやり直す必要があり、納品が大幅に遅れてしまう可能性もあります。
そのため、システムの仕様変更が起こる可能性が高い場合、ウォーターフォールは向いていないことも多くあります。
アジャイルのメリット
続いて、アジャイル開発のメリットについて解説します。アジャイルのメリットは次の2つです。
-
- 柔軟な対応が可能
- 顧客の意見を取り入れやすい
ウォーターフォールでは上手くいかない場合、アジャイルが導入されることが多いです。1つ1つのメリットについて詳しく解説していきます。
1.柔軟な対応が可能
アジャイル開発の最大のメリットは柔軟な対応が可能なことです。各工程を短いスパンで行っているため、顧客から仕様変更を要求された場合も臨機応変に対応できます。
また、システム開発は途中で不具合や問題点が見つかることも多くあります。アジャイル開発ならその場合でも、すぐに軌道修正して事なきを得ることが可能です。
2.顧客の意見を取り入れやすい
アジャイル開発には顧客の意見を取り入れやすいメリットもあります。1つのサイクルが終わる度に顧客からフィードバックを得ることが可能です。
そのため、より顧客の要望に沿ったシステムを作りやすくなり、顧客満足度を上げることにもつながるでしょう。
また、顧客はそのシステムに明るくないこともあり「実際に使ってみないとよくわからないです」と言われることも多いです。
アジャイルなら完成途中のシステムを何度も使いながら確認してもらえるので、完成した後に「思っていたシステムと違う」や「要望した機能がない…」など、顧客の要望と異なるシステムを開発してしまうリスクを最小限に留めることができるのです。
アジャイルのデメリット
続いて、アジャイルのデメリットについて解説します。デメリットは次の2つです。
-
- スケジュール管理が難しい
- エンジニアに対する負担が多い
アジャイル開発を導入する場合、これらのデメリットといかに向き合うかが重要となります。1つ1つのデメリットについて詳しく解説していきます。
1.スケジュール管理が難しい
アジャイル開発はスケジュール管理が難しいのがデメリットです。ウォーターフォールのように、最初の段階でスケジュールをきっちり決めるわけではありません。
顧客が満足するまで何度も各工程を繰り返すため、いつ開発が完了するか見積もりを立てにくく、納期に遅れてしまう可能性も多分にあります。
また、スケジュールを決められないと、予算やエンジニアの確保も難しくなります。開発期間が長引けばそれだけ費用が多くかかってしまいます。
2.エンジニアに対する負担が多い
エンジニアに対する負担が大きいのもアジャイル開発のデメリットです。
一度記述した設計書やソースコードを何度も修正しなくてはいけないため、ストレスが溜まる方もいるかもしれません。また、修正箇所が増えると労働時間が長くなる可能性もあります。
そのため、アジャイル開発を導入する場合、ある程度エンジニアの人数とスキルが必要です。顧客にとってはよい開発手法である一方、エンジニアにとっては必ずしも喜ばしい手法というわけではない、という点は注意する必要があるでしょう。
その他のシステム開発の手法
ここまでウォーターフォールとアジャイル開発について解説しましたが、それ以外にも開発手法はいくつか存在します。特に次の3つは導入されることが多いです。
-
- プロトタイプ
- スパイラル
- DevOps
これら3つはウォーターフォールやアジャイルの弱点を補っていることも多いです。1つ1つの開発手法について詳しく解説していきます。
1.プロトタイプ
プロトタイプは基本的にはウォーターフォールと同じ手法ですが、開発の早い段階で試作品を顧客に確認してもらいます。顧客に試作品を実際に使ってもらい、「もっとこうして欲しい」などの意見を聞いたうえで完成品を作り上げることが特徴です。
ウォーターフォールの弱点をカバーした開発手法といえるでしょう。特に、どんなシステムが欲しいのか、顧客にイメージしてもらうのが難しいシステムを開発する場合に有効です。
2.スパイラル
スパイラルはアジャイル同様、各工程を何度も反復する開発手法です。しかし、テストまで一通り完了してから顧客に確認してもらうのではなく、まだ開発途中の段階で確認してもらいます。
たとえば、ECサイト開発の場合、ECサイトの会員登録機能だけを分割して、顧客からのフィードバックを得ます。各パーツごとに確認してもらう点が特徴です。
スパイラルでは1つずつ確認してもらうため、その分開発コストがかかってしまいます。しかし、より顧客の意見をシステムに反映することができ、顧客満足度が高まるのです。
3.DevOps(デブオプス)
DevOpsとはDevelopment(開発チーム)とOperations(運用チーム)を合わせた言葉です。その名の通り、開発チームと運用チームが連携する開発手法を指します。
DevOpsはアジャイル開発と組み合わせて使うことが多いです。
アジャイル開発の場合、新しい機能をどんどん追加していきますが、その結果システム運用のことがおろそかになってしまうことはあります。開発と運用のチームが連携し、双方の意見を取り入れることで、運用を見据えた理想的なシステムを開発しやすくなるのです。
最後に
この記事で説明してきた内容をまとめると以下のとおりです。
-
- システム開発の代表的な手法:ウォーターフォール/アジャイル
- ウォーターフォームのメリット:スケジュールを立てやすい/予算の確保をしやすい
- ウォーターフォールのデメリット:リリースまでに時間がかかる/仕様変更に柔軟に対応しにくい
- アジャイルのメリット:柔軟な対応が可能/顧客の意見を取り入れやすい
- アジャイルのデメリット:スケジュール管理が難しい/エンジニアに対する負担が多い
- その他のシステム開発の手法:プロトタイプ/スパイラル/DevOps
システム開発を開発会社に依頼する際は、開発手法にはどのようなものがあるか覚えておくと役立ちます。たとえば、その企業がアジャイル開発を導入している場合、他企業よりも開発スピードを上げられることがわかり、開発会社の選定の参考になるでしょう。
どの開発会社を選ぶべきか悩んでいる場合、ぜひ株式会社エイチビーラボにお任せください。
株式会社エイチビーラボでは、ベトナムに特化したオフショア開発サービスを提供しております。お客様のご要望に合わせてWebシステムやスマホアプリ、AIデータ作成などさまざまなシステムを提供することが可能です。システムの開発でお困りの方は、ぜひお気軽にお問い合わせください。ご相談から、開発、運用まで親身にサポートいたします。