(57)【要約】【課題】クライアント／サーバのソースコードを共通化する。【解決手段】サーバモジュール生成部は、サーバソースコードをコンパイルする。次に、コンパイルされたモジュールと通信サーバライブラリとをリンクすることでサーバモジュールを生成する。更に、通信インターフェース抽出部はサーバソースコードを基に通信インターフェースを抽出し通信クライアント生成部に渡す。更に、通信クライアント生成部は、渡された通信インターフェースを基に通信クライアントソースコードを生成する。クライアントモジュール生成部は、クライアントソースコードと生成された通信クライアントソースコードをコンパイルする。最後に、コンパイルされたモジュールをリンクすることでクライアントモジュールを生成する。【選択図】図２
2009223366.tif 000002
【特許請求の範囲】
【請求項１】
クライアントソースコード及びサーバソースコードを入力としてクライアントモジュール及びサーバモジュールを出力とするソフトウェア生成システムであって、
前記サーバソースコードを入力として通信に用いられるインタフェースを抽出する通信インターフェース抽出手段と、
前記通信インターフェース抽出手段により抽出されたインタフェースを基に通信クライアントソースコードを生成する通信クライアントコード生成手段と、
前記クライアントソースコード及び前記通信クライアントソースコードをコンパイルして前記クライアントモジュールを生成し出力するクライアントモジュール生成手段と、
前記サーバソースコードをコンパイルして通信サーバライブラリとリンクして前記サーバモジュールを生成し出力するサーバモジュール生成手段と
を具備する
ソフトウェア生成システム。
【請求項２】
請求項１に記載のソフトウェア生成システムであって、
前記サーバモジュール生成手段は、前記サーバソースコードをコンパイルしてサーバ中間モジュールを生成し、前記サーバ中間モジュールと前記通信サーバライブラリとをリンクして前記サーバモジュールを生成し出力する
ソフトウェア生成システム。
【請求項３】
請求項１又は２に記載のソフトウェア生成システムであって、
前記クライアントモジュール生成手段は、前記クライアントソースコードをコンパイルしてクライアント中間モジュールを生成し、前記通信クライアントソースコードをコンパイルして通信クライアント中間モジュールを生成し、前記クライアント中間モジュール及び前記通信クライアント中間モジュールをリンクして前記クライアントモジュールを生成し出力する
ソフトウェア生成システム。
【請求項４】
クライアントソースコード及びサーバソースコードを入力としてクライアントモジュール及びサーバモジュールを出力とするソースコード共通化方法であって、
前記サーバソースコードをコンパイルして通信サーバライブラリとリンクして前記サーバモジュールを生成し出力するステップと、
前記サーバソースコードを基に通信インターフェースを抽出するステップと、
前記抽出された通信インターフェースを基に通信クライアントソースコードを生成するステップと、
前記クライアントソースコード及び前記通信クライアントソースコードをコンパイルして前記クライアントモジュールを生成し出力するステップと
を含む
ソースコード共通化方法。
【請求項５】
請求項４に記載のソースコード共通化方法であって、
前記サーバモジュールを生成し出力するステップは、
前記サーバソースコードをコンパイルしてサーバ中間モジュールを生成するステップと、
前記サーバ中間モジュールと前記通信サーバライブラリとをリンクして前記サーバモジュールを生成し出力するステップと
を含む
ソースコード共通化方法。
【請求項６】
請求項４又は５に記載のソースコード共通化方法であって、
前記クライアントモジュールを生成し出力するステップは、
前記クライアントソースコードをコンパイルしてクライアント中間モジュールを生成するステップと、
前記通信クライアントソースコードをコンパイルして通信クライアント中間モジュールを生成するステップと、
前記クライアント中間モジュール及び前記通信クライアント中間モジュールをリンクして前記クライアントモジュールを生成し出力するステップと
を含む
ソースコード共通化方法。
【請求項７】
コンピュータにクライアントソースコード及びサーバソースコードを入力としてクライアントモジュール及びサーバモジュールを出力させるためのソフトウェア生成用プログラムであって、
前記サーバソースコードをコンパイルして通信サーバライブラリとリンクして前記サーバモジュールを生成し出力するステップと、
前記サーバソースコードを基に通信インターフェースを抽出するステップと、
前記抽出された通信インターフェースを基に通信クライアントソースコードを生成するステップと、
前記クライアントソースコード及び前記通信クライアントソースコードをコンパイルして前記クライアントモジュールを生成し出力するステップと
をコンピュータに実行させるための
ソフトウェア生成用プログラム。
【請求項８】
請求項７に記載のソフトウェア生成用プログラムであって、
前記サーバモジュールを生成し出力するステップは、
前記サーバソースコードをコンパイルしてサーバ中間モジュールを生成するステップと、
前記サーバ中間モジュールと前記通信サーバライブラリとをリンクして前記サーバモジュールを生成し出力するステップと
をコンピュータに実行させるための
ソフトウェア生成用プログラム。
【請求項９】
請求項７又は８に記載のソフトウェア生成用プログラムであって、
前記クライアントモジュールを生成し出力するステップは、
前記クライアントソースコードをコンパイルしてクライアント中間モジュールを生成するステップと、
前記通信クライアントソースコードをコンパイルして通信クライアント中間モジュールを生成するステップと、
前記クライアント中間モジュール及び前記通信クライアント中間モジュールをリンクして前記クライアントモジュールを生成し出力するステップと
をコンピュータに実行させるための
ソフトウェア生成用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア生成システムに関し、特にクライアント／サーバのソースコードを共通化するソフトウェア生成システムに関する。
【背景技術】
【０００２】
これまで、クライアント／サーバのソフトウェア開発では、サーバ部分とクライアント部分の通信モジュールは別々に開発され、仕様変更時のインターフェース同期・結合時の動作テスト等、開発が容易ではなかった。
【０００３】
近年、「．ＮＥＴ  Ｒｅｍｏｔｉｎｇ」、「Ｗｉｎｄｏｗｓ（登録商標）  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｆｏｕｎｄａｔｉｏｎ（ＷＣＦ）」等の技術を用いることでクライアント／サーバの通信モジュールを自動生成することができるようになり開発が容易になった。それでもなお、サーバ部分とクライアント部分は分離され別々に開発を行う必要がある。
【０００４】
ここで、ＷＣＦについて具体的に説明する。
図１に示すように、ＷＣＦは、サーバソースコード１と、通信インターフェースソースコード２と、サーバモジュール生成部３と、サーバモジュール４と、通信クライアントソースコード生成部５と、通信クライアントソースコード６と、クライアントソースコード７と、クライアントモジュール生成部８と、クライアントモジュール９とを備える。
【０００５】
まず、開発者は、サーバソースコード１と通信インターフェースソースコード２とを作成する。サーバ生成部３は、サーバソースコード１と通信インターフェースソースコード２を入力として、サーバモジュール４を生成する。通信クライアント生成部５は、サーバモジュール４を入力として、通信クライアントソースコード６を生成する。開発者は、通信クライアントソースコード６を呼び出す形でクライアントソースコード７を作成する。クライアントモジュール生成部８は、通信クライアントソースコード６とクライアントソースコード７をコンパイルしてクライアントモジュール９を生成する。
【０００６】
関連する技術として、特開２０００−１３７６００号公報（特許文献１）にクライアント／サーバアプリケーション作成方法及びその装置並びに情報記録媒体が開示されている。
この関連技術では、入力装置からのソースコードが、データ解析装置の処理関数データ抽出部に入力される。処理関数データ抽出部では、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）画面のソースコードを検索し、このソースコード中にＧＵＩ画面で発生するイベント処理で呼び出している処理関数を抽出する。ここで、抽出した処理にＧＵＩ画面に対する処理以外の処理が含まれているかを判断する。この判断でＧＵＩ画面に対する処理以外の処理が含まれていない場合、ＧＵＩ画面が他の処理と関連していないため、アプリケーションの分割を行わない。したがって、エラーメッセージを出力し、その表示を行って処理終了となる。また、サーバアプリケーション出力部に対して、サーバアプリケーション作成部で作成されたソースコードが付与され、このソースコードがハードディスク装置等に保存される。同様に、クライアントアプリケーション出力部に対して、クライアントアプリケーション作成部で作成されたソースコードが付与され、このソースコードがハードディスク装置などに保存される。
【０００７】
但し、この関連技術では、ＧＵＩソースコードからクライアントソースコード及びサーバソースコードを生成し、そこからクライアントアプリケーションおよびサーバアプリケーションを出力する。このため、開発者は、クライアントソースコード、サーバソースコードに触れることができない。例えば、クライアントのみで完結させるべき処理であっても、この関連技術の方式では、必ずクライアント／サーバに分割され、サーバアプリケーションで処理することになる。
【０００８】
クライアント／サーバアプリケーションの開発では、一般的に、クライアントソースコードとサーバソースコードの２つに分けられ煩雑となる。上記の関連技術においては、ＧＵＩアプリケーションに限定することにより、ソースコードを１つで済ますことでこの課題を解決している。逆に、ＧＵＩアプリケーション以外では開発を容易にする手段を提供していない。
【０００９】
【特許文献１】特開２０００−１３７６００号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の目的は、クライアント／サーバのソースコードを共通化するためのソフトウェア生成システム、ソースコード共通化方法、及びソフトウェア生成用プログラムを提供することである。
【課題を解決するための手段】
【００１１】
本発明のソフトウェア生成システムは、クライアントソースコード及びサーバソースコードを入力としてクライアントモジュール及びサーバモジュールを出力とする。本発明のソフトウェア生成システムは、サーバソースコードを入力として通信に用いられるインタフェースを抽出する通信インターフェース抽出手段と、通信インターフェース抽出手段により抽出されたインタフェースを基に通信クライアントソースコードを生成する通信クライアントコード生成手段と、クライアントソースコード及び通信クライアントソースコードをコンパイルしてクライアントモジュールを生成し出力するクライアントモジュール生成手段と、サーバソースコードをコンパイルして通信サーバライブラリとリンクしてサーバモジュールを生成し出力するサーバモジュール生成手段とを具備する。
【００１２】
本発明のソースコード共通化方法では、クライアントソースコード及びサーバソースコードを入力としてクライアントモジュール及びサーバモジュールを出力とする。本発明のソースコード共通化方法は、サーバソースコードをコンパイルして通信サーバライブラリとリンクしてサーバモジュールを生成し出力するステップと、サーバソースコードを基に通信インターフェースを抽出するステップと、抽出された通信インターフェースを基に通信クライアントソースコードを生成するステップと、クライアントソースコード及び通信クライアントソースコードをコンパイルしてクライアントモジュールを生成し出力するステップとを含む。
【００１３】
本発明のソフトウェア生成用プログラムは、コンピュータにクライアントソースコード及びサーバソースコードを入力としてクライアントモジュール及びサーバモジュールを出力させるためのプログラムである。本発明のソフトウェア生成用プログラムは、サーバソースコードをコンパイルして通信サーバライブラリとリンクしてサーバモジュールを生成し出力するステップと、サーバソースコードを基に通信インターフェースを抽出するステップと、抽出された通信インターフェースを基に通信クライアントソースコードを生成するステップと、クライアントソースコード及び通信クライアントソースコードをコンパイルしてクライアントモジュールを生成し出力するステップとをコンピュータに実行させる。
【発明の効果】
【００１４】
クライアント／サーバ間の通信インターフェースの整合性が容易にチェックできる。
【発明を実施するための最良の形態】
【００１５】
以下に、本発明の実施形態について添付図面を参照して説明する。
図２を参照すると、本発明のソフトウェア生成システムは、クライアントソースコード１１と、サーバソースコード１２と、通信インターフェース抽出部１３と、通信クライアントコード生成部１４と、クライアントモジュール生成部１５と、サーバモジュール生成部１６と、クライアントモジュール１７と、サーバモジュール１８とを備える。
【００１６】
クライアントソースコード１１は、開発者が記述するソースコードである。例えば、クライアントソースコード１１は、クライアント環境で処理されるアプリケーションプログラムのソースコードである。但し、実際には、クライアントソースコード１１は、クライアント環境で処理されるアプリケーションプログラムの設定ファイルを含んでいても良い。クライアント環境の例としては、クライアントマシンや、シンクライアント端末、或いは、クライアントとして機能する仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（ＶＭ））環境が考えられる。但し、実際には、これらの例に限定されない。
【００１７】
サーバソースコード１２は、開発者が記述するソースコードである。ここでは、サーバソースコード１２は、クライアントソースコード１１とは異なるものとする。例えば、サーバソースコード１２は、サーバ環境で処理されるアプリケーションプログラムのソースコードである。但し、実際には、サーバソースコード１１は、サーバ環境で処理されるアプリケーションプログラムの設定ファイルを含んでいても良い。サーバ環境の例としては、サーバマシンや、サーバとして機能する仮想マシン（ＶＭ）環境が考えられる。すなわち、「ハードウェアとしてのサーバ」、「ソフトウェアとしてのサーバ」及び、これら両方をあわせた「システムとしてのサーバ」のいずれでも良い。但し、実際には、これらの例に限定されない。
【００１８】
通信インターフェース抽出部１３は、サーバソースコード１２を入力として通信に必要なインターフェースを抽出する。例えば、通信インターフェース抽出部１３は、入力されたサーバソースコード１２を取得した際に、本発明のソフトウェア生成システムが利用可能なインターフェースのリスト情報を参照し、リスト情報から通信に必要なインターフェースを選択する。或いは、通信インターフェース抽出部１３は、入力されたサーバソースコード１２を取得した際に、通信に必要なインターフェースを検出する。この場合、通信インターフェース抽出部１３は、各種インターフェースに関するリスト情報を保有していると好適である。なお、インタフェースの例として、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタ、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ケーブル等の接続口（コネクタ）、シリアル通信等の通信ポート、アンテナ等の通信装置等が考えられる。但し、実際には、これらの例に限定されない。
【００１９】
通信クライアントコード生成部１４は、通信インターフェース抽出部１３で抽出されたインターフェースを基に通信クライアントソースコードを生成する。
【００２０】
クライアントモジュール生成部１５は、クライアントソースコード１１と通信クライアント生成部１４で生成された通信クライアントソースコードを基にクライアントモジュール生成する。ここでは、クライアントモジュール生成部１５は、クライアントソースコード１１と通信クライアントソースコードをコンパイルしてクライアントモジュール生成する。
【００２１】
サーバモジュール生成部１６は、サーバソースコード１２を基にサーバモジュールを生成する。ここでは、サーバモジュール生成部１６は、サーバソースコード１２をコンパイルして通信サーバライブラリとリンクしてサーバモジュールを生成する。ここでは、サーバモジュール生成部１６は、通信サーバライブラリを保有する。但し、実際には、通信サーバライブラリの所在場所は問わない。サーバモジュール生成部１６は、通信サーバライブラリを利用可能であれば良い。
【００２２】
クライアントモジュール１７は、クライアントモジュール生成部１５により生成されたクライアントモジュールである。
【００２３】
サーバモジュール１８は、サーバモジュール生成部１６により生成されたサーバモジュールである。
【００２４】
なお、通信インターフェース抽出部１３、通信クライアントコード生成部１４、クライアントモジュール生成部１５、及びサーバモジュール生成部１６の例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やマイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）等の処理装置、又はデータ処理やプログラム制御のための機能を持つ半導体集積回路（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ））等が考えられる。但し、実際には、これらの例に限定されない。
【００２５】
ここでは、ソフトウェア生成システムは、生成プログラムにより稼動するものとしている。但し、実際には、ソフトウェア生成システムは、ハードウェアの機能により実現することも可能である。
【００２６】
次に、図３のフローチャートを参照して、本発明の動作について詳細に説明する。
（１）ステップＳ１
まず、サーバモジュール生成部１６は、サーバソースコード１２を取得し、サーバソースコード１２をコンパイルしてサーバ中間モジュールを生成する。
（２）ステップＳ２
次に、サーバモジュール生成部１６は、生成されたサーバ中間モジュールと通信サーバライブラリとをリンクすることでサーバモジュール１８を生成する。
（３）ステップＳ３
更に、通信インターフェース抽出部１３は、サーバソースコード１２を基に通信インターフェースを抽出し通信クライアント生成部１に渡す。
（４）ステップＳ４
更に、通信クライアント生成部１４は、渡された通信インターフェースを基に通信クライアントソースコードを生成する。
（５）ステップＳ５
クライアントモジュール生成部１５は、クライアントソースコード１１と生成された通信クライアントソースコードを取得し、クライアントソースコード１１と生成された通信クライアントソースコードをそれぞれコンパイルしてクライアント中間モジュール及び通信クライアント中間モジュールを生成する。
（６）ステップＳ６
最後に、クライアントモジュール生成部１５は、生成されたクライアント中間モジュール及び通信クライアント中間モジュールをリンクすることでクライアントモジュール１７を生成する。
【００２７】
本発明では、開発者はクライアントソースコードとサーバソースコードのみを記述するだけでよく、通信に必要なソースコードを記述しないよう構成されているため、開発工数を削減できる。
【００２８】
また、本発明では、クライアントソースコードはサーバソースコードを直接呼び出せるよう構成されているため、クライアント／サーバ間の通信インターフェースの整合性が容易にチェックできる。また、同様の理由により、通信インターフェースの変更が容易できる。また、本発明では、クライアントソースコードとサーバソースコードを生成プログラムが一括してクライアントモジュールとサーバモジュールを生成するように構成されているため、モジュールの作成手順が簡略化される。
【００２９】
次に、本発明の効果について説明する。
第１の効果は、クライアント／サーバソフトウェアの開発工数を削減できることにある。その理由は、クライアントソースコードとサーバソースコードのみを記述するだけでよく、通信に必要なソースコードを記述しないためである。
第２の効果は、クライアント／サーバソフトウェアにおけるインターフェースの整合性が容易にチェックできることにある。その理由は、クライアントソースコードはサーバソースコードを直接呼び出す形式で記述できるためである。
第３の効果は、クライアント／サーバソフトウェアにおけるインターフェースの変更が容易にできることにある。その理由は、クライアントソースコードはサーバソースコードを直接呼び出す形式で、クライアントソースコードとサーバソースコードのみを変更すればよく、他に変更すべき記述が必要ないためである。
第４の効果は、モジュールの作成手順が簡略化されることにある。その理由は、クライアントソースコードとサーバソースコードを生成プログラムが一括してクライアントモジュールとサーバモジュールを生成するためである。
【００３０】
以上のように、本発明では、クライアント／サーバのソフトウェア開発において、サーバ部分とクライアント部分のソースコードを共通化することで、開発を容易にし、保守性を高めることができる。
【００３１】
本発明では、クライアントソース及びサーバソースからクライアントモジュール及びサーバモジュールを生成するプログラムを提供する。これにより開発者は通信に必要な処理を意識せずに開発が行えるようになる。
【００３２】
また、本発明では、開発者はクライアントソースコードがサーバソースコードを直接呼び出すように実装する。このため呼び出しに必要な引数・戻り値等のチェックは通常の呼び出しとなる。
【００３３】
また、本発明では、モジュール作成において、サーバソースコードとクライアントソースコードを生成プログラムに入力する。生成プログラムはサーバソースコードからサーバモジュールを生成する。同時にサーバソースコードとクライアントソースコードからクライアントモジュールを生成する。
【００３４】
また、本発明では、クライアントアプリケーションで処理すべき内容をクライアントソースコードに記述することができる。
【００３５】
また、本発明では、サーバソースコードから通信インターフェースを取得することで、クライアント／サーバのソースコードを共通化する。
【図面の簡単な説明】
【００３６】
【図１】図１は、現状のＷＣＦにおけるシステム構成例を示すブロック図である。
【図２】図２は、本発明のソフトウェア生成システムのシステム構成例を示すブロック図である。
【図３】図３は、本発明のソフトウェア生成システムの動作を示すフローチャートである。
【符号の説明】
【００３７】
１…  サーバソースコード
２…  通信インターフェースソースコード
３…  サーバモジュール生成部
４…  サーバモジュール
５…  通信クライアントソースコード生成部
６…  通信クライアントソースコード
７…  クライアントソースコード
８…  クライアントモジュール生成部
９…  クライアントモジュール
１１…  クライアントソースコード
１２…  サーバソースコード
１３…  通信インターフェース抽出部
１４…  通信クライアントコード生成部
１５…  クライアントモジュール生成部
１６…  サーバモジュール生成部
１７…  クライアントモジュール
１８…  サーバモジュール
【図１】
2009223366.tif 000003
【図２】
2009223366.tif 000004
【図３】
2009223366.tif 000005