UMLの現状とSysMLの最新動向
本連載の予定
「モデリング技術の新しい動向」というテーマで、4回の連載を行います。UMLやSysMLといったポピュラなものだけでなく、今回は、形式手法やオントロジといった、ちょっと今までとは違った切り口で、モデリングの可能性を見ていきます。また、それぞれの技術をサポートするツールも紹介します。
- 第1週: UMLの現状とSysMLの最新動向
- 第2週: SysMLを利用可能なモデリング・ツール「Enterprise Architect」
- 第3週: 形式手法とモデリング--Alloy Analyzerを中心に
- 第4週: モデリングとしてのオントロジと関連ツール
UMLの現状
UML(Unified Modeling Language)は、オブジェクト指向パラダイムに従ったソフトウエア・システムのモデルを記述するための、標準グラフィカル言語です。主にソフトウエア開発者によって、広く認知されています。
C++、Java、C#などのオブジェクト指向言語によるシステム開発の増加に合わせて、実際のシステム開発において仕様記述のためにUMLを利用する事例も、多く見られるようになりました。特に、自然言語によるコミュニケーションに制限があるオフショア開発では、仕様を明確に記述して効率よく伝達する目的から、UMLの重要度が増しています。
日本におけるUMLスキルの資格試験は、大きく2種類あります。1つは、OMG(Object Management Group)が認定するUML技術者資格試験プログラム(OCUP: OMG Certified UML Professional)です。もう1つは、特定非営利活動法人UMTP/Japan(UMLモデリング推進協議会)が運営するUMLモデリング技能認定試験です。双方とも、年々資格取得者を増やしています。
また、さまざまなツール・ベンダーから、UMLをサポートするモデリング・ツールが提供されています。中には、モデル上でのシミュレーション/検証やコード生成が可能なツールもあります。数年前の状況と比べると、UMLに関する認知度/利用環境ともに、着実に充実してきていると言えます。
しかし、UMLには問題点もあります。システム開発の現場でUMLの普及/定着が着実に進行している一方で、「UMLは仕様が大きすぎて複雑であるため、習得が難しい」と言われ続けているのです。
図1に、今までOMGが公開してきた各バージョンのUML仕様書(本体部分*1)のページ数推移の様子を示します。初めてOMGが採択したUML 1.1の仕様書に比べて、UML 2.0以降では約3倍(1000ページ弱)のボリュームになっています。
- [*1] UML 2.0以降の仕様書では、"Infrastructure"と"Superstructure"の合算ページ数を集計しています。一方、UML 2.0よりも前の仕様書では、拡張プロファイル、モデル交換、OCL(オブジェクト制約言語)仕様に関する部分を除いたページ数を集計しています。
図1: UML仕様書(本体部分)のページ数推移 |
リファクタリングやアナリシス・パターンなどで有名なMartin Fowler氏は、システム開発現場でのUMLの使われ方を、
- スケッチとして(UML as Sketch)
- 設計図として(UML as Blueprint)
- プログラミング言語として(UML as Programming Language)
という3つに分類しています。
中でも、UML 2.0以降は、MDA(Model Driven Architecture)構想の実現を狙って「プログラミング言語として(UML as Programming Language)」の強化/整備が行われました。この仕様強化は、ツール・ベンダーにとっては非常に有用なものです。
一方、UMLを「設計図として(UML as Blueprint)」あるいは「スケッチとして(UML as Sketch)」使いたいという人達にとっては、UML 2.0以降は、「ほとんど使われないモデル要素も多く、複雑で分かりにくい」という状況になってしまいました。
UMLの今後
すでにOMGによって次世代UML(UML 3.0)の標準化に向けた活動が進められています。この次世代UML仕様には、「もっと単純で、もっと表現力豊かに、もっと学習しやすく、ほかの言語と簡単に統合でき、新しい技術に素早く適合できるように」といった要望が集まっています。
これらの要望に対応するため、現在のUMLが持つ「仕様が大きすぎて、複雑なため、習得が難しい」という欠点を克服しつつ、各種の仕組みが検討されています。例えば、モデル要素間の依存関係を整理し、単純化したコア部分の定義のみを切り離し、このうえで、新しい拡張機構を用いて個々の特定用途向けにコア部分を拡張して使えるようにする、といった具合です。
さらに、UML自体の世代更新とは別の方向として、プロファイルと呼ばれる拡張/特殊化機構の活用が進んでいます。これにより、UMLは、一般的なソフトウエア設計の分野だけでなく、システム工学、ビジネス・プロセスの定義、SOA(サービス指向アーキテクチャ)やリアルタイム・システム開発などの分野でも、広く応用されつつあります。
特に、UMLを基にシステム工学分野向けの汎用モデリング言語として仕様化された「SysML」(SYStems Modeling Language)は、システム工学分野における標準的な技術要素の1つとして普及していく可能性が高い、と注目され始めています。
こうした、モデリング技術をソフトウエア開発以外の他分野へと応用/展開する活動や、UMLをドメイン特化言語(DSL: Domain Specific Language)化して使用するような利用法は、今後さらに増えていくものと思われます。