XP eXtreme Programming

XPとは、[e X treme  P rogramming]の略で、 従来型開発の問題を改善する新しい開発手法として、今注目を集めています。

XPってなに?

【XP の特徴】

「いま欲しいものを、いま作る」
優先度の高いものから順に開発を行い、完成した機能からご利用いただけます。

「要求仕様が変化することが前提」
システムの全体像と重要な機能から決めていくことが可能です。
XPによる開発では、設計・プログラミング・テストを機能ごとに実施します。
そして、このサイクルを繰り返すことにより、システムを「育てて」いきます。
必要な機能を先に作り、適宜リリースしていくことができます。

xp図

XPってどうやるの?

XPの開発は以下のような、手順の繰り返しで進んできます
●定義する

お客様は、システムの何に価値があるか(ビジネス価値)を決定します。

●見積もる

開発者は、経験に基づいて 「何を、いつ、どれだけのコストで手にできるか」の情報をお客さまに提供します。

●選択する

お客様は開発者から提供された情報の中から、今本当に必要なものを選びます。

●作る

開発者は、お客様が選んだ価値を作ります。

xp図

上記のやり取りの中から、お客様には自分が欲しかった機能にどれだけの価値があるかを理解していただき、 開発者は機能の実現は実際にはどれだけ難しいかを学びます。

そして、お客様、開発者ともに、必要な機能を作り出す時間がどれだけかということについて、 経験を蓄積していくことになります。

また、これらの経験が、機能と品質の最高の組み合わせを得ることにもつながっていきます。

従来の開発手法ではいけないの?

一般的に、ソフトウェア開発ではウォーターフォール・モデルを用いた開発手法がとられています。 これは設計、製造、テストといった各フェーズを順に進めていく開発手法です。

ウォーターフォールモデルの開発例

このモデルで特徴的なのは逆戻りがないことです。すなわち、詳細設計してから基本設計をやり直したり、 テストしてから要件定義をやり直したりといったことがなく、 各フェーズはその前フェーズの終了をもって次フェーズの開始となります。 また、各フェーズの成果は仕様書にまとめられ、次のフェーズに渡されます。 このため、開発を管理する側にとって有効なモデルです。

ウォーターフォール・モデルでのソフトウェア開発では、抽象的なレベルから具体的なレベルへと トップダウンで開発が進みます。このため、重要な決定は初期フェーズでなされ、 後のフェーズはその成果にしたがって作業を進めていくことになります。

つまり、ウォーターフォール・モデルは、

  • 前のフェーズが遅れると次のフェーズも遅れる
  • フェーズが進むごとに、仕様変更のためのコストが高くなっていく
  • 成果物がニーズを満たしているかを、納品直前までお客様が確認できない
  • すべての仕様が決まらないと開発が進まない
  • 開発の途中で出てきた新技術などをとりこみにくい

という、問題を含んでいるのです。

XPで問題を解決できるの?

XPによる開発を行うことで、従来の開発による問題点を解決することができます。

『フェーズが進むごとに、仕様変更のためのコストが高くなっていく』

●XPでは仕様変更が起こるのを前提としています。サイクルごとに仕様は見直され、 手戻りは最小限に食い止められます。
『成果物がニーズを満たしているかを、納品直前までお客様が確認できない』

●XPでは完成した機能から順次リリースしていくことが可能なため、 早い段階からお客様に実際のシステムを確認していただき、そのご意見をフィードバックすることが可能です。

『すべての仕様が決まらないと開発が進まない』

●XPでは仕様が確定した部分から構築していくことが可能です。
『開発の途中ででてきた新技術などをとりこみにくい』

●XPでは変化を受け入れることが前提ですので、機能ごとに新技術を取り入れていくことも容易です。

開発期間はどのくらい?

同一規模のシステムの開発スケジュールの違いは下図のとおりです。

XP画像

※ 予備開発: お客様の要求するシステムをはかる(規模・難しさ)ための試験開発をいいます

何をすればいいの?

XPによる開発でのメリットを最大限に御提供するために 、お客様に以下のご協力をお願いいすることがあります。

●ストーリーカードの作成

●システムに必要なビジネス価値(これを「ストーリー」といいます)をカードに書いて頂くことがあります。

●ストーリーカードの優先順位付け

●ストーリーの優先順位を決めていただき、機能の取捨選択を行ないます。

●計画ゲームへの出席

●計画ゲームとは…お客様に作業のビジネス上の優先度をつけていただき、開発者が技術見積もりをし、 次回リリースの範囲を決める打ち合わせのことを指します。

●開発中の質問に対するご対応

●開発の段階での質問は、その場でご質問させていただきます。

●受け入れテストの実施

●ストーリーがお客様のご要望通りに実装されたか、テストしていただきます。 これはリリースされた機能ごとに行なっていただくもので、高品質を実現するために必要な作業です。

開発者から、以上のようなお願いをすることがありますが、ご理解いただきますようお願いいたします。

私たちは、お客様のご協力を頂きながら、
最大限の効果をあげるシステムを
最小限のコストでご提供いたします。