反復型開発プロセス・アジャイル開発・プロトタイピングの違いとは

プロセスモデルのなかから、互いに似ているように見える、反復型開発プロセス・アジャイル開発・プロトタイピングの違いについて説明します。

反復型開発プロセス・アジャイル開発・プロトタイピングの特徴

反復型開発プロセス・アジャイル開発・プロトタイピングの特徴をまとめた表が、以下になります。

プロセスモデルの比較
反復型開発プロセス・アジャイル開発・プロトタイピングの特徴
※ 反復型開発プロセスとプロトタイピングは、[参考文献1]を参考に筆者が執筆したものです。アジャイル開発は筆者の文責によるものです。

反復型開発プロセスとは

反復型開発プロセスは、小さい機能単位に動作可能なソフトウェアの開発を反復することにより、ソフトウェアを完成する方法のことです。分析、設計、実装、テストを複数回繰り返して、ソフトウェアを少しずつ完成させます。

インクリメンタルモデル・イテレーティブモデル・スパイラルモデル

反復型開発プロセスとしては、インクリメンタルモデル、イテレーティブモデル、スパイラルモデルなどが有名です。これらのモデルは、開発する順序や目的がすこしずつ違いますが、その差異はそれほど大きくありません。

  • インクリメンタルモデルは、機能を段階的に追加していく方法
  • イテレーティブモデルは、単純な実装から順次完成度を高めていく方法
  • スパイラルモデルは、イテレーティブモデルに近く、少しずつソフトウェアの定義と実装を拡大・詳細化する開発方法。その様子を渦巻き(スパイラル)で表現している点に特徴があります

アジャイル開発とは

アジャイル開発は、アジャイルソフトウェア開発宣言およびアジャイルソフトウェアの12の原則に則る開発方法を指し、動くソフトウェアを短期間で繰り返し提供します。反復型開発プロセスもアジャイル開発も、開発を繰り返す点では同じと思うかもしれませんが、基盤となる開発の考え方に大きな違いがあります。アジャイル開発のなかで、最も使われている方法論は、スクラムとXPです。

スクラムとXP

  • スクラムは、アジャイル開発のマネジメント技術にフォーカスした方法論
  • XP(エクストリームプログラミング)とは、アジャイル開発の技術系プラクティスの多くを提案している方法論

反復型開発プロセスとアジャイル開発の決定的な違い

ソフトウェアエンジニアリング面で言えば、反復型開発プロセスは、いわばミニウォーターフォールモデルと言ってよく、分析⇒設計⇒実装⇒テストを順に進めていきます。開発対象がウォーターフォールモデルよりも小さいために、必然的にウォーターフォールモデル開発よりも短い期間での開発となり、それを繰り返します。

一方、アジャイル開発は、分析、設計、実装、テストを「ブレンド」して実施します。「ブレンド」と言っている意味は、今回開発する対象に合わせて、最も作りやすい方法で作るという意味です。テストコードから作ってもよい(これをテスト駆動開発と呼びます)し、試しに一部だけ実装してみてから設計してもよいのです。 開発期間は1週間~2週間程度が多く、反復型開発プロセスと比べて極端に短いです。 それ以外にも、アジャイル開発では、タイムボックス、開発チームの自己組織化などいくつかの特徴的な考え方を重視します。したがって、アジャイル開発を、ミニミニウォーターフォールモデルと考えるのは誤りです。

違いをわかりやすく図示してみる

ウォーターフォールモデル、反復型開発プロセス、アジャイル開発を分かりやすく説明した図が以下になります。これはXPを提唱したK.ベックによるもので、以前にもこのブログで取り上げたことがあります。この図では、反復型開発プロセスは「繰り返し開発」、アジャイル開発は「XP」と表示されています。

ウォーターフォールモデル・反復型開発プロセス・アジャイル開発の違い
ウォーターフォールモデル・反復型開発プロセス・アジャイル開発の違い[参考文献2]

上図に示すように、反復型開発プロセス(繰り返し開発)は、ウォーターフォールモデルの大きな箱を小さくしたミニ版と言えます。一方、アジャイル開発(XP)は、単に箱が小さくなっているだけでなく、箱の並びを積みあげるのでなくて、隣通しに置いています。これが「ブレンド」の意味です。「ブレンド」という表現は、K.ベック氏によるものです。

プロトタイピングとは

プロトタイピングについても説明します。プロトタイピングは、プロセスモデルというよりも、開発技法と考えるほうが的確です。プロトタイピングは、プロトタイプ(試作品)を作ることにより、早期に開発上の課題を解決する技法です。例えば、ユーザインタフェースを確定するためにUIだけ先に作ったり、性能が出るかどうかを試すために、必要部分だけ先に開発したりすることがあると思います。それがプロトタイピングです。プロトタイピングは、ウォーターフォールモデルでも反復型開発プロセスでもアジャイル開発でも、開発中に技法として使われます。

まとめ

反復型開発プロセスは、ほぼミニウォーターフォールモデルと考えてよいですが、アジャイル開発は全くパラダイムの異なるプロセスモデルです。プロトタイピングは、さまざまなプロセスモデル内で使用される開発技法です。ご理解いただけたでしょうか。

  • 参考文献1: SQuBOK策定部会、ソフトウェア品質知識体系ガイド第2版 –SQuBOK V2-、2014年、オーム社
  • 参考文献2:K. Beck, Embracing Change with Extreme Programming. Computer, 32, 70-77, 1999

コメントを残す