開発プロセスに興味を持ったことがあれば,「Unified Process(以下,UP)」を一度は耳にしているはずだ。しかしUPを正しく理解し,活用できているプロジェクトはあまりにも少ない。本講座では,UPに含まれる膨大な開発プロジェクトの「勝ちパターン」を,4つのPartに分解して解説する。Part1では,UPの生い立ちと構造を解説する。

 図1は,Unified Process(以下UP)の作業と工程を示した図である。開発プロセスに少しでも興味を持った読者であれば,一度は目にしたことがあるはずだ。

図1●UPのライフサイクル<br>この図はUPを表しているが,極めて限られた側面を表現しているだけである。
図1●UPのライフサイクル
この図はUPを表しているが,極めて限られた側面を表現しているだけである。
[画像のクリックで拡大表示]

 しかしこれは,ごく表面的な一つの側面を表現しているに過ぎない。UPと言えば「反復型開発」を思い浮かべる読者も多いだろう。しかし,「反復型開発」もUPのすべてではない。さらに,今では一般的となっている「オブジェクト指向」と「UML」が,その歴史の多くをUPとともに歩んできたという事実をご存じだろうか。

 UPは,ウォーターフォール型開発プロセスに代表される「旧世代の開発手法」の弱点を克服するために,次の思想とともに生み出された。

  • ユーザーの求める真の要求を満足させること
  • 要求や環境の変化に対応できること
  • ソフトウエア開発のリスクを減少させること
  • 再利用可能なコンポーネントベースのシステムを実現すること

 そしてソフトウエア業界に「品質の高いソフトウエアを効率的に開発するためのガイドラインを提供すること」を最終的な目的としている(図2)。

図2●UPとは
図2●UPとは

 様々な人達が,「なぜ失敗するのか」「どうすれば同じ間違いを繰り返さずに済むのか」と頭をひねり,実践し,失敗を繰り返しながら試行錯誤をしてきた現時点の成果がUPであり,そして今もなお進化を続けているのである。

Unified Processの歴史

 「オーケストラが作曲家の楽譜を使って演奏するように,ソフトウエア業界は開発者を導くプロセスを必要としているのです」(Ivar Jacobson氏)。UPの歴史は,スウェーデンのIvar Jacobson氏(以下,ヤコブソン氏)によって1987年に発表されたオブジェクト指向開発プロセス「Objectory Process」から始まる。

 Objectory Processは,ユースケースを基準として分析/設計/実装/テストの工程に連続性と一貫性を持たせる「ユースケース駆動開発(Use-Case Driven Development)」(以下,UCDD)を用いることによって,オブジェクト指向開発を「職人的な技巧による作品」から「チームによる組織的な開発手法」に進化させた。このUCDDという開発方法論は,現在も変わらずUPの根幹となっている。

 1995年,ヤコブソン氏が率いるObjectoryAB社はRational Software社(以下,Rational社)と合併。Rational社のソフトウエア開発における経験と「ライフサイクルフェーズ(Lifecycle-Phase)」の概念,および「反復型開発(Iterative and Incremental Development)」といったベストプラクティスが加えられ,1997年にRUPの初版である「Rational Objectory Process」が完成した。また同時期にRational社からUML(Unified Modeling Language)の最初のバージョンが発表された。この先,UMLとRUPは相互補完関係を持ちながら,開発が続けられていく。

 1998年,Rational社のツールに依存しない汎用的なプロセス・フレームワークとして,Ivar Jacobson氏,James Rambough氏,Grady Booch氏の3人によって「The Unified Software Development Process」が出版された。UP(Unified Process)と呼ばれる開発プロセスの誕生である。

 以降Rational社は,ソフトウエア開発におけるプロジェクト・ライフサイクルのすべてをカバーするため,データ・エンジニアリング,ビジネスモデリング,プロジェクト管理,変更構成管理など多くの分野を取り込んだ形でプロセスを拡張。自社製ツールとプロセス(RUP)の連携強化を続け,RUPという製品のバージョンを重ねていく。

 2003年,Rational Software社はIBM社に買収され,2006年にIBM社による初のバージョンアップが行われた。そして現在,RUPはRMC(Rational Method Composer)という製品に搭載されるプロセスの1つとして提供されている。

 また,オープンソースの統合開発環境Eclipseのコミュニティである「Eclipse Foundation」が,RMCに含まれるプロセス定義ツールをEPF(Eclipse Process Framework)としてオープンソース化しており,ERF上でのリファレンス・プロセスとしてRUPのサブセット版となる「OpenUP/Basic」もオープンソースとして公開している(図3)。

図3●Unified Processの歴史
図3●Unified Processの歴史
[画像のクリックで拡大表示]

 現在UPはUnified Processファミリーの総称として使われており,次の3種類のUPが入手可能である

 まず1つ目はUPの出発点であり,書籍として出版されている「The Unified SoftwareDevelopment Process」(以下,USDP)だ。USDPは,UPの骨格となる3つのアプローチ「ユースケース駆動開発」「アーキテクチャセントリック」「反復型開発」に焦点を絞って解説している。

 2つ目は,RUP(Rational Unified Process)である。RUPは商用製品であり,USDPではほとんど触れられていない「プロジェクト管理」「構成管理」「ビジネスモデリング」などについて拡張・詳細化し,個々の作業のガイドラインや成果物のテンプレートなどを付与した,USDPの拡張進化バージョンと言える。製品はHTMLで提供されており,プロジェクトですぐに活用可能な形で提供される。言わばUPの「全部入り」である。

 そして3つ目が,2006年から新たな試みとして始まった,Eclipse Foundationによるオープンソースの「OpenUP」である。RUPをベースにしつつも,小規模なプロジェクトで「気軽に」利用できるように,主要な部分を抽出したサブセット版という位置付けとなる。OpenUPはEclipseプロジェクトの一環として開発されており,現在OpenUP/Basicがオープンソース(ライセンスはEclipse Public License)として提供されている。現在は英語版のみだが,最も手軽に入手可能なUPとなっている。

 このように,UPはソフトウエア開発の先人達の試行錯誤の結果が積み上げられ,洗練されてきたものである。その歴史は,近代ソフトウエア開発の歴史とオーバーラップする部分が多い。

 現在広く一般的に利用されているユースケースは,UPの中心的な概念であるとともに,UPの前身となるオブジェクト指向開発プロセスObjectory Processのために発明されたものだ。UMLもまた,1990年代に数多く生まれたオブジェクト指向開発方法論を統一する目的で,UPとともに開発されたものである。つまり,UMLを利用した開発の「リファレンス実装」がUPなのである。

 これからオブジェクト指向やユースケース,UMLを学ぼうとしている読者はもちろん,より効果的な利用を模索している読者にとっても,それらの出発点としてのUPを知ることは大きな助けとなるだろう。