uml
派生開発

派生開発における変更指示をモデルで表現する(問題編)

More than 3 years have passed since last update.

セイコーエプソンの萩原さんと、モデルを使って派生開発の変更指示をうまく表現できない、という課題を議論しました。考えのメモです。

派生開発における「変更指示」

日本の組込み開発でよく使われる手法である清水さんの「派生開発」(XDDP)ですが、派生前の状態に対して「変更指示」を文書化します。

ソースコードレベルであれば問題は少ないのですが、構造に対しての修正は大域的になり、うまく表現しにくくなります。これをモデルで扱いたい、というのが問題です。

Before/After の問題点

まず考えられるのは、Before と After を示す方法です。

image

ここから実際の変更を行うのはとても観察力が必要!例えて言えば、間違い探しになってしまいます。
image

例えば astah などでは diff をとる機能もありますが、もっといい方法はないでしょうか?普通は「赤ペン」を入れたいところ。

image

さらに言うと、せっかくなので、「変更を表現するモデル」があるとよいのに!変更を表現するのが目的のモデルとそれを使ったビュー。

この表現の必要性をアーキテクチャの観点から言ってみる

「アーキテクチャ記述」という何か、という話で、2000 IEEE1471(ISO/IEC42010)という標準モデルがあります。そこには、「ビュー」と「ビューポイント」が定義されていて(『ソフトウェアシステムアーキテクチャ構築の原理(第2版)』読んだ 参照)

image

  • 「ステークホルダー」毎に「関心事」があり、
  • 「ビューポイント」は1つ以上の「関心事」をカバーする。

となっています。要は、モデルは誰かの関心事毎にビューポイントに従って記述される。派生開発にとって「変更」は明らかに関心事であるから、「変更を示すビュー」、そしてそのモデル表現は必要だといえる。

解決案

しかし、現在、この「変更を示すモデル」を真正面から扱ったものを、ぼくは知らない。。。。赤ペンで書くのもよいでしょう。そして、Before/After を示すのもよいでしょう。しかし、もうちょっとフォーマルに(UML程度のセミフォーマルに)扱えるとよいのに。「変更を表現するモデル」があるとよいのに。

というのが問題です。では、次に解の試案です。


(補記1:クラス図を例にしましたが、状態遷移図やアクティビティ図、シーケンス図など、もっといろんな図で使えるとよいと思っています。また、派生開発の現場ではC言語が多く使われるかもしれません。ここでは例としてUMLクラスを使ったオブジェクト指向的表現となっていますが、クラスを「ファイル」、操作を「関数」、属性を「変数」と読み替えてC言語でも使えるものがよいと思っています。)

(補記2:今年の派生開発カンファレンスに、基調講演という大役を頂きました。日本のアジャイルの話をしようと思います。)