JP2007179165A - Uml設計モデルから、確率的な性能評価モデルを導出するコンピュータ・プログラムおよび確率的な性能評価モデルを導出する方法 - Google Patents

Uml設計モデルから、確率的な性能評価モデルを導出するコンピュータ・プログラムおよび確率的な性能評価モデルを導出する方法 Download PDF

Info

Publication number
JP2007179165A
JP2007179165A JP2005374835A JP2005374835A JP2007179165A JP 2007179165 A JP2007179165 A JP 2007179165A JP 2005374835 A JP2005374835 A JP 2005374835A JP 2005374835 A JP2005374835 A JP 2005374835A JP 2007179165 A JP2007179165 A JP 2007179165A
Authority
JP
Japan
Prior art keywords
call
converting
diagram
class
activity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005374835A
Other languages
English (en)
Inventor
Sunao Tabuchi
直 田渕
Naoto Sato
佐藤 直人
Hiroaki Nakamura
宏明 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2005374835A priority Critical patent/JP2007179165A/ja
Priority to US11/608,103 priority patent/US7788636B2/en
Publication of JP2007179165A publication Critical patent/JP2007179165A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】UML設計モデルを、確率的な性能評価モデルに変換するコンピュータ・プログラムを提供する。
【解決手段】該コンピュータ・プログラムは、呼び出しグラフを、2分木構造を持った構文木に変換する手段221と、プロトコル状態図をプロセス式に変換する手段222と、アクティビティ図を確率付プロセス式に変換する手段223と、前記プロトコル状態図のプロセス式と、前記アクティビティ図の確率付プロセス式を合成して、クラスの確率付プロセス式を求める手段と、前記構文木と、前記クラスの確率付プロセス式から、システム全体の確率付プロセス代数式224を求める手段を有する。
【選択図】図2

Description

本発明は、UML(Unified Modeling Language)で記述された処理フローの個々の処理ステップに、基本的な性能指標に関する注釈をつけた設計モデルを入力として用い、そこから定量的な性能評価のための数学的モデルを自動的に導出する装置、及び導出するプログラムに関する。
システムの定量的な性質を見積もり・検証するという目的のため、時間/確率付き・ペトリネット、 時間/確率付きプロセス代数などのいくつかの形式的な手法が確立されている。ペトリネットとプロセス代数は、いずれもソフトウェアのような制御フローを自然に表現できる形式的手法である。どちらも、処理時間に関する情報を付加した拡張が複数提案されている。これら拡張された記述を元に、マルコフ連鎖などの確率過程、あるいは時間付きオートマトンなどの数学的形式化を基礎とした解析手法が確立されており、システムの性能評価に適用可能なツールが開発されている。
以上のような形式的手法とは別に、“UML Profile for Schedulability, Performance and Time”(UML−SPT) と呼ばれるUML拡張仕様がOMG(Object Management Group)において標準化されている。これは、UML図に対して、処理時間や性能に関する注釈を記述するための仕様である。UML−SPTによる注釈を用いて、システム全体や特定の処理のステップについて、必用な処理時間の見積り・その他の性能指標に関して、ある程度形式的かつ統一的な記述を行うことによって、開発者間でこれらの情報に対する意志の疎通を促すことができる。
関連する既存の研究として、非特許文献1および2では、UMLのステート図およびアクティビティ図からプロセス代数に基づく性能評価モデルを自動導出している。ただし、これらの手法では、1枚の図から1つの評価モデルを導出する方法しか言及されておらず、複数の図の連携によって表現される挙動については考慮されていない。非特許文献3、4および5では、アクティビティ図、ステート図、ユースケース図等の間の連携を考慮した、ペトリネットへの変換手法が述べられている。この手法では、「アクティビティ図Aがアクティビティ図Bを呼び出す」といった連携の関係を、ペトリネットのトポロジの結合として表現している。しかし、この手法では、呼び出される挙動の振る舞いが、呼び出し側の与えるパラメタに依存する関数呼び出し等のケースを表現できない。また、現実のシステム開発工程では、同等の振る舞いをする複数の構成要素を「クラスとインスタンス」の関係で表現することが一般的であるが、この手法ではそのような関係を表現できない。
特許文献1は、注釈付きUMLモデルから性能評価モデルを自動導出する手法であるが、クラス図と一部シーケンス図しか考慮されていないので、性能評価モデルが、詳細化されていないという問題がある。また、このことは、UMLモデルの振る舞いが、求めた性能評価モデルの振る舞いと一致しない事態を招く恐れがあり、これを補正するために、エンジニアが、パラメータの付与等の作業をする必要がある。
特開2001−318812号公報 S. Gilmore and L. Kloul. A unified approach to performance modeling and verification, May 2003. Paper presented at Dagstuhl seminar on "Probabilistic Methods in Verification and Planning". C. Canevet et al. Analysing UML 2.0 activity diagrams in the software performance engineering process. In Proc. 4th Intl. Workshop on Soft. and Perf., pages 74?78, 2004. Simona Bernardi et al. From UML sequence diagrams and statecharts to analysable petri net models. In Proc. 3rd Intl. Workshop on Software and Performance, pages 35?45, 2002. Juan Pablo L´opez-Grao et al. From UML activity diagrams to stochastic petri nets: application to software performance engineering. SIGSOFT Softw. Eng. Notes, 29(1), 2004. Jos´e Merseguer and Javier Campos. Exploring roles for the UML diagrams in software performance engineering. In Proc. 2003 Intl. Conf. on Software Engineering Research and Practice (SERP’03), pages 43?47, June 2003. InternalNote: Submitted by: jcampos@unizar.es.
専門的な知識を持たないエンジニアがUMLに基づいて性能評価を行うためには、UMLモデルから性能評価モデルを自動導出する手法が必要となる。また、UMLを用いた現実の開発工程では、クラスを用いたコンポーネントベースのモデリングが一般的なため、そのような開発プロセスを考慮しなければならない。UMLによるモデリングとUML−SPT等による注釈を用いることが有用であると考えられる。しかし、UML−SPTの仕様では、注釈の記述箇所や書式は定められているものの、それらの厳密な意味については規定されておらず、付加した注釈から性能評価を得られるわけではない。
上記課題を解決するため、本発明においては、UML設計モデルを、確率的な性能評価モデルに変換するコンピュータ・プログラムを提供する。該コンピュータ・プログラムは、コンピュータを、呼び出しグラフを、2分木構造を持った構文木に変換する手段と、プロトコル状態図をプロセス式に変換する手段と、アクティビティ図を確率付プロセス式に変換する手段と、前記プロトコル状態図のプロセス式と、前記アクティビティ図の確率付プロセス式を合成して、クラスの確率付プロセス式を求める手段と、前記構文木と、前記クラスの確率付プロセス式から、システム全体の確率付プロセス代数式を求める手段として機能させる。該コンピュータ・プログラムにより、専門的な知識を持たないエンジニアでも、UMLモデルから性能評価モデルを容易に導出することができる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせは、発明の内容を理解しやすくするためのものもあり、その全てが発明の解決手段に必須であるとは限らない。
以下の実施の形態では、主に方法またはシステムについて説明するが、当業者であれば明らかなとおり、本発明はコンピュータで使用可能なプログラムとしても実施できる。したがって、本発明は、ハードウェアとしての実施形態、ソフトウェアとしての実施形態またはソフトウェアとハードウェアとの組合せの実施形態をとることができる。プログラムは、ハードディスク、CD−ROM、光記憶装置または磁気記憶装置等の任意のコンピュータ可読媒体に記録できる。
図1は、UML設計モデルから、確率的な性能評価モデルを導出するシステムが作動するハードウェア構成100の概略を示している。中央演算処理装置であるCPU101は各種オペレーティング・システムの制御下で様々なプログラムを実行する。CPU101はバス102を介して、メモリ103、ディスク104、ディスプレイ・アダプタ105、ユーザ・インタフェース106およびネットワーク・インタフェース107と相互接続される。なお、ネットワーク・インタフェース107は必須の構成要素ではないが、本発明が分散環境を実施される場合に必要となる。ディスク104には、本発明を実現するためのシステムとしてコンピュータを機能させるためのソフトウェア、オペレーティング・システムおよび本発明を実行するためのプログラム等が含まれる。
ユーザ・インタフェース106を通して、キーボード109およびマウス110に接続され、ディスプレイ・アダプタ105を通してディスプレイ装置108に接続され、ネットワーク・インタフェース107を通してネットワーク111に接続される。このハード構成100は、コンピュータ・システム、バス配置およびネットワーク接続の一実施形態の例にすぎず、本発明の特徴は、さまざまなシステム構成で、同一の構成要素を複数有する形態で、または、ネットワーク上にさらに分散された形態でも実現することができる。
図2は、UML設計モデルから、確率的な性能評価モデルを導出するシステムの機能およびデータを概念的に表したものである。201はUMLモデルを入力するツールである。ディスク210には、UML−SPTモデルが登録されている。ディスク210のUML−SPTモデルの内容は、UML設計図211と、性能指標注釈212などである。220はUMLモデルを確率付きプロセス代数に変換するUMLモデル変換器である。UMLモデル変換器220は、呼び出しグラフ変換器221、プロトコル状態変換器222、およびアクティビティ図変換器223を含む。呼び出しグラフ変換器221は、クラスの呼び出しグラフから、2分木構造を持った構文木に変換し、プロセス式表現を求める。プロトコル状態変換器222は、プロトコル状態図から、プロセス代数を作成する。アクティビティ図変換器223は、メソッドの具体的な振る舞いを記述するUML2.0のアクティビティ図から、プロセス式を作成する。最後に、プロトコル状態図から得られたプロセス式と、アクティビティ図から得られたプロセス式を合成し、さらに、2分木構造を持った構文木と合成して、システム全体の確率付きプロセス代数式224を求める。その後、プロセス代数式224は、プロセス代数表現から、確率モデル変換によって、連続マルコフ鎖のモデルに変換したり、その他の変換機構によって、システムの性能評価が行われる(230)。
図3は、UML設計モデルから、確率的な性能評価モデルを導出する処理フロー300を例示したものである。ステップ301で処理を開始する。ステップ302では、UMLモデルが読み込まれる。このUMLモデルは、UML−SPTモデルであり、UML設計図や性能指標注釈などが含まれる。ステップ303では、呼び出しグラフが作成される。なお、UML2.0の仕様で定義されているアクティビティ図の構成要素には、他のクラスのメソッド呼び出しを表す「操作呼び出しアクション」が含まれているので、クラスの呼び出しグラフは、この「操作呼び出しアクション」に基づいて、クラス間の連携関係を抽出して作成することが可能である。次にステップ304では、呼び出しグラフを、2分木構造を持った構文木に変換する。ステップ305では、プロトコル状態図をプロセス式に変換する。ステップ306では、アクティビティ図を確率付プロセス式に変換する。ステップ307では、ステップ305で求めたプロトコル状態図のプロセス式と、ステップ306で求めたアクティビティ図の確率付プロセス式を合成して、クラスの確率付プロセス式を求める。ステップ308では、ステップ304で求めた構文木と、ステップ307で合成したクラスの確率付きプロセスから、システム全体の確率付プロセス代数式を求める。ステップ309で処理を終了する。
図4は、図2の構成を用いて、プロセス式を導出する対象となるシステム400を例示する。図4では、401がスキャナ(Scanner)、402がバッファ(Buffer)、および403がプリンタ(Printer)からなるシステム400が表されている。なお、図4のシステム400は、本発明が適用される一例であって、本発明の適用範囲が、これに限定されるものではない。システム400では、スキャナ401で読み取った原稿のデータをバッファ402に保存し、プリンタ403がバッファ402のデータを取り出して印刷する。スキャナ401とプリンタ403は、それぞれ独立に動作するので、システム400は、並列に動作するシステムである。また、バッファ402は、ここでは、原稿3ページ分のデータを保持できるものとする。
図5から図7は、図4のシステム400の構造と振る舞いを示したUMLモデルの例である。図5のUMLモデルはスキャナ501、バッファ502、およびプリンタ503という3つのコンポーネント(クラス)を定義しており、スキャナ501はputPageメソッド504というインタフェースによってバッファ502と結合され、プリンタ503はgetPageメソッド505というインタフェースによってバッファ502と結合されている。また、スキャナ501はstartScanメソッドを持ち、プリンタ503はstartPrintメソッドを持っている。
図6は、各コンポーネントのプロトコル状態図を示したものである。プロトコル状態図は、状態遷移のラベルとしてメソッド名を持つ状態遷移図である。例えば、プロトコル状態図の状態S1からS2への遷移があり、その遷移にラベルfが付いているということは、メソッドfの呼び出しによってクラスの状態がS1からS2 へと変化することを意味する。スキャナのプロトコル状態図(図6(a))では、startScanメソッドの呼び出しを任意の回数受け付けることを示している。同様に、プリンタのプロトコル状態図(図6(c))では、startPrintメソッドの呼び出しを任意の回数受け付けることを示している。
一方、バッファのプロトコル状態図(図6(b))は、初期状態に加えS0、S1、S2、およびS3の4つの状態を持っている。状態Si はバッファにi個のデータが保持されている状態を表す。バッファの状態はputPageメソッドが呼び出されることによってSi からSi+1 に遷移し、getPageメソッドによってSiからSi-1に遷移する。状態S0はバッファが空であることを表す状態なので、この状態ではgetPageメソッドの呼び出しを受け付けることができない。状態S0でプリンタがgetPageメソッドを呼び出したとすると、この呼び出しは、状態がS1以上に遷移するまで待たされる。同様にS3はバッファのデータが一杯になった状態なので、S3ではputPageメソッドを受け付けることができない。
図7は、各メソッドを定義するアクティビティ図である。図7(a)では、スキャナのstartScanメソッドは、scanPageアクションと、バッファのputPage メソッドを呼ぶアクションの2つを繰り返すループとなっている。ここで、scanPageアクションには、このアクションの実行に要する時間がUML−SPTの記法(UML−SPTで定義されたステレオタイプ《Pastep》) で注釈されている。この注釈は、scanPageアクションの実行には平均でt1 秒の時間を要すること、および実行時間のばらつきは指数分布(exponential) に従うことを表している。図7(c)では、プリンタのprintPageも同様に、getPageメソッドの呼び出しとprintPageアクションの2つの繰り返しがアクティビティ図として表現されており、printPageアクションの実行に平均でt2秒の時間を要することが注釈されている。図7(b)では、バッファにおいて、putPage メソッドは、enqueueアクションが平均t3秒かかる。getPageメソッドは、putPageメソッドとほぼ同等のものなので、ここでは説明を省略している。
ここからは、具体的なプロセス代数を導出する方法を説明する。UML2.0の仕様で定義されているアクティビティ図の構成要素には、他のクラスのメソッド呼び出しを表現する「操作呼び出しアクション」が含まれている。本発明では、入力UMLモデルに含まれる操作呼び出しアクションに基づいて、クラス間の連携関係を抽出し、それを確率付きプロセス代数のプロセス間通信を表す式に変換する。クラス間の連携関係は、UMLモデルに含まれる各クラスごとに、そのクラスに属するアクティビティ図 が持つ「操作呼び出しアクション」を列挙し、呼び出されるクラスが何であるかを見ることによって、クラス間の「呼ぶ、呼ばれる」という関係を呼び出しグラフ (static call graph) として表現することで抽出する。なお、C言語のソース・プログラムから static call graph を抽出するツールがあるが、これと同等のことを UMLに応用して、クラス間の連携関係を、抽出できる。
本発明で用いるプロセス代数の定義を表1に示す。なお、P|L Q はPとQという2つのプロセスが並列に動作しながらL に現れるアクションで同期を取る、という動作を表し、クラス間の連携を表現するための構文要素である。
Figure 2007179165
本発明で用いるプロセス代数において、プロセス間の通信は2分木構造を持った構文木として表現され、個々の通信はアクションの名前に基づいて行われる。一方、UMLモデルでの操作呼び出しアクションに基づく連携は一般にはグラフ構造の形をとり、また、同名のメソッドが異なった引数で呼び出される場合がありうる。このため、モデルから抽出された呼び出しグラフからプロセス式への変換は、(i)各メソッドの呼び出しに対して異なったアクション名を割り当てる、(ii)グラフ構造を2分木構造に変換する、という操作が最初の手順となる。
図8は、呼び出しグラフからプロセス式に変換する過程を理解するための例を示す。図8(a)には、C1、C2、C3、C4、およびC5という5つのクラスとf1、f2、f3、f4、およびf5という5つのメソッドからなる呼び出しグラフである。また、メソッドf3 はC2とC3からそれぞれ異なる引数で呼び出されている。このグラフの中で、クラスC1は他のどのクラスからも呼び出されていない。以下、呼び出しグラフのこのような節を、グラフの「根」と呼ぶこととする。また、クラスC5は他のどのクラスのメソッドも呼び出していない。以下、このような節をグラフの「葉」と呼ぶこととする。一般に呼び出しグラフの根と葉はそれぞれ複数存在してもよい。
図9は、呼び出しグラフからプロセス式に変換する過程の例を示す処理フロー900である。処理フロー900はステップ901で処理を開始する。ステップ902では、グラフの各根から葉に至る、全てのパスを列挙する。ステップ903では、ステップ902で列挙されたパスの各枝に対し、一意な識別番号である「メソッド呼び出し番号」を割り当てる。このとき、メソッド呼び出し番号とメソッド呼び出し階層の対応関係を保持しておく(図8(b))。これまでの処理により、元の呼び出しグラフにおけるメソッドの引数や呼び出しパスの差異を反映して、同一のメソッドに対して複数個の番号が割り当てられる。すなわち、このプロセス式に変換する過程では、メソッドの引数や呼び出しパスの差異を区別する。例えば図8(c)のグラフ構造と図8(b)の対応関係を見ると、メソッドf3の2つの呼び出しに対して2と5、メソッドf5の2つの呼び出しパスに対して3と6という番号が割り当てられている。ステップ904で、上記の手順で得られたグラフを、プロセス式に対応する2分木に変換する。この2分木は、葉要素がN1|φ・・・|φRkというプロセスの並列結合を持ち、葉以外の節が、各メソッド呼び出し番号iについてi、iendという2つの名前を持った集合をデータとする2分木となる。ここで、iはメソッド呼出し番号iに対応するメソッドの開始を表すアクション名、iendは同メソッドの終了を表すアクション名である。この2分木はクラス間の並列結合を
表すプロセス式の構文木と1対1に対応するので、ステップ905で、2文木を、プロセス式に変換する(図9(d))。
図10は、図8および図9と同様の処理を、図4のシステム400に適用した例である。図10(a)は、スキャナ、バッファ、およびプリンタという3つのクラスと、putPageとgetPageの2つのメソッドからなる呼び出しグラフである。図10(b)では、スキナからバッファへのputPage メソッドの呼び出しに対しメソッド呼出し番号1 を、プリンタからバッファへのgetPageの呼び出しに対しメソッド呼出し番号2を、それぞれ割り当てている。図10(c)では、図10(a)のメソッド名を、対応するメソッド呼び出し番号で置き換えている。図10(c)を二分木表現に変換したものが図10(d)であり、次のプロセス式表現が得られる。
Buffer|{1,2,1end,2end} (Scanner|φ Printer)
クラスのプロセス式への変換は、次の手順に基づいて行う。(1)各クラスの振る舞いを定義するプロトコル状態図を、プロセス式に変換する。(2)クラスが持つ各メソッドの振る舞いを定義するアクティビティ図を、プロセス式に変換する。(3)前記(1)および(2)の結果を合成することによって、各クラスの振る舞いを表現するプロセス式を得る。
プロトコル状態図からプロセス式への変換について図11で説明する。プロトコル状態図は、状態遷移のラベルとしてメソッド名を持つ状態遷移図である。プロトコル状態図の状態S1からS2への遷移があり、その遷移にラベルfが付いているということは、メソッドfの呼び出しによってクラスの状態がS1からS2へと変化することを意味する。このようにして、プロトコル状態図であるクラスが受け付けることのできるメソッド呼び出しの種類や順序などを表現することができる。例えば図11(a)は、図8のクラスC4 のプロトコル状態図であり、C4はメソッドf3の呼び出しを任意の回数受け付けることを表している。より複雑な例として、図11(b)は「ファイル」を表すクラスのプロトコル状態図である。「ファイル」は最初にメソッドopenを受け付け、メソッドreadまたはwriteを任意回数受け付けた後close を受け付けて、再びopenを受け付けることのできる初期状態に戻ることが表現されている。プロトコル状態図からプロセス式への変換は、最初に状態図の遷移ラベルであるメソッド名をメソッド呼び出し番号に置き換えることから始める。例えば、図8(b)よりメソッドf3に対応するメソッド呼び出し番号は2と5なので、図11(a)のC4の状態図は図12に変換される。
このように変換されたプロトコル状態図を、図13の処理フロー1300に沿って、グラフの深さ優先探索によってプロセス式に変換する。処理フロー1300は、ステップ1301で処理を開始する。ステップ1302で、プロトコル状態図の初期状態から探索を開始する。ステップ1303で、訪れた状態図の状態をSとして、状態Sがループを形成する状態、すなわち、状態Sから遷移する途中に再び状態Sとなるような状態遷移列が存在し、かつ過去一度でも状態Sを訪れたことがあるか判定する。ステップ1303で、状態Sがループを形成すると判断された場合(YES)、ステップ1304で、Sを変数XSに変換する。一方、ステップ1303で、状態Sがループを形成しないと判断された場合(NO)、ステップ1305に進む。ステップ1305では、Sから出ている遷移先の状態をS1、S2、・・、Skとし、メソッド呼出し番号である遷移のラベルをn1、n2、・・、nk(niは整数)として、最初に各遷移先の状態Siを変換し、換結果のプロセス式をQiとする。ステップ1106で、各ラベルniを、アクションの列n’・ nistart ・ n’iwait ・ niendに変換する。ステップ1307で、変換されたアクション列をQiの先頭に付加し、プロセス式P≡n’ ・ nistart ・ n’iwait ・ niend ・Qを得る。
なお、nはメッセージの送出、n’はメッセージの受け取りを表す。ステップ1308で、全てのPi(i = 1、2、・・、k) を+で結合し、プロセス式PS≡P1+P2+・・+Pkを得る。ステップ1308で、もしSがループを形成する状態なら、PSに現れる変数Xをμ演算子で束縛し、μX・Pを変換結果とする。そうでなければ、Pを変換結果とする。ステップ1309で処理を終了する。
図13の処理フローから、例えば、図12の状態図からは、次のようなプロセス式が得られる。μXS1・2’・2start・2’wait・2end・XS1+5’・5start・5’wait・5end・XS1
次に、図13の処理フローに従い、図6(b)におけるバッファのプロトコル状態図の変換例を示す。図14は、図5にあるバッファ・コンポーネントのプロトコル状態図を元に、遷移のラベルを対応するメソッド呼出し番号(putPage = 1、getPage = 2)で置き換えて得られた状態図である。いま、状態sからプロセス式への変換を[[s]]と書くことにすると、この状態図の変換は次のようになる。
初期状態からs0への遷移にはラベルが付かないため、初期状態の変換結果はS0の変換結果に等しいので、[[●]]=[[S0]]となる。
S0はまだ一度も訪れていない状態であり、S0はループを形成する状態なので、[[S1]]に現れる変数XS0 は、μXS0で束縛される。従って、[[S0]]=μXS0・1’・1start・1’wait・1end[[S0]]となる。S1からS2への遷移に対応する式は、[[S0]]の変換と同様となる。S1からS2への遷移に対応する式は、S0は既に訪れた状態なので、変数XS0に変換される。従って、[[S1]]=μXS1 (1’ ・1start・1’wait・1end・ [[S2]]+2’ ・2start・・2’wait・2end・XS0)となる。[[S2]]は[[S1]]と同様なので、 [[S2]]=μXS2 (1’・1start・1’wait・1end・ [[S3]]+2’・2start・2’wait・2end・XS1)となる。
[[S3]]は、S3からS2への遷移に対応する式である。S3はループを形成する状態であるが、[[S3]]の結果には、変数XS3は現われないため、μXS3による束縛は行われない。従って、 [[S3]]=2’・2start・2’wait・2end・XS2となる。
以上の等式を全て展開すると、図14の状態図を変換した結果のプロセス式として、次の式が得られる。
BufferPSM ≡μXS0・1’・1start・1’wait・1end・μXS1・(1’・1start・1’wait・1end・μXS2・(1’・1start・1’wait・1end・2’・2start・2’wait・2end・XS2+2’・2start・2’wait・2end・XS1)+2’・2start・2’wait・2end・XS0)
次に、アクティビティ図からプロセス式への変換について説明する。メソッドの具体的な振る舞いを記述する表現としてUML2.0のアクティビティ図を用いる。そのため、一つの「メソッド呼出し番号」に対して一つの対応するアクティビティ図が存在する。UML2.0のアクティビティ図は、アクティビティ・ノードとアクティビティ・エッジからなる有向グラフとして定義されている。アクティビティ・ノードはUML2.0の仕様では数十種類が定義されているが、ここでは、性能評価に直接関わる「基本アクションノード」「メソッド呼び出しノード」「分岐・マージノード」「フォーク・ジョインノード」「アクティビティ開始・終了ノード」のみを扱う。また、各基本アクションには、アクションの実行に要する時間がUML−SPT等の記法で注釈されている。
アクティビティ図をプロセス代数の構文木に変換するため、次の手順をとる。
(1)アクティビティ図に前処理を施し、以下の制約を満たす図に変換する。(i)アクティビティ図の「アクティビティ開始ノード」は唯一つである。(ii)各「基本アクションノード」「メソッド呼び出しノード」は唯一の入力エッジと出力エッジを持つ。(iii)各「分岐ノード」と「フォークノード」は2つの出力エッジを持つ。
(2)(1)で得られたアクティビティ図の構造を、表2で定義される構文(規則)に従って構文木による表現に変換する。
Figure 2007179165
(3)(2)で得られた木表現をプロセス式に変換する。
UML2.0の仕様では、アクティビティ図が複数の「アクティビティ開始ノード」を持つ場合はそれぞれの開始ノードから並列に処理が開始される。アクションノードに複数の入力エッジがある場合は、「ジョインノード」と同様に扱われる。そして、アクションノードから複数の出力エッジが出ている場合は「フォークノード」と同様に扱われるものとして定義されている。また、3つ以上の出力がある分岐・フォークは出力が2つの分岐・フォークを多段に設けることによって表現できる。上記(1)の処理は、この定義に従って適当な箇所に分岐・フォーク・ジョインノードを挿入するものである。
上記(2)で得られたアクティビティ図の木表現からプロセス式の変換は、図15の処理フロー1500で実行される。処理フロー1500は、ステップ1501で、処理を開始する。ステップ1202で、アクティビティ開始ノードから探索を開始する。ステップ1503で、訪れたノードに対して、一意な識別子を割り当てる。この識別子をlと表記する。ステップ1504で、訪れたノードの種類によって、次の場合分けを行い、割り当てられた識別子lを付加して変換する。
「アクティビティ終了ノードノード」の場合、Finall に変換する。
「アクティビティ開始ノードノード」の場合はinitl に変換し、後続の変換結果をA としてinitll→A に変換する。
「基本アクションノード」の場合は、注釈として付加された時間がt であるとした時、ノードを(a,1/t)l に変換し、後続の変換結果をA として(a,1/t )l → A に変換する。「メソッド呼び出しノード」の場合は、呼び出されるメソッドがf であり、その「メソッド呼び出し番号」がn であるとした時、ノードをcall(n)lに変換し、後続の変換結果をA としてcall(n)l → A に変換する。「分岐ノード」の場合は、後続する2つの分岐の変換結果をA1、A2 としてDecision(A1、A2)lに変換する。「フォークノード」の場合は、後続する2つの並列実行の変換結果をA1、A2 としてFor
k(A1,A2)l に変換する。「ジョインノード」の場合は、このノードを最初に訪れた場合、ノードをjoinl に変換し、後続の変換結果をA としてjoinl→A に変換する。既に訪れたことのあるノードの場合、ノードをJoinl に変換する。
「マージノード」の場合は、このノードを最初に訪れた場合、ノードをmergel に変換し、後続の変換結果をA としてmergel→A に変換する。既に訪れたことのあるノードの場合、そのノードがループを形成するノードであれば、BwdMergel に変換する。そうでない場合はFwdMergel に変換する。
ステップ1505で、変換してないノードがあるか判定する。ステップ1505で、変換してないノードがあると判断された場合は(YES)、ステップ1502に戻り、変換処理を続ける。ステップ1505で、変換してないノードがないと判断された場合は(NO)、ステップ1506に進んで、処理を終了する。
なお、上記(3)の木表現からプロセス式への変換は、表3の定義に従って行われる。表3中、mergel→Aの規則では、変換の結果を、ラベルlをキーとしてΠ(というメモリに記憶しておく。
Figure 2007179165
全ての変換が終了した時点で、FwdMergelは、Πに記憶された対応するプロセス式Π(l)で置き換えられる。Fork(A1、A2)l の規則に現れる次の等式は、プロセスの並列結合を構築する演算子である。
Figure 2007179165
図7に記載されたシステムについてのバッファのputPageメソッドのアクティビティ図を次のように変換する。
initl1→(enqueue、1/t3)l2 → Finall3
ここで、(enqueue、1/t3)l2 は、enqueueメソッドのアクションの実行に平均t3秒かかるという注釈を反映している。このように表現されたアクティビティ図は、表3の規則に従って、次のプロセス式に変換されるPputPage≡[initl1→ (enqueue, 1/t3 )l2→Finall3
= [(enqueue、 1/t3 )l2 → Finall3
= (1/t3)・[Finall3] = (1/t3 )・end・stop
また、Scanner コンポーネントのstartScanメソッドのアクティビティ図は、次の木表現に変換される。
initl4→mergel5 → (scanPage、1/t1)l6 → call(1)l7 → Mergel5 (scanPage、1/t1 )l6 は、scanPageメソッドのアクションの実行に平均t1 秒かかるという注釈を反映している。また、call(1)l7 は、putPage を呼び出すアクションに対応している。カッコ内の数字1 はScanner からputPage の呼び出しに対応するメソッド呼び出し番号である。ループの起点となるマージノードは、mergel5とMergel5の2つの要素に変換され、これらはいずれも同じラベルl5 を持つことで、元のアクティビティ図で同一のノードであったことが示されている。この木表現から、プロセス式は次のように変換される。
PstartScan≡[initl4→mergel5→(scanPage、1/t1 )l6 → call(1)l7 → Mergel5
= [mergel5 → (scanPage; 1/t1 )l6 → call(1)l7 → Mergel5
= μXl5[(scanPage; 1/t1 )l6 → call(1)l7 → Mergel5
= μXl5・(1/t1 )・[call(1)l7 → Mergel5
= μXl5・( 1/t1 )・1begin・1’end・[Mergel5
= μXl5・( 1/t1 )・1begin・1’end・Xl5
同様に、Printer のstartPrintメソッドからは、次のプロセス式が得られる。
PstartPrint ≡ μXl6・2begin・2’end・(1/t2)・Xl6
次に、プロトコル状態図とアクティビティ図の合成について説明する。クラスからプロセス式への変換の最後の過程として、プロトコル状態図から得られたプロセス式と、各アクティビティ図から得られたプロセス式を合成する。この合成は次のように実現される。今、あるアクティビティ図Aに対応するメソッド呼び出し番号がnAであり、Aを変換した結果のプロセス式がPAであるとする。この時、メソッド呼び出し番号Aにより、PA と関連付け、次のように変換する。(1)PAに現れるend・stopを、プロセスnAwait・XnAで置き換え、結果をP’Aとする。(2)
上記P’A の先頭にμXnA・n’Astartを付加し、P”A≡μXnA・nAstart・P’Aとする。各アクティビティ図に対応するプロセス式を上記のように変換した後、次のようなプロセスの並列結合によって、クラス全体の振る舞いを表すプロセス式を得る
C≡PPMS|{n1start,n1wait,・・・,nkstart,nkwait}(P”A1φ P”A2φ・・・|φ P”A k)
ここで、PPSM はプロトコル状態図を変換した結果のプロセス式、n1,・・・,nkはメソッド呼び出し番号であり、各PAiはメソッド呼び出し番号i に対応するアクティビティ図の変換結果である。
図4のシステムのバッファの変換例として、バッファのコンポーネントの振る舞いを表すプロセス式は、次のように得られる。最初に、putPageメソッドのアクティビティ図から得られたプロセス式PputPage を以下のように変換し、最終的にP”putPage を得る。まず、PputPage ≡ ( 1/t3 )・end・stopである。ここでend・stopを1wait・X1で置き換える。そうするとP’ putPage ≡ ( 1/t3 )・1wait・X1となる。つぎに、先頭にμX1・1’startを付加すると、P” putPage ≡μX1・1’start・( 1/t3 )・1wait・X1となる。また、getPageメソッドからも同様なプロセス式P”getPageが得られたとする。これと、Bufferのプロトコル状態図から得られたプロセス式BufferPSM≡μXS0・1’・1start・1’ wait・1end・μXS1・(1’・1start・1’ wait・1end・μXS2・(1’・1start・1’wait・1end・2’・2start・2’wait・2end・XS2 + 2’・2start・2’wait・2end・XS1 )+ 2’・2start・2’wait・2end・XS0 )を、以下のように結合することで、バッファのプロセス式を得る。
Buffer ≡ BufferPSM{1start,1wait,2start,2wait} (P”putPageφ P”getPage)
このプロセスの動作は次のようになる。最初に、バッファを使用するプロセスが、バッファのメソッド呼び出しに対応するアクションを実行する。例えば、今スキャナのプロセスがアクション「1」を実行したとする。このアクションと、BufferPSMの1’ アクションの間で同期がとられ、BufferPSM は、1’に続くアクションである1start を実行する。1start は、P”putPageの1’startと同期するため、P”putPageはそれに続く時間付きアクション( 1/t3 )を実行する。その後、P”putPage の1wait アクションとBufferPSM の1’wait アクションが同期しBufferPSM は1end によってScanner に実行完了を通知する。それと同時に、P”putPage は再び1’start による同期を待つ状態に戻る。
システム全体のプロセス代数は、上記バッファと同様にスキャナとプリンタのプロセス式を求め、図10(d)の式 Buffer|{1,2,1end,2end} (Scanner|φ Printer)に代入して求めることができる。
本発明を用いることによって、ペトリネットやプロセス代数などの性能評価に関する理論の専門知識を持たない性能開発者が、UML による設計記述を元に性能評価を行うことが可能になる。これによって、システム開発者がシステムの設計段階で性能に関する評価を手軽に実施することができる。また、本発明においてシステム開発者が記述するものはUML 設計図と性能注釈のみである。このため、性能評価のためだけに用いる特殊な設計モデルを用意する必要がなくなるため、一般的なシステムの開発プロセスに性能評価を自然に導入することが可能になる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
UML設計モデルから、確率的な性能評価モデルを導出するシステムが作動するハードウェア構成100の概略を示している。 UML設計モデルから、確率的な性能評価モデルを導出するシステムの機能およびデータ UML設計モデルから、確率的な性能評価モデルを導出する処理フロー300を例示しものである。 プロセス式を導出する対象となるシステム400を例示する。 システム400のUMLモデルの一例 図6は、各コンポーネントのプロトコル状態図を 各メソッドを定義するアクティビティ図 呼び出しグラフからプロセス式に変換する過程の例 呼び出しグラフからプロセス式に変換する過程の例 システム400について、呼び出しグラフからプロセス式に変換する過程の例 プロトコル状態図の例 プロトコル状態図を変換した例 プロトコル状態図を、プロセス式に変換する処理フローの一例 バッファ・コンポーネントのプロトコル状態図を置き換えた一例 アクティビティ図の木表現からプロセス式の変換処理の一例

Claims (15)

  1. コンピュータに、クラスのプロトコル状態図およびアクティビティ図を含むUML設モデルを、確率的な性能評価モデルに変換させるコンピュータ・プログラムであって、
    前記コンピュータを
    呼び出しグラフを、2分木構造を持った構文木に変換する手段と、
    プロトコル状態図をプロセス式に変換する手段と、
    アクティビティ図を確率付プロセス式に変換する手段と、
    前記プロトコル状態図のプロセス式と、前記アクティビティ図の確率付プロセス式を成して、クラスの確率付プロセス式を求める手段と、
    前記構文木と、前記クラスの確率付プロセス式から、システム全体の確率付プロセス数式を求める手段と
    して機能させるためのコンピュータ・プログラム。
  2. 前記呼び出しグラフは、アクティビティ図からクラス間の呼び出しにもとづいたグラである、請求項1に記載のコンピュータ・プログラム。
  3. 前記呼び出しグラフを作成する手段は、同一メソッドに対し、メソッド呼び出しの引の違いで、メソッド呼び出しを区別することを特徴とする、請求項2に記載のコンピュタ・プログラム。
  4. 前記呼び出しグラフを作成する手段は、同一メソッドに対し、呼び出しパスの違いでメソッド呼び出しを区別することを特徴とする、請求項2に記載のコンピュータ・プロラム。
  5. 前記プロトコル状態図を変換する手段は、遷移先の状態をS1、S2、・・、Skとし、メソッド呼出し番号である遷移のラベルをn1、n2、・・、nkとして、最初に各遷移先の状態を変換することを特徴とする請求項1に記載のコンピュータ・プログラム。
  6. 前記アクティビティ図を変換する手段は、アクティビティ開始ノードから探索を開始し、訪れたノードに対して、一意な識別子を割り当てることを特徴とする請求項1に記載のコンピュータ・プログラム。
  7. 前記クラスの確率付プロセス式を求める手段は、メソッド呼出し番号により、アクティビティ図の確率付プロセス式を関連付けることを特徴とする請求項1に記載のコンピュータ・プログラム。
  8. 請求項1乃至7に記載のいずれかに記載のコンピュータ・プログラムを記録した、コンピュータ読み取り可能な記録媒体。
  9. クラスのプロトコル状態図およびアクティビティ図を含むUML設計モデルを、確率的な性能評価モデルに変換する方法であって、
    呼び出しグラフを、2分木構造を持った構文木に変換するステップと、
    プロトコル状態図をプロセス式に変換するステップと、
    アクティビティ図を確率付プロセス式に変換するステップと、
    前記プロトコル状態図のプロセス式と、前記アクティビティ図の確率付プロセス式を合成して、クラスの確率付プロセス式を求めるステップと、
    前記構文木と、前記クラスの確率付プロセス式から、システム全体の確率付プロセス代数式を求めるステップと
    を有する方法。
  10. 前記呼び出しグラフは、アクティビティ図からクラス間の呼び出しにもとづいたグラである、請求項1に記載の方法。
  11. 前記呼び出しグラフを作成するステップは、同一メソッドに対し、メソッド呼び出し引数の違いで、メソッド呼び出しを区別することを特徴とする、請求項2に記載の方法。
  12. 前記呼び出しグラフを作成するステップは、同一メソッドに対し、呼び出しパスの違で、メソッド呼び出しを区別することを特徴とする、請求項2に記載の方法。
  13. 前記プロトコル状態図を変換するステップは、遷移先の状態をS1、S2、・・、Skとし、メソッド呼出し番号である遷移のラベルをn1、n2、・・、nkとして、最初に各遷移先状態を変換することを特徴とする請求項1に記載の方法。
  14. 前記アクティビティ図を変換するステップは、アクティビティ開始ノードから探索を始し、訪れたノードに対して、一意な識別子を割り当てることを特徴とする請求項1に載の方法。
  15. 前記クラスの確率付プロセス式を求めるステップは、メソッド呼出し番号により、アクティビティ図の確率付プロセス式を関連付けることを特徴とする請求項1に記載の方法。
JP2005374835A 2005-12-27 2005-12-27 Uml設計モデルから、確率的な性能評価モデルを導出するコンピュータ・プログラムおよび確率的な性能評価モデルを導出する方法 Pending JP2007179165A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005374835A JP2007179165A (ja) 2005-12-27 2005-12-27 Uml設計モデルから、確率的な性能評価モデルを導出するコンピュータ・プログラムおよび確率的な性能評価モデルを導出する方法
US11/608,103 US7788636B2 (en) 2005-12-27 2006-12-07 System and method for deriving stochastic performance evaluation model from annotated UML design model

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005374835A JP2007179165A (ja) 2005-12-27 2005-12-27 Uml設計モデルから、確率的な性能評価モデルを導出するコンピュータ・プログラムおよび確率的な性能評価モデルを導出する方法

Publications (1)

Publication Number Publication Date
JP2007179165A true JP2007179165A (ja) 2007-07-12

Family

ID=38195390

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005374835A Pending JP2007179165A (ja) 2005-12-27 2005-12-27 Uml設計モデルから、確率的な性能評価モデルを導出するコンピュータ・プログラムおよび確率的な性能評価モデルを導出する方法

Country Status (2)

Country Link
US (1) US7788636B2 (ja)
JP (1) JP2007179165A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011060277A (ja) * 2009-08-31 2011-03-24 Accenture Global Services Gmbh 統合環境生成器
JP2012146015A (ja) * 2011-01-07 2012-08-02 Nec Corp 性能評価システム、性能評価方法および性能評価用プログラム
CN106226055A (zh) * 2016-08-04 2016-12-14 哈尔滨工程大学 一种基于故障树的核电厂阀门本体失效的可靠性监测方法
US9626458B2 (en) 2011-06-14 2017-04-18 Nec Corporation Evaluation model generation device, evaluation model generation method, and evaluation model generation program

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4740060B2 (ja) * 2006-07-31 2011-08-03 富士通株式会社 重複データ検出プログラム、重複データ検出方法および重複データ検出装置
JP4412674B2 (ja) * 2007-04-18 2010-02-10 インターナショナル・ビジネス・マシーンズ・コーポレーション モデル駆動型開発を支援する装置及び方法
US8869111B2 (en) * 2009-01-15 2014-10-21 Infosys Limited Method and system for generating test cases for a software application
US8589884B2 (en) * 2009-01-15 2013-11-19 Infosys Limited Method and system for identifying regression test cases for a software
US8549490B2 (en) 2009-09-29 2013-10-01 International Business Machines Corporation Static code analysis for packaged application customization
JP5185242B2 (ja) * 2009-12-04 2013-04-17 株式会社東芝 コンパイル装置
CN102799530B (zh) * 2012-07-24 2015-03-18 浙江工商大学 一种基于uml架构的软件系统的性能预测方法
CN103593222B (zh) * 2013-09-29 2016-08-10 中国人民解放军第二炮兵装备研究院科研试验中心 一种逆向提取Java软件程序类图的方法
CN103559069B (zh) * 2013-11-18 2016-08-17 中国科学院声学研究所 一种基于代数系统的跨文件过程间优化方法
US11847445B2 (en) * 2021-12-07 2023-12-19 International Business Machines Corporation Detecting business code areas in a mainframe application
CN117056151B (zh) * 2023-10-11 2024-01-19 深圳鲲云信息科技有限公司 用于芯片验证的方法及计算设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6601233B1 (en) * 1999-07-30 2003-07-29 Accenture Llp Business components framework
US6681383B1 (en) * 2000-04-04 2004-01-20 Sosy, Inc. Automatic software production system
JP2001318812A (ja) 2000-05-11 2001-11-16 Nec Corp 性能評価モデル生成装置および性能評価モデル生成方法
TWI262383B (en) * 2003-01-10 2006-09-21 Univ Nat Cheng Kung A generic software testing system and method
JP4100630B2 (ja) * 2004-05-14 2008-06-11 インターナショナル・ビジネス・マシーンズ・コーポレーション Uml設計方法
US20060106626A1 (en) * 2004-11-16 2006-05-18 Jun-Jang Jeng Method and apparatus of model driven business solution monitoring and control

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011060277A (ja) * 2009-08-31 2011-03-24 Accenture Global Services Gmbh 統合環境生成器
US8689177B2 (en) 2009-08-31 2014-04-01 Accenture Global Services Limited Integration environment generator
JP2012146015A (ja) * 2011-01-07 2012-08-02 Nec Corp 性能評価システム、性能評価方法および性能評価用プログラム
US9626458B2 (en) 2011-06-14 2017-04-18 Nec Corporation Evaluation model generation device, evaluation model generation method, and evaluation model generation program
CN106226055A (zh) * 2016-08-04 2016-12-14 哈尔滨工程大学 一种基于故障树的核电厂阀门本体失效的可靠性监测方法

Also Published As

Publication number Publication date
US20070150875A1 (en) 2007-06-28
US7788636B2 (en) 2010-08-31

Similar Documents

Publication Publication Date Title
JP2007179165A (ja) Uml設計モデルから、確率的な性能評価モデルを導出するコンピュータ・プログラムおよび確率的な性能評価モデルを導出する方法
JP5197688B2 (ja) 統合環境生成器
US7716254B2 (en) System for modeling architecture for business systems and methods thereof
Agrawal et al. An end-to-end domain-driven software development framework
Wu et al. Automatic composition of semantic web services using process and data mediation
US8042091B2 (en) Automatic composition of model transformations
Mallet et al. The clock constraint specification language for building timed causality models: Application to synchronous data flow graphs
Lohmann et al. Comparing and evaluating Petri net semantics for BPEL
EP3482292A1 (en) An interoperable extensible system for the generation of verified software code
Vanhatalo et al. Automatic workflow graph refactoring and completion
Karam et al. A cataloging framework for software development methods
Kienzle et al. A unifying framework for homogeneous model composition
CN110162297A (zh) 一种源代码段自然语言描述自动生成方法及系统
Popoola et al. EMG: A domain-specific transformation language for synthetic model generation
JP2006350729A (ja) アプリケーションソフトウェア構築方法、アプリケーションソフトウェア構築処理プログラム及びアプリケーションソフトウェア構築装置
Tounsi et al. From Event-B specifications to programs for distributed algorithms
Hue et al. A transformation-based method for test case automatic generation from use cases
CN116243893A (zh) 一种低代码出码方法
Bicevskis et al. Practitioners view on domain specific business process modeling
Di Rocco et al. Bridging state-based differencing and co-evolution
Pickin et al. Using UML sequence diagrams as the basis for a formal test description language
Noyer et al. A model-based workflow from specification until validation of timing requirements in embedded software systems
Kerkouche et al. Transforming UML models to colored Petri nets models using graph grammars
Jovanovikj et al. Model-driven test case migration: The test case reengineering horseshoe model
Heinrich et al. Challenges in the Evolution of Palladio—Refactoring Design Smells in a Historically-Grown Approach to Software Architecture Analysis

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080125

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20080131

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20080229

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080325

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080819