開発モデルと工程
概要
- 日程: Day 2 / セッション 06
- 時間: 13:00-13:30
- 形式: 座学
- ゴール: 代表的な7つの開発モデル(ウォーターフォール/V字/アジャイル/スパイラル/RAD/インクリメンタル/プロトタイピング)の特徴を1文ずつ説明でき、要件→仕様→設計→実装→テストの5工程と、機能要件・非機能要件の違いを述べられる
- 学習形式: AI協働型(自チームに最適な開発モデルをAIと相談する)
導入(5分)
午前中は「何を作るか(情報モデルと機能・画面)」を固めました。午後は「どう作るか(システム設計の準備)」に視点を移します。
「どう作るか」の最初の選択は**開発モデル(どんな進め方をするか)**です。「とりあえずコードを書き始める」では事故ります。プロジェクトの性質に合わせて進め方を選ぶ必要があります。
このセッションでは代表的な7つの開発モデルと、共通の5つの工程、そして「機能要件と非機能要件の違い」を学びます。次のセッションでは、自チームの非機能要件を実際に書き出す実習に入ります。
本編(20分)
1. 開発の5つの工程
どの開発モデルでも、基本的な活動は同じ5つです。順番や繰り返し方が違うだけです。
(Requirements)"] --> S["仕様
(Specification)"] S --> D["設計
(Design)"] D --> I["実装
(Implementation)"] I --> T["テスト
(Test)"]
- 要件:誰のために何を実現したいか(ペルソナとゴール)
- 仕様:要件を満たすために、何を提供するか(機能・画面・データ)
- 設計:仕様をどう作るか(アーキテクチャ・技術選定)
- 実装:実際にコードを書く
- テスト:要件・仕様を満たしているか確認する
ここがポイント
「要件」と「仕様」の違いがあいまいだと炎上します。要件は「何のために」、仕様は「何を」。例えば「家計簿を見える化したい」が要件、「月別の支出グラフ機能」が仕様。
コラム:「ソフトウェア危機」と工程の発見
1960年代、ソフトウェア開発の遅延と失敗が世界中で頻発し「ソフトウェア危機」と呼ばれました。NATOの国際会議(1968年)で「ソフトウェアエンジニアリング」という言葉が初めて使われ、製造業から学んだ「工程を分けて管理する」発想が導入されました。「要件→設計→実装→テスト」の流れは、この危機への処方箋として生まれたのです。
2. 7つの代表的な開発モデル
| モデル | 1文で言うと | 向く案件 |
|---|---|---|
| ウォーターフォール | 上流から下流へ一方向に進む | 要件が固まった大規模案件 |
| V字モデル | ウォーターフォール+各工程に対応するテストを定義 | 信頼性重視の業務系・組込系 |
| アジャイル | 短期間反復で動くものを作り続ける | 要件が変わる新規サービス |
| スパイラル | リスクを評価しながら螺旋状に拡大 | 不確実性の高い大規模研究開発 |
| RAD | 専用ツールで超高速に作る | 短納期の業務効率化 |
| インクリメンタル | 機能を分割し、順に追加して完成 | 部分リリース可能な業務系 |
| プロトタイピング | 試作品でユーザー検証→本開発 | UI/UXが鍵になる新サービス |
一方向"] --> V["V字
テスト対応"] AG["アジャイル
短期反復"] SP["スパイラル
螺旋拡大"] RAD["RAD
高速"] INC["インクリメンタル
機能追加"] PT["プロトタイピング
試作検証"]
ここがポイント
「正しいモデル」は存在しません。プロジェクトの「規模・不確実性・チーム成熟度・納期」で最適解が変わります。研修テーマは「小規模・新規・チーム未熟・短納期」なので、アジャイル + プロトタイピングのハイブリッドが現実的です。
コラム:ウォーターフォールの誤解
発明者と言われるWinston Royceの1970年論文「Managing the Development of Large Software Systems」は、実は「上から下に一直線で進むのは危険だ」と警告している論文でした。論文には反復のアイデアも書かれていました。なのに後世の人々は「上から下に進める綺麗な図」だけを取り出して、ウォーターフォールとして広めてしまったのです。論文を読まずに引用する怖さを示す名作です。
3. 機能要件と非機能要件
要件は大きく2種類に分かれます。
| 種類 | 意味 | 例 |
|---|---|---|
| 機能要件 | 「何ができるか」 | レシピを登録できる、検索できる |
| 非機能要件 | 「どんな品質で動くか」 | 3秒以内に応答、99.9%稼働、誰でも使える |
何ができるか"] 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つに決めようとする | 現実はハイブリッドが多い。要件定義はウォーターフォール、実装はアジャイル、など |