※本記事を初めてお読みになる方は是非、初回:「何故システムモデリングが必要か」および第二回:「SysMLとは何か」もあわせてお読み下さい。
1.SysMLを活用した要求分析
下図の電光掲示板を例題として、SysMLを活用した「機能の洗い出し」と「要求の詳細化」を実施してみます。
 図 1 コンテキスト図
コンテキスト図はSysMLに規定されている図ではありません。SysML1.1の仕様書付録Bに内部ブロック図をコンテキスト図として応用する例が示されていますので、それに倣いました。<<System>>と書かれている部分が今回開発対象のシステムです。<<external>>と書かれている部分は今回の開発対象外ですが、ユーザーが利用する最終システムには必要となるため外部システムとして表しています。
1.1.機能の洗い出し
ここではユースケース図を用いて電光掲示板に要求されている機能を洗い出します。コンテキスト図を元にユースケース図を作成すると以下になりました。
 図 2 ユースケース図
文字列は一度設定すると変更されない限り同じ文字列を表示し続けるため、「表示する文字列を設定する」ユースケースは「文字列を表示する」ユースケースから独立したユースケースとしました。「スクロールする」機能は文字列が表示領域より長かった場合のみなので「文字列を表示する」ユースケースの<<extend>>としています。
<<SysML解説>>
ユースケース図は、システムの外部から求められる機能的な要求を表現する図で、UMLからの変更点はありません。
楕円がユースケースで、システムを外部から識別できる機能単位で記述します。よく内部処理の単位でユースケースが書かれている例を見ますが、これは間違いです。外部から識別できる機能に着目します。
人型をしている図形はアクターと呼ばれ、システムのステークホルダー(利害関係者)を表します。今回は利用者以外に外部システムである「文字列入力装置」もアクターとして抽出しています。システムに関与するステークホルダーは、それぞれシステムに対して異なる要求を持っているので、要求を検討する上でステークホルダーに抜け漏れがないように注意しましょう。
1.2.要求の詳細化
ここでは要求図を用いて電光掲示板に求められる要求を詳細にしていきます。まず、ユースケース図のユースケースを要求図の要求に割り当てると以下のようになります。
 図 3 要求図(初期)
ユースケース図のユースケースをそのまま要求図の要求に割り当てています。
<<SysML解説>>
要求図はUMLには存在しないSysML独自のダイアグラムで、非機能的要求を含めた要求を記述するために用いられます。
要求は複数の要求の集合として表すことができ、+記号に○を付けたネスト記号を用いて表現します。
要求には様々な種類があり、ユーザーが独自にステレオタイプ<<requirement>>を拡張しても良いことになっています。SysML1.1の仕様書では、付録に規定外拡張として以下の拡張ステレオタイプが記されています。
表1.要求の拡張

これら要求の拡張をシステムエンジニアリングプロセスで独自に既定し、要求分析時に検討しなければならない要求の側面として位置づける事により、要求分析時の検討不足低減に繋がる事が期待されます。
要求間の関連はステレオタイプ<<refine>>を含め以下の種類が規定されています。
表2.要求間の関連ステレオタイプ一覧

「割り当て」の概念もSysMLで新しく取り入れられました。基本的には要素間の抽象的マッピングといった汎用的な意味で、実装への変換が可能な(モデリングツールが自動生成できるような)具体的関係を示すためではありません。
典型的な例は機能のブロックへのマッピングやブロック操作のソフトウェアへのマッピングなどです。
今回の例では要求図の要求に対して「allocatedFrom」で割り当て元のユースケースを指定しています。
ユースケース図のユースケースを電光掲示板に要求される機能として割り当てたので、続いて要求図を使って他に必要な機能や機能以外の要求(非機能要求)が無いかを検討していきます。結果は以下のようになりました。
 図 4 要求図(2回目)
色分けはSysMLの規定ではありませんが、見易くするためにユースケースから割り当てられた要求を水色、詳細が決まっていない要求を桃色にしています。
利用可能なハードウェア構成から、同時可能な文字数は8×16ドットフォントで4文字分であること、スクロール速度はディップスイッチで16段階に設定することを要求に追加しました。
文字列入力にはRS-232CまたはEthernetを利用することを候補として上げていますが、詳細は未定にしています。他に表示可能な文字の詳細とスクロール速度の詳細も未定です。
また、<<problem>>として、CPU版ではスクロール時に画面がちらついたとあり、それを受けて今回はちらつかない事が性能要求として上がっています。そこから性能要求が検討されており、設定可能なスクロール速度と関連することが分かります。
さらに、スクロール速度の計測は1ドットスクロールごとに赤・緑のLEDを交互点滅させ、その間隔計測することをテストケース(<<testCase>>)に設定し、表示性能の検証(<<verify>>)を行うことにしています。
<<SysML解説>>
要求図では関連のノートにもステレオタイプが規定されています。図中の<<rationale>>と<<problem>>です。
<<rationale>>ではその要求が必要な根拠を記述します。図ではノート中に根拠を示していますが、科学的な実験結果などが参照される事も多いです。
<<problem>>は要求に関連した問題を記述します。過去不具合があったとか、技術的課題があるなどが典型的な例です。
2.まとめ
SysMLを用いた要求分析では、従来は設計者の頭の中で完結していた要求を仕様化する過程が視覚化できます。これにより、検討の抜け漏れの早期発見や異なる分野の技術者同士での意思疎通が促進され、システム仕様の早期安定が期待できます。
*本Webマガジンの内容は執筆者個人の見解に基づいており、株式会社オージス総研およびさくら情報システム株式会社、株式会社宇部情報システムのいずれの見解を示すものでもありません。 |