一般に、システム開発には長い時間がかかります。6カ月、1年などはざらで、大規模なシステムになると2年以上を要する例も珍しくありません。その間、社会はさまざまに変化します。「経営のスピード化」という言葉を聞くことがありますが、現代は変化のスピードが確実に早まっており、企業経営者はその変化に迅速に対応することが求められています。
たとえば、3月11日に起こった東日本大震災の前と後では、日本の社会は大きく変わりました。当然、経営のスタイルを大きく変えた、変えざるを得なかった企業も数多くあります。ソフトウェア開発の現場だけ、その要求が半年前のものと変わらないということはあり得ないのです。刻々と変化する要求にできるだけ迅速に応える開発手法が必要なのではないか、という声が現場や顧客側から上がってくるのはむしろ当然の流れでしょう。
また、目に見えないソフトウェアの開発には「実際に動作させてみなければ当初のイメージ通りになっているか分からない」という側面があります。いくら机上で完璧な仕様をうたってみても、何かの要因で実際には動かない、あるいは予定していたパフォーマンスが出ないといったことは日常茶飯事に起こります。
特に新技術を採用した場合などにおいては、そのリスクはさらに高まります。そのため、要求や設計の妥当性をレビューやテストにより段階的に確認していくウォーターフォール型では、そのリスクを抱えたまま開発が進み、最終段階になってそのリスクが表面化するという、残念なケースが非常に多いのです。
アジャイル開発のポイントは「変化への柔軟な対応」
こうしたウォーターフォール型に対する疑問の声を反映して登場した開発手法の総称が「非ウォーターフォール型開発」です。アジャイル開発もこれに含まれます。以下、主な非ウォーターフォール型開発手法を示しておきます。
- プロトタイプ
- スパイラル
- RAD(Rapid Application Development)
- RUP(Rational Unified Process、ラショナル統一モデル)
- アジャイル
現在ではアジャイル開発を非ウォーターフォール型開発の代表とする傾向が強いため、本連載でも「非ウォーターフォール=アジャイル」という図式を用いることにします。
アジャイル開発にはさらにいくつかの開発手法が存在します。
- Evo(Evolutionary Development)
- スクラム
- DSDM(Dynamic Systems Development Method)
- XP(eXtreme Programming)
- FDD(Feature Driven Development)
- リーンソフトウェア開発
- クリスタル(Crystal Clear)
- EssUp(Essential Up)
- カンバン
この中でも、現在人気があるのは「XP」「スクラム」「リーンソフトウェア開発」と呼ばれる開発手法です。特に1996年に発表されたKent Beck氏の「XPエクストリーム・プログラミング入門」はアジャイル開発の現在の主流を作ったとも言えるもので、今も幅広い層に支持されています。これらについては今後、必要に応じて触れていくことにします。