掲載内容は正確性・最新性の確保に努めていますが、一次情報をご確認ください。
shindanshi中小企業診断士 wiki

システム開発手法

共通フレーム、要件定義、ウォーターフォール、V字モデル、アジャイル、DevOpsを整理する

このページの役割

このページの役割

システム開発は、単に「プログラムを書く」のではなく、企画から廃棄まで、複数の工程を連携させるプロセスです。このページは、システム開発の全体の枠組み(共通フレーム)開発モデルの選択基準テストと品質の関係要件定義と設計の違いを整理し、試験に頻出する開発手法を比較して説明します。

学習のポイント

  1. 共通フレーム(SLCP) で工程の全体像と各工程の役割を理解する
  2. 要件定義と設計 の違いを「何を」と「どう」で切り分ける
  3. 開発モデルの選択基準 を要件の変更可能性と規模で判断する
  4. V字モデル でテスト工程と開発工程の対応を把握する
  5. アジャイル・スクラム・DevOps の違いと役割分担を整理する

試験で問われる観点

  • 共通フレーム7工程の目的と出力物を、企画→開発→運用→廃棄の流れで説明できるか
  • 要件定義と設計のどちらが「何を」で、どちらが「どう」か判別できるか
  • ウォーターフォール、V字モデル、アジャイルの特徴を、変更への強さ・進め方・テスト戦略で比較できるか
  • スクラム(役割・イベント・作成物)の構成と、DevOpsが開発と運用の統合である理由を説明できるか
  • ホワイトボックス・ブラックボックステストの違い、テスト段階(単体・統合・システム・UAT)の対応関係を正確に言えるか

定義と仕組み

共通フレーム(SLCP)と工程

共通フレームとは

共通フレーム は、ソフトウェア開発ライフサイクル全体を発注者と受注者が同じ言葉で理解 するための標準ガイドラインです(SLCP:Software Life Cycle Process、2013版が最新)。試験で開発手法が出題されたとき、まず「どの工程の話か」を判別することが理解の近道になります。7つの工程が順序立てて進みますが、開発モデル(ウォーターフォールなど)によって 進め方は変わります

なぜ共通フレームが必要か

システム開発は複数企業が関わることが多く、発注側と受注側で用語や期待が異なると、要件のズレ、品質問題、遅延などが起こります。共通フレームは、どの業界・企業でも「企画」「要件定義」「開発」などの工程を同じ定義で扱い、意思疎通をスムーズにする役割を果たします。

SLCP の7工程と役割

工程目的主な活動担当出力物
企画システム化の方向を決めるビジネス目標の確認、投資対効果の検証経営層・企画部門事業計画書、RFP(提案要求書)
要件定義ユーザーが求める機能と品質を明確化ヒアリング、ワークショップ、ユースケース作成アナリスト・ユーザー要件定義書、機能要件・非機能要件の整理
設計要件を技術で実装する方法を決める基本設計(外部設計)、詳細設計(内部設計)システム設計者設計書(構成図、ER図、クラス図など)
実装プログラムを実装するコーディング、ユニットテスト実施開発者ソースコード、実装成果物
テスト全体が要件を満たすことを検証統合テスト、システムテスト、UATQA・ユーザーテストレポート、欠陥記録
運用本番環境でシステムを稼働・監視監視、バックアップ、トラブル対応運用チーム運用ログ、監視記録、アラート
保守・廃棄バグ修正、小規模改善、最終終了パッチ適用、性能改善、データ移行計画保守チーム・企画保守記録、移行計画

工程間の関係を図で理解する

企画で「何をするか」の方向が決まり、要件定義で「ユーザーが求める具体的な機能」が決まり、設計で「技術的な実装方法」が決まります。この流れを頭に置くと、後述の「要件定義と設計の違い」や「開発モデルの違い」が理解しやすくなります。

要件定義と設計の違い

なぜ分ける必要があるのか

試験で最も落としやすいのが「要件定義」と「設計」の混同です。要件定義は**「ユーザーが何を求めているか」を理解して言葉にする工程で、設計は「その要件をどうコンピュータで実現するか」を決める工程**です。この違いを把握すると、開発モデルの選択理由、テスト戦略、契約形態までが自動的に理解できるようになります。

「何を」(要件定義)と「どう」(設計)の違い

観点要件定義(What:何を)設計(How:どう)
主な質問ユーザーは何を必要としているか。どんな制約があるかその機能をどのコンポーネント・DB・画面で実装するか
関わる人ユーザー・ビジネスアナリスト・要件エンジニアシステム設計者・アーキテクト・DBA
内容の詳しさ機能要件(売上を記録する、月次レポートを出力する)、非機能要件(応答時間3秒以内、稼働率99.9%)画面構成、DB設計(ER図)、API、モジュール分割、処理フロー
成果物要件定義書、要件トレーサビリティマトリクス基本設計書、詳細設計書、ER図、ユースケース図、クラス図
変更されやすさ変更されやすい。ユーザーのニーズは後になって変わることが多い要件が定まった後は比較的安定しているが、設計の誤りは後期に見つかると高コスト
変更の影響範囲大きい。全工程に波及する設計以降の工程に影響。要件定義には戻らない

具体例で理解する

ユースケース:オンラインショップの「在庫不足時の通知」機能

  • 要件定義の視点
    • ユーザーが在庫不足を検知したいというニーズがある
    • 在庫数がしきい値を下回ったら、メール・SMS・アプリ通知のいずれかで知らせたい
    • 誰に通知するか(店長、営業担当)
    • どのくらいの速さで通知するか(即座、あるいは数時間後か)
    • これらが「機能要件」と「非機能要件」
  • 設計の視点
    • メール送信はどのシステムを使うか(SMTP、AWS SES など)
    • DB のどのテーブルを参照して在庫数をチェックするか
    • 通知履歴はどう記録するか(監査ログ)
    • どのAPIを新規実装するか
    • これらが「基本設計」「詳細設計」

この違いが分かると、「要件変更が頻繁ならアジャイル、要件が確定済みなら請負契約」という判断も自動的に出てきます。

機能要件と非機能要件

機能要件(Functional Requirements)

ユーザーが目に見える形で期待する処理・機能です。「このシステムで何ができるか」を直接的に説明するもの。

  • 売上を記録する機能
  • 在庫数を自動的に減らす機能
  • 月次レポートを出力する機能
  • 顧客情報を検索する機能
  • 営業予測グラフを表示する機能

機能要件は、ユーザーとの要件定義の場面でまず出てくるものです。多くの場合、「○○ができるようにしてほしい」という形で表現されます。

非機能要件(Non-Functional Requirements)

機能そのものではなく、システムが満たすべき「品質」に関する要件です。ユーザーからは直接は要望されないことが多いですが、システムの使いやすさ、信頼性、セキュリティに大きく影響します。

種別意味具体例
性能・応答時間どのくらい速く処理するか同時接続 100 ユーザー時の平均応答時間が 3 秒以内
信頼性・可用性どのくらいの期間、安定稼働するか99.9% の稼働率(年間ダウンタイムは 8.76 時間以内に収めよ)
セキュリティ不正アクセスやデータ漏洩をどう防ぐかSSL/TLS で通信を暗号化、全操作をログ記録、定期的なペネトレーションテスト実施
保守性・拡張性後から機能追加やバグ修正がしやすいかコード品質の基準を定義、API 仕様書を整備、テストカバレッジ 80% 以上
運用性日々の運用がどう楽になるかバックアップは自動化、障害時の復旧時間(RTO)1 時間以内、データ喪失可能性(RPO)15 分以内
スケーラビリティ将来の成長に対応できるかユーザー数が 10 倍になってもシステムが耐えられる、ピークアクセス時も応答時間 5 秒以内

なぜ非機能要件が重要か:多くの品質問題(遅い、落ちやすい、セキュリティ侵害)は、非機能要件の定義が甘かったために発生します。試験では、特に性能、可用性、セキュリティがよく問われます。

要件定義技法

ユーザーとの対話のなかで、要件を漏らさず、正確に把握し、ユーザーとの認識ズレを早期に解消するための手法群です。試験では、各技法を「どんなときに使うか」で判別することが出題されます。

技法概要メリットデメリット・注意点使う場面
ヒアリングユーザーへ直接、1対1 で要件を聞き取る詳細な背景情報が得られる聞き手のスキルに大きく依存。異部門の要件調整が難しい初期段階。ユーザー側に不確実性がある場面
ワークショップ複数部門・複数ユーザーを一堂に集め、要件について議論・合意形成異なる利益関係者の要件を同時に調整できる。合意が早い時間がかかる。主導者のファシリテーション力が必須営業・企画・現場など複数部門にまたがる要件の統一が必要な場面
プロトタイピング試作品(UI画面など)を実装して、ユーザーに使わせ、反応を見るユーザーのイメージが曖昧な場面(UI/UX など)で誤解が早期に判明。ユーザー満足度が高い試作コストが発生。完成品と混同されるリスク。要件凍結まで時間がかかる可能性新しいサービス・UI が決まっていない場合。ユーザー側が求めるイメージが漠然としている場面
ユースケース分析シナリオ形式で「アクター(利用者)」と「システム」の対話を記述複雑な業務フローが視覚化される。テストケースに直結しやすいUML の記法を理解する必要がある業務フローが複雑で、複数パターンがある場面。大規模システム
要件マトリクス(トレーサビリティマトリクス)要件を表で整理し、各要件とテストケース・設計・実装の対応を記録要件の漏れ、テスト漏れを防ぎやすい。変更管理が容易表の行と列が膨大になると管理が複雑。手作業なら手間が大きい要件数が多い大規模プロジェクト。品質重視の案件(公共事業など)

開発モデル比較

開発モデル選択の基準

システム開発は、プロジェクトの特性によって、どの手法を選ぶかが決まります。試験で頻出なのは:

  1. 要件が明確か、不確実か(変更可能性)
  2. プロジェクト規模(小~中か、大か)
  3. 納期の厳しさ(余裕あるか、短期納期か)
  4. リスク(高リスクか、低リスクか)

この4つの軸で判断すると、最適な開発モデルが決まります。

代表的な開発モデルの比較

モデル特徴メリットデメリット要件の特性リスク適用場面
ウォーターフォール企画→要件→設計→実装→テストと、工程を順に完了させる。1工程が終わってから次へ進む進捗管理が明確。各工程の責任と納期が分かりやすい。大規模チームでも混乱しない変更に弱い。後期に要件誤認が見つかると、修正コストが極めて高い。バグが本番後に見つかる傾向要件が明確で固まっている低~中(要件が安定していれば低い)大規模プロジェクト。公共事業。要件が明確で安定。金融システム
V字モデルウォーターフォール + テスト工程との対応を明示。左上から右下へ向かう「V字」の形で、各開発工程がテスト工程と対応テスト工程が明確に紐付く。テスト漏れが防ぎやすい。品質基準が明確ウォーターフォールと同じ。やはり変更に弱い。テストリソースが多く必要要件が明確。品質重視低(ただし、品質管理に時間をかける)要件が明確で安定。品質が重要なシステム(医療、航空、金融)
プロトタイピング試作品を作って、ユーザーに使わせて、要件を確認。確認後に本開発へ進むユーザーのイメージ誤認が早期に解消。UI/UX が確定してから本開発に進めるので、手戻りが少ない試作品の開発コストがかかる。試作品が「完成品同然」と誤解され、完成品との境が曖昧になるリスクUI/UX が不確実中(ユーザーが要件を理解しづらい場面)新規サービス。UI/UX が決まっていない。ユーザー側の要件が曖昧
スパイラル計画→設計→実装→評価を何度も繰り返す。各サイクルでリスク分析を行い、最も高いリスク課題を取り扱うリスクが早期に顕在化。大規模・複雑な案件でも段階的に進められる。技術的な不確実性が高い場合に有効各サイクルの管理が複雑。進捗が分かりにくい。コストが予測しにくいリスクが高い、要件が複雑高(ただし、リスク管理で軽減)大規模・複雑・高リスク案件。技術的な未経験領域を含む
RAD(Rapid Application Development)開発ツール(Lowコード/ノーコードなど)を活用して、短期間(数か月)で簡易版を完成させ、その後拡張短期間で価値提供できる。ユーザー評価が早い。変更対応が柔軟初期版の完成度が低い。スケーラビリティ・保守性に注意。将来の拡張が困難になる可能性要件は概ね分かっているが、細部は未確定小~中規模。納期が厳しい。Webアプリケーション
アジャイル(Scrum)1~4週間の短いスプリント(サイクル)ごとに、要件定義→設計→実装→テストを一通り実施。毎スプリント、完成した機能を納品変更への対応力が高い。顧客満足度が高い。バグが本番前に見つかる傾向最初から完全な要件定義がない。全体像が見えにくい。計画立案とコスト見積りが難しい。初期段階でのドキュメント不足要件が不確実。段階的に確認しながら進める中(ただし、顧客との密接な協業が必須)要件が変わりやすい。急速に変化する業界(Webサービス、スタートアップ)。顧客と開発チームが一緒に進められる環境
インクリメンタル全機能を一度に作るのではなく、機能を分割して段階的に完成・納品していく全機能が完成する前に、一部機能をユーザーが使用開始でき、早期に価値提供できる機能の分割設計が難しい。統合テストのコストが大きい。段階間の境界が曖昧になりやすい要件は明確だが、機能を分割可能大規模なシステム。機能が明確に分割できる。長期プロジェクト

V字モデル

V字モデルの概念

V字モデルは、「ウォーターフォール」に「テスト工程との対応関係」を追加した、より品質重視の開発モデルです。単なる工程図ではなく、各開発工程の出力物が、後段のテスト工程の入力・検証基準になる という因果関係を視覚化しています。

なぜ「V字」の形をしているのか

開発工程は左上から下(V字の底部)へ進み(要件定義→基本設計→詳細設計→実装)、その後、対応するテスト工程がV字の底部(実装)から右上へ向かいます(単体テスト→統合テスト→UAT)。この形が「V字」に見えることから名付けられました。重要なのは、テストを後付けではなく、開発の各段階で行うことで、品質を段階的に組み込むという考え方です。

V字モデルの工程とテスト対応

要件定義 ───────────────────────────── UAT
(What:何を)                   (全体が要件を満たすか)
  ↓                                  ↑
基本設計 ─────────────────── 統合テスト・システムテスト
(外部設計:How)              (部品間の連携が正しいか)
  ↓                                  ↑
詳細設計 ──────────── 単体テスト
(内部設計:詳細How)    (各モジュールが設計通りか)
  ↓                            ↑
実装・コーディング ────
(プログラミング)
開発側(左側)対応するテストテスト工程の名称検証内容検証者
要件定義ウォーターフォール開発との「最大のズレ箇所」UAT(ユーザー受入テスト)システム全体がユーザーの要件・期待を満たすかユーザー・QA
基本設計(外部設計)建築で言う「全体図」システムテスト・統合テストコンポーネント間の連携、システム全体の動作、性能、セキュリティQA・開発チーム
詳細設計(内部設計)建築で言う「各部屋の詳細図」単体テスト(ユニットテスト)個別モジュール・関数が設計通りに動くか、バグがないか開発者
実装・コーディング建築で言う「実際の建設」

V字モデルが解決する問題

ウォーターフォール開発では、テストは実装の後期に一度だけ行われるため、以下の問題が起こります:

  • 後期の障害発見コストが高い:実装完了後に「実は要件を誤解していた」が判明すると、全面的な作り直しが必要
  • テスト漏れ:要件と実装の対応が不明確なため、テストすべき項目を見落とす
  • 品質確保の責任が曖昧:誰が何を検証するか不明確

V字モデルは、各開発工程と対応するテスト工程を明示することで、これらを防ぎます。

V字モデルのメリット

  1. 品質基準が明確:各工程ごとに「何をテストするか」が決まる
  2. テスト漏れの防止:要件→設計→実装→テストの対応が一目瞭然
  3. 上流での品質確保:詳細設計の段階で単体テストケースを設計するため、バグが早期に見つかる
  4. 責任分担が明確:誰がいつ何をテストするかが決まっている

V字モデルのデメリット・課題

  1. 最初が完璧である必要がある:要件定義と基本設計で誤りがあると、テストの対応関係がすべて狂う
  2. 変更への対応が難しい:後期の要件変更があると、対応するテストケースもすべて修正する必要があり、手戻りコストが極めて高い
  3. リソースが多く必要:テスト環境、テスト用ツール、テスト担当者など、テスト工程に人手とコストを要する
  4. スケジュールがタイトになる傾向:各工程と対応するテストを並行実施するため、スケジュール遅延が許されない

ウォーターフォール vs V字モデル

両者とも「左から右へ順に工程を進める」という点では同じです。違いは:

  • ウォーターフォール:開発が終わったら、まとめてテストを実施する
  • V字モデル:開発の各段階ごとに、対応するテストを並行実施する

試験では、「V字モデル」という用語が出たら、必ず「テスト工程との対応」を思い出してください。

アジャイル開発

アジャイルとは

アジャイル(Agile)は、「素早い・敏捷な」という意味の英単語です。アジャイル開発とは、短い反復サイクル(1~4週間)で、機能の実装とテストを繰り返しながら、顧客フィードバックを受けて段階的に完成させていく開発方法です。

ウォーターフォール・V字モデルは「最初に全要件を決めて、後から変更は難しい」という前提でしたが、アジャイルは「要件は段階的に確認しながら進める。変更は当たり前」という前提に立ちます。

なぜアジャイルが必要か

Web業界やスタートアップでは、市場のニーズが急速に変わります。その環境で「半年後に要件をすべて決めて、その通りに作る」というウォーターフォールは現実的ではありません。アジャイルは、このような変化が当たり前の環境で価値を生み出すための手法です。

アジャイル宣言(4つの価値)

2001年にアジャイル宣言という指針が作られました。これは「ウォーターフォール的な重厚なプロセスより、人と人のコミュニケーションと価値提供を優先しよう」という宣言です。

価値観説明
プロセス・ツールより、個人と相互作用ツールや手続きを完璧に整えるより、チーム内、顧客との直接的なコミュニケーションを重視する。朝の立ち会い(デイリースクラム)で顔を合わせ、対話を通じて課題を解決する
包括的なドキュメントより、動く製品完璧な設計書を作るより、まず動くシステム(プロトタイプ)をユーザーに見せて、フィードバックをもらう方が、誤解を早期に防げる
契約交渉より、顧客との協働最初に「この機能をこの納期で、この金額で」と契約書で固めるのではなく、開発チームとユーザーが一緒に進めながら、段階的に内容を決めていく
計画に従うことより、変化への対応「計画通りに進める」ことより、「市場やユーザー要望の変化に素早く対応する」ことが、最終的な成功につながる

これらの価値観は、ウォーターフォールとの対比として理解すると、アジャイルの特徴が鮮明になります。

スクラム(Scrum)の 3 つの役割、5 つのイベント、3 つの作成物

スクラムは、アジャイルの最も一般的な実装方法です。1 スプリント(1〜4 週)ごとに、要件 → 設計 → 実装 → テスト → レビューの全工程を回します。

スクラムの 3 つの役割と試験対策

スクラムは3つの役割を厳密に分ける。試験では「PO と SM の違いを言え」という問題が頻出です。

役割責務主な活動
プロダクトオーナー(PO)「何を作るか」の意思決定者機能の優先度付け、利用者要望の聞き取り、「完成」の最終判定(技術者ではなく価値判定)
スクラムマスター(SM)スクラムプロセスの支援者障害除去、ルール遵守の支援、自己組織化の促進。指示命令ではなく、サーバント(奉仕者)的リーダー
開発チーム実装・テスト担当要件理解から完成まで全工程。自己組織化でスプリント内容を実現。クロスファンクショナル(多機能)

試験での頻出混同:POはプロジェクトマネージャーではない。SMが指示命令するのではなく、障害を除去するサポーター。

スクラムの 5 つのイベント(タイムボックス)

各イベントは時間を厳密に守ります(タイムボックス)。これがスクラムのリズムを作ります。

イベント時間目的
スプリント計画2~4時間スプリント中に実装する内容(スプリントバックログ)を決定。POが優先度と期待を伝え、チームが実現可能かを判定
デイリースクラム15分チーム同期。「昨日やったこと」「今日やること」「ブロッカー(障害)」を共有。報告会ではなく相互同期
スプリント(実行)1~4週間要件定義→設計→実装→テストを実施。スプリント中は新規追加(スコープクリープ)を認めず、約束に集中
スプリントレビュー1~2時間完成した機能を動くシステムとしてユーザーに見せ、フィードバックをもらう。スライドではなくデモ重視
スプリント振り返り1時間「うまくいったこと」「改善点」「次のアクション」を議論。プロセスの継続的改善

スクラムの 3 つの成果物(アーティファクト)

成果物内容管理者重要ポイント
プロダクトバックログ製品に必要な全機能を優先度順に列挙PO優先度がないと、次スプリントの計画が立たない
スプリントバックログこのスプリント中に実装する項目(プロダクトバックログから選択)開発チームスプリント中は追加しない(スコープ固定の原則)
インクリメントスプリント終了時の完成した機能(テスト済み、本番納品可能)開発チーム毎スプリント、ユーザーが見える成果物が増える

XP(Extreme Programming)の実践

XP は、スクラムを技術面から支える開発プラクティスの集合です。コード品質、テスト自動化、迅速なリリースを重視します。

プラクティス説明効果
ペアプログラミング2 人で同じコードを書く。1 人がコード、もう 1 人がレビューバグ早期発見、知識共有、コード品質向上
テスト駆動開発(TDD)テストを先に書き、そのテストを通す最小限のコードを書くテストカバレッジ 100%、バグ削減
継続的インテグレーション(CI)コード変更を毎日、複数回マージして自動テスト実行統合エラー早期発見、マージ競合減少
リファクタリングテストを落とさないまま、内部設計を改善する長期保守性向上、技術債削減
YAGNI(You Aren't Gonna Need It)将来必要になるかもしれない機能は実装しない不要な複雑性を避ける

カンバン(Kanban)

カンバンは、スクラムより軽量な反復管理手法です。WIP(Work In Progress)制限 が特徴です。

特徴説明
タスク表示化ToDo(未着手)→ Doing(進行中)→ Done(完了)を視覚化
WIP 制限進行中の項目数を制限し、ボトルネックを見つける
継続的なフロースプリント区切りなく、常に完成したものを納品
適用しやすさスクラムより実装障壁が低い

DevOps と継続的改善

DevOps は、開発と運用を分断せず、一体化させる 考え方です。CI/CD、インフラの自動化、継続的監視を通じて、迅速で安定したリリースを実現します。

要素説明
CI(継続的インテグレーション)コード変更を自動でビルド・テストしてマージGitHub Actions、Jenkins で毎コミット実行
CD(継続的デリバリー)テスト済みコードを本番環境へ自動デプロイ1 日複数回リリース
Infrastructure as Code(IaC)インフラ設定をコードで定義・管理Terraform、CloudFormation
マイクロサービス機能を小さなサービスに分割、独立デプロイAPI で疎結合
コンテナ化Docker、Kubernetes で環境の一貫性確保本番環境とローカル開発環境で同一
監視・アラートログ、メトリクスをリアルタイム監視Datadog、CloudWatch で異常検知

DevOps vs アジャイル

観点アジャイルDevOps
範囲開発プロセス開発 + 運用全体
期間スプリント単位(1〜4 週)継続的なサイクル
フォーカス機能価値の提供品質・安定性・迅速性を同時達成

テスト戦略

テストは、V字モデルでも DevOps でも全工程に組み込まれます。試験では、各テスト段階の目的と手法を区分けすることが重要です。

テストレベルと V字モデルの対応

テストレベル担当検証対象手法
単体テスト開発者個別モジュールホワイトボックス(C0, C1, C2)
統合テストQA・開発チームコンポーネント間の連携ホワイトボックス + ブラックボックス
システムテストQAシステム全体の機能・性能・セキュリティブラックボックス
UAT(利用者受入テスト)ユーザー・QA利用者要件の充足ブラックボックス

ホワイトボックステスト(内部構造を見るテスト)

ソースコードの内部ロジックを検証します。開発者が単体テストで実施します。

カバレッジの種類

カバレッジ説明対象目安
C0(ステートメントカバレッジ)全ての実行文が少なくとも 1 回実行されたか各行最低限のテスト
C1(ブランチカバレッジ)各分岐(if の真・偽)が両方実行されたかif/else、switch-case実務的な基準
C2(パスカバレッジ)全ての実行経路が網羅されたかループ、nested 分岐の全組み合わせ完全だが実現困難

ブラックボックステスト(入出力を見るテスト)

内部コードを知らず、仕様と入出力だけで検証します。QA・ユーザーが実施します。

ブラックボックステストの技法

技法説明
同値分割入力値の範囲を等価なグループに分け、各グループから 1 つ選んでテスト売上額:0円、1〜999999円、1000000円以上
境界値分析値域の境界付近(最小、最大、その前後)をテスト0円、1円、999999円、1000000円
原因結果グラフ入力条件と出力の関係を図で整理し、組み合わせをテスト複雑な業務ルール
決定表テスト複数条件の組み合わせを表で整理してテスト割引条件(会員か、購買金額か、季節か)

テスト結合方式

複数モジュールを統合するときの順序と方法です。

方式順序スタブ/ドライバメリットデメリット
トップダウン統合上位モジュールから統合スタブ必須早期に全体動作確認スタブ開発の手間
ボトムアップ統合下位モジュールから統合ドライバ必須下位の品質が高い上位の動作確認が遅い
サンドイッチ上下同時にスタブ + ドライバ並列化で工期短縮管理が複雑
ビッグバン全モジュール一度に不要準備期間短い障害箇所の特定が困難

スタブ vs ドライバ

観点スタブドライバ
役割呼ばれるモジュールの代役呼ぶモジュールの代役
使う場面トップダウン統合ボトムアップ統合
データベースアクセスモジュールが未完成 → スタブで固定データを返す画面入力モジュールが未完成 → ドライバで固定値を入力

レビュー技法

コード・ドキュメント・設計の品質を高めるために、作成者以外が検証します。

技法参加者進め方メリットデメリット
ウォークスルー作成者が説明、他者が質問・意見相互理解重視。なごやか発見漏れがあるかもしれない準備が少ない
インスペクションチェックリスト使用、明確な役割分担、記録厳密欠陥を体系的に捕捉手間と時間がかかる効果が高い

ビジネスアナリシスと BABOK

システム開発では、いきなり 何を作るか を決めるのではなく、まず なぜ必要なのか誰が何を求めているのか を整理します。この考え方を体系化したものが BABOK です。

BABOK の基本的な見方

BABOK は、ビジネスアナリシスの知識体系をまとめたガイドです。重要なのは、固定された工程順序を規定する本ではない ことです。知識エリアタスク を整理したものであり、ウォーターフォールのように「この順番で必ず実行する」と決めるものではありません。

要求の4分類

試験でよく問われるのは、要求の種類です。要求 と一口に言っても、次のように分かれます。

要求何を表すか
ビジネス要求組織として何を達成したいか受注処理時間を半減したい
ステークホルダー要求利害関係者が何を必要とするか営業担当が外出先で在庫確認したい
ソリューション要求システムが備えるべき要件受注登録機能、検索機能、応答時間 2 秒以内
移行要求新システムへ移るために一時的に必要な要件旧顧客データの移行、操作研修、並行稼働

機能要求ソリューション要求 の中に含まれます。一方で、品質や運用条件のような話は 非機能要求 であり、機能要求 と同一ではありません。

BABOK の設問で切るポイント

問われ方先に見る観点選びやすい答え
要求の分類 を問う組織目標か、利用者要望か、システム要件か、移行準備か4分類で切る
BABOK が定めるもの を問う知識体系か、固定手順か知識体系
機能要求の説明 を問う具体機能か、品質条件か具体機能なら機能要求

知識エリア = 開発フェーズBABOK = 実行順序の標準 と読んだ時点で危険です。BABOK は、ビジネスアナリストが何を考え、何を整理するかをまとめたガイドだと押さえてください。

UML(統一モデリング言語)

システムの構造・動作を図で表現する標準言語です。試験では全 13 種を覚える必要はなく、主な 8 種の役割を理解します。

UML 図の分類

構造図(Static Diagram)- 静止画像

説明用途
クラス図クラス、属性、操作、関係(継承・実装・関連・集約・コンポジション)OOP 設計の詳細
オブジェクト図インスタンスと値クラス図の具体例
コンポーネント図コンポーネント(機能単位)と依存関係アーキテクチャ、インターフェース
配置図ハードウェア、ネットワーク、デプロイ実行環境、分散システムの構成

振る舞い図(Dynamic Diagram)- 流れ

説明用途
ユースケース図アクタ(利用者)、ユースケース(操作)、関係要件定義、システムの外部観
シーケンス図時系列で、オブジェクト間のメッセージ交換相互作用の詳細、API 呼び出し
ステートマシン図状態遷移、イベント、条件ワークフロー、状態管理
アクティビティ図活動のフロー、平行処理、分岐業務プロセス、制御フロー

DFD(データフロー図)

データの流れと処理を図で整理します。要件定義・基本設計で使われます。

DFD の 4 つの構成要素

要素記号説明
プロセスデータを受け取り、処理して出力する活動
データフロー矢印プロセス間を流れるデータ
データストア平行線 2 本ファイル、データベース、帳簿
外部エンティティ四角形システム外の人・組織・他システム

DFD の読み方

  顧客(外部エンティティ)

  注文受け取り(プロセス)
     ↓ 注文データ(データフロー)
  注文ファイル(データストア)

  請求書作成(プロセス)
     ↓ 請求書(データフロー)
  顧客(外部エンティティ)

テスト対応 V字の詳細例

実際の開発現場での対応を示します。

要件定義
  ↓ (What を決める)
UAT レベルの テストケース設計

基本設計
  ↓ (概略設計)
システムテスト・統合テスト レベルの テストケース設計

詳細設計
  ↓ (モジュール仕様)
単体テスト レベルの テストケース設計

実装
  ↓ (コーディング)
デバッグ・単体テスト実行

詳細設計と単体テストの検証 → 品質チェック

基本設計と統合テストの検証 → 統合品質チェック

要件定義と UAT の検証 → 最終確認

契約形態

発注者(クライアント)と受託者の関係で、リスク配分が異なります。試験では、各形態の責任範囲と費用体系の違いを理解します。

契約形態特徴費用体系リスク(受託者)適用場面
請負(一括請負)納期・仕様を確定してから契約。成果物の責任は受託者固定価格(予定原価 + 利益)要件追加、品質問題は受託者負担要件が明確。プロジェクト規模が大きい
準委任(委託)作業時間・作業内容を定義し、努力を提供時間単価 × 実績時間時間超過で赤字のリスク。成果物の責任は発注者と共有要件が曖昧。研究開発、アジャイル案件
SES(System Engineering Service)技術者を派遣し、発注者の指揮下で作業月額固定派遣者の稼働率。成果物責任は発注者長期プロジェクト、スキル補充
派遣(労働者派遣)短期の人材補充日給 × 就業日数法的最低基準。給与・保険は派遣元季節的な人手不足

契約形態の選択基準

状況推奨契約形態
要件が明確に定まっている、納期が決まっている請負
要件が不確実、段階的に進める準委任
短期の技術者補充が必要SES または 派遣
要件が頻繁に変わる(アジャイル)準委任(固定額の準委任もあり)

過去問で戻りやすい補助論点

見積手法の比較

開発見積では、何を基準に規模を見積もるか が手法ごとに異なります。試験では、ソースコード行数を使うのか 利用者から見える機能量を使うのか 過去データで推定するのか を切り分けられることが重要です。

手法何を基準に見積もるか向いている場面注意点
LOC法ソースコード行数使用言語や実装方式がある程度決まっているとき言語によって同じ機能でも行数が変わる
ファンクションポイント法入力、出力、照会、内部ファイル、外部インタフェースなどの機能量要件は見えているが、実装言語や内部方式が未確定なとき機能の数え方に慣れが必要
パラメトリック法過去プロジェクトの統計モデル類似案件の履歴が豊富な組織前提データが弱いと精度が落ちる
ボトムアップ法WBS で分解した個別タスクの積み上げ詳細な作業計画が引ける段階初期段階では粒度が粗くなりやすい

判断のコツは、まだ実装方式が固まっていないなら FP 法詳細設計後で作業分解できるならボトムアップ法類似案件の実績があるならパラメトリック法 と考えることです。

プロトタイピング、スパイラル、反復型、FDD の違い

どれも 一度で作り切らない という点では似ていますが、目的が異なります。

手法主眼向いている場面誤解しやすい点
プロトタイピング試作品で要件理解を深めるUI や業務イメージが曖昧完成品を早く出す手法そのものではない
スパイラルモデル反復しながらリスクを評価・低減する大規模で不確実性や技術リスクが高いただの反復開発ではなく、リスク分析 が中心
反復型 / インクリメンタル開発小さく作って順に機能を広げる早く一部を使い始めたいプロトタイプと違い、作ったものを本番成果物として育てる
FDD(Feature Driven Development)機能単位で短く開発する要件を機能単位で分けやすい業務システムスクラムと同じではない。機能一覧 を軸に進める

オブジェクト指向と UML のつながり

オブジェクト指向は、現実世界の対象と振る舞いを、部品として整理する考え方 です。UML は、その整理結果を図として表す道具です。オブジェクト指向 = UML ではありません。

用語意味受験での見分け方
オブジェクト状態(属性)と振る舞い(メソッド)を持つ具体的な存在顧客A受注No.123 のような実体
クラスオブジェクトの設計図顧客受注 のような型
属性オブジェクトが持つデータ氏名、金額、日付
メソッドオブジェクトが行う処理計算する、送信する
カプセル化データと処理をまとめ、内部を隠す外から勝手に状態を壊しにくくする
継承既存クラスの性質を引き継ぐ共通部分を再利用する
多相性同じ操作名でも対象により振る舞いが変わるprint() が対象ごとに異なる処理をするイメージ

UML でよく問われるのは、クラス図は構造シーケンス図は時系列のやり取りユースケース図は利用者から見た機能 という対応です。何を表したい図か を先に決めてから選びます。

OSS ライセンスの比較

OSS の問題では、無料かどうか ではなく、改変物の公開義務があるか 著作権表示や特許条項がどうなっているか を見ます。

ライセンス特徴受験での着眼点
GPL改変物や派生物も同じ GPL で公開する義務が強いコピーレフト が最重要。派生物の非公開化はしにくい
MIT著作権表示と免責表示を残せば、改変・再配布・商用利用がしやすい最も緩やかな代表例
BSDMIT と同様に緩やか。条項数に違いがある再配布しやすい緩いライセンス と押さえる
Apache License 2.0緩やかな利用条件に加え、特許に関する扱いが明示される企業利用で選ばれやすい理由を問われやすい

コンパイル型とインタプリタ型

プログラミング言語の実行方式は、事前に機械語へ変換するか 実行しながら解釈するか の違いです。

方式処理の流れ強み注意点
コンパイル型ソースコードを一括変換して実行ファイルを作る実行速度が速くなりやすい変更のたびに再コンパイルが必要
インタプリタ型1 文ずつ解釈しながら実行する試行錯誤しやすい実行時のオーバーヘッドが大きくなりやすい

試験では、コンパイル = 事前変換インタプリタ = 実行しながら解釈 をまず押さえます。個々の言語名は時代で変化しても、この軸は安定しています。

スケールアップ、スケールアウト、リフト・シフト、コンバージョン

クラウド移行やシステム更改の問題では、性能の上げ方移行時にどこまで作り替えるか を分けて読みます。

用語意味受験での着眼点
スケールアップ1 台のサーバの CPU や主記憶を強化する垂直 に強くする。台数は増えない
スケールアウト同等サーバを複数追加して負荷分散する水平 に増やす。台数が増える
リフト・シフト既存システムを大きく変えずに実行環境だけ移す早く移行しやすいが、クラウド最適化は弱い
コンバージョン移行に合わせて構造や方式も見直す効果は大きいが、工数とリスクも増える

典型的なつまずき

最重要:要件定義と設計の混同

よくある間違い:「要件定義でも設計でも、どちらでもシステムの仕様を決める工程」として扱う

正解

  • 要件定義:「何を」(What)。ユーザーが何を必要としているか。機能要件と非機能要件
  • 設計:「どう」(How)。その要件を技術でどう実装するか。基本設計と詳細設計

この違いが分かると、試験の大半の問題が解けるようになります。

ウォーターフォール と V字モデルの関係

よくある間違い:「ウォーターフォール」と「V字モデル」は全く別の開発方法

正解

  • ウォーターフォール:企画→要件→設計→実装→テスト→運用の流れ。各工程は順に進む
  • V字モデル:ウォーターフォール + テスト工程との対応を明示したもの

つまり、V字モデルは「ウォーターフォールの進め方を保ちながら、テストをどう対応させるか」を視覚化したものです。別物ではなく、ウォーターフォールの品質管理版です。

アジャイル、スクラム、DevOps を同じレベルで覚える

よくある間違い:「アジャイル、スクラム、DevOps はどれも短期反復の開発方法」

正解:粒度と対象範囲が異なります

  • アジャイル(考え方):短期反復で顧客フィードバックを受けながら進める、という開発哲学
  • スクラム(実装方法):アジャイルを実現するためのフレームワーク。開発プロセスに焦点(PO、SM、イベント、アーティファクト)
  • DevOps(文化):開発と運用の境界を取り払う。CI/CD、IaC、監視を自動化。対象範囲は開発~運用まで

開発手法を「新しい / 古い」だけで見てしまう

よくある間違い:「アジャイルは新しいからいつでも使える。ウォーターフォールは古いから避けるべき」

正解:プロジェクトの特性で選ぶ。アジャイルが向かないプロジェクトもあります

  • ウォーターフォール向き:要件が固い、大規模公共事業、医療・金融システム
  • アジャイル向き:要件が変わりやすい、Web / スタートアップ、顧客と毎日対話できる環境

スタブとドライバの役割が逆

よくある間違い:スタブは「上の代役」、ドライバは「下の代役」

正解

  • スタブ:「呼ばれる側(下)の代役」。下位モジュールがまだできていないとき、上のモジュールをテストするために、下の役割を担当するダミープログラム
  • ドライバ:「呼ぶ側(上)の代役」。上位モジュールがまだできていないとき、下のモジュールをテストするために、上の役割を担当するダミープログラム

覚え方:スタブ = sub(下)、ドライバ = drive(駆動)= 上から下を駆動する

テストカバレッジ(C0, C1, C2)で C2 が最高だと思う

よくある間違い:「C2(パスカバレッジ)>C1(ブランチカバレッジ)>C0(ステートメント)だから、C2 を目指すべき」

正解

  • C0:全ての実行文が1回以上実行される。最も基本。でも漏れが多い
  • C1:全ての if 分岐(True/False)が両方実行される。実務的な基準。試験に出やすい
  • C2:全ての実行経路を網羅。理想的だが、複雑なプログラムでは実現困難。実務では使わない

試験のポイント:実務では C1 が基準になります。

ホワイトボックステストとブラックボックステストをテストレベルで混ぜる

よくある間違い:「ホワイトボックステストは高度、ブラックボックステストは簡単」という混同

正解:これは「テストの視点」であり、「テストレベル」ではありません

  • ホワイトボックステスト:ソースコードの内部構造を知ってテストする。単体テストで使用(開発者が実施)
  • ブラックボックステスト:内部構造を知らず、入出力だけでテストする。統合テスト以降で使用(QA・ユーザーが実施)

つまり、開発の進み方によって、ホワイトボックスはいつ使い、ブラックボックスはいつ使うかが決まります。

見積手法を「どれも規模を見積もる方法」で終わらせる

よくある間違い:「LOC 法も FP 法も、どちらも同じようなもの」

正解

  • LOC 法:コード量を使う
  • FP 法:利用者から見える機能量を使う
  • パラメトリック法:過去実績の統計モデルを使う
  • ボトムアップ法:個別タスクを積み上げる

何を材料に見積もっているか を先に見ると混同しにくくなります。

プロトタイピングとスパイラルモデルを同じ反復だと思う

よくある間違い:「どちらも何度も作り直すから同じ」

正解

  • プロトタイピング:要件理解のための試作品
  • スパイラルモデル:反復ごとにリスク分析と低減を行う進め方

反復していること自体ではなく、何のために反復するか が違います。

OSS ライセンスを「無料かどうか」でだけ判断する

よくある間違い:「OSS はどれも無料で使えるから差は小さい」

正解:実務では 派生物の公開義務再配布条件 が重要です。特に GPL は、改変物の扱いに強い条件があります。MIT、BSD、Apache は比較的緩やかですが、Apache は特許条項まで見ます。

問題を解くときの観点

  • 問われているのは 工程の位置進め方テスト対応契約役割分担 のどれか
  • 要求変更が多いのか、最初に固めやすいのか
  • テストまで含めて整理しているか
  • 開発だけの話か、運用まで含めた話か
  • スタブとドライバが出たら、呼ぶ側か呼ばれる側か を先に確認する
  • UML・DFD が出たら、何を表現しているか(構造か動作か) で図を選ぶ
  • 契約が出たら、要件の確定度リスク配分を見る
  • 見積手法が出たら、コード量機能量統計モデル作業積み上げ のどれかで判断する
  • ライセンスが出たら、派生物の公開義務 があるかを最初に確認する
  • 開発モデルが複数並んだら、要件の不確実性リスクの高さ のどちらを解決したいのかを見る
  • 移行用語が出たら、性能拡張の話か クラウド移行の話か を先に切り分ける

確認問題

問1:スクラム の役割と責任

プロダクトオーナー(PO)、スクラムマスター(SM)、開発チームの 3 つの役割のうち、バックログの優先度付けと管理 を責務とするのはどれか。

解答:プロダクトオーナー(PO)。PO は利用者要望を聞き取り、機能の優先度を決め、バックログを管理します。SM はルール遵守と障害除去、チームは実装を担当します。

問2:V字モデルとテスト対応

以下の組み合わせのうち、正しいのはどれか。

① 要件定義 ↔ 単体テスト ② 詳細設計 ↔ システムテスト ③ 基本設計 ↔ 統合テスト

解答:③。V字モデルでは、要件定義 ↔ UAT、基本設計 ↔ 統合テスト、詳細設計 ↔ 単体テストが対応します。

問3:統合テストの方式選択

下位モジュール A、B が完成し、上位モジュール C が未完成の場合、ボトムアップ統合を採用するのが効率的である。上位モジュール C の代役として用意するべき テスト用プログラム の名称は何か。

解答:ドライバ。ボトムアップ統合では、未完成の上位モジュール(呼ぶ側)の代役として、ドライバを用いて下位モジュール(呼ばれる側)を検証します。

問4:見積手法の選択

要件はほぼ固まっているが、使用言語や内部設計はまだ決まっていない。利用者から見える入力・出力・照会などの機能量をもとに、早い段階で概算したい。このとき、最も適した見積手法は何か。

解答:ファンクションポイント法。コード行数ではなく、利用者から見える機能量で見積もるため、実装言語が未確定でも使いやすいです。

問5:OSS ライセンスの判定

自社で OSS を改変して製品に組み込む。派生物の公開義務が強いライセンスを避けたい。GPL、MIT、BSD、Apache License 2.0 のうち、最も注意が必要なのはどれか。

解答:GPL。改変物や派生物にも同系統の公開義務が及ぶため、商用製品への組み込みでは条件確認が特に重要です。

問6:性能拡張と移行方式の判定

既存の業務システムをクラウドへ短期間で移したいが、アプリケーションの構造は当面変えない。また、処理能力不足には同等サーバを追加して対応したい。このときの組み合わせとして適切なのは何か。

解答リフト・シフトスケールアウト。前者は大きく作り替えずに環境だけ移す方法、後者はサーバ台数を増やして水平に処理能力を上げる方法です。

関連ページ

このページは役に立ちましたか?

評価とひとことを残してもらえると、内容と導線の改善に使えます。

Last updated on

On this page

このページの役割学習のポイント試験で問われる観点定義と仕組み共通フレーム(SLCP)と工程共通フレームとはなぜ共通フレームが必要かSLCP の7工程と役割工程間の関係を図で理解する要件定義と設計の違いなぜ分ける必要があるのか「何を」(要件定義)と「どう」(設計)の違い具体例で理解する機能要件と非機能要件機能要件(Functional Requirements)非機能要件(Non-Functional Requirements)要件定義技法開発モデル比較開発モデル選択の基準代表的な開発モデルの比較V字モデルV字モデルの概念なぜ「V字」の形をしているのかV字モデルの工程とテスト対応V字モデルが解決する問題V字モデルのメリットV字モデルのデメリット・課題ウォーターフォール vs V字モデルアジャイル開発アジャイルとはなぜアジャイルが必要かアジャイル宣言(4つの価値)スクラム(Scrum)の 3 つの役割、5 つのイベント、3 つの作成物スクラムの 3 つの役割と試験対策スクラムの 5 つのイベント(タイムボックス)スクラムの 3 つの成果物(アーティファクト)XP(Extreme Programming)の実践カンバン(Kanban)DevOps と継続的改善DevOps vs アジャイルテスト戦略テストレベルと V字モデルの対応ホワイトボックステスト(内部構造を見るテスト)カバレッジの種類ブラックボックステスト(入出力を見るテスト)ブラックボックステストの技法テスト結合方式スタブ vs ドライバレビュー技法ビジネスアナリシスと BABOKBABOK の基本的な見方要求の4分類BABOK の設問で切るポイントUML(統一モデリング言語)UML 図の分類構造図(Static Diagram)- 静止画像振る舞い図(Dynamic Diagram)- 流れDFD(データフロー図)DFD の 4 つの構成要素DFD の読み方テスト対応 V字の詳細例契約形態契約形態の選択基準過去問で戻りやすい補助論点見積手法の比較プロトタイピング、スパイラル、反復型、FDD の違いオブジェクト指向と UML のつながりOSS ライセンスの比較コンパイル型とインタプリタ型スケールアップ、スケールアウト、リフト・シフト、コンバージョン典型的なつまずき最重要:要件定義と設計の混同ウォーターフォール と V字モデルの関係アジャイル、スクラム、DevOps を同じレベルで覚える開発手法を「新しい / 古い」だけで見てしまうスタブとドライバの役割が逆テストカバレッジ(C0, C1, C2)で C2 が最高だと思うホワイトボックステストとブラックボックステストをテストレベルで混ぜる見積手法を「どれも規模を見積もる方法」で終わらせるプロトタイピングとスパイラルモデルを同じ反復だと思うOSS ライセンスを「無料かどうか」でだけ判断する問題を解くときの観点確認問題関連ページ