Updates

新着情報

コラム

Automotive SPICEは守っているのに、なぜ機能しないのか ― WhatとHowの混同から読み解く設計思想 ―

Automotive SPICE(A-SPICE)は、車載ソフトウェア開発におけるプロセス能力を評価するためのアセスメントモデルです。当社では先日、「ソフトウェア開発組織をどう評価するか ~エンジニアリングチーム全体を評価し、組織改善につなげるために~」というコラムの中で、SPICEを含む複数の枠組みを用いながら、開発組織をどのように評価し、改善につなげていくかを整理しました。また、これまでのコラムでも、「ドキュメントが作られているが活用されていない」「プロセスが形骸化している」といった課題が現場で起きやすいことを指摘してきました。 しかし、それらは“現象”としては共有されているものの、なぜ起きるのか、どうすれば防げるのかまでは十分に整理されていないケースも少なくありません。本コラムでは、これらの前提を踏まえたうえで、A-SPICEを「評価モデル」として説明するのではなく、「なぜその評価項目が定義されているのか」という観点から読み直します。言い換えると、A-SPICEを「評価のための枠組み」としてではなく、「開発で問題が起きやすいポイントを示した設計思想」として捉え直す試みです。現場でよく聞かれる、「やるべきことはやっているはずなのに、なぜかうまくいかない」という違和感を、この観点から整理していきます。 A-SPICEは「What」を定義するモデルであるA-SPICEはアセスメントモデルであり、「何ができているべきか(What)」を定義しています。例えば、 要求が適切に管理されていること レビューが実施されていること トレーサビリティが確保されていることといった状態が評価対象になります。一方で、A-SPICEは「それをどのように実現するか(How)」までは規定していません。 問題の本質:WhatをそのままHowにしてしまう現場でよく起きるのが、このWhatをそのままHowとして標準プロセスに落とし込んでしまうケースです。例えば、「レビューを実施する」という評価項目に対して、「レビューを実施する」という手順だけが定義される。一見すると問題はなさそうですが、ここには重要な抜けがあります。 具体例:レビューが“機能しない”ときに起きていることあるプロジェクトで、レビューは確実に実施されていました。チェックリストもあり、記録も残っています。しかし、後工程で仕様の解釈違いによる不具合が繰り返し発生していました。レビュー記録を見てみると、指摘の多くは 表記ゆれ 記述の抜け 軽微な整合性といったものでした。一方で、 前提条件の認識が揃っているか 想定しているユースケースが一致しているか 例外時の振る舞いが明確かといった観点は、レビューの中でほとんど扱われていませんでした。つまり、レビューは「実施されている」が、認識のずれを検出する仕組みとしては機能していなかったのです。これは、「レビューを実施する」というWhatに対して、「何を確認するのか」というHowが設計されていなかったことに起因します。 なぜ“認識のずれ”は起きるのかでは、なぜこのようなことが起きるのでしょうか。その背景には、人の認知の特性があります。本コラムで扱っている問題は、操作ミスのような単純な誤りではなく、仕様や前提の解釈違い、思い込み、見落としといった“認識のずれ”によって生じるものです。人は、書かれていない前提を無意識に補完して読みます。そのため、同じ文章を読んでも、前提や経験によって解釈がずれることがあります。本来、レビューやトレーサビリティといった活動は、こうした認識のずれを早期に検知し、修正するための仕組みです。しかし、その意図が共有されないまま形式だけが定義されると、「なぜやるのか」が抜け落ち、本来検出すべき認識のずれを見逃してしまいます。 なぜ再現性が生まれないのかこのWhatとHowの対応が曖昧なままでは、プロセスの再現性を確保することも難しくなります。同じ「レビューを実施する」という定義であっても、何を確認するのか、どのような観点で見るのかが人やプロジェクトごとに異なれば、結果は大きくばらつきます。つまり、「プロセスが定義されている」だけでは不十分で、「同じ結果を再現できる状態になっているか」が重要です。WhatとHowが適切に接続されていない状態では、プロセスは存在していても、安定した成果にはつながりません。 A-SPICEを「地図」として読むA-SPICEの評価項目は、単なるチェック項目ではありません。開発の中で問題が起きやすいポイントに対応して整理されています。 要求 レビュー トレーサビリティこれらはいずれも、認識のずれや思い込みが入り込みやすい地点です。その意味でA-SPICEは、アセスメントモデルであると同時に、「問題が起きやすい場所に印をつけた地図」として捉えることもできます。このように読むことで、「レビューを実施する」ではなく「どの前提が食い違いやすいのか」「トレーサビリティを確立する」ではなく「どの因果関係が切れやすいのか」といった問いに変わり、具体的な改善につながります。 問題が起きやすい地点から手当てする地図があるなら、すべてを同じ力でなぞる必要はありません。重要なのは、自分たちの現場で問題が起きやすい地点を見極め、そこから手当てすることです。例えば、 レビューの観点をあらかじめ定める(例:前提条件が明確か、ユースケースが具体化されているか、例外時の振る舞いが定義されているか) 要求を構文化し(例:EARSなどを活用する)、条件や例外を明示する 変更時に設計・テストまで影響を追う範囲を明確にするといった工夫は、認識のずれが入り込みやすいポイントに直接効きます。大きな仕組みを一気に導入する必要はありません。問題の芽を先に潰すことが重要です。 まとめA-SPICEはアセスメントモデルであり、「何ができているべきか(What)」を定義しています。一方で、それをどのように実現するか(How)は各組織に委ねられています。評価項目をそのまま作業として定義するだけでは、活動は形式化しやすく、プロセスの再現性にもつながりにくくなります。重要なのは、「なぜその項目が求められているのか」を理解し、自分たちの現場に合わせてHowを設計することです。どの工程で認識のずれや思い込みが入り込みやすいのか、という観点でA-SPICEを読み直すことで、問題が起きやすいポイントを把握し、改善の優先順位を見極めることができます。もし、 レビューが機能していないと感じる 要求の解釈が揺れてしまう 変更の影響が追いきれていないといった課題がある場合、それはプロセスが不足しているのではなく、WhatとHowのつながりが十分に設計されていない状態かもしれません。当社では、A-SPICEの評価項目をそのまま適用するのではなく、現場の実情に合わせて「どのように実現するか(How)」を整理し、運用できる形に落とし込む支援を行っています。どこから手を付けるべきかお悩みの際は、ぜひご相談ください。(安部宏典)

コラム

問題解決管理プロセスと変更依頼管理プロセスを両立させるために

はじめにシステム開発/ソフトウェア開発は、一度作って終わりであることはまずありません。日々発生する不具合やトラブルへの対応と、顧客からの変更要求の対応や将来を見据えた改修の積み重ねによって支えられています。その中核を担うのが「問題解決管理プロセス」と「変更依頼管理プロセス」です。Automotive SPICEでは、支援プロセス「SUP.9」と「SUP.10」として定義されています。似ているようで役割の異なるこの2つを正しく理解し、連携させることが、システム開発/ソフトウェア開発プロジェクトの混乱と疲弊を避ける鍵となります。今回は「SUP.9」と「SUP.10」を両立させるヒントをお伝えします。 問題解決管理プロセスと変更依頼管理プロセスのおさらい問題解決管理プロセス:再発を防ぐための“根本治療”問題解決管理プロセスの目的は、単なる不具合対処や障害復旧ではありません。表面化した不具合や障害の背後にある真の原因(根本原因)を特定し、再発を防止することにあります。場当たり的な対応を繰り返していると、「同じ不具合が何度も起きる」「現場が疲弊する」といった悪循環に陥りがちです。問題解決管理は、なぜ起きたのかを構造的に分析し、恒久対策を設計するためのプロセスと言えるでしょう。それゆえ、SUP.9:問題解決管理プロセスでは、「問題が他のシステムや関係者に影響がある場合に通知」して、類似問題の発生を抑制したり、「データを収集&分析し、傾向」を把握することで再発防止策を講じることが期待されています。変更依頼管理プロセス:リスクを制御しながら前に進む一方、変更依頼管理プロセスは、システムやソフトウェアの変更を秩序立てて、安全に、確実に実施するための仕組みです。変更は、改修や価値創出に不可欠ですが、同時に新たなリスクも伴います。影響範囲の評価、承認フロー、実施計画、リリース後の確認といったステップを踏むことで、「適切に変更を実装する」と同時に「良かれと思った変更が別の問題を生む」事態を防ぎます。それゆえ、SUP.10:変更依頼管理プロセスでは、「変更する作業成果物や他の変更依頼との関連を含めて分析」し、「実装前に、分析結果とリソースの利用可能性に基づいて優先順位を付け、承認」することが期待されています。 混同されがちな2つのプロセス開発現場では、「問題が起きたから変更する」「変更したら問題が起きた」という事象が発生すること、また、「どうせ変更するなら手続きは共通化したい」という理由から、両者が混同されることがあります。しかし本来は役割が異なります。 問題解決管理:なぜ問題が起きたのかを突き止める 変更依頼管理:対策や改善を、リスク管理しながら実装するつまり、問題解決管理の“アウトプット”として検討された対策が、変更依頼管理プロセスに引き渡される、という関係が理想です。仮に、両プロセスを共通の手続きに押し込んでしまった場合、原因分析や再発防止策の検討が、変更内容の検討と混同され、本来、問題解決管理でやるべき目的が希薄になる可能性が高まります。その結果、「問題」が「単に、作業成果物を変更するイベントの1つ」という誤解が生じ、「再発を防ぐための“根本治療”」ができなくなってしまいます。 成熟した組織が実践していることSUP.9とSUP.10をSUP.8:構成管理プロセスと合わせた関係図は以下になります。不具合や障害などの問題が発生した場合、その情報を問題管理データベースに登録後、内容を調査し、原因や影響を分析します。原因が、自分たちの開発対象であれば、変更する必要がありますが、テスト環境や関連する他システムに起因する場合もありますので、変更の必要がないケースもあります。原因&影響分析の結果、変更が必要な問題であった場合、変更依頼管理票を起票し、その情報を変更管理データベースに登録し、変更管理していきます。問題管理と変更依頼管理を別々のデータベースとして管理していきたいのは、繰り返しになりますが、その役割が異なるからです。 問題解決管理:なぜ問題が起きたのかを突き止める 変更依頼管理:対策や改善を、リスク管理しながら実装する例えば、JIRAのようなチケット管理システムで両者を実現する場合でも、登録したい情報(フィールド)は異なりますので、チケットタイプは別々に定義して管理していきます。これらの情報は、単に、今起きている問題や変更への対応だけを考えると、「面倒だから記録したくない」「修正すれば良いので、適当な文章で書いておけば良い」など、疎かな活動になりがちです。しかしながら、我々のお客様でも「情報が正しく書けていないため、後になってみても、状況を理解できない」というような声を聞きます。特に、問題対処に変更を重ね、変更した箇所に更に問題対処を加えるソフトウェア開発では、記録する情報の正確性が重要となります。これら両プロセスをデータは、関連づけること、どの問題が、どの変更によって解消されたのか。逆に、どの変更が新たな問題を生んだのかを明らかにしておきます。こうした可視化が、組織の学習速度を高めます。変更依頼管理に基づき、実際に作業成果物に変更を加えていく場合は、SUP.8:構成管理プロセスの仕組みを利用することになるのです。 おわりに車載開発に限らず、システム/ソフトウェア開発では、問題解決管理プロセスは“守り”、変更依頼管理プロセスは“攻め”と表現されることがあります。しかし実際には、どちらも組織を前進させるために欠かせない車の両輪です。トラブルに強く、かつ変化を恐れない組織を目指すために、今一度この2つのプロセスの関係性を見直してみてはいかがでしょうか。 内山哲三

コラム

ソフトウェア開発組織をどう評価するか ~エンジニアリングチーム全体を評価し、組織改善につなげるために ~

はじめにソフトウェア開発組織の改善を進めるうえで、 「何をもって良い組織と言えるのか」、「改善の効果をどう測るのか」は常に悩ましいテーマです。組織のエンジニアリングチームは「うまくいっているのか」,「何がボトルネックなのか」を感覚だけで語ることの限界を感じたことはないでしょうか。ソフトウェア開発は個人プレーではなく、プロセス・ツール・人の協働によって価値を生み出すチームスポーツと言ってもよく、改善の単位も「個人」ではなく、エンジニアリングチーム全体で捉える必要があります。 本コラムでは、開発組織評価の代表的な枠組みである、以下のの3つを取り上げ、 それぞれの役割と、どう組み合わせて活用すべきかを解説します。 SPICE(プロセス成熟度) DORAメトリクス(デリバリーパフォーマンス) SPACEフレームワーク(人とチームの状態) 評価の前提:目的は「管理」ではなく「改善」最初に確認しておきたいのは、 評価は人やチームを序列化するためのものではないという点です。評価の目的は、 現状を正しく理解する(チームの強みと弱みの理解) 課題やボトルネックを可視化する(課題/ボトルネックの特定) 改善施策がチームにどのような影響を与えたかを確認する(効果を検証) エンジニア同士やマネジメントとの対話を深める(建設的な対話を促す)といった、継続的改善を支えることにあります。この前提を共有しないまま指標だけを導入すると、数字を守ること自体が目的化し、現場の疲弊を招きかねません。 SPICE:プロセス成熟度の評価SPICE(ISO/IEC 330xx) は、ソフトウェア開発プロセスの能力(Capability)を評価する枠組みです。要件定義、設計、実装、テストなどの工程が一定の成熟度レベルで統制されているかを測定します。SPICEで評価できること プロセスが標準化・管理されているか 組織内で再現性のある開発が実現できているか 継続的改善が文化として根付いているかSPICEの成熟度レベル(例) レベル 1:実行されているが管理されていない レベル 2:管理され、最低限のプロセスがある レベル 3:織標準プロセスが定義されている レベル 4:プロセスが定量的に管理されている レベル 5:プロセス改善が組織的に推進されているSPICEで利用できる具体的な評価指標の例プロセス運用に関する指標 要件レビュー実施率 変更管理プロセス遵守率 リスク管理票の更新頻度 プロジェクト計画の逸脱率(進捗・工数など)品質管理に関する指標 工程別の手戻り件数(要件→設計・設計→実装 など) レビュー指摘の再発率 テスト計画と実績の乖離率SPICEの指標は、プロセスが安定して回っているかを確認する際に非常に有効です。一方で、SPICEは人の心理的状態やチームの疲弊まではほとんど扱いません。 DORAメトリクス:デリバリーパフォーマンスの評価DORA(DevOps Research and Assessment)は、開発チームのパフォーマンスを測定するための指標群です。Google Cloud が主導する大規模調査に基づいており、“高いパフォーマンスを出すチームが共通して持っている特徴”として知られています。DORAの4つ主要指標(Four Keys) デプロイ頻度価値をユーザにどれだけ頻繁に届けられているか 変更リードタイムコード変更が本番環境に届くまでのスピード 変更失敗率リリース後に発生する障害の割合 復旧時間(MTTR)障害発生時の復旧までの時間DORAで使える具体的な評価指標の例 自動テスト実行率 CI/CD パイプライン成功率 プルリクエストの平均レビュー時間 リリースごとのバグ発生率これらは、スピードと安定性を同時に捉えられる点が特長です。 SPACE:人とチームの「状態」を可視化SPACEフレームワークは、Microsoft Research や GitHub などの研究者によって提唱された、 開発者生産性を多面的・人間中心に捉えるための枠組みです。SPACEの5つの観点 S:Satisfaction and Well-being(満足度・幸福度) P:Performance(成果・品質・価値) A:Activity(活動量) C:Communication and Collaboration(協働) E:Efficiency and Flow(効率性とフロー)SPACEの特徴SPACEは「この指標を使うべき」という規範的モデルではありません。組織のコンテキストに応じて、適切な指標を選び、組み合わせて使います。特に重要なのは、以下のような、DORAやSPICEでは見えにくい側面を補完できる点です。 数値改善の裏でエンジニアが疲弊していないか コミュニケーションが滞っていないか 割り込みが多く集中できていないのではないかDORA・SPACEだけでは測れない評価の視点(補足)フロー全体を見る指標 サイクルタイム WIP(仕掛かり作業数) フロー効率これらは SPACE の Efficiency and Flow を具体化したものです。チームが「どこで詰まっているか」を明確にします。 技術的健全性 技術的負債の増減 静的解析違反数 依存関係の陳腐化短期的な成果には表れにくいものの、 将来のパフォーマンスに大きく影響する要素です。 SPICE・DORA・SPACEの使いわけ組織/チームの改善では、SPICE・DORA・SPACEを必ずしも同時に評価する必要はありません。重要なのは、「いま何を知りたいのか」に応じて使い分けることです。①DORA:「何が起きているか」を知る改善の出発点として有効なのが、DORAメトリクスです。・リードタイムが長い・デプロイが滞っている・障害対応に追われているといった、チームの成果としての状態を客観的に把握できます。ただし、DORAが示すのはあくまで「結果」であり、なぜそうなっているかまでは分かりません。②SPACE:「チームの状態はどうか」を確かめるDORAで気になる結果が見えたら、次に見るべきは チームの状態です。SPACEフレームワークを使うことで、・無理をして改善していないか・コミュニケーションは機能しているか・集中して開発できているかといった、数値に表れにくい側面を確認できます。SPACEの役割は、改善がチームにとって健全かどうかを見極めることです。③SPICE:改善を「再現できる仕組み」にする最後に問うべきなのが、「このやり方は、チームの力として定着するか?」という点です。SPICEは、以下のような、チームを支える土台を評価します。・やり方が個人に依存していないか・プロセスが暗黙知になっていないか・改善が継続できる仕組みになっているか④改善では「流れ」で使うSPICE・DORA・SPACEは、次の順で使うと分かりやすくなります。改善後は再び DORA を確認し、この流れを繰り返します。   おわりに組織/エンジニアリングチームの評価は“目的”ではなく、“組織を強くするための手段”です。また評価指標は、エンジニアリングチームを縛るためのものではなく、チームと向き合い、より良くするための共通言語です。SPICE、DORA、SPACEを適切に組み合わせて得られた情報をもとに、 「なぜこうなっているのか」 「何から改善すべきか」  「人は無理をしていないか」を対話して共有化することが、重要です。評価を武器にするのではなく、 学習と改善を支える補助線として使うこと。それが、健全で持続可能なソフトウェア開発組織につながると考えます。 (佐藤崇)

コラム

同じ失敗を繰り返さないプロジェクト管理 ─ 再発防止の実践ポイント

■なぜ、あの失敗は何度も起きるのか?開発プロジェクトの合間に、こんな会話を耳にすることがあります。「この前も同じような問題があったよね?」「気を付けていたつもりだったけれど…また再発してしまった」こうした状況は決して珍しくありません。多くの開発現場では、重大な問題が発生した際に「過去にも似た状況があった」と振り返るケースが少なくないと言われています。もちろん、プロジェクトで起きる問題の形や影響はさまざまで、個別の技術的課題や外的要因によるトラブルも存在します。それでもなお、現場を振り返ると、同じような状況や判断の迷いが重なった結果として問題が再発しているケースが見受けられます。では、なぜ似たような失敗は繰り返されてしまうのでしょうか。 ■同じ失敗が起きる主な要因とは?ある車載ECU開発プロジェクトでの出来事です。当初のプロジェクトの目的は「画面表示の起動時間を短縮する」ことでした。ところが開発途中で、「起動時にロゴアニメーションを入れたい」「警告メッセージの表示仕様も変更したい」「診断ログも取得できるようにしてほしい」といった要望が追加され、チームは「せっかくなら対応しよう」と順次取り込みました。しかし、誰も「起動時間短縮が最優先なのか、それとも新機能追加なのか」を明確に整理しないまま進めたため、「あるメンバーは表示品質を優先」「別のメンバーは起動速度を優先」「別の担当は診断要件の網羅性を重視」と、目指すゴールが少しずつズレた状態で開発が進んでしまいました。その結果、統合テストの段階で「起動時間が目標を満たさない」「ログ取得時に表示が遅延する」といった問題が同時に発覚し、大きな手戻りが発生しました。さらに、スケジュール遅延の兆候は早い段階で見えていたにもかかわらず、「どの時点で誰に相談するか」「何を優先的に削るか」が決まっていなかったため、対応は常に後手に回りました。このような問題は以前にも何回か起きていたようです。 同じ失敗が繰り返される背景には、・目的と優先順位が共有されていない・問題発生時の動き方が決まっていないといった構造的な要因が背景にあるケースは少なくありません。目的が揃わないまま進めると、メンバーごとに判断基準がばらつき、問題が起きても対応の優先度や対処方針が統一されません。さらに、初動対応やエスカレーションのルールが明確でない場合、対応は場当たり的となり、問題の影響が拡大しやすくなります。その結果、納期や目先の対応を優先した暫定対処で収束させてしまい、根本原因が解消されないまま次のプロジェクトへ持ち越されます。そして同様の条件が重なったとき、類似したトラブルが再び発生する可能性が高まります。 ■成功するプロジェクトが共通して実践している取り組み前述の例のように、失敗の原因は個人の注意不足だけでなく、目的の共有不足や優先順位の不明確さ、問題発生時の対応ルールの欠如といった“進め方の仕組み”に起因しています。では、同じ状況に直面しても手戻りを最小限に抑え、着実に成果を出し続けるチームは、どのような工夫をしているのでしょうか。私の経験を基に、実際に効果のあった取り組みの一例をご紹介します。 1. 要求分析と優先順位決定プロセスを機能させる要求が増え続けること自体は珍しいことではありません。問題は、優先順位を判断する基準や変更時の意思決定プロセスが明確でない場合、チーム内で判断軸がばらつくことです。成功している組織では、 最優先事項を判断する基準を定める 要求変更時に影響範囲(品質・性能・日程)を確認する 優先順位を見直す意思決定ルールを設けるといった仕組みによって、要求分析プロセスが機能する状態を維持しています。例えば、変更要求が出た際に「最優先目標に影響しないか」を確認するチェック項目を設けるだけでも、判断のばらつきを抑えることができます。 2. 問題の早期解決を支える支援・エスカレーションの仕組みプロジェクトは計画通りに進まない状況が発生することを前提に運営する必要があります。重要なのは、問題が顕在化した際に 誰が・どの段階で・どこへ相談するのか が明確になっていることです。とある組織では、進捗管理・課題管理・リスク管理といった基本的なプロジェクト管理プロセスは整備されています。そのうえで、現場だけでは判断が難しい状況に備え、経験豊富なPMや技術リーダーが横断的に支援する仕組みを設けています。現場ではこれを通称「駆け込み寺」と呼んでいます。この仕組みの目的は属人的な助言ではなく、 進捗遅延や品質リスクの早期検知 判断に迷う局面での意思決定支援 問題対応の優先順位整理 組織としての対応方針の統一といった、プロジェクト運営プロセスを補完・強化することにあります。このような支援体制は大掛かりな組織でなくても導入可能です。例えば、 PM経験者が週1回相談枠を設ける リスク顕在化時の相談ルートを明文化する 重要課題をレビューする横断ミーティングを設けるといった小さな仕組みから始めることもできます。 3. 振り返りを“教訓化”につなげる仕組み振り返りの重要性は多くの現場で理解されています。しかし実際には、「事実の整理で終わってしまう」「個人の反省に留まる」「次のプロジェクトに活かされない」といったケースが少なくありません。効果的な振り返りを行う組織では、 結果の整理 原因の特定 再発防止策の決定 次回の実行ルールへの反映をセットで行います。例えば、再発防止策をチェックリストや標準手順に反映し、次プロジェクト開始時に確認する仕組みを設けることで、経験を組織の資産として蓄積できます。 ■あなたのチームでは、同じ兆候が起きていませんか?失敗の再発は偶然ではなく、進め方の仕組みに起因することが少なくありません。そして、その仕組みを整えることで、同じ問題が繰り返される可能性は大きく減らすことができます。ここまでお読みいただき、「自分たちの現場にも当てはまる」と感じられた方も多いのではないでしょうか。例えば、次のような兆候は見られませんか?☑ チーム内の意思疎通に不安がある☑ 課題が何度も再発し、改善が定着しない☑ プロジェクト管理が“実態と合っていない”と感じる☑ 組織としてのプロセスを整えたいが、どこから手を付けるべきかわからないもし一つでも思い当たる点があれば、それは個人の努力ではなく、仕組みを整えることで改善できる余地があるというサインかもしれません。 「自社ならどこから手を付けるのが最短か」を整理したい場合は、1~2週間のクイック診断からご支援することも可能です。小さく始めて、現場に無理なく定着させる改善をご一緒に進めていきます。まずは、現状の困りごとや課題をお聞かせいただくだけでも構いません。 ご相談・お問い合わせはこちらから→https://www.bgarage.co.jp/contact/ (長澤克仁)

コラム

構成管理の基本の「き」 ~当たり前なことが難しい~

はじめに システム開発/ソフトウェア開発の現場では、日々多くの変更が行われています。機能追加、バグ修正、設計変更。。。そのすべてがソースコードやドキュメントに影響を与えます。この変化の連続を“管理された状態”に保つための仕組みこそが 構成管理(CM) です。今回は、Automotive SPICEのプロセスの1つである、SUP.8:構成管理の基本について、IEEEなどの国際標準も交えて解説します。 なぜ構成管理が必要なのか 構成管理がうまく機能していない現場では、こんな光景がよく見られます。 “誰が”“いつ”“どこを”“なぜ”変更したのか追跡できない 昨日の動くバージョンに戻したいのに、戻せない ドキュメントと実物が噛み合わず、レビューで混乱 変更したつもりが、別の人の作業で上書きされていたこれらはすべて、生産性と品質を静かにむしばむ“構成管理不足”のサインです。構成管理の目的は一言でいえば、変更の見える化と安定した開発の継続です。 構成管理の主要な4つの活動 1.構成識別(Configuration Identification)まず管理対象となる作業成果物を明確にします。この管理対象を構成品目(Configuration Item:CI)と呼びます。ソースコードはもちろん、設計書、テスト仕様書、ビルド手順書など、作業成果物すべてが対象となり得ます。どこまでを管理するのか最初に決めておくことが、とても重要です。Automotive SPICE v4.0では以下のように解説しています。 構成品目とは、単一の実体として構成管理の対象となる作業成果物または作業成果物一式を指す。 構成品目は、システム、ハードウェア、およびソフトウェアのすべての文書を含むシステム全体から、単一のエレメントまたは文書に至るまで、複雑性、規模、および種類が異なる場合がある。  選定基準は、単一の作業成果物または作業成果物一式に適用してよい。また国際標準である、IEEE 828「IEEE Standard for Configuration Management in Systems and Software Engineering」では、以下のように定義しています。 構成管理のために指定され、構成管理プロセスにおいて単一のエンティティとして扱われる作業成果物の集合体。 構成品目は、その複雑さ、規模、種類が多岐にわたる場合があり、ハードウェア、ソフトウェア、ドキュメントをすべて含むシステム全体から、単一のモジュールやマイナーなハードウェアコンポーネントまで多岐にわたる。プロジェクトの範囲や、標準資産の再利用の考慮等によって、構成品目は様々ですが、必ずしも「1ファイル=1構成品目」である必要がないことは上記からも理解できると思います。「単一の実態として扱われる作業成果物の集合体」が構成品目となります。 2. 構成制御(Configuration Control)構成管理の根幹となる活動は、変更手続きを管理し、変更を追跡することで、製品の構成が常に正確に把握されるようにすることです。構成制御は、ベースラインを完全に識別し、そのベースラインに対して行われたすべての変更を追跡することによって実現されます。Automotive SPICEではベースラインを以下のように定義しています。 1つまたは一連の作業成果物および生成物の一貫性が保たれ、かつ完成した状態であることを識別している。 次のプロセス段階および/または納入のためのベース。 一意であり、変更されてはならない。少しわかりづらいので、再びIEEE 828を参照してみましょう。以下のように定義しています。 正式にレビューされ合意された仕様または製品であり、その後は以降の開発の基礎となり、正式な手順を通じてのみ変更可能である。  媒体を問わず、構成アイテムのライフサイクル中の特定の時点で正式に指定及び確定された、構成アイテムの正式に承認されたバージョンである。 ソフトウェアベースラインとは、ソフトウェアライフサイクル中の特定の時点で正式に指定され、確定されたソフトウェア構成アイテムの集合(1つまたは複数)である。開発ライフサイクルのある時点(たとえば、要件が確定した時点や統合テストを始める時点)で、正式の合意された製品目一式がベースラインであり、以降の開発工程や納入の基となるものです。好き勝手に変更していけないのがベースラインであり、適切にベースライン(構成品目の集合体)を作成&更新していくことが構成管理の根幹となります。この適切な作成&更新を行うためには、正式な変更手順だけではなく、構成品目を格納する「ライブラリ」も重要となります。皆さんの中には既に、作業成果物の格納場所として、Git や Subversion などのツールを利用している方もいると思いますが、国際標準であるIEEE 1042「IEEE Guide to Software Configuration Management」で述べているライブラリの概念が基本となっています。   ダイナミックライブラリ(プログラマーズライブラリとも呼ばれる): 新規作成または変更されたソフトウェアエンティティ(ユニット/モジュール、データファイル、および関連ドキュメント)を格納するために使用されるライブラリ。 これは、作業担当者がコード開発で使用するライブラリで、そのユニットを担当する作業者は、いつでも自由にアクセスできます。 これは作業者の作業スペースであり、作業者によって管理される。 管理ライブラリ(マスターライブラリとも呼ばれる): 現在のベースラインを管理し、それらに加えられた変更を制御するために使用されるライブラリ。 これは、統合のために生成された構成品目のユニットとコンポーネントが保持されるライブラリ。 通常は検証後にエントリが認められる。 作業者やその他のユーザーが使用するために、コピーを作成できるが、このライブラリ内のユニットまたはコンポーネントへの変更は、責任部署(構成制御委員会または委任された権限を持つ機関)の承認が必要。 スタティックライブラリ(ソフトウェアリポジトリとも呼ばれる): 一般利用のためにリリースされた様々なベースラインをアーカイブするために使用されるライブラリ。 これは、運用のためにリリースされた構成品目一式のマスターコピーが保管されるライブラリ。 これらのマスターのコピーは、要求する組織に提供される場合がある。 3. 構成ステータス記録(Status Accounting)構成管理下にある構成品目(作業成果物)に関する重要な情報を記録し、管理者と作業者に報告し、「構成品目が今現在どんな状態か」を共有することが、この活動の目的となります。IEEE 828では、構成品目のステータス情報は、以下のことに役立つと述べています。 ある期間における、プロジェクト作業の結果を把握し、とある時点での完了見込みを把握する。 例:要件の数と実装済みの数を比較することで、これまでの進捗状況を把握できる。  開発中の製品の安定性と機能の完成度に関する状態を把握する。 例:機能またはコンポーネントに対して、実装済みおよび保留中の変更の数は、安定性または変動性を示している。 構成品目の管理(構成管理活動自体)を検証する。 必要に応じて、外部コンプライアンス監査の要件(例:SOXなど)を満たす。「構成ステータス記録」は、構成管理活動自体を監視するプロジェクト管理機能でなく、あくまで構成品目(作業成果物)の状態を監視するものであることも理解しておく必要があります。 4. 構成監査(Configuration Audit)「管理されているはずの状態」が、本当に実態と一致しているかを確認する仕組みです。 ドキュメントの記載と成果物が一致しているか 承認フローが守られているか リリース物は正しい構成か監査は厳しいものではなく、「間違いが積み重なる前の安全装置」というイメージです。 構成管理はツールではなく「文化」Git や GitHub、Azure DevOps、Subversion などのツールは SCM を支える重要な存在ですが、ツールを導入しただけでは構成管理ができたとは言えません。大切なのは、そのツールを使って一貫したルールとプロセスを回し続ける文化があるかどうかです。例えば: ブランチ戦略をチームで統一する コードレビューをルール化する 変更理由を残す習慣をつける リリース手順を標準化するといった取り組みが、SCMの“文化”を育てます。 さいごに構成管理は、「開発を安定させるための基盤であり地盤」です。目立たない活動ですが、これがしっかりしているチームはトラブルに強く、改善サイクルも回しやすくなります。地盤が安定していれば、どんな大きな建物(=プロジェクト)でも安心して積み上げることができます。  内山哲三 

コラム

プロセス改善コンサルティング、成功と失敗の分かれ道

Automotive SPICEやCMMIに準拠したプロセス改善を積極的に取り組む設計現場が広がってきている反面、改善の必要性を感じながらも、「本当にコンサルを入れるべきなのか」「また期待外れに終わってしまうのではないか」そんな迷いを抱えていらっしゃる方も多いのではないでしょうか。実際、私たちがこれまでご相談を受けてきた中でも、次のようなお声を耳にしてきました。「過去にコンサルを入れたが、やることだけが増えて楽にならなかった…」「立派な資料は残ったが、現場のやり方は結局変わらなかった…」「コンサルに頼ると、自分たちの力が育たない気がする…」これらは、決して珍しい意見ではありません。そして同時に、「コンサルティングサービスがうまく機能しなかった典型例」でもあります。■見過ごされている2つの「ズレ」プロセス改善コンサルティングが失敗する背景には、主に以下のようなズレが潜んでいます。 ズレその1:目的の不一致「レベル認証を取れればいい」のか、「自律的な改善ができる組織にしたい」のか——この目的が、依頼部門と開発現場で共有されていないケースが非常に多いのです。依頼部門:「認証取得をきっかけに、組織を変えていきたい」開発現場:「とにかく早く認証を取って、元の業務に戻りたい」こうした認識のズレがあると、現場の協力が得られず、形だけのプロセスで終わってしまいます。 ズレその2:アプローチの不一致コンサルティングには、大きく分けて2つのアプローチがあります。【代行型】改善作業を代行し、短期間で認証取得を目指す【伴走型】課題や施策を現場と一緒に整理しながら進め、組織にノウハウを残すどちらが優れているということはありません。問題は、目的に合わないアプローチを選んでしまうこと、そしてこの選択を曖昧にしたままプロジェクトを始めてしまうことです。 失敗の本質は、「誰が悪い」という話ではありません。目的や期待を関係者間ですり合わせる——このステップが抜け落ちたままプロジェクトが始まってしまうことにあるのです。 ■「ズレ」を解消したことで現場が変わった事例では、これらのズレを解消すると、現場はどう変わるのでしょうか。実際の事例をご紹介します。 【依頼時の状況】ある設計現場からご相談をいただいた際、次のような課題を抱えていらっしゃいました。・問題は発生してから初めて共有される・進捗会議では「今どうなっているか」の報告に終始する・遅延や手戻りの原因が、毎回「想定外」「人手不足」で片付けられる・設計者からは「レビュー準備だけで工数を取られる」「成果物のトレーサビリティ維持が負担」という声が出ていた過去にもコンサルを入れたことがあったそうですが、「立派な資料は残ったが、現場のやり方は結局変わらなかった」とのことでした。 【目的の共有】まず私たちが行ったのは、依頼部門と開発現場の責任者の方々と、次の点を時間をかけて対話することでした。「今回の目的は、認証取得だけですか? それとも組織を変えることですか?」結果、「認証取得はあくまで通過点で、現場が自律的に改善を続けられる力をつけたい」という明確な目的を、全員で共有できました。加えて、今回のコンサルの期待として、「なぜこのプロセスが必要なのかという考え方を現場に残してほしい」、「プロジェクトが終わった後も、自分たちで改善を続けられるようにしたい」という期待があることも共有することができました。 【アプローチの選択】目的と期待が明確になったことで、私たちは伴走型コンサルティングを提案し、具体的な進め方について合意しました。・プロセス文書は一緒に作る(現場の実態を反映させる)・「やらされ感」ではなく、「なぜ必要か」を理解しながら進める・ノウハウを組織に残すことを最優先する 【結果】プロジェクトでは、解決策の提示だけでなく、「どのタイミングで、どんな兆候が出ていたのか」「本来、どこで意思決定すべきだったのか」などを、現場の方と一緒に整理しました。その上で、・進捗とリスクを一目で把握できる形に整理し・「問題が起きてから」ではなく「起きる前に気づく」視点を共有し・これまで個人の経験に頼っていた判断を、プロセスとして定義していきました。すると、同じメンバー・同じ工数でも、現場からは「次に何を確認すべきかが分かるようになった」、「認証取得後も、このやり方を続けていけそうだ」といった声が出るようになりました。その結果、手戻りによる追加工数が約3割削減され、プロジェクトの予測精度も向上しました。このような伴走型の支援にご興味がある方、または「自社の状況ではどのアプローチが適しているか知りたい」という方は、ぜひお気軽にお問い合わせください。 ■まずは2つの問いから始めてみましょうコンサルを活用することは、決して自分たちの力を否定することではありません。重要なのは、「何のために」「何を期待して」コンサルを入れるのかを明確にすることです。まず、この2つの問いについて考えてみてください。 問1:皆様の目的は何ですか?まずは認証を取得することが最優先ですか?それとも認証取得をきっかけに、組織を変えていきたいと考えていますか? 問2:コンサル後の姿をイメージできていますか?認証が取れたら終わりですか?その後も自分たちで改善を続けたいですか? もし1つでも不明確な答えがあれば、まずはその整理からご一緒させてください。私たちは、いきなり解決策を押し付けることはいたしません。認証取得の目的は何か、社内の関係者間でその目的は共有されているか、どのようなアプローチ(代行型/伴走型)が適しているか——これらを一緒に考えるところから始めます。目的が明確になれば、コンサルティングサービスは確実に組織の未来を変える力になります。 ▼プロセス改善コンサルティングに関するお問い合わせはこちら(ご相談ベースでも構いません)https://www.bgarage.co.jp/contact/ (長澤克仁)

コラム

なぜ品質要件の問題はテスト段階で表面化するのか ― 品質要件(非機能要件)の考え方と定義方法 ―

1.品質要件の問題は、なぜ見過ごされたまま進むのか組込み・車載ソフトウェア開発では、設計やテストの終盤になってから、 応答時間が間に合わない 負荷が高すぎて処理が破綻する 安全・セキュリティ要求が弱い 必要なログがなく原因が追えないといった問題が表面化することが少なくありません。実務を見ていると、その背景には大きく 2つのパターンがあります。パターンA:そもそも「ここで品質要件が必要だ」と気づけていない機能要求や仕様は要求仕様書に書かれている一方で、 応答時間は? 負荷条件は? 異常時の振る舞いは? ログや診断は?といった品質の話題がほとんど議論されないまま進んでしまうケースです。これは品質要件を後回しにしたのではなく、「ここで考える必要があることに気づけなかった」状態です。パターンB:品質要件は「あるが、疑われていない」過去プロジェクトの品質要求流用や顧客提示の品質要求が、妥当性確認なしにそのまま使われているケースです。その結果、 今回の製品構成でも成り立つのか 対象機能や性能レベルに合っているのか 環境・負荷条件は変わっていないかといった確認がされないまま進み、やはりテスト段階で破綻します。品質要件の問題は、このように「書かなかった」からではなく、「気づけなかった/疑われなかった」ことによって起きているケースが多いと考えます。2.品質要件とは何か?定義の基本的な考え方品質要件(非機能要件)とは、製品・システムがどのレベルで振る舞うべきかを定める要求です。機能要件が「何をするか」を定めるのに対し、品質要件は、 どの性能で どの信頼性で どの安全性で どの容易さで動作すべきかを規定します。問題は、「重要だと分かっていても、どこまで決めれば十分か」が曖昧なまま進んでしまう点にあります。3.品質要件を具体化するための最小チェック(4点)実務で効果が高いのが、次の 4点チェックです。 品質特性を選ぶ性能/信頼性/安全性/保守性/セキュリティ など 観点に分解する例:性能 ⇒ 応答時間、CPU負荷、メモリ 数値化する(測定可能にする)例:応答時間 50ms以内 条件を明記する例:モード、温度範囲、車速、通信負荷などの前提条件この4点を通すだけで、曖昧さ由来の手戻りは大幅に減らせます。4.それでも問題が残る理由―「4点チェック」だけでは足りない4点チェックは、「何を書くか」を整える道具です。しかし実務では、それだけでは防げない問題があります。理由は明確で、「それを書くべきか」「それで妥当か」を問えていないからです。そこで重要になるのが、次の問いです。「この品質要件は、今回の製品・機能・構成でも成り立つか?」 そもそも、ここで品質要件を考える必要はないか 既存の品質要件は、今回も意味を持つか 顧客要求は、システム特性や環境に合っているかこの問いを4点チェックの前に挟むだけで、 気づけなかった品質要件 疑われなかった品質要件の多くが表に出てきます。5.まとめ:品質要件定義を要件分析プロセスにどう組み込むか品質要件の問題は、後工程で突然起きるわけではありません。 必要な場面に気づけなかった 既存の要求を疑わなかったその結果として、テスト段階で表面化します。実務で意識したいのは、次の3点です。 ここで品質要件が必要か?と立ち止まる その品質要件は今回も成り立つか?と疑う 定義するときは、4点チェックで具体化するこれだけで、品質要件の問題はテスト段階で初めて表面化するものではなく、上流での「問いの立て方」によって防げる問題になります。要件分析プロセスでどこに組み込むかここまで述べてきた問いとチェックは、特別な工程を追加するものではありません。実務では、要件分析プロセスの中で次のように位置付けることで、無理なく組み込むことができます。要件抽出・整理の段階「ここで品質要件が必要か?」と立ち止まる要求仕様の具体化段階既存の品質要件や流用要求に対して、「今回の製品・構成でも成り立つか?」を確認する要求記述・レビュー段階妥当と判断した品質要件を、4点チェックで具体化・数値化する この流れを要件分析プロセスの中に組み込むことで、品質要件の問題をテスト段階で初めて発見する、という状況を減らすことができます。品質要件を含めた要求文書の整理や書き方に関するお悩みがあれば、実務に直結する形でのご支援も可能です。お気軽にご相談ください。(安部宏典)

コラム

DX時代にPMOはどう進化するべきか?

はじめにDX(デジタルトランスフォーメーション)は、単なるITシステムの導入や業務効率化にとどまらず、企業のビジネスモデルや業務プロセスを抜本的に変革し、競争力を高める取り組みです。こうした変革を推進するDXプロジェクトは、これまでのプロジェクトの管理とは異なる性質を持っています。では、組織横断でプロジェクトを支援するPMO(Project Management Office)は、どのように対応すべきでしょうか? DXプロジェクトとはまず、「DX」ということばの意味するところを再確認してみましょう。2022年9月に経済産業省が発表した「デジタルガバナンス・コード2.0」の中で、DXを以下のように定義しています。 「企業がビジネス環境の激しい変化に対応し、データとデジタル技術を活用して、顧客や社会のニーズを基に、製品やサービス、ビジネスモデルを変革するとともに、業務そのものや、組織、プロセス、企業文化、風土をも改革し、競争上の優位を確立すること」 つまり、デジタル技術を活用して企業のビジネスモデル、業務プロセス、顧客体験を抜本的に変革し、競争力を高める取り組みです。その目的は、単なるITシステム導入ではなく、ビジネス価値創出や新しい働き方の実現にあります。 では、DXのイメージをより明確にするため、DXプロジェクトの具体例を挙げます。例①:業務プロセス自動化プロジェクトRPA、AI-OCR活用した紙書類を扱う業務プロセスの自動化<DXとしてのポイント>単なるIT導入や効率化の場合:・既存業務をそのままシステム化するだけ。(例:紙の請求書をExcel入力からシステム入力に変える)・業務フローや役割は基本的に変わらない。・効果は「作業時間短縮」程度。DX要素:・RPA導入時に「どの業務を自動化するか」「どの業務を廃止するか」を検討し、業務フローを抜本的に見直す。・定型業務を自動化することで、人員を戦略業務や顧客対応にシフト。人材のスキル再配置や教育も必要。・AI-OCRで紙書類をデジタル化し、RPAで処理、さらにBIで分析するなど、業務のデジタル化と意思決定の高度化を一体化。 例➁:クラウド移行型プロジェクト製造業の基幹システム(在庫管理・生産計画)をオンプレミスからクラウドに移行し、API連携を実施<DXとしてのポイント>単なるIT導入や効率化の場合:・クラウドに移すだけなら「インフラコスト削減」のみで終わる。DX要素:・API連携でサプライヤーや販売店とリアルタイム情報共有 → サプライチェーン全体の最適化。・クラウド基盤を活用し、新しいビジネスモデル(サブスクリプション型サービス)を開始。 このようなDXプロジェクトは、次のような特徴を持っていると言えます。・デジタル技術(クラウド、AI、IoT、RPAなど)を活用・ビジネスモデルや業務プロセスの変革を伴う・顧客価値・体験の向上を重視・スピードと柔軟性(アジャイル開発、DevOps)を求める・組織文化や人材スキルの変革が不可欠 PMOの進化と果たすべき新しい価値一方、プロジェクト管理の機能を持つPMOは、DXプロジェクトに対してどのような進化が必要になるのでしょうか?組織全体のプロジェクト成功率を高めるために、PMOは一般的には、以下のような役割を担います。・標準化:プロジェクト管理プロセスやツールの整備・統一化・ガバナンス:品質、リスク、コンプライアンスの監視・リソース管理:プロジェクト間の資源の最適配分・進捗・コスト管理:計画対実績のモニタリング・ナレッジ共有:成功・失敗事例の蓄積と再利用・ステークホルダーコミュニケーション:経営層や顧客への報告 DX時代のPMOは、上記の基本的な機能だけでなく、新たな「価値創出の推進者」として、次のように進化する必要があると考えられます。 DX推進戦略策定(新たな役割)DX推進のための戦略策定(またはその支援)が、新たな役割としてあげられます。技術選定方針、クラウド方針、AI活用ロードマップなどの策定し、標準化、ガバナンス、投資判断などを一貫化させる。さらに、DXの成果を事業戦略に反映し、新規事業創出のロードマップを描くようなことにも対応していく必要があります。 標準化:スピードと柔軟性の両立アジャイル開発やDevOpsを前提とした標準化が求められます。スプリント計画やCI/CDパイプライン、クラウド設計基準など、スピードと柔軟性を両立する仕組みが必要です。つまり、伝統的なライフサイクルではなく、スピードや柔軟性に対応した、開発手法の標準化に対応していかなければなりません。 ガバナンス:新リスク領域への対応クラウドセキュリティ、データプライバシー、AI倫理など、新たなリスク領域が追加されます。スピードを損なわない軽量的なガバナンスと継続的な監査の仕組みが不可欠である一方で、組織のセキュリティポリシーや倫理観に抵触しないように、統制を図ることも必要になります。 リソース管理:スキル戦略によるリソース最適化人員や予算の最適配分だけでなく、クラウド、データ、UXなど専門スキルの保有状況の把握と配置が必要になるため、スキルマップ管理やスキルアップの計画、複数プロジェクト間での能力プール管理などが重要になります。さらに、専門的な人材だけでなく、ツールやライセンスに関する予算計画も不可欠です。クラウド利用料、CI/CDツール、AIプラットフォームなど、DX基盤を支えるリソースを総合的に管理する必要があります。 進捗・コスト管理:価値指標を用いた管理伝統的なQCD管理だけでなく、提供した価値を重視するため、DORA指標や顧客価値KPI(NPS、ROI)を追加し、短期間の開発に対応した仮説検証サイクルを支援する必要があります。 ナレッジ共有:データ駆動型のナレッジ共有データカタログ、MLOps知見、UX実験結果など、開発現場へのフィードバックのスピードを上げつつ、日進月歩の技術進化に対応したナレッジ共有が求められます。さらに、得られた知見を活用し、新しいサービスや事業アイデアを生み出す基盤へ進化させることが重要です。 ステークホルダーコミュニケーション:双方向・即時性の高いコミュニケーション経営層や顧客への定期報告だけでなく、ダッシュボードによるリアルタイム報告や、チェンジマネジメントを含むコミュニケーション計画が必要です。顧客体験改善や業務自動化の価値を共有することも重要になります。 まとめDXプロジェクトの成功には、開発現場だけでなく、PMOもこれまでの枠を超えた進化が必要です。PMOは「プロセスやQCDの番人」から「価値創出の推進者」へと役割を変え、組織全体のDXを支える中核となるべきでしょう。  [用語解説] 顧客体験(CX:Customer Experience):顧客が企業やサービスと接するすべての体験の総称。製品やサービスの品質だけでなく、購入プロセスやサポート対応なども含む。 DevOps:開発(Development)と運用(Operations)を統合し、継続的な改善と迅速なリリースを実現する文化・プロセス・ツールの総称。 CI/CD(Continuous Integration / Continuous Delivery):継続的インテグレーションと継続的デリバリーの略。コードの自動ビルド・テスト・デプロイを行う仕組みで、開発スピードと品質を両立する。 UX(User Experience):ユーザーが製品やサービスを利用する際の体験全般。使いやすさ、デザイン、感情的満足度などを含む。 DORA指標(DevOps Research and Assessment Metrics):DevOpsのパフォーマンスを測る指標群。代表的なものは「デプロイ頻度」「変更のリードタイム」「サービス復旧時間(MTTR)」「変更失敗率」。 NPS(Net Promoter Score):顧客ロイヤルティを測る指標。「このサービスを他人に勧めたいか?」という質問に基づき、推奨者と批判者の割合から算出。 ROI(Return on Investment):投資対効果を示す指標。投資額に対してどれだけ利益を得られたかを測る。 MLOps(Machine Learning Operations):機械学習モデルの開発から運用までを効率的に管理するための仕組みやプロセス。モデルの学習、評価、デプロイ、監視を自動化し、継続的改善を可能にする。DevOpsの考え方を機械学習に適用したもの。 (佐藤 崇)