見出し画像

溜池随想録 #11 「アジャイルソフトウェア開発」 (2010年4月)

アジャイルソフトウェア開発とは何か

 一般的に、アジャイルソフトウェア開発とは、1~3週間程度で反復(イテレーション)を繰り返すソフトウェア開発手法の総称である。XP(エクストリーム・プログラミング)やスクラムが有名である。

 反復するという点で、前回取り上げたスパイラル・モデルなどの「反復型開発プロセス」と同じであるが、根本的に異なるのは、かなり短期間で反復を繰り返す点と、計画より変化への対応を重視し、人とチームワークを大切にしている点にある。

 アジャイル開発では、開発しようとする情報システムのアーキテクチャを明らかにした後、システムをまとまった小さな機能単位に分割し、重要な部分から開発を行う。手法によって多少異なるが、1~3週間程度で設計、コーディング、テストが終了する。このプロセスを繰り返しながらシステムを完成させていく(図参照)。

 ユーザーへのリリースも頻繁に行われる。できるだけ早く完成した部分をユーザーに引渡して動作を確認することによって、情報システムの開発リスクを引き下げていくことができる。

 また、アジャイルソフトウェア開発では、ドキュメントよりも人とチームワークを重視する。通常、朝に行われるスタンダップ・ミーティングや週末の「振り返り」と呼ばれるミーティングの他、必要な時に関係者が集まってミーティングが行われる。この関係者の中には、開発を担当する技術者やチームリーダーだけでなく、顧客(あるいは顧客の代表)も含まれる。

 アジャイルソフトウェア開発は、従来の開発手法に比べてドキュメントが少ないため、レベルの高い技術者が職人的に開発を行う手法であると考えている人が少なくないが、これはまったくの誤解である。

アジャイルソフトウェア開発宣言

 アジャイルソフトウェア開発に分類されるいくつかの開発手法は、20世紀末にその原点があるが、これらの手法が総称してアジャイルソフトウェア開発と呼ばれるようになったのは、2001年2月以降である。
2001年2月に、より軽量のソフトウェア開発手法を模索していた17名のソフトウェア技術者が米国ユタ州のスキーリゾートに集まり、議論の結果「アジャイルソフトウェア開発宣言」を発表した。
以下に原文と和訳を示す。

We are uncovering better ways of developingsoftware by doing it and helping others do it. Through this work we have come to value: 
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan 
That is, while there is value in the items onthe right, we value the items on the left more.(出典:http://www.agilemanifesto.org/) 

我々は、ソフトウェアの開発とソフトウェア開発の支援を通じて、より優れたソフトウェア開発方法を見つけ出そうとしてきた。この活動を通じ、我々は次のようなものを重視するようになった。 
   プロセスとツールより、個人とその意志の疎通
   包括的なドキュメントより、きちんと動くソフトウェア
   契約交渉より、顧客との協調
   計画に従うことより、変化に対応すること

アジャイルソフトウェア開発の特徴

 アジャイルソフトウェア開発の主な特徴は、このアジャイルソフトウェア開発宣言にすべて表現されているが、この中で最も重要な特徴は、「変化に対応」できる開発手法だという点だろう。

 企業を取り巻くビジネス環境は常に変化している。その変化のスピードは年々早くなっているように思える。企業経営はビジネス環境に合わせて変えていく必要がある。その経営を支えるITにも変化が求められるのは当然のことである。しかし、ウォーターフォール・モデルに代表される従来の情報システム開発手法では、要件を決定してからシステムが稼働するまでに早くても数カ月、通常は1年以上かかる。これでは機敏な(アジャイルな)経営は実践できない。

 アジャイルソフトウェア開発では、システムの重要な機能から順次開発し、それを顧客に引き渡す。つまり、そのシステムの価値をできるだけ早く顧客に届けようというシステム開発手法なのである。
 
 次回は、XP(エクストリーム・プログラミング)を取り上げる。


この記事が気に入ったらサポートをしてみませんか?