« 複合キーの必要性はなし? | トップページ | ソフトウエアの設計はどこから来るのか? »

2006年9月 7日 (木)

ソフトウエアの設計は協業の基礎を作ること

従来、プログラマというのはコンピュータとだけ向かい合ってきた孤独な人々であり、他人との対話を苦手としている。ベック氏は自身の経験も踏まえていう。ただし、ある程度の規模のソフトウェア開発作業は他人との協業を抜きにして行うことができない。すると、プログラマ同士が対話をすることの重要性が自ずと浮かび上がってくる。ソーシャル・スキルとは、つまり人と話をすることである。単純なことだが、プログラマという職種にある人々の多くがこのことをうまくこなすことに困難を感じる傾向にあるとベック氏はいう。

XPと宮本武蔵の勝利への執念、ケント・ベック - @IT

私にとって、ソフトウエアの設計は、プロジェクトの運営と切り離して考えることはできないものですね。

ソフトウエアの設計の本質は、ソフトウエアを複数の部分に分割し、そして、各部分がどのようにやり取りをおこなうのか、を記すことにあると思います。そして、こうして分割を行なうことで、プログラマがそれぞれの部分について、ある程度独立して作業を進められるようになる、それがソフトウエア設計の目的だと考えています。

しかし、ソフトウエアの品質というものは、この分割された部分同士が繋がる箇所によって、決まってしまうように思います。したがって、「ある程度独立して作業を進め」ながらも、各部分を担当するプログラマ同士が、どれだけ密接に、きめ細かに、協業できるか、というところが、品質を決定づける最大のポイントになってくるわけでして。

XPが、ソフトウエア設計において、ソースコードを何よりも重視すべきもの、としているのは、ここから来ているように感じます。ソフトウエア設計は、「全体」から「部分」へ、「概要」から「詳細」へと進めていきますが、最後に到達する「詳細設計」は、ソースコードとなりますから。これが、もっとも正確できめ細かな設計書、というわけです。従って、プログラマ同士は、最終的には、ソースコードによって、コミュニケーションを行なう、ということになります。

ただし、ソースコードでは、あまりに詳細すぎるので、ソースコードの「上」に、その概要となる、「見取り図」となるものが必要だとも考えています。ですので別に、UMLなどを使用した設計書(ドキュメント)を用意するようにしてます。どこまでを設計書で書き、どこからをソースコードとするか、この「境界」を、色々試しつつ、探しているところです。以前は「あらゆる詳細」を設計書に書いたりしてましたが。

おっと、よく誤解されるので先に反論しておこう。先ほどの「コードは重要なドキュメントだ」という原則だけど、「コードが"唯一の"ドキュメントだ」とは言ってない。「XPではコードがドキュメントだ」とよく耳にするけど、 XPのリーダー達がそんなことを言ってるのは聞いたことがないなあ。コードを補完するには、他にもドキュメントが必要なんだ。
Martin Fowler's Bliki in Japanese - コードがドキュメントだ

XPは別にドキュメントを否定している訳ではないそうですけども、ドキュメントについて、あまり語られていないのも事実でして。ドキュメントについては、構造化分析・設計や、オブジェクト指向分析・設計などで、十分語りつくされているから、ということなのかもしれませんね。

|

« 複合キーの必要性はなし? | トップページ | ソフトウエアの設計はどこから来るのか? »

コメント

コメントを書く



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


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



« 複合キーの必要性はなし? | トップページ | ソフトウエアの設計はどこから来るのか? »