アジャイル開発におけるアーキテクチャの創発
庄司です。
Gartner によれば「創発的アーキテクチャ (Emergent Architecture)」の特質は、次のようにまとめられています。
- 非決定的 - これまでエンタープライズアーキテクトは成果を計画するために中央集権的な意志決定法を用いてきました。創発的アーキテクチャを使うと、イノベーションを実現するために分散型の意志決定をおこなうように変わります。
- 自律したアクター - かつてのようにエンタープライズアーキテクトがアーキテクチャの全ての面をコントロールすることはできなくなりました。これからはより大きくビジネスの生態系を認識して、コントロールを各組織に委譲しないといけません。
- ルールのあるアクター - これまでエンタープライズアーキテクトが EA の全ての面について詳細な設計をしてきましたが、これからは最低限のルールを決め、その中で選択ができるようにしないといけません。
- 目標指向のアクター - かつては企業目標だけが唯一の目標でしたが、今では各組織にとっての最善の結果を出すことが目標になってきました。
- 局所的影響 - アクターは局所的なやり取りと限られた情報に影響されるものです。アクターのコミュニケーション世界でのフィードバックによって個人の振る舞いは変わります。どの個人アクターも創発的システムの全てについて情報を得ることはできません。それを段々と調整するEAでないといけません。
- 動的システムあるいは順応システム - システム(個人アクターや環境を含む)は時間とともに変わります。創発的システム全体の方向性を設計し、環境で起きた変化に対応できるようなEAでないといけません。
- リソースの制限された環境 - リソースが豊富な環境では創発は起きません。むしろ不足することで促進されるのです。
出典: Gartnerの提案した”Emergent Architecture”に対する反応
アジャイル開発におけるアーキテクチャの創発
#2001年に「Agile Manifesto (アジャイル宣言)」が登場して、随分長い月日が流れました。
このアジャイル宣言には 12 の原則が書かれています。その最後の原則は次のとおりです。
最良のアーキテクチャ・要求・設計は、
自己組織的なチームから生み出されます。
次にアジャイルチームでよく採用されるフレームワークに「スクラム」があります。
このフレームワークでは、スクラムチームとは「プロダクトオーナー」、「スクラムマスター」、複数人の「開発者」で構成され、サブチームや階層は存在しません。
スクラムチームは、チームがアーキテクチャを決定し、テストを通して高品質のプロダクトをアウトプットします。
アーキテクチャは、プロジェクト全体を通して、理解が生まれ、チームがプロジェクトについて学びます。
このように創発的アーキテクチャはアジャイル開発への合理的な提案です。
アジャイル開発以前のアーキテクトの関わり方
#2009年に Gartner が創発的アーキテクチャを提案する以前は、専門家によって実行される次のようなアクティビティをウォーターフォールベースの受け渡しモデルを使用することが一般的でした。
- 要求・要件 (Requirements)
- 分析 (Analysis)
- 概要設計 (High-Level Design)
- 詳細設計 (Low-Level Design)
- 開発 (Development)
- テスト (Testing)
- デプロイ (Deployment)
- リリース (Release)
この世界では、アーキテクトと呼ばれる専門家の主な責任は、概要設計 (High-Level Design) を作成することでした。
したがって、アーキテクトが開発チームと共に物理的に配置される必要はなく、アーキテクチャが抽象的あるいはアカデミックになりすぎることがよくありました。
アジャイル開発におけるアーキテクトスキルの発揮
#アーキテクトのスキル・能力を持って、アジャイルチームの開発者の一員に加わる場合「透明性」、「検査」、「適応」を実践するため、対話やフィードバックによってアーキテクチャの進化を促すことが大切です。