ソフトウェア開発には、さまざまな開発方法や構造手法があります。それぞれ特徴やメリット、デメリットが異なるため、よく把握した上で適切な方法を選ぶことが重要です。
この記事では、それぞれの開発方法や構造手法について詳しく説明します。
ソフトウェア開発の手法は4つ
ソフトウェア開発の手法は主に次の4種類が挙げられます。
- ウォーターフォール型
- アジャイル型
- プロトタイプ型
- スパイラル型
従来1つのプロセスが終わった時点で次に進むウォーターフォール型が一般的でした。しかし、柔軟に対応できない点、開発までに時間がかかる点などを踏まえて他の開発方法を導入するケースが増えました。
1.ウォーターフォール型
ウォーターフォール型は、ソフトウェア開発において次のプロセスに分けて、1つのプロセスが終わった時点で次に進むといった手法です。
- 外部設計
- 内部設計
- プログラム設計
- プログラム
- テスト
1つのプロセスが終わった時点で次に進むことや、前のプロセスに戻らないことから滝のようだということでウォーターフォールと名づけられました。1970年に提唱されており、長らく導入されている開発方法です。
ウォーターフォールは後戻りすべきではないようなプロジェクトに適しています。1つのプロセスごと進める手法は日本企業の風土にあっており、確実に進めていく必要のあるプロジェクトにおいて利用されています。
ウォーターフォール型のメリット
ウォーターフォール型のメリットとしてまず挙げられるのが、進捗管理をしやすいことです。それぞれのプロセスごとに目的やゴールを設定し、決めたゴールを達成しないと次に進めないため進捗状況がわかりやすい特徴があります。さらに、人事異動をしやすく計画的にプロジェクトを進める必要のある場合に向いている開発方法です。
ウォーターフォール型は長く導入されている活用方法であるため、開発経験のあるエンジニアが多いのが特徴です。そのため、スムーズに進められるケースが多いといってよいでしょう。
ウォーターフォール型のデメリット
長らく導入されているウォーターフォール型ですが、メリットばかりではありません。デメリットとしては、ユーザーの意見が含まれにくい点が挙げられます。
一般的に実装からリリースまで開発側のみで進めることが多く、ユーザーの意見が入ることがほとんどありません。さらに、プロセスごと進めるウォーターフォール型はスムーズに進めば効果的ですが、問題があった場合や変更が必要になった場合は対処が難しい開発方法です。
2.アジャイル型
ウォーターフォール型は1つのプロセスが終わってから次に進む失敗が少ない開発方法です。しかし、1つのプロセスが終わらないと次に進めないため最終的に時間がかかる可能性があります。
さらに、途中で変更があった場合に修正しにくい特徴があります。そこで、柔軟に対応できスピーディーに進められるアジャイル型の需要が高まっていくでしょう。
アジャイル型は、要件定義を必要最小限にしておいて、小さな単位で設計から実装、確認までをなんども繰り返してプロジェクトを進める方法です。小さな単位で進めることから、不具合を見つけやすく要望に変更があっても修正しやすい特徴があります。
アジャイル型のメリット
アジャイルは小さな単位で何度もテストを繰り返すため、修正をしやすい他ユーザーの要望を反映させやすい点が特徴です。ウォーターフォール型は全てのプロセスが終わるまでユーザーの意見を反映させることは難しいため、途中で変更をしやすいアジャイル型を導入するケースが増えています。
さらに、すぐに修正点が見つかるため修正をする時間を短縮できる点も大きな特徴です。途中で変更したり修正をしたりできることから、短期間で納品できる場合もあります。
アジャイル型のデメリット
アジャイル型は要件定義を最小限にしているほか何度も修正をすることから、方向性がぶれやすく進捗管理をしにくい点がデメリットとして挙げられます。そのため、アジャイル型の開発者には経験やノウハウ、またコミュニケーション能力が求められるでしょう。
頻繁に企画からテストまでを繰り返すことから、常にコミュニケーションをとっていないと大幅に方向性がぶれる可能性があります。
3.プロトタイプ型
プロトタイプ型とは、プロセスにおいて早い段階で製品をイメージできるような試作機を作ることによって開発のプロセスを減らす方法です。さらに、試作機を作ることによってユーザーは先にどのような製品となるのか確認できるため、要求を明確にできます。
仮に、不要であるものが明確になると省くことによって工程やコストを削減できる場合もあります。
プロトタイプ型のメリット
プロトタイプ型は先に試作品を作ることで、ユーザーがどのような製品になるのかをイメージしやすい点が特徴です。さらに、ユーザーが前もって見られることから修正に対して柔軟に対応できます。
ユーザーのニーズを満たせる可能性が高まり、顧客満足度の向上につながります。その結果企業における評価が高まることも期待できるのです。
プロトタイプ型のデメリット
プロトタイプ型は先に試作品を作ることでユーザーの意見を反映させられます。しかし、仕様変更が何度も起きる可能性があり作業計画や見積もりが難しい点がデメリットです。
さらに、変更箇所が大きくなれば当初の目的と異なるリスクがあります。このことから、組織において不適合なシステムになる可能性があります。
4.スパイラル型
スパイラル型とは、プロセスにおいて小さな大尉で設計から実装、テスト、試作を何度も繰り返す開発方法です。ここまではアジャイル型と同じですが、試作を作る点はプロトタイプ型と同じです。
そのため、アジャイル型とプロトタイプ型の良さが含まれています。ユーザーのニーズを満たしており、さらにクオリティの高い製品作りを目指します。
スパイラル型のメリット
スパイラル型はユーザーの変更に対して柔軟に仕様変更できる点がメリットです。先に試作を見せることでユーザーがイメージしやすく、顧客満足度向上につながります。
さらに、小単位ごとに計画を立て直すことから、スケジュールを変更しやすい開発方法です。
スパイラル型のデメリット
スパイラル型は途中で何度も修正するため、プロジェクト全体としての動きをつかみにくい特徴があります。顧客の要望を優先しすぎると、システムが肥大化しすぎて想定していた業務とは大幅に異なる製品になる可能性があります。
さらに、修正を加えすぎて納期に間に合わないリスクが発生することに注意が必要です。
ソフトウェア開発のプログラム構造手法は2つ
ソフトウェア開発のプログラム構造手法には次の2つが挙げられます。
- 多層アーキテクチャ
- MVCモデル
多層アーキテクチャとは、プロセスにおいて層を分けて開発を進めていく方法です。それぞれの層において開発できるため開発を分担できます。
1.多層アーキテクチャ
多層アーキテクチャは規模が大きいシステムによく利用されやすい手法であり、ソフトウェアアーキテクチャのパターンの1つです。大きなシステムにおいて細かく層ごとに分類し、それぞれの層においてインターフェースのみを定義していきます。
つまり、多層アーキテクチャとはそれぞれの層が連携をすることにより、大きなシステムを作動させる構造方法です。
多層アーキテクチャのメリット
多層アーキテクチャのメリットとして、それぞれの層を別に稼働させることができるため同時に開発できる点です。また、1つの層だけを他の層に影響が出ないように拡張や更新もできます。
このため、多層アーキテクチャは開発を分担でき、それぞれの層は他のシステムで再利用をすることが可能です。
多層アーキテクチャのデメリット
多層アーキテクチャは層が増えすぎると、設計作業が複雑になりすぎて開発者の負担が大きくなりすぎるリスクがあります。前もって、仕様や設計時に層が増えすぎないよう、またスムーズな管理をできるように設計することが重要です。
2.MVCモデル
MVCモデルとは従来行われていた構築方法で、現在ではあまり使われていません。しかし、Web系ソフトウェア開発では、MVCモデルを基準とした設計思想が活用されるケースがあります。
MVCとは、次の考えに基づいて設計されています。
- Model
- View
- Controller
Modelとはデータのある層であり、Viewとは表示させる層、ControllerとはModelとViewの間にありそれぞれをつなぐ層です。
MVCモデルのメリット
MVCモデルの利点として、Modelの部分はエンジニアが担当しViewの部分はデザイナーが担当できます。
それぞれの層において担当者が明確であり、作業を進めやすく全体の流れをつかみやすくなっています。そのため、処理の複雑化を防ぐことも可能です。
MVCモデルのデメリット
MVCモデルは、入力条件における条件分岐処理やデータなどのどちらの層に設定するべきか、明確に分類できない場合があります。さらに、オブジェクトをわける必要があることから、コードの記述が必要になります。
コードの記述だけにも時間がかかり結果的に手間や時間がかかってしまう点がデメリットです。
ソフトウェア開発の手法でよくある3つの質問
ソフトウェア開発の手法でよくある次の3つの質問をまとめました。
- オフショア開発と相性の良い開発手法はありますか?
- スピードを重視する場合におすすめの開発手法はありますか?
- ソフトウェア開発を成功させるためのコツはありますか?
質問1.オフショア開発と相性の良い開発手法はありますか?
オフショア開発とは、海外企業に委託をするため開発を進めていく上で要件定義をするプロジェクトが向いているといわれます。そのため、開発を企画した時点で最小限の要件定義を設定して小さな単位でプロジェクトを進めるアジャイル開発が、オフショア開発に利用されている手法です。
特にアジャイル開発は決まったチームで開発を進めるラボ型オフショア開発と相性がよいことから、利用されるケースが多くあります。
質問2.スピードを重視する場合におすすめの開発手法はありますか?
開発においてスピードを求める場合はアジャイル開発がおすすめです。アジャイル開発は2000年代に入って開発されたもので、スピーディーに開発できることから多くの企業が導入しています。
さらに、アジャイル開発はスピーディーであるだけでなく、開発途中における仕様変更に強いメリットもあります。
質問3.ソフトウェア開発を成功させるためのコツはありますか?
ソフトウェア開発を成功させるためには、適切な計画と準備が必要です。品質の担保やコストの削減、全体的なプロセスの管理など全てをマネジメントすることが求められます。
組織全体でプロジェクトマネジメントをすることにより、今後のプロセスモデルにもなります。プロセスの課題を把握し改善や実践を続けることで、組織にプロセスモデルを定着させるのが効率的に成功させる方法です。
まとめ
ソフトウェア開発には、アジャイル型やウォーターフォール型、プロトタイプ型、スパイラル型といった4つの開発手法があります。さらに、多層アーキテクチャやMVCモデルといったプログラム構想手法もあり、それぞれのメリットやデメリットがあります。
そのため、それぞれ開発の目的や環境などに合わせて適切な方法を選ぶことが重要です。