無料ブログはココログ

« クリスマスにお勧めの曲 | トップページ | [#iPhone] 同期&iOSのバージョンアップで消えた曲が復活!(実はiTunesが紛失) »

[#TiDD] ソフトウェア工学の課題とチケット駆動開発の可能性

拙書のレビューをしていただいた平鍋さんがSEMAT.org にて「ソフトウェア工学再建」運動が開始という記事を書かれています。

そこで紹介されているソフトウェア工学の嘆きの中で、私が注目するのは

「産業界と学会のギャップが大きい。」

というものです。この問題はすでに1980年頃からずっといわれている問題です。そもそも「工学」とは大辞林 第二版(三省堂)によると

〔engineering〕科学知識を応用して、大規模に物品を生産するための方法を研究する学問。広義には、ある物を作り出したり、ある事を実現させたりするための方法・システムなどを研究する学問の総称。

となっています。これまでのソフトウェア工学が利用する科学知識は、コンピュータサイエンスと数学、特に統計学が利用されてきました。もちろん、認知科学や心理学なども応用されていますし、広義の意味での工学として分析、設計、テストもソフトウェア工学の研究です。

しかし、上に挙げたソフトウェア工学の問題は、主に狭義のソフトウェア工学です。そう考えると平鍋さんの記事にある

「広く合意された要素を特定用途に拡張できるような論理カーネルを含み」

と言うアプローチも意味のあることです。しかし、私が重大だと考える問題は上にも挙げた

「産業界と学会のギャップが大きい」

であり、具体的には

  • 現場のデータが少ない
  • 現場のノウハウがあまり含まれていない
  • 現場での利用、フィードバックが少ない

ということです。以下に書いたように、このような問題にチケット駆動開発は有効だと思っています。

1.現場のデータがない

SEMATの前にも

「言いっぱなしはだめ、実証して実際のデータで議論すべし」

として「エンピリカルソフトウェア工学」(実証ソフトウェア工学)という言葉が使われるようになりました。データで実証することによって、一定の成果がありました。しかし、現場の協力を得ることはとても大変なことで、協力いただける企業の窓口となる部門(品質管理部門や研究部門)の方はもちろんのこと、さらに現場の協力が必要で、よほど理解がない限り、積極的な協力というよりは渋々ご協力いただく形になり、あらかじめお願いしたこと以上のことは不可能です。

これはとても大変なことです。プロセス改善ではトップのコミットメントがあればある程度強制的に、実施することも可能です。しかし、うまく行くかどうかを実証したい仮説を実証するために、業務よりも優先するわけに行かず、仮に協力いただけても多くの不満を聞くことになります。

2.現場のノウハウがあまり含まれていない

研究においては、想定外の出来事は「発見」であり、ネタの宝庫でもあるのですが、お願いしたこと以外の情報もなかなか得られません。そこで実証する内容、つまり仮説を如何に立てるかが、重要になります。そして仮説が外れれば実証は失敗です。仮説をブラッシュアップする情報が得ることができなければ、せっかく築いた協力関係も終わりです。

この現場の壁、実はそれこそが現場のノウハウだと思っています。ソフトウェア工学の仮説を立てる場合、良い研究とするために、より一般的なテーマを選びがちです。これに対して、現場は各プロジェクトの特殊な難しさを抱えていて、それを現場のノウハウで何とか乗り切っています。仮説がそのノウハウをテーマとしていれば、良いデータが収集できると思うのですが、それが分からないからこそうまく仮説が立てられずに壁に阻まれることになるのです。

3.現場での利用、フィードバックが少ない

これは異論のある方も多いかもしれません。実はこれまで対象としてきた大規模プロジェクトを以下に管理するか、という問題に関しては、その技術や研究成果は数多く利用され、多くのフィードバックがあったからです。

しかし、大規模プロジェクトに対して小規模プロジェクトは長い間あまり研究対象にはなりませんでした。90年代にあるシンポジウムで小規模プロジェクトの発表をした際も「そんなのはやらない」とまで言われたことがあります。

しかし時代は変わり、これまでのソフトウェア工学で対象としなかった小規模、かつ、人の能力を以下に生かすかがポイントとなるネットワーク型の組織での開発が増えています。そのような分野で働く人から見れば、現場での利用は少なく、その人たちの声もアカデミア(学会)に届いていなかったのです。

また、そのような新興の分野ではビジネスが優先されますので、直接的な利益につながらない技術は受け入れられません。技術的に高度なことをするよりも力任せに開発する方が目先の利益につながるなら、そちらを選択せざるを得ない現実がアカデミアとの距離を広げさせています。

4.チケット駆動開発の可能性

現場の我々はアカデミアが研究してくれるまで待たないといけないのでしょうか?それが80年代なら、ツールを導入するにもCPUのコストが高く、技術者が交流する機会も少なかったので難しかったでしょう。しかし、現代ではこれらは大した問題ではありません。かつて汎用機やミニコンが必要だったカバレージも簡単に計測できますし、小規模開発であってもチケット駆動開発によってリスクを低減できます

チケット駆動開発の本質は楽をすることです。今こそチケット駆動開発を導入すべき時だというとき、つまり、利益が出る、あるいは、利益が同じでも開発が楽になる時にチケット駆動開発を導入すれば、導入の障壁も少なく、現場の問題を改善してくれるでしょう。

そして、そこでは多くの現場のノウハウが生かされるた、チケットという貴重なデータが残るでしょう。それは、単に不具合や作業の記録の記録だけではなく、ソースコード修正の理由が残されるのです。また、朝会やふりかえりを通してプロジェクトに最適化された運用が行われれば、その効果がより実感されるようになるでしょう。

データを集めるためでなく、開発を楽にする目的でチケット駆動開発をする事が重要です。やらされるのではなく、自分たちで自分たちのプロセスを改善するのです。そこで得られるノウハウは、研究ではあまり扱われない個別の問題かもしれません。しかし、多くの開発者に参考になるノウハウです。学会で発表されることがなくても、自分たちで勉強会やライトニングトーク、ブログ、ツイッターなど情報をドンドン公開しましょう。そうすれば自然と情報が集まり、より多くのノウハウを得ることができるでしょう。

情報を得る最も良い方法は、情報発信です。情報を発信する人のところには情報が集まります。それで利益を得ようとするのではなく、ドンドン提供する。それが大切です。すごい人になれなくても、ネットワークを使えば、良く知っている人にはなれるはずです。

それはソフトウェア工学というものではないかもしれませんが、広い意味でのソフトウェアエンジニアリングであり、それは現場の求めているものに近い情報でしょう。

日本でも大学院卒の人が増えています。これからは、うまくまとめる事が得意な人がドンドン増えるのですから、チケット駆動開発を通じた情報を発信していれば、いずれ新しいソフトウェア工学の形が生まれてくれるのではないか、そんな期待をしています。

1月15日のSEA関西プロセス分科会では、チケット駆動開発の分類と上述のような内容を発表するつもりです。案内ができれば、ここでお知らせするつもりです。

このエントリーをはてなブックマークに追加


« クリスマスにお勧めの曲 | トップページ | [#iPhone] 同期&iOSのバージョンアップで消えた曲が復活!(実はiTunesが紛失) »

チケット駆動開発」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/138594/50223454

この記事へのトラックバック一覧です: [#TiDD] ソフトウェア工学の課題とチケット駆動開発の可能性:

« クリスマスにお勧めの曲 | トップページ | [#iPhone] 同期&iOSのバージョンアップで消えた曲が復活!(実はiTunesが紛失) »