
鈍重な開発チームは鈍重なシステムを作る?
パート3:役割とポリシー(後編)
2007/11/20
チーム構造とアーキテクチャの適合
Melvin Conwayが1960年代後半に定義したConwayの法則は、「どのソフトウェアも、それを作り出した団体の組織構造を反映している」としている。このようなことが起きるのは、人は自分たちがどのように組織化されているかを反映した形で作業をするためだ。つまり、分散したグループは分散アーキテクチャのシステムを作り出す可能性が高い。プロジェクトチームの組織構造にある長所や短所は、いずれも彼らに生み出されるシステムに必然的に反映されることになり、それは効率的なITアーキテクチャが目標ならITの組織構造が効率的でなくてはならないことを暗示している。
例:
1. 地域主導のアーキテクチャ。地理的に分散している組織は、各主要コンポーネント(フレームワーク、データベース、アプリケーションなど)の所有権を1カ所ずつ分散するエンタープライズアーキテクチャを検討する必要がある。例えば、インドのチームがデータウェアハウスを所有し、スイスのチームが複数のアプリケーションを所有し、米国のインフラチームがセキュリティフレームワークを所有するといった具合だ。コンポーネントの所有権を地理的に分散して整理することでコミュニケーションの障壁が減少する。
本記事は、IBM developerWorksからアットマーク・アイティが許諾を得て翻訳、転載したものです。 |
2. 品質主導の組織。システムで高いレベルの品質を達成したい場合は、進行中の作業を繰り返し審査し、勧告を行う品質エキスパートを開発チームの中に組み入れる必要がある(こうすることでコミュニケーションの時間が削減され、文書化による情報紛失の可能性が低下する)。プロジェクトチームの作業を外部から認証する独立したテストチームを置くこともできるが、品質エキスパートの大部分はチームに組み込まれる点に注意したい。品質が組織の最優先事項でなくても、特定の品質レベルに達した証拠が文書で必要な場合は、外部品質管理グループが開発チームの作業を審査するだけで十分だ。
3. ユーザビリティ主導の組織。ユーザビリティがシステムにとって最大の関心事である場合は、必ず簡単にフィードバックを入手できるようエンドユーザーに近いところでチームを組織する必要がある。また、ユーザビリティ担当エンジニアもプロジェクトチームに組み入れる必要がある。
4. 再利用主導の組織。(コンポーネント技術やサービスベースの技術に基づいた)再利用が重要な要因である場合は、コンポーネントとほかのプロジェクトとの統合を支援するために用意されたこれらの再利用可能なアーキテクチャの要素を所有してサポートするチームが必要になる。
● メリット
組織構造と必要なアーキテクチャを適合させると以下のような大きなメリットがある。
開発チームが可能な限り簡単にアーキテクチャに適合できるよう開発作業を合理化する
反復作業を短縮するチャンスが生まれる(それによりプロジェクトのリスクが削減される)
グループ間の受け渡し、審査、手直しなどの無限に繰り返されるサイクルが削減される
チーム全体のコミュニケーションが向上する
● トレードオフ
この手法には次のようないくつかの代償が伴う。
- - PR -
全社的制限。組織がはるか前から集中データアーキテクチャを決めていながら、データ運用チームが現在も世界中の開発チームとともに分散化されたシステムを開発中というケースもある。幸いにも、石で彫ったような変更の難しい組織構造は1つもなく、既存のニーズをより良く反映した新しい構造を決めることは可能だ。
アーキテクチャだけが要因ではない。組織構造を定義する際に考慮すべき要因はアーキテクチャだけでなく数多く存在する。これらには、投入可能な人材、該当する規制や雇用関連法、個人の性格、文化、そして利用可能なオフィススペースなどの非常に基本的なものまである。
● アンチパターン
この手法には以下のようなアンチパターンがある。
1つの組織の戦略がすべてに当てはまる。基盤アーキテクチャでシステムが異なるように、チームもその全体の組織構造によって異なってくる。例えば、1つの開発チームが1つの部屋に配置され、利害関係者と密接に協力する一方で、別の開発チームは複数のサイトにまたがる地域分散型になる。たとえ同じ組織であっても、各チームがそれぞれ異なる状況にあり、異なるシステムを異なる方法で開発している。1つの組織構造をすべてのチームに無理やり当てはめようとすると、組織やアーキテクチャの不一致によって、全部まではいかなくとも、いくつかのプロジェクトを危険にさらす可能性がある。
組織によるアーキテクチャの抑制。組織構造は、システムの本当の要件を検討せずにアーキテクチャ面からアプローチを正当化するために利用される。例えば、一元管理されたデータ運用グループがあるために、複数のデータストアを各サイトに分散させた方が理にかなうアプリケーションがあるにもかかわらず、一元管理されたデータストアをすべてのシステムに強制する場合だ。このような判断は、比較的分かりやすい管理作業を合理化するため、全体の技術的リスクはもちろんのこと、開発や運用のコストを引き上げる可能性がある。
アーキテクチャによる組織の抑制。1つ以上のシステムで構成されるアーキテクチャは、アーキテクチャ以外の問題を検討することなくIT部門のアプローチを正当化するために利用される。例えば、組織が分散アーキテクチャを採用したミッションクリティカルな顧客関係管理(CRM)システムを購入し、インストールし、運用しているとする。ここでは、IT部門を1カ所にまとめてIT関連コストを削減したくても、CRMシステムのアーキテクチャに柔軟性がないためそれができない。
● 推奨デフォルト
デフォルトでは、アーキテクチャを中心に組織化を行い、部門間の枠を超えて協力できるチームに各主要コンポーネントを担当させる。もう1つの方法としては、複数の「ベース」チーム構造の中から出発点を選択し、それからチームに自己管理をさせて(「自己管理チーム」手法参照)具体的な状況に合致した構造を開発できるようにする。
[ポリシーと基準]
このカテゴリの手法は、さまざまな開発関係者間の首尾一貫した業務をサポートする具体的な指標を説明する。アジャイルソフトウェア開発にとって第一の価値である「個人と対話はプロセスとツールを上回る」は、プロセスやツールが全く必要ないことを暗示するものではなく、これらが人や、その人々が協力する手法ほどは重要でないという意味にすぎない。組織を統治する高効率アプローチは、開発者が効果的にコラボレーションを行い、既存のインフラや資産の開発および再利用、そして品質の高い作業へとつながるツールやポリシーを採用することになる。ポリシーや基準に関連する手法には以下のようなものがある。
統合ライフサイクル環境
評価IT資産
柔軟なアーキテクチャ
鈍重な開発チームは鈍重なシステムを作る?
| Page1 チーム構造とアーキテクチャの適合 |
|
| Page2 統合ライフサイクル環境 |
|
| Page3 評価IT資産 |
|
| Page4 柔軟なアーキテクチャ |
The Rational Edge バックナンバー 連載インデックスへ»
- 第1回 要件仕様の決定に時間を割かない結末は?
- 第2回 先駆者に学ぶ「開発プロセス改善の原則」
- 第3回 あるプロジェクトリーダーの成功ストーリー
- 第4回 ソフト開発の変革というWebサービスの可能性
- 第5回 プロダクト・マネジメントを成功に導くには
- 第6回 分散コンピューティング時代のテスト手法
- 第7回 プロジェクトの特性に合わせた要件定義手法の選択
- 第8回 優秀なテスターの育成と訓練方法
- 第9回 「アジャイル」「RUP」「Rational XDE」の融合
- 第10回 Dr.ユースケースの “ユースケース人生相談”
- 第11回 Webサービスのテスト技法進化論
- 第12回 要件定義の考古学
- 第13回 チェスとソフト開発、その相関関係を探る
- 第14回 開発計画が破たんするには理由がある
- 第15回 要件定義の管理技術(Lv0〜Lv5)
- 第16回 オン・デマンドの波をキャッチしろ
- 第17回 オープンソース時代のテスト手法、そのノウハウ
- 第18回 オープンソース時代のテスト手法、テストのロードマップ
- 第19回 オープンソース時代のテスト手法、テストのまとめ
- 第20回 『オープン』の正体 (前編)
- 第21回 『オープン』の正体 (後編)
- 第22回 サブシステムの「なに?」「なぜ?」「どうやって?」
- 第23回 サブシステムとはモデリング概念である
- 第24回 アスペクト指向プログラミング オーバービュー
- 第25回 「プロジェクト管理」を管理するために
- 第26回 レッスン1:何もせずに取り残されるな
- 第27回 レッスン3:相違に注意を払え
- 第28回 大規模プロジェクトにアジャイルを適用する方法(前編)
- 第29回 大規模プロジェクトにアジャイルを適用する方法(後編)
- 第30回 アジャイル開発:成熟期の到来、その道のり
- 第31回 UML 2.0のキホン:コンポーネント図の詳細解説
- 第32回 コーディングの知恵を要件定義で利用する
- 第33回 隣のテストチームが優秀ないくつかの理由(前編)
- 第34回 隣のテストチームが優秀ないくつかの理由(後編)
- 第35回 中国のソフトウェア開発現場はこんなにスゴイ
- 第36回 ソフトウェア開発の「いま」と「近未来」の話
- 第37回 ルネサンスの巨匠たちに学ぶエンジニアリングの技
- 第38回 オブジェクト指向を超えて
- 第39回 ユーザー要件を引出すテクニック
- 第40回 ITプロジェクトを見える化する
- 第41回 ソフトウェアアーキテクチャって何なの?(前編)
- 第42回 ソフトウェアアーキテクチャって何なの?(後編)
- 第43回 ソフトウェアアーキテクトの役割
- 第44回 ソフトウェアアーキテクティングのプロセス
- 第45回 ソフトウェアアーキテクティングのメリット
- 第46回 ウォーターフォールから反復型への移行手順
- 第47回 トランザクション管理の複雑性を克服する パート1
- 第48回 トランザクション管理の複雑性を克服する パート2
- 第49回 汎用グラフィカルモデリング言語「SysML」 パート1
- 第50回 グラフィカルなモデル言語で製品構造を記述
- 第51回 キミのコードが汚い理由
- 第52回 「設計」や「構築」よりも重宝されるスキル
- 第53回 専門家に聞くモデル駆動開発のメカニズム
- 第54回 プロジェクトのはじめに計画を立てるのは無謀
- 第55回 「この開発プロジェクトは中止!」の基準
- 第56回 なるほど! ビジネスユースケース
- 第57回 そうだったのか! システムユースケース
- 第58回 不完全なコードは推敲フェイズで潰しておきたい
- 第59回 ビルドが全滅する原因
- 第60回 初歩の「Perl」「Python」「Ruby」
- 第61回 開発プロジェクトを「統治」するベストプラクティス
- 第62回 開発プロジェクト「統治」のピンポイント解説
- 第63回 反復開発の「ここはぜひカバーしたいポイント」
- 第64回 開発プロセス導入のアンチパターン
- 第65回 プロセスはチャンスが訪れるたびに改善する
- 第66回 自己管理型チームの利点と弱点
- 第67回 人事評価と開発者のモチベーション
- 第68回 鈍重な開発チームは鈍重なシステムを作る?
- 第69回 ソフトウェアが複雑なのは仕方がない?
- 第70回 ソフトウェアの複雑性を手なずける
- 第71回 見積もりの精度 Accuracy of Estimation
- 第72回 アジャイル開発の広範な普及を目指して
- 第73回 アジャイルとシステムテストの新たな関係(前編)
- 第74回 アジャイルとシステムテストの新たな関係(後編)
ホワイトペーパー(TechTargetジャパン)
|
|

