問題を抱えてしまったソフトウェア工学を、もう一度やりなおそうという活動
「Software Engineering Method and Theory」(ソフトウェア工学の方法論と理論)の頭文字を取った「SEMAT」というWebサイトを中心に、問題を多く抱えてしまっている現在のソフトウェア工学をもういちど作り直そう、という活動が始まっています。
この活動については、アジャイル開発手法の第一人者でもある平鍋健児氏のブログ「An Agile Way」で2月28日にポストされたエントリ「SEMAT.org にて「ソフトウェア工学再建」運動が開始」で紹介されています。
そしてその平鍋さんが、この活動に関する「ビジョンステートメント」を日本語訳にして公開されました。
ソフトウェアの工業化には工学の進化も重要ではないか
ソフトウェアの開発というのは、エンジニアが顧客のために1つ1つ精魂込めて作るようなことが多い、職人的な色彩が強いのが現状ではないかと思います。これがいま、クラウドやSaaSといったソフトウェアを提供する新しい形態や、SOAやマッシュアップなどのソフトウェアを組み合わせる技術、オープンなシステムを構築するためのさまざまな業界標準が進化してきたことなどで、よりモダンな工業化へと進む道が見え始めたのではないかと僕は認識しています。
かつてこうしたソフトウェアの工業化は、オブジェクト指向などによるソフトウェアの部品化やパッケージソフトの普及によって起こるのではと期待されてきましたが、それではまだ不十分だったようです。
そして工業化をさらに進めていくためには、ソフトウェアが進化するだけでも不十分で、その技術を使って生産する現場を支える工学、つまりソフトウェア工学もまた重要性が増してくるのではないでしょうか。
こうした状況の中で起こった今回のソフトウェア工学をもういちど作り直そうという活動は注目すべき活動のように思います。そこで、平鍋さんが訳されたビジョンステートメントをもとに、その活動がどのようなものなのかざっくりと紹介することにしましょう。
ただし非常に複雑な内容なので、できるだけ分かりやすいように原文も参考にかなりかみ砕いた表現にしました。正確な内容は、ぜひ原文を当たってみてください。
ソフトウェア工学の現状、プラットフォームを作る
ビジョンステートメントのオリジナル文書「SEMAT vision statement」を書いたのは、UMLを考案した3人のうちの1人Ivar Jacobson氏、オブジェクト指向言語Eiffelの作者Bertrand Meyer氏、そして長年に渡りOMG会長を務めていることで知られるRichard Soley氏の3人。それ以外にもこの活動にはソフトウェア業界の有名人、著名人が名を連ねています。
文書ではまず、現在のソフトウェア工学の問題点を指摘しています。
- ファッション業界のように、いろんな言葉が流行している。
- しっかりした理論的基礎が欠けている。
- 多くの方法論や似たようなものが、あまり理解されないまま強調されている。
- 信頼できる実験や、その妥当性を評価することが欠けている。
- 産業界が実践していることと、学者が研究していることが乖離している。
その上で、ソフトウェア工学を堅固な理論と検証された原則、そしてベストプラクティス(最善の事例)などを基礎として再建するプロセスを支援する、としています。
ビジョンとして掲げるのは「人々が、現在、未来のプラクティス、パターン、メソッドを記述し、それらを組合わせ、模倣、応用、比較、評価、計測、教育、研究ができるようなプラットフォームを作る」ことだそうです。
このプラットフォームとなるのが、この活動の中での特徴でもある「カーネル」と呼ばれるものです。ここでのカーネルとは、UNIXなどのOSのカーネルのことではなく、活動の中心となるフレームワークです。カーネルは、フレームワークとしての「カーネル」、そしてソフトウェア開発の活動や成果物を具体的に表現する「汎用要素」、それらを記述するための「カーネル言語」などから構成されるようです。
おそらく、ソフトウェアに関わるものについてできるだけ主観的な表現や評価を避け、客観的に記述し評価するためのフレームワークなのでしょう。要求仕様に対してそれを記述するモデリング言語があるように、ソフトウェア工学に対してそのエッセンスを記述するようなものを目指しているのではないでしょうか。
カーネルはこの活動の文字通り核となるもののようなのですが、その説明は非常に抽象的になっていて、実のところこの理解で正しいかどうかあまり自信がありません……、ご興味のある方は、ぜひオリジナルのドキュメントに当たってみてください。
1年後に期待する成果
さて、この活動の1年後に期待する成果としては、以下が挙げられています。
- 一連の定義。それはソフトウェア工学の定義、およびプラクティスとパターンで求められる基本コンセプトの定義を含む。
- ソフトウェア理論もしくは理論分野の識別。それはSEMATのポテンシャルを保ったまま、特定のソフトウェア工学のプラクティスの成功例によって裏付けされたものとする。
- 一連の重要な汎用要素とその具体例。それらは重要な方法論が用いられたいくつかのプラクティスで妥当性が検証できること。また、少なくとも1つは汎用要素以外の開発で使われたものを含む。
- カーネル言語の定義。それによって汎用要素などがうまく記述できること。
- 一連の計測方法。それはソフトウェアプラクティス、プロダクト、そして人々を評価するのに十分であり、いくつかのプロジェクトに対する成功例によって裏付けされたもの。
この最初の1年で期待する成果をみても分かるように、SEMATが挑戦するソフトウェア工学の再建というのはそれほど簡単ではなさそうです。期待しつつ見守りたいと思います。