ソフトウェア開発における開発プロセスの種類とは

公開日 : 2021年03月05日
更新日 : 2022年01月19日

システムおよびソフトウェア開発における開発プロセスは、複数の種類に分けられます。それらのなかには従来長く用いられてきた手法もあれば、近年に登場し急速に導入事例を増やしているものもあります。

そこで今回は、ソフトウェア開発の現場で用いられている開発プロセスの種類をいくつか挙げ、それらの特徴とメリット・デメリットについてご紹介します。

目次

開発プロセスとは

開発プロセスの目的

開発プロセスの種類

開発プロセスの課題

課題を解決するJBCCサービス

まとめ

開発プロセスとは

開発プロセスとは

開発プロセスとは、システムやソフトウェアを開発する際の「工程」を指す言葉です。開発しているベンダーなどにより解釈の違いはあるものの、大きく分けると着手の順に「要求分析」「要件定義」「外部設計」「内部設計」「コーディング」「テスト」の6工程に分けられます。

工業製品などを指す「ものづくり」と同様に、システム開発もさまざまな工程を経てユーザーが納得できるクオリティの製品が生み出されていることが分かります。

開発プロセスの目的

開発プロセスを定め、プロセスに沿ってソフトウェア開発を行うことには、どのような目的があるのでしょうか。ここでは、開発プロセスの持つ目的や役割についてご紹介します。

1.メンバー間の認識のずれを防ぐ

ソフトウェア開発は、多くのメンバーで構成されるプロジェクトチームによって行われます。その際には、共通する項目や連係機能に関する開発を複数のメンバーが手掛けることもあります。開発作業は各メンバーへ分担することとなっても、メンバーごとの認識が異なっていては円滑に作業が進みません。開発スケジュールや成果物の品質に影響を与えないためにも、定めた開発プロセスに則り共通認識のもとに作業を行っていく必要があります。

2.システム開発の効率化を図る

さまざまなプロジェクトを手掛けるごとに、一から計画を立てていくことは効率的ではありません。あらかじめ開発プロセスを定めておくことで、それに即して計画から実行までの工程を作っていけるため、業務を効率化できます。

3.開発者とユーザーの認識をすり合わせる

開発プロセスは、プロセスごとに完成基準が定められています。プロジェクトのメンバー間だけでなくユーザーとの認識を共通にしておく必要があります。開発者は完成基準を目指して開発し、ユーザーは開発したものが事前に定めた完成基準を満たしているかを確認します。そのため、開発プロセスの共通認識が開発の基準となり得ます。

開発プロセスの種類

システムやソフトウェアの開発プロセスは、大きく以下の5つに分類できます。

ここでは、各種開発プロセスの特徴やメリット・デメリットについてご紹介します。

ウォーターフォール型

各工程を順序通り確実に完了させていくため、上流から下流へと水が流れ落ちていくようなイメージでウォーターフォール型開発と名付けられた、以前からある開発プロセスの形です。要求分析→要件定義→外部設計→内部設計→コーディング→テストという流れで順を追って作業を進めていきます。

ウォーターフォール型開発のメリットは、スケジュールが立てやすく管理もしやすいことです。システムの目的や要件を初期段階に明確にすることで、工程毎の工数を正確に見積もれます。稼働開始日の期限や予算が優先される案件に適しています。その一方で、開発工程のなかで不具合や問題点が生じた際に、次の工程に進めないというデメリットもあります。わずかな手戻りが発生しただけでも、予算や納期に影響を及ぼす可能性があるためです。

プロトタイプ型

プロトタイプ型開発とは、従来のウォーターフォール型開発のデメリットを克服するために、開発中に試作を行ってユーザーに確認を取りながら工程を進めていく開発手法です。開発の早い段階で試作品が完成することと、試作とその承認を何度か経ることで、テストや運用段階での手戻りが発生しにくくなるというメリットがあります。

その反面、試作を開発するだけでも大きな手間やコストを要する大規模なプロジェクトに不向きである点はデメリットです。

アジャイル型

システムの機能を細かく分けて素早く作り、ユーザーと密に意思疎通を行いながら要望の反映を繰り返すことで品質を高めていく開発プロセスです。開発中のシステムをユーザーが確認でき、要望を伝えやすいというメリットがあります。一方で変更要件が収束しないと、スケジュールが長期化する、コスト超過が発生しやすくなると言ったデメリットも存在します。

スパイラル型

設計と開発、テストの過程を繰り返しながら見直しと改善を図り、ユーザーと開発者の認識齟齬(そご)をなくして高品質な成果物を仕上げていく手法です。先にご説明したウォーターフォール型開発と、アジャイル開発の両者のメリットを組み合わせた開発プロセスとも言えます。開発中の機能追加や仕様変更に柔軟に対応でき、手戻りの規模を小さくできるメリットがあります。反面、開発初期はシステムの全体像が把握しにくく、プロジェクトの適正な管理が困難になりやすいというデメリットもあります。

イテレーション(反復型)開発

アジャイル開発の「初期段階では綿密に計画しない」という点を問題視し、初期にソフトウェア開発の意義や方向性をはっきり定めた上で柔軟な開発を行う手法です。開発の方向付けを明確にしつつも、開発中の仕様変更・機能追加は柔軟に行い「分析→設計→実装→テスト」の工程を反復し品質を高めます。メリットやデメリットはアジャイル開発と共通する部分が多く、変更に強く柔軟性が高い点がメリットですが、変更が増えすぎるとスケジュールや予算に影響する点がデメリットです。ただし、プロジェクトの方向性を初期に明確にすることにより、開発が場当たり的に進んでしまうことが防げる点は反復型開発ならではのメリットです。

開発プロセスの種類とメリットおよびデメリット

種類 適したプロジェクト メリット デメリット
ウィーターフォール型 システム要件や開発優先度が明確なプロジェクト システムの要件や目的に忠実な開発を行える 工程で生じる不具合や課題への柔軟な対応が難しい
プロトタイプ型 開発と試作の並行がしやすい小規模プロジェクト 試作と承認を行いながら開発することで、手戻りが生じにくい 開発中の施策がコスト面で困難な大プロジェクトには向かない
アジャイル型 システム要件や開発優先度がまだ明確ではないプロジェクト 開発状況をクライアントが確認しながら、要望とその対応を柔軟に行える 開発中の要望対応が多くなると納期やコストの管理が難しい
スパイラル型 成果物の高い品質が要求されるプロジェクト 機能追加や仕様変更に柔軟に対応でき、手戻りの規模を小さく抑えられる 開発初期はシステムの全体像を把握しにくい
イテレーション型 クライアントの要望を綿密に把握しながら進める必要のあるプロジェクト 設計、テスト、改善を短期間で繰り返すため課題の発見や改善がしやすい 課題が多いと解決へ至る過程の繰り返しが増え、開発期間が延びる

開発プロセスの課題

開発プロセスの課題

今回ご紹介したさまざまな開発プロセスを実践するには課題も存在します。開発プロセスが抱える課題で今後深刻化すると考えられているのは、開発プロセスに携われる人材の育成が追いついていないことです。

上流工程では、ユーザーへのヒアリングや機能設計に関する経験やノウハウを蓄積してきたベテランや専門性の高い人材なくして開発は成り立ちません。また下流工程では、さまざまなプログラミング言語を習得しプログラムを記述できる人材が不可欠です。人材を育成するには手間と期間を要し、人材に頼ることで業務自体の属人化も進んでしまいます。

これらの課題を解決し、特定の人材に依存しない開発環境を整備していくことが重要になるでしょう。

課題を解決するJBCCのサービス

JBCCでは、前の項目でご説明した開発プロセスの課題に対応する3つのサービスをご提供しています。

【開発スピードと柔軟性、計画性と管理性を併せ持った「JBアジャイル」】

JBアジャイルは、アジャイル開発のメリットであるスピードと柔軟性、ウォーターフォール型開発のメリットである計画性や管理性を取り入れ、柔軟な要員編成を可能にすることで基幹システムなど大規模開発にも適用可能にした独自の開発手法です。要件定義を実施してプロジェクトのゴールをしっかりと協議するため、アジャイル開発にも関わらず開発中にプロジェクトの趣旨を見失うことがありません。また、イテレーションの回数を固定することでスケジュールを担保します。早い段階でユーザーがアプリケーションを試すことが出来るため、認識の齟齬が発生しないのも特徴です。

JBアジャイルは、アジャイル開発のメリットであるスピードと柔軟性、ウォーターフォール型開発のメリットである計画性や管理性を取り入れ、柔軟な要員編成を可能にすることで基幹システムなど大規模開発にも適用可能にした独自の開発手法です。要件定義を実施してプロジェクトのゴールをしっかりと協議するため、アジャイル開発にも関わらず開発中にプロジェクトの趣旨を見失うことがありません。また、イテレーションの回数を固定することでスケジュールを担保します。早い段階でユーザーがアプリケーションを試すことが出来るため、認識の齟齬が発生しないのも特徴です。

JBアジャイル開発の詳細を見る

【上流工程開発の熟練者が持つノウハウをテンプレート化した「XupperⅡ」】

知識や経験が必要と言われる上流工程ですが、その熟練者は要望を緻密にヒアリングし矛盾を解決する手段を導き出すことができます。複雑化する昨今の開発において熟練者の存在は欠かせませんが、その確保や育成は困難になる一方です。

「Xupper」は、これらの課題解決を目指して上流工程熟練者のノウハウをテンプレート化しました。要件や設計の抜け漏れ、不整合に気づき、修正出来るような仕組みが備わっています。開発と運用保守の両方でメリットがあるだけでなく、業務とシステムを立体的に把握できるため、システム人材の早期育成にも役立ちます。

XupperⅡの詳細を見る

【圧倒的な生産性と開発要員の短期育成が可能な「GeneXus」】

GeneXusは、プログラミング言語の記述量を最小限に抑えながら迅速な開発を行えるローコード開発ツールです。高機能で、基幹システムなど大規模複雑なシステム開発に利用可能です。また圧倒的な生産性はもちろん、開発したプリケーションの整合性を確保したまま修正できるので、アジャイル開発などの繰り返し修正が必要な開発手法と組み合わせると大きなメリットを発揮します。

開発経験者はもちろん、開発初心者でも短期間で習得が可能です。開発要員不足の解消に役立ちます。

GeneXusの詳細を見る

まとめ

開発プロセスには数多くの種類がありますが、従来主流だったウォーターフォール型開発から、開発の高速化と柔軟性に主眼を置いたアジャイル開発への移行が進んできています。しかし現在では、アジャイル開発の課題が指摘される機会も少なくありません。

ご紹介した5種類の開発手法以外にも様々な開発手法があり、ウォーターフォール型開発を自動的に採用する時代ではなくなっています。プロジェクトの特性や自社の状況にマッチした開発手法を検討してはいかがでしょうか。

JBCC株式会社ロゴ

JBCC株式会社

JBCC株式会社は、企業のデジタル・トランスフォーメーション(DX)を支援する総合ITサービス企業です。クラウドサービスを中心にシステムの設計から構築、運用までを一貫して手掛けており、クラウド 1,740社、超高速開発による基幹システム構築 400社、セキュリティ 1,100社の実績があります。
お客様の環境に合わせた最適なITシステムを、クラウド、超高速開発、セキュリティ、データ連携等を活用し、企業のDX実現と経営変革に貢献します。

コラム
上流工程とは?システム開発で起こり得るリスクと管理の重要性

上流工程とは?システム開発で起こり得るリスクと管理の重要性

システム開発工程において「上流工程」「下流工程」という言葉を耳にする機会があると思います。これは、システム開発全体の流れを大きく二分すると、上流工程と下流工程に分けられることを指しています。 この記事では、システム開発における上流工程の概要と工程の流れをご紹介しながら、上流工程での設計作業に際し想定されるリスクや課題、管理の重要性についてもご説明します。

コラム
アジャイル開発とは?アジャイル開発の特徴とウォーターフォール開発との違い

アジャイル開発とは?アジャイル開発の特徴とウォーターフォール開発との違い

システム開発において注目されている開発手法として「アジャイル開発」があります。従来のウォーターフォール開発に比べて、開発期間を大幅に短縮でき、開発途中の仕様や要件変更にも柔軟に対応できるという特徴があります。そこで今回は、アジャイル開発の歴史や特徴を解説しながら、従来のウォーターフォール開発との違い、メリット・デメリットなどをご紹介します。

コラム
ローコード開発とは?従来の開発との違いやメリット・デメリット

ローコード開発とは?従来の開発との違いやメリット・デメリット

システムおよびソフトウェア開発における開発プロセスは、複数の種類に分けられます。それらのなかには従来長く用いられてきた手法もあれば、近年に登場し急速に導入事例を増やしているものもあります。 そこで今回は、ソフトウェア開発の現場で用いられている開発プロセスの種類をいくつか挙げ、それらの特徴とメリット・デメリットについてご紹介します。