第1章:組織の現状課題とSAFe/W字モデル導入の意義
1.1 現行ウォーターフォール開発における手戻りコストと工程間滞留の構造
開発現場で起きている一番のロスは、「作業が止まっている時間」と「終盤の大規模な手戻り」です。
現在の組織体制を見てみると、以下のようにチームが分断されています:
- 要求・仕様を決める「設計チーム」
- 実装を進める「詳細設計・実装・単体テストチーム」
- テストを設計・実行する「テストチーム」
- 最後に合否を判定する「品質保証(QA)チーム」
各チームが独立しているため、仕事は「仕様書」「成果物一式」という大きなバッチでバケツリレーのように渡されます。
この構造には、現場を苦しめる典型的なボトルネックが存在します:
- 見えない待ち時間(Handoffs & Delays):前工程のドキュメント作成や承認が完了するまで、後工程のチームは着手できません。製品開発にかかるリードタイムの大半は、作業時間ではなく「順番待ちの時間」に消えています。
- 仕様の曖昧さと手戻りの増幅:設計段階の認識齟齬やエッジケースの考慮漏れは、文字だけの仕様書ではなかなか見つかりません。コードが完成し、数ヶ月後の結合テストやQA審査になって初めて重大な欠陥として表面化します。
- 修正コストの爆発:下流で見つかった仕様不備は、設計書・コード・テストケースのすべてへ差し戻されます。上流なら文書修正で済んだ問題が、終盤では何十倍もの工数と納期遅延を引き起こします。
チームごとに部分最適化を進めても、開発全体としてのリードタイムが縮まらないのは、この「工程間の滞留」が原因です。
1.2 SAFeのコア概念:ビルトイン・クオリティとフロー
こうした停滞を打破するヒントが、SAFe(Scaled Agile Framework)の2つの考え方にあります。
① ビルトイン・クオリティ(作り込み品質)
「テストは最後にQAがやるもの」という発想を根本から変えます。
後から不良品を弾くのではなく、要件定義、アーキテクチャ設計、コーディングの各段階に検証を組み込み、その場で品質を担保していく姿勢です。
- 仕様書を書いた時点で、受け入れ基準を明確にする。
- コードを書いた時点で、自動テストと静的検証を通す。
不具合を次の工程へ流さないことが、結果として一番のスピードアップにつながります。
② フローの最適化(Make Value Flow Without Interruptions)
仕事を淀みなく流すための原則です。
- 仕掛品(WIP: Work in Process)の制限:あれもこれも同時に着手せず、抱えるタスクの上限を決める。
- 小バッチ化(Smaller Batches):一度に大きな塊で渡さず、小さな機能単位で動かして検証へ回す。
- フィードバックの短縮:早いサイクルで動くものを作り、関係者で確認する。
作業者がどれだけ忙しく働いているかではなく、「要求がどれだけスムーズに完成品へ形を変えているか」に着目します。
1.3 開発標準を逸脱しないハイブリッド運用の基本方針
「アジャイルに変えよう」と号令をかけ、現行の開発標準やゲート審査を廃止するのは現実的ではありません。品質基準や法規適合、社内規程を守るためのウォーターフォールの外枠は、組織にとって不可欠な資産です。
目指すべきは、「外枠はウォーターフォール、内側は同期型のW字反復」 というハイブリッド運用です。
-
開発標準(外枠)はそのまま守る
- 基本設計、詳細設計、実装、テスト、QA審査というフェーズゲートは動かしません。
- 規定の設計書やテスト報告書といった納品成果物体系も維持します。
-
工程の進め方(内側)をアップデートする
- W字モデルの実践:設計フェーズの開始と同時に、テストチーム・QAチームがテスト条件の検討や仕様レビューに入ります。開発ライン(第1のV)と検証ライン(第2のV)を最初から並走させます。
- カデンス(一定のリズム)による同期:フェーズの期間中、2〜4週間程度の固定リズムを刻み、画面モックアップや部分的なシミュレーション(動く成果物)を使って関係者全員で進捗と仕様の整合性を確認します。
- 合同調整(PI Planningの適用):節目ごとに設計・実装・テスト・QAの担当者が一堂に会し、依存関係やリスク、受け入れ基準を事前に合意します。
「ルールを破ってアジャイルをやる」のではなく、「開発標準の品質ゲートを確実に一発で通過するために、前倒しで品質を作り込むカイゼン活動」として位置づけます。社内規程と現場のスピード感を両立させるアプローチです。
第2章:上流工程におけるフロントローディングと要求の早期妥当性確認
2.1 なぜドキュメントだけでは仕様の正しさを判断できないのか
仕様書を何十ページも読み込んで「これで完璧だ」と承認印を押したのに、納品直前に「思っていた動きと違う」と言われる。現場で何度も繰り返されてきた光景です。
文字や表だけのドキュメントには、構造的な限界があります:
- 人による解釈のズレ:「速やかに画面を更新する」「分かりやすいエラー表示」といった表現は、設計者、実装者、顧客で思い浮かべるイメージがバラバラになります。
- 動きや操作感の想像がつかない:静止した画面レイアウトを見ても、ボタンを押したあとの反応速度、画面遷移のテンポ、実運用での使い勝手までは見えてきません。
- 検証(Verification)と妥当性確認(Validation)の混同:ドキュメント審査で確認できるのは、「仕様書の体裁が整っているか(正しく作られているか)」だけです。「そもそも顧客が本当に求めているものか(正しいものを作っているか)」は、動くものを見ないと判断できません。
「文字で書いて合意したから正しい」という前提そのものを疑う必要があります。
2.2 プロトタイプ・紙芝居を活用した「GUI確認会」の標準化手法
お客様も、実際に触れる画面や動くものを目にするまで、自分の本当の要求に気づけないことがほとんどです。
そこで有効なのが、コードを書く前に実施する「GUI確認会」です。
ツールと見せ方の工夫
いきなり本番同様のプログラムを作る必要はありません。目的に合わせて手段を選びます:
- 画面イメージの紙芝居:PowerPointや画像作成ツールで画面の流れを並べただけのもの。業務フローと画面遷移の整合性を確認するならこれで十分です。
- クリックできるモックアップ:Figmaなどのプロトタイピングツールを使い、画面クリックで遷移するモック。実際の操作感や手数を体感してもらえます。
開発標準を逸脱させない運用ルール
「勝手に仕様変更を増やされる場」にならないよう、開発標準の中に正規のイベントとして組み込みます:
- 開催タイミング:基本設計の終盤、仕様を固めて詳細設計へ渡す前のタイミングで実施。
- 確認会のゴール:「要求の変更を受け付ける場」ではなく、「設計意図とお客様の業務イメージが合致しているかを確認・固定する場」と定義する。
- 議事録と承認フロー:確認会で出た軽微な調整は設計書に反映し、承認印をもらう根拠資料としてモックのキャプチャを添付する。
これで、手戻りの爆弾を上流のペーパーワーク段階で安全に処理できます。
2.3 MBSE(モデルベース・システムズエンジニアリング)による単一情報源(SSOT)の構築
画面まわりだけでなく、システムの内部構造やデータ連携でも同じ問題が起きます。
ExcelやWordで書かれた設計書は、改訂を重ねるうちに必ず「あっちとこっちで書いてあることが違う」という矛盾を生みます。
これを解決するのが、MBSE(モデルベース・システムズエンジニアリング) による「単一の正確な情報源(SSOT: Single Source of Truth)」です。
- 文字からモデルへ:SysMLなどの共通言語を使い、システム要求、機能構造、振る舞い(状態遷移)をひとつのデジタルモデルとして表現します。
- 仕様の不整合を機械的に防ぐ:モデル内のデータはすべて裏側でつながっています。ある機能の入出力を変更すれば、関連するブロックや状態遷移図にも自動で反映され、記述の食い違いが起きません。
- 開発標準との両立:社内の提出フォーマットがWordやExcelなら、モデルから帳票を自動出力すれば済みます。二重管理の手間をかけずに、設計の中身だけを現代化できます。
2.4 設計初期における非機能要件とエッジケースの洗い出し
手戻りの原因の多くは、正常系の仕様漏れではなく、「異常系・境界値・非機能要件」の放置です。
詳細設計や実装が進んでから、
「通信が途切れたときのタイムアウト処理はどうする?」
「同時に100件アクセスがあったら耐えられるのか?」
と気づいても、アーキテクチャの根本から作り直す羽目になります。
上流段階でこれらを潰すためのポイントです:
- 設計段階からテスト設計者・QAを巻き込む:設計チームだけでレビューをしても、正常系シナリオばかりに目が行きがちです。「意地悪な入力」「通信遮断」「極端な負荷」を日常的に考えているテスト担当者の目を、基本設計の段階で入れます。
- 状態遷移とエッジケースのモデル化:電源断、センサー異常、リトライ処理といった複雑な条件は、MBSEの状態遷移図に落とし込みます。ツールのシミュレーション機能を使えば、デッドロックや未定義の遷移をコード作成前に機械的に検出できます。
- 非機能要件の数値化:応答時間や復旧目標時間といった曖昧になりがちな要件を、受け入れ条件として具体的な数値で定義し、設計書に明記しておきます。
実装チームへバトンを渡す前に、設計の穴をできる限り塞いでおく。これがフロントローディングの本質です。
第3章:W字モデルによるテスト設計の前倒し(シフトレフトの実践)
3.1 開発工程とテスト分析・設計工程の並行化(第1のVと第2のVの同期)
従来のV字モデルでは、「実装が終わってからテストチームが動き出す」のが当たり前でした。
しかし、このやり方ではテストチームが仕様の矛盾や考慮漏れに気づくのがどうしても開発終盤になります。見つかったときにはコードもドキュメントも出来上がっており、手戻りの被害は甚大です。
そこで導入するのがW字モデルです。
開発を進める「第1のV」と並行して、検証を進める「第2のV」を最初期から走らせます。
- 基本設計と同時にテスト計画・分析をスタート:設計チームが要件や外部仕様をまとめている横で、テスト設計チームがテスト観点や検証シナリオの骨子を作り始めます。
- 仕様書をテストの視点でレビューする:「この条件のとき、画面はどう動くのか?」「例外時の復旧手順は決まっているか?」といった疑問を設計段階でぶつけます。
- 開発標準との整合性:テスト実施そのものを前倒しするわけではありません。あくまで「テスト設計と分析」を前倒し(シフトレフト)するため、ウォーターフォールの開発標準や承認ゲートを壊さずに品質を底上げできます。
テストチームの役割を「最後の試験係」から「上流の品質パートナー」へ切り替える取り組みです。
3.2 「何をもって完成とするか」:受け入れ基準(Acceptance Criteria)の早期定義
仕様書にありがちな「適切に処理すること」「高速に応答すること」といった曖昧な記述は、実装者とテスト担当者の間で必ず解釈のズレを生みます。
これを防ぐ決め手が、SAFeやアジャイルで重視される 「受け入れ基準(Acceptance Criteria)」の早期定義 です。
-
条件と結果をセットで書く:
- 「ユーザーが未入力のまま送信ボタンを押した場合、エラーメッセージAが表示され、入力欄が赤枠で強調されること」
- 「通信切断が5秒以上続いた場合、再接続ダイアログを表示してリトライを3回試行すること」
- 受入テスト駆動開発(ATDD)の発想を取り入れる:コードを書く前に、「このテストをパスしたら機能完成」という合意基準を設計者・実装者・テスト担当者の3者で揃えます。
- 実装者の迷いをなくす:ゴールが明確になれば、実装中の手戻りや手探りのコーディングが激減します。単体テストの項目も自然と定まります。
3.3 形式手法・静的レビュー・モデルベーステスト(MBT)による仕様欠陥の早期摘出
人間の目視レビューだけに頼ると、どうしても複雑な組み合わせや状態遷移の抜け漏れを見落とします。
ここで威力を発揮するのが、形式手法の考え方やモデルベーステスト(MBT)です。
-
状態遷移と組み合わせの自動網羅:
- Excelのデシジョンテーブルを手作業で作る代わりに、直交表ツールやペアワイズ法を活用し、最小限の工数で漏れのないテストケースを機械的に導出します。
- 状態遷移モデル(SysMLや状態遷移表)をベースに、デッドロックや未定義の遷移がないかを静的にチェックします。
-
モデルベーステスト(MBT)によるケース自動生成:
- 設計モデルからテストケースやテストスクリプトを自動出力します。仕様が変更された場合も、モデルを直せばテストケースが追従するため、二重メンテの破綻を防げます。
-
静的コード解析とアーキテクチャ制約チェック:
- コードが書かれた瞬間から静的解析ツールを走らせ、コーディング規約違反、メモリリークの危険性、循環参照などを自動検出します。
「テストを実行する前」に潰せる欠陥は、すべて上流のロジック検証で刈り取っておきます。
3.4 実装前のシミュレーション検証環境(MiL/SiL/仮想化)の活用
組み込みや複合システムでよくあるのが、「実機やハードウェアが届かないとテストができない」という待ち時間です。
ハードの完成を待っている間に時間が過ぎ、結合フェーズでソフトウェアのバグが一気に噴き出します。
このボトルネックを壊すのが、シミュレーションと仮想化環境です。
- MiL(Model-in-the-Loop):制御アルゴリズムやシステムモデルの段階で、シミュレータ上で動作を検証。コード化する前に仕様の妥当性を確かめます。
- SiL(Software-in-the-Loop):生成・実装されたC/C++などのコードを、PC上のシミュレーション環境で動作検証。ターゲット基板がなくてもロジックのバグを洗い出せます。
- 仮想ECU・モック環境の活用:対向システムやセンサーの振る舞いを仮想化し、通信エラーや高負荷などの「実機では再現しにくい過酷なエッジケース」を早期にテストします。
実機が組み上がる頃には主要なソフト欠陥がすでに潰れている。これがフロントローディングを成功させる基盤となります。
第4章:チームサイロを越える合同同期と依存関係マネジメント
4.1 設計・実装・テスト設計・QAが協調する合同計画(PI Planning型合意会)の設計
ウォーターフォール組織の最大の問題は、「隣のチームが何を作っているか、いつ終わるのか」がドキュメントの受け渡しまで分からない点にあります。
この分断を解消する手段が、SAFeの中核イベントである PI Planning(プログラム・インクリメント計画)の仕組みを応用した「合同合意会」 です。
-
全チームのキーパーソンが一堂に集まる:
設計、実装、テスト設計、品質保証(QA)から代表者が同じ場(対面またはオンライン)に集まります。 -
依存関係(依存の糸)をその場で可視化する:
「設計のこのデータ定義が出ないと、テスト設計が着手できない」「外部IFのスタブが提供されないと、実装チームの単体検証が進まない」といったチーム間の制約を、プログラムボード(模造紙やツール)上で線をつないで可視化します。 -
その場で合意し、エスカレーションをなくす:
メールや課題管理ツールの往復で何日もかけていた調整を、2〜4時間の合同セッションの中で直接対話によって解決します。
組織図を書き換える必要はありません。工程の節目に「全員で顔を合わせて依存関係を同期させる場」を差し込むだけで、サイロの壁は格段に低くなります。
4.2 工程間の待ち時間(Handoffs)を減らす仕掛品(WIP)制限と小バッチ化
「チーム全員が忙しく働いているのに、プロジェクト全体は遅れている」。
この現象の正体は、工程間のキュー(順番待ち)に積み上がった大量の 仕掛品(WIP: Work in Process) です。
リトル・ジャイアントの法則(待ち時間=仕掛品数÷処理速度)が示す通り、タスクを同時に抱え込むほどリードタイムは急激に伸びます。
-
仕掛品制限(WIP制限)を設ける:
各チームが同時に抱えるタスクに上限を設定します。未完了のものが終わるまで、新しい作業に着手しません。 -
小バッチ化(Smaller Batches)で流す:
機能(Feature)を大きな塊で一度に渡すのではなく、画面単位、API単位といった小さなスライスに分割して後工程へ順次パスします。 -
手渡し(Handoffs)の滞留をなくす:
設計チームが全仕様書を書き終えるのを待たずに、完成した機能スライスからテスト設計チームや実装チームへ引き渡すことで、後工程の「手待ち時間」を劇的に削ります。
仕事を一度にたくさん動かそうとせず、小さく区切って確実に終わらせる。これがフローを最速化する鉄則です。
4.3 客観的な動作検証に基づく内部マイルストーンの設定(動く成果物での評価)
ウォーターフォールの進捗管理は「設計書レビュー完了(進捗率30%)」「詳細設計完了(進捗率60%)」といった書類ベースの主観的な評価に偏りがちです。
しかし、ドキュメントの承認が進んでいても、システムが本当に動くかは終盤まで分かりません。
SAFeの原則#5「動くシステムの客観的評価に基づくマイルストーン」を工程内に組み込みます。
-
紙の進捗から「動くもの」の進捗へ:
「設計書が何枚書けたか」ではなく、「実際に動くモックやシミュレーション環境で検証が通ったか」を進捗の物差しにします。 -
2〜4週間ごとのシステムデモ(System Demo)の実施:
ウォーターフォールの長いフェーズの最中でも、定期的な同期リズム(カデンス)を設定し、設計・実装・テスト・顧客の前で動く成果物を実演します。 -
事実に基づいた軌道修正:
画面遷移、通信データのやり取り、計算ロジックが実際に動く姿を三現主義(現場・現物・現実)で確認することで、進捗の偽りの安心感(ステータスインフレ)を排除します。
4.4 品質保証(QA)部門と連携した継続的適合(Continuous Compliance)とトレーサビリティ
品質保証部門がアジャイル的な動きに懸念を示す最大の理由は、「開発標準の証跡や監査基準(ASPICE、機能安全、ISOなど)が満たされなくなるのではないか」という不安です。
この不安を解消し、QAを強力な味方につける鍵が 「継続的適合(Continuous Compliance)」 です。
-
手作業の証跡集めをやめる:
フェーズゲート審査の直前になって、Excelで要件とテスト結果の対応表を手作業で突き合わせる突貫作業を廃止します。 -
双方向トレーサビリティ(Bi-directional Traceability)の自動化:
要件ID、設計モデル要素、ソースコードのコミット、テストケース、不具合管理をツールチェーンでID連携させます。仕様が1箇所変わった際の影響範囲も瞬時に追跡できます。 -
CI/CDパイプラインによるコンプライアンスの自動維持:
コードのコミットやビルドのたびに、静的解析、単体テスト結果、カバレッジ測定を自動実行し、品質監査用ログをシステムが自動生成します。 -
ゲート審査を一発で通すための布石:
QA部門は最終工程で大量の不備を指摘する「取り締まり役」から、パイプラインの監視ルールや受け入れ基準を事前に定義する「品質アーキテクト」へと役割を進化させます。
開発標準のルールを回避するのではなく、デジタル技術でルール適合を自動化・高度化するアプローチです。社内監査や品質保証部門からも歓迎される形でプロセス改善を定着させることができます。
第5章:開発標準と調和させる段階的導入ロードマップと定着化
5.1 「アジャイル宣言」をせずに品質改善活動として進める導入アプローチ
組織に新しい手法を持ち込むとき、一番やってはいけないのが「わが社も今日からアジャイルやSAFeを導入します」と高らかに宣言することです。
伝統的な開発標準を持つ組織では、「アジャイル=ドキュメントを書かない無法地帯」「品質を軽視するスピード偏重」と警戒され、品質保証部門や経営層から強固な防衛ラインを敷かれます。
摩擦を起こさずに現場を変える鉄則です:
-
看板は「現行ウォーターフォールの品質改善活動」にする:
- 「アジャイル導入」ではなく、「フェーズゲート審査の一発通過率を上げるためのフロントローディング活動」と名付けます。
- 「スクラムを組む」ではなく、「設計とテストの事前調整会(W字モデル)を開く」と表現します。
-
開発標準の規程を1行も変えずに始める:
- 提出すべき設計書、テスト仕様書、エビデンスのフォーマットには手をつけません。
- 承認フローもそのまま維持し、工程の「中身の進め方」だけを同期型に変えていきます。
-
QA部門を最初の味方にする:
- QAに「後からルールを押し付ける」のではなく、「最終工程での不具合差し戻しを減らし、皆さんの手戻り残業を減らしたい」と持ちかけ、上流の受け入れ基準づくりに巻き込みます。
名前はどうでもいい。欲しいのは「手戻りのないスムーズな開発」という結果だけです。
5.2 パイロット案件の選定基準と効果測定指標(メトリクス)
全社一括でやり方を変えようとすれば、現場は混乱して頓挫します。
まずは1つのプロジェクト、あるいは特定機能の開発ラインを実験場(パイロット)に選びます。
パイロット案件の選び方
- × 失敗が許されない超巨大基幹システム:制約が厳しすぎて身動きが取れません。
- × 誰にも見向きされない放置プロジェクト:成功しても「あそこだからできた特殊例」で片付けられます。
- 〇 痛みを抱えていて、関係者の危機感が高い案件:過去に終盤の手戻りで炎上した経験があり、「今のやり方のままではまずい」と現場が本気で感じている中規模プロジェクトが最適です。
経営層とQAを納得させる3つの測定指標
感覚論ではなく、数字で改善効果を証明します:
-
欠陥流出率(Defect Escape Rate):
- 結合テストやQA審査、受入試験で見つかったバグの件数。上流のW字検証が効いていれば、下流で出るバグの数は目に見えて減ります。
-
手戻り工数・手戻り時間(Rework Time):
- 下流工程で設計変更や仕様手戻りに費やした工数。ここが削れた分だけ、プロジェクトの純粋な開発効率が上がります。
-
フロー時間(Flow Time):
- 要件が確定してから、動くコードとして検証完了するまでのリードタイム。小さなバッチで流す効果が直接数字に表れます。
5.3 各フェーズ完了時の「検査と適応(Inspect & Adapt)」による継続的プロセス改善
ウォーターフォール開発の反省会は、プロジェクトがすべて終わった数ヶ月後に「デスマーチの反省文」を書くだけで終わりがちです。これでは次のプロジェクトに知見が活きません。
SAFeの Inspect & Adapt(検査と適応) を、各フェーズゲートの直前に小刻みに差し込みます。
-
事実(データ)から始める:
- 「誰がミスしたか」の犯人探しは禁止。「基本設計フェーズで摘出できたバグは何件か」「GUI確認会で出た想定外の要望は何件あったか」といった事実データを机に並べます。
-
根本原因分析(なぜなぜ分析・フィッシュボーン):
- 「なぜこのエッジケースはコード実装まで見つからなかったのか?」を設計・実装・テスト・QAの全員で掘り下げます。
- 「状態遷移の組み合わせチェックが漏れていた」「対向システムのモックがなかった」といった根本原因を特定します。
-
次のフェーズに向けた改善アクションを1〜2個に絞る:
- 「次回の詳細設計では、通信切断時のリトライ仕様を設計書テンプレートの必須項目にする」
- 「次週からテスト設計チームにSysMLモデルの閲覧権限を渡す」
- 実現可能な小さな改善をひとつずつ積み上げます。
5.4 社内開発標準・品質ゲート審査基準へのフィードバックと規程の近代化
パイロットで成果が出たら、最後に行うのが「社内開発標準への逆フィードバック」です。
-
例外措置から「推奨プラクティス」へ昇格させる:
- パイロットで効果が実証されたGUI確認会やW字の事前合意会を、「任意で活用できる推奨手順」として社内標準のガイドラインに追記します。
-
ドキュメント偏重のゲート審査を緩和する:
- 「紙の仕様書レビュー結果」だけでなく、「モックを用いたGUI確認会の議事録」や「CIパイプラインの静的解析・単体テスト通過レポート」を正規のゲート審査エビデンスとして認めるよう、規程を少しずつアップデートします。
-
横展開で仲間を増やす:
- 社内の技術交流会や報告会で、パイロットを担当したエンジニア自身の言葉で「手戻りが減って終盤の残業がどれだけ減ったか」を語ってもらいます。
- 現場発の成功体験こそが、隣のチームを動かす最大の原動力になります。
規程を変えてから現場を変えるのではなく、現場で実績を作ってから規程を追いつかせる。
これが、伝統的な組織で開発標準を味方につけながら品質とスピードを手に入れる唯一の現実解です。