ソフトウェア開発の最上流工程である「要求定義」で誤りがあると、いくらその後の設計が正しく行われたとしても、やり直しが必要となります。一般的に、不具合の発見が遅れるほど、それを解決するための工数が多く発生すると言われ、上流での問題を早く解決することが、生産性を上げるための重要なポイントと言えます。
エクスモーションでは、「要求定義」の方法として『USDM』を採用しています。
『USDM』は、「要求を整理して階層化する」「要求に対しての仕様を記述する」「要求の理由を明記する」など、ポイントがいくつかあります。
そのポイントをふまえた「要求定義」を行うことで、上流での問題を早く解決することにつながります。
一般的な組込みソフトウェアの開発現場では、「要求」と言われるものはほとんど記述されていません。あるものと言えば、製品スペックか、タイミングチャートなどの制御に関する細かな仕様や機能の仕様を記載したものだけです。そのため、その仕様がどのような「要求」に対応したものなのか、仕様にヌケモレがないかが判断できません。その結果、仕様の不備がソフトウェアに不具合として混入してしまいます。
なぜ組込みソフトウェアの開発現場では「要求」が記述されないのでしょうか?
それは組込みソフトウェアの開発では量産開発の前に先行開発や要素技術開発が行われることが多く、そこで決められた仕様や成果物を基に量産開発が行われるためです。また、量産開発でも設計、実装を行いながら仕様を決めていくといったやり方で開発が進むため、ソフトウェアを統合してテストするまで仕様の矛盾やヌケモレが発見されないという問題も発生します。
仕様の目的や意図を明確にしたり、仕様の矛盾やヌケモレを発見するためには、先行開発や要素技術開発の仕様を量産開発でそのまま使うのではなく、量産開発で対応すべき項目も加味した上で「要求」を抽出・定義し、それらと先行開発や要素技術開発の仕様を基に、改めて量産開発のための仕様を検討していく必要があります。
『USDM』では、これら仕様をグルーピングしてボトムアップ的に要求を導き出すことができます。更に、その「要求」の理由を明確にすることで、仕様のヌケモレや矛盾の発見につながります。
そして、設計、実装を開始する前に『USDM』を使って仕様を充分検討し、この段階で仕様を決定してしまうことで、仕様の矛盾やヌケモレによる手戻りを最低限に抑えることができます。ここで、仕様の作成は設計工程の作業だと考える方もいるかもしれません。しかし、本来なら設計は仕様が決まっていなければ開始できないはずです。なぜなら、仕様とは「要求」を実現するためのシステムの具体的な動きや制限を表したもので、設計とはその仕様をどのような構成で実現するか、それらの構成要素がどのような役割をもち、構成要素間でどのような相互作用をするかを検討する工程だからです。
また、ソフトウェアコンポーネント設計の工程に入るとコンポーネントごとに担当者や部署が分かれている場合も多いため、各担当者がコンポーネントの設計を行いながら仕様を決めてしまうと、ひとつの機能の実現に関係する複数のコンポーネント担当者の間で、コミュニケーションミスが発生しやすくなり、それが不具合につながってしまいます。
『USDM』を使って、「要求」と「仕様」を「要求仕様書」として文書化し、それを担当者間の共通認識として開発を進めることで、上流だけでなく下流においても、余計な問題や不具合の発生を抑えることができるのです。
私が関与した開発現場では、開発のインプットとして具体的な制御方法について細かく記載したものしかありませんでした。そのため、仕様の妥当性が分からず、今の設計構造にも問題があるのではないかという不安を抱えていました。
そこで、細かい制御仕様を抽象化して「要求」を出し、その「要求」をブレークダウンする形で仕様を定義しました。『USDM』を使うことで、「要求」を満足するのに十分な仕様であることが確認でき、更に、設計構造を見直すこともできるようになりました。
良い「要求仕様」を作るためには、「要求」と「仕様」を切り離す必要があります。そのためには、制御仕様を抽象化して「要求」を得ることが必要です。しかし、長年細かな制御仕様に慣れている開発者の方には抽象化が難しいようです。その分野こそエクスモーションの強みです。ぜひ、お任せください。
「要求仕様書」を作成したいのに作成する工数が取れないといったお客様に向けて、エクスモーションが制御仕様書や機能仕様書などの既存資料の調査や開発者へのヒアリングを行って「要求仕様書」を作成します。
お客様自身で「要求」の定義や仕様化のスキルを身につけたい場合も、エクスモーションが作成した「要求仕様書」をお手本として学習できますので、技術導入の最初のステップとしてもお勧めです。
「要求」の定義や仕様化に必要な知識や技術の教育を実施したり、開発プロセスに「要求定義」の工程を組み込むための検討をすることで、お客様の組織へ「要求」の定義と仕様化のための技術を導入するお手伝いをします。
当社がこれまでに培ったUSDMのノウハウに基づき、お客様がUSDMで作成された要求仕様書の内容を評価し、改善点をレポートいたします。
「要求」の定義と仕様化の基礎的な方法を身につけて頂くため、『USDM』で「要求仕様書」を作成する演習を中心としたトレーニングを実施します。