|
アジャイルソフトウェア開発
ISBN4-89471-579-1 ピアソン・エデュケーション
原書:Addison Wesley「Agile Software Development」Alistair. Cockburn
アリスター・コーバーン 著
今野 睦, 長瀬 嘉秀, 株式会社テクノロジックアート 訳
A5判 392ページ 本体価格\3,200 2002/08/30発売
[内容]
本書は比較的経験を積んだ読者向けに書かれている。
本書ではソフトウェア開発の手順は扱っていない。
実際に本書の中心となる考えは、「すべてのテクニックには限界がある」という認識である。
ソフトウェアを開発する上で、最も正しい方法など挙げることはできない。
読者がこのような認識に達し、現実に対して建設的な考えを持つようになることが、本書の理想である。
ソフトウェア開発プロジェクトに携わる中レベルの実践者が、学習したルールの限界を探している場合は、以下のトピックが役立つだろう。
・どのような方法論がどのようなプロジェクトに適しているか
・各プロジェクトに適した方法論のカテゴリを検索するための索引
・アジャイル方法論の基盤となる原則
中レベルの実践者として上述の理論を適用する際は、自分の判断が必要であることを認識するだろう。
高レベルの実践者なら、適用できる程度は提案によってまちまちだということに、すでに気付いている。そのことを表現する言葉を捜している場合もあるかもしれない。
以下のトピックを扱っている箇所で、そのような言葉が見つけられるだろう。
・コミュニケーションの不完全性の管理
・継続した方法論の改善
・アジャイルソフトウェア開発宣言
いくつかのトピックは、高レベルのソフトウェア開発者にも目新しいと思われる。
方法論を記述する語彙と、ジャストインタイムの方法論チューニングのテクニックは、これまで見たことがないだろう。
−本書 前書より−
そもそもアジャイル開発プロセスとは何だろう?
「アジャイル開発プロセス 」とはある特定の開発手法を指す言葉ではありません。
「アジャイルな」とはつまり、良いものを手早く無駄なく作ることです。
「アジャイル開発プロセス」という言葉はアジャイルにソフトウェアを開発することを可能にするさまざまな手法全体を指して使われています。
かつては「軽量級の(lightweight)」プロセスと呼ばれていました。
皆さんよくご存知のエクストリーム・プログラミングもアジャイル開発プロセスの代表的な手法の一つです。
近年エクストリーム・プログラミングが日本でも急速に普及しているのと同様に、合衆国ではここ数年来エクストリーム・プログラミングを含む多くのアジャイル開発プロセスが提案され、広く利用されています。
その背景には、ソフトウェア開発そのものが過去のものとは様変わりしてしまったことが上げられます。
90年代後半に至るまで、ソフトウェア開発と言えば長期間にわたり大勢の人間でコストをふんだんに使いながら作り上げていくようなものが関心を集めていました。
ソフトウェア工学や多くのソフトウェア・プロジェクト管理手法もそのような種類のプロジェクトを主な対象としていたのです。
しかし今やソフトウェアは、短期間にできるだけ低いコストで、なおかつ非常に複雑でオープンなものを作らなければならなくなりました。
また社会状況やマーケットの変動の激しさに伴って、ソフトウェア自身に対する要求も日々刻々変わっていきます。
もはや古典的なソフトウェア工学やソフトウェア・プロジェクト管理手法だけではどうにも対処できないということが誰の目にも明らかになってきました。
それに対する技術的な解の一つが「オブジェクト指向」です。
オブジェクト指向技術は上に挙げたようなソフトウェア開発の困難のいくつかに対処してくれましたが、同時にオブジェクトでソフトウェアを作るのにはそれに適した開発手法も必要となりました。
アジャイル開発プロセスと呼ばれる手法の多くはオブジェクト技術のコミュニティから発しています(もちろん多くのアジャイル開発プロセスは非オブジェクト技術を用いたソフトウェア開発にも有効です)。
一方、ソフトウェア開発の対象、つまり現実世界(金融やマーケティング、通信など)はそもそも非常に複雑な世界です。
ここで「複雑」というのは、非常に小さなことが予想できない大きな影響をもたらす場合があるということです。
さらにソフトウェアそのものが非常に複雑です。
さらにはソフトウェアを開発するプロジェクトが非常に複雑です。
このようにソフトウェア開発とは3つの複雑系が絡まり合って行われる作業です。
そこでは時間も資源も有限であり、情報は不完全であり(例えば、顧客が欲しているものを完全に知ることはできない!)、将来を予見することは不可能です(例えば、ある機能を実装したらどのモジュールに影響が及ぶか完全には分からない!)。
アジャイル開発プロセスの中には、このようにソフトウェア開発が複雑系を成すということを特に重要視しているものもあります。
アジャイル開発プロセスは、時間とコストの制約の中で情報は不完全であり、予見は不可能であるという事実を前提とします。
そしてその前提のもと、限られた範囲で合理的な答えを出すにはどうするべきかというのがアジャイル開発プロセスといってもいいかも知れません。
[目次]
まえがき
序章 導入:未知と伝達不能
経験を解析する際の問題
不可能なコミュニケーション
学習の3レベル
次のステップ
第1章 創作とコミュニケーションの協調ゲーム
1.1 ソフトウェアと詩
1.2 ソフトウェアとゲーム
1.2.1 ゲームの種類
1.2.2 ソフトウェアとロッククライミング
1.2.3 創作とコミュニケーションのゲーム
1.2.4 ソフトウェアと工学
1.2.5 ソフトウェアとモデル構築
1.3 協調ゲームに対する2番目の視点
1.3.1 コミュニケーションスペシャリストとしてのプログラマ
1.3.2 より迅速なゲーム進行
1.3.3 目印と支え
1.3.4 収益逓減
1.3.5 主目標としての充分性
1.3.6 残りの充分性
1.3.7 ゲーム内のゲーム
1.3.8 オープンソース開発
1.4 アイデアの実践
第2章 個人
2.1 あの愉快な人たち
2.1.1 性格的機能の探求
2.1.2 愉快さの要素
2.1.3 避けられない多様性
2.1.4 技術が効果的な場合
2.1.5 一般化の衝突
2.2 失敗モードの克服
2.2.1 間違える
2.2.2 保守的な失敗を好む
2.2.3 調べるよりも作る
2.2.4 習慣の生物である/一貫していない
2.2.5 規律と寛容による対処
2.3 特定の方法でより上手に仕事する
2.3.1 具体化
2.3.2 実体
2.3.3 変更
2.3.4 観察とヒアリング
2.3.5 集中とコミュニケーションのサポート
2.3.6 性格に合わせたメンバ配置
2.3.7 才能
2.3.8 喜びを保つ報酬
2.3.9 報酬の結合
2.3.10 フィードバック
2.4 成功モードへの誘導
2.4.1 巡回が得意
2.4.2 人は学習する
2.4.3 柔軟性
2.4.4 貢献とイニシアティブ
2.4.5 成功モードの結合
2.4.6 普通の人としての英雄
2.5 次のステップ
第3章 チーム内のコミュニケーションと協調
3.1 情報の伝達
3.1.1 遅延と機会損失のコスト
3.1.2 仕事秒
3.1.3 浸透するコミュニケーション
3.1.4 隙間風
3.1.5 情報発信物
3.1.6 「熱い空気の理論」適用
3.2 コミュニケーションギャップを埋める
3.2.1 コミュニケーションのモーダリティ
3.2.2 モーダリティを取り除くインパクト
3.2.3 モーダリティの利用
3.2.4 場所のギャップ超越と粘着性
3.3 コミュニティとしてのチーム
3.3.1 友好と衝突
3.3.2 労働時間内の帰属意識
3.3.3 敵対的なXP対友好的なXP
3.3.4 勝利のための「チーム」編成
3.3.5 カルチャーとサブカルチャー
3.4 生態系としてのチーム
3.5 次のステップ
第4章 方法論
4.1 ソフトウェアを出荷する生態系
4.2 方法論の概念
4.2.1 構造用語
4.2.2 スコープ
4.2.3 概念用語
4.2.5 方法論の公表
4.3 方法論の設計原則
4.3.1 共通の設計エラー
4.3.2 方法論的に成功したプロジェクト
4.3.3 作者の感性
4.3.4 7つの原則
4.4 フレームの中のXP
4.4.1 XPクイックリファレンス
4.4.2 XPの考察
4.4.3 XPの調整
4.5 なぜ方法論か
4.5.1 方法論が解決する問題
4.5.2 方法論の評価方法
4.6 次のステップ
第5章 アジャイルと自己適応
5.1 軽量充分
5.1.1 最小限
5.1.2 ドキュメントのすすめ
5.2 アジャイル
5.2.1 スイートスポット
5.2.2 バーチャルチームのトラブル
5.3 自己適応
5.3.1 意識的に行う反省
5.3.2 方法論拡張テクニック
5.3.3 反省会テクニック
5.4 次のステップ
第6章 クリスタル方法論
6.1 クリスタルファミリー
6.1.1 クリスタルの中核要素
6.2 クリスタルクリア
6.2.1 クリスタルクリアの概略
6.2.2 クリスタルクリアに関する考察
6.3 クリスタルオレンジ
6.3.1 クリスタルオレンジの概略
6.3.2 クリスタルオレンジに関する考察
6.4 クリスタルオレンジWeb
6.4.1 クリスタルオレンジWebの概略
6.4.2 クリスタルオレンジWebに関する考察
6.5 次のステップ
付録A アジャイルソフトウェア開発宣言
A.1 アジャイルアライアンス
A.2 宣言
A.2.1 宣言に関する考察
A.3 価値のサポート
A.3.1 付録原則に関する考察
付録B Naur、Ehn、武蔵
B.1 Peter Naur:理論構築としてのプログラミング
B.1.1 理論構築としてのプログラミング
B.1.2 「理論構築」の適用
B.2 Pelle Ehn:ヴィトゲンシュタインの言語ゲーム
B.2.1 参加とスキル
B.2.2 Ehnの著作に関する考察
B.3 武蔵
B.3.1 五輪書
B.3.2 ソフトウェア開発への武蔵の適用
付録C 参考文献
監訳者あとがき
索 引
 |