(57)【要約】【課題】オブジェクト指向のソフトウェアの開発を支援する。【解決手段】ソフトウェアに対する設計モデルを取得する設計モデル取得手段１０と、設計モデルに含まれる要素又は要素の関係を解析し、設計モデルに含まれる要素又は要素の関係に対してソースコードの記述言語の適応状況を調べる設計モデル解析手段１２と、設計モデル解析手段１２において得られた記述言語の適応状況をユーザに提示する設計モデル表示手段１４と、を備えるソフトウェア開発支援装置によって上記課題を解決できる。【選択図】図１
2005301494.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクト指向に基づいたソフトウェアの開発を支援するソフトウェア開発支援装置であって、
ソフトウェアに対する設計モデルを取得する設計モデル取得手段と、
前記設計モデルに含まれる要素又は要素の関係を解析し、前記設計モデルに含まれる要素又は要素の関係に対してソースコードの記述言語の適応状況を調べる設計モデル解析手段と、
前記設計モデル解析手段において得られた記述言語の適応状況をユーザに提示する設計モデル表示手段と、
を備えることを特徴とするソフトウェア開発支援装置。
【請求項２】
請求項１に記載のソフトウェア開発支援装置において、
ソースコードを記述する記述言語を指定するソースコード言語指定手段を備え、
前記設計モデル解析手段では、前記ソースコード言語指定手段において指定された記述言語の適応状況を調査し、
前記設計モデル表示手段では、前記ソースコード言語指定手段において指定された記述言語の適応状況をユーザに提示することを特徴とするソフトウェア開発支援装置。
【請求項３】
請求項２に記載のソフトウェア開発支援装置において、
前記設計モデル解析手段では、前記ソースコード言語指定手段において指定されなかった記述言語の適応状況を調査し、
前記設計モデル表示手段では、前記ソースコード言語指定手段において指定された記述言語の適応状況と併せて前記ソースコード言語指定手段において指定されなかった記述言語の適応状況をユーザに提示することを特徴とするソフトウェア開発支援装置。
【請求項４】
請求項１〜３のいずれか１つに記載のソフトウェア開発支援装置において、
前記設計モデル表示手段は、前記設計モデル解析手段において得られた記述言語の適応状況に応じてユーザに警告を提示することを特徴とするソフトウェア開発支援装置。
【請求項５】
請求項１〜４のいずれか１つに記載のソフトウェア開発支援装置において、
前記設計モデル表示手段は、前記設計モデル解析手段において得られた記述言語の適応状況に応じて表示形態を変えてユーザに提示することを特徴とするソフトウェア開発支援装置。
【請求項６】
オブジェクト指向に基づいたソフトウェアの開発を支援するソフトウェア開発支援プログラムであって、
コンピュータを、
ソフトウェアに対する設計モデルを取得する設計モデル取得手段と、
前記設計モデルに含まれる要素又は要素の関係を解析し、前記設計モデルに含まれる要素又は要素の関係に対してソースコードの記述言語の適応状況を調べる設計モデル解析手段と、
前記設計モデル解析手段において得られた記述言語の適応状況をユーザに提示する設計モデル表示手段と、
を備えるソフトウェア開発支援装置として機能させることを特徴とするソフトウェア開発支援プログラム。
【請求項７】
オブジェクト指向に基づいたソフトウェアの開発を支援するソフトウェア開発支援方法であって、
ソフトウェアに対する設計モデルを取得する設計モデル取得工程と、
前記設計モデルに含まれる要素又は要素の関係を解析し、前記設計モデルに含まれる要素又は要素の関係に対してソースコードの記述言語の適応状況を調べる設計モデル解析工程と、
前記設計モデル解析工程において得られた記述言語の適応状況をユーザに提示する設計モデル表示工程と、
を含むソフトウェア開発支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト指向の設計モデルの開発を支援するソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラムに関する。
【背景技術】
【０００２】
ソフトウェアの開発プロセスにおいて、オブジェクト指向に基づいた開発手法が広く用いられるようになっている。これと共に、オブジェクト指向に基づく開発ツールも整備されつつあり、ツールを用いて設計モデルを構築し、構築された設計モデルからソースコードの雛型を自動生成するツールも開発されている。
【０００３】
記憶装置に記憶されたモデル図や動作図を読み出して字句解析や文法解析を行うと共に、記憶装置に記憶された機能選択項目に基づいて使用しない機能を決定し、字句解析及び文法解析が行われたソフトウェア仕様と出力コードパターンに基づいてコード生成を行う方法が開示されている（特許文献１）。
【０００４】
また、オブジェクト指向に基づく開発プロセスにおいて、設計モデルからソースコード生成に必要なクラス定義情報を抽出し、抽出されたクラス定義情報に基づいて、人手を介さない機械的処理を目的としたソースコードであるクラス定義情報ファイルを生成し、抽出されたクラス定義情報に基づいて、人手を介する編集を目的としたソースコードを生成する方法も開示されている（特許文献２）。これにより、設計モデルから自動的に生成され機械的に処理される情報と、プログラマが手作業で追加する記述とを別のファイルに分離して管理し、プログラマが誤って処理されるべき情報を書き換えてしまう危険性をなくし、ソースコードの保守性を改善することができる。
【０００５】
【特許文献１】特開平１１−２３７９８０号公報
【特許文献２】特開２００３−２１６４２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
現在、オブジェクト指向に対応する記述言語では、殆どの場合には同じ設計モデルから同じ処理内容のソースコードの雛型を生成することが可能である。しかしながら、各記述言語に固有の概念も存在するので、必ずしも１つの設計モデルに含まれる総ての概念が総ての記述言語で表現できるとは限らない。例えば、Ｃ＋＋で使用することができるフレンドクラスという概念は、Ｊａｖａ（登録商標）等のオブジェクト指向の記述言語には含まれていない。このように固有の概念に該当する要素又は要素の組み合わせが設計モデルに含まれている場合、その設計モデルから他の記述言語で記述された完全なソースコードを生成することができなくなる場合がある。
【０００７】
従って、上記のように設計モデルからソースコードの雛型を自動的に生成するようなツールにおいては、たとえ同じ目的を達成するためのプログラムのソースコードを作成する場合であっても、ソースコードの記述する言語が異なる場合には記述言語毎に異なる設計モデルを作成する必要があった。
【０００８】
そのため、ソフトウェアの開発者は、開発対象とする記述言語で対応できる概念と対応できない概念とを予め把握しておく必要があり、その知識に基づいて設計モデルを構築しなければならなかった。また、複数の記述言語に対して共通の設計モデルから自動的にソースコードを生成させるためには、対象となる総ての記述言語において対応できる概念のみを用いて設計モデルを構築する必要があり、そのためには開発者は複数の記述言語について熟知しておく必要があった。
【０００９】
本発明は、上記従来技術の問題を鑑み、上記課題の少なくとも一つを解決すべく、オブジェクト指向の設計モデルを構築する作業を支援するソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、オブジェクト指向に基づいたソフトウェアの開発を支援するソフトウェア開発支援装置及び方法であって、ソフトウェアに対する設計モデルを取得し、前記設計モデルに含まれる要素又は要素の関係を解析し、前記設計モデルに含まれる要素又は要素の関係に対してソースコードの記述言語の適応状況を調べ、得られた記述言語の適応状況をユーザに提示することを特徴とする。
【００１１】
より具体的には、各記述言語における適応状況を完全に適応した状況を示す“サポート”及び全く適応していない状況を示す“非サポート”のみならず、完全にサポートはされていないが所定の要件を満たす程度に適応していることを示す“対応サポート”及び“不完全サポート”を含む４つの異なる段階で表現することが好適である。
【００１２】
例えば、オブジェクト指向に基づいたソフトウェアの開発を支援するソフトウェア開発支援プログラムであって、コンピュータを、ソフトウェアに対する設計モデルを取得する設計モデル取得手段と、前記設計モデルに含まれる要素又は要素の関係を解析し、前記設計モデルに含まれる要素又は要素の関係に対してソースコードの記述言語の適応状況を調べる設計モデル解析手段と、前記設計モデル解析手段において得られた記述言語の適応状況をユーザに提示する設計モデル表示手段と、を備えるソフトウェア開発支援装置として機能させるソフトウェア開発支援プログラムによりこのソフトウェア開発支援装置及び方法を実現することができる。
【００１３】
ここで、ソースコードを記述する記述言語を指定するソースコード言語指定手段又は工程を有し、指定された記述言語の適応状況を調査し、指定された記述言語の適応状況をユーザに提示することが好ましい。さらに、指定されなかった記述言語の適応状況を調査し、指定された記述言語の適応状況と併せて指定されなかった記述言語の適応状況をユーザに提示することも好ましい。
【００１４】
また、得られた記述言語の適応状況に応じてユーザに警告を提示する形態とすることも好適である。また、得られた記述言語の適応状況に応じて表示形態を変えてユーザに提示しても良い。
【発明の効果】
【００１５】
本発明によれば、オブジェクト指向の設計モデルに含まれる概念が各種の記述言語に対応するものであるか否かを容易に確認することができる。その結果、ソフトウェアの開発者の負担を軽減することができる。
【発明を実施するための最良の形態】
【００１６】
本発明の実施の形態におけるソフトウェア開発支援装置１００は、図１に示すように、設計モデル取得手段１０、設計モデル解析手段１２、設計モデル表示手段１４、ソースコード言語指定手段１６、ソースコード生成手段１８及び生成条件取得手段１９を含んで構成される。ソフトウェア開発支援装置１００は、図２に示すように、ＣＰＵを含む主処理部２０、キーボードやポインティングデバイス等からなる入力部２２、ディスプレイ等からなる出力部２４、仕様書作成プログラム、設計情報及び各種データを格納及び保持する半導体メモリやハードディスク等からなる記憶部２６、データ転送を担うネットワークカード等からなるインターフェース２８を含むコンピュータにソフトウェア開発支援プログラムを実行させることにより実現することができる。このとき、上記各手段は、コンピュータが備えるオペレーションシステム（ＯＳ）等の他のソフトウェアによる機能を利用して実現しても良い。また、総ての機能を１つのコンピュータで実現する必要はなく、インターネット等の情報を伝達する媒体を利用して複数のコンピュータを組み合わせてソフトウェア開発支援装置１００の機能を実現することも好ましい。
【００１７】
ソフトウェアの開発支援は、記憶部２６に予め格納されたソフトウェア開発支援プログラムを実行することによって行われる。ソフトウェア開発支援方法は、図３に示すフローチャートの各工程に沿って処理される。
【００１８】
ステップＳ１０では、ソフトウェアのソースコードの元となる設計モデルが取得される。ステップＳ１０は、図１における設計モデル取得手段１０に相当する。主処理部２０は、コンピュータの入力部２２又はインターフェース２８等を介して、ユーザや他のコンピュータ等からオブジェクト指向のソフトウェアに対する設計モデルを取得する。また、設計モデルを作成する設計モデル作成手段を備え、入力部２２を用いたユーザからの指令に基づいてソフトウェア開発支援装置１００自体で設計モデルを作成することも好ましい。取得された設計モデルは、記憶部２６に格納及び保持される。設計モデルは、図４及び５に示すように、例えばＵＭＬ(Unified  Model  Language)で記述されたオブジェクト指向に基づくモデルをＸＭＬ形式で表現したものである。但し、これに限定されるものではなく、オブジェクト指向に基づく設計モデルを含む設計情報であれば良く、ソフトウェア開発支援装置１００に固有の形式で表現されていても構わない。
【００１９】
ステップＳ１２では、取得された設計モデルの解析が行われる。ステップＳ１２は、図１における設計モデル解析手段１２に相当する。主処理部２０は、記憶部２６に保持されている設計モデルに定義されているクラス、メンバ属性、メンバ関数等の各要素やこれらの各要素間の関係を抽出する。例えば、図６のモデルが定義されている設計モデル２００では、クラスＡ〜Ｅの各々についての定義内容が解析されると共に、各クラス間においてフレンドクラスを示すクラスＡからクラスＢの依存関係（ＤＦ）や、クラスＤ及びクラスＥからクラスＣへの複数クラスからの継承関係（ＭＩ）があることが解析される。
【００２０】
さらに、主処理部２０は、解析結果をマッピングデータに照らし合わせることによって、処理対象とされた設計モデルに含まれる各要素や各要素間の関係が各記述言語に適応しているか否かを判定する。
【００２１】
マッピングデータは、設計モデルに含まれる可能性があり、１つの記述言語に適応している各要素や各要素間の関係について、他の記述言語における適応状況を示すデータベースである。マッピングデータは、ソフトウェア開発支援装置１００で対応可能な記述言語毎に記憶部２６に予め登録されている。
【００２２】
図７に、Ｃ＋＋についてのマッピングデータの例を示す。このマッピングデータでは、Ｃ＋＋で適応している構造ａ、構造ｂ、依存関係（Ｄ）、継承関係（Ｉ）、複数継承関係（ＭＩ）、フレンドクラス関係（ＤＦ）等の各要素や各要素間の関係に対して、他の記述言語であるＪａｖａ（登録商標）、Ｐｙｔｈｏｎ及びＲｕｂｙにおける適応状況が“サポート”、“対応サポート”、“不完全サポート”及び“非サポート”の４段階で登録されている。ここで、“サポート”とは設計モデルの各要素や各要素の関係がその記述言語のソースコードとして完全に記述できるものであることを示し、“対応サポート”とは設計モデルの各要素や各要素の関係が多少の構文の違いはあるがその記述言語において同様の意味を有するソースコードで記述が可能であることを示し、“不完全サポート”とは設計モデルの各要素や各要素の関係がその記述言語のソースコードとして記述可能であるが全く異なる意味になってしまうことを示し、“非サポート”とは設計モデルの各要素や各要素の関係がその記述言語のソースコードとして全く記述できないことを示す。
【００２３】
本実施の形態は、このように各記述言語における適応状況を“サポート”及び“非サポート”のみならず、完全にサポートはされていないが所定の要件を満たす程度に適応していることを示す“対応サポート”及び“不完全サポート”を含む４つの異なる段階で表現することに特徴を有する。
【００２４】
もちろん、本実施の他の形態においては、上記の“不完全サポート”を“非サポート”に含めて扱ったり、“対応サポート”を“サポート”に含めて扱うことにより、同じ意味のソースコードが生成可能であるか、という観点のみの各記述言語における適応状況を提示するようにしても構わない。
【００２５】
マッピングデータは、Ｃ＋＋以外の他の記述言語についても作成及び登録される。従って、記述言語毎に設けられたマッピングデータを用いることによって、その記述言語が適応している要素や要素間の関係について他の記述言語の適応状況がどのようになっているかを調査することができる。
【００２６】
例えば、図６に示したように、設計モデルにフレンドクラスを示すクラスＡからクラスＢの依存関係（ＤＦ）が定義されている場合、図７に示すマッピングデータでは、フレンドクラスの依存関係（ＤＦ）はＣ＋＋では“サポート”されており、Ｊａｖａ（登録商標）に対するマッピングデータではフレンドクラスの依存関係（ＤＦ）は全く記述不可能な“非サポート”であり、Ｐｙｔｈｏｎでは同様の意味を有するソースコードを生成できる“対応サポート”であり、Ｒｕｂｙではソースコードは生成できるが全く異なる意味となる“不完全サポート”であると解析される。
【００２７】
また、図６に示したように、設計モデルに複数のクラスからの複数の継承関係（ＭＩ）を有するクラスが含まれている場合、図７に示すマッピングデータでは、Ｃ＋＋では“サポート”されているが、Ｊａｖａ（登録商標），Ｐｙｔｈｏｎ及びＲｕｂｙではこのような概念には全く適応していない“非サポート”の状況であることを知ることができる。
【００２８】
なお、ソフトウェア開発支援装置１００がサポートしている総ての記述言語の種類について設計モデルの要素や要素の関係の適応状況を判定したが、入力部２２を用いてユーザに処理対象とする記述言語の種類を入力させ、入力された記述言語についての適応状況を判定するものとしても良い。この処理は、図１におけるソースコード言語指定手段１６に相当する。
【００２９】
ステップＳ１４では、設計モデルの解析結果に基づいてソースコードを記述する記述言語の対応状況がユーザに提示され、ソースコードの生成条件が取得される。このステップＳ１４は、図１における設計モデル表示手段１４に相当する。
【００３０】
例えば、出力部２４を用いて、図８に示すように、ステップＳ１２で解析された各要素及び要素間の各関係について設計モデルとしてモデル表示領域３０に表示させると共に、記述言語について適応状態を状態表示領域３２に表示させる。ここでは、指定された記述言語がＣ＋＋であり、提示された要素又は要素の関係は記述言語Ｃ＋＋、Ｊａｖａ（登録商標）、Ｐｙｔｈｏｎ及びＲｕｂｙにおいてそれぞれ“サポート”、“非サポート”、“対応サポート”及び“不完全サポート”の適応状況にある概念であることが示されている。
【００３１】
このとき、提示された各要素や各要素間の関係をソースコードとして生成するか否かの生成条件をユーザから取得することも好適である。これは、図１に示した生成条件取得手段１９に相当する。例えば、図８に示すように、出力部２４に表示された設計モデルの要素又は要素間の関係をソースコードに実際に配置するか否かの判断の入力を促す画面を選択画像領域３４に表示させ、入力部２２を用いたユーザの判断結果の入力を促す。ユーザは、モデル表示領域３０及び状態表示領域３２に表示された内容を確認したうえで、マウス等のポインティングデバイスを用いて選択画像領域３４の“はい”又は“いいえ”のいずれかを選択してクリックすることによって、表示された要素をソースコードに配置するか否かの判断結果を入力する。
【００３２】
また、指定された記述言語においてその要素又は要素の関係からソースコードを生成できない場合には、図９に示すように、警告表示領域３６に警告を表示させることも好適である。このとき、ソフトウェア開発支援装置１００で扱うことができる他の記述言語についてその要素又は要素の関係からソースコードを生成できるか否かを状態表示領域３８に併せて提示することも好ましい。これによって、ユーザは指定された記述言語の適応状況を知ることができると同時に、他の記述言語でソースコードを生成させた方が良いか否かを判断する情報を得ることができる。
【００３３】
このとき、警告を表示させる記述言語の種類を限定したり、複数のサポート状態に対して警告を表示できるようにすることがより好ましい。例えば、図１０に示すように、警告を表示する記述言語をＪａｖａ（登録商標）とＲｕｂｙに限定することによって、それらの記述言語における適応状況のみを状態表示領域４０に提示させる。
【００３４】
また、ソースコードを生成する対象言語を変更した場合にも警告を表示させることも好適である。例えば、Ｃ＋＋には適応しており、Ｊａｖａ（登録商標）には適応していないフレンドクラス関係（ＤＦ）や複数の継承関係（ＭＩ）が設計モデルに含まれていた場合、記述言語の指定がＣ＋＋からＪａｖａ（登録商標）へと変更されたときにＪａｖａ（登録商標）ではフレンドクラス関係（ＤＦ）や複数の継承関係（ＭＩ）が“非サポート”であることを示す警告を表示させることも好ましい。
【００３５】
さらに、警告と共に表示した設計モデルの要素について適応状況に応じて表示形式を変えることも好適である。例えば、図８において、指定された記述言語において各要素及び各要素の関係が“サポート”された概念であれば各構成要素や関係を示す矢印を青色で表示させ、“非サポート”の概念であれば各構成要素や関係を示す矢印を赤色で表示させる。同様に、“対応サポート”又は“不完全サポート”の概念であれば他の適応状況と互いに区別できる色で表示させることも好ましい。また、図８のモデル表示領域３０において、指定された記述言語が適応していないためにソースコードを生成する際に無視される要素や要素の関係を非表示とすることも好ましい。
【００３６】
ステップＳ１６では、解析結果及び生成条件に基づいて設計モデルからソースコードの生成を行う。これは、図１に示したソースコード生成手段１８に相当する。ステップＳ１２での解析結果及びステップＳ１４でユーザから取得した生成条件に基づいて、設計モデルに含まれる各要素及び各要素の関係を指定された記述言語のソースコードに変換する。設計モデルから各記述言語の仕様に沿ったソースコードを生成するためには、既存の自動コード生成ツールを用いることができる。このとき、ステップＳ１４において不要として判断された要素については削除したうえでソースコードに変換する。
【００３７】
以上のように、本実施の形態によれば、オブジェクト指向の設計モデルに含まれる概念が各種の記述言語に対応するものであるか否かを容易に確認することができる。その結果、ソフトウェアの開発者の負担を軽減することができる。
【図面の簡単な説明】
【００３８】
【図１】本発明の実施の形態におけるソフトウェア開発支援装置の機能ブロックを示す図である。
【図２】本発明の実施の形態におけるソフトウェア開発支援装置の構成を示すブロック図である。
【図３】本発明の実施の形態におけるソフトウェア開発支援方法のフローチャート示す図である。
【図４】ＸＭＬ形式で記述されたソフトウェアの設計モデルの例を示す図である。
【図５】ＸＭＬ形式で記述されたソフトウェアの設計モデルの例を示す図である。
【図６】オブジェクト指向のソフトウェアに対する設計モデルの要素及び要素の関係の例を示す図である。
【図７】本実施の形態におけるマッピングデータの例を示す図である。
【図８】本発明の実施の形態における解析結果の表示例を示す図である。
【図９】本発明の実施の形態における解析結果の表示例を示す図である。
【図１０】本発明の実施の形態における解析結果の表示例を示す図である。
【符号の説明】
【００３９】
１０  設計モデル取得手段、１２  設計モデル解析手段、１４  設計モデル表示手段、１６  ソースコード言語指定手段、１８  ソースコード生成手段、１９  生成条件取得手段、２０  主処理部、２２  入力部、２４  出力部、２６  記憶部、２８  インターフェース、３０  モデル表示領域、３２，３８，４０  状態表示領域、３４  選択画像領域、３６  警告表示領域、１００  ソフトウェア開発支援装置。
【図１】
2005301494.tif 000003
【図２】
2005301494.tif 000004
【図３】
2005301494.tif 000005
【図４】
2005301494.tif 000006
【図５】
2005301494.tif 000007
【図６】
2005301494.tif 000008
【図７】
2005301494.tif 000009
【図８】
2005301494.tif 000010
【図９】
2005301494.tif 000011
【図１０】
2005301494.tif 000012