ソフトウェア開発モデル

第5章 システム開発

ソフトウェア開発モデル

システムを開発する方法は1つではありません。ソフトウェア開発モデルの代表例としてウォーターフォール型とアジャイル型の2つがあり、ITパスポート試験でも出題頻度が高いです。各ソフトウェア開発モデルの特徴を理解し、覚えるようにしてください。

ソフトウェア開発モデル

 ソフトウェア開発モデルとは、ソフトウェアの開発手順や手法をモデル化したものです。開発に適用するモデルごとに、利点と欠点があります。 

 ソフトウェア開発モデルが必要な理由は、ソフトウェア開発期間を短縮化し、かつ品質を高めるためです。ソフトウェア開発のプロジェクトは、開発メンバーが頻繁に入れ替わるものです。そのため開発途中で参画したメンバーでも即座に開発プロセスを理解できるようにモデル化されました。

 属人的な課題を最小限に抑えて、円滑にソフトウェアを開発できるようにすることが、ソフトウェア開発がモデル化された目的です。


ソフトウェア開発モデルの種類

 ここではソフトウェア開発モデルの種類を紹介します。

モデル 特徴
ウォーターフォール型 ソフトウェアの開発プロセス(要件定義、設計、開発、テスト)の工程を上流から下流まで一直線に順番に開発を進める
プロトタイプ型 ユーザー試用を通して、開発の早い段階で試作品の構築(プロトタイピング)を開発を進める
スパイラル型 独立性の高い要素ごとに開発箇所を分解して、一連の開発工程を進める
アジャイル型 要件は時間とともに変化するという思想のもと、ソフトウェア開発プロセスを1〜4週間の短期間で繰り返しながら開発を進める

ウォーターフォール型モデル

 ウォーターフォール型は、ソフトウェアの開発プロセスを

上流から順番に実施していく開発モデルです。ウォーターフォールとは、英語で「滝」を意味する言葉で、「上流から下流に向けて一直線に工程を進める」開発モデルのため、ウォーターフォール型モデルと名付けられました。

 要件定義、システム設計、プログラミング、テストの順に開発を進めていきます。

メリット デメリット
・全体のスケジュールを把握しやすい
・作業工程が明確でプロジェクトメンバーが迷いなく作業を進められる
・時間、人員、工数などを見積もりやすい
・要件の変更ができない
・後戻りできない
・工数の並行作業ができない

プロトタイプ型モデル

 プロトタイプ型は、システム開発中に後戻りしないように、要件定義の工程に重点を置いた開発モデルです。要件定義の段階で試作品を繰り返し製作し、ユーザーに試してもらうことで、要件を洗練させていきます。

メリット デメリット
・ユーザーの要求の漏れを発見することができる
・要件を細部まで定義できるため、ソフトウェアの規模やスケジュールを詳細に予測できる
・要件定義に漏れが発生していることが発覚した場合、スケジュールとコストに大きな影響を与え、クライアントとの信頼問題になる
・ユーザーの積極的な開発参加が必要なため、必要以上の労力がかかる可能性がある

スパイラル型モデル

 スパイラル型では、開発予定のソフトウェアを独立性の高い要素で分解して、1部分ごとに開発を進める。ソフトウェアが持つ機能ごとに分解するのが一般的である。

 上図のように、ソフトウェアをA〜Gの7つの機能に分解したとき、各機能ずつ開発を進めます。そして、各工程で要件定義、設計、プログラミング、テストを実施します。図の場合は、合計で7回ソフトウェア開発プロセスを繰り返すことになります。

アジャイル型モデル

 ビジネス環境の変化やビジネス市場の変化に基づいて開発するソフトウェア自体を変えられるように、自由度や柔軟性を兼ね備えた開発手法です。計画、実行、評価を短期間に何度も反復します。この反復をイテレーションといいます。アジャイル開発では、イテレーション内で振り返り(内省)の時間を設ける必要があり、この振り返りのことをレトロスペクティブといいます。

 ①要件定義から④テストまでの4工程が完了したら、ソフトウェアをリリース(ユーザーが使用できる状態にすること)します。

 アジャイル開発モデルには、開発のアプローチ手法にスクラムとXP(エクストームプログラミング)の2つがあります。


●スクラム

アジャイル開発のアプローチ手法の一つがスクラムです。スクラムの手法では、チームワークを重視して、プロジェクトメンバーが固定され、メンバーごとにプロダクトオーナー、開発者、スクラムマスターなどが割り当てられます。スクラムの手法では、反復の単位をスプリントといいます。

 3つのロール(役割)について細かく紹介します。

ロール 特徴
プロダクトオーナー
プロダクトの責任者としてプロダクトの価値を最大化し、タスクの優先順位も行う
スクラムマスター
スクラムフレームワークを通じてチームを目的達成に導き、作業の障害となる要素を取り除いていく。チームが機能的になるようにコミットする
開発者
プロダクトの開発を担う。スクラムチームでは、各開発メンバーが、設計、コーディング、テスト、運用などのスキルが総合的に求められる


●XP(エクストリームプログラミング)

 アジャイルにおける開発手法の一つで、エクストリームプログラミングとは、アジャイル開発における開発手法やマネジメントにおける経験則を19のプラクティスとしてまとめたものです。


その他の開発手法

 ソフトウェアには、他にも開発手法があります。

●DevOps

 ソフトウェア開発手法の1つです。開発を意味するDevelopmentと、運用を意味するOperationsの2つの英単語から作られた造語です。ソフトウェアの開発者と運用者が連携・協力して開発を進める、フレキシブルで迅速な作業が求められる手法です。アジャイル開発手法が宣言されてから、そのムーブメントに影響されて生まれたのがDevOpsです。DevOpsでは、アジャイル開発ではあまり定められていない運用面まで目が向けられ、組織の文化醸成施策が明確に提示されています。



完了して続く