無料ブログはココログ

« [#Agile] アジャイル開発は混乱を避ける | トップページ | [#TiDD] チケット駆動開発はアジャイルの仕組みを支援・強化する »

[#Agile] アジャイル開発はコミュニケーションで価値を実現するオブジェクト指向システム

「ソストウェア開発の神話(人月の神話)」にも書かれているように、ソフトウェア開発の混乱を避けるにはコミュニケーションは重要です。アジャイル開発の世界では、チームや人で実現するプロセスをオブジェクトとして見ると、コミュニケーションというメッセージパッシングによって価値を提供する効率の良いシステムが実現されている事が分かります。

アジャイル開発はオブジェクト指向システム

アジャイル開発のプロセスは、オブジェクト指向の世界がメッセージパッシングによって実現される様にコミュニケーションで価値を実現します。

従来の開発プロセスは、実現する機能ごとにチームや人が割り当てられます。各機能で実現する事は文書化され、それを実現する契約により義務が文書化され実現されます。

これに対して、アジャイル開発はゴールと方向性がスーパークラスで定義され、それを継承した小さなオブジェクトであるチームや人の組み合わせで全体が構成されています。各オブジェクトは無駄のない様に一元化され、効率化されます。その動作の正当性は常に確認されていて、コミットした責務を果たすべく自律的に行動します。

オブジェクト同士がメッセージパッシングにより連携してシステムを実現するように、アジャイル開発ではコミュニケーションによって各メンバーが責務を果たして、価値を実現します。

スーパークラス

オブジェクト指向で実現されるシステム(オブジェクト指向システム)にはスーパークラスがある様に、アジャイル開発では、インセプションデッキ、クレド(信条)、Doneの定義、などによって、どのように価値を提供するかゴールと方向性が共有されます。

責務

各オブジェクトの責務は、コミットメントによって実現されます。タスクカードをDoingの状態にすることがコミットメントです。また、プランニングポーカーによる見積もりは、チームによる仕様のレビューであるとともにどのようなストーリーをどの程度で実現するかというコミットメントです。チームや担当者は、与えられた責務を自律的に判断して実行します。

自動テスト

開発者のタスクはその成果物によって常に確認されます。プログラムの自動テストはプロセスの自動テストでもあるのです。このほか、朝会や振り返りはメンバー間のメッセージパッシングであるほか、プロセスの動作確認でもあります。プロセスを信頼性の高い状態に保ちます。

データベース

オブジェクト指向システムと共に用いられる事の多いデータベースも、アジャイル開発に存在します。タスクケードを共有する
タスクボードは、全体の状況を管理するもので、状況を共有して、自然と目に入る様にする事で常にレビューされている環境を作ります。

まとめ

アジャイル開発のプロセスは、オブジェクト指向システムのような効率の良い開発方法です。上からの連絡や指示ではなく、技術的に対等に情報共有することで、コミットメントを促し、対等に意見を出しあえる自律的な組織を実現します。また、共有される事で常にレビューされ、不要な恐れをなくします。

自律的な組織はそれぞれが勝手な事をするのではなく、ゴールと方向性にそった知的で互助的で外界の変化に強い効率的な組織です。このような組織によって、アジャイル開発は顧客に対して価値を提供し続けるのです。

オブジェクト指向はその起源が細胞のアナロジーであると言われる事もあります(「Smalltalkプログラミングで学ぶオブジェクト指向プログラミングの本質」)。アジャイル開発は「開発者たちが本来の知的な人間として行動するためのプロセスである」と言えるでしょう。

« [#Agile] アジャイル開発は混乱を避ける | トップページ | [#TiDD] チケット駆動開発はアジャイルの仕組みを支援・強化する »

私のアジャイル」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« [#Agile] アジャイル開発は混乱を避ける | トップページ | [#TiDD] チケット駆動開発はアジャイルの仕組みを支援・強化する »