Sunday, June 22, 2008

ソフトウェアアーキテクチャはプロジェクトを救うか [arch]

金曜の夜に同僚と飲みに行き,「ソフトウェアアーキテクチャ」や「ソフトウェアアーキテクト」の定義を何時間も議論するのもどうかと思うが…

彼の「アーキテクチャ」の定義は制約を形にしたもの.「アーキテクト」の定義は監視役.

私の「アーキテクチャ」の定義は意思決定 (もしくは意思決定ツール).「アーキテクト」の定義は組織によって変わる (高層ビルの建築家と木造住宅の建築家は別物).

「意思決定」を補足すると,よく「線引きをする」という表現が使われると思うが,本来引かれるべき線は直線ではなく,ぐにゃぐにゃした線ではないだろうか.直線なら素人が引いても10回に1回は成功するかもしれないが,ぐにゃぐにゃした線は当てずっぽうでは引けない.視野を広く持ち,制約・ビジネスに対する影響・トレードオフなどを鑑みて,妥協するところは絶妙に妥協し,譲らないところは1歩も譲らずに引いた線とその表現がアーキテクチャだと思っている.では,これらのことをまったく考えずに引いた当てずっぽうの直線はなにかと言うと,それもまたアーキテクチャだ.つまり意識する・しないに関わらず,ソフトウェアにはアーキクチャが必ず存在する.

言葉の定義に興味がある方はこのあたりもご参照頂きたい (1つ目のリンクはコメントも含めて).
Hitchhiker's Guide to Software Architecture and Everything Else - by Michael Stal: What is Software Architecture
Peace Pipe: ソフトウェアアーキテクチャ その2 - 「ソフトウェアアーキテクチャ」とは [arch]

そもそも曖昧なこれらの言葉を,一般的に定義しようとすることは不毛だろうが,組織やプロジェクトに特化した共通の定義 (解釈) があることは重要だと思う.その意味では,我々の組織においてアーキテクチャがどう作用しているか・するべきかといったこの日の議論も多少は意味があったような気がする.


アーキテクトについて言えば,それは人ではなく役割だ.だから規模の小さいプロジェクトなら1人がプロジェクトリーダーとアーキテクトの2役を担っても良いし,逆に大きいプロジェクトでは,アーキテクトと呼ばれる人が2人以上必要なケースもあるだろう.アーキテクトのグループを複数のプロジェクトに配置する場合もあるかもしれない.

所詮は役割でありそれ以上でも以下でもないので,例えばアーキテクトとプロジェクトマネージャーと一実装担当者において「どちらが偉いか」を決めるものではない.権限は明確になっている必要があるが,どうもその権限や仕事内容が「偉い・偉くない」に結びつきがちなのはなぜだろうか.


同僚は「ソフトウェアアーキテクチャはプロジェクトを救わない」と主張していた.私も結論としては同意見だが,アーキテクチャはプロジェクトマネージメントを促進するので,間接的に救うことはあると思っている.

ところでこの日は チムそば で飲んでいたのだが,「アーキテクチャはプロジェクトを救えないかもしれないけど,チムそばのラーメンは世界を救うんじゃないかと思う」という彼の発言には私も同意.

途中から酔いがまわってあまり覚えていないので,自分の主張については補足ヨロシク > 本人


2 comments:

juno said...

チムそば美味しかったですなぁ(ぽわーん)。

toshi said...

新しいな,それ.