自分の判断に責任を持て

ソフトウェアプロジェクトにおいて、ソフトウェア・アーキテクトは他の誰よりも大きな影響力を持っていますので、アーキテクトは自らの判断に責任を負わなければなりません。研究によれば、2/3を越えるソフトウェア・プロジェクトは、何らかの形で失敗しています(納期の遅れ、予算超過、顧客満足度の低さなど) 。多くの場合、失敗の根本的な原因は、ソフトウェアアーキテクトの判断ミス、あるいは詰めの甘さにあります。

アーキテクチャーについて効果的な判断を下せるソフトウェア・アーキテクトになるにはどうすればよいのでしょうか。

第1に、アジャイルであろうがなかろうが、自分の判断プロセスが完全には把握できていなければなりません。次の2つの条件が満たされるまで、アーキテクチャー上の決定を下したと言ってはなりません。

  • アーキテクチャーの決定事項が瑣末(さまつ)な内容であることはまずありませんから、決定事項をきちんと文書化する必要があります。決定事項は、実体化し、後からたどれるようにしなければなりません。
  • 決定を実施する人や決定によって直接・間接的に影響を受ける人に決定事項を伝える必要があります。コミュニケーションとは、共通理解を生み出すことです。

第2に、決定したアーキテクチャーを定期的にレビューしましょう。要件に対して決定がもたらした結果を検証します。そして、アーキテクチャーの中でまだ有効な部分とそうでない部分を見極めます。

第3に、アーキテクチャーとして決めたことが実際に行われるようにしなければなりません。多くのソフトウェア・プロジェクトは、設計段階にしかソフトウェア・アーキテクトを関与させません。設計が終わると、彼らは他のプロジェクトに移るか、コンサルタント契約満了になるかです。しかし、そのようなことで、アーキテクトが考え抜いて作ったアーキテクチャーを正しく実装させることができるでしょうか。彼らが最後まで参加していなければ、決定されたアーキテクチャーはよい考えとして祭り上げられるだけに留まるでしょう。

最後に、決定の一部をドメインのエキスパートに委ねましょう。多くのアーキテクトは、すべての判断を下さなければならないと勘違いしており、自分のことを何でも知っているエキスパートとして位置づけています。実際には、全能の技術者などいません。アーキテクトには、非常に優れている領域、かなりよく知っている領域、単純にそれほど優れていない領域があります。優れたアーキテクトは、自分があまりよく知らないドメインについては、その道のエキスパートに譲るものです。