パターン11:開発者はプロセスを統制する

         

図2 開発者は、ソフトウエア開発の隅々にまで行き渡るすべての活動の中心にいる。

問題:

プロジェクト情報交換の中心はどの役割が果たすべきか?

コンテキスト:

完全に理解できていない設計分野であり、開発にとって繰返しがキーとなっている。

影響する事柄:

全体主義的な統制は、多くの開発チームで、厳格さの程度として観察される。

正しい情報は、正しい役割を経由して流れなければならない。

分析、設計、実装に渡っての情報交換の流れをサポートする必要がある。

マネージャーは幾分かの責務を持つている。

開発者が最終的な責務を持つており、権威を持ち製品を統制している。これらはよくある課題である。

解決策:

ある機能に対して、開発担当をプロセスの中心におきなさい。機能とは、別々に市場に出すことができ、顧客が喜んで買うような製品単位(主としてソフトウエアとして実装されたもの)である。開発者は、プロセス情報についての手形交換所である。開発者の責任には、要求仕様を理解すること、解決策となるソフトウエア構成とアルゴリズムを仲間と一緒にレビューすること、実装を組み合わせること、単体テストを含む。

他にも中心があってもかまわない。

結果として生じるコンテキスト:

主要な情報消費者を支援できる組織となる。

仕事は内向きに流れる責任を移動のパターンを使用して、開発担当者をプロセスの中心に向かって動かすことができる。

開発担当者はキーとなる役割であるが、過負荷にならないように注意しなければならない。このパターンは、雇われ分析者ファイアーウオールゲートキーパーのパターン、およびより一般的な負荷平均化に関するバッファローの山のようなパターンとバランスをとって用いなければならない。

論理的根拠:

設計は作業全体のことであり、設計者と呼ばれるような役割はない。マネージャーは支援的役割を果たす。経験的にいえば、彼らは危機的な状態を除けばプロセスを統制しているようには見えない。開発者はプロセスを統制し、一方、アーキテクチャ設計者は製品を統制する。(図においては、アーキテクチャ設計者の役割は、フレームワーク所有者とアーキテクチャチームに分割されている。)顧客と一緒になってその分野の調査・解析を繰返しできるようにするために、この情報交換はよく理解できていない分野では特に重要である。