JP2004110415A - ソフトウェア開発支援装置とコンピュータプログラム - Google Patents
ソフトウェア開発支援装置とコンピュータプログラム Download PDFInfo
- Publication number
- JP2004110415A JP2004110415A JP2002272146A JP2002272146A JP2004110415A JP 2004110415 A JP2004110415 A JP 2004110415A JP 2002272146 A JP2002272146 A JP 2002272146A JP 2002272146 A JP2002272146 A JP 2002272146A JP 2004110415 A JP2004110415 A JP 2004110415A
- Authority
- JP
- Japan
- Prior art keywords
- class
- information
- inter
- model
- interaction
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】モデル分類されたクラスの関連付けを精度良く検証することができ、設計者に拠らない均質なソフトウェア設計情報を得ることのできるソフトウェア開発支援装置を提供する。
【解決手段】ユーザに、任意のクラス間関連情報とクラス情報を指定させるとともに、過去の設計事例から抽出した相互作用パターン情報を指定させる。指定されたクラス間関連情報とクラス情報から前記指定された相互作用パターン情報のパターンを満たすクラスとメソッドを抽出してクラス間相互作用情報を生成する。このクラス間相互作用情報を設計者が参照しながら、MVCモデルやDESeRVモデルなどのモデルに分類されたクラス間の関連付けを検証することで、設計者に拠らない均質なソフトウェア設計情報が得られる。
【選択図】 図1
【解決手段】ユーザに、任意のクラス間関連情報とクラス情報を指定させるとともに、過去の設計事例から抽出した相互作用パターン情報を指定させる。指定されたクラス間関連情報とクラス情報から前記指定された相互作用パターン情報のパターンを満たすクラスとメソッドを抽出してクラス間相互作用情報を生成する。このクラス間相互作用情報を設計者が参照しながら、MVCモデルやDESeRVモデルなどのモデルに分類されたクラス間の関連付けを検証することで、設計者に拠らない均質なソフトウェア設計情報が得られる。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、例えばWebアプリケーションソフトウェアなどのソフトウェアを開発するためのソフトウェア開発支援装置とコンピュータプログラムに関するものである。
【0002】
【従来の技術】
オブジェクト指向によるソフトウェア開発においては、プログラムの再利用性を高めてプログラム生成労力を軽減する様々な試みがなされてきた。特に、近年のコンピュータ・ハードウェアの進歩に伴うソフトウェアの肥大化により、その要請は切実なものとなっている。オブジェクト指向によるソフトウェア開発支援装置に関する従来技術には以下の特許文献1、特許文献2がある。
【0003】
【特許文献1】
特開平9−292981号公報
【0004】
特許文献1の発明のオブジェクト指向システム分析設計支援装置は、分析設計対象業務において特定のイベントにより行われる一連の操作内容を記述したシナリオ情報より一連の操作手順を読み込み、読込んだ各操作とエンティティオブジェクトとの使用関係を定義し、定義した各操作のオブジェクトの中からエンティティオブジェクトまたは制御オブジェクトを選出・確定し、確定したオブジェクトを用いてイベントトレース図を生成する技術が開示されている。これにより、より適切なオブジェクトに操作を配分したイベントトレース図を生成できる、としている。
【0005】
【特許文献2】
特開平10−2327704号公報
【0006】
特許文献2の発明のオブジェクト指向仕様書生成装置は、業務システムの関連図の仕様書フレームを、生成済みの業務構造図および管理対象図をもとにして自動生成する技術が開示されている。
【0007】
ところで、再利用性の高いプログラムを開発する手法の一つとして、アプリケーション・アーキテクチャの採用が挙げられる。アプリケーション・アーキテクチャとは、アプリケーションの構造を抽象的に表したもので、アプリケーション全体における各要素の役割分担を明確にするものである。
【0008】
アプリケーションの各要素の役割分担が明確になると、各要素の組み合わせが容易にできるようになり、また、要素ごとの設計・開発作業の分担や、要素の再利用までもが可能になる。
【0009】
代表的なアプリケーション・アーキテクチャの一つにMVCモデルがある。このMVCモデルは、アプリケーションをModel(ロジック)、View(プレゼンテーション)、Controller(通信、制御)の三つの要素に分類したアーキテクチャであり、特にGUI(グラフィカル・設計者・インタフェース)を通じて設計者との対話環境を実現するアプリケーションを開発する場合に適するものである。
【0010】
例えばオブジェクト指向型のアプリケーションソフトウェアを実際に開発する実装段階では、細分化したクラス群を、上記MVCモデルのいずれかの要素に分類することになる。
【0011】
この分類作業は、ソフトウェア開発者自身が独自の判断で行うため、同一あるいは類似するプログラムであっても人によって分類が異なる場合もある。この場合、類似するソフトウェアを同じ区分で管理することができなくなり、再利用性が低下する。
【0012】
一方、アプリケーション・アーキテクチャの要素区分を細かくすればするほど、同じ区分内のソフトウェア同士の類似性が向上し、ソフトウェアの再利用性が高まるものの、細かな一つ一つのクラスを細かく分類された要素に分類するための分類作業がソフトウェア開発者の負担になり、作業効率が低下するという問題がある。また、あまり細かな要素区分ではアプリケーション・アーキテクチャとしての汎用性が低下するという問題も生じてくる。
【0013】
【発明が解決しようとする課題】
本発明者らは、MVCで分類されているクラス群をDESeRVで分類または分割し直すことで、アプリケーション・アーキテクチャの汎用性とプログラムの再利用性とを両立させる仕組みを検討している。すなわち、DESeRVモデルでは、モデル(M)を一時的データであるデータセットおよび永続的データであるエンティティ(DE)へ、ビュー(V)をプレゼンテーションの機能をするビューへ(V)、コントローラ(C)を業務処理の機能をするサービス(Se)およびイベントハンドラの機能をするリクエストハンドラ(R)へ分類する。
【0014】
しかしながら、アプリケーション・アーキテクチャの要素区分をMVCモデル、DESeRVモデルのような一定のルールに従ってクラス分類し、これによって得たクラス間の関連を所定の関連付けルールに従って自動生成するようにした場合、不要な関連付けも付与されてしまい、このクラス間の不要な関連付けによってソフトウェアの再利用性の劣化するおそれがあった。そこで、自動生成されたクラス間の関連情報を人間が検証する必要がある。しかし、人間による検証では精度的、効率的に限界があり、均質なソフトウェア設計情報を得ることが困難であるという課題があった。
【0015】
そして、このような課題やこの課題を解決するための手段について、上記の特許文献1、特許文献2には何ら記載されていない。
【0016】
本発明はこのような課題を解決するためになされたもので、モデル分類されたクラスの関連付けを精度良く検証することができ、設計者に拠らない均質なソフトウェア設計情報を得ることのできるソフトウェア開発支援装置とコンピュータプログラムの提供を目的とする。
【0017】
【課題を解決するための手段】
上記した目的を達成するために、本発明のソフトウェア開発支援装置は、モデル分類されたクラスごとの設計情報であるクラス情報と前記クラス間の関連を表すクラス間関連情報とが記憶される設計情報記憶手段と、前記クラス間の相互作用のパターンを表す相互作用パターン情報が記憶される相互作用パターン記憶手段と、前記設計情報記憶手段の中から任意のクラス間関連情報とクラス情報を指定させるとともに前記相互作用パターン記憶手段の中から任意の相互作用パターン情報を指定させ、前記指定されたクラス間関連情報とクラス情報から前記指定された相互作用パターン情報のパターンを満たすクラスとメソッドを抽出してクラス間相互作用情報を生成するクラス間相互作用生成手段とを具備することを特徴とする。
【0018】
この発明は、過去の設計事例から抽出した相互作用パターンに則って生成されたクラス間相互作用情報を設計者が参照しながら、MVCモデルやDESeRVモデルなどのモデルに分類されたクラス間の関連付けを精度良く検証することができ、設計者に拠らない均質なソフトウェア設計情報が得られる。
【0019】
また、本発明のソフトウェア開発支援装置は、上記の構成に加えて、前記クラス間相互作用生成手段により生成された前記クラス間相互作用情報に基づいてクラス間関連情報を生成するクラス間関連情報生成手段と、クラス間関連情報生成手段により生成されたクラス間関連情報と前記設計情報記憶手段に記憶されているクラス間関連情報とを比較して相違点を抽出し、その相違点に対して指定された処理を、前記設計情報記憶手段に記憶されているクラス間関連情報に対して実施するクラス間関連情報比較手段とをさらに具備するものである。
【0020】
この発明では、クラス間相互作用情報から、設計情報記憶手段に記憶されているクラス間関連情報と比較可能なクラス間関連情報を生成する。各々のクラス間関連情報を比較して得られた相違点に対して設計者により指定された処理を、設計情報記憶手段にソフトウェア設計情報として記憶されているクラス間関連情報に対して実施する。これによって、モデル分類されたクラス間の関連情報を精度良く検証することができ、設計者に拠らない均質なクラス間関連情報が得られる。
【0021】
さらに、本発明のソフトウェア開発支援装置は、上記の構成に加えて、前記設計情報記憶手段に記憶されたクラス情報およびクラス間関連情報から、前記ソフトウェア設計情報の分類モデルごとの図表を生成する図表化手段をさらに具備するものである。
【0022】
この発明によれば、ソフトウェア設計情報の検証に用いることのできる、ソフトウェア設計情報の分類モデルごとの図表が容易に得られ、検証の効率および精度を向上できる。
【0023】
さらに、このソフトウェア開発支援装置は、上記の構成に加えて、MVC(モデル・ビュー・コントローラ)のモデルで分類された前記クラスのうちのM(モデル)を一時的データであるD(データセット)と永続的データであるE(エンティティ)とに分類するとともに、前記MVCのモデルで分類された前記クラスのうちのV(ビュー)をV(ビュー)として、かつC(コントローラ)を業務処理の機能をするS(サービス)とイベントハンドラの機能をするR(リクエストハンドラ)とに分類し、この分類された各クラスに関する情報をクラス情報として前記設計情報記憶手段に記憶させる分類手段と、前記分類手段により分類された各クラスを分類元の各クラスの関連付けに基づいて関連付け、この関連付けの結果をクラス間関連情報として前記設計情報記憶手段に記憶させるクラス関連付け手段とをさらに有するものであってよい。
【0024】
この発明によれば、MVCのモデルのクラスの設計情報をDESeRVモデルのクラスの設計情報に変換して、この変換されたDESeRVモデルのクラスの設計情報の検証を精度良く行うことが可能になる。
【0025】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【0026】
(第1の実施形態)
本発明の第1の実施形態に係るソフトウェア開発支援装置は、たとえばパーソナルコンピュータ、ワークステーション、汎用コンピュータなどのコンピュータを用いて実現される。
【0027】
コンピュータは、CPU(Central Processing Unit)、ROM(Read Only Memory)、主記憶であるRAM(Random Access Memory)、入力デバイス、表示デバイス、インターフェース、ストレージデバイス、通信デバイス、システムバスを備えて構成される。
【0028】
なお、以下述べる「手段」や「機構」と呼ぶものは、このコンピュータ上においてプログラムによって実現される機能を指す。「データベース」と呼ぶものはたとえばコンピュータ上においてプログラムを実行することでストレージデバイスやRAMなどの記憶装置を用いて実現される機能を指す。
【0029】
図1に、このコンピュータを用いて実現された本発明の第1の実施形態であるソフトウェア開発支援装置101の構成を示す。
【0030】
同図に示すように、このソフトウェア開発支援装置101は、入力制御手段21、出力制御手段22、設計支援機構23、MVCあるいはDESeRVモデルの設計情報データベース24、相互作用パターン情報データベース25、相互作用パターン情報登録管理手段29、表示テンプレートデータベース30、および表示テンプレート登録管理手段31を備える。
【0031】
入力制御手段21は、設計者であるユーザ26からの入力を取得し、設計支援機構23の制御手段27に引き渡す手段である。
【0032】
出力制御手段22は、設計支援機構23の制御手段27からの情報をユーザ26に出力情報として引き渡す手段である。
【0033】
設計支援機構23は、入力制御手段21から入力情報を受け取り、クラス間相互作用情報を生成し、設計情報データベース24へ蓄積する機構である。設計支援機構23は、生成したクラス間相互作用情報などを必要に応じて出力制御手段22へ引き渡す。設計支援機構23は詳細には制御手段27、クラス間相互作用生成手段28、クラス間関連生成手段36、クラス間関連比較手段37、図表化手段40を有している。
【0034】
クラス間相互作用生成手段28は、ユーザ26により指定されたクラス情報、クラス間関連情報および相互作用パターン情報から、シーケンス図からなるクラス間相互作用情報の自動生成を行う。クラス間相互作用生成手段28は、それらのクラス情報、クラス間関連情報および相互作用パターン情報をユーザ26に入力制御手段21を通じて指定させる機能を備える。
【0035】
制御手段27は、入力制御手段21やクラス間相互作用生成手段28からの入力情報を受け取り、ステータスに応じて他の手段に情報を引き渡す。また、必要に応じて各手段で生成された情報を受け取り、出力制御手段22を通じてユーザ26に引き渡す。
【0036】
クラス間関連生成手段36は、クラス間相互作用生成手段28により生成されたクラス間相互作用情報に基づいてクラス間関連情報を自動生成する手段である。
【0037】
クラス間関連比較手段37は、クラス関連付け手段34により生成され、設計情報データベース24に記憶されているクラス間関連情報とクラス間関連生成手段36により生成されたクラス間関連情報とを比較して相違点を抽出し、その相違点に対して指定された処理を設計情報データベース24に記憶されているクラス間関連情報に対して実施する手段である。
【0038】
図表化手段40は、ユーザ26により選択されたクラス情報、クラス間関連情報および表示テンプレートから、設計情報の分類モデルごとの図表(仕様書)を自動生成する手段である。生成された図表(仕様書)はたとえばファイルとしてストレージデバイスに保存したり、表示デバイスに表示させることができる。
【0039】
設計情報データベース24は、たとえばMVCモデルあるいはDESeRVモデルなどのクラスの設計情報として、クラス間関連情報、クラス情報、クラス間相互作用情報が蓄積されるデータベースである。
【0040】
クラス間関連情報は、クラス間における関連の有無、および関連がある場合にはその種別を表す情報である。
【0041】
クラス情報は、クラスが属する分類、クラス名、属性名、操作名、属性及び操作の型や引数、説明に関する情報をクラス単位に記述した情報である。
【0042】
クラス間相互作用情報は、クラス間の相互作用を表す情報であり、対応する相互作用パターン情報、オブジェクトに対応するクラス名、メッセージ名などからなる。
【0043】
相互作用パターン情報データベース25は、過去の設計事例から抽出した相互作用パターン情報を蓄積するデータベースである。相互作用パターンは、オブジェクト間の一続きのシーケンスを、各オブジェクトが属する分類とメッセージの送付元及び送付先ならびに送付順について整理したものである。
【0044】
相互作用パターン情報登録管理手段29は、相互作用パターン情報データベース25への相互作用パターン情報の登録・管理を行うものである。
【0045】
表示テンプレートデータベース30は、設計情報を分類モデルごとに図表化するための記述の雛型として用いられる表示テンプレートが蓄積されるデータベースである。
【0046】
表示テンプレート登録管理手段31は、表示テンプレートデータベース30への表示テンプレートの登録・管理を行う手段である。
【0047】
次に、このソフトウェア開発支援装置101の動作を説明する。
【0048】
図2から図5にMVCモデルのクラス間関連情報55、クラス情報56、相互作用パターン情報58、クラス間相互作用情報57の例を示し、図6から図9にはDESeRVモデルのクラス間関連情報55、クラス情報56、相互作用パターン情報58、クラス間相互作用情報57の例を示す。
【0049】
まず、クラス間相互作用生成手段28は、クラス間相互作用情報57の自動生成のための条件となるクラス間関連情報55、クラス情報56、および相互作用パターン情報58をユーザ26に指定させる。これは、たとえばクラス間相互作用情報57の自動生成のための条件をユーザ26に指定させるためのフォームを表示装置に表示させ、そのフォームに入力された情報を入力制御手段21を通じて取り込むことなどによって行われる。
【0050】
次に、クラス間相互作用生成手段28は、ユーザ26によって指定されたクラス情報56およびクラス間関連情報55に、相互作用パターン情報58の相互作用パターンを満たすものがあるか調べる。
【0051】
相互作用パターンを満たすものとは、以下の2つの条件を満足するクラスおよびメソッドのことである。
【0052】
条件1:クラス情報56およびクラス間関連情報55から抽出できるクラスの組に相互作用パターンの関連に対応する関連が存在する。
【0053】
条件2:条件1で抽出したクラスの組における各クラスに相互作用パターンに対応するメソッドがある。
【0054】
(条件1について)
オブジェクト指向での一般的なルールによれば、相互作用パターンにおいてメッセージのやりとりがあるオブジェクト(クラス)間には関連が存在するということができる。
【0055】
たとえば、DESeRVモデルを用いた場合で、図10に示す相互作用パターン58が指定されているものとし、その中の一部59を取り上げて考える。この相互作用パターンの部分59では「R_1」のクラスから「D_1」のクラスにメッセージが送られている。このメッセージを送るためにはオブジェクト指向の一般的にルールに則ると、「R_1」と「D_1」のクラス間に関連が存在する必要がある。これを条件aとする。
【0056】
次に、指定されているクラス間関連情報55から条件aを満たすクラスの組を抽出する。図11に、抽出したクラスの関連図46とそのデータ構造47の例を示す。ここで関連のあるクラス同士は線で結ばれている。ここでは「データセットa」のクラスと「Aハンドラ」のクラスとの間には関連があるが、「データセットb」のクラスと「Aハンドラ」のクラスとの間には関連がないことを示している。したがって、条件aを満たすクラスの組は「R_1:Aハンドラ、D_1:データセットa」となる。
【0057】
なお、クラスの組は複数あってもかまわない。たとえば「Aハンドラ」のクラスと「データセットb」のクラスとの間に関連が存在する場合には、条件aを満たすクラスの組は「R_1:Aハンドラ、D_1:データセットa」と「R_1:Aハンドラ、D_1:データセットb」となる。
【0058】
同様の判断を図10に示す相互作用パターンに現れる各クラスに対して実行して行くと、条件aを満たすクラスの組として、結果的に以下のものを取得することができる。
【0059】
「V_1:画面X、R_1:Aハンドラ、D_1:データセットa、Se_1:サービス▲1▼、…、V_2:画面Y」
【0060】
(条件2について)
続いて、抽出した組の各クラスに相互作用パターンに対応するメソッドがあるかどうかを判定する。
【0061】
オブジェクト指向での一般的なルールによれば、図10に示す一部の相互作用パターン59の場合では、メッセージの受け手である「D_1」クラスに「(2)」に相当するメソッドが存在する必要がある。
【0062】
このメソッドが存在していれば、条件aを満たすクラスの組として判定されたものに当該メソッドを加え、これをクラス間相互作用情報57の候補とする。メソッドが存在していなければ、条件aを満たすものとして判定されていたクラスの組を候補から削除する。
【0063】
例として、先ほど抽出したクラスの組では「D_1」クラスに相当するのは「データセットa」クラスであった。そこで、クラス情報56を調べ、「データセットa」クラスに「(2)」に相当するメソッドが存在するかどうかを調べる。ここで「データセットa」が図12に示すように定義されているとすると、「(2)」に相当するメソッドとして「操作1」「操作2」の2つが考えられる。
したがって、クラス間相互作用情報57の候補は以下のものになる。
「V_1:画面X、R_1:Aハンドラ、D_1:データセットa、Se_1:サービス▲1▼、…、V_2:画面Y、…、(2):操作1、…」
「V_1:画面X、R_1:Aハンドラ、D_1:データセットa、Se_1:サービス▲1▼、…、V_2:画面Y、…、(2):操作2、…」
【0064】
なお、ここまでの説明では、クラス間相互作用情報57の候補は一つであったが、クラス間相互作用情報57の候補が複数ある場合には「(2)」に対応するメソッドが2つあるため、抽出されているクラス間相互作用情報57の候補のすべてに対して「操作1」「操作2」の場合を追加する。したがって、クラス間相互作用情報57の候補の数は「(2)」について検討する前の2倍となる。
【0065】
同様に、対応するメソッドの有無を相互作用パターンに存在するすべてのメソッドに対して確認して行き、最終的に得られたクラスとメソッドとの組を、最終的に生成されたクラス間相互作用情報57とする。
【0066】
なお、前記の説明では、全オブジェクト(クラス)について条件1をチェックした後、条件2をチェックするという手順を述べたが、個々のオブジェクト(クラス)毎に条件1のチェックと条件2のチェックを繰り返してもよい。
【0067】
このように、クラス間相互作用生成手段28は、クラス情報56とクラス間関連情報55に相互作用パターンを満たすクラスとメソッドを抽出する。これにより、たとえば図7あるいは図11に示すようなシーケンス図からなるクラス間相互作用情報57が得られ、設計情報データベース24に蓄積される。
【0068】
このように、この実施形態のソフトウェア開発支援装置101では、過去の設計事例から抽出した相互作用パターンに則って作成されたクラス間相互作用情報57を設計者(ユーザ26)が参照して、MVCモデルやDESeRVモデルのクラスの関連付けを精度良く検証することができ、設計者に拠らない均質な設計情報が得られる。
【0069】
次に、このソフトウェア開発支援装置101におけるクラス間関連生成手段36およびクラス間関連比較手段37の動作について説明する。
【0070】
クラス間関連生成手段36は、クラス間相互作用生成手段28により生成されたクラス間相互作用情報57に基づいてクラス間関連情報55’を生成する。
【0071】
図27に、DESeRVモデルのクラス間相互作用情報57からクラス間関連生成手段36によって自動生成されたクラス間関連情報55’の例を示す。このように、クラス間相互作用情報57においてメッセージのやりとりが存在するオブジェクトの属するクラス間には関連が存在する、というルールに従って、クラス間関連情報55’の自動生成が行われる。
【0072】
この後、クラス間関連比較手段37は、クラス間関連生成手段36により生成されたクラス間関連情報55’と、設計情報データベース24に格納されている対応するクラス間関連情報55とを比較して異なる点を抽出する。
【0073】
図28に、上記2つのクラス間関連情報55、55’の例を示す。この例での相違点は、図中(a)に示すクラス間関連情報55には無かった各種情報紹介ハンドラと残高紹介画面との関連が図中(b)に示すクラス間関連情報55’に存在している点と、図中(a)に示すクラス間関連情報55には存在する残高検索条件入力データと残高紹介画面との関連が図中(b)に示すクラス間関連情報55’に存在しない点の2点である。
【0074】
このように双方のクラス間関連情報55、55’に相違点がある場合、クラス間関連比較手段37は、その相違点に対してユーザ26により指定された処理を、設計情報データベース24に格納されている対応するクラス間関連情報55に対して実施する。たとえば、(a)のクラス間関連情報55の内容で統一したり、(b)のクラス間関連情報55’の内容で統一する、といった事項をユーザ26が事前にあるいは相違点が確認された時点で指定し、クラス間関連比較手段37がこの指定に従って、設計情報データベース24に格納されているクラス間関連情報55に対する処理を実施する。
【0075】
これによって、設計情報データベース24に設計情報として格納されているクラス間関連情報55についての検証の精度が向上するとともに、設計者(ユーザ26)に拠らない均質な設計情報が得られる。
【0076】
次に、このソフトウェア開発支援装置101の図表化手段40の動作について説明する。
【0077】
図表化手段40は、DESeRV設計情報データベース24Bの中からユーザ26により選択されたクラス情報56、クラス間関連情報55およびクラス間相互作用情報57と、表示テンプレートデータベース30の中からユーザ26により選択された表示テンプレートとに基づいて設計モデルごとの構成要素情報の図表(仕様書)を生成する。
【0078】
図29から図33に、DESeRVモデルの各設計モデルの構成要素情報の図表の例を示す。ここで、図29はビューVの画面一覧表、図30はサービスSeの一覧表、図31はリクエストハンドラRの一覧表、図32はエンティティEの一覧表、図33はデータセットDの一覧表の例である。
【0079】
制御手段27は、このように生成された設計モデルごとの構成要素情報の図表を出力制御手段22を通じてユーザ26に出力する。たとえば表示デバイスに表示してユーザ26に掲示する。
【0080】
ユーザ26は表示された設計モデルごとの構成要素情報の図表に対して検証を行い、修正すべき箇所があれば、入力デバイスを使って修正内容を入力する。制御手段27は入力された変更を、DESeRV設計情報データベース24Bに登録されているクラス情報56、クラス間関連情報55、クラス間相互作用情報57に反映する。
【0081】
このように本実施形態によれば、ソフトウェア開発における設計モデルごとの構成要素情報の図表(仕様書)を自動生成してユーザ26に掲示することで、設計情報の検証、修正作業の容易化、精度向上を図ることができる。
【0082】
(第2の実施形態)
次に、本発明の第2の実施形態であるソフトウェア開発支援装置を説明する。
【0083】
図13に、この第2の実施形態であるソフトウェア開発支援装置102の構成を示す。
【0084】
同図に示すように、このソフトウェア開発支援装置102は、入力制御手段21と、出力制御手段22、設計支援機構23、クラス分類の対象となるMVCモデルで分類されたクラスによる設計情報が蓄積されるMVC設計情報データベース24A、MVCモデルのクラスをDESeRVモデルのクラスに分類した結果が蓄積されるDESeRV設計情報データベース24B、相互作用パターン情報データベース25、相互作用パターン情報登録管理手段29、表示テンプレートデータベース30、表示テンプレート登録管理手段31とを備える。
【0085】
入力制御手段21は、ユーザ26からの入力情報を取得し、設計支援機構23の制御手段27に引き渡す手段である。
【0086】
出力制御手段22は、設計支援機構23の制御手段27からの情報をユーザ26に出力情報として引き渡す手段である。
【0087】
設計支援機構23は、MVCモデルで分類されたクラスをDESeRVのクラスに分類し直すための手段として、クラス取込手段32、クラス分類手段33、クラス関連付け手段34、クラス識別手段35を有し、さらに、制御手段27、クラス間相互作用生成手段28、クラス間関連生成手段36、クラス間関連比較手段37、図表化手段40を有している。
【0088】
クラス取込手段32は、たとえば記憶媒体読み書き装置によって着脱自在な記憶媒体から読み込まれたMVCモデルのクラスの設計情報をMVC設計情報データベース24Aに保存する手段である。
【0089】
クラス分類手段33は、MVCモデルのクラスの設計情報に含まれるクラスをDESeRVモデルのクラスに分類する手段である。
【0090】
クラス関連付け手段34は、MVCモデルのクラスの設計情報から関連付け情報を抽出し、これをDESeRVモデルのクラスの設計情報に反映させる手段である。
【0091】
クラス識別手段35は、MVCモデルのクラスの設計情報からクラス識別子を抽出して、DESeRVモデルのクラスの設計情報に反映させる手段である。
【0092】
DESeRVモデルのクラスに分類された設計情報はDESeRV設計情報データベース24Bに格納される。
【0093】
クラス間相互作用生成手段28は、ユーザ26により指定されたクラス情報、クラス間関連情報および相互作用パターン情報からクラス間相互作用情報の自動生成を行う。クラス間相互作用生成手段28は、それらのクラス情報、クラス間関連情報および相互作用パターン情報をユーザ26に入力制御手段21を通じて指定させる機能を備える。
【0094】
クラス間関連生成手段36は、クラス間相互作用生成手段28により生成されたクラス間相互作用情報に基づいてクラス間関連情報を自動生成する手段である。
【0095】
クラス間関連比較手段37は、クラス関連付け手段34により生成され、DESeRV設計情報データベース24Bに記憶されているクラス間関連情報とクラス間関連生成手段36により生成されたクラス間関連情報とを比較して相違点を抽出し、その相違点に対して指定された処理を、DESeRV設計情報データベース24Bに記憶されているクラス間関連情報に対して実施する手段である。
【0096】
図表化手段40は、ユーザ26により選択されたクラス情報、クラス間関連情報および表示テンプレートから、設計情報の分類モデルごとの図表(仕様書)を自動生成する手段である。生成された図表(仕様書)はたとえばファイルとしてストレージデバイスに保存したり、表示デバイスに表示させることができる。
【0097】
MVC設計情報データベース24Aは、MVCモデルのクラスの設計情報として、クラス間関連情報、クラス情報、クラス間相互作用情報が蓄積されるデータベースである。
【0098】
DESeRV設計情報データベース24Bは、DESeRVモデルのクラスの設計情報として、クラス間関連情報、クラス情報、クラス間相互作用情報が蓄積されるデータベースである。
【0099】
クラス間関連情報は、クラス間における関連の有無、および関連がある場合にはその種別を表す情報である。
【0100】
クラス情報は、クラスが属する分類、クラス名、属性名、操作名、属性及び操作の型や引数、説明に関する情報をクラス単位に記述したものである。
【0101】
クラス間相互作用情報は、クラス間相互作用を表す情報であり、対応する相互作用パターン情報、オブジェクトに対応するクラス名、メッセージ名からなる。相互作用パターン情報データベース25は、過去の設計事例から抽出した相互作用パターン情報を蓄積するデータベースである。相互作用パターンとは、オブジェクト間の一続きのシーケンスを、各オブジェクトが属する分類とメッセージの送付元及び送付先ならびに送付順について整理したものである。
【0102】
相互作用パターン情報登録管理手段29は、相互作用パターン情報データベース25への相互作用パターン情報の登録・管理を行うものである。
【0103】
表示テンプレートデータベース30は、設計情報を分類モデルごとに図表化するための記述の雛型として用いられる表示テンプレートが蓄積されるデータベースである。
【0104】
表示テンプレート登録管理手段31は、表示テンプレートデータベース30への表示テンプレートの登録・管理を行う手段である。
【0105】
次に、MVCモデルの3つのクラス分類をDESeRVモデルの5つのクラス分類に変換する動作を説明する。
【0106】
図14はMVCモデルによるクラス図とDESeRVモデルによるクラス図との関係を示す図である。
【0107】
同図に示すように、MVCモデルは、ソフトウェアのロジックを担当するモデルM、ソフトウェアの通信・制御を担当するコントローラC、およびソフトウェアのプレゼンテーションを担当するビューVなどにクラスを分類したものである。
【0108】
これに対してDESeRVモデルは、データセットD、エンティティE、サービスS、リクエストハンドラR、およびビューVにクラス分類したものである。すなわち、MVCのモデルMは、一時的なデータであるデータセットDと、永続的なデータであるエンティティEとの2つのクラスに分類される(図中矢印▲1▼)。このような小分類にすると、データ特性ごとに別個のクラスとなるため、ソフトウェア開発における要素の再利用性を高めることができる。
【0109】
MVCのコントローラCは、このコントローラCの機能から業務処理を抽出したサービスSと、同じくイベント受信処理を抽出したリクエストハンドラRとの2つのクラスに分類される(図中矢印▲2▼)。このような小分類にすると、制御の機能によって別個のクラスとなるため、ソフトウェア開発における要素の再利用性を高めることができる。
【0110】
ビューVは、小さく分類せずにそのままビューVとして1つのクラスを維持する。なお、GUIに特化したソフトウェアを開発する場合は、見た目に関するオブジェクトが多く複雑になるため、ビューVを2以上のクラスに分類してもよい。
【0111】
なお、本実施形態のモデルでは、5つのクラスに分類しているが、新たな機能に対応させて6以上のクラスに細分化することも可能である。ただし、ソフトウェア開発の効率を考えた場合、クラスをあまり細分化しすぎると、分類作業自体に労力がかかってしまい、よい結果が得られないこともある。
【0112】
次に、図15および図16を参照してクラスの小分類化について具体的に説明する。
【0113】
図15は例えば銀行顧客管理システムなどを開発するにあたり、MVCモデルに従い分類したクラスの一例を示す図、図16は図15をDESeRVモデルに従い再分類したクラスの一例を示す図である。
【0114】
銀行顧客管理システムを開発する場合に、同システムをMVCモデルに従って分類すると、図15に示すように、顧客管理データ41と、顧客データを制御する顧客管理制御42と、顧客データを表示する顧客管理画面43の3つのクラスに分類される。すなわち、顧客管理データはMVCモデルにおけるモデルMに分類され、顧客管理制御42はコントローラCに分類され、顧客管理画面43はビューVに分類される。
【0115】
顧客管理データ41のクラスは属性38と操作39とに区分されている。属性38は、ID、氏名および連絡先などの要素を有している。操作39は、データ取得およびデータ設定などの要素を有している。
【0116】
顧客管理制御42のクラスは操作39のみに区分されている。操作39は、入力、登録、検索および削除などの要素を有している。
【0117】
顧客管理画面43のクラスは、操作39のみに区分されている。操作39は、Open、CloseおよびUpdateなどの要素を有している。
【0118】
この銀行顧客管理システムのクラスをDESeRVで再分類した場合、図16に示すように、MVCモデルにおけるモデルMに属する顧客管理データ41は、データセットDに属する顧客検索条件データ44、顧客登録内容データ45、銀行員検索条件データ46、銀行員登録内容データ47、管理者検索条件データ48および管理者登録内容データ49の6つのクラスと、データセットに属する顧客マスタエンティティ50、管理者マスタエンティティ51および銀行員マスタエンティティ52の3つのクラスに分類される。
【0119】
また、MVCモデルにおけるコントローラに属する顧客管理制御42は、サービスに属する顧客管理サービス53と、リクエストハンドラに属する顧客管理ハンドラ54の2つのクラスに分類される。
【0120】
ただし、MVCモデルにおけるビューに属する顧客管理画面43は、1対1に分類され、そのまま顧客管理画面43のクラスとなる。これは前述の最適化を考慮したものである。
【0121】
次に、この第2の実施形態であるソフトウェア開発支援装置102においてMVCモデルからDESeRVモデルへのクラス変換を行うときの動作を説明する。
【0122】
図17は、このMVCモデルからDESeRVモデルへのクラス変換処理の流れを示すフローチャートである。
【0123】
ユーザ26によるキーボードまたはマウスからの変換処理開始の指示を入力制御手段21を介して制御手段27が受け取ると、制御手段27は、クラス取込手段32に処理開始を指示する。
【0124】
制御手段27からの指示により、クラス取込手段32は、クラス取込処理を実行する(ステップS61(以下S61と称する。))。
【0125】
クラス取込処理が終了すると、制御手段27は、クラス分類全てが分類されたか否かの判断を行う(S62)。
【0126】
全ての分類が終了した場合(S62のYES)、制御手段27は変換処理を終了する。全ての分類が終了していない場合(S62のNO)、制御手段27はクラス分類手段33へ処理を指示する(S63)。
【0127】
クラス分類手段33は、この指示にしたがってクラス分類処理を実行し、MVC設計情報データベース24Aに記憶されているMVCモデルのクラスの設計情報のクラスのうち、モデルを一時的データであるデータセットおよび永続的データであるデータセットへ、ビューをプレゼンテーションの機能をするビューへ、コントローラを業務処理の機能をするサービスおよびイベントハンドラの機能をするリクエストハンドラへ分類してDESeRVモデルのクラスの設計情報を生成する(S63)。
【0128】
クラス分類処理が終了すると、制御手段27は、DESeRVモデルのクラスの設計情報に新規クラスが追加されているか否かの判定を行う(S64)。
【0129】
この判定の結果、新規クラスが追加されている場合(S64のYES)、制御手段27はクラス識別手段35へ処理を指示する。この指示により、クラス識別手段35は、クラス識別処理を実行する(S65)。
【0130】
クラス識別処理が終了すると、制御手段27は、MVCモデルと5分類モデルの関係から、MVCモデルのクラスの設計情報が有する関連付けをDESeRVモデルのクラスの設計情報に適用できるか否かの判定を行う(S66)。
【0131】
関連付けを適用できる場合(S66のYES)、制御手段27は、クラス関連付け手段34へ処理を指示する。この指示により、クラス関連付け手段34はクラス関連付け処理を実行する(S67)。
【0132】
クラス関連付け処理が終了すると、制御手段27はステップS68の処理を実行する(S68)。
【0133】
すなわち、ステップS64において新規クラスを追加していない場合(S64のNO)、MVCモデルのクラスの設計情報が持っていた関連付けを適用できない場合(S66のNO)およびクラス関連付け処理が終了した場合(S67)、制御手段27は、出力制御手段22を通じて、ユーザ26に対し導出したクラス分類を修正する必要があるか否かの判断を促し、ユーザ26からの指示を待つ(S68)。
【0134】
ユーザ26からの指示が、クラス分類の修正である場合(S68のYES)、制御手段27はクラス識別手段35へ処理を指示する。この指示によりクラス識別手段35はクラス識別処理を実行する(S69)。
【0135】
クラス識別処理が終了するか、あるいは、クラス分類の修正なしの場合(S68のNO)、制御手段27は処理成果物であるDESeRVモデルのクラス設計情報をDESeRV設計情報データベース24Bに蓄積し、ステップS62の処理に戻る(S70)。
【0136】
以上のステップを全て終了すると、全ての変換作業を終えたDESeRVモデルのクラスの設計情報がDESeRV設計情報データベース24Bに格納される。
【0137】
次に、クラス取込手段32によるクラス取込処理について説明する。
【0138】
クラス取込手段32は、制御手段27を介してMVCモデルのクラスの設計情報を記憶媒体から読み込む。
【0139】
クラス取込手段32は、記憶媒体から読み込んだMVCモデルのクラスの設計情報を、MVC設計情報データベース24Aに記憶させる。
【0140】
取り込まれるMVCモデルのクラスの設計情報は、クラス図を構成する要素の情報であり、具体的には、図18に示すように、クラス名、パッケージ、種別、属性、操作、他クラスとの関連などがある。ここでクラス名とは、クラスを識別する名前のことである。パッケージとは、クラスが属するパッケージのことである。種別とは、MVCモデルにおけるモデル、ビュー、コントローラの中のいずれかの分類種別のことである。属性とは、そのクラスが持つデータのことであり、型や可視性などの補足情報も含まれる。操作とは、そのクラスが行う操作のことであり、返り値や引数などの補足情報も含まれる。他クラスとの関連とは、オブジェクト指向プログラミングにおける利用、関係、承継などのことである。
【0141】
記憶媒体から読み込む情報は任意の形式とする。一例としては、例えばXML形式(eXtensible Markup Language)、Rational Rose(登録商標)固有のデータ形式、CSV形式などが考えられる。
【0142】
MVC設計情報データベース24Aに記憶されたMVCモデルのクラスの設計情報は、他の処理において複数回参照されるので、作業が終了するまで初期の内容を維持したまま保存されていることが必要である。クラス取込手段32がMVCモデルのクラスの設計情報をMVC設計情報データベース24Aに記憶させる形式は、記憶媒体に格納されていた形式と必ずしも同一である必要はなく、独自の形式に変換して記憶させてもよい。
【0143】
次に、前記のクラス分類手段33によるクラス分類処理(S63)について説明する。
【0144】
クラス分類手段33は、MVCモデルのクラスの設計情報を、新たな5つの分類からなるDESeRVモデルのクラスの設計情報に小分類化する。
【0145】
すなわち、クラス分類手段33は、制御手段27からの指示を受けると、MVC設計情報データベース24AよりMVCモデルに分類されているクラスの設計情報を取り込み、MVCモデルのクラスの設計情報のうち、コントローラCを、リクエストハンドラRとサービスSとに小分類化する。
【0146】
次に、クラス分類手段33は、取り込んだMVCモデルのクラスの設計情報のうち、モデルMをデータセットDとエンティティEとに小分類化する。
【0147】
さらに、クラス分類手段33は、MVCモデルのクラスの設計情報のうちビューVをそのまま新たな5分類の1つであるビューVとして分類する。
【0148】
最後に、クラス分類手段33は、MVCモデルのクラスの設計情報と、新たに5分類に分類されたDESeRVモデルのクラスの設計情報とを比較して整合性をチェックする。
【0149】
ここで、図19および図20を参照して、コンピュータの画面上での操作に応じて行われるクラス分類処理について説明する。図19はコントローラCのクラス分類処理を実行する際の表示画面の例を示す図、図20はモデルMのクラス分類処理を実行する際の表示画面の例を示す図である。
【0150】
クラス分類処理の際、図19に示すように、モニタ画面110には、コントローラCに属する顧客管理制御42のクラスを示すウィンドウ118aと、コントローラCから小分類化されたサービスSに属する顧客管理サービス53のクラスを示すウィンドウ118b、同じく小分類化されたリクエストハンドラRに属する顧客管理ハンドラ54のクラスを示すウィンドウ118cとが表示される。
【0151】
顧客管理制御42のクラスを示すウィンドウ118aには、操作窓111a、属性窓112a、分類のボタン113aおよび識別子119aなどが表示される。
【0152】
顧客管理サービス53のクラスを示すウィンドウ118bには、操作窓111b、属性窓112b、追加のボタン113bおよび識別子119bなどが表示される。
【0153】
顧客管理ハンドラ54のクラスを示すウィンドウ118cには、操作窓111c、属性窓112c、追加のボタン113cおよび識別子119cなどが表示される。
【0154】
操作窓111aには、顧客管理制御42のクラスにおける操作39の要素である入力114a、登録115aおよび検索116などが表示される。
【0155】
操作窓111bには、顧客管理サービス53のクラスにおける操作39の要素である登録115bなどが表示される。
【0156】
また、操作窓111cには、顧客管理ハンドラ54のクラスにおける操作39の要素である顧客情報入力114cおよび顧客情報管理選択117などが表示される。
【0157】
ユーザ26が、マウスにより顧客管理制御42のクラスにおける操作39の要素である入力114aをクリックし、顧客管理ハンドラ54のクラスにおける操作39の要素へドラッグ&ドロップ操作を行い、キーボードにより名称を変更する操作を行うと、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、入力114aを顧客管理ハンドラ54のクラスにおける操作39の要素へ分類して名称を変更するように指示を出す。そして、制御手段27は、出力制御手段22に対して、入力114aの表示を反転させるとともに、名称が変更された入力114aである顧客情報入力114cを顧客管理ハンドラ54のクラスにおける操作窓111cに表示するように指示する(図中矢印▲1▼)。
【0158】
同様に、ユーザ26が、マウスにより顧客管理制御42のクラスにおける操作39の要素である登録115aをクリックし、顧客管理サービス53のクラスにおける操作39の要素へドラッグ&ドロップ操作を行うと、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、登録115aを顧客管理サービス53のクラスにおける操作39の要素へ分類するように指示を出す。そして、制御手段27は、出力制御手段22に対して、登録115aの表示を反転させるとともに、登録115bを顧客管理サービス53のクラスにおける操作窓111bに表示するように指示する(図中矢印▲2▼)。
【0159】
ユーザ26によりキーボードあるいはマウスが操作されて分類処理終了の指示が行われると、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対してモニタ画面110に表示されたクラス情報56をDESeRVモデルのクラスの設計情報としてDESeRV設計情報データベース24Bに記憶させるように指示を出す。
【0160】
ユーザ26によりマウスにて追加のボタン113bがクリックされ、ユーザ26からサービスに属するクラスを追加する指示が行われると、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、サービスに新たなクラスを追加するように指示する。そして、制御手段27は、出力制御手段22に対し、サービス内に新たなクラスを表すウィンドウ118dを表示するように指示する。これはリクエストハンドラに係る追加指示においても同様である。
【0161】
クラス分類の際、図20に示すように、モニタ画面120には、モデルMに属する顧客管理データ41のクラスを示すウィンドウ128aと、モデルMから小分類化されたデータセットDに属する顧客検索条件データ44のクラスを示すウィンドウ128bと、同じく小分類化されたデータセットDに属する顧客マスタエンティティ50のクラスを示すウィンドウ128cとが表示される。
【0162】
顧客管理データ41のクラスを示すウィンドウ128aには、操作窓121a、属性窓122a、分類のボタン123aおよび識別子129aなどが表示される。
【0163】
顧客検索条件データ44のクラスを示すウィンドウ128bには、操作窓121b、属性窓122b、追加のボタン123bおよび識別子129bなどが表示される。
【0164】
顧客マスタエンティティ50のクラスを示すウィンドウ128cには、操作窓121c、属性窓122c、追加のボタン123cおよび識別子129cなどが表示される。
【0165】
操作窓121aには、顧客管理データ41のクラスにおける操作39の要素であるデータ設定124aおよびデータ取得125aなどが表示される。
【0166】
操作窓122aには、顧客管理データ41のクラスにおける属性38の要素であるID126a、氏名127aおよび連絡先130aなどが表示される。
【0167】
操作窓121cには、顧客マスタエンティティ50のクラスにおける操作39の要素であるデータ設定124cおよびデータ取得125cなどが表示される。また、操作窓122cには、顧客マスタエンティティ50における属性38の要素であるID126c、氏名127cおよびパスワード130cなどが表示される。
【0168】
ユーザ26が、マウスにより顧客管理データ41のクラスにおける操作39の要素であるデータ設定124aおよびデータ取得125aをクリックし、顧客マスタエンティティ50のクラスにおける操作39の要素へドラッグ&ドロップ操作を行うと、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、データ設定124aおよびデータ取得125aを顧客マスタエンティティ50のクラスにおける操作39の要素へ分類するように指示を出す。そして、制御手段27は、出力制御手段22に対して、データ設定124aおよびデータ取得125aの表示を反転させるとともに、データ設定124cおよびデータ取得125cを顧客マスタエンティティ50のクラスにおける操作窓121cに表示するように指示する(図中矢印▲1▼)。
【0169】
同様に、ユーザ26が、マウスにより顧客管理データ41のクラスにおける属性38の要素であるID126aおよび氏名127aをクリックし、顧客マスタエンティティ50のクラスにおける属性38の要素へドラッグ&ドロップ操作を行うと、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、ID126aおよび氏名127aを顧客マスタエンティティ50のクラスにおける属性38の要素へ分類するように指示する。そして、制御手段27は、出力制御手段22に対して、ID126aおよび氏名127aの表示を反転させるとともに、ID126cおよび氏名127cを顧客マスタエンティティ50のクラスにおける属性窓122cに表示するように指示する(図中矢印▲2▼)。
【0170】
ユーザ26によりキーボードあるいはマウスが操作されて分類処理終了の指示が行われると、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対してモニタ画面120に表示されたクラス情報56をDESeRVモデルのクラスの設計情報としてDESeRV設計情報データベース24Bに記憶させるように指示を出す。
【0171】
ユーザ26によりマウスにて追加のボタン123bがクリックされ、ユーザ26からデータセットDに属するクラスを追加する指示が行われると、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、データセットDに新たなクラスを追加するように指示する。そして、制御手段27は、出力制御手段22に対して、データセット内に新たなクラスを表すウィンドウ128dを表示するように指示する。これは、データセットDに係る追加指示においても同様である。
【0172】
また、ユーザ26によりキーボードの操作が操作されて顧客マスタエンティティ50のクラスにおける属性38にパスワード130cの要素を追加する指示が行われると、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、パスワード130cを顧客マスタエンティティ50のクラスにおける属性38に追加するように指示する。そして、制御手段27は、出力制御手段22に対して、パスワード130cを顧客マスタエンティティ50のクラスにおける属性38の属性窓122cに表示するように指示する。
【0173】
次に、図21を参照してクラス関連付け手段34によるクラス関連付け処理(S67)について説明する。
【0174】
クラス関連付け手段34は、MVCモデルのクラスの関連付けを以下のように行う。
【0175】
制御手段27から処理の指示を受けると、クラス関連付け手段34は、MVC設計情報データベース24Aに記憶されているMVCモデルのクラスの設計情報をコンピュータ内のメモリ(RAM)に読み込む(S131)。
【0176】
MVCモデルのクラスの設計情報がメモリ上に読み込まれると、クラス関連付け手段34は、メモリ上のMVCモデルのクラスの設計情報からMVCモデルにおけるクラスの関連付け情報を抽出する(S132)。
【0177】
クラスの関連付け情報を抽出すると、クラス関連付け手段34は、自身にプログラムされている関連付けルールにしたがって抽出した関連付け情報を変換する(S133)。
【0178】
関連付け情報の変換後、新たな関連付けを適用したクラス情報56がモニタに表示される(S134)。
【0179】
ユーザ26によってキーボードまたはマウスなどから修正指示が行われた場合(S135のYES)、クラス関連付け手段34は、その修正指示を入力制御手段21および制御手段27を介して修正情報として受け取り、メモリ上の該当関連付け情報を修正する(S136)。
【0180】
また、ユーザ26によりキーボードまたはマウスなどから処理続行が指示された場合(S135のNO)、および上記メモリ上の関連付け情報が修正された場合(S136)、クラス関連付け手段34は、メモリ上の関連付け情報をDESeRVモデルのクラスの設計情報に適用してDESeRV設計情報データベース24Bに記憶させる(S137)。
【0181】
ここで、図22を参照してクラス関連付け手段34に定義されている関連付けルールについて説明する。
【0182】
関連付けルールは、MVCモデルにおける各クラス間の関連と、DESeRVモデルにおける各クラス間の関連との関係を定義したものである。
【0183】
具体的には、変換元のMVCモデルのMVCモデルのクラスの設計情報のクラスにおいてコントローラCとモデルMが関連付けられていた場合、クラス関連付け手段34は、「関連のあるC、Mから分類したR、D間を関連付ける」というルールを適用し、DESeRVモデルのクラスの設計情報のクラスにおけるリクエストハンドラRとデータセットDを関連付ける(141)。
【0184】
同様に、変換元のMVCモデルのMVCモデルのクラスの設計情報のクラスにおいてコントローラCとモデルMが関連付けられていた場合、クラス関連付け手段34は、「関連のあるC、Mから分類したR、V間を関連付ける」というルールを適用し、DESeRVモデルのクラスの設計情報のクラスにおけるサービスSとエンティティEを関連付ける(143)。MVCモデルのクラスの設計情報のクラスにおいてコントローラCとビューVが関連付けられていた場合も同様である(144)。
【0185】
また、関連付けるべきクラスがリクエストハンドラRとサービスSである場合、クラス関連付け手段34は、「同じCから分類したR、S間を関連付ける」というルールを適用し、DESeRVモデルのクラスの設計情報のクラスにおけるリクエストハンドラRとサービスSを関連付ける(142)。関連付けるべきクラスがリクエストハンドラR同士である場合も同様である(14)。
【0186】
図23は、MVCモデルをDESeRVモデルに変換した状態を示す図である。図24は2つのモデルM1およびモデルM2、1つのコントローラC1および2つのビューV1およびビューV2の各クラスに分類されたMVCモデルの例である。図25は図22に示した関連付けルールを用いて関連付けを行った状態を示す図であり、図26は図25の状態から手動修正を行って不要な関連付けを取り除いた状態を示す図である。
【0187】
図23に示すように、モデルM1、コントローラC1およびビューV1からなる変換元のMVCモデルは、データセットD1〜D3、エンティティE1〜E2、サービスS1、リクエストハンドラR1およびビューV1からなる5分類によるモデルに変換されている。変換前のクラスC1とクラスM1の関連(図中▲1▼)は、変換後のクラスR1とクラスD1〜D3の関連(図中▲2▼〜▲4▼)ならびにクラスS1とクラスE1〜E2の関連(図中▲5▼、▲6▼)に変換されている。すなわち、1つの関連付けが5つの関連付けに変換されている。
【0188】
ここで、変換前のクラスが5つある場合の変換について説明する。図24に示すMVCモデルは、図23に示したMVCモデルよりもクラス間の関連付けの数が多くなっている。そのため、図24のクラス図に図22の関連付けルールを機械的に適用すると、図22に示す関係を有するクラス間全てに関連付けがなされ、変換後のクラス図は図25に示すように各クラスよりの関連付けを示す線が双方に伸びて関連付けが複雑になる。
【0189】
例えば、図24におけるコントローラのクラスC1は、変換の結果、図25に示す3つのサービスのクラスS11、S12、S21と、2つのリクエストハンドラのクラスR1、R2に細分化されている。また、図24におけるビューV1およびV2は、変換の結果、図25においてもそのままビューV1およびV2として維持されている。そして、リクエストハンドラのクラスR1、R2は、ビューのクラスV1、V2とそれぞれ関連付けられている。すなわち、クラスR1、クラスR2、クラスV1およびクラスV2の間で、4つの関連付けが行われたことになる。
【0190】
しかし、ソフトウェアの機能として必要な関連付けは、クラスR1とクラスV1、クラスR2とクラスV2の関連付けのみであり、他の2つの関連付けは本来不要のものである。
【0191】
図25における他のクラスについても同様である。例えば、クラスR1は、クラスS11、クラスS12、クラスS21、クラスD11、クラスD12およびクラスD21とも関連付けられているが、本来リクエストハンドラとして1つの機能だったクラスをクラスR1とクラスR2に分けているのであるから、それぞれに対応するデータセットのクラスおよびサービスのクラスとのみ関連付ければ足りるものである。
【0192】
リクエストハンドラをクラスR1とクラスR2に分類し、ビューをクラスV1とクラスV2に分類したのは、機能ごとに小分類化してソフトウェアの再利用を図るためである。しかし、分類したクラス全てを関連付けるとすると、ソフトウェアの再利用化は図れても、クラス間のやり取りを変換前よりも増やしたことになり、これではソフトウェア開発の難度が以前よりも増してしまうことになる。そこで、このソフトウェア開発支援装置では、関連付けを修正し不要な関連付けを削除するためのエディタの機能を用意している。具体的には、図9および図10に示すようなGUI環境においてマウスなどによりドラッグ&ドロップ操作をすることにより実現される。
【0193】
図26は図25に示したクラス図についてユーザ26が関連付けを修正した状態を示す図である。
【0194】
例えば、図25に示したクラス図でのクラスRとクラスSの関連付けについてみると、クラスR1はクラスS11、クラスS12およびクラスS21の全てと関連付けられていたが、この図26に示すクラス図では、クラスS11およびクラスS12とのみ関連付けられており、3つのクラスS11、S12、S21から2つのクラスS11、S12に整理されていることがわかる。
【0195】
同様に、図25に示すクラス図でのクラスSとクラスEの関連付けについてみると、クラスS11は、クラスE111、クラスE112、クラスE121およびクラスE211の全てと関連付けられていたが、図26に示すクラス図では、クラスE111およびクラスE112とのみ関連付けられており、4つのクラスE111、E112、E121、E211から2つのクラスE111、E112に整理されていることがわかる。
【0196】
次に、図15および図16を参照しながらクラス識別手段35による処理(S65、S69)について説明する。
【0197】
クラス識別手段35は、分類した各クラスに対して、そのクラスがデータセット、エンティティ、サービス、リクエストハンドラおよびビューのいずれに属するかを示す識別子を付ける手段である。
【0198】
例えば、図16のデータセットについてみると、クラス識別手段35は、図15における変換元であるモデルの「<<Model>>」という識別子に基づき、図16におけるデータセットの各クラスに「<<DataSet>>」という識別子を付し、各クラスがデータセットに分類されていることが一目で判別できるようにする。
【0199】
本実施形態では、UML(Unified Modeling Language)の表記であるステレオタイプを活用した識別子と、接尾語を合わせる識別子の2通りを採用している。
【0200】
ステレオタイプを活用した識別子とは、UML表記法に則った識別子であり、図16における「<<Data Set>>」「<<Entity>>」などがこれに該当する。語尾を合わせる識別子は、図16における「○○データ」「○○エンティティ」などがこれに該当する。
【0201】
クラス識別手段35は、MVCモデルと新たな5分類モデルの関係に基づいて、ステレオタイプを活用した識別子を、分類処理がなされた設計情報に対して適用する。例えば、図19において、クラス識別手段35は、顧客管理サービス53のクラスを示すウィンドウ118bに、「<<Service>>」の識別子119bを表示する処理を制御手段27に指示し、また、顧客管理ハンドラ54のクラスを示すウィンドウ118cに、「<<Request handler>>」の識別子119cを表示する処理を制御手段27に指示する。
【0202】
また、クラス識別手段35は、語尾を合わせる識別子についてユーザ26がキーボードなどにより識別子を付す指示を発すると、入力制御手段21を通じて指示内容を受け取り、識別子を表示する処理を制御手段27に指示する。
【0203】
次に、この第2の実施形態であるソフトウェア開発支援装置102においてクラス間関連の検証に係る動作について説明する。
【0204】
まず、クラス間相互作用生成手段28は、前記第1の実施形態と同様に、DESeRV設計情報データベース24Bの中からクラス間相互作用情報57の自動生成のための条件となるクラス間関連情報55およびクラス情報56をユーザ26に指定されるとともに、相互作用パターン情報データベース25の中から任意の相互作用パターン情報58をユーザ26に指定させる。
【0205】
次に、クラス間相互作用生成手段28は、ユーザ26によって指定されたクラス情報56およびクラス間関連情報55に、相互作用パターン情報58の相互作用パターンを満たすものがあるか調べる。相互作用パターンを満たすものが存在する場合は、クラス間相互作用生成手段28は、クラス情報56とクラス間関連情報55から相互作用パターンを満たすクラスとメソッドを抽出し、たとえば図5あるいは図9に示すようなシーケンス図からなるクラス間相互作用情報57を生成し、DESeRV設計情報データベース24Bに蓄積する。
【0206】
クラス間関連生成手段36は、前記のようにしてクラス間相互作用生成手段28により生成されたクラス間相互作用情報57に基づいてクラス間関連情報55’を生成する。
【0207】
図27に、DESeRVモデルのクラス間相互作用情報57からクラス間関連生成手段36によって自動生成されたクラス間関連情報55’の例を示す。このように、クラス間相互作用情報57においてメッセージのやりとりが存在するオブジェクトの属するクラス間には関連が存在する、というルールに従って、クラス間関連情報55’の自動生成が行われる。
【0208】
この後、クラス間関連比較手段37は、クラス間関連生成手段36により生成されたクラス間関連情報55’と、クラス関連付け手段34によって生成され、DESeRV設計情報データベース24Bに格納されている対応するクラス間関連情報55とを比較して異なる点を抽出する。
【0209】
図28に、上記2つのクラス間関連情報55、55’の例を示す。この例での相違点は、図中(a)に示すクラス間関連情報55には無かった各種情報紹介ハンドラと残高紹介画面との関連が図中(b)に示すクラス間関連情報55’に存在している点と、図中(a)に示すクラス間関連情報55には存在する残高検索条件入力データと残高紹介画面との関連が図中(b)に示すクラス間関連情報55’に存在しない点の2点である。
【0210】
このように双方のクラス間関連情報55、55’に相違点がある場合、クラス間関連比較手段37は、その相違点に対してユーザ26により指定された処理を、設計情報データベース24に格納されている対応するクラス間関連情報55に対して実施する。たとえば、(a)のクラス間関連情報55の内容で統一したり、(b)のクラス間関連情報55’の内容で統一する、といった事項をユーザ26が事前にあるいは相違点が確認された時点で指定し、クラス間関連比較手段37がこの指定に従って、DESeRV設計情報データベース24Bに格納されているクラス間関連情報55に対する処理を実施する。
【0211】
これによって、DESeRV設計情報データベース24Bに設計情報として格納されているクラス間関連情報55についての検証の精度が向上するとともに、設計者(ユーザ26)に拠らない均質な設計情報が得られる。
【0212】
次に、このソフトウェア開発支援装置102の図表化手段40の動作について説明する。
【0213】
図表化手段40は、DESeRV設計情報データベース24Bの中からユーザ26により選択されたクラス情報56、クラス間関連情報55およびクラス間相互作用情報57と、表示テンプレートデータベース30の中からユーザ26により選択された表示テンプレートとに基づいて設計モデルごとの構成要素情報の図表(仕様書)を生成する。
【0214】
図29から図33に、DESeRVモデルの各設計モデルごとの構成要素情報の図表の例を示す。ここで、図29はビューVの一覧表、図30はサービスSeの一覧表、図31はリクエストハンドラRの一覧表、図32はエンティティEの一覧表、図33はデータセットDの一覧表の例である。
【0215】
制御手段27は、このように生成された設計モデルごとの構成要素情報の図表を出力制御手段22を通じてユーザ26に出力する。たとえば表示デバイスに表示してユーザ26に掲示する。
【0216】
ユーザ26は表示された設計モデルごとの構成要素情報の図表に対して検証を行い、修正すべき箇所があれば、入力デバイスを使って修正内容を入力する。制御手段27は入力された変更を、DESeRV設計情報データベース24Bに登録されているクラス情報56、クラス間関連情報55、クラス間相互作用情報57に反映する。
【0217】
このように本実施形態によれば、ソフトウェア開発における設計モデルごとの構成要素情報の図表(仕様書)を自動生成してユーザ26に掲示することで、設計情報の検証、修正作業の容易化、精度向上を図ることができる。
【0218】
上記実施形態におけるソフトウェア(プログラム)は、コンピュータが読み出し可能で着脱自在な記憶媒体に記憶されていてもよく、また、ソフトウェア(プログラム)単体として伝送されるものでもよい。この場合、記憶媒体に記憶されたソフトウェア(プログラム)をコンピュータが読み出したり、LANやインターネッ上のサイト(サーバ)からダウンロードしてインストールすることにより、各実施形態における処理が可能になる。
【0219】
つまり、本発明におけるソフトウェア(プログラム)は、コンピュータと独立した記憶媒体に記憶されているものだけに限らず、LANやインターネットなどの伝送媒体を介して流通されるものも含まれる。
【0220】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフトなどのMW(ミドルウェア)などが本実施形態を実現するための各処理の一部を実行してもよい。
【0221】
なお、コンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコンなどの一つからなる装置、複数の装置がネットワーク接続されたシステムなどのいずれの構成であっても良い。
【0222】
【発明の効果】
以上説明したように本発明によれば、MVCモデルやDESeRVモデルなどのモデル分類されたクラス間の関連情報を精度良く検証することができ、設計者に拠らない均質なソフトウェア設計情報が得られる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態であるソフトウェア開発支援装置の構成を示すブロック図である。
【図2】MVCモデルのクラス間関連情報の例を示す図である。
【図3】MVCモデルのクラス情報の例を示す図である。
【図4】MVCモデルの相互作用パターン情報の例を示す図である。
【図5】MVCモデルのクラス間相互作用情報の例を示す図である。
【図6】DESeRVモデルのクラス間関連情報の例を示す図である。
【図7】DESeRVモデルのクラス情報の例を示す図である。
【図8】DESeRVモデルの相互作用パターン情報の例を示す図である。
【図9】DESeRVモデルのクラス間相互作用情報の例を示す図である。
【図10】相互作用パターンの別の例を示す図である。
【図11】クラス間関連情報から抽出したクラスの関連図とそのデータ構造の例を示す図である。
【図12】データセットクラスのクラス情報の例を示す図である。
【図13】本発明の第2の実施形態であるソフトウェア開発支援装置の構成を示すブロック図である。
【図14】MVCモデルによるクラス図とDESeRVモデルによるクラス図との関係を示す図である。
【図15】開発対象システムをMVCモデルに従い分類したクラスの例を示す図である。
【図16】図15のMVCモデルのクラスをDESeRVモデルに従い再分類したクラスの例を示す図である。
【図17】このソフトウェア開発支援装置でのMVCモデルからDESeRVモデルへのクラス変換処理の流れを示すフローチャートである。
【図18】MVCモデルのクラスの設計情報の例を示す図である。
【図19】コントローラのクラス分類処理の際の表示画面の例を示す図である。
【図20】モデルのクラス分類処理の際の表示画面の例を示す図である。
【図21】クラス関連付け手段によるクラス関連付け処理の流れを示すフローチャートである。
【図22】クラス関連付け手段の関連付けルールを示す図である。
【図23】MVCモデルからDESeRVモデルへの変換例を示す図である。
【図24】DESeRVモデルへの変換対象であるMVCモデルの例を示す図である。
【図25】図24の変換対象MVCモデルに対して関連付けルールを用いて関連付けを行った結果を示す図である。
【図26】図25のクラス関連図に対して手動修正を行って不要な関連付けを取り除いた結果を示す図である。
【図27】DESeRVモデルのクラス間相互作用情報からクラス間関連生成手段によって自動生成されたクラス間関連情報の例を示す図である。
【図28】クラス間関連比較手段によって比較される2つのクラス間関連情報の例を示す図である。
【図29】ビューVの一覧表の例を示す図である。
【図30】サービスSeの一覧表の例を示す図である。
【図31】リクエストハンドラRの一覧表の例を示す図である。
【図32】エンティティEの一覧表の一覧表の例を示す図である。
【図33】データセットDの一覧表の例を示す図である。
【符号の説明】
21・・・・入力制御手段、22・・・・出力制御手段、23・・・・設計支援機構、24・・・・設計情報データベース、24A・・・・MVC設計情報データベース、24B・・・・DESeRV設計情報データベース、25・・・・相互作用パターン情報データベース、27・・・・制御手段、28・・・・クラス間相互作用生成手段、30・・・・表示テンプレートデータベース、31・・・・表示テンプレート登録管理手段、32・・・・クラス取込手段、33・・・・クラス分類手段、34・・・・クラス関連付け手段、35・・・・クラス識別手段、36・・・・クラス間関連生成手段、37・・・・クラス間関連比較手段、40・・・・図表化手段、55・・・・クラス間関連情報、56・・・・クラス情報、57・・・・クラス間相互作用情報、58・・・・相互作用パターン情報、101・・・・ソフトウェア開発支援装置、102・・・・ソフトウェア開発支援装置
【発明の属する技術分野】
本発明は、例えばWebアプリケーションソフトウェアなどのソフトウェアを開発するためのソフトウェア開発支援装置とコンピュータプログラムに関するものである。
【0002】
【従来の技術】
オブジェクト指向によるソフトウェア開発においては、プログラムの再利用性を高めてプログラム生成労力を軽減する様々な試みがなされてきた。特に、近年のコンピュータ・ハードウェアの進歩に伴うソフトウェアの肥大化により、その要請は切実なものとなっている。オブジェクト指向によるソフトウェア開発支援装置に関する従来技術には以下の特許文献1、特許文献2がある。
【0003】
【特許文献1】
特開平9−292981号公報
【0004】
特許文献1の発明のオブジェクト指向システム分析設計支援装置は、分析設計対象業務において特定のイベントにより行われる一連の操作内容を記述したシナリオ情報より一連の操作手順を読み込み、読込んだ各操作とエンティティオブジェクトとの使用関係を定義し、定義した各操作のオブジェクトの中からエンティティオブジェクトまたは制御オブジェクトを選出・確定し、確定したオブジェクトを用いてイベントトレース図を生成する技術が開示されている。これにより、より適切なオブジェクトに操作を配分したイベントトレース図を生成できる、としている。
【0005】
【特許文献2】
特開平10−2327704号公報
【0006】
特許文献2の発明のオブジェクト指向仕様書生成装置は、業務システムの関連図の仕様書フレームを、生成済みの業務構造図および管理対象図をもとにして自動生成する技術が開示されている。
【0007】
ところで、再利用性の高いプログラムを開発する手法の一つとして、アプリケーション・アーキテクチャの採用が挙げられる。アプリケーション・アーキテクチャとは、アプリケーションの構造を抽象的に表したもので、アプリケーション全体における各要素の役割分担を明確にするものである。
【0008】
アプリケーションの各要素の役割分担が明確になると、各要素の組み合わせが容易にできるようになり、また、要素ごとの設計・開発作業の分担や、要素の再利用までもが可能になる。
【0009】
代表的なアプリケーション・アーキテクチャの一つにMVCモデルがある。このMVCモデルは、アプリケーションをModel(ロジック)、View(プレゼンテーション)、Controller(通信、制御)の三つの要素に分類したアーキテクチャであり、特にGUI(グラフィカル・設計者・インタフェース)を通じて設計者との対話環境を実現するアプリケーションを開発する場合に適するものである。
【0010】
例えばオブジェクト指向型のアプリケーションソフトウェアを実際に開発する実装段階では、細分化したクラス群を、上記MVCモデルのいずれかの要素に分類することになる。
【0011】
この分類作業は、ソフトウェア開発者自身が独自の判断で行うため、同一あるいは類似するプログラムであっても人によって分類が異なる場合もある。この場合、類似するソフトウェアを同じ区分で管理することができなくなり、再利用性が低下する。
【0012】
一方、アプリケーション・アーキテクチャの要素区分を細かくすればするほど、同じ区分内のソフトウェア同士の類似性が向上し、ソフトウェアの再利用性が高まるものの、細かな一つ一つのクラスを細かく分類された要素に分類するための分類作業がソフトウェア開発者の負担になり、作業効率が低下するという問題がある。また、あまり細かな要素区分ではアプリケーション・アーキテクチャとしての汎用性が低下するという問題も生じてくる。
【0013】
【発明が解決しようとする課題】
本発明者らは、MVCで分類されているクラス群をDESeRVで分類または分割し直すことで、アプリケーション・アーキテクチャの汎用性とプログラムの再利用性とを両立させる仕組みを検討している。すなわち、DESeRVモデルでは、モデル(M)を一時的データであるデータセットおよび永続的データであるエンティティ(DE)へ、ビュー(V)をプレゼンテーションの機能をするビューへ(V)、コントローラ(C)を業務処理の機能をするサービス(Se)およびイベントハンドラの機能をするリクエストハンドラ(R)へ分類する。
【0014】
しかしながら、アプリケーション・アーキテクチャの要素区分をMVCモデル、DESeRVモデルのような一定のルールに従ってクラス分類し、これによって得たクラス間の関連を所定の関連付けルールに従って自動生成するようにした場合、不要な関連付けも付与されてしまい、このクラス間の不要な関連付けによってソフトウェアの再利用性の劣化するおそれがあった。そこで、自動生成されたクラス間の関連情報を人間が検証する必要がある。しかし、人間による検証では精度的、効率的に限界があり、均質なソフトウェア設計情報を得ることが困難であるという課題があった。
【0015】
そして、このような課題やこの課題を解決するための手段について、上記の特許文献1、特許文献2には何ら記載されていない。
【0016】
本発明はこのような課題を解決するためになされたもので、モデル分類されたクラスの関連付けを精度良く検証することができ、設計者に拠らない均質なソフトウェア設計情報を得ることのできるソフトウェア開発支援装置とコンピュータプログラムの提供を目的とする。
【0017】
【課題を解決するための手段】
上記した目的を達成するために、本発明のソフトウェア開発支援装置は、モデル分類されたクラスごとの設計情報であるクラス情報と前記クラス間の関連を表すクラス間関連情報とが記憶される設計情報記憶手段と、前記クラス間の相互作用のパターンを表す相互作用パターン情報が記憶される相互作用パターン記憶手段と、前記設計情報記憶手段の中から任意のクラス間関連情報とクラス情報を指定させるとともに前記相互作用パターン記憶手段の中から任意の相互作用パターン情報を指定させ、前記指定されたクラス間関連情報とクラス情報から前記指定された相互作用パターン情報のパターンを満たすクラスとメソッドを抽出してクラス間相互作用情報を生成するクラス間相互作用生成手段とを具備することを特徴とする。
【0018】
この発明は、過去の設計事例から抽出した相互作用パターンに則って生成されたクラス間相互作用情報を設計者が参照しながら、MVCモデルやDESeRVモデルなどのモデルに分類されたクラス間の関連付けを精度良く検証することができ、設計者に拠らない均質なソフトウェア設計情報が得られる。
【0019】
また、本発明のソフトウェア開発支援装置は、上記の構成に加えて、前記クラス間相互作用生成手段により生成された前記クラス間相互作用情報に基づいてクラス間関連情報を生成するクラス間関連情報生成手段と、クラス間関連情報生成手段により生成されたクラス間関連情報と前記設計情報記憶手段に記憶されているクラス間関連情報とを比較して相違点を抽出し、その相違点に対して指定された処理を、前記設計情報記憶手段に記憶されているクラス間関連情報に対して実施するクラス間関連情報比較手段とをさらに具備するものである。
【0020】
この発明では、クラス間相互作用情報から、設計情報記憶手段に記憶されているクラス間関連情報と比較可能なクラス間関連情報を生成する。各々のクラス間関連情報を比較して得られた相違点に対して設計者により指定された処理を、設計情報記憶手段にソフトウェア設計情報として記憶されているクラス間関連情報に対して実施する。これによって、モデル分類されたクラス間の関連情報を精度良く検証することができ、設計者に拠らない均質なクラス間関連情報が得られる。
【0021】
さらに、本発明のソフトウェア開発支援装置は、上記の構成に加えて、前記設計情報記憶手段に記憶されたクラス情報およびクラス間関連情報から、前記ソフトウェア設計情報の分類モデルごとの図表を生成する図表化手段をさらに具備するものである。
【0022】
この発明によれば、ソフトウェア設計情報の検証に用いることのできる、ソフトウェア設計情報の分類モデルごとの図表が容易に得られ、検証の効率および精度を向上できる。
【0023】
さらに、このソフトウェア開発支援装置は、上記の構成に加えて、MVC(モデル・ビュー・コントローラ)のモデルで分類された前記クラスのうちのM(モデル)を一時的データであるD(データセット)と永続的データであるE(エンティティ)とに分類するとともに、前記MVCのモデルで分類された前記クラスのうちのV(ビュー)をV(ビュー)として、かつC(コントローラ)を業務処理の機能をするS(サービス)とイベントハンドラの機能をするR(リクエストハンドラ)とに分類し、この分類された各クラスに関する情報をクラス情報として前記設計情報記憶手段に記憶させる分類手段と、前記分類手段により分類された各クラスを分類元の各クラスの関連付けに基づいて関連付け、この関連付けの結果をクラス間関連情報として前記設計情報記憶手段に記憶させるクラス関連付け手段とをさらに有するものであってよい。
【0024】
この発明によれば、MVCのモデルのクラスの設計情報をDESeRVモデルのクラスの設計情報に変換して、この変換されたDESeRVモデルのクラスの設計情報の検証を精度良く行うことが可能になる。
【0025】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【0026】
(第1の実施形態)
本発明の第1の実施形態に係るソフトウェア開発支援装置は、たとえばパーソナルコンピュータ、ワークステーション、汎用コンピュータなどのコンピュータを用いて実現される。
【0027】
コンピュータは、CPU(Central Processing Unit)、ROM(Read Only Memory)、主記憶であるRAM(Random Access Memory)、入力デバイス、表示デバイス、インターフェース、ストレージデバイス、通信デバイス、システムバスを備えて構成される。
【0028】
なお、以下述べる「手段」や「機構」と呼ぶものは、このコンピュータ上においてプログラムによって実現される機能を指す。「データベース」と呼ぶものはたとえばコンピュータ上においてプログラムを実行することでストレージデバイスやRAMなどの記憶装置を用いて実現される機能を指す。
【0029】
図1に、このコンピュータを用いて実現された本発明の第1の実施形態であるソフトウェア開発支援装置101の構成を示す。
【0030】
同図に示すように、このソフトウェア開発支援装置101は、入力制御手段21、出力制御手段22、設計支援機構23、MVCあるいはDESeRVモデルの設計情報データベース24、相互作用パターン情報データベース25、相互作用パターン情報登録管理手段29、表示テンプレートデータベース30、および表示テンプレート登録管理手段31を備える。
【0031】
入力制御手段21は、設計者であるユーザ26からの入力を取得し、設計支援機構23の制御手段27に引き渡す手段である。
【0032】
出力制御手段22は、設計支援機構23の制御手段27からの情報をユーザ26に出力情報として引き渡す手段である。
【0033】
設計支援機構23は、入力制御手段21から入力情報を受け取り、クラス間相互作用情報を生成し、設計情報データベース24へ蓄積する機構である。設計支援機構23は、生成したクラス間相互作用情報などを必要に応じて出力制御手段22へ引き渡す。設計支援機構23は詳細には制御手段27、クラス間相互作用生成手段28、クラス間関連生成手段36、クラス間関連比較手段37、図表化手段40を有している。
【0034】
クラス間相互作用生成手段28は、ユーザ26により指定されたクラス情報、クラス間関連情報および相互作用パターン情報から、シーケンス図からなるクラス間相互作用情報の自動生成を行う。クラス間相互作用生成手段28は、それらのクラス情報、クラス間関連情報および相互作用パターン情報をユーザ26に入力制御手段21を通じて指定させる機能を備える。
【0035】
制御手段27は、入力制御手段21やクラス間相互作用生成手段28からの入力情報を受け取り、ステータスに応じて他の手段に情報を引き渡す。また、必要に応じて各手段で生成された情報を受け取り、出力制御手段22を通じてユーザ26に引き渡す。
【0036】
クラス間関連生成手段36は、クラス間相互作用生成手段28により生成されたクラス間相互作用情報に基づいてクラス間関連情報を自動生成する手段である。
【0037】
クラス間関連比較手段37は、クラス関連付け手段34により生成され、設計情報データベース24に記憶されているクラス間関連情報とクラス間関連生成手段36により生成されたクラス間関連情報とを比較して相違点を抽出し、その相違点に対して指定された処理を設計情報データベース24に記憶されているクラス間関連情報に対して実施する手段である。
【0038】
図表化手段40は、ユーザ26により選択されたクラス情報、クラス間関連情報および表示テンプレートから、設計情報の分類モデルごとの図表(仕様書)を自動生成する手段である。生成された図表(仕様書)はたとえばファイルとしてストレージデバイスに保存したり、表示デバイスに表示させることができる。
【0039】
設計情報データベース24は、たとえばMVCモデルあるいはDESeRVモデルなどのクラスの設計情報として、クラス間関連情報、クラス情報、クラス間相互作用情報が蓄積されるデータベースである。
【0040】
クラス間関連情報は、クラス間における関連の有無、および関連がある場合にはその種別を表す情報である。
【0041】
クラス情報は、クラスが属する分類、クラス名、属性名、操作名、属性及び操作の型や引数、説明に関する情報をクラス単位に記述した情報である。
【0042】
クラス間相互作用情報は、クラス間の相互作用を表す情報であり、対応する相互作用パターン情報、オブジェクトに対応するクラス名、メッセージ名などからなる。
【0043】
相互作用パターン情報データベース25は、過去の設計事例から抽出した相互作用パターン情報を蓄積するデータベースである。相互作用パターンは、オブジェクト間の一続きのシーケンスを、各オブジェクトが属する分類とメッセージの送付元及び送付先ならびに送付順について整理したものである。
【0044】
相互作用パターン情報登録管理手段29は、相互作用パターン情報データベース25への相互作用パターン情報の登録・管理を行うものである。
【0045】
表示テンプレートデータベース30は、設計情報を分類モデルごとに図表化するための記述の雛型として用いられる表示テンプレートが蓄積されるデータベースである。
【0046】
表示テンプレート登録管理手段31は、表示テンプレートデータベース30への表示テンプレートの登録・管理を行う手段である。
【0047】
次に、このソフトウェア開発支援装置101の動作を説明する。
【0048】
図2から図5にMVCモデルのクラス間関連情報55、クラス情報56、相互作用パターン情報58、クラス間相互作用情報57の例を示し、図6から図9にはDESeRVモデルのクラス間関連情報55、クラス情報56、相互作用パターン情報58、クラス間相互作用情報57の例を示す。
【0049】
まず、クラス間相互作用生成手段28は、クラス間相互作用情報57の自動生成のための条件となるクラス間関連情報55、クラス情報56、および相互作用パターン情報58をユーザ26に指定させる。これは、たとえばクラス間相互作用情報57の自動生成のための条件をユーザ26に指定させるためのフォームを表示装置に表示させ、そのフォームに入力された情報を入力制御手段21を通じて取り込むことなどによって行われる。
【0050】
次に、クラス間相互作用生成手段28は、ユーザ26によって指定されたクラス情報56およびクラス間関連情報55に、相互作用パターン情報58の相互作用パターンを満たすものがあるか調べる。
【0051】
相互作用パターンを満たすものとは、以下の2つの条件を満足するクラスおよびメソッドのことである。
【0052】
条件1:クラス情報56およびクラス間関連情報55から抽出できるクラスの組に相互作用パターンの関連に対応する関連が存在する。
【0053】
条件2:条件1で抽出したクラスの組における各クラスに相互作用パターンに対応するメソッドがある。
【0054】
(条件1について)
オブジェクト指向での一般的なルールによれば、相互作用パターンにおいてメッセージのやりとりがあるオブジェクト(クラス)間には関連が存在するということができる。
【0055】
たとえば、DESeRVモデルを用いた場合で、図10に示す相互作用パターン58が指定されているものとし、その中の一部59を取り上げて考える。この相互作用パターンの部分59では「R_1」のクラスから「D_1」のクラスにメッセージが送られている。このメッセージを送るためにはオブジェクト指向の一般的にルールに則ると、「R_1」と「D_1」のクラス間に関連が存在する必要がある。これを条件aとする。
【0056】
次に、指定されているクラス間関連情報55から条件aを満たすクラスの組を抽出する。図11に、抽出したクラスの関連図46とそのデータ構造47の例を示す。ここで関連のあるクラス同士は線で結ばれている。ここでは「データセットa」のクラスと「Aハンドラ」のクラスとの間には関連があるが、「データセットb」のクラスと「Aハンドラ」のクラスとの間には関連がないことを示している。したがって、条件aを満たすクラスの組は「R_1:Aハンドラ、D_1:データセットa」となる。
【0057】
なお、クラスの組は複数あってもかまわない。たとえば「Aハンドラ」のクラスと「データセットb」のクラスとの間に関連が存在する場合には、条件aを満たすクラスの組は「R_1:Aハンドラ、D_1:データセットa」と「R_1:Aハンドラ、D_1:データセットb」となる。
【0058】
同様の判断を図10に示す相互作用パターンに現れる各クラスに対して実行して行くと、条件aを満たすクラスの組として、結果的に以下のものを取得することができる。
【0059】
「V_1:画面X、R_1:Aハンドラ、D_1:データセットa、Se_1:サービス▲1▼、…、V_2:画面Y」
【0060】
(条件2について)
続いて、抽出した組の各クラスに相互作用パターンに対応するメソッドがあるかどうかを判定する。
【0061】
オブジェクト指向での一般的なルールによれば、図10に示す一部の相互作用パターン59の場合では、メッセージの受け手である「D_1」クラスに「(2)」に相当するメソッドが存在する必要がある。
【0062】
このメソッドが存在していれば、条件aを満たすクラスの組として判定されたものに当該メソッドを加え、これをクラス間相互作用情報57の候補とする。メソッドが存在していなければ、条件aを満たすものとして判定されていたクラスの組を候補から削除する。
【0063】
例として、先ほど抽出したクラスの組では「D_1」クラスに相当するのは「データセットa」クラスであった。そこで、クラス情報56を調べ、「データセットa」クラスに「(2)」に相当するメソッドが存在するかどうかを調べる。ここで「データセットa」が図12に示すように定義されているとすると、「(2)」に相当するメソッドとして「操作1」「操作2」の2つが考えられる。
したがって、クラス間相互作用情報57の候補は以下のものになる。
「V_1:画面X、R_1:Aハンドラ、D_1:データセットa、Se_1:サービス▲1▼、…、V_2:画面Y、…、(2):操作1、…」
「V_1:画面X、R_1:Aハンドラ、D_1:データセットa、Se_1:サービス▲1▼、…、V_2:画面Y、…、(2):操作2、…」
【0064】
なお、ここまでの説明では、クラス間相互作用情報57の候補は一つであったが、クラス間相互作用情報57の候補が複数ある場合には「(2)」に対応するメソッドが2つあるため、抽出されているクラス間相互作用情報57の候補のすべてに対して「操作1」「操作2」の場合を追加する。したがって、クラス間相互作用情報57の候補の数は「(2)」について検討する前の2倍となる。
【0065】
同様に、対応するメソッドの有無を相互作用パターンに存在するすべてのメソッドに対して確認して行き、最終的に得られたクラスとメソッドとの組を、最終的に生成されたクラス間相互作用情報57とする。
【0066】
なお、前記の説明では、全オブジェクト(クラス)について条件1をチェックした後、条件2をチェックするという手順を述べたが、個々のオブジェクト(クラス)毎に条件1のチェックと条件2のチェックを繰り返してもよい。
【0067】
このように、クラス間相互作用生成手段28は、クラス情報56とクラス間関連情報55に相互作用パターンを満たすクラスとメソッドを抽出する。これにより、たとえば図7あるいは図11に示すようなシーケンス図からなるクラス間相互作用情報57が得られ、設計情報データベース24に蓄積される。
【0068】
このように、この実施形態のソフトウェア開発支援装置101では、過去の設計事例から抽出した相互作用パターンに則って作成されたクラス間相互作用情報57を設計者(ユーザ26)が参照して、MVCモデルやDESeRVモデルのクラスの関連付けを精度良く検証することができ、設計者に拠らない均質な設計情報が得られる。
【0069】
次に、このソフトウェア開発支援装置101におけるクラス間関連生成手段36およびクラス間関連比較手段37の動作について説明する。
【0070】
クラス間関連生成手段36は、クラス間相互作用生成手段28により生成されたクラス間相互作用情報57に基づいてクラス間関連情報55’を生成する。
【0071】
図27に、DESeRVモデルのクラス間相互作用情報57からクラス間関連生成手段36によって自動生成されたクラス間関連情報55’の例を示す。このように、クラス間相互作用情報57においてメッセージのやりとりが存在するオブジェクトの属するクラス間には関連が存在する、というルールに従って、クラス間関連情報55’の自動生成が行われる。
【0072】
この後、クラス間関連比較手段37は、クラス間関連生成手段36により生成されたクラス間関連情報55’と、設計情報データベース24に格納されている対応するクラス間関連情報55とを比較して異なる点を抽出する。
【0073】
図28に、上記2つのクラス間関連情報55、55’の例を示す。この例での相違点は、図中(a)に示すクラス間関連情報55には無かった各種情報紹介ハンドラと残高紹介画面との関連が図中(b)に示すクラス間関連情報55’に存在している点と、図中(a)に示すクラス間関連情報55には存在する残高検索条件入力データと残高紹介画面との関連が図中(b)に示すクラス間関連情報55’に存在しない点の2点である。
【0074】
このように双方のクラス間関連情報55、55’に相違点がある場合、クラス間関連比較手段37は、その相違点に対してユーザ26により指定された処理を、設計情報データベース24に格納されている対応するクラス間関連情報55に対して実施する。たとえば、(a)のクラス間関連情報55の内容で統一したり、(b)のクラス間関連情報55’の内容で統一する、といった事項をユーザ26が事前にあるいは相違点が確認された時点で指定し、クラス間関連比較手段37がこの指定に従って、設計情報データベース24に格納されているクラス間関連情報55に対する処理を実施する。
【0075】
これによって、設計情報データベース24に設計情報として格納されているクラス間関連情報55についての検証の精度が向上するとともに、設計者(ユーザ26)に拠らない均質な設計情報が得られる。
【0076】
次に、このソフトウェア開発支援装置101の図表化手段40の動作について説明する。
【0077】
図表化手段40は、DESeRV設計情報データベース24Bの中からユーザ26により選択されたクラス情報56、クラス間関連情報55およびクラス間相互作用情報57と、表示テンプレートデータベース30の中からユーザ26により選択された表示テンプレートとに基づいて設計モデルごとの構成要素情報の図表(仕様書)を生成する。
【0078】
図29から図33に、DESeRVモデルの各設計モデルの構成要素情報の図表の例を示す。ここで、図29はビューVの画面一覧表、図30はサービスSeの一覧表、図31はリクエストハンドラRの一覧表、図32はエンティティEの一覧表、図33はデータセットDの一覧表の例である。
【0079】
制御手段27は、このように生成された設計モデルごとの構成要素情報の図表を出力制御手段22を通じてユーザ26に出力する。たとえば表示デバイスに表示してユーザ26に掲示する。
【0080】
ユーザ26は表示された設計モデルごとの構成要素情報の図表に対して検証を行い、修正すべき箇所があれば、入力デバイスを使って修正内容を入力する。制御手段27は入力された変更を、DESeRV設計情報データベース24Bに登録されているクラス情報56、クラス間関連情報55、クラス間相互作用情報57に反映する。
【0081】
このように本実施形態によれば、ソフトウェア開発における設計モデルごとの構成要素情報の図表(仕様書)を自動生成してユーザ26に掲示することで、設計情報の検証、修正作業の容易化、精度向上を図ることができる。
【0082】
(第2の実施形態)
次に、本発明の第2の実施形態であるソフトウェア開発支援装置を説明する。
【0083】
図13に、この第2の実施形態であるソフトウェア開発支援装置102の構成を示す。
【0084】
同図に示すように、このソフトウェア開発支援装置102は、入力制御手段21と、出力制御手段22、設計支援機構23、クラス分類の対象となるMVCモデルで分類されたクラスによる設計情報が蓄積されるMVC設計情報データベース24A、MVCモデルのクラスをDESeRVモデルのクラスに分類した結果が蓄積されるDESeRV設計情報データベース24B、相互作用パターン情報データベース25、相互作用パターン情報登録管理手段29、表示テンプレートデータベース30、表示テンプレート登録管理手段31とを備える。
【0085】
入力制御手段21は、ユーザ26からの入力情報を取得し、設計支援機構23の制御手段27に引き渡す手段である。
【0086】
出力制御手段22は、設計支援機構23の制御手段27からの情報をユーザ26に出力情報として引き渡す手段である。
【0087】
設計支援機構23は、MVCモデルで分類されたクラスをDESeRVのクラスに分類し直すための手段として、クラス取込手段32、クラス分類手段33、クラス関連付け手段34、クラス識別手段35を有し、さらに、制御手段27、クラス間相互作用生成手段28、クラス間関連生成手段36、クラス間関連比較手段37、図表化手段40を有している。
【0088】
クラス取込手段32は、たとえば記憶媒体読み書き装置によって着脱自在な記憶媒体から読み込まれたMVCモデルのクラスの設計情報をMVC設計情報データベース24Aに保存する手段である。
【0089】
クラス分類手段33は、MVCモデルのクラスの設計情報に含まれるクラスをDESeRVモデルのクラスに分類する手段である。
【0090】
クラス関連付け手段34は、MVCモデルのクラスの設計情報から関連付け情報を抽出し、これをDESeRVモデルのクラスの設計情報に反映させる手段である。
【0091】
クラス識別手段35は、MVCモデルのクラスの設計情報からクラス識別子を抽出して、DESeRVモデルのクラスの設計情報に反映させる手段である。
【0092】
DESeRVモデルのクラスに分類された設計情報はDESeRV設計情報データベース24Bに格納される。
【0093】
クラス間相互作用生成手段28は、ユーザ26により指定されたクラス情報、クラス間関連情報および相互作用パターン情報からクラス間相互作用情報の自動生成を行う。クラス間相互作用生成手段28は、それらのクラス情報、クラス間関連情報および相互作用パターン情報をユーザ26に入力制御手段21を通じて指定させる機能を備える。
【0094】
クラス間関連生成手段36は、クラス間相互作用生成手段28により生成されたクラス間相互作用情報に基づいてクラス間関連情報を自動生成する手段である。
【0095】
クラス間関連比較手段37は、クラス関連付け手段34により生成され、DESeRV設計情報データベース24Bに記憶されているクラス間関連情報とクラス間関連生成手段36により生成されたクラス間関連情報とを比較して相違点を抽出し、その相違点に対して指定された処理を、DESeRV設計情報データベース24Bに記憶されているクラス間関連情報に対して実施する手段である。
【0096】
図表化手段40は、ユーザ26により選択されたクラス情報、クラス間関連情報および表示テンプレートから、設計情報の分類モデルごとの図表(仕様書)を自動生成する手段である。生成された図表(仕様書)はたとえばファイルとしてストレージデバイスに保存したり、表示デバイスに表示させることができる。
【0097】
MVC設計情報データベース24Aは、MVCモデルのクラスの設計情報として、クラス間関連情報、クラス情報、クラス間相互作用情報が蓄積されるデータベースである。
【0098】
DESeRV設計情報データベース24Bは、DESeRVモデルのクラスの設計情報として、クラス間関連情報、クラス情報、クラス間相互作用情報が蓄積されるデータベースである。
【0099】
クラス間関連情報は、クラス間における関連の有無、および関連がある場合にはその種別を表す情報である。
【0100】
クラス情報は、クラスが属する分類、クラス名、属性名、操作名、属性及び操作の型や引数、説明に関する情報をクラス単位に記述したものである。
【0101】
クラス間相互作用情報は、クラス間相互作用を表す情報であり、対応する相互作用パターン情報、オブジェクトに対応するクラス名、メッセージ名からなる。相互作用パターン情報データベース25は、過去の設計事例から抽出した相互作用パターン情報を蓄積するデータベースである。相互作用パターンとは、オブジェクト間の一続きのシーケンスを、各オブジェクトが属する分類とメッセージの送付元及び送付先ならびに送付順について整理したものである。
【0102】
相互作用パターン情報登録管理手段29は、相互作用パターン情報データベース25への相互作用パターン情報の登録・管理を行うものである。
【0103】
表示テンプレートデータベース30は、設計情報を分類モデルごとに図表化するための記述の雛型として用いられる表示テンプレートが蓄積されるデータベースである。
【0104】
表示テンプレート登録管理手段31は、表示テンプレートデータベース30への表示テンプレートの登録・管理を行う手段である。
【0105】
次に、MVCモデルの3つのクラス分類をDESeRVモデルの5つのクラス分類に変換する動作を説明する。
【0106】
図14はMVCモデルによるクラス図とDESeRVモデルによるクラス図との関係を示す図である。
【0107】
同図に示すように、MVCモデルは、ソフトウェアのロジックを担当するモデルM、ソフトウェアの通信・制御を担当するコントローラC、およびソフトウェアのプレゼンテーションを担当するビューVなどにクラスを分類したものである。
【0108】
これに対してDESeRVモデルは、データセットD、エンティティE、サービスS、リクエストハンドラR、およびビューVにクラス分類したものである。すなわち、MVCのモデルMは、一時的なデータであるデータセットDと、永続的なデータであるエンティティEとの2つのクラスに分類される(図中矢印▲1▼)。このような小分類にすると、データ特性ごとに別個のクラスとなるため、ソフトウェア開発における要素の再利用性を高めることができる。
【0109】
MVCのコントローラCは、このコントローラCの機能から業務処理を抽出したサービスSと、同じくイベント受信処理を抽出したリクエストハンドラRとの2つのクラスに分類される(図中矢印▲2▼)。このような小分類にすると、制御の機能によって別個のクラスとなるため、ソフトウェア開発における要素の再利用性を高めることができる。
【0110】
ビューVは、小さく分類せずにそのままビューVとして1つのクラスを維持する。なお、GUIに特化したソフトウェアを開発する場合は、見た目に関するオブジェクトが多く複雑になるため、ビューVを2以上のクラスに分類してもよい。
【0111】
なお、本実施形態のモデルでは、5つのクラスに分類しているが、新たな機能に対応させて6以上のクラスに細分化することも可能である。ただし、ソフトウェア開発の効率を考えた場合、クラスをあまり細分化しすぎると、分類作業自体に労力がかかってしまい、よい結果が得られないこともある。
【0112】
次に、図15および図16を参照してクラスの小分類化について具体的に説明する。
【0113】
図15は例えば銀行顧客管理システムなどを開発するにあたり、MVCモデルに従い分類したクラスの一例を示す図、図16は図15をDESeRVモデルに従い再分類したクラスの一例を示す図である。
【0114】
銀行顧客管理システムを開発する場合に、同システムをMVCモデルに従って分類すると、図15に示すように、顧客管理データ41と、顧客データを制御する顧客管理制御42と、顧客データを表示する顧客管理画面43の3つのクラスに分類される。すなわち、顧客管理データはMVCモデルにおけるモデルMに分類され、顧客管理制御42はコントローラCに分類され、顧客管理画面43はビューVに分類される。
【0115】
顧客管理データ41のクラスは属性38と操作39とに区分されている。属性38は、ID、氏名および連絡先などの要素を有している。操作39は、データ取得およびデータ設定などの要素を有している。
【0116】
顧客管理制御42のクラスは操作39のみに区分されている。操作39は、入力、登録、検索および削除などの要素を有している。
【0117】
顧客管理画面43のクラスは、操作39のみに区分されている。操作39は、Open、CloseおよびUpdateなどの要素を有している。
【0118】
この銀行顧客管理システムのクラスをDESeRVで再分類した場合、図16に示すように、MVCモデルにおけるモデルMに属する顧客管理データ41は、データセットDに属する顧客検索条件データ44、顧客登録内容データ45、銀行員検索条件データ46、銀行員登録内容データ47、管理者検索条件データ48および管理者登録内容データ49の6つのクラスと、データセットに属する顧客マスタエンティティ50、管理者マスタエンティティ51および銀行員マスタエンティティ52の3つのクラスに分類される。
【0119】
また、MVCモデルにおけるコントローラに属する顧客管理制御42は、サービスに属する顧客管理サービス53と、リクエストハンドラに属する顧客管理ハンドラ54の2つのクラスに分類される。
【0120】
ただし、MVCモデルにおけるビューに属する顧客管理画面43は、1対1に分類され、そのまま顧客管理画面43のクラスとなる。これは前述の最適化を考慮したものである。
【0121】
次に、この第2の実施形態であるソフトウェア開発支援装置102においてMVCモデルからDESeRVモデルへのクラス変換を行うときの動作を説明する。
【0122】
図17は、このMVCモデルからDESeRVモデルへのクラス変換処理の流れを示すフローチャートである。
【0123】
ユーザ26によるキーボードまたはマウスからの変換処理開始の指示を入力制御手段21を介して制御手段27が受け取ると、制御手段27は、クラス取込手段32に処理開始を指示する。
【0124】
制御手段27からの指示により、クラス取込手段32は、クラス取込処理を実行する(ステップS61(以下S61と称する。))。
【0125】
クラス取込処理が終了すると、制御手段27は、クラス分類全てが分類されたか否かの判断を行う(S62)。
【0126】
全ての分類が終了した場合(S62のYES)、制御手段27は変換処理を終了する。全ての分類が終了していない場合(S62のNO)、制御手段27はクラス分類手段33へ処理を指示する(S63)。
【0127】
クラス分類手段33は、この指示にしたがってクラス分類処理を実行し、MVC設計情報データベース24Aに記憶されているMVCモデルのクラスの設計情報のクラスのうち、モデルを一時的データであるデータセットおよび永続的データであるデータセットへ、ビューをプレゼンテーションの機能をするビューへ、コントローラを業務処理の機能をするサービスおよびイベントハンドラの機能をするリクエストハンドラへ分類してDESeRVモデルのクラスの設計情報を生成する(S63)。
【0128】
クラス分類処理が終了すると、制御手段27は、DESeRVモデルのクラスの設計情報に新規クラスが追加されているか否かの判定を行う(S64)。
【0129】
この判定の結果、新規クラスが追加されている場合(S64のYES)、制御手段27はクラス識別手段35へ処理を指示する。この指示により、クラス識別手段35は、クラス識別処理を実行する(S65)。
【0130】
クラス識別処理が終了すると、制御手段27は、MVCモデルと5分類モデルの関係から、MVCモデルのクラスの設計情報が有する関連付けをDESeRVモデルのクラスの設計情報に適用できるか否かの判定を行う(S66)。
【0131】
関連付けを適用できる場合(S66のYES)、制御手段27は、クラス関連付け手段34へ処理を指示する。この指示により、クラス関連付け手段34はクラス関連付け処理を実行する(S67)。
【0132】
クラス関連付け処理が終了すると、制御手段27はステップS68の処理を実行する(S68)。
【0133】
すなわち、ステップS64において新規クラスを追加していない場合(S64のNO)、MVCモデルのクラスの設計情報が持っていた関連付けを適用できない場合(S66のNO)およびクラス関連付け処理が終了した場合(S67)、制御手段27は、出力制御手段22を通じて、ユーザ26に対し導出したクラス分類を修正する必要があるか否かの判断を促し、ユーザ26からの指示を待つ(S68)。
【0134】
ユーザ26からの指示が、クラス分類の修正である場合(S68のYES)、制御手段27はクラス識別手段35へ処理を指示する。この指示によりクラス識別手段35はクラス識別処理を実行する(S69)。
【0135】
クラス識別処理が終了するか、あるいは、クラス分類の修正なしの場合(S68のNO)、制御手段27は処理成果物であるDESeRVモデルのクラス設計情報をDESeRV設計情報データベース24Bに蓄積し、ステップS62の処理に戻る(S70)。
【0136】
以上のステップを全て終了すると、全ての変換作業を終えたDESeRVモデルのクラスの設計情報がDESeRV設計情報データベース24Bに格納される。
【0137】
次に、クラス取込手段32によるクラス取込処理について説明する。
【0138】
クラス取込手段32は、制御手段27を介してMVCモデルのクラスの設計情報を記憶媒体から読み込む。
【0139】
クラス取込手段32は、記憶媒体から読み込んだMVCモデルのクラスの設計情報を、MVC設計情報データベース24Aに記憶させる。
【0140】
取り込まれるMVCモデルのクラスの設計情報は、クラス図を構成する要素の情報であり、具体的には、図18に示すように、クラス名、パッケージ、種別、属性、操作、他クラスとの関連などがある。ここでクラス名とは、クラスを識別する名前のことである。パッケージとは、クラスが属するパッケージのことである。種別とは、MVCモデルにおけるモデル、ビュー、コントローラの中のいずれかの分類種別のことである。属性とは、そのクラスが持つデータのことであり、型や可視性などの補足情報も含まれる。操作とは、そのクラスが行う操作のことであり、返り値や引数などの補足情報も含まれる。他クラスとの関連とは、オブジェクト指向プログラミングにおける利用、関係、承継などのことである。
【0141】
記憶媒体から読み込む情報は任意の形式とする。一例としては、例えばXML形式(eXtensible Markup Language)、Rational Rose(登録商標)固有のデータ形式、CSV形式などが考えられる。
【0142】
MVC設計情報データベース24Aに記憶されたMVCモデルのクラスの設計情報は、他の処理において複数回参照されるので、作業が終了するまで初期の内容を維持したまま保存されていることが必要である。クラス取込手段32がMVCモデルのクラスの設計情報をMVC設計情報データベース24Aに記憶させる形式は、記憶媒体に格納されていた形式と必ずしも同一である必要はなく、独自の形式に変換して記憶させてもよい。
【0143】
次に、前記のクラス分類手段33によるクラス分類処理(S63)について説明する。
【0144】
クラス分類手段33は、MVCモデルのクラスの設計情報を、新たな5つの分類からなるDESeRVモデルのクラスの設計情報に小分類化する。
【0145】
すなわち、クラス分類手段33は、制御手段27からの指示を受けると、MVC設計情報データベース24AよりMVCモデルに分類されているクラスの設計情報を取り込み、MVCモデルのクラスの設計情報のうち、コントローラCを、リクエストハンドラRとサービスSとに小分類化する。
【0146】
次に、クラス分類手段33は、取り込んだMVCモデルのクラスの設計情報のうち、モデルMをデータセットDとエンティティEとに小分類化する。
【0147】
さらに、クラス分類手段33は、MVCモデルのクラスの設計情報のうちビューVをそのまま新たな5分類の1つであるビューVとして分類する。
【0148】
最後に、クラス分類手段33は、MVCモデルのクラスの設計情報と、新たに5分類に分類されたDESeRVモデルのクラスの設計情報とを比較して整合性をチェックする。
【0149】
ここで、図19および図20を参照して、コンピュータの画面上での操作に応じて行われるクラス分類処理について説明する。図19はコントローラCのクラス分類処理を実行する際の表示画面の例を示す図、図20はモデルMのクラス分類処理を実行する際の表示画面の例を示す図である。
【0150】
クラス分類処理の際、図19に示すように、モニタ画面110には、コントローラCに属する顧客管理制御42のクラスを示すウィンドウ118aと、コントローラCから小分類化されたサービスSに属する顧客管理サービス53のクラスを示すウィンドウ118b、同じく小分類化されたリクエストハンドラRに属する顧客管理ハンドラ54のクラスを示すウィンドウ118cとが表示される。
【0151】
顧客管理制御42のクラスを示すウィンドウ118aには、操作窓111a、属性窓112a、分類のボタン113aおよび識別子119aなどが表示される。
【0152】
顧客管理サービス53のクラスを示すウィンドウ118bには、操作窓111b、属性窓112b、追加のボタン113bおよび識別子119bなどが表示される。
【0153】
顧客管理ハンドラ54のクラスを示すウィンドウ118cには、操作窓111c、属性窓112c、追加のボタン113cおよび識別子119cなどが表示される。
【0154】
操作窓111aには、顧客管理制御42のクラスにおける操作39の要素である入力114a、登録115aおよび検索116などが表示される。
【0155】
操作窓111bには、顧客管理サービス53のクラスにおける操作39の要素である登録115bなどが表示される。
【0156】
また、操作窓111cには、顧客管理ハンドラ54のクラスにおける操作39の要素である顧客情報入力114cおよび顧客情報管理選択117などが表示される。
【0157】
ユーザ26が、マウスにより顧客管理制御42のクラスにおける操作39の要素である入力114aをクリックし、顧客管理ハンドラ54のクラスにおける操作39の要素へドラッグ&ドロップ操作を行い、キーボードにより名称を変更する操作を行うと、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、入力114aを顧客管理ハンドラ54のクラスにおける操作39の要素へ分類して名称を変更するように指示を出す。そして、制御手段27は、出力制御手段22に対して、入力114aの表示を反転させるとともに、名称が変更された入力114aである顧客情報入力114cを顧客管理ハンドラ54のクラスにおける操作窓111cに表示するように指示する(図中矢印▲1▼)。
【0158】
同様に、ユーザ26が、マウスにより顧客管理制御42のクラスにおける操作39の要素である登録115aをクリックし、顧客管理サービス53のクラスにおける操作39の要素へドラッグ&ドロップ操作を行うと、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、登録115aを顧客管理サービス53のクラスにおける操作39の要素へ分類するように指示を出す。そして、制御手段27は、出力制御手段22に対して、登録115aの表示を反転させるとともに、登録115bを顧客管理サービス53のクラスにおける操作窓111bに表示するように指示する(図中矢印▲2▼)。
【0159】
ユーザ26によりキーボードあるいはマウスが操作されて分類処理終了の指示が行われると、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対してモニタ画面110に表示されたクラス情報56をDESeRVモデルのクラスの設計情報としてDESeRV設計情報データベース24Bに記憶させるように指示を出す。
【0160】
ユーザ26によりマウスにて追加のボタン113bがクリックされ、ユーザ26からサービスに属するクラスを追加する指示が行われると、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、サービスに新たなクラスを追加するように指示する。そして、制御手段27は、出力制御手段22に対し、サービス内に新たなクラスを表すウィンドウ118dを表示するように指示する。これはリクエストハンドラに係る追加指示においても同様である。
【0161】
クラス分類の際、図20に示すように、モニタ画面120には、モデルMに属する顧客管理データ41のクラスを示すウィンドウ128aと、モデルMから小分類化されたデータセットDに属する顧客検索条件データ44のクラスを示すウィンドウ128bと、同じく小分類化されたデータセットDに属する顧客マスタエンティティ50のクラスを示すウィンドウ128cとが表示される。
【0162】
顧客管理データ41のクラスを示すウィンドウ128aには、操作窓121a、属性窓122a、分類のボタン123aおよび識別子129aなどが表示される。
【0163】
顧客検索条件データ44のクラスを示すウィンドウ128bには、操作窓121b、属性窓122b、追加のボタン123bおよび識別子129bなどが表示される。
【0164】
顧客マスタエンティティ50のクラスを示すウィンドウ128cには、操作窓121c、属性窓122c、追加のボタン123cおよび識別子129cなどが表示される。
【0165】
操作窓121aには、顧客管理データ41のクラスにおける操作39の要素であるデータ設定124aおよびデータ取得125aなどが表示される。
【0166】
操作窓122aには、顧客管理データ41のクラスにおける属性38の要素であるID126a、氏名127aおよび連絡先130aなどが表示される。
【0167】
操作窓121cには、顧客マスタエンティティ50のクラスにおける操作39の要素であるデータ設定124cおよびデータ取得125cなどが表示される。また、操作窓122cには、顧客マスタエンティティ50における属性38の要素であるID126c、氏名127cおよびパスワード130cなどが表示される。
【0168】
ユーザ26が、マウスにより顧客管理データ41のクラスにおける操作39の要素であるデータ設定124aおよびデータ取得125aをクリックし、顧客マスタエンティティ50のクラスにおける操作39の要素へドラッグ&ドロップ操作を行うと、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、データ設定124aおよびデータ取得125aを顧客マスタエンティティ50のクラスにおける操作39の要素へ分類するように指示を出す。そして、制御手段27は、出力制御手段22に対して、データ設定124aおよびデータ取得125aの表示を反転させるとともに、データ設定124cおよびデータ取得125cを顧客マスタエンティティ50のクラスにおける操作窓121cに表示するように指示する(図中矢印▲1▼)。
【0169】
同様に、ユーザ26が、マウスにより顧客管理データ41のクラスにおける属性38の要素であるID126aおよび氏名127aをクリックし、顧客マスタエンティティ50のクラスにおける属性38の要素へドラッグ&ドロップ操作を行うと、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、ID126aおよび氏名127aを顧客マスタエンティティ50のクラスにおける属性38の要素へ分類するように指示する。そして、制御手段27は、出力制御手段22に対して、ID126aおよび氏名127aの表示を反転させるとともに、ID126cおよび氏名127cを顧客マスタエンティティ50のクラスにおける属性窓122cに表示するように指示する(図中矢印▲2▼)。
【0170】
ユーザ26によりキーボードあるいはマウスが操作されて分類処理終了の指示が行われると、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対してモニタ画面120に表示されたクラス情報56をDESeRVモデルのクラスの設計情報としてDESeRV設計情報データベース24Bに記憶させるように指示を出す。
【0171】
ユーザ26によりマウスにて追加のボタン123bがクリックされ、ユーザ26からデータセットDに属するクラスを追加する指示が行われると、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、データセットDに新たなクラスを追加するように指示する。そして、制御手段27は、出力制御手段22に対して、データセット内に新たなクラスを表すウィンドウ128dを表示するように指示する。これは、データセットDに係る追加指示においても同様である。
【0172】
また、ユーザ26によりキーボードの操作が操作されて顧客マスタエンティティ50のクラスにおける属性38にパスワード130cの要素を追加する指示が行われると、制御手段27は、入力制御手段21を通じて指示を受け取り、クラス分類手段33に対して、パスワード130cを顧客マスタエンティティ50のクラスにおける属性38に追加するように指示する。そして、制御手段27は、出力制御手段22に対して、パスワード130cを顧客マスタエンティティ50のクラスにおける属性38の属性窓122cに表示するように指示する。
【0173】
次に、図21を参照してクラス関連付け手段34によるクラス関連付け処理(S67)について説明する。
【0174】
クラス関連付け手段34は、MVCモデルのクラスの関連付けを以下のように行う。
【0175】
制御手段27から処理の指示を受けると、クラス関連付け手段34は、MVC設計情報データベース24Aに記憶されているMVCモデルのクラスの設計情報をコンピュータ内のメモリ(RAM)に読み込む(S131)。
【0176】
MVCモデルのクラスの設計情報がメモリ上に読み込まれると、クラス関連付け手段34は、メモリ上のMVCモデルのクラスの設計情報からMVCモデルにおけるクラスの関連付け情報を抽出する(S132)。
【0177】
クラスの関連付け情報を抽出すると、クラス関連付け手段34は、自身にプログラムされている関連付けルールにしたがって抽出した関連付け情報を変換する(S133)。
【0178】
関連付け情報の変換後、新たな関連付けを適用したクラス情報56がモニタに表示される(S134)。
【0179】
ユーザ26によってキーボードまたはマウスなどから修正指示が行われた場合(S135のYES)、クラス関連付け手段34は、その修正指示を入力制御手段21および制御手段27を介して修正情報として受け取り、メモリ上の該当関連付け情報を修正する(S136)。
【0180】
また、ユーザ26によりキーボードまたはマウスなどから処理続行が指示された場合(S135のNO)、および上記メモリ上の関連付け情報が修正された場合(S136)、クラス関連付け手段34は、メモリ上の関連付け情報をDESeRVモデルのクラスの設計情報に適用してDESeRV設計情報データベース24Bに記憶させる(S137)。
【0181】
ここで、図22を参照してクラス関連付け手段34に定義されている関連付けルールについて説明する。
【0182】
関連付けルールは、MVCモデルにおける各クラス間の関連と、DESeRVモデルにおける各クラス間の関連との関係を定義したものである。
【0183】
具体的には、変換元のMVCモデルのMVCモデルのクラスの設計情報のクラスにおいてコントローラCとモデルMが関連付けられていた場合、クラス関連付け手段34は、「関連のあるC、Mから分類したR、D間を関連付ける」というルールを適用し、DESeRVモデルのクラスの設計情報のクラスにおけるリクエストハンドラRとデータセットDを関連付ける(141)。
【0184】
同様に、変換元のMVCモデルのMVCモデルのクラスの設計情報のクラスにおいてコントローラCとモデルMが関連付けられていた場合、クラス関連付け手段34は、「関連のあるC、Mから分類したR、V間を関連付ける」というルールを適用し、DESeRVモデルのクラスの設計情報のクラスにおけるサービスSとエンティティEを関連付ける(143)。MVCモデルのクラスの設計情報のクラスにおいてコントローラCとビューVが関連付けられていた場合も同様である(144)。
【0185】
また、関連付けるべきクラスがリクエストハンドラRとサービスSである場合、クラス関連付け手段34は、「同じCから分類したR、S間を関連付ける」というルールを適用し、DESeRVモデルのクラスの設計情報のクラスにおけるリクエストハンドラRとサービスSを関連付ける(142)。関連付けるべきクラスがリクエストハンドラR同士である場合も同様である(14)。
【0186】
図23は、MVCモデルをDESeRVモデルに変換した状態を示す図である。図24は2つのモデルM1およびモデルM2、1つのコントローラC1および2つのビューV1およびビューV2の各クラスに分類されたMVCモデルの例である。図25は図22に示した関連付けルールを用いて関連付けを行った状態を示す図であり、図26は図25の状態から手動修正を行って不要な関連付けを取り除いた状態を示す図である。
【0187】
図23に示すように、モデルM1、コントローラC1およびビューV1からなる変換元のMVCモデルは、データセットD1〜D3、エンティティE1〜E2、サービスS1、リクエストハンドラR1およびビューV1からなる5分類によるモデルに変換されている。変換前のクラスC1とクラスM1の関連(図中▲1▼)は、変換後のクラスR1とクラスD1〜D3の関連(図中▲2▼〜▲4▼)ならびにクラスS1とクラスE1〜E2の関連(図中▲5▼、▲6▼)に変換されている。すなわち、1つの関連付けが5つの関連付けに変換されている。
【0188】
ここで、変換前のクラスが5つある場合の変換について説明する。図24に示すMVCモデルは、図23に示したMVCモデルよりもクラス間の関連付けの数が多くなっている。そのため、図24のクラス図に図22の関連付けルールを機械的に適用すると、図22に示す関係を有するクラス間全てに関連付けがなされ、変換後のクラス図は図25に示すように各クラスよりの関連付けを示す線が双方に伸びて関連付けが複雑になる。
【0189】
例えば、図24におけるコントローラのクラスC1は、変換の結果、図25に示す3つのサービスのクラスS11、S12、S21と、2つのリクエストハンドラのクラスR1、R2に細分化されている。また、図24におけるビューV1およびV2は、変換の結果、図25においてもそのままビューV1およびV2として維持されている。そして、リクエストハンドラのクラスR1、R2は、ビューのクラスV1、V2とそれぞれ関連付けられている。すなわち、クラスR1、クラスR2、クラスV1およびクラスV2の間で、4つの関連付けが行われたことになる。
【0190】
しかし、ソフトウェアの機能として必要な関連付けは、クラスR1とクラスV1、クラスR2とクラスV2の関連付けのみであり、他の2つの関連付けは本来不要のものである。
【0191】
図25における他のクラスについても同様である。例えば、クラスR1は、クラスS11、クラスS12、クラスS21、クラスD11、クラスD12およびクラスD21とも関連付けられているが、本来リクエストハンドラとして1つの機能だったクラスをクラスR1とクラスR2に分けているのであるから、それぞれに対応するデータセットのクラスおよびサービスのクラスとのみ関連付ければ足りるものである。
【0192】
リクエストハンドラをクラスR1とクラスR2に分類し、ビューをクラスV1とクラスV2に分類したのは、機能ごとに小分類化してソフトウェアの再利用を図るためである。しかし、分類したクラス全てを関連付けるとすると、ソフトウェアの再利用化は図れても、クラス間のやり取りを変換前よりも増やしたことになり、これではソフトウェア開発の難度が以前よりも増してしまうことになる。そこで、このソフトウェア開発支援装置では、関連付けを修正し不要な関連付けを削除するためのエディタの機能を用意している。具体的には、図9および図10に示すようなGUI環境においてマウスなどによりドラッグ&ドロップ操作をすることにより実現される。
【0193】
図26は図25に示したクラス図についてユーザ26が関連付けを修正した状態を示す図である。
【0194】
例えば、図25に示したクラス図でのクラスRとクラスSの関連付けについてみると、クラスR1はクラスS11、クラスS12およびクラスS21の全てと関連付けられていたが、この図26に示すクラス図では、クラスS11およびクラスS12とのみ関連付けられており、3つのクラスS11、S12、S21から2つのクラスS11、S12に整理されていることがわかる。
【0195】
同様に、図25に示すクラス図でのクラスSとクラスEの関連付けについてみると、クラスS11は、クラスE111、クラスE112、クラスE121およびクラスE211の全てと関連付けられていたが、図26に示すクラス図では、クラスE111およびクラスE112とのみ関連付けられており、4つのクラスE111、E112、E121、E211から2つのクラスE111、E112に整理されていることがわかる。
【0196】
次に、図15および図16を参照しながらクラス識別手段35による処理(S65、S69)について説明する。
【0197】
クラス識別手段35は、分類した各クラスに対して、そのクラスがデータセット、エンティティ、サービス、リクエストハンドラおよびビューのいずれに属するかを示す識別子を付ける手段である。
【0198】
例えば、図16のデータセットについてみると、クラス識別手段35は、図15における変換元であるモデルの「<<Model>>」という識別子に基づき、図16におけるデータセットの各クラスに「<<DataSet>>」という識別子を付し、各クラスがデータセットに分類されていることが一目で判別できるようにする。
【0199】
本実施形態では、UML(Unified Modeling Language)の表記であるステレオタイプを活用した識別子と、接尾語を合わせる識別子の2通りを採用している。
【0200】
ステレオタイプを活用した識別子とは、UML表記法に則った識別子であり、図16における「<<Data Set>>」「<<Entity>>」などがこれに該当する。語尾を合わせる識別子は、図16における「○○データ」「○○エンティティ」などがこれに該当する。
【0201】
クラス識別手段35は、MVCモデルと新たな5分類モデルの関係に基づいて、ステレオタイプを活用した識別子を、分類処理がなされた設計情報に対して適用する。例えば、図19において、クラス識別手段35は、顧客管理サービス53のクラスを示すウィンドウ118bに、「<<Service>>」の識別子119bを表示する処理を制御手段27に指示し、また、顧客管理ハンドラ54のクラスを示すウィンドウ118cに、「<<Request handler>>」の識別子119cを表示する処理を制御手段27に指示する。
【0202】
また、クラス識別手段35は、語尾を合わせる識別子についてユーザ26がキーボードなどにより識別子を付す指示を発すると、入力制御手段21を通じて指示内容を受け取り、識別子を表示する処理を制御手段27に指示する。
【0203】
次に、この第2の実施形態であるソフトウェア開発支援装置102においてクラス間関連の検証に係る動作について説明する。
【0204】
まず、クラス間相互作用生成手段28は、前記第1の実施形態と同様に、DESeRV設計情報データベース24Bの中からクラス間相互作用情報57の自動生成のための条件となるクラス間関連情報55およびクラス情報56をユーザ26に指定されるとともに、相互作用パターン情報データベース25の中から任意の相互作用パターン情報58をユーザ26に指定させる。
【0205】
次に、クラス間相互作用生成手段28は、ユーザ26によって指定されたクラス情報56およびクラス間関連情報55に、相互作用パターン情報58の相互作用パターンを満たすものがあるか調べる。相互作用パターンを満たすものが存在する場合は、クラス間相互作用生成手段28は、クラス情報56とクラス間関連情報55から相互作用パターンを満たすクラスとメソッドを抽出し、たとえば図5あるいは図9に示すようなシーケンス図からなるクラス間相互作用情報57を生成し、DESeRV設計情報データベース24Bに蓄積する。
【0206】
クラス間関連生成手段36は、前記のようにしてクラス間相互作用生成手段28により生成されたクラス間相互作用情報57に基づいてクラス間関連情報55’を生成する。
【0207】
図27に、DESeRVモデルのクラス間相互作用情報57からクラス間関連生成手段36によって自動生成されたクラス間関連情報55’の例を示す。このように、クラス間相互作用情報57においてメッセージのやりとりが存在するオブジェクトの属するクラス間には関連が存在する、というルールに従って、クラス間関連情報55’の自動生成が行われる。
【0208】
この後、クラス間関連比較手段37は、クラス間関連生成手段36により生成されたクラス間関連情報55’と、クラス関連付け手段34によって生成され、DESeRV設計情報データベース24Bに格納されている対応するクラス間関連情報55とを比較して異なる点を抽出する。
【0209】
図28に、上記2つのクラス間関連情報55、55’の例を示す。この例での相違点は、図中(a)に示すクラス間関連情報55には無かった各種情報紹介ハンドラと残高紹介画面との関連が図中(b)に示すクラス間関連情報55’に存在している点と、図中(a)に示すクラス間関連情報55には存在する残高検索条件入力データと残高紹介画面との関連が図中(b)に示すクラス間関連情報55’に存在しない点の2点である。
【0210】
このように双方のクラス間関連情報55、55’に相違点がある場合、クラス間関連比較手段37は、その相違点に対してユーザ26により指定された処理を、設計情報データベース24に格納されている対応するクラス間関連情報55に対して実施する。たとえば、(a)のクラス間関連情報55の内容で統一したり、(b)のクラス間関連情報55’の内容で統一する、といった事項をユーザ26が事前にあるいは相違点が確認された時点で指定し、クラス間関連比較手段37がこの指定に従って、DESeRV設計情報データベース24Bに格納されているクラス間関連情報55に対する処理を実施する。
【0211】
これによって、DESeRV設計情報データベース24Bに設計情報として格納されているクラス間関連情報55についての検証の精度が向上するとともに、設計者(ユーザ26)に拠らない均質な設計情報が得られる。
【0212】
次に、このソフトウェア開発支援装置102の図表化手段40の動作について説明する。
【0213】
図表化手段40は、DESeRV設計情報データベース24Bの中からユーザ26により選択されたクラス情報56、クラス間関連情報55およびクラス間相互作用情報57と、表示テンプレートデータベース30の中からユーザ26により選択された表示テンプレートとに基づいて設計モデルごとの構成要素情報の図表(仕様書)を生成する。
【0214】
図29から図33に、DESeRVモデルの各設計モデルごとの構成要素情報の図表の例を示す。ここで、図29はビューVの一覧表、図30はサービスSeの一覧表、図31はリクエストハンドラRの一覧表、図32はエンティティEの一覧表、図33はデータセットDの一覧表の例である。
【0215】
制御手段27は、このように生成された設計モデルごとの構成要素情報の図表を出力制御手段22を通じてユーザ26に出力する。たとえば表示デバイスに表示してユーザ26に掲示する。
【0216】
ユーザ26は表示された設計モデルごとの構成要素情報の図表に対して検証を行い、修正すべき箇所があれば、入力デバイスを使って修正内容を入力する。制御手段27は入力された変更を、DESeRV設計情報データベース24Bに登録されているクラス情報56、クラス間関連情報55、クラス間相互作用情報57に反映する。
【0217】
このように本実施形態によれば、ソフトウェア開発における設計モデルごとの構成要素情報の図表(仕様書)を自動生成してユーザ26に掲示することで、設計情報の検証、修正作業の容易化、精度向上を図ることができる。
【0218】
上記実施形態におけるソフトウェア(プログラム)は、コンピュータが読み出し可能で着脱自在な記憶媒体に記憶されていてもよく、また、ソフトウェア(プログラム)単体として伝送されるものでもよい。この場合、記憶媒体に記憶されたソフトウェア(プログラム)をコンピュータが読み出したり、LANやインターネッ上のサイト(サーバ)からダウンロードしてインストールすることにより、各実施形態における処理が可能になる。
【0219】
つまり、本発明におけるソフトウェア(プログラム)は、コンピュータと独立した記憶媒体に記憶されているものだけに限らず、LANやインターネットなどの伝送媒体を介して流通されるものも含まれる。
【0220】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフトなどのMW(ミドルウェア)などが本実施形態を実現するための各処理の一部を実行してもよい。
【0221】
なお、コンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコンなどの一つからなる装置、複数の装置がネットワーク接続されたシステムなどのいずれの構成であっても良い。
【0222】
【発明の効果】
以上説明したように本発明によれば、MVCモデルやDESeRVモデルなどのモデル分類されたクラス間の関連情報を精度良く検証することができ、設計者に拠らない均質なソフトウェア設計情報が得られる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態であるソフトウェア開発支援装置の構成を示すブロック図である。
【図2】MVCモデルのクラス間関連情報の例を示す図である。
【図3】MVCモデルのクラス情報の例を示す図である。
【図4】MVCモデルの相互作用パターン情報の例を示す図である。
【図5】MVCモデルのクラス間相互作用情報の例を示す図である。
【図6】DESeRVモデルのクラス間関連情報の例を示す図である。
【図7】DESeRVモデルのクラス情報の例を示す図である。
【図8】DESeRVモデルの相互作用パターン情報の例を示す図である。
【図9】DESeRVモデルのクラス間相互作用情報の例を示す図である。
【図10】相互作用パターンの別の例を示す図である。
【図11】クラス間関連情報から抽出したクラスの関連図とそのデータ構造の例を示す図である。
【図12】データセットクラスのクラス情報の例を示す図である。
【図13】本発明の第2の実施形態であるソフトウェア開発支援装置の構成を示すブロック図である。
【図14】MVCモデルによるクラス図とDESeRVモデルによるクラス図との関係を示す図である。
【図15】開発対象システムをMVCモデルに従い分類したクラスの例を示す図である。
【図16】図15のMVCモデルのクラスをDESeRVモデルに従い再分類したクラスの例を示す図である。
【図17】このソフトウェア開発支援装置でのMVCモデルからDESeRVモデルへのクラス変換処理の流れを示すフローチャートである。
【図18】MVCモデルのクラスの設計情報の例を示す図である。
【図19】コントローラのクラス分類処理の際の表示画面の例を示す図である。
【図20】モデルのクラス分類処理の際の表示画面の例を示す図である。
【図21】クラス関連付け手段によるクラス関連付け処理の流れを示すフローチャートである。
【図22】クラス関連付け手段の関連付けルールを示す図である。
【図23】MVCモデルからDESeRVモデルへの変換例を示す図である。
【図24】DESeRVモデルへの変換対象であるMVCモデルの例を示す図である。
【図25】図24の変換対象MVCモデルに対して関連付けルールを用いて関連付けを行った結果を示す図である。
【図26】図25のクラス関連図に対して手動修正を行って不要な関連付けを取り除いた結果を示す図である。
【図27】DESeRVモデルのクラス間相互作用情報からクラス間関連生成手段によって自動生成されたクラス間関連情報の例を示す図である。
【図28】クラス間関連比較手段によって比較される2つのクラス間関連情報の例を示す図である。
【図29】ビューVの一覧表の例を示す図である。
【図30】サービスSeの一覧表の例を示す図である。
【図31】リクエストハンドラRの一覧表の例を示す図である。
【図32】エンティティEの一覧表の一覧表の例を示す図である。
【図33】データセットDの一覧表の例を示す図である。
【符号の説明】
21・・・・入力制御手段、22・・・・出力制御手段、23・・・・設計支援機構、24・・・・設計情報データベース、24A・・・・MVC設計情報データベース、24B・・・・DESeRV設計情報データベース、25・・・・相互作用パターン情報データベース、27・・・・制御手段、28・・・・クラス間相互作用生成手段、30・・・・表示テンプレートデータベース、31・・・・表示テンプレート登録管理手段、32・・・・クラス取込手段、33・・・・クラス分類手段、34・・・・クラス関連付け手段、35・・・・クラス識別手段、36・・・・クラス間関連生成手段、37・・・・クラス間関連比較手段、40・・・・図表化手段、55・・・・クラス間関連情報、56・・・・クラス情報、57・・・・クラス間相互作用情報、58・・・・相互作用パターン情報、101・・・・ソフトウェア開発支援装置、102・・・・ソフトウェア開発支援装置
Claims (5)
- モデル分類されたクラスごとの設計情報であるクラス情報と前記クラス間の関連を表すクラス間関連情報とが記憶される設計情報記憶手段と、前記クラス間の相互作用のパターンを表す相互作用パターン情報が記憶される相互作用パターン記憶手段と、
前記設計情報記憶手段の中から任意のクラス間関連情報とクラス情報を指定させるとともに前記相互作用パターン記憶手段の中から任意の相互作用パターン情報を指定させ、前記指定されたクラス間関連情報とクラス情報から前記指定された相互作用パターン情報のパターンを満たすクラスとメソッドを抽出してクラス間相互作用情報を生成するクラス間相互作用生成手段と
を具備することを特徴とするソフトウェア開発支援装置。 - 前記クラス間相互作用生成手段により生成されたクラス間相互作用情報に基づいてクラス間関連情報を生成するクラス間関連情報生成手段と、クラス間関連情報生成手段により生成されたクラス間関連情報と前記設計情報記憶手段に記憶されているクラス間関連情報とを比較して相違点を抽出し、その相違点に対して指定された処理を、前記設計情報記憶手段に記憶されているクラス間関連情報に対して実施するクラス間関連情報比較手段と
をさらに具備することを特徴とする請求項1に記載のソフトウェア開発支援装置。 - 前記設計情報記憶手段に記憶されたクラス情報およびクラス間関連情報から、前記ソフトウェア設計情報の分類モデルごとの図表を生成する図表化手段をさらに具備することを特徴とする請求項1または2に記載のソフトウェア開発支援装置。
- MVC(モデル・ビュー・コントローラ)のモデルで分類された前記クラスのうちのM(モデル)を一時的データであるD(データセット)と永続的データであるE(エンティティ)とに分類するとともに、前記MVCのモデルで分類された前記クラスのうちのV(ビュー)をV(ビュー)として、かつC(コントローラ)を業務処理の機能をするS(サービス)とイベントハンドラの機能をするR(リクエストハンドラ)とに分類し、この分類された各クラスのクラス情報を前記設計情報記憶手段に記憶させる分類手段と、
前記分類手段により分類された各クラスを分類元の各クラスの関連付けに基づいて関連付け、この関連付けの結果をクラス間関連情報として前記設計情報記憶手段に記憶させるクラス関連付け手段と
をさらに有することを特徴とする請求項1ないし3のいずれか1項に記載のソフトウェア開発支援装置。 - コンピュータを、
モデル分類されたクラスごとの設計情報であるクラス情報と前記クラス間の関連を表すクラス間関連情報とが記憶される設計情報記憶手段と、
前記クラス間の相互作用のパターンを表す相互作用パターン情報が記憶される相互作用パターン記憶手段と、
前記設計情報記憶手段の中から任意のクラス間関連情報とクラス情報を指定させるとともに前記相互作用パターン記憶手段の中から任意の相互作用パターン情報を指定させ、前記指定されたクラス間関連情報とクラス情報から前記指定された相互作用パターン情報のパターンを満たすクラスとメソッドを抽出してクラス間相互作用情報を生成するクラス間相互作用生成手段
として機能させるためのコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002272146A JP2004110415A (ja) | 2002-09-18 | 2002-09-18 | ソフトウェア開発支援装置とコンピュータプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002272146A JP2004110415A (ja) | 2002-09-18 | 2002-09-18 | ソフトウェア開発支援装置とコンピュータプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004110415A true JP2004110415A (ja) | 2004-04-08 |
Family
ID=32269246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002272146A Pending JP2004110415A (ja) | 2002-09-18 | 2002-09-18 | ソフトウェア開発支援装置とコンピュータプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004110415A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006216038A (ja) * | 2005-02-04 | 2006-08-17 | Microsoft Corp | セキュリティクリティカルデータコンテナ |
JP2007066219A (ja) * | 2005-09-02 | 2007-03-15 | Nippon Telegr & Teleph Corp <Ntt> | シーケンス図作成方法及びその装置 |
KR101552914B1 (ko) * | 2007-01-30 | 2015-10-01 | 에스케이커뮤니케이션즈 주식회사 | 웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체 |
-
2002
- 2002-09-18 JP JP2002272146A patent/JP2004110415A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006216038A (ja) * | 2005-02-04 | 2006-08-17 | Microsoft Corp | セキュリティクリティカルデータコンテナ |
JP2007066219A (ja) * | 2005-09-02 | 2007-03-15 | Nippon Telegr & Teleph Corp <Ntt> | シーケンス図作成方法及びその装置 |
JP4678770B2 (ja) * | 2005-09-02 | 2011-04-27 | 日本電信電話株式会社 | シーケンス図作成方法及びその装置 |
KR101552914B1 (ko) * | 2007-01-30 | 2015-10-01 | 에스케이커뮤니케이션즈 주식회사 | 웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9977672B2 (en) | Attributing authorship to segments of source code | |
US8869111B2 (en) | Method and system for generating test cases for a software application | |
US7730007B2 (en) | IT event data classifier configured to label messages if message identifiers map directly to classification categories or parse for feature extraction if message identifiers do not map directly to classification categories | |
CN106155651B (zh) | 应用程序版本的自动化发布及更新的方法和系统 | |
US8229778B2 (en) | Constructing change plans from component interactions | |
JP6673359B2 (ja) | システム構築支援システム、方法およびプログラム | |
JP5350428B2 (ja) | 自動プログラム生成装置、方法及びコンピュータプログラム | |
CN109117164A (zh) | 基于关键元素差异性分析的微服务更新方法及系统 | |
CN109902117A (zh) | 业务系统分析方法和装置 | |
US8615729B2 (en) | Extending existing model-to-model transformations | |
JPH10254689A (ja) | クライアント・サーバシステムのアプリケーション構成設計支援方式 | |
CN108089879A (zh) | 增量更新方法、设备及可编程设备 | |
CN103984554B (zh) | 软件设计文档的生成方法及装置 | |
Rouhi et al. | Towards a formal model of patterns and pattern languages | |
JP2008225898A (ja) | 変換装置、変換プログラム及び変換方法 | |
JP2004110415A (ja) | ソフトウェア開発支援装置とコンピュータプログラム | |
Beurer-Kellner et al. | Round-trip migration of object-oriented data model instances. | |
JP5206268B2 (ja) | ルール作成プログラム、ルール作成方法及びルール作成装置 | |
US10657476B2 (en) | Just in time compilation (JIT) for business process execution | |
JP2009163566A (ja) | ジョブ解析支援装置 | |
Tong et al. | A Review: Methods of Acceptance Testing | |
Zhou et al. | MiniDB: A Teaching Oriented Lightweight Database | |
JPH0346059A (ja) | ドキュメント作成管理方式 | |
JP2002014846A (ja) | ジョブ検査装置、ジョブ検査方法、及びジョブ検査プログラムを記録した記録媒体 | |
JP2003208309A (ja) | ソフトウェア開発支援装置、コンピュータプログラム、ソフトウェア開発支援方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050912 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070921 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071002 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080219 |