仕様書とオブジェクト指向 ~ SysMLってこんなもの(その3)

素人目線でSysMLを説明するその3。前回は「オブジェクト指向には主語と動詞がある」というとても素人らしい大雑把な結論でしたが、今回は「主語と動詞とシステムと仕様書」について。

SysML = システム仕様書を書く言語

・・・と言い切って良いと思う。そりゃあゲームのルールブックやお料理のレシピだってSysMLで書こうと思えば書けるかもしれないけど、たいていの人はSysMLを「システム仕様書」を書くために使います。

システム仕様書を書くための「SysML以外の」言語

まだSysMLでシステム仕様書を書く人は少数派でしょう。では普通システム仕様書は何の言語で書くか?日本語や英語=自然言語で書く、というのが一番多いでしょう。それと自然言語以外にもう一つ、昔からシステム仕様書を書くために使われている「言語」があります。それは「図面」です。設計図や回路図などの図面は、自然言語では表現しにくいものでも正確に表現できるので、システム仕様書を書くときにとっても重要なものになっています。

「図面」とSysMLの違い

前回、『「プログラム言語」には主語が無い』という話をしました。

これとは対照的に、図面は一般に「主語」を説明するだけで、「動詞」は書けない(書かない)のです。

機械図面、回路図に書いてあるとおりに作れば、そのモノがどのように動くかは自然の法則で必然的に決まります。だから改めてどういう動作をするかは書く必要が無い、というのが図面のスタンスです。

機械図面や回路図はオブジェクト指向の「主語」に相当し、SysMLでは「構造図」で表現できます。「動詞」だけのプログラミング言語、「主語」だけの図面、これに対しオブジェクト指向であるSysMLは「主語」と「動詞」の両方が使えます。図面はある時点のシステムの構造だけを表します。これに対しSysMLではある時点のシステムの構造(構造図)とシステムの時間変化(振る舞い図)を組み合わせてシステムを立体的に表現できるのです。

システム仕様書を演劇に例えると‥‥

オブジェクト指向以前のプログラミング言語は、いってみれば「プロット」「シナリオ」に相当します。どのようにお話が進むかは書いてありますが、それが舞台なのか映画なのかアニメなのか人形劇なのかはわかりません。

設計図や回路図などの図面は、登場人物のプロフィールや外見、物語の舞台の設定、舞台美術や衣装や小物などなどです。登場人物の能力や性格、口癖、過去にあった出来事、舞台となる世界の状況など事細かに決めておけば、あとは勝手に物語が進行するでしょうが、事前にどのような物語が展開するかはわかりません。

SysMLはシナリオやプロットである「振る舞い図」、登場人物のプロフィールや舞台設定などの「構造図」を組み合わせて物語を構築できます。

とっても観念的ですが、オブジェクト指向(SysML)が仕様書を書くのに向いているのはこんな理由からです。個々の表現力ではプログラミング言語や図面には劣る部分もあるけどね。