📖 テーマ設定
🔊 音声設定
1.2
1.0
1.0
▶️ 再生コントロール
🎵 BGM設定
0.3
🔔 効果音設定
0.3

開発モデルと工程

概要

  • 日程: Day 2 / セッション 06
  • 時間: 13:00-13:30
  • 形式: 座学
  • ゴール: 代表的な7つの開発モデル(ウォーターフォール/V字/アジャイル/スパイラル/RAD/インクリメンタル/プロトタイピング)の特徴を1文ずつ説明でき、要件→仕様→設計→実装→テストの5工程と、機能要件・非機能要件の違いを述べられる
  • 学習形式: AI協働型(自チームに最適な開発モデルをAIと相談する)

導入(5分)

午前中は「何を作るか(情報モデルと機能・画面)」を固めました。午後は「どう作るか(システム設計の準備)」に視点を移します。

「どう作るか」の最初の選択は**開発モデル(どんな進め方をするか)**です。「とりあえずコードを書き始める」では事故ります。プロジェクトの性質に合わせて進め方を選ぶ必要があります。

このセッションでは代表的な7つの開発モデルと、共通の5つの工程、そして「機能要件と非機能要件の違い」を学びます。次のセッションでは、自チームの非機能要件を実際に書き出す実習に入ります。

本編(20分)

1. 開発の5つの工程

どの開発モデルでも、基本的な活動は同じ5つです。順番や繰り返し方が違うだけです。

flowchart LR R["要件
(Requirements)"] --> S["仕様
(Specification)"] S --> D["設計
(Design)"] D --> I["実装
(Implementation)"] I --> T["テスト
(Test)"]
  • 要件:誰のために何を実現したいか(ペルソナとゴール)
  • 仕様:要件を満たすために、何を提供するか(機能・画面・データ)
  • 設計:仕様をどう作るか(アーキテクチャ・技術選定)
  • 実装:実際にコードを書く
  • テスト:要件・仕様を満たしているか確認する

ここがポイント

「要件」と「仕様」の違いがあいまいだと炎上します。要件は「何のために」、仕様は「何を」。例えば「家計簿を見える化したい」が要件、「月別の支出グラフ機能」が仕様。

コラム:「ソフトウェア危機」と工程の発見

1960年代、ソフトウェア開発の遅延と失敗が世界中で頻発し「ソフトウェア危機」と呼ばれました。NATOの国際会議(1968年)で「ソフトウェアエンジニアリング」という言葉が初めて使われ、製造業から学んだ「工程を分けて管理する」発想が導入されました。「要件→設計→実装→テスト」の流れは、この危機への処方箋として生まれたのです。

2. 7つの代表的な開発モデル

モデル 1文で言うと 向く案件
ウォーターフォール 上流から下流へ一方向に進む 要件が固まった大規模案件
V字モデル ウォーターフォール+各工程に対応するテストを定義 信頼性重視の業務系・組込系
アジャイル 短期間反復で動くものを作り続ける 要件が変わる新規サービス
スパイラル リスクを評価しながら螺旋状に拡大 不確実性の高い大規模研究開発
RAD 専用ツールで超高速に作る 短納期の業務効率化
インクリメンタル 機能を分割し、順に追加して完成 部分リリース可能な業務系
プロトタイピング 試作品でユーザー検証→本開発 UI/UXが鍵になる新サービス
flowchart TB WF["ウォーターフォール
一方向"] --> V["V字
テスト対応"] AG["アジャイル
短期反復"] SP["スパイラル
螺旋拡大"] RAD["RAD
高速"] INC["インクリメンタル
機能追加"] PT["プロトタイピング
試作検証"]

ここがポイント

「正しいモデル」は存在しません。プロジェクトの「規模・不確実性・チーム成熟度・納期」で最適解が変わります。研修テーマは「小規模・新規・チーム未熟・短納期」なので、アジャイル + プロトタイピングのハイブリッドが現実的です。

コラム:ウォーターフォールの誤解

発明者と言われるWinston Royceの1970年論文「Managing the Development of Large Software Systems」は、実は「上から下に一直線で進むのは危険だ」と警告している論文でした。論文には反復のアイデアも書かれていました。なのに後世の人々は「上から下に進める綺麗な図」だけを取り出して、ウォーターフォールとして広めてしまったのです。論文を読まずに引用する怖さを示す名作です。

3. 機能要件と非機能要件

要件は大きく2種類に分かれます。

種類 意味
機能要件 「何ができるか」 レシピを登録できる、検索できる
非機能要件 「どんな品質で動くか」 3秒以内に応答、99.9%稼働、誰でも使える
flowchart LR Req["要件"] --> FR["機能要件
何ができるか"] Req --> NFR["非機能要件
どんな品質か"] FR --> Ex1["レシピ登録機能"] FR --> Ex2["検索機能"] NFR --> Ex3["3秒以内応答"] NFR --> Ex4["年99.9%稼働"] NFR --> Ex5["10年後も保守可能"]

非機能要件の代表カテゴリ

  • 性能:応答時間、同時利用数
  • 可用性:稼働率、障害復旧時間
  • 運用性:監視、ログ、デプロイ容易性
  • 保守性:コード可読性、ドキュメント
  • セキュリティ:認証、暗号化、ログ
  • 移行性:データ移行、互換性

ここがポイント

非機能要件は、機能要件よりも後で気付くと致命的です。「動くものは出来たが10秒待たないと表示されない」では使われません。次のセッションで自チームの非機能要件を書き出します。

コラム:IPA非機能要求グレード

日本のIPA(情報処理推進機構)が、非機能要件を整理した「非機能要求グレード」という無料ガイドを公開しています。可用性、性能、運用、移行、セキュリティなど6カテゴリで200項目超のチェックリストになっています。最初に見ると圧倒されますが、業界標準として非常に参考になります。次のセッションで活用します。

💬 AIに聞いてみよう

  • 「私のチームの開発テーマ『○○』に最適な開発モデルは?理由つきで提案して」
  • 「ウォーターフォールとアジャイルを併用する事例はある?」
  • 「機能要件と非機能要件で『迷う』例を教えて」

まとめ(5分)

開発モデルの選択肢が頭に入り、要件には機能要件と非機能要件があると分かりました。

次のセッション(Session07)は40分の実習。自チームの非機能要件を10項目以上書き出します。AIをフル活用しないと10項目は意外と出ません。

🔄 振り返りチェック

  • 7つの開発モデルを、1文ずつで言えますか?
  • 5つの工程を順番に言えますか?
  • 機能要件と非機能要件の例を、自分のテーマで1つずつ挙げられますか?

補足資料

  • 参考リンク:IPA 非機能要求グレード、Winston Royce 1970年論文
  • 発展課題:自宅で使っているアプリ(LINE/Instagram/銀行アプリ)の開発モデルを推定する

学習ガイド

想定される質問と回答例

質問 ヒント
アジャイルとスクラムは同じ? アジャイル=考え方、スクラム=具体的フレームワーク(XPなども)
V字モデルとウォーターフォールの違い V字は各工程に対応するテストを明示。ウォーターフォールはテストが工程末尾のみ
プロトタイピングは捨て前提? 2種類ある。「捨てるプロトタイプ」と「育てるプロトタイプ」

つまずきやすいポイント

つまずきポイント ヒント
「アジャイル=計画なし」と誤解 アジャイルでも計画はある。短期反復で見直すだけ
機能要件と非機能要件の境界が曖昧 「動作の有無」が機能、「どの程度で動くか」が非機能
開発モデルを1つに決めようとする 現実はハイブリッドが多い。要件定義はウォーターフォール、実装はアジャイル、など
読み上げを開始します...

AIに質問する