効果的なXPの導入を目的とした
プラクティス間の相互作用の分析




         川端 光義 アジャイルウェア
       阪井 誠  (株)SRA先端技術研究所
      小林 修  (株)SRA
背景:XP(エクストリーム・プログラミング)

XPとは?
   eXtreme Programming (極端なプログラミング)
   4つの価値(コミュニケーション、シンプル、フィードバック、勇
    気)
なぜ注目されるのか?
   変化に柔軟に対応する
   無駄のない敏速な開発
   高い品質・保守性・生産性

                                       2
プラクティス

プラクティスとは?
   4つの価値の実践方法
       全員同席、計画ゲーム、短期リリース、ユーザテスト、シ
        ンプルデザイン、ペアプログラミング、テスト駆動開発、リ
        ファクタリング、常時結合、コードの共同所有、コーディン
        グ規約、メタファ、適切なペース



    全てのプラクティスを適用できずに失敗することが多い


                                  3
部分的なプラクティスの適用

全てのプラクティスを適用できない理由
   外部要因
       反対する顧客(全員同席、計画ゲーム)
       従来型の契約(短期リリース)
       外注により生じる分散開発
   リソース不足
       経験者 例:リファクタリング
       開発環境
       強力な推進者

                             4
部分的な適用による問題点

効果が発揮できない
   ペアプログラミングには集中力が必要なため、適切
    なペースが必須
   適切なペースを実践するには、計画ゲーム(計画の
    ドライブ)が必要
プラクティス間の相互作用を理解する必要があ
る
目
  的 事例に基づきプラクティス間の相互作用を
    明らかにする
                          5
アジェンダ

背景
分析方法
対象事例
結果
考察
まとめ


        6
分析方法

1.   プロジェクトメンバーのヒアリング
2.   ヒアリングの結果より表記法を定める
3.   再度ヒアリングの実施より相互作用をモデル
     化
4.   プラクティス間の相互作用を整理




                        7
事例1 Nissen On-lineの稼動分析器システム

                          プラクティス      適用度

アイテム     データ              全員同席        △
                          計画ゲーム       △
開発体制     マネージャ、開発者(3名)、   短期リリース      ○
         ユーザ(2名)
                          ユーザテスト      ○
開発期間     5ヶ月(XP開発期間3ヶ月)   シンプルデザイン    ○

言語       C#、ストアドプロシージャ    ペアプログラミング   ○
                          テスト駆動開発     ○
リリース回数   3                リファクタリング    ○
                          常時結合        ○
イテレーション 4
                          コードの共同所有    ○
回数
                          コーディング規約    ○
                          メタファ        ×
                          適切なペース      ○
                                            8
ヒアリング結果(一部)

ペアプログラミングと適切なペース
   残業が続いたために、適切なペースが守れず
   集中力が続かず、生産性悪化
ペアプログラミングの生産性と品質について
   ソロプログラミングで行ったタスクは手戻りが発生し、
    生産性は悪かった
   ペアプログラミングではリアルタイムレビューによっ
    て品質が向上し、手戻りコストを最小限にすることで
    結果的に生産性が高かった

                           9
表記法

プラクティス間の依存関係を強弱の2段階で表
現
       テスト駆動開発
                  弱い依存


      ペアプログラミング

                  強い依存


       適切なペース
                         10
再ヒアリングとモデル化

再度ヒアリングを行い、その結果から5つの効
果に分類してモデル化
   コミュニケーション効果
   生産性向上
   コード品質向上
   要求品質向上
   保守性向上


                    11
プラクティスの相互作用

生産性向上のプラクティス群




                12
プラクティスの相互作用

生産性向上のプラクティス群




                13
考察(効果)




         14
考察(相互作用)




           単体での導入が容易で 
           効果の大きいプラクティス




                          15
考察(相互作用)




             導入は困難だが
           効果は大きいプラクティス




                          16
まとめ

事例を基にプラクティス間の相互作用をモデル
化
相互作用を整理して考察
この結果を用いれば、部分的にプラクティスを
適用する場合でも、効果的にXPを導入できる
今後の課題
   ケーススタディの充実化
   プラクティス導入パターン
                    17

効果的なXPの導入を目的とした プラクティス間の相互作用の分析