価値駆動型アプローチ:提言
最近、どうも考え方や世の中が変わってきているようです。
ドラッカーの知識主導型社会、「ソフトウェアは解決策であり、問題は計算機の外の世界に存在する」というジャクソンの指摘、ベームのValue-Based Software Engineeringは、この状況を予言しています。
パラダイムが変化したことを捉え、新しいパラダイム、本講演のコンテキストでは「価値駆動」の中で、これまでの技術や知識体系を整備していく必要があります。
価値駆動アプローチの体系
価値駆動のパラダイムの体系とは何かをまとめてみました。
価値の局面は「組織(マネジメント)」「不確実性(変化への対応)」「進化(成長と適応)」の3つに集約でき、解の方向は、ソフトウェアエンジニアリングの技術や知識体系を「抽象化」「自動化」「モジュール化」の3つに分類できると考えています。
抽象化は、数学的に問題を解決するために定式化することです。自動化は、手順化やツール化など、「動く」ということです。モジュール化は、広い意味での役割分担により物を作るときの基本的な考え方(組織論や産業アーキテクチャ)です。
アジャイル・ソフトウェア・セル生産:概説
価値駆動のパラダイムの考え方の中で、アジャイルプロセスとソフトウェア・セル生産を見た後、それらを組み合わせたものが何かを説明します。
アジャイルプロセス
アジャイルプロセスのマニフェストに共鳴して、XPやフィーチャ駆動型開発、クリスタルなど、さまざまな手法が提唱されています。本講演のコンテキストでは、これを「狭義の」アジャイルプロセスだと捉えています。
狭義のアジャイルプロセスは、開発者中心の視点です。顧客とのコミュニケーションや確認を重視はしてはいますが、あくまで受動的なスタンスです。
これに対し「広義の」アジャイルプロセスは、顧客側と開発側との同期を重視し、開発プロセスの外側のビジネスプロセスと連動(協調/同期)していくという考え方です。
ソフトウェア・セル生産
ハードウェアの製造には、製品にバリエーションがあるときに多能工が工夫しながら生産していく「製造セル」という考え方があります。ソフトウェア・セルは、この考え方をベースにしています。ソフトウェア・セルの場合も、環境や状況の変化に柔軟に対応する自律性が要求されます。
1つのセルには、前提条件、作業単位、終了条件が含まれます。これらに加え、作業単位を動かす制御(トリガ)、セルが動くときの資源(ツール、部品、人、スキル)を規定することによって、ソフトウェア・セルが定義されます。
ソフトウェア・セル生産はソフトウェアファクトリの組織の基本的な考え方です。
1960年代末~1970年代の「伝統的な」ソフトウェアファクトリは、経験の再利用によってソフトウェア生産を行う組織です。
これに対し、「近代的な」ソフトウェア・ファクトリでは、作業単位を定義して自律的に動かすという考え方(ソフトウェア・セル生産)で組織されています。
アジャイル・ソフトウェア・セル生産
アジャイルプロセス協議会で、伝統的な生産体系をとる企業にアジャイルの考え方をどのように導入するかを議論する中で出てきたのが、アジャイル・ソフトウェア・セル生産です。
狭義/広義のアジャイルプロセス、ソフトウェア・セル生産が、先ほどの価値と解の体系とどのような関係になるかを見てみましょう。
ソフトウェア・セル生産は「組織」に対応しています。セルによって、事前条件、事後条件、作業条件をきちんと定義しているからです。
狭義のアジャイルプロセスは、短期間ごとのビルドアップや軽量化によって「不確実性」に対応しています。
広義のアジャイルプロセスは「不確実性」と「進化」に対応しています。ビジネスやマーケットの変化に連動して、システムも変化していくという進化の考え方が含まれているからです。
アジャイル・ソフトウェア・セル生産は、価値駆動アプローチの視点から、これらすべてを「いいとこ取り」して体系化しています。