JP2000305766A - オブジェクト指向ソフトウェア開発支援装置および開発支援方法 - Google Patents

オブジェクト指向ソフトウェア開発支援装置および開発支援方法

Info

Publication number
JP2000305766A
JP2000305766A JP11206170A JP20617099A JP2000305766A JP 2000305766 A JP2000305766 A JP 2000305766A JP 11206170 A JP11206170 A JP 11206170A JP 20617099 A JP20617099 A JP 20617099A JP 2000305766 A JP2000305766 A JP 2000305766A
Authority
JP
Japan
Prior art keywords
pattern
target model
information
development
pattern information
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.)
Granted
Application number
JP11206170A
Other languages
English (en)
Other versions
JP3765949B2 (ja
Inventor
Tadahiro Uehara
忠弘 上原
Rieko Yamamoto
里枝子 山本
Hiroko Nakayama
裕子 中山
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP20617099A priority Critical patent/JP3765949B2/ja
Priority to US09/472,896 priority patent/US6651240B1/en
Priority to EP00300121A priority patent/EP1030242A3/en
Publication of JP2000305766A publication Critical patent/JP2000305766A/ja
Application granted granted Critical
Publication of JP3765949B2 publication Critical patent/JP3765949B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented

Landscapes

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

Abstract

(57)【要約】 【課題】 オブジェクト指向ソフトウェアの開発にあた
り、分析パターン、設計パターンなどを体系的に適用し
て、パターンを適切、かつ効率的に再利用可能とし、ソ
フトウェア開発を支援する。 【解決手段】 利用可能な複数のパターンのパターン情
報3と、開発時に前後関係があるパターンの間を関連づ
けるパターン間関連情報4とを格納する手段2と、手段
2に格納されているパターンのうちでユーザによって適
用が承認されたパターンを開発対象モデルに適用して該
モデルを詳細化し、該モデルに対応するソフトウェアの
開発を支援する手段5とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はオブジェクト指向ソ
フトウェア開発支援技術に係り、更に詳しくはオブジェ
クト指向モデルの動作と構造を定義するパターン、例え
ば分析パターン、設計パターン、および実装パターンを
体系的に定義し、それらのパターンを開発対象モデルに
適用することによってモデルの自動的な詳細化を行うと
共に、そのモデルに適合するソースコードの自動生成を
行うオブジェクト指向ソフトウェア開発支援装置に関す
る。
【0002】
【従来の技術】オブジェクト指向ソフトウェア技術と
は、現実世界のもの(オブジェクト)を構成単位として
ソフトウェアを開発しようとする技術であり、近年多く
のオブジェクト指向分析・設計手法が提案されている。
【0003】オブジェクト指向分析・設計手法では、分
析や設計で記述すべき仕様書の作成手順が定められ、ま
たこれらの仕様書を作成するために仕様書作成作業を支
援するためのソフトウェア分析・設計支援装置が用いら
れている。
【0004】これらのソフトウェア分析・設計支援装置
では、例えば良い設計をするために過去に作成された設
計のノウハウなどをパターン化し、再利用可能な形式で
まとめた設計パターンが利用されることがある。このパ
ターンは開発プロジェクト内でノウハウを共有するため
にも用いられいる。
【0005】このようなパターンとして、設計時にはあ
る問題を解決するために構成された複数のオブジェクト
の構造、例えばクラス群とそのクラス群の振舞を記述し
た設計パターンがあり、実装時にはソースコードのコー
ディングノウハウとしての実装パターンがある。また同
様に分析時には、分析モデルに適用するための分析パタ
ーンがある。開発者はパターンに従ってソフトウェアの
モデルおよびプログラムを開発することによって、開発
ノウハウを再利用でき、ソフトウェアの生産性が向上す
る。
【0006】
【発明が解決しようとする課題】このような分析パター
ンや設計パターンについて、近年それらをまとめた書籍
も出版されている(例えばE.Gamma他著「オブジェク
ト指向における再利用のためのデザインパターン」ソフ
トバンク)。しかしながら、それらのパターンを利用す
る方法としては、具体的な開発対象モデルに対して独立
した分析パターンや設計パターンを個々に適用して仕様
書を作成するという程度に留まっていた。また書籍など
で紹介されている既存のパターンには様々なものがある
ため、それらを理解し、開発対象モデルに適切なパター
ンを探し出し、開発対象のアプリケーションへの使い方
を判断して、実際に適用するという一連の作業が大変困
難であるという問題点があった。更にたとえパターンを
理解したとしても、実際に開発対象アプリケーションに
適用できるパターンの割合が低いという問題点もあっ
た。
【0007】従来のパターン適用を支援する装置には、
パターンを適用して仕様書を作成する装置(特開平9−
237180)と、パターンがモデルに対して正しく適
用されているかチェックする装置(特開平9−1982
42)があった。しかし両者ともパターンの構成要素と
開発者が設計するモデルの構成要素の対応をパターン適
用時にユーザが指定するものであり、パターン適用作業
の効率を大きく改善するものではなかった。
【0008】またパターンを自動適用するための技術と
してマクロ展開によるプログラム自動生成があるが、従
来の方法では(特開平1−191233,特開昭61−
72338)、マクロ(変数)展開を行うためにマクロ
と置換える(展開する)値を別途指定する必要があっ
た。
【0009】本発明は、第1にパターンを体系的に登録
して、その体系に基づいてパターンを適用することによ
って、パターンを適切、かつ効率的に再利用可能とし、
ソフトウェアの開発支援をより効率的にすることを目的
とする。第2に既存のパターンだけでなく、開発者が自
らのアプリケーションを対象に抽出されるパターンを新
たに定義して登録することによって、開発対象モデルに
適用可能なパターンの割合を向上させることを目的とす
る。第3にパターンを適用して仕様書を作成するだけで
なく、仕様書に整合するソースコードの生成も自動的に
行うことを目的とする。第4にオブジェクト指向の多様
なパターンを簡単に定義して開発者の望むモデルやプロ
グラムを自動生成することを目的とする。第5にパター
ン自身の内部に展開のためのデータの所在を指定して開
発者による指定の必要性を減らし、ソフトウェア自動生
成を効率化することを目的とする。
【0010】
【課題を解決するための手段】図1は本発明の原理構成
ブロック図である。同図は、オブジェクト指向のソフト
ウェア設計を支援する、オブジェクト指向ソフトウェア
開発支援装置1の構成ブロック図である。
【0011】図1においてパターン体系格納手段2は、
例えばパターン体系格納部であり、オブジェクト指向ソ
フトウェアの開発にあたって、利用可能な複数のパター
ンのパターン情報3と、その複数のパターンのうちで開
発時に前後関係があるパターンの間を関連づけるパター
ン間関連情報4とを格納するものである。
【0012】またパターン適用手段5は、パターン体系
格納手段2に格納されているパターンのうちで、外部、
例えばユーザによって適用が承認されたパターンを開発
対象モデルに適用して、そのモデルを詳細化し、そのモ
デルに対応するソフトウェアの開発を支援するものであ
る。
【0013】本発明の実施の形態においては、パターン
体系格納手段2には、パターン間関連情報4として、ソ
フトウェア開発上の観点と、その観点に対応する選択肢
とを格納することができ、パターン適用手段5はその観
点と選択肢とに対応する、例えばユーザからの指示に応
じて自動的にパターンを選択し、その選択されたパター
ンを開発対象モデルに適用することもできる。
【0014】また本発明の実施の形態においては、パタ
ーン体系格納手段2が複数の各パターン情報に対する検
索キーを更に格納することもでき、パターン適用手段5
は外部から入力される検索キーによって検索されるパタ
ーンのうちで、外部から指示されたパターンを開発対象
モデルに適用することもできる。
【0015】本発明の実施の形態においては更にパター
ン情報定義手段とパターン体系定義手段を備えることも
でき、このパターン情報定義手段は外部からパターンテ
ンプレートの形式を用いて入力されるパターン定義情報
に従ってパターン情報を定義することもでき、またパタ
ーン体系定義手段は外部から入力される情報に従って前
後関係があるパターンの間を関連づけるパターン間関連
情報を定義することもできる。
【0016】本発明の実施の形態においては、ソフトウ
ェア開発支援装置は更に、パターン体系格納手段2に格
納されている複数のパターン情報3とパターン間関連情
報4とに対応するパターン体系を1つのまとまった形式
で表示するパターン体系表示手段と、パターン情報3を
そのパターン情報に対応するテンプレートの形式に従っ
て表示するパターン情報表示手段とを備えることもでき
る。
【0017】また本発明の実施の形態においては、パタ
ーン体系格納手段2に格納されている複数のパターン情
報3とパターン間関連情報4とに対応するパターン体系
を解釈して、開発対象モデルに適用可能なパターンを、
例えばユーザに提示するパターン体系ナビゲート手段を
更に備え、パターン適用手段5が提示されたパターンの
うちでユーザによって適用が承認されたパターンを開発
対象モデルに適用することもできる。
【0018】例えばこの場合、前述の複数のパターンが
開発対象モデルに対応する分析パターン、設計パター
ン、および分析・設計パターンに含まれるクラスの操作
定義に対応するソースコードのひな型としての実装パタ
ーンであって、パターン体系格納手段2がパターン間関
連情報4として、分析・設計パターンと実装パターンと
の関連情報を格納することもでき、パターン適用手段5
が例えばユーザによって選択された分析・設計パターン
を開発対象モデルに適用すると共に、その開発対象モデ
ルのうちで分析・設計パターンが適用された部分に対応
するソースコードを、実装パターンに基づいて自動生成
することもできる。
【0019】また本発明の実施の形態においては、オブ
ジェクト指向ソフトウェア開発支援装置が、パターン適
用手段5によって開発対象モデルへの適用が行われたパ
ターンに対する適用履歴情報を保持するパターン適用履
歴情報格納手段と、保持されている適用履歴情報を解釈
して個々のパターンと、複数のパターン情報とパターン
間関連情報に対応するパターン体系との再利用度、例え
ば適用回数を求めるパターン適用履歴解釈手段とを更に
備えることもできる。
【0020】またこの場合、パターン適用手段5が、パ
ターン適用履歴情報格納手段に保持されている適用履歴
情報を解釈して、パターン適用時に外部から入力される
べきデータをあらかじめ設定して、パターン適用処理の
効率を向上させることもできる。
【0021】また本発明のオブジェクト指向ソフトウェ
ア開発支援装置においてはパターン情報定義手段と、パ
ターン格納手段と、パターン適用手段とを備えることも
可能である。パターン情報定義手段は、外部から与えら
れるパターン定義情報に従って、オブジェクト指向ソフ
トウェアの開発にあたって利用可能なパターンのパター
ン情報を定義して、パターン情報を格納するパターン格
納手段に与えるものであり、パターン適用手段はパター
ン格納手段に格納されているパターン情報を開発対象モ
デルに適用して、該モデルを詳細化し、そのモデルに対
応するソフトウェアの開発を支援するものである。
【0022】この場合、パターン情報定義手段は、開発
対象モデル内ですでに定義されているクラスが持つ属性
のデータを元にして新たな属性、メソッド、リンク、ま
たはクラスを追加するためのパターン情報を定義し、パ
ターン適用手段がそのパターン情報を開発対象モデルに
適用して新たな属性、メソッド、リンク、またはクラス
を追加することができる。
【0023】またパターン情報定義手段は、開発対象モ
デル内ですでに定義されているクラスが持つリンクのデ
ータを元にして、新たなリンク、属性、メソッド、また
はクラスを追加するためのパターン情報を定義し、パタ
ーン適用手段がそのパターン情報を開発対象モデルに適
用して、新たなリンク、属性、メソッド、またはクラス
を追加することができる。
【0024】あるいはパターン情報定義手段は、開発対
象モデル内ですでに定義されているクラスが持つメソッ
ドのデータを元にして、新たなメソッド、属性、リン
ク、またはクラスを追加するためのパターン情報を定義
し、パターン適用手段がそのパターン情報を開発対象モ
デルに適用してメソッド、属性、リンク、またはクラス
を追加することもできる。
【0025】更にパターン情報定義手段は、開発対象モ
デル内ですでに定義されているクラスのデータを元にし
て、新たなクラス、属性、リンク、またはメソッドを追
加するためのパターン情報を定義し、パターン適用手段
がそのパターン情報を開発対象モデルに適用して、新た
なクラス、属性、リンク、またはメソッドを追加するこ
ともできる。
【0026】また本発明の実施形態においては、パター
ン情報定義手段が、追加される属性、メソッド、リン
ク、またはクラスに関するデータとして、すでに定義さ
れているクラス、あるいはそのクラスが持つ属性、メソ
ッド、またはリンクに関するデータを使用してパターン
情報を定義することも、また追加される属性、メソッ
ド、リンク、またはクラスに関するデータを表現する文
字例を、指定された加工方法を用いて表現して、パター
ン情報を定義することも、また定義されているクラス、
あるいはそのクラスが持つ属性、メソッド、またはリン
クのうちで、指定された条件を満たすもののデータを元
にして、新たな属性、リンク、メソッド、またはクラス
を追加するためのパターン情報を定義することもでき
る。
【0027】更に本発明の実施形態においては、パター
ン情報定義手段が、開発対象モデル内ですでに定義され
ているクラス、あるいはそのクラスが持つ属性、メソッ
ド、またはリンクの一部が外部、例えばユーザによって
指定されるべきことを示すデータを含んでパターン情報
を定義し、パターン適用手段がそのクラス、あるいはそ
のクラスが持つ属性、メソッド、またはリンクのユーザ
による指定を求め、その指定の結果に応じて、そのパタ
ーン情報を開発対象モデルに適用することもできる。
【0028】本発明のオブジェクト指向ソフトウェア開
発支援装置は、その実施形態として外部パターン展開手
段を更に備えることもできる。外部パターン展開手段
は、例えばユーザによって独自に規定されたパターン解
釈ルールを保持し、そのパターン解釈ルールを用いてパ
ターン情報の解釈を行うものである。
【0029】この場合、パターン情報定義手段は、その
パターン解釈ルールを用いて解釈すべきことが指定され
ている部分を含んでパターン情報を定義し、パターン適
用手段が、そのパターン情報の適用にあたって、外部パ
ターン展開手段の解釈結果を使用して、パターンを適用
することになる。
【0030】更に本発明のオブジェクト指向ソフトウェ
ア開発支援装置では、その実施形態として、パターン情
報定義手段が、パターン適用手段によるパターンの適用
中に外部、例えばユーザから入力される文字列を開発対
象モデルに組み込むべきことを指定する部分を含んでパ
ターン情報を定義し、パターン適用手段が、そのパター
ン情報の適用にあたって、外部から入力される文字列を
開発対象モデルに組み込んで、パターンを適用すること
も可能である。
【0031】本発明のソフトウェア設計支援方法におい
ては、オブジェクト指向ソフトウェアの開発にあたって
利用可能な複数のパターンのパターン情報と、その複数
のパターンのうちで開発時に前後関係があるパターンの
間を関連づけるパターン間関連情報とを格納し、該格納
されているパターンのうちで外部、例えばユーザにって
適用が承認されたパターンを開発対象モデルに適用し
て、そのモデルを詳細化し、そのモデルに対応するソフ
トウェアの開発を支援する方法が用いられる。
【0032】更に本発明のオブジェクト指向ソフトウェ
ア開発支援装置において使用される記憶媒体として、オ
ブジェクト指向ソフトウェアの開発にあたって利用可能
な複数のパターンのパターン情報と、その複数のパター
ンのうちで開発時に前後関係があるパターンの間を関連
づけるパターン間関連情報とを格納させる機能と、格納
されているパターンのうちで例えばユーザによって適用
が承認されたパターンを開発対象モデルに適用させて、
そのモデルを詳細化させ、そのモデルに対応するソフト
ウェアの開発を支援させる機能とを備えるプログラムを
格納した計算機読出し可能記憶媒体を用いることができ
る。
【0033】以上のように本発明によれば、例えば開発
対象モデルに適合する分析・設計パターンと、その分析
・設計パターンに関連する実装パターンとを体系的に開
発対象モデルに適用することによって、そのモデルに対
応するソフトウェアの開発を効率的に支援することが可
能となる。
【0034】
【発明の実施の形態】図2は本発明のオブジェクト指向
ソフトウェア開発支援装置の基本構成ブロック図であ
る。同図において開発支援装置はパターン体系格納部1
1、パターン体系ナビゲート部12、パターン適用部1
3、パターン情報定義部14、パターン体系定義部15
を基本的な構成要素としている。
【0035】パターン体系格納部11は、例えば分析パ
ターンや設計パターンなどの各種のパターンを体系的に
整理し、各パターンのパターン情報16と、パターンと
パターンの間のパターン間関連情報17とを保持するも
のである。
【0036】パターン体系ナビゲート部12は、パター
ン体系格納部11に格納されているパターン情報16と
パターン間関連情報17とに対応するパターン体系を解
釈し、開発対象モデルにふさわしいパターンを、例えば
開発担当者としてのユーザに提示するものである。
【0037】パターン適用部13は、例えばパターン体
系ナビゲート部12によって起動され、パターン体系格
納部11に格納されているパターン情報16と、パター
ン間関連情報17とを開発対象モデルに適用してモデル
を詳細化すると共に、適用されたパターンに適合するソ
ースコードを自動生成するものであり、その作用は開発
対象モデル18とソースコード19に、パターンを適用
することに伴う変更を加えることによって行われる。
【0038】パターン情報定義部14は、パターン体系
格納部11に格納されるべきパターン情報16を定義す
るものであり、またパターン体系定義部15はパターン
体系格納部11に格納されるパターン間関連情報17を
定義することによってパターン体系を定義するものであ
る。
【0039】図3は本発明におけるオブジェクト指向ソ
フトウェア開発支援装置の第1の実施形態の構成ブロッ
ク図である。同図は図2と同様の構成を持っているが、
パターン体系格納部11からパターン体系定義部15ま
での、より詳細な構成が示されている。
【0040】まずパターン体系格納部11に格納されて
いるパターン情報16は、例えばHTML(ハイパーテ
キスト マークアップ ランゲージ)形式で記述されて
おり、またCASE(コンピュータ エイデッド ソフ
トウェア エンジニアリング)ツールが利用できる形式
のデータとなっている。またパターン間関連情報17
は、後述するパターン体系の構成子、例えばパターン、
観点、および選択肢に関連する情報が、例えばHTML
形式で格納されている。
【0041】パターン体系ナビゲート部12は、必要に
応じてパターン体系全体、すなわちパターンとパターン
間関連情報を表示するパターン/パターン関連表示部2
1、および例えば後述するキーワードを用いてパターン
を検索するパターン検索部22を備えている。パターン
/パターン関連表示部21およびパターン検索部22と
しては、WWWのクライアントソフト、例えばネットス
ケープやインターネットエクスプローラなどがパターン
体系の表示や、パターンの検索に使用される。
【0042】パターン適用部13は、実装パターン挿入
部26、分析・設計パターン適用部27、およびオブジ
ェクト指向CASE28を備えている。分析・設計パタ
ーン適用部27は、オブジェクト指向CASE28を起
動して、パターン体系格納部11に格納されているパタ
ーン情報16、およびパターン間関連情報17を参照さ
せ、開発対象モデル18に対する編集、および追加を行
わせると共に、適用された分析・設計パターンに含まれ
るオブジェクトのクラスの操作定義に対応するソースコ
ードのひな型としての実装パターンを用いて、後述する
展開済み操作本体ソースコード29を作成し、実装パタ
ーン挿入部26がこのソースコード29を開発対象モデ
ル18に対応するソースコード19に追加することによ
って、ソースコードの自動生成が行われる。
【0043】パターン情報定義部14は、パターン情報
のうちのパターン文書を定義するパターン文書定義部2
3、パターン情報のうちで図面を入力するための作図エ
ディタを有するオブジェクト指向CASE24を備えて
いる。またパターン体系定義部15は、パターン・観点
・選択肢間関連定義部25を備えている。
【0044】図4は本発明の第1の実施形態におけるパ
ターン体系の定義と、定義されたパターンの適用方法の
説明図である。同図においてパターン体系の定義(登
録)は全体の責任者としての開発責任者によって行わ
れ、具体的な開発モデルでのパターンの適用が各モデル
の開発者によって行われるものとする。
【0045】図4において、でパターンの登録とし
て、開発責任者によってパターン体系定義部15を用い
てパターン体系の定義が行われる。すなわち開発責任者
がパターン体系定義者として、例えば質問・想定変更方
式情報編集装置を用いて質問・想定変更方式の情報を入
力する。これによってパターン体系定義部15によっ
て、例えばある1つのプロジェクト、すなわちAプロジ
ェクト向けのパターン体系1とパターン体系2の定義が
行われる。ここでパターン体系1は例えばデータベース
アクセス用のものであり、パターン体系2はクライアン
トとアプリケーションサーバとの間の通信用のものであ
る。定義されたパターン体系は、開発を進める上でプロ
ジェクト全体が守るべき規約として運用される。
【0046】それぞれの開発者はで定義されたパター
ン体系を参照して、開発対象モデルに対する分析、設
計、実装の面で守るべきモデルの構造と振舞の定義、す
なわち規約を確認し、その定義を自分がCASEを用い
て編集している開発対象モデルに反映する。一般的に分
析パターンは文書として確認され、クラスとそれらの間
のメッセージのやり取りが開発対象モデル向けに解釈さ
れた上で、開発者によってモデルに追加される。
【0047】各開発者はで開発対象モデルにパターン
を適用し、モデルを規約に沿って自動更新(修正)す
る。設計モデルには設計パターンを当てはめるのが一般
的である。設計パターンが適用されると、その設計パタ
ーンに関連づけられた実装パターンに基づいて、自動的
に開発アプリ向けに構成されたソースコード、すなわち
図3で説明した展開済み操作本体ソースコード29がパ
ターン適用部13によって作成される。
【0048】各開発者によってで、設計モデルに基づ
いてCASEツールのソースコード自動生成機能を使用
して、クラスの仕様部に対応するソースコード(C++
であればA.hpp, B.hpp)が生成される。次に図3の実
装パターン挿入部26が起動され、適用対象となるソー
スコード、例えば図3のソースコード19が指定される
と、開発モデルにあったソースコードとして展開済み操
作本体ソースコード29が適切な場所に自動的に挿入さ
れる。なおここで操作本体という用語はC++をソフト
ウェア言語の具体例として発明の実施形態を説明するた
めに使用されている。C++では操作定義が操作仕様(
**.hppに書く)と操作本体(**.cppに書く)とに分けて
書かれる。
【0049】図5は本発明の第1の実施形態における、
パターン体系の定義から開発の終了までの、ソフトウェ
ア開発処理全体のフローチャートである。同図において
処理が開始されると、まずステップS1とS2でパター
ン体系定義部15とパターン情報定義部14とが同時に
起動され、ステップS3でパターン体系定義部15によ
る処理、ステップS4でパターン情報定義部14による
処理が並行して実行され、これらの処理が終了するとス
テップS5でパターン体系格納部11にパターン情報1
6とパターン間関連情報17が格納され、ステップS6
でパターン体系の定義が終了したか否かが判定され、終
了していない場合にはステップS1,S2以降の処理が
繰り返される。
【0050】ステップS6でパターン体系の定義が終了
したと判定されると、ステップS7でそのパターン体系
が各開発者に配布、公開され、ステップS8でパターン
体系ナビゲート部12が起動され、ステップS9でパタ
ーン体系ナビゲート部12による処理が実行され、ステ
ップS10でパターン適用部13による処理が実行さ
れ、ステップS11で開発が終了したか否かが判定さ
れ、終了していない場合には、ステップS8以降の処理
が繰り返され、開発が終了したと判定された時点で全て
の処理を終了する。
【0051】図6は定義されたパターン体系の例であ
る。同図においてパターン体系は、パターンを表す四角
形、ソフトウェア開発上の観点、およびその観点に関連
する選択肢としてのケースを矢印で結んだものとなって
いる。
【0052】図6において左側は1つのドメインオブジ
ェクトを単独で更新する場合、例えば受注明細伝票の単
一更新の場合のパターン体系であり、右側は複数のドメ
インオブジェクトの更新、例えば品目の大量順次更新の
場合のパターン体系の例である。左側のパターン体系で
は、分析パターンの識別子(ID)がA2の分析パター
ンからパターン体系が始まり、更新するドメインオブジ
ェクトの数についての観点からケース、すなわち選択肢
が1つのドメインオブジェクトを単独で更新する場合を
対象として、D5の設計パターンとI5の実装パターン
とが適用される形式の体系となっている。
【0053】右側の複数ドメインオブジェクトの更新の
パターン体系では、複数のドメインオブジェクトを一括
して更新するケース(選択肢)であることから、D6の
設計パターンが適用され、その後アプリケーション(A
P)サーバ上に更新対象となる全てのドメインオブジェ
クトが生成されるか、生成されるオブジェクトは1つだ
けに限定されるかによって2つのケースに分かれ、更に
全てのドメインオブジェクトがAPサーバのメモリ上に
生成される場合には、ドメインオブジェクトの更新用の
データがAPサーバ側にキャッシュされるか、DB(デ
ータベース)サーバ側にキャッシュされるかによって2
つのケースに分かれ、それぞれの場合について対応する
設計パターンと実装パターンが適用される体系となって
いる。
【0054】なおここで設計パターンD6では、ここま
での処理において共通に使えるオブジェクトのクラスの
構造とその振舞が定義される。例えば3つのクラスA,
B、及びCが必要であるとすれば、その構造とそれらの
クラスの間のやり取りが定義される。すなわち外部仕様
が定義されることになる。このような定義には実装コー
ドは関連づけられることはない。その理由は実際に動作
するソースコードを作成するには、更に詳細な設計が必
要なためである。
【0055】例えば設計パターンD9では更に設計が詳
細化される。例えばクラスCの属性としてキャッシュ操
作を表す属性が持たされたり、そのキャッシュの実装方
法が追加される。すなわち内部仕様が定義されることに
なり、そこで実装コードを関連づけることができる。但
しそのクラスCの外部仕様(操作のインタフェース定義
など)は、設定パターンD6で定義されたものと同じで
ある。
【0056】またAPサーバ上に生成されるドメインオ
ブジェクトが1つだけに限定される場合に、更新データ
のキャッシュ場所の観点に対する選択肢(ケース)はA
Pサーバ側に更新用のデータがキャッシュされる場合に
限られることになるが、これは通信による性能低下を防
止するためであ。性能、すなわちパターン体系の適用に
必要な時間はAPサーバとDBサーバとの間の通信回数
が少ない方が圧倒的に向上、すなわち短くなる。そこで
通信回数ができるだけ少なくするようにパターンが作成
される。
【0057】APサーバのメモリ上に作成されるオブジ
ェクトが1つに限られる場合には、APサーバにDBサ
ーバから渡されたデータをそのまま保持しておいて、必
要に応じてその1つのオブジェクトに対するデータの読
み書きを行う。DBサーバ側にドメインオブジェクトの
更新用のデータをキャッシュしておいたのでは、APサ
ーバのメモリを節約することはできても、毎回データの
読み書きのたびに通信を行う必要があり、性能は低下す
ることになる。
【0058】図7はパターン情報定義部14の処理フロ
ーチャートである。同図において処理が開始されると、
まずステップS16でパターン定義書式、例えば後述す
るパターン情報書式が読み込まれ、定義画面の表示が行
われ、ステップS17で定義終了か否かが判定される。
定義終了でない場合にはステップS18でユーザ、すな
わち個々の開発者が定義情報を入力すべきフィールドを
選択し、ステップS19でそのフィールドが図が入力さ
れるフィールドか否かが判定される。
【0059】図を入力するフィールドでない場合には、
ステップS20でユーザによってそのフィールドに定
義、例えばパターン情報としてのパターン文書の入力が
行われ、ステップS21でその入力が終了するとステッ
プS17以降の処理が繰り返される。
【0060】ステップS19で選択されたフィールドが
図を入力するフィールドである場合には、ステップS2
2でオブジェクト指向CASEの作図エディタが起動さ
れ、ステップS23で図の編集が行われ、ステップS2
4で編集が終了した図が保存され、ステップS25で編
集された図が定義情報にリンクされて、ステップS17
以降の処理が繰り返される。
【0061】ステップS17で定義が終了したと判定さ
れると、ステップS26で編集情報の保存が行われ、ス
テップS27でその情報のHTML形式の変換が行わ
れ、その形式のデータが保存され、ステップS28でパ
ターン情報としてパターン体系格納部11のメモリへの
新規登録、または上書きが行われて、処理を終了する。
【0062】図8はパターン体系定義部15の処理フロ
ーチャートである。同図において処理が開始されると、
まずステップS30でパターン体系定義画面、例えば図
6のようなパターン体系を定義するための画面が表示さ
れ、ステップS31で定義が終了したか否かが判定され
る。終了していない場合には、ステップS32でユー
ザ、すなわち開発者によってパターン体系の構成子のう
ちの1つが選択される。ここでパターン体系の構成子と
はパターンの間の関連を示す矢印、パターンすなわち図
6の四角形、観点、あるいは選択肢(ケース)のいずれ
かであるとする。
【0063】ステップS33で構成子の種類は何かが判
定され、パターンである時にはステップS34で図形の
領域、例えば四角形の中にパターンカテゴリ、名前、パ
ターン番号などが記入され、ステップS35でそのパタ
ーンのリンク先としてパターン情報定義のHTMLファ
イルが指定された後に、ステップS31以降の処理が繰
り返される。
【0064】ステップS33で構成子の種類が関連、す
なわち矢印である場合には、ステップS36で関連する
構成子が線で結ばれた後に、また観点あるいは選択肢で
ある時には、ステップS37で図形の領域中に観点、ま
たは選択肢を示す文が入力された後に、ステップS31
以降の処理が繰り返される。
【0065】ステップS31で定義終了と判定される
と、ステップS38で編集情報が保存され、ステップS
39でその情報がHTML形式に変換され、その形式の
情報が保存され、ステップS40でパターン体系(パタ
ーン間関連情報)としてパターン体系格納部11に新規
登録、または上書きされて、処理を終了する。
【0066】図9、および図10はパターン情報定義例
を示す。パターン情報としては、文書やクラス図、およ
びシーケンス図など、人間が読める情報と、オブジェク
ト指向CASEツールが理解可能な形式の情報との2種
類が用意される。
【0067】図9は人間が読める情報の例であり、図6
のパターン体系の中での設計パターンD9のパターン情
報定義例である。その内容は文書としてのパターンの名
前や課題、および説明に加えて、設計パターンに対応す
るクラス図、図示しないシーケンス図(MTD)などか
ら構成されている。
【0068】図10は、オブジェクト指向CASEツー
ルを利用して、パターンモデルの形式で定義されるパタ
ーン情報定義の例である。一般にオブジェクト指向技術
ではパターンという概念は繰返し表れる問題とその解決
法の組と定義されていて、本発明においてはパターンを
パターン文書、すなわちパターンの内容を説明するドキ
ュメントと、パターンモデル、すなわちソースコードの
自動生成用の情報を格納し、CASEツールが理解可能
なモデルとの2つで構成されるものとする。パターンモ
デルという用語と開発対象モデルという用語における
“モデル”という用語は異なる意味を持つものである。
【0069】図11はパターン情報定義例としての実装
パターン定義画面の例を示す。図12は、例えば図7の
ステップS16で用いられるパターン情報定義書式とし
てのテンプレートの例である。このようなテンプレート
を用いることによって、パターン定義情報の入力を容易
にさせることができる。なおこのテンプレートにおいて
シナリオは具体例の説明であり、オブジェクト図はイン
スタンスの構造を示し、シーケンス図はインスタンス間
でのインタラクションを示す。
【0070】図13はパターン体系ナビゲート部12の
処理フローチャートである。同図において処理が開始さ
れると、まずステップS41でユーザによってパターン
体系が選択され、ステップS42でパターン体系が読み
込まれ、パターン体系の発端のパターンが自動的に選択
され、そのプロパティ“ステータス”が“初期状態”と
される。ここで発端のパターンとは、例えば図6におい
て矢印によって示されていないパターンA2,A3であ
り、ステップS42ではこれらのパターンのプロパティ
“ステータス”が“初期状態”とされる。
【0071】続いてステップS43でパターン体系が表
示され、ステップS44でユーザによるHTML画面で
の選択が行われ、ユーザがパターン体系中の1パター
ン、ここでは発端のパターンA2,A3のうちのいずれ
かを選択すると、ステップS45で選択されたパターン
情報のステータスが“初期状態”から“選択中”に変更
される。そしてステップS46で選択されたパターンの
詳細化パターンのステータスが“自動適用”にされる。
この詳細化パターンとは、選択されたパターンの先で更
に詳細化した情報を定義しているパターンのことであ
り、例えばA2が選択された場合にはD5が詳細化パタ
ーンであり、A3が選択された場合にはD6が詳細化パ
ターンである。
【0072】ステップS47で選択されたパターンのパ
ターン定義情報としての文書情報が表示され、ステップ
S48でHTML画面でのユーザによる選択が行われ
る。ユーザによって適用ボタンが押された場合には、ス
テップS49で選択されたパターン情報、例えばA2の
ステータスが“適用中”とされ、ステップS50でパタ
ーン適用部が起動され、パターンA2の適用が行われ
る。
【0073】その後ユーザに対してステータスが“自動
適用”となっているパターン情報の名前、例えばD5が
示され、自動適用を続けるかどうかの問い合わせが行わ
れ、自動適用を続けるとの指示があった場合には、ステ
ップS53で“選択中”のパターン、例えばA2のステ
ータスが“適用済”とされ、“自動適用”のパターン、
例えばD5のステータスが“適用中”とされ、今までス
テータスが“自動適用”であったパターンの詳細化パタ
ーン、例えばパターンI5のステータスが“自動適用”
とされた後にステップS50でパターン適用部13が起
動され、ステータスが“適用中”となったパターン、こ
こではD5の適用が行われ、以後次々と矢印によって関
連づけられる先のパターンの適用が行われる。
【0074】ステップS52で自動適用しないと判定さ
れた場合には、ステップS47でステータスが“自動適
用”となっているパターン情報の文書情報が表示され
る。これは例えばユーザがパターンの自動適用を続ける
か否か判断がつかない場合に、その文書情報を表示する
ことによってユーザの判断を促すためである。そしてス
テップS48のHTML画面での選択において再び適用
ボタンが押されると、ステップS49以降の処理が繰り
返される。
【0075】ステップS48において詳細化パターンの
いずれか、すなわちステップS44で選択されたパター
ンの先にあるパターンのいずかが選択されると、“選択
中”、すなわち選択されたパターンのステータスがステ
ップS54で“参照済”にされた後に、ステップS45
で選択されたパターン、すなわち詳細化パターンのステ
ータスが“選択中”とされる処理以降が繰り返される。
【0076】更にステップS48でHTML画面におい
てユーザによって“閉じる”が選択されると、ステップ
S55で“選択中”のパターンと、その詳細化パターン
のステータスが以前のステータスの値、例えば“初期状
態”に戻された後、ステップS56でパターン定義情報
表示ウィンドウが閉じられ、ステップS43でパターン
体系が表示された後に、例えばステップS44でHTM
L画面で“閉じる”が選択されることによって、処理が
終了する。
【0077】図14,図15はパターン情報表示画面の
例である。図14の画面においてスクロールを行うこと
によって、図15の画面が表れる。図15の下部の適用
ボタンを押すことが、図13のステップS48でのHT
ML画面での適用ボタンを押す選択に相当する。
【0078】図16はパターン体系表示画面の例であ
る。図14,図15のパターン情報表示画面と同様に、
例えばネットスケープを用いることによって、このよう
な画面表示を行うことができる。
【0079】図17〜図20はパターン適用部13の処
理フローチャートである。本発明の実施形態において
は、実際の開発対象モデルを取り扱うために開発アプリ
ケーション毎に与えるべき固有の情報を処理するため
に、パターン適用部13によって解釈が可能なある形式
の変数、例えば$$Target$$が用いられる。この形式
の変数は、既存技術としてのマクロ展開方式を基本技術
として用いる方式で各種用意されている。パターン適用
部13はこの形式の変数を解釈して、開発アプリケーシ
ョン毎に必要となる情報の入力画面を表示し、ユーザ、
すなわち開発者からの入力を得て、その値を展開、例え
ば代入する。
【0080】図17はパターン適用部13の全体処理フ
ローチャートである。同図において処理が開始される
と、まずステップS60で開発対象モデルファイル名、
パターンモデルファイル名の入力ウィンドウが表示さ
れ、これらの名前がユーザによって入力される。そして
ステップS61でパターンモデルファイルが読み込ま
れ、ステップS62でパターンモデル中の展開ターゲッ
ト($$Target$$)の情報の入力ウィンドウが表示さ
れ、ユーザによってターゲットの名前(クラス名など)
の入力が行われる。ステップS63で開発対象モデルが
読み込まれ、ステップS64でパターンモデルファイル
中の全てのクラス定義に関してステップS65〜ステッ
プS77までの処理が繰り返される。
【0081】まずステップS65において、パターンモ
デルファイル中の1つのクラスが追加クラス名として設
定され、そのクラス定義中の展開ターゲットがユーザに
よって入力された値、またはその値を解釈した結果で置
き換えられる。そしてそのクラス用の実装パターン適用
結果ファイルが作成、すなわち準備される。続いてステ
ップS66で開発対象モデルに追加クラス名と同じ名前
を持つクラスがあるか否かが判定され、ある場合にはス
テップS67でそのクラスが処理対象クラスとされ、ス
テップS68で追加クラスの全ての属性定義の展開が行
われる。このステップの処理については図18で説明す
る。
【0082】続いてステップS69で追加クラスの全て
の属性に関して処理対象クラスの中に同じ属性定義がな
いか否かが調べられ、ない場合にはその属性定義が処理
対象クラスに追加され、“パターン##を適用した”こ
とがその属性定義の仕様に加えられ、ステップS70で
追加クラスの全ての操作定義が展開される。このステッ
プの処理については図19で説明する。ここでパターン
##は、例えばパターンモデルファイルのファイル名で
ある。
【0083】ステップS71で追加クラスの全ての操作
定義に関して処理対象クラスに同じ操作定義がないか否
かが調べられ、ない場合にはその操作定義が処理対象ク
ラスに追加され、“パターン##を適用した”ことがそ
の操作定義の仕様に加えれら、ステップS72で全ての
クラス定義を処理したか否かが判定され、まだ処理され
ていない場合にはステップS65以降の処理が繰り返さ
れる。
【0084】ステップS66で開発対象モデルに追加ク
ラス名と同じ名前を持つクラスがない場合には、開発対
象モデルに対して追加クラスを関連するクラスとして追
加する必要がある。そこでステップS73で追加クラス
の定義が開発対象モデルに追加され、ステップS74で
追加クラスの全ての属性定義が展開される。このステッ
プの処理は図18の処理である。
【0085】続いてステップS75で開発対象モデルに
追加されたクラスに対して全ての属性定義が追加され、
“パターン##を適用した”ことがその属性定義の仕様
に加えられ、ステップS76で追加クラスの全ての操作
定義が展開される。このステップの処理は図19の処理
である。
【0086】ステップS77で開発対象モデルに追加さ
れたクラスに全ての操作定義が追加され、“パターン#
#を適用した”ことがその操作定義の仕様に加えられ、
ステップS72の処理に移行する。
【0087】ステップS72で全てのクラス定義が処理
されたと判定された場合には、ステップS78でパター
ンモデルファイルにある全ての関係定義が展開される。
この処理については図20で説明する。続いてステップ
S79でパターンモデルファイルの中の全ての関係定義
に関して開発対象モデルに同じ関係定義がないかが調べ
られ、もしなければその関係定義が開発対象モデルに追
加され、“パターン##を適用した”ことがその関係定
義の仕様に加えられて、処理を終了する。
【0088】図18は図17のステップS68、および
S74の処理の詳細フローチャートである。同図におい
ては、追加クラスの全ての属性定義を展開する処理とし
て、まずステップS81で追加クラスの全ての属性定義
(名前、型、初期値など)が調べられ、未知の“展開タ
ーゲット”を示す文字列がある場合には、ユーザの入力
を求める入力ウィンドウが表示され、ユーザによってタ
ーゲットの値が入力され、ステップS82で属性定義中
の“展開ターゲット”が入力された値、またはその値を
解釈した結果に置き換えられて処理を終了する。
【0089】図19は図17のステップS70,S76
の処理の詳細フローチャートである。同図においては、
追加クラスの全ての操作定義を展開するために、まずス
テップS84で追加クラスの全ての操作定義(名前、引
数の数、各引数の型、返却値の型など)が調べられ、未
知の“展開ターゲット”を示す文字列があれば、ユーザ
に対して入力を求める入力ウィンドウが表示され、ユー
ザによってターゲットの値が入力され、ステップS85
で操作定義中の“展開ターゲット”が入力された値、ま
たはその値を解釈した結果に置き換えられ、ステップS
86で操作定義中の仕様に実装パターンが定義されてい
る場合には仕様の中の“展開ターゲット”が入力された
値、またはその値を解釈した結果に置き換えられ、操作
名、引数名、引数の型、返却値の型、仕様を使って、展
開した操作本体(本来の操作の中味)が実装パターン適
用結果ファイルに書き出されて、処理を終了する。
【0090】図20は図17のステップS78、すなわ
ちパターンモデルファイルにある全ての関係定義を展開
する処理の詳細フローチャートである。同図においてス
テップS88でパターンモデルファイル内の全ての関係
定義(関係先のクラス名、関係元のクラス名など)が調
べられ、未知の“展開ターゲット”を示す文字列がある
場合にはユーザに対して入力を求める入力ウィンドウが
表示され、ユーザによってターゲットの値が入力され、
ステップS89で関係定義中の“展開ターゲット”が入
力された値、またはその値を解釈した結果に置き換えら
れて、処理を終了する。
【0091】図21はパターンの適用対象となる開発モ
デルの例である。例えば“GASample”がオブジェクト
のクラス名であり、このような開発モデルに対してパタ
ーン適用部13が起動されることになる。
【0092】図22は図17のステップS60,S62
などで、パターン適用部13によって表示されるユーザ
入力画面の例である。ここでは開発モデルファイル名、
パターンモデルファイル名、および前述の変数$$Targ
et$$が“GASample”という文字列であることがユー
ザによって入力されている。
【0093】図23は、例えば図18のステップS81
で表示される入力画面の例であり、また図24は例えば
図19のステップS84において表示されるユーザ入力
画面の例である。このようにパターン適用部13は、パ
ターンの適用の処理中に必要なデータのユーザ入力を促
し、ユーザの入力結果を用いて文字列変換などの処理を
進める。
【0094】図25はパターンの適用が終了して、モデ
ル変更が自動的に行われた後の開発モデル例の一部であ
る。図21においてGASampleしか定義されていなかっ
たモデルが、パターンの適用によってGASample Manag
er, GASample Entity など必要なクラス、継承関係や
関連の定義が追加され、GASample自体にも属性や操作
が追加されている。例えばGASample Entity に対して
は表示が省略されているが、属性、操作など全ての定義
が行われている。
【0095】図26はパターンモデルファイルの中のタ
ーゲットマネージャクラスの定義の例を示す。この定義
がGASample Managerクラスに展開されて、開発対象モ
デルに追加される。
【0096】図27は実装パターン適用結果ファイルの
出力例である。ターゲットマネージャクラスの操作定義
として、ソースコードのひな型としての実装パターンが
あらかじめ定義されており、その定義の中の$$Target
$$のような変数がGASampleなどの値に展開されて、
図27のような実装パターン適用結果ファイル、すなわ
ち操作本体が出力される。
【0097】図28はユーザによるソースコード生成時
の操作、すなわち実装パターン挿入部26の起動処理の
フローチャートである。同図においてステップS91で
開発対象モデルファイルから、CASEツールのソース
コード自動生成機能を使ってソースコードの生成が行わ
れる。C++の場合にはデフォルトで“クラス名.h”と
“クラス名.cpp”とが生成され、ステップS92で実装
パターン挿入部26の自動起動が行われて処理を終了す
る。
【0098】図29は実装パターン挿入部26の処理フ
ローチャートである。図28のステップS92で自動起
動された実装パターン挿入部26の処理が開始される
と、まずステップS95で実装パターンが挿入される対
象のソースファイル名と、実装パターン適用結果ファイ
ル名との入力をユーザに求めるウィンドウが表示され、
ユーザによってそれらのファイル名が入力され、ステッ
プS96でソースファイルのバックアップが行われ、ソ
ースファイル名が例えば“ソースファイル名.back ”に
変更され、ステップS97でソースファイル名と同じフ
ァイルが新規作成され、操作本体挿入結果ファイルの準
備が行われ、ステップS98でソースファイルのバック
アップファイルの現在行が先頭行とされ、ステップS9
9でソースファイルのバックアップファイルから現在行
が読み込まれ、ステップS100で現在行がそのファイ
ルの終了行であるか否かが判定され、終了行である場合
には直ちに処理を終了する。
【0099】終了行でない場合には、ステップS101
で操作本体、すなわち挿入されるべきソースコードの先
頭行に相当する行であるか否かが判定され、先頭行に相
当する行である場合にはステップS102で実装パター
ン適用結果ファイルにその操作本体があるか否かが調べ
られる。すなわち操作名、返却値の型、引数の数、各引
数の型と順序などが比較され、ステップS103でその
操作本体があるか否かが判定される。ある場合には、ス
テップS104で実装パターン適用結果ファイルの操作
本体が操作本体挿入結果ファイルに出力され、ステップ
S105でソースファイルのバックアップファイルが操
作本体終了行の次の行まで読み飛ばされた後に、ステッ
プS99以降の処理が繰り返される。
【0100】ステップS101で操作本体コードの先頭
行に相当する行でない場合、およびステップS103で
その操作本体がない場合には、ステップS106で現在
行の内容がそのまま操作本体挿入結果ファイルに出力さ
れ、ステップS107でソースファイルのバックアップ
ファイルの現在行が次の行に進められた後、ステップS
99以降の処理が繰り返される。
【0101】図30、および図31は、図28のステッ
プS91でオブジェクト指向CASEツールによって出
力されるソースコードの例である。これらはGASample
Managerのソースコードであり、図30のヘッダファイ
ルはそのまま使用することができるが、図31のボディ
ファイルには本来のプログラムに相当する操作の中味は
何ら生成されていない。
【0102】図32は、例えば図29のステップS95
でユーザに対して表示されるユーザ入力画面の例であ
る。例えば、この図の各入力フィールドには、ソースコ
ード生成の対象となっているクラス名から一般的に推測
されるファイル名があらかじめ表示されている。適用ボ
タンが押されることによって実装パターン挿入部26に
入力情報が渡され、実装パターン挿入部26の実質的な
処理が開始される。
【0103】図33は操作本体が挿入されたGASample
Managerのボディファイルの例である。図31に示され
ている中味のないボディファイルに対して、設計パター
ンに従って定義された実装パターンが展開された図27
の操作本体コードが適切な場所に挿入されている。これ
によって設計パターンに従った設計モデルと、その設計
モデルに対応する実装パターンが取り入れられたソース
コードの自動生成が行われたことになる。
【0104】本発明の実施形態においては、パターン体
系格納部11に格納されているパターン情報16のそれ
ぞれにキーワードをつけておくことにより、そのキーワ
ードによってパターンの検索を行うことができる。図3
4はそのようなキーワードによるパターン検索動作例の
説明図である。同図においては、オブジェクトライフサ
イクル管理というパターン体系を対象にして、“削除”
というキーワードを用いて検索が行われた結果、5つの
パターンが検索され、そのうちで例えばユーザとしての
開発者の指定によって1つのパターン情報の表示が行わ
れている。
【0105】図35は、図34の動作例のように、キー
ワードによってパターン情報を検索する処理のフローチ
ャートである。この処理は例えばパターン検索部22に
よって実行される。同図において処理が開始されると、
まずステップS110で検索対象として指定されたパタ
ーン体系を格納しているフォルダにあるファイルのリス
トが得られ、また検索結果データの初期化が行われる。
そしてステップS111でファイルのリストから先頭の
ファイルが選択され、ステップS112で選択されたフ
ァイルがないか否かが判定される。ファイルがある場合
にはステップS113でファイル、すなわちパターン情
報のキーワードとして、ユーザから入力された文字列が
格納されているか否かが判定され、ある場合にはステッ
プS114でファイルの名前、ファイルの内容の一部が
検索結果データに格納され、ステップS115で次のフ
ァイルが選択されて、ステップS112以降の処理が繰
り返される。
【0106】ステップS113でキーワードとしてユー
ザから入力された文字列がない場合には、ステップS1
15で次のファイルが選択され、ステップS112以降
の処理が繰り返される。ステップS112で選択ファイ
ルがないと判定されると、ステップS116で検索結果
データが表示されて、処理を終了する。
【0107】図36はパターン情報にキーワードをつけ
る場合のパターン情報定義書式の例である。図12と比
較すると、キーワードの入力欄がテンプレート書式に追
加されている。
【0108】図37は本発明のソフトウェア開発支援装
置の第2の実施形態の構成を示すブロック図である。図
3の第1の実施形態と比較すると、パターン適用部13
によって適用されたパターンを記録、参照することによ
って、そのパターンの適用履歴を格納するパターン適用
履歴情報格納部31と、そこに格納されている履歴情報
を参照して、例えば個々のパターンやパターン体系の再
利用度、例えば適用回数などを求めるパターン適用履歴
解釈部32とが追加されている点が異なっている。
【0109】図38はパターン適用履歴情報格納部31
に格納されるパターン適用履歴情報の例である。同図に
おいてパターン適用履歴情報は、ユーザの名前からター
ゲットクラスの名前までの、だれが、いつ、どのファイ
ルを適用したかに関する情報と、ターゲットクラス名称
の所で区別される、属性リストその他の、どのように使
ったかの情報とによって構成されている。
【0110】図39は、パターン適用履歴情報格納部3
1に格納された適用履歴情報を用いる、パターン適用部
13の処理フローチャートである。同図において処理が
開始されると、ステップS120でシステムから時間と
ユーザ情報が求められ、履歴ファイルが作成され、その
履歴ファイルに時間とユーザ情報が出力される。履歴入
力ファイル、すなわちすでにそのパターンが適用され、
パターン適用履歴情報が格納されているときに、その適
用履歴情報に相当する履歴入力ファイルが指定されてい
る場合には、その内容が読み込まれ、展開ターゲット別
に内部データ、すなわち前述の変数$$Target$$に対
応してユーザから入力されるべきデータが求められ、ス
テップS122で図17で説明したパターン適用部13
による処理が実行される。但し、この中でユーザにデー
タの入力を求めるウィンドウにおいて、すでに前述の履
歴入力ファイルの内容によって既知となった内部データ
は、ユーザの入力を待つことなく表示される。
【0111】そしてステップS123でユーザによって
入力された開発対象モデルファイルとパターンモデルフ
ァイルの名前が履歴ファイルに出力され、ステップS1
24で“展開ターゲット”の内容、すなわちステップS
121で読み込まれた内部データの内容がターゲット毎
に履歴ファイルに出力されて、処理を終了する。
【0112】図40は図39の処理によるユーザ入力画
面における内部データの表示例である。同図において、
そのパターンの前回の適用時に作成された履歴ファイル
が履歴入力ファイルとして指定され、ユーザ入力を求め
るウィンドウにその履歴入力ファイルから読み込まれた
ターゲットクラス名があらかじめ表示されている。
【0113】図41は図37のパターン適用履歴解釈部
32による処理のフローチャートである。同図において
処理が開始されると、まずステップS131で履歴ファ
イルが格納されているフォルダがユーザによって入力さ
れ、ステップS132でそのフォルダの中の履歴ファイ
ルの全てのファイルの名前がリストにされ、ステップS
133でそのリストの先頭のファイルが選択され、ステ
ップS134で選択ファイルがないか否かが判定され
る。
【0114】選択ファイルがある場合には、ステップS
135で選択されたファイルからパターンモデルファイ
ルの名前が得られ、ステップS136で同じパターンモ
デルファイル名をキーとしたデータが集計結果データの
中に既に存在するか否かが判定され、存在する場合に
は、ステップS137でそのデータに1が追加された後
に、ステップS138でリストの次のファイルが選択さ
れ、ステップS134以降の処理が繰り返される。
【0115】ステップS136で同じパターンモデルフ
ァイル名をキーにしたデータが存在しない場合には、ス
テップS139でそのパターンモデルファイル名をキー
にする値1のデータが集計結果データの中に新たに登録
された後に、ステップS138以降の処理が実行され
る。そしてステップS134で選択ファイルがすでに存
在しないと判定された時点で、ステップS140で集計
結果データが表示されて、処理を終了する。
【0116】以上においては任意のパターンを定義し、
そのパターンに従って開発対象モデルや、ソースコード
を自動的に詳細化する機能を中心として、オブジェクト
指向ソフトウェア開発支援装置の動作を詳細に説明した
が、自動化のためのパターンをどのように定義し、定義
されたパターンをどのように適用するかについて、比較
的簡単ではあるが、具体的なパターンの例を用いて更に
説明する。
【0117】以後の説明においては、具体的なパターン
の例として、すでに開発対象モデル内で定義されている
オブジェクトのデータを元にして、クラスや、クラスの
属性、メソッド(操作)、リンク(関係)を追加するた
めのパターンを主として、パターンの定義とその適用に
ついて説明する。このようなパターンを用いることによ
り、追加すべき要素についてのデータの指定を簡単化
し、パターン適用作業を効率化することができる。
【0118】図42は、そのようなパターンの定義と、
その適用を説明するためのオブジェクト指向ソフトウェ
ア開発支援装置の基本的なシステム構成ブロック図であ
る。同図は、例えば図3のソフトウェア開発支援装置に
おいてパターン情報定義部14に対応するパターン定義
部101、パターン体系格納部11に対応するパターン
格納部102、パターン適用部13に対応するパターン
適用部103、および開発対象モデル18や、ソースコ
ード19としてのプログラムなどを格納するモデル・プ
ログラム格納部104を備えている。
【0119】前述のように、ここでは例えばすでに開発
対象モデル18内で定義されているオブジェクト指向モ
デルの各要素、例えばクラス、属性、メソッド、リンク
などのデータを元にして、その開発対象モデルに追加す
べき他の要素を規定することができるパターンが定義さ
れ、そのパターンを適用することによって開発対象モデ
ルに必要な要素が追加される。
【0120】例えば開発者によって、そのような要素を
追加するためのパターンがパターン定義部101を用い
て定義され、定義されたパターンがパターン格納部10
2に格納される。パターン適用部103は開発者によっ
て指定された、例えば開発対象モデルをモデル・プログ
ラム格納部104から読み込み、パターン格納部102
に格納されているパターンをその開発対象モデルに適用
することによって、開発対象モデルにオブジェクト指向
モデルの要素を追加したり、変更した後に、その開発対
象モデルをモデル・プログラム格納部104に再度格納
する。
【0121】図43はすでに定義されている属性のデー
タを元にして、新たな属性を追加するパターンの定義
と、その適用の説明図である。同図においてパターン格
納部102に格納されているパターンの先頭の$$Ta
rget$$によって、後述するようにClassAに
そのパターンを適用すべきことが指定される。パターン
適用部103はパターンの中にattributeのキ
ーワードを見つけて、ClassAに新たな属性を追加
するためのパターンであることを認識する。そして$$
attribute$$をモデル・プログラム格納部1
04内ですでに定義されているClassAの属性名、
ここではa、b、cと置き換えて文字列を合成し、それ
を名前とする属性、ここではaFlag、bFlag、
及びcFlagをClassAに新たに追加する。
【0122】図44はモデル・プログラム格納部104
内にすでに定義されているクラスがもつ属性のデータを
元にして、新たなメソッドを追加するパターンとその適
用の説明図である。同図においてパターン適用部103
はパターン中にmethodのキーワードを見つけるこ
とによって、メソッドを追加すべきパターンであること
を認識する。そして$$attribute$$をモデ
ル・プログラム格納部104にすでに格納され、定義済
みの属性名、ここではa、b、cに置き換えて文字列を
合成し、それを名前とするメソッド、ここではgeta
( )、getb( )、およびgetc( )を追加
する。
【0123】図45はクラスが持つ属性のデータを元に
してリンクを追加するパターンの適用例の説明図であ
る。同図においてパターン適用部103はパターンの中
にlinkのキーワードを見つけることによって、リン
クを追加すべきパターンであることを認識する。そし
て、link以降の文字列から、$$attribut
e$$をすでにモデル・プログラム格納部104内で定
義されているクラスAの属性名、ここではa、b、cに
置き換えて、それを名前とするリンク、ここではaRo
le、bRole、およびcRoleをClassBと
の間での新たなリンクとして追加する。なおここで例え
ばaRoleはClassAから見たClassBのロ
ール名とする。
【0124】図46はすでに定義されている属性のデー
タを元にして、クラスを追加するパターンとその適用例
の説明図である。パターン適用部103はパターンの中
のクラス名定義部分、図45のパターンでは$$Tar
get$$の部分に文字列置換変換、すなわち$$at
tribute$$を見つけることによって、クラスを
追加するパターンであることを認識する。そしてその文
字列置換変換をClassAにおいてすでに定義されて
いる属性名、すなわちa、b、cに置き換えて文字列を
合成し、それを名前とするクラス、すなわちXa、X
b、およびXcを新たに追加する。
【0125】図47〜図50は、例えば開発対象モデル
内ですでに定義されているクラスのリンクのデータを元
にして、新たな要素を追加するパターンの適用例の説明
図である。図47において、図45と比較すると$$l
ink$$の部分がすでにClassAとClassB
との間で定義されているリンクの名称、すなわちa、
b、cに置き換えられて、新たなリンクaX、bX、c
Xが追加されている。
【0126】図48においては、図43と比較すると$
$link$$の部分がすでに定義されているリンクの
a,b、およびcに置き換えられ、新たな属性としてa
Flag,bFlag、およびcFlagがClass
Aに追加されている。
【0127】図49においては、図44と比較すると$
$link$$の部分がすでに定義されているリンクの
a,b、およびcに置き換えられ、新たなメソッド、す
なわちgeta( ),getb( )、およびget
c( )がClassAに追加されている。
【0128】図50においては、図46と比較すると$
$link$$の部分がすでに定義されているリンクの
名前としてのa,b、およびcに置き換えられて、新た
なクラスXa,Xb、およびXcが追加されている。
【0129】図51〜図54はすでに定義されているメ
ソッドのデータを元にして、オブジェクトの要素を追加
するパターンとその適用例の説明図である。図51にお
いては、図44と比較すると$$method$$の部
分がすでに定義されているClassAのメソッドの名
前であるa、b、およびcに置き換えられて、新たなメ
ソッドとしてchecka( )、checkb
( )、およびcheckc( )がClassAに追
加されている。
【0130】図52においては、図43と比較すると$
$method$$の部分がClassAにすでに定義
されているメソッドの名前であるa、b、およびcに置
き換えられて、新たな属性としてのaattr、bat
tr、およびcattrがClassAに追加されてい
る。
【0131】図53においては、図45と比較すると$
$method$$の部分がすでにClassAにおい
て定義されているメソッドの名前としてのa、b、およ
びcに置き換えられて、ClassAとClassBと
の間の新たなリンクとしてaRole、bRole、c
Roleの3つのリンクが追加されている。
【0132】図54においては、図46と比較すると$
$method$$の部分がClassAにすでに定義
されているメソッドの名前としてのa、b、およびcに
置き換えられて、新たなクラスとしてXa、Xb、およ
びXcが追加されている。
【0133】図55〜図58はすでに定義されているク
ラスのデータを元にして、オブジェクトの新たな要素を
追加するパターンとその適用例の説明図である。図55
においては、図46と比較すると$$Class$$の
部分がすでに定義されているクラスの名前、ここでは
a、b、およびcに置き換えられ、新たなクラスとして
Xa、Xb、およびXcが追加されている。
【0134】図56では、図43と比較すると$$Cl
ass$$の部分がすでに定義されているクラスの名前
a、b、およびcに置き換えられて、新たな属性として
aattr、battr、およびcattrがクラスa
に追加されている。なおここでクラスaに追加されるこ
とは、$$Target$$の部分に対して指定されて
いる。
【0135】図57においては、図45と比較すると$
$Class$$の部分がすでに定義されているクラス
の名前としてのa、b、およびcに置き換えられて、ク
ラスaとクラスbとの間での新しいリンクaRole、
bRole、およびcRoleが追加されている。
【0136】図58においては、図44と比較すると$
$Class$$の部分がすでに定義されているクラス
の名前であるa、b、およびcに置き換えられて、クラ
スa内の新しい属性amethod( )、bmeth
od( )、およびcmethodとして追加されてい
る。
【0137】以上において、例えば開発対象モデル内で
すでに定義されているオブジェクトの要素を元にして新
たな要素を開発対象モデルに追加するためのパターンの
定義とその適用について、比較的簡単なパターンを例と
して説明したが、更に様々な具体例を説明する前に、こ
こでそのようなパターンの適用処理のフローチャートに
ついて説明する。
【0138】図59は図42のパターン適用部103に
よるパターン適用処理の全体フローチャートである。同
図の処理は前述の第1の実施例に対応する図17とほぼ
同じである。異なる部分は図17のステップS65が2
つのステップS65aとS65bとに分けられ、ステッ
プS65aで全てのクラス定義が展開された後に、ステ
ップS65bで展開して得られた追加クラス用の実装パ
ターン適用結果ファイルが準備された後にステップS6
6以降の処理が行われる点と、追加クラスの全ての属性
定義が展開されるステップS68,S74の処理、追加
クラスの全ての操作定義が展開されるS70,S76の
処理、およびパターンファイルにある全ての関係定義が
展開されるステップS78の処理が、図18〜図20と
異なることであり、これらのステップは図59ではS6
8a,S74a,S70a,S76a、およびS78a
とされている。なお例えば前述の図43におけるCla
ssAの指定はステップS62におけるユーザによるタ
ーゲット名の入力によって行われる。
【0139】図60は図59のステップS65aにおい
て全てのクラス定義を展開する処理の詳細フローチャー
トである。同図において処理が開始されると、まずステ
ップS200でパターンの中に、すでに例えば開発対象
モデル内で定義されている属性を元にした新たなクラス
の追加のキーワードがあるか否かが判定され、ある場合
にはステップS201で定義済みの属性、すなわち例え
ば開発対象モデルに定義されている属性のデータを元に
新たなクラスの定義が展開された後に、また追加キーワ
ードがない場合には直ちにステップS202の処理に移
行する。このステップS201の処理については図64
で説明する。
【0140】ステップS202ではパターンの中に、す
でに定義されているメソッドを元にした新たなクラスの
追加のキーワードがあるか否かが判定され、ある場合に
はステップS203でステップS201におけると同様
にすでに定義済みのメソッドを元にして新たなクラスの
定義が展開された後に、またクラスの追加キーワードが
ない場合には直ちにステップS204の処理に移行す
る。
【0141】ステップS204,S205では、例えば
ステップS200,S201と同様に、すでに定義され
ているリンクを元にしたクラスの追加に対応する処理が
行われ、またステップS206,S207ではすでに定
義されているクラスを元にしたクラスの追加に対応する
処理が行われる。
【0142】ステップS208では、パターンの中に後
述する外部パターン展開部への処理の依頼を示すキーワ
ードがあるか否かが判定される。外部パターン展開部と
は、後述するように例えば開発者によって定義された独
自のパターン解釈ルールを保持するものであり、パター
ンの中にこの外部パターン展開部に解釈を依頼する部分
がある場合には、パターン適用部103はこの外部パタ
ーン展開部にその部分の解釈を依頼する。すなわち、ス
テップS209でキーワード以降のパターンの部分が外
部パターン展開部に渡され、クラス定義の展開が依頼さ
れてその結果がパターン適用部に戻された後に、またそ
のような処理依頼を示すキーワードがない場合には直ち
にステップS210の処理に移行する。
【0143】ステップS210では、パターン中で追加
が指定されているクラスの定義に未解決のキーワード、
すなわちそのキーワードに対応する文字列の内容の入力
を、例えば開発者に求めるキーワードがあるか否かが判
定される。そのようなキーワードがある場合には、ステ
ップS211で開発者によって未解決のキーワードに対
応する文字列が入力された後に、ステップS212でパ
ターンの中の属性定義内の未解決のキーワードや、既に
入力されたキーワードが対応する文字列に置き換えられ
て処理を終了する。またステップS210でそのような
未解決のキーワードがない場合にはステップS212
で、既にその内容が入力され、まだ置き換えの行われて
いないキーワード、例えば前述の$$Target$$
が対応する文字列に置き換えられて処理を終了する。
【0144】図61〜図63はそれぞれ例えば開発対象
モデル内で定義されているオブジェクトの要素のデータ
を元にした新たな属性、メソッド、およびリンクの定義
の展開処理の詳細フローチャートであり、図61は図5
9のステップS68a,S74aに、また図62はステ
ップS70a,76aに、また図63はステップS78
aに対応する。
【0145】図61〜図63の処理は実質的に図60に
おけるとほぼ同様であるが、例えば図61ではステップ
S220〜S227で、例えば開発対象モデル内ですで
に定義されている属性、メソッド、リンク、およびクラ
スを元にした属性の追加に対応する処理が行われ、ステ
ップS228,S229で外部パターン展開部への処理
依頼に対応する処理が行われ、ステップS230〜S2
32で追加すべき属性の定義に未解決のキーワードがあ
る場合に対応する処理と、既に入力されたキーワードに
対応する文字列置換の処理が行われる。
【0146】図64はすでに例えば開発対象モデル内で
定義されている要素を元にして、新たに追加されるべき
要素の定義を展開する処理のフローチャートであり、例
えは図60ではステップS201,S203,S20
5,S207の処理にそれぞれ対応する。例えばステッ
プS201ではすでに定義されている要素はオブジェク
トの属性であり、新たに追加されるべきクラスの定義を
展開する処理が実行される。
【0147】図64で処理が開始されると、ステップS
280で元情報、すなわちすでに定義されている要素の
リストが取得され、ステップS281でパターンの中に
後述するように要素を絞り込むための条件が指定されて
いるか否かが判定され、指定されている場合にはステッ
プS282でその条件に応じて要素のリストが絞り込ま
れた後に、また指定されていない場合には直ちにステッ
プS283の処理に移行する。
【0148】ステップS283ではパターンの中で、後
述するように例えば開発者によって要素が選択されるこ
とが、すなわち開発者に要素の選択を依頼すべきことが
指定されているか否かが判定され、指定されている場合
にはステップS284で開発者によって要素が選択され
た後に、指定されていない場合には直ちにステップS2
85の処理に移行する。
【0149】ステップS285では、リストの中の要素
に対して元となる要素のデータからパターンで指定され
たデータ、例えば名前や型などの文字列表現が抽出さ
れ、ステップS286でその抽出された文字列表現が、
後述するようにパターン内で指定された方法、例えば先
頭の文字の大文字化などを用いて加工され、ステップS
287で加工された文字列中に未解決のキーワードがあ
るか否かが、例えば図60のステップS210における
と同様に判定され、そのようなキーワードがある場合に
はステップS288で開発者によって未解決のキーワー
ドに対応する文字列が入力され、未解決のキーワードが
その文字列に置き換えられた後に、そのような未解決の
キーワードがない場合には直ちにステップS289の処
理に移行する。
【0150】ステップS289では、加工された文字列
表現がパターンで指定された箇所に用いられて新たな要
素の定義が生成され、ステップS290でリストの要素
全てについて処理が行われたか否かが判定され、まだ行
われていない場合にはステップS281以降の処理が行
われ、全てについて処理がなされた場合には処理を終了
する。
【0151】以上で比較的簡単なパターンの適用例と、
パターン適用処理のフローチャートについての説明を終
わり、続いてより応用的なパターンの適用例について更
に説明する。
【0152】図65は、パターンとして分析・設計パタ
ーンに対応する部分と、実装パターンに対応する部分と
が定義され、そのパターンを適用することによって、例
えば開発対象モデルにメソッドの追加が行われると共
に、実装パターンに対応して新たなプログラムが生成さ
れる例である。実装パターンは“method”という
タグ内で中かっこによって囲まれる部分である。
【0153】同図においてcopy(ClassA&o
bj)という新たなメソッドが生成されると共に実装パ
ターンに対応するプログラムが生成されている。実装パ
ターンの中の「//$$foreachキーワード・・・
//$$endforeach」の部分は、間に挟まれた
コードをキーワードによって表される要素の数だけ繰り
返して、プログラムを生成するための命令である。ここ
ではキーワードとして$$attribute$$が指
定されており、ClassAの属性a,b,およびcに
対応するコードが生成される。実装パターンの2行目の
コードの中の$$attribute$$が繰り返しの
対象となっている属性の名前と置き換えられている。
【0154】図66〜図68は、より応用的なパターン
の例として、例えば開発対象モデルに新たに追加される
オブジェクトの要素のデータ、例えば名前、型、初期
値、可視性などとして、すでに開発対象モデル内で定義
されている要素が持つデータのいずれかを使用すること
がパターン内で指定されているパターンの適用例を示
す。ここで可視性はアクセス可能なクラスの範囲を示す
ものであり、その詳細は後述する。
【0155】図66はメソッドの追加の例を示すが、タ
グしての’method”の次の行の後半に対応して、
図44におけると同様のメソッドの追加が行われるが、
前半の$$attribute$$;typeを、すで
に定義されている属性a,b、およびcの型に置き換え
て、それをメソッドの返却値の型とする新たなメソッド
が追加されている。
【0156】図67は属性の追加の例であるが、$$a
ttribute$$をa,b、およびcに置き換えた
ax,bx、およびcxの属性が新たに追加され、その
型として元の属性の型とその初期値が用いられている。
【0157】図68においてはClassAに新たなメ
ソッドが追加されているが、パターン内のタグとしての
“method”の次の行の前半部分における$$li
nk$$;type* によって、リンク先のクラスの名
前が、新たに追加されるメソッドの返却値として用いら
れている。
【0158】図69〜図72は、新たに追加される要素
に対するデータの文字列をあらかじめ指定した方法で加
工した後に使用することが図64のステップS286で
説明したようにパターン内で指定されているパターンの
適用例である。ここで指定された方法としては全大文字
化、最初の文字だけ大文字にするキャピタライズ、前一
単語分削除などの方法がある。
【0159】図69は、図66とほぼ同様にメソッドの
追加を行う例であるが、パターン内のget$$att
ribute:C$$( )内の“C”がキャピタライ
ズを示しているため、新たに追加されているメソッドの
例えばgetA( )において、属性名のaが大文字化
されて用いられている。
【0160】図70は属性の追加の例であるが、パター
ン内の“U”が全大文字化を指定するものであるため、
すでにClassA内で定義されている3つの属性が全
大文字化されて追加されている。
【0161】図71では図70におけると同様に新たに
属性が追加されているが、パターン内の“F”が前一単
語分削除を示すため、すでに定義されている属性のそれ
ぞれにおいて最初の一単語、すなわち“flag−”が
削除されている。
【0162】図72では同様に属性が追加されている
が、パターン内の“−”によって“−”の削除と、その
直後の文字の大文字化が指定されているために、例えば
flagAなどの属性が追加されている。
【0163】図73〜図75は、例えば開発対象モデル
内ですでに定義されているオブジェクトの要素のうち
で、例えばインスタンス変数のみ、スタティック変数の
み、プライベートメソッドのみなどの条件を指定し、そ
れを満たすものを自動的に選択すべきことが図64のス
テップS281,S282で説明したように、指定され
ているパターンの適用例である。
【0164】図73はメソッドの追加の例を示すが、パ
ターン中の“private”によってプライベートな
属性のみが選択されるべきことが指定されていることか
ら、すでに定義されている属性のうちで、その先頭にあ
る可視性、すなわちアクセス可能なクラスを示す文字と
して、プライベート(そのクラスのみがアクセス可能)
を示す“−”がついているb、およびcだけに対応して
メソッドの追加が行われている。なおaに対する“#”
はそのクラスとサブクラスだけがアクセス可能であるプ
ロテクテッドを示し、図示しない“+”は全てのクラス
がアクセス可能なパブリックを示す。
【0165】図74ではメソッドの追加が行われている
が、パターン中の“static”がスタティック変数
のみを条件としているため、すでに定義されている属性
a,b、およびcのうちで、スタティック変数を示す$
が先頭についているaのみに対してメソッドの追加が行
われている。
【0166】図75でもメソッドの追加が行われている
が、パターン中の“abstract”がイタリックで
示されている抽象メソッドのみを選択すべきことを指定
しているため、すでに定義されているメソッドのうちで
イタリックで表示されているa( )のみを用いてメソ
ッドの追加が行われている。
【0167】図76は例えば開発対象モデル内ですでに
定義され、新しい要素を追加する元となる要素をパター
ン適用時に開発者、またはユーザに選択させることが図
64のステップS283,S284で説明したように、
指定されているパターンの適用例である。同図において
はパターンの中で“select”によって要素の選択
を、例えばユーザに依頼すべきことが指定されており、
パターン適用部103はこの指定に対応して、ここでは
属性選択画面をユーザに提示し、ユーザが例えば属性名
として“c”を選択することによって、それを用いてメ
ソッドの追加が行われている。
【0168】図77,図78はパターン適用中に任意の
文字列の入力を開発者、またはユーザに求めるべきこと
が指定されているパターンの適用例の説明図である。図
77においては、追加されるメソッドの名前の入力が、
例えばユーザに求められており、ユーザから入力された
“Test”を名前とする新しいメソッドが追加されて
いる。
【0169】図78では、図65と同様にパターンの内
部に分析・設計パターンに対応する部分と、実装パター
ンに対応する部分とが含まれており、メソッドの追加
と、プログラムの生成が行われている。この時パターン
適用部103によって$$×××$$に対応する文字列
の入力がユーザに求められ、ユーザによって入力された
“save”が用いられて、メソッドの追加とプログラ
ムの生成が行われている。ユーザによって入力された文
字列は、追加されるメソッドの部分にも、また生成され
るプログラムの部分にもまたがって利用されている。プ
ログラムの内部の記述を用いて2番目の追加メソッドが
追加されている。更にパターンの中でキャピタライズを
示す“C”も使用されている。
【0170】パターン適用例の最後としてパターンの中
に、例えば開発者によって独自に規定された展開ルール
を用いた部分が定義されているパターンの適用例につい
て説明する。この展開ルールは図60のステップS20
8,S209で説明したように、例えば開発者によって
作成された外部パターン展開部に保持され、パターンの
解釈に使用される。図79はそのような場合のオブジェ
クト指向ソフトウェア開発支援装置の基本構成ブロック
図である。図42の構成と比較すると、パターン適用部
103に接続された外部パターン展開部105を備えて
いる点が異なる。
【0171】図80はこの外部パターン展開部105に
よる処理を含んだパターンの適用例の説明図である。同
図において、メソッドを追加すべきパターンの内部で
“user−define”以降の次のタグまでの文字
列が、外部パターン展開部105にパターン適用部10
3から与えられ、外部パターン展開部に保持されている
展開ルールに対応して、属性の追加が行われている。
【0172】最後に本発明のオブジェクト指向ソフトウ
ェア開発支援装置におけるプログラムのローディングに
ついて図81を用いて説明する。本発明のソフトウェア
開発支援装置は当然一般的なコンピュータシステムによ
って実現することが可能であるが、そのようなコンピュ
ータ35は基本的には本体36とメモリ37とから構成
されており、本体36に対しては可搬型記憶媒体39か
ら本発明の処理のためのプログラムなどをロードするこ
とも、またプログラム提供者側からネットワーク38を
介してプログラムなどをロードすることも可能である。
【0173】本発明の特許請求の範囲の請求項16,1
7などに記載されているプログラムや、例えば図5,図
7,図8,図13,図17〜図20,図59〜図64な
どのフローチャートに示されているプログラムなどは、
例えばメモリ37に格納され、そのプログラムは本体3
6によって実行される。ここでメモリ37としてはハー
ドディスクなどが用いられる。
【0174】また例えばソフトウェア開発支援装置にお
けるパターン定義のためのプログラムなどは、可搬型記
憶媒体39に記憶され、コンピュータ36にそのプログ
ラムをロードすることによってパターンの定義などを行
うことも可能である。この可、光ディスク、光磁気ディ
スクなどを用いることができる。更にパターン定義のた
めのプログラムなどは、プログラム提供者側からネット
ワーク38を介してコンピュータ35側に送られ、その
プログラムがロードされることによってパターン定義な
どを実現することも可能である。
【0175】以上において、オブジェクト指向ソフトウ
ェア言語としてC++を例に取り、本発明の実施形態を
説明したが、ソフトウェア言語はC++に限定されるこ
となく、他の言語を使用できることも当然可能であ。ま
たその他の発明の実施の形態についても、本発明の特許
請求の範囲に記載された範囲において様々な実施の形態
を取ることができることは当然である。
【0176】
【発明の効果】以上詳細に説明したように、本発明によ
れば、開発プロジェクトの責任者が分析パターン、設計
パターン、および実装パターンなどの開発上必要なパタ
ーンを体系立てて定義、提供し、各部門の開発者がその
パターンを適切、かつ効率的に利用することが可能とな
り、ソフトウェア開発効率を向上させることが可能とな
る。パターン体系として関連づけられたパターンを順次
適用することによって、分析情報、設計情報、およびソ
ースコードの品質を均一にすることができる。また分析
情報と設計情報、設計情報とソースコードの間での矛盾
をなくすることができ、情報の追跡も可能となる。さら
に比較的簡単なパターンとして、例えば既に開発対象モ
デル内で定義されているオブジェクトのデータを利用で
きるパターンを適用することにより、ソフトウェア開発
の多くの部分を自動化することができ、オブジェクト指
向ソフトウェア開発業務の能率向上に寄与するところが
大きい。
【図面の簡単な説明】
【図1】本発明の原理構成ブロック図である。
【図2】本発明のオブジェクト指向ソフトウェア開発支
援装置の基本構成ブロック図である。
【図3】本発明のオブジェクト指向ソフトウェア開発支
援装置の第1の実施形態の構成を示すブロック図であ
る。
【図4】本発明の第1の実施形態におけるパターン体系
の定義と定義されたパターンの適用方法を説明する図で
ある。
【図5】本発明の第1の実施形態におけるソフトウェア
開発処理全体のフローチャートである。
【図6】パターン体系の例を示す図である。
【図7】パターン情報定義部による処理のフローチャー
トである。
【図8】パターン体系定義部による処理のフローチャー
トである。
【図9】パターン情報定義例(文書情報)を示す図であ
る。
【図10】パターン情報定義例(CASE形式)を示す
図である。
【図11】実装パターン定義画面の例を示す図である。
【図12】パターン情報定義書式としてのテンプレート
の例を示す図である。
【図13】パターン体系ナビゲート部による処理のフロ
ーチャートである。
【図14】パターン情報表示画面の例(その1)であ
る。
【図15】パターン情報表示画面の例(その2)であ
る。
【図16】パターン体系表示画面の例である。
【図17】パターン適用部による処理の全体フローチャ
ートである。
【図18】追加クラスの全ての属性定義を展開する処理
のフローチャートである。
【図19】追加クラスの全ての操作定義を展開する処理
のフローチャートである。
【図20】追加クラスの全ての関係定義を展開する処理
のフローチャートである。
【図21】パターンの適用対象となる開発モデルの例を
示す図である。
【図22】パターン適用部によって表示されるユーザ入
力画面の例である。
【図23】追加クラスの属性定義を展開する処理におい
て表示されるユーザ入力画面の例である。
【図24】追加クラスの操作定義を展開する処理におい
て表示されるユーザ入力画面の例である。
【図25】パターン適用が終了した後の開発モデル例を
示す図である。
【図26】パターンモデルファイルの中のターゲットマ
ネージャクラスの定義の例を示す図である。
【図27】実装パターン適用結果ファイルの出力例を示
す図である。
【図28】ユーザによるソースコード生成時の操作(実
装パターン挿入部の起動処理)のフローチャートでる。
【図29】実装パターン挿入部の処理フローチャートで
ある。
【図30】CASEツールによって出力されるソースコ
ード(ヘッダファイル)の例を示す図である。
【図31】CASEツールによって出力されるソースコ
ード(ボディファイル)の例を示す図である。
【図32】実装パターン挿入部の処理において表示され
るユーザ入力画面の例である。
【図33】操作本体が挿入されたボディファイルの例を
示す図である。
【図34】キーワードを用いたパターン情報検索動作の
例を示す図である。
【図35】キーワードによるパターン情報検索処理のフ
ローチャートである。
【図36】パターン情報にキーワードを付加するための
パターン情報定義書式用テンプレートの例を示す図であ
る。
【図37】本発明のオブジェクト指向ソフトウェア開発
支援装置の第2の実施形態の構成を示すブロック図であ
る。
【図38】パターン適用履歴情報の例を示す図である。
【図39】パターン適用履歴情報を用いたパターン適用
部による処理のフローチャートである。
【図40】図39のパターン適用部の処理において表示
されるユーザ入力画面の例を示す図である。
【図41】パターン適用履歴解釈部の処理フローチャー
トである。
【図42】すでに定義されているオブジェクトのデータ
を元にして、新しいオブジェクトのデータを追加するパ
ターンの定義と、その適用を行うオブジェクト指向ソフ
トウェア開発支援装置の基本的なシステム構成ブロック
図である。
【図43】すでに定義されている属性のデータを元にし
て、新たな属性を追加するパターンの適用例の説明図で
ある。
【図44】すでに定義されている属性のデータを元にし
て、新たなメソッドを追加するパターンの適用例の説明
図である。
【図45】すでに定義されている属性のデータを元にし
て、リンクを追加するパターンの適用例の説明図であ
る。
【図46】すでに定義されている属性のデータを元にし
て、クラスを追加するパターンの適用例の説明図であ
る。
【図47】すでに定義されているリンクのデータを元に
して、リンクを追加するパターンの適用例の説明図であ
る。
【図48】すでに定義されているリンクのデータを元に
して、属性を追加するパターンの適用例の説明図であ
る。
【図49】すでに定義されているリンクのデータを元に
して、メソッドを追加するパターンの適用例の説明図で
ある。
【図50】すでに定義されているリンクのデータを元に
して、クラスを追加するパターンの適用例の説明図であ
る。
【図51】すでに定義されているメソッドのデータを元
にして、メソッドを追加するパターンの適用例の説明図
である。
【図52】すでに定義されているメソッドのデータを元
にして、属性を追加するパターンの適用例の説明図であ
る。
【図53】すでに定義されているメソッドのデータを元
にして、リンクを追加するパターンの適用例の説明図で
ある。
【図54】すでに定義されているメソッドのデータを元
にして、クラスを追加するパターンの適用例の説明図で
ある。
【図55】すでに定義されているクラスのデータを元に
して、クラスを追加するパターンの適用例の説明図であ
る。
【図56】すでに定義されているクラスのデータを元に
して、属性を追加するパターンの適用例の説明図であ
る。
【図57】すでに定義されているクラスのデータを元に
して、リンクを追加するパターンの適用例の説明図であ
る。
【図58】すでに定義されているクラスのデータを元に
して、メソッドを追加するパターンの適用例の説明図で
ある。
【図59】新たなオブジェクトの要素を追加するパター
ン適用処理の全体フローチャートである。
【図60】全てのクラス定義を展開する処理の詳細フロ
ーチャートである。
【図61】追加クラスの全ての属性定義を展開する処理
の詳細フローチャートである。
【図62】追加クラスの全てのメソッド定義(操作定
義)を展開する処理の詳細フローチャートである。
【図63】追加クラスの全てのリンク定義(関係定義)
を展開する処理の詳細フローチャートである。
【図64】すでに定義されているオブジェクトの要素を
元にして、新たに追加されるべき要素の定義を展開する
処理の詳細フローチャートである。
【図65】分析・設計パターンに対応する部分と、実装
パターンに対応する部分とが定義されているパターンの
適用例の説明図である。
【図66】追加されるメソッドの返却値の型が、すでに
定義されている属性の型に対応すべきことが指定されて
いるパターンの適用例の説明図である。
【図67】追加される属性の型が、すでに定義されてい
る属性の型とその初期値に対応すべきことが指定されて
いるパターンの適用例の説明図である。
【図68】追加されるメソッドの返却値が、すでに定義
されているリンクのリンク先のクラスの名前に対応すべ
きことが指定されているパターンの適用例の説明図であ
る。
【図69】追加される要素に対するデータの文字列に対
してキャピタライズを行うべきことが指定されているパ
ターンの適用例の説明図である。
【図70】新たに追加される属性の文字列が全大文字化
されるべきことが指定されているパターンの適用例の説
明図である。
【図71】新たに追加される属性の文字列に対して前一
単語分削除が指定されているパターンの適用例の説明図
である。
【図72】追加される属性の文字列における”一”の削
除と、その直後の文字の大文字化が指定されているパタ
ーンの適用例の説明図である。
【図73】すでに定義されている属性の可視性に対応し
てメソッドが追加されるパターンの適用例を示す図であ
る。
【図74】スタティック変数のみを条件として、すでに
定義されている属性に対応するメソッドの追加が行われ
るパターンの適用例を示す図である。
【図75】抽象メソッドのみを条件として、すでに定義
されているメソッドに対応してメソッドの追加が行われ
るパターンの適用例を示す図である。
【図76】すでに定義されている要素を、パターン適用
時に開発者、またはユーザに選択させることが指定され
ているパターンの適用例を示す図である。
【図77】パターン適用中に文字列の入力を開発者、ま
たはユーザに求めることが指定されているパターンの適
用例の説明図である。
【図78】内部に分析・設計パターンに対応する部分と
実装パターンに対応する部分とが含まれ、適用時に文字
列の入力がユーザに求められるパターンの適用例を示す
図である。
【図79】外部パターン展開部を含むオブジェクト指向
ソフトウェア開発支援装置の基本構成ブロック図であ
る。
【図80】外部パターン展開部による処理を含むパター
ンの適用例を説明する図である。
【図81】本発明のオブジェクト指向ソフトウェア開発
支援装置におけるプログラムのローディングを説明する
図である。
【符号の説明】
1 オブジェクト指向ソフトウェア開発支援装置 2 パターン体系格納手段 3,16 パターン情報 4,17 パターン間関連情報 5 パターン適用手段 11 パターン体系格納部 12 パターン体系ナビゲート部 13 パターン適用部 14 パターン情報定義部 15 パターン体系定義部 18 開発対象モデル 19 ソースコード 26 実装パターン挿入部 27 分析・設計パターン適用部 31 パターン適用履歴情報格納部 32 パターン適用履歴解釈部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 中山 裕子 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 Fターム(参考) 5B076 DD06

Claims (43)

    【特許請求の範囲】
  1. 【請求項1】 オブジェクト指向のソフトウェア設計を
    支援する装置において、 オブジェクト指向ソフトウェアの開発にあたって利用可
    能な複数のパターンのパターン情報と、該複数のパター
    ンのうちで開発時に前後関係があるパターンの間を関連
    づけるパターン間関連情報とを格納するパターン体系格
    納手段と、 該パターン体系格納手段に格納されているパターンのう
    ちで外部から適用が承認されたパターンを開発対象モデ
    ルに適用して該モデルを詳細化し、該モデルに対応する
    ソフトウェアの開発を支援するパターン適用手段とを備
    えることを特徴とするオブジェクト指向ソフトウェア開
    発支援装置。
  2. 【請求項2】 前記パターン体系格納手段が、前記パタ
    ーン間関連情報として、ソフトウェア開発上の観点と、
    該観点に対応する選択肢とを格納し、 前記パターン適用手段が、該観点と選択肢とに対する外
    部からの指示に応じて自動的にパターンを選択して、該
    選択されたパターンを開発対象モデルに適用することを
    特徴とする請求項1記載のオブジェクト指向ソフトウェ
    ア開発支援装置。
  3. 【請求項3】 前記パターン体系格納手段が前記複数の
    パターン情報に対する検索キーを更に格納し、 前記パターン適用手段が、外部から入力される検索キー
    によって検索されたパターンのうちで外部から指示され
    たパターンを開発対象モデルに適用することを特徴とす
    る請求項1記載のオブジェクト指向ソフトウェア開発支
    援装置。
  4. 【請求項4】 外部からパターンテンプレートの形式を
    用いて入力されるパターン定義情報に従って前記パター
    ン情報を定義するパターン情報定義手段を更に備えるこ
    とを特徴とする請求項1記載のオブジェクト指向ソフト
    ウェア開発支援装置。
  5. 【請求項5】 前記パターン情報定義手段が、前記パタ
    ーン情報の定義に際して該パターン情報に対する検索キ
    ーを更に定義することを特徴とする請求項4記載のオブ
    ジェクト指向ソフトウェア開発支援装置。
  6. 【請求項6】 前記前後関係があるパターンの間を関連
    づけるパターン間関連情報を、外部から入力される情報
    に従って定義するパターン体系定義手段を更に備えるこ
    とを特徴とする請求項1記載のオブジェクト指向ソフト
    ウェア開発支援装置。
  7. 【請求項7】 前記パターン体系定義手段が、前記パタ
    ーン間関連情報として、ソフトウェア開発上の観点と、
    該観点に対応する選択肢とを定義することを特徴とする
    請求項6記載のオブジェクト指向ソフトウェア開発支援
    装置。
  8. 【請求項8】 前記パターン体系格納手段に格納されて
    いる複数のパターン情報とパターン間関連情報とに対応
    するパターン体系を1つのまとまった形式で表示するパ
    ターン体系表示手段と、 該パターン体系格納手段に格納されているパターン情報
    を該パターン情報に対応するテンプレートの形式に従っ
    て表示するパターン情報表示手段とを更に備えることを
    特徴とする請求項1記載のオブジェクト指向ソフトウェ
    ア開発支援装置。
  9. 【請求項9】 前記パターン体系格納手段に格納されて
    いる複数のパターン情報とパターン間関連情報とに対応
    するパターン体系を解釈して、前記開発対象モデルに適
    用可能なパターンを外部に提示するパターン体系ナビゲ
    ート手段を更に備え、 前記パターン適用手段が、該提示されたパターンのうち
    で外部から適用が承認されたパターンを開発対象モデル
    に適用することを特徴とする請求項1記載のオブジェク
    ト指向ソフトウェア開発支援装置。
  10. 【請求項10】 前記複数のパターンが、開発対象モデ
    ルに対応する分析パターン、設計パターン、および分析
    ・設計パターンに含まれるクラスの操作定義に対応する
    ソースコードのひな型としての実装パターンであり、 前記パターン体系格納手段が、前記パターン間関連情報
    として、分析・設計パターンと実装パターンとの関連情
    報をも格納し、 前記パターン適用手段が、外部から適用が承認された分
    析・設計パターンを開発対象モデルに適用すると共に、
    該開発対象モデルのうちで分析・設計パターンが適用さ
    れた部分に対応するソースコードを該実装パターンに基
    づいて自動生成することを特徴とする請求項1記載のオ
    ブジェクト指向ソフトウェア開発支援装置。
  11. 【請求項11】 外部から実装パターンテンプレートの
    形式を用いて入力される実装パターン定義情報に従って
    前記実装パターンのパターン情報を定義するパターン情
    報定義手段を更に備えることを特徴とする請求項10記
    載のオブジェクト指向ソフトウェア開発支援装置。
  12. 【請求項12】 前記分析・設計パターンと実装パター
    ンとの間のパターン間関連情報を、外部から入力される
    情報に従って定義するパターン体系定義手段を更に備え
    ることを特徴とする請求項10記載のオブジェクト指向
    ソフトウェア開発支援装置。
  13. 【請求項13】 前記パターン体系格納手段に格納され
    ている複数のパターン情報とパターン間関連情報とに対
    応するパターン体系を1つのまとまった形式で表示する
    パターン体系表示手段と、 該パターン体系格納手段に格納されている実装パターン
    のパターン情報を実装パターンテンプレートの形式に従
    って表示する実装パターン情報表示手段とを更に備える
    ことを特徴とする請求項10記載のオブジェクト指向ソ
    フトウェア開発支援装置。
  14. 【請求項14】 前記パターン適用手段によって開発対
    象モデルへの適用が行われたパターンに対する適用履歴
    情報を保持するパターン適用履歴情報格納手段と、 該パターン適用履歴情報格納手段に保持されている適用
    履歴情報を解釈して、個々のパターンと、複数のパター
    ン情報とパターン間関連情報とに対応するパターン体系
    との再利用度を求めるパターン適用履歴解釈手段とを更
    に備えることを特徴とする請求項1記載のオブジェクト
    指向ソフトウェア開発支援装置。
  15. 【請求項15】 前記パターン適用手段によって開発対
    象モデルへの適用が行われたパターンに対する適用履歴
    情報を保持するパターン適用履歴情報格納手段を更に備
    え、 前記パターン適用手段が該パターン適用履歴情報格納手
    段に保持されている適用履歴情報を解釈して、パターン
    適用時に外部から入力されるべきデータをあらかじめ設
    定してパターン適用処理の効率を向上させることを特徴
    とする請求項1記載のオブジェクト指向ソフトウェア開
    発支援装置。
  16. 【請求項16】 オブジェクト指向のソフトウェア設計
    を支援する装置において、 オブジェクト指向ソフトウェアの開発にあたって利用可
    能なパターン情報を、外部から与えられるパターン定義
    情報に従って定義するパターン情報定義手段と、 該定義されたパターン情報を格納するパターン格納手段
    と、 該パターン格納手段に格納されているパターン情報を開
    発対象モデルに適用して該モデルを詳細化し、該モデル
    に対応するソフトウェアの開発を支援するパターン適用
    手段とを備えることを特徴とするオブジェクト指向ソフ
    トウェア開発支援装置。
  17. 【請求項17】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスが持つ属性の
    データを元にして、新たな属性を該開発対象モデルに追
    加するためのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たな属性を追加することを特徴とする請求項16記載
    のオブジェクト指向ソフトウェア開発支援装置。
  18. 【請求項18】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスが持つ属性の
    データを元にして、新たなメソッドを該開発対象モデル
    に追加するためのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たなメソッドを追加することを特徴とする請求項16
    記載のオブジェクト指向ソフトウェア開発支援装置。
  19. 【請求項19】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスが持つ属性の
    データを元にして、新たなリンクを該開発対象モデルに
    追加するこめのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たなリンクを追加することを特徴とする請求項16記
    載のオブジェクト指向ソフトウェア開発支援装置。
  20. 【請求項20】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスが持つ属性の
    データを元にして、新たなクラスを該開発対象モデルに
    追加するためのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たなクラスを追加することを特徴とする請求項16記
    載のオブジェクト指向ソフトウェア開発支援装置。
  21. 【請求項21】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスが持つリンク
    のデータを元にして、新たなリンクを該開発対象モデル
    に追加するためのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たなリンクを追加することを特徴とする請求項16記
    載のオブジェクト指向ソフトウェア開発支援装置。
  22. 【請求項22】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスが持つリンク
    のデータを元にして、新たな属性を該開発対象モデルに
    追加するためのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たな属性を追加することを特徴とする請求項16記載
    のオブジェクト指向ソフトウェア開発支援装置。
  23. 【請求項23】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスが持つリンク
    のデータを元にして、新たなメソッドを該開発対象モデ
    ルに追加するためのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たなメソッドを追加することを特徴とする請求項16
    記載のオブジェクト指向ソフトウェア開発支援装置。
  24. 【請求項24】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスが持つリンク
    のデータを元にして、新たなクラスを該開発対象モデル
    に追加するためのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たなクラスを追加することを特徴とする請求項16記
    載のオブジェクト指向ソフトウェア開発支援装置。
  25. 【請求項25】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスが持つメソッ
    ドのデータを元にして、新たなメソッドを該開発対象モ
    デルに追加するためのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たなメソッドを追加することを特徴とする請求項16
    記載のオブジェクト指向ソフトウェア開発支援装置。
  26. 【請求項26】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスが持つメソッ
    ドのデータを元にして、新たな属性を該開発対象モデル
    に追加するためのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たな属性を追加することを特徴とする請求項16記載
    のオブジェクト指向ソフトウェア開発支援装置。
  27. 【請求項27】 前記パターン情報定義手段が、前記開
    発対象モデル内ですてに定義済みのクラスが持つメソッ
    ドのデータを元にして、新たなリンクを該開発対象モデ
    ルに追加するためのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たなリンクを追加することを特徴とする請求項16記
    載のオブジェクト指向ソフトウェア開発支援装置。
  28. 【請求項28】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスが持つメソッ
    ドのデータを元にして、新たなクラスを該開発対象モデ
    ルに追加するためのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たなクラスを追加することを特徴とする請求項16記
    載のオブジェクト指向ソフトウェア開発支援装置。
  29. 【請求項29】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスのデータを元
    にして、新たなクラスを該開発対象モデルに追加するた
    めのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たなクラスを追加することを特徴とする請求項16記
    載のオブジェクト指向ソフトウェア開発支援装置。
  30. 【請求項30】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスのデータを元
    にして、新たな属性を該開発対象モデルに追加するため
    のパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たな属性を追加することを特徴とする請求項16記載
    のオブジェクト指向ソフトウェア開発支援装置。
  31. 【請求項31】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスのデータを元
    にして、新たなリンクを該開発対象モデルに追加するた
    めのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たなリンクを追加することを特徴とする請求項16記
    載のオブジェクト指向ソフトウェア開発支援装置。
  32. 【請求項32】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義済みのクラスのデータを元
    にして、新たなメソッドを該開発対象モデルに追加する
    ためのパターン情報を定義し、 前記パターン適用手段が、少なくとも該定義されたパタ
    ーン情報を含むパターンを該開発対象モデルに適用して
    新たなメソッドを追加することを特徴とす請求項16記
    載のオブジェクト指向ソフトウェア開発支援装置。
  33. 【請求項33】 前記パターン情報定義手段が、前記新
    たに追加される属性、メソッド、リンク、またはクラス
    に関するデータとして、゛前記すでに定義済みのクラ
    ス、あるいは該クラスが持つ属性、メソッド、またはリ
    ンクに関するデータを使用して、前記パターン情報を定
    義することを特徴とする請求項17,18,19,2
    0,21,22,23,24,25,26,27,2
    8,29,30,31、または32記載のオブジェクト
    指向ソフトウェア開発支援装置。
  34. 【請求項34】 前記パターン情報定義手段が、前記新
    たに追加される属性、メソッド、リンク、またはクラス
    に関するデータに対する文字列を、指定された加工方法
    を用いて表現して、前記パターン情報を定義することを
    特徴とする請求項33記載のオブジェクト指向ソフトウ
    ェア開発支援装置。
  35. 【請求項35】 前記パターン情報定義手段が、前記す
    でに定義済みのクラス、あるいは該クラスが持つ属性、
    メソッド、またはリンクのうちで、指定された条件を満
    たすもののデータを元にして、前記新たな属性、リン
    ク、メソッド、またはクラスを追加するためのパターン
    情報を定義することを特徴とする請求項17,18,1
    9,20,21,22,23,24,25,26,2
    7,28,29,30,31、または32記載のオブジ
    ェクト指向ソフトウェア開発し円装置。
  36. 【請求項36】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義されているクラス、あるい
    は該クラスが持つ属性、メソッド、またはリンクの一部
    が外部から指定されるべきことを示すデータを含んで前
    記パターン情報を定義し、 前記パターン適用手段が、該クラス、あるいは該クラス
    が持つ属性、メソッド、またはリンクの外部からの指定
    を求め、該指定の結果に応じて該パターン情報を含むパ
    ターンを前記開発対象モデルに適用することを特徴とす
    る請求項16,17,18,19,20,21,22,
    23,24,25,26,27,28,29,30,3
    1、または32記載のオブジェクト指向ソフトウェア開
    発支援装置。
  37. 【請求項37】 あらかじめ独自に規定されたパターン
    解釈ルールを保持し、該パターン解釈ルールを用いてパ
    ターン情報の解釈を行う外部パターン展開手段を更に備
    え、 前記パターン情報定義手段が、該パターン解釈ルールを
    用いて解釈すべきことが指定されている部分を含むパタ
    ーン情報を定義して前記パターン格納手段に与え、 前記パターン適用手段が、該定義されたパターン情報を
    含むパターンの適用にあたり、該外部パターン展開手段
    の解釈結果を使用することを特徴とする請求項16記載
    のオブジェクト指向ソフトウェア開発支援装置。
  38. 【請求項38】 前記パターン情報定義手段が、前記パ
    ターン適用手段によるパターンの適用中に外部から入力
    される文字列を、前記開発対象モデルに組み込むべきこ
    とを指定する部分を含むパターン情報を定義して、前記
    パターン格納手段に与え、 前記パターン適用手段が、該パターン情報を含むパター
    ンの適用にあたり、外部から入力される文字列を前記開
    発対象モデルに組み込むことを特徴とする請求項16記
    載のオブジェクト指向ソフトウェア開発支援装置。
  39. 【請求項39】 前記パターン情報定義手段が、前記開
    発対象モデル内ですでに定義されているオブジェクトの
    データを元にして、該オブジェクトに関する新たなデー
    タを該開発対象モデルに追加するためのパターンを定義
    することを特徴とする請求項16記載のオブジェクト指
    向ソフトウェア開発支援装置。
  40. 【請求項40】 オブジェクト指向のソフトウェア設計
    を支援する方法において、 オブジェクト指向ソフトウェアの開発にあたって利用可
    能な複数のパターンのパターン情報と、該複数のパター
    ンのうちで開発時に前後関係があるパターンの間を関連
    づけるパターン間関連情報とを格納し、 該格納されているパターンのうちで外部から適用が承認
    されたパターンを開発対象モデルに適用して該モデルを
    詳細化し、該モデルに対応するソフトウェアの開発を支
    援することを特徴とするオブジェクト指向ソフトウェア
    開発支援方法。
  41. 【請求項41】 オブジェクト指向ソフトウェア開発支
    援装置において使用される記憶媒体であって、 オブジェクト指向ソフトウェアの開発にあたって利用可
    能な複数のパターンのパターン情報と、該複数のパター
    ンのうちで開発時に前後関係があるパターンの間を関連
    づけるパターン間関連情報とを格納するステップと、 該格納されているパターンのうちで外部から適用が承認
    されたパターンを開発対象モデルに適用して該モデルを
    詳細化するステップとを計算機に実行させるプログラム
    を格納した計算機読出し可能記憶媒体。
  42. 【請求項42】 オブジェクト指向のソフトウェア設計
    を支援する方法において、 開発対象モデル内ですでに定義されているオブジェクト
    のデータを元にして、該オブジェクトに関する新たなデ
    ータを該開発対象モデルに追加するためのパターンを定
    義し、 該定義されたモデルを該開発対象モデルに適用して該モ
    デルを詳細化し、該モデルに対応するソフトウェアの開
    発を支援することを特徴とするオブジェクト指向ソフト
    ウェア開発支援方法。
  43. 【請求項43】 オブジェクト指向ソフトウェア開発支
    援装置において使用される記憶媒体であって、 開発対象モデル内ですでに定義されているオブジェクト
    のデータを元にして、該オブジェクトに関する新たなデ
    ータを該開発対象モデルに追加するためのパターンを定
    義するステップと、 該定義されたパターン情報を該開発対象モデルに適用し
    て、該モデルを詳細化するステップとを計算機に実行さ
    せるプログラムを格納した計算機読出し可能記憶媒体。
JP20617099A 1999-02-17 1999-07-21 オブジェクト指向ソフトウェア開発支援装置および開発支援方法 Expired - Fee Related JP3765949B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP20617099A JP3765949B2 (ja) 1999-02-17 1999-07-21 オブジェクト指向ソフトウェア開発支援装置および開発支援方法
US09/472,896 US6651240B1 (en) 1999-02-17 1999-12-28 Object-oriented software development support apparatus and development support method
EP00300121A EP1030242A3 (en) 1999-02-17 2000-01-10 Object-oriented software development

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP11-38173 1999-02-17
JP3817399 1999-02-17
JP20617099A JP3765949B2 (ja) 1999-02-17 1999-07-21 オブジェクト指向ソフトウェア開発支援装置および開発支援方法

Publications (2)

Publication Number Publication Date
JP2000305766A true JP2000305766A (ja) 2000-11-02
JP3765949B2 JP3765949B2 (ja) 2006-04-12

Family

ID=26377373

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20617099A Expired - Fee Related JP3765949B2 (ja) 1999-02-17 1999-07-21 オブジェクト指向ソフトウェア開発支援装置および開発支援方法

Country Status (3)

Country Link
US (1) US6651240B1 (ja)
EP (1) EP1030242A3 (ja)
JP (1) JP3765949B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100456631B1 (ko) * 2001-12-28 2004-11-10 한국전자통신연구원 객체지향 프로그래밍 시스템의 설계 모델 적용장치와 그적용방법 및 이에 관련된 프로그램의 기록매체

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993710B1 (en) 1999-10-05 2006-01-31 Borland Software Corporation Method and system for displaying changes of source code
US6931625B1 (en) 1999-10-05 2005-08-16 Borland Software Corporation Method and system for collapsing a graphical representation of related elements
US7188332B2 (en) 1999-10-05 2007-03-06 Borland Software Corporation Methods and systems for relating a data definition file and a data model for distributed computing
WO2001025911A1 (en) 1999-10-05 2001-04-12 Togethersoft Corporation Method and system for developing software
US7055131B2 (en) 1999-10-05 2006-05-30 Borland Software Corporation Methods and systems for animating the interaction of objects in an object oriented program
US7055130B2 (en) 1999-10-05 2006-05-30 Borland Software Corporation Methods and systems for identifying dependencies between object-oriented elements
US6983446B2 (en) 1999-10-05 2006-01-03 Borland Software Corporation Methods and systems for finding specific line of source code
US6851105B1 (en) * 1999-10-05 2005-02-01 Borland Software Corporation Method and system for generating, applying, and defining a pattern
US6976243B2 (en) 1999-10-05 2005-12-13 Borland Software Coporation Method and system for developing source code and displaying linked elements found within the source code
US7810069B2 (en) 1999-10-05 2010-10-05 Borland Software Corporation Methods and systems for relating data structures and object-oriented elements for distributed computing
WO2001082072A1 (en) 2000-04-21 2001-11-01 Togethersoft Corporation Methods and systems for generating source code for object-oriented elements
EP1292886A1 (en) 2000-04-21 2003-03-19 Togethersoft Corporation Methods and systems for supporting and deploying distributed computing components
US7606898B1 (en) 2000-10-24 2009-10-20 Microsoft Corporation System and method for distributed management of shared computers
US6957416B2 (en) * 2001-01-31 2005-10-18 Hewlett-Packard Development Company, L.P. Document builder classes and methods
US7899722B1 (en) * 2001-03-20 2011-03-01 Goldman Sachs & Co. Correspondent bank registry
US7367012B2 (en) * 2001-06-07 2008-04-29 The Mathworks, Inc. Generating code for data references
US7689676B2 (en) 2003-03-06 2010-03-30 Microsoft Corporation Model-based policy application
US7890543B2 (en) 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US8122106B2 (en) 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7636917B2 (en) 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US6876314B1 (en) 2004-02-18 2005-04-05 Robocoder Corporation Self-generating automatic code generator
US7778422B2 (en) 2004-02-27 2010-08-17 Microsoft Corporation Security associations for devices
JP4393893B2 (ja) * 2004-03-08 2010-01-06 富士通株式会社 パターン体系構築装置、パターン適用装置およびプログラム、競合要素検出プログラム、ならびにソフトウェア開発支援プログラム
US7797147B2 (en) 2005-04-15 2010-09-14 Microsoft Corporation Model-based system monitoring
US8489728B2 (en) 2005-04-15 2013-07-16 Microsoft Corporation Model-based system monitoring
US7802144B2 (en) 2005-04-15 2010-09-21 Microsoft Corporation Model-based system monitoring
US8549513B2 (en) 2005-06-29 2013-10-01 Microsoft Corporation Model-based virtual system provisioning
US8056048B2 (en) 2005-08-04 2011-11-08 International Business Machines Corporation Pattern implementation technique
US7716254B2 (en) * 2005-09-12 2010-05-11 Infosys Technologies Ltd. System for modeling architecture for business systems and methods thereof
US7941309B2 (en) 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
US7774744B2 (en) * 2006-04-26 2010-08-10 Sap Ag Using relatedness information for programming
US20080040360A1 (en) * 2006-08-14 2008-02-14 Microsoft Corporation Design pattern for choice types in object oriented languages
CN100587666C (zh) 2006-08-15 2010-02-03 国际商业机器公司 模型变换中分析和呈现冲突以及自动协调模型变换的方法和系统
US8010938B2 (en) * 2006-11-27 2011-08-30 International Business Machines Corporation Computer method and system for pattern specification using meta-model of a target domain
US9858712B2 (en) * 2007-04-09 2018-01-02 Sam Stathis System and method capable of navigating and/or mapping any multi-dimensional space
US8271935B2 (en) * 2008-07-09 2012-09-18 International Business Machines Corporation Methods and tools for data-driven application engineering
US9643316B2 (en) 2009-10-27 2017-05-09 Battelle Memorial Institute Semi-autonomous multi-use robot system and method of operation
US9424010B2 (en) 2010-08-30 2016-08-23 International Business Machines Corporation Extraction of functional semantics and isolated dataflow from imperative object oriented languages
US9632754B2 (en) 2012-07-06 2017-04-25 International Business Machines Corporation Auto generation and linkage of source code to test cases
US9104432B2 (en) 2013-06-24 2015-08-11 International Business Machines Corporation Extracting stream graph structure in a computer language by pre-executing a deterministic subset
US9569187B2 (en) 2013-10-08 2017-02-14 International Business Machines Corporation Irreducible modules
US10001974B1 (en) 2015-12-03 2018-06-19 State Farm Mutual Automobile Insurance Company Technical building block
US9798526B2 (en) * 2015-12-22 2017-10-24 Sap Se Software development using multi-domain decision management
US9952832B2 (en) * 2016-01-22 2018-04-24 Wipro Limited Methods for generating smart archtecture templates and devices thereof
US11288153B2 (en) 2020-06-18 2022-03-29 Bank Of America Corporation Self-healing computing device
US11237802B1 (en) 2020-07-20 2022-02-01 Bank Of America Corporation Architecture diagram analysis tool for software development
US20250199773A1 (en) * 2023-12-13 2025-06-19 Yuqian ZHOU Software design pattern for achieving clean multiple inheritance in Object Oriented Programming

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03257624A (ja) * 1990-03-08 1991-11-18 Fujitsu Ltd 画面言語方式
JPH09198242A (ja) 1996-01-17 1997-07-31 Sumitomo Electric Ind Ltd オブジェクト指向設計支援装置
JPH09237180A (ja) 1996-02-29 1997-09-09 Toshiba Corp ソフトウェア設計支援装置及びソフトウェア設計方法
CA2249386C (en) * 1996-03-19 2004-06-01 Massachusetts Institute Of Technology Computer system and computer implemented process for representing software system descriptions and for generating executable computer programs and computer system configurations from software system descriptions
US6112024A (en) * 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model
US6499137B1 (en) * 1998-10-02 2002-12-24 Microsoft Corporation Reversible load-time dynamic linking
US6346945B1 (en) * 1998-12-28 2002-02-12 Klocwork Solutions Method and apparatus for pattern-based flowcharting of source code
US6502236B1 (en) * 1999-03-16 2002-12-31 Fujitsu Network Communications, Inc. Method and apparatus for automatic generation of programs for processing data units of multiple formats

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100456631B1 (ko) * 2001-12-28 2004-11-10 한국전자통신연구원 객체지향 프로그래밍 시스템의 설계 모델 적용장치와 그적용방법 및 이에 관련된 프로그램의 기록매체

Also Published As

Publication number Publication date
JP3765949B2 (ja) 2006-04-12
US6651240B1 (en) 2003-11-18
EP1030242A2 (en) 2000-08-23
EP1030242A3 (en) 2004-03-10

Similar Documents

Publication Publication Date Title
JP2000305766A (ja) オブジェクト指向ソフトウェア開発支援装置および開発支援方法
US7039658B2 (en) Method and apparatus for generating web pages from templates
US6453312B1 (en) System and method for developing a selectably-expandable concept-based search
US5144555A (en) Method and apparatus for supporting of making formatted document
WO2004086222A2 (en) Development of software systems
US20020080194A1 (en) Computer readable recording medium storing program for managing CAD data
JP2001306372A (ja) 文書管理方法およびその方法を実施するためのプログラムを記憶した記憶媒体
JP2004185553A (ja) Webユーザインターフェースのコンポーネント化方法及び装置
JP5532811B2 (ja) パーツカタログ作成支援装置、プログラム、およびパーツカタログ作成支援方法
JP2001125855A (ja) 動的Webページ生成プログラム
JPH09198242A (ja) オブジェクト指向設計支援装置
JPH11288412A (ja) 文書作成方法及びシステム及び文書作成プログラムを記録したコンピュータ読み取り可能な記録媒体
JP3441155B2 (ja) 情報管理検索装置
EP0770963A2 (en) Structured data and document processing apparatus and method
JP4629263B2 (ja) ポータルサーバ、および、情報処理プログラム
JPH06214842A (ja) データベースアクセス許容方法
JPH07271569A (ja) プログラム仕様書作成システム
JP6531855B2 (ja) 情報処理装置、情報処理装置の制御方法、およびプログラム
JP3441348B2 (ja) Www−oltp連携システムにおけるhtml文書生成システム及び生成方法
JPH0695861A (ja) プログラム部品再利用管理装置
JP3493869B2 (ja) 画像編集装置
JP2002245065A (ja) 文書処理装置、文書処理方法、プログラムおよび記録媒体
EP0837400A2 (en) Structured data and document processing apparatus and method
JP3395362B2 (ja) 文書処理装置
Zhou CINDI: the virtual library graphical user interface

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051004

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051202

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060125

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090203

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100203

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110203

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110203

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120203

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130203

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130203

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140203

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees