(57)【特許請求の範囲】
【請求項１】
設計の詳細度に応じて設計情報を階層表示し、一画面で編集を行わせるコンピュータ装置であって、前記コンピュータ装置は、
１つまたは複数の第１の設計情報を表示し、ユーザに前記第１の設計情報の編集を行わせる第１の編集手段と、
１つまたは複数の第２の設計情報を表示し、前記ユーザに前記第２の設計情報の編集を行わせる第２の編集手段であって、前記第２の設計情報は、前記第１の設計情報を詳細化した設計情報であり、かつ前記第１の設計情報のいずれか１つと関連付けて階層的に表示される、第２の編集手段と、
１つまたは複数の第Ｎの設計情報が存在する場合、前記第Ｎの設計情報を表示し、前記ユーザに前記第Ｎの設計情報の編集を行わせる第Ｎの編集手段であって、前記Ｎは３以上の整数であり、前記第Ｎの設計情報は、第Ｎ−１の設計情報を詳細化した設計情報であり、かつ前記第Ｎ−１の設計情報のいずれか１つと関連付けて階層表示される、第Ｎの編集手段と、
前記第１乃至第Ｎの設計情報の表示／非表示の切り替えを行う切替手段と、
前記ユーザにより編集された第１乃至第Ｎの設計情報の記憶を行う第１の記憶手段と、
グラフィカルユーザインタフェースを介して、前記ユーザに前記第２乃至第Ｎの設計情報の追加を行わせる追加手段であって、前記追加は、
指定された設計情報に対して、下位の階層に追加することと、
指定された設計情報に対して、同位の階層かつ上部に追加することと、
指定された設計情報に対して、同位の階層かつ下部に追加することと
を含む、追加手段と、
前記グラフィカルユーザインタフェースを介して、前記ユーザに、前記追加された第２乃至第Ｎの設計情報の削除を行わせる削除手段と、
前記グラフィカルユーザインタフェースを介して、前記ユーザに、前記追加された第２乃至第Ｎの設計情報の階層レベルの変更を行わせる変更手段と
を備えたことを特徴とするコンピュータ装置。
【請求項２】
テンプレートリストを表示し、前記ユーザに前記第１乃至第Ｎの設計情報のテンプレートの選択を行わせる選択手段と、
前記選択手段により選択されたテンプレートの表示を行う表示手段と
をさらに備えたことを特徴とする請求項１に記載のコンピュータ装置。
【請求項３】
前記第１の記憶手段による設計情報の記憶は階層構造で行われ、
前記第１の記憶手段に記憶された設計情報に基づき、ソースコードの生成を行う生成手段と、
前記生成手段により生成されたソースコードの記憶を行う第２の記憶手段と
をさらに備えたことを特徴とする請求項１に記載のコンピュータ装置。
【請求項４】
前記第１乃至第Ｎの設計情報の整合性チェックを行うチェック手段であって、前記整合性チェックは、
設計情報として定義した変数が使用されていないことのチェックと、
設計情報として定義した変数、引数、定数の重複チェックと、
設計情報として定義した戻り値のチェックと、
前記ソースコードに対して任意のコンパイラを用いて行われるソースコードチェックと
のうちの少なくとも１つを含む、チェック手段と
をさらに備えたことを特徴とする請求項３に記載のコンピュータ装置。
【請求項５】
前記第１の記憶手段による設計情報の記憶は階層構造で行われ、
前記第１の記憶手段に記憶された設計情報に基づき、設計書の生成を行う生成手段であって、前記設計書の生成は、前記第２乃至第Ｎの設計情報毎に生成することを含む、生成手段と、
前記生成手段により生成された設計書の記憶を行う第２の記憶手段と
をさらに備えたことを特徴とする請求項１に記載のコンピュータ装置。
【請求項６】
設計の詳細度に応じて設計情報を階層表示し、一画面で編集を行わせるコンピュータ実行方法であって、前記コンピュータ実行方法は、
１つまたは複数の第１の設計情報を表示し、ユーザに前記第１の設計情報の編集を行わせるステップと、
１つまたは複数の第２の設計情報を表示し、前記ユーザに前記第２の設計情報の編集を行わせるステップであって、前記第２の設計情報は、前記第１の設計情報を詳細化した設計情報であり、かつ前記第１の設計情報のいずれか１つと関連付けて階層的に表示される、前記第２の設計情報の編集を行わせるステップと、
１つまたは複数の第Ｎの設計情報が存在する場合、前記第Ｎの設計情報を表示し、前記ユーザに前記第Ｎの設計情報の編集を行わせるステップであって、前記Ｎは３以上の整数であり、前記第Ｎの設計情報は、第Ｎ−１の設計情報を詳細化した設計情報であり、かつ前記第Ｎ−１の設計情報のいずれか１つと関連付けて階層表示される、前記第Ｎの設計情報の編集を行わせるステップと、
前記第１乃至第Ｎの設計情報の表示／非表示を切り替えるステップと、
前記ユーザにより編集された第１乃至第Ｎの設計情報を記憶するステップと、
グラフィカルユーザインタフェースを介して、前記ユーザに前記第２乃至第Ｎの設計情報の追加を行わせるステップであって、前記追加は、
指定された設計情報に対して、下位の階層に追加することと、
指定された設計情報に対して、同位の階層かつ上部に追加することと、
指定された設計情報に対して、同位の階層かつ下部に追加することと
を含む、ステップと、
前記グラフィカルユーザインタフェースを介して、前記ユーザに、前記追加された第２乃至第Ｎの設計情報の削除を行わせるステップと、
前記グラフィカルユーザインタフェースを介して、前記ユーザに、前記追加された第２乃至第Ｎの設計情報の階層レベルの変更を行わせるステップと
を備えたことを特徴とするコンピュータ実行方法。
【請求項７】
設計の詳細度に応じて設計情報を階層表示し、一画面で編集を行わせるコンピュータ実行方法をコンピュータに実行させるコンピュータ実行可能命令からなるコンピュータプログラムであって、前記コンピュータ実行方法は、
１つまたは複数の第１の設計情報を表示し、ユーザに前記第１の設計情報の編集を行わせるステップと、
１つまたは複数の第２の設計情報を表示し、前記ユーザに前記第２の設計情報の編集を行わせるステップであって、前記第２の設計情報は、前記第１の設計情報を詳細化した設計情報であり、かつ前記第１の設計情報のいずれか１つと関連付けて階層的に表示される、前記第２の設計情報の編集を行わせるステップと、
１つまたは複数の第Ｎの設計情報が存在する場合、前記第Ｎの設計情報を表示し、前記ユーザに前記第Ｎの設計情報の編集を行わせるステップであって、前記Ｎは３以上の整数であり、前記第Ｎの設計情報は、第Ｎ−１の設計情報を詳細化した設計情報であり、かつ前記第Ｎ−１の設計情報のいずれか１つと関連付けて階層表示される、前記第Ｎの設計情報の編集を行わせるステップと、
前記第１乃至第Ｎの設計情報の表示／非表示を切り替えるステップと、
前記ユーザにより編集された第１乃至第Ｎの設計情報を記憶するステップと、
グラフィカルユーザインタフェースを介して、前記ユーザに前記第２乃至第Ｎの設計情報の追加を行わせるステップであって、前記追加は、
指定された設計情報に対して、下位の階層に追加することと、
指定された設計情報に対して、同位の階層かつ上部に追加することと、
指定された設計情報に対して、同位の階層かつ下部に追加することと
を含む、ステップと、
前記グラフィカルユーザインタフェースを介して、前記ユーザに、前記追加された第２乃至第Ｎの設計情報の削除を行わせるステップと、
前記グラフィカルユーザインタフェースを介して、前記ユーザに、前記追加された第２乃至第Ｎの設計情報の階層レベルの変更を行わせるステップと
を備えたことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設計支援システム、設計支援方法およびプログラムに関する。
【背景技術】
【０００２】
ソフトウェア（システム）開発の一般的な開発プロセスの一つとして、ウォーターフォールモデルがある。これは、開発プロセスを、例えば、機能設計、詳細設計、プログラム設計などと工程毎に分割し、工程毎にアウトプット（設計書など）を作成し、当該アウトプットを次の下位工程のインプットとするものである。すなわち、上位工程から下位工程にかけて設計情報をより詳細化し、上位工程が完了しない限り原則として下位工程に進まないことを担保することで、手戻り作業（設計ミスなどが原因で上位工程から再度設計をやり直す作業）を抑止することが出来るというメリットがある。
【０００３】
より詳細には、機能設計工程において、例えば、顧客情報登録機能の機能レベル（登録画面にて登録ボタンを押下すると、入力された顧客情報の整合性チェックを行い、問題なければ顧客データベースの各テーブルに登録する、などのレベル）の設計を行い、１つの機能設計書が作成される。
【０００４】
次に、詳細設計工程において、当該機能設計書を用いて、顧客情報登録機能の処理レベル（整合性チェック処理、排他処理、登録処理、などのレベル）の設計を行い、詳細設計書が作成される。この際、詳細設計書は、処理単位で作成されることがあり、上記例の、整合性チェック処理、排他処理、登録処理であれば、３つの詳細設計書が作成されることになる。
【０００５】
さらに、プログラム設計工程において、当該各詳細設計書を用いて、顧客情報登録機能のプログラムレベル（整合性チェックの中の入力された情報の型チェックプログラムおよび矛盾チェックプログラム、ならびに登録処理の中のテーブル毎の更新プログラム、などのレベル）の設計を行い、プログラム設計書が作成される。この際、プログラム設計書は、プログラム単位で作成されることがあり、上記例の、型チェックプログラム、矛盾チェックプログラム、テーブル毎の更新プログラムであれば、２つのチェックプログラムに関する２つのプログラム設計書に加え、更新するテーブル数分のプログラム設計書が作成されることになる。
【０００６】
このように、ウォーターフォールモデルの開発プロセスでは、上位工程と下位工程の設計情報の関係が１対多となり、一機能を設計するだけでも、多数の設計書が作成されることになる。そのため、システムの規模が大きくなればなるほど、機能、処理、およびプログラムの数は増え、作成される設計書の数も膨大なものとなる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−１４０８９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、ウォーターフォールモデルの開発プロセスでは、次のような問題が生じている。
【０００９】
まず、上位工程での設計書を参照しながら下位工程の設計書を作成する必要があるため、転記ミスなどが発生し、設計書間の不整合が生じる場合がある。また一機能に対して多数の設計書が作成されるため、設計書間における記載の重複が発生している。このような設計情報の不整合は、例えばプログラム設計情報など、ほぼソースコードに近い設計情報からソースコードを自動生成する場合に、ソースコードが正常に生成できなかったり、生成できても正しく動作しなかったりすることにつながる。換言すると、ソースコード自動生成技術における従来技術では、ほぼソースコードに近い設計情報からソースコードを自動生成する技術はあっても（例えば、特許文献１に記載の技術）、上流工程の設計情報ある、例えば機能設計情報から一連の設計情報を編集・管理しソースコードを自動生成するという一貫した技術はないと言える。
【００１０】
次に、ウォーターフォールモデルの設計が、上位工程が完了しない限り原則として下位工程に進まないため、直前工程の設計情報の品質が保証されているというメリットから、設計者は上位工程での設計書の品質が保証されていると考えるのは当然であり、上位工程よりさらに上位工程の設計書を確認することはほとんど無い。また、当該メリットのために、設計者において直前の工程の設計情報のみを確認して設計すればよいという考えが生じていることも否定できない。さらに、従来の設計書は個別に分かれているため、膨大な設計書の中から所望の設計書を検索して確認することに対する怠慢も否定できない。このように、下位工程に進めば進むほど、直前の工程より上位の工程に対する意識は薄くなり、時として本来の目的がわからないまま恣意的な設計を行ってしまう場合がある。これが原因で、下位工程になってから設計ミスが発覚し、手戻り作業が発生してしまう場合がある。
【００１１】
そして、設計書が個別に作成されるため、バグ発生時の原因特定および設計書の修正箇所の特定において、一連の設計書の中から所望の設計書を探し出し、かつ所望の箇所を特定する必要があり、これは非常に時間を要する作業である。特にシステム開発において発生するバグの件数は、何百、何千となる場合もあり、その都度、この特定作業を繰り返すことになる。また、設計書の修正が必要な場合も、個別の設計書全てに対して行う必要がある。加えて、設計レビュー時において、上位工程の設計書を参照することはよくあり、その都度、参照箇所の特定作業を行うことになる。
【００１２】
このように、品質および生産性などの点で問題が生じている。さらに、工程毎に設計者や担当会社が異なるという開発実態はよくあり、また開発するシステムの規模が大きくなるにつれ設計者の人数も多くなる。このような開発実態により、上記問題はより顕著になっている。
【００１３】
このような問題の一解決方法として、一般的なドキュメントツールなどで、一連の設計情報（例えば、ある機能の機能設計書、詳細設計書、およびプログラム設計書）を１つの設計書として作成することが考えられるが、記載の整合性や可読性などに問題を来たすというデメリットの方が大きく、実際には行われていない。
【００１４】
本発明は、このような問題に鑑みてなされたもので、その目的とするところは、詳細度に応じて設計情報を階層的に関連付け、一画面で編集可能な設計支援システムおよび方法を提供することにある。より詳細には、設計情報を工程毎の個別の情報として考えるのではなく、一連の設計情報を一つの情報として捉えることで、上位工程に対して下位工程の設計情報を階層的に関連付け、一画面での編集を行うことができるシステムおよび方法を提供する。また、必要に応じて設計情報の詳細度を階層的に切り換えることで、一連の設計情報でありながら、従来通り工程毎の設計情報を参照することもできる。
【課題を解決するための手段】
【００１５】
本発明は、このような目的を達成するために、１つまたは複数の第１の設計情報を表示し、ユーザに前記第１の設計情報の編集を行わせる第１の編集手段と、１つまたは複数の第２の設計情報を表示し、前記ユーザに前記第２の設計情報の編集を行わせる第２の編集手段であって、前記第２の設計情報は、前記第１の設計情報を詳細化した設計情報であり、かつ前記第１の設計情報のいずれか１つと関連付けて階層的に表示される、第２の編集手段と、１つまたは複数の第Ｎの設計情報が存在する場合、前記第Ｎの設計情報を表示し、前記ユーザに前記第Ｎの設計情報の編集を行わせる第Ｎの編集手段であって、前記Ｎは３以上の整数であり、前記第Ｎの設計情報は、第Ｎ−１の設計情報を詳細化した設計情報であり、かつ前記第Ｎ−１の設計情報のいずれか１つと関連付けて階層表示される、第Ｎの編集手段と、前記第１乃至第Ｎの設計情報の表示／非表示の切り替えを行う切替手段と、前記ユーザにより編集された第１乃至第Ｎの設計情報の記憶を行う第１の記憶手段とを備えたことを特徴とする。また、グラフィカルユーザインタフェースを介して、前記ユーザに前記第２乃至第Ｎの設計情報の追加を行わせる追加手段であって、前記追加は、指定された設計情報に対して、下位の階層に追加することと、指定された設計情報に対して、同位の階層かつ上部に追加することと、指定された設計情報に対して、同位の階層かつ下部に追加することとを含む、追加手段と、前記グラフィカルユーザインタフェースを介して、前記ユーザに、前記追加された第２乃至第Ｎの設計情報の削除を行わせる削除手段と、前記グラフィカルユーザインタフェースを介して、前記ユーザに、前記追加された第２乃至第Ｎの設計情報の階層レベルの変更を行わせる変更手段と、前記第１の記憶手段による設計情報の記憶は階層構造で行われ、前記第１の記憶手段に記憶された設計情報に基づき、ソースコードの生成を行う生成手段と、前記生成手段により生成されたソースコードの記憶を行う第２の記憶手段と、前記第１乃至第Ｎの設計情報の整合性チェックを行うチェック手段であって、前記整合性チェックは、設計情報として定義した変数が使用されていないことのチェックと、設計情報として定義した変数、引数、定数の重複チェックと、設計情報として定義した戻り値のチェックと、前記ソースコードに対して任意のコンパイラを用いて行われるソースコードチェックとのうちの少なくとも１つを含む、チェック手段とをさらに備えたことを特徴とする。その他に、テンプレートリストを表示し、前記ユーザに前記第１乃至第Ｎの設計情報のテンプレートの選択を行わせる選択手段と、前記選択手段により選択されたテンプレートの表示を行う表示手段、ならびに前記第１の記憶手段による設計情報の記憶は階層構造で行われ、前記第１の記憶手段に記憶された設計情報に基づき、設計書の生成を行う生成手段であって、前記設計書の生成は、前記第２乃至第Ｎの設計情報毎に生成することを含む、生成手段と、前記生成手段により生成された設計書の記憶を行う第２の記憶手段とをさらに備えたことを特徴とする。
【発明の効果】
【００１６】
以上説明したように、本発明によれば、一連の設計情報を一つの設計情報として捉え、上位工程に対して下位工程の設計情報を階層的に関連付け、一画面での編集が可能となる。例えば、下位工程の設計情報を記述する際に、上位工程の設計情報に対し追記する形で記述することができる。これにより、従来の個別の設計書間で生じていた転記ミスや、重複記載を効果的に排除することができ、仮に設計変更が生じた場合でも、個別の設計書全てに対し修正を行う必要はなく、一画面における設計情報の修正で足りる。また、ソースコードの自動生成という点から見ると、一連の設計情報を一貫して一つの設計情報として編集・管理できるため、より精度の高いソースコードを生成することができる。また、設計バグの発生時においても、一画面における設計情報の修正で足りる。一連の設計情報が一つの設計情報に集約されているため、上位工程、または下位工程の設計情報を容易に参照することができる。これにより、設計書の確認漏れにより生じる設計ミス（延いては手戻り作業）を抑止することができ、設計書における参照箇所の特定作業に要していた時間を大幅に削減することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態に係る設計支援システムの構成を示す図である。
【図２】本発明の一実施形態に係る階層的な設計情報（第１階層）を示す図である。
【図３】本発明の一実施形態に係る階層的な設計情報（第１、２階層）を示す図である。
【図４】本発明の一実施形態に係る階層的な設計情報（第１〜３階層）を示す図である。
【図５】本発明の一実施形態に係る設計支援システムの編集画面を示す図である。
【図６】本発明の一実施形態に係る設計支援システムの「↑」ボタンの動作を示す図である。
【図７】本発明の一実施形態に係る設計支援システムの「↓」ボタンの動作を示す図である。
【図８】本発明の一実施形態に係る設計支援システムの「└＞」ボタンの動作を示す図である。
【図９】本発明の一実施形態に係る設計支援システムの「＋」および「−」ボタンの動作を示す図である。
【図１０】設計情報記憶手段に記憶される設計情報のデータ構造例を示す図である。
【図１１】テンプレート情報記憶手段に記憶されるテンプレート情報のデータ構造例を示す図である。
【図１２】本発明の一実施形態に係るソースコード自動生成の処理フローを示す図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照しながら本発明の実施形態について詳細に説明する。
【００１９】
図１は、本発明の一実施形態に係る設計支援システムの構成を示す図である。利用者端末１０１ａ〜１０１ｎは、一般的なクライアントコンピュータデバイスであり、ネットワーク１０２に接続され、設計支援システム１０３を利用することができる。また、当該利用者端末を利用する者は、例えばシステム開発に携わる者、すなわちシステムの設計者、プログラマ、およびレビュアなど様々であり、利用者端末１０１ｎの“ｎ”は任意の数を表す。
【００２０】
ネットワーク１０２は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、およびインターネットなどである。
【００２１】
設計支援システムは、１つまたは複数のサーバコンピュータで構成され、図１に示す実施形態では、処理装置とシステムメモリを有する、４つの一般的なサーバコンピュータ、すなわちＷｅｂサーバ１０４、アプリケーションサーバ１０５、バッチサーバ１０６、およびデータベース（ＤＢ）サーバ１０７からなる。
【００２２】
Ｗｅｂサーバ１０４は、利用者端末１０１ａ〜１０１ｎからの要求に応じて、ネットワーク１０２を介して、設計情報表示手段により、設計情報編集画面のＨＴＭＬ文書を送信する。利用者端末１０１ａ〜１０１ｎは、受信したＨＴＭＬ文書をブラウザを介して表示し、各利用者は設計情報の編集を行う。設計情報の編集により、変更された設計情報は、利用者端末１０１ａ〜１０１ｎからの更新要求として、ネットワーク１０２を介してＷｅｂサーバ１０４に送信される。更新要求は、Ｗｅｂサーバ１０４から、業務ロジックを扱うＡＰサーバ１０５に転送され、設計情報編集手段および整合性チェック手段により整合性チェックなどを行った上で、問題がなければＤＢサーバ１０７の設計情報記憶手段に記憶される。
【００２３】
また、ＡＰサーバ１０５は、Ｗｅｂサーバ１０４経由の利用者端末１０１ａ〜１０１ｎからの要求に応じて、設計情報切替手段による設計情報の階層表示の切り替え、設計情報追加手段による設計情報の追加、および設計情報削除手段による設計情報の削除を行った上で、作成されたＨＴＭＬ文書を利用者端末１０１ａ〜１０１ｎに返す。なお、当該切り替え、追加、および削除は、利用者端末１０１ａ〜１０１ｎ上で（例えば、Javascriptにより）行うこともできる。また、非同期通信により、画面を再描画することなく行うこともできる。
【００２４】
さらに、設計情報の追加を行う際に、設計情報を入力するための複数のテンプレートをリスト表示し、当該リストからテンプレートを選択、追加することもできる。これは、ＡＰサーバ１０５のテンプレート情報表示手段により、選択されたテンプレートを、ＤＢサーバ１０７のテンプレート情報記憶手段から取得し、利用者端末１０１ａ〜１０１ｎに送信することによって行われる。
【００２５】
また、バッチサーバ１０５は、要求に応じて、ＤＢサーバ１０７の設計情報記憶手段に記憶された設計情報から、ソースコード生成手段によりソースコードを生成したり、設計書生成手段により設計書を生成したりする。バッチサーバ１０５はこの際、整合性チェック手段を用いて設計情報の整合性チェックを行った上で、ソースコードや設計書を生成することができる。生成されたソースコード、および設計書は、ＤＢサーバ１０７のソースコード記憶手段、および設計書記憶手段にそれぞれ記憶される。
【００２６】
なお、上述した通り本構成はあくまでも一実施形態であり、設計支援システム１０３内のサーバコンピュータの数や、各サーバコンピュータの役割は任意に変更可能である。
【００２７】
図２は、本発明の一実施形態に係る階層的な設計情報（第１階層）を示す図である。図２は、２つの処理コンポーネント２０１、２０２を含み、これらを第１階層の設計情報とする。第１階層の設計情報の具体例は、機能設計情報や外部仕様である。
【００２８】
図３は、本発明の一実施形態に係る階層的な設計情報（第１、２階層）を示す図である。図３において、破線で囲まれたコンポーネントは、図２において示した第１階層の設計情報に相当する。これに対し、実線で囲まれたコンポーネント、すなわち処理コンポーネント３０１〜３０６は、第２階層の設計情報であり、対応する第１階層の設計情報にぶら下がる形で示される。第２階層の設計情報は、第１階層の設計情報より詳細度の高い設計情報、すなわち第１階層の下位工程の設計情報であり、具体的には、詳細設計情報や内部仕様である。また、第２階層の設計情報に係る各処理コンポーネントは、第１階層の設計情報より下位の階層にあることを示すため、インデントレベルを下げて示される。また、処理コンポーネント３０４および３０６に示すように、ＩＦ文などのように実際のソースコードなどにおいてもインデントレベルを下げることが通例である場合は同一階層であってもインデントレベルを下げることができる。なお、コンポーネントの枠線の実線および破線は、説明のための便宜的な表示であることを理解されたい。
【００２９】
実際の開発プロセスを想定すると、機能設計工程の完了時点では、図２に示されるように第１階層の設計情報が記述された状態である。次工程であり下位工程である詳細設計工程の設計者は、機能設計情報である第１階層の設計情報を参照しながら、詳細設計情報、すなわち第２階層の設計情報を、第１階層の設計情報に追記する形で記述することができる。
【００３０】
図４は、本発明の一実施形態に係る階層的な設計情報（第１〜３階層）を示す図である。コンポーネントの枠線の実線および破線の説明は上述した通りであり、処理コンポーネント４０１〜４０５が第３階層の設計情報である。第３階層の設計情報は、対応する第２階層の設計情報にぶら下がる形で示される。第３階層の設計情報は、第２階層の設計情報より詳細度の高い設計情報、すなわち第２階層の下位工程の設計情報であり、具体的には、プログラム設計情報や内部仕様定義である。また、第３階層の設計情報は、さらにインデントレベルを下げて表示される。
【００３１】
上述した詳細設計工程の設計者同様、プログラム設計工程の設計者は、詳細設計情報である第２階層の設計情報を参照しながら、プログラム設計情報、すなわち第３階層の設計情報を、第１階層および第２階層の設計情報にさらに追記する形で記述することができる。
【００３２】
図２〜４を用いて、本発明の一実施形態に係る階層的な設計情報（第１〜３階層）を示したが、各階層に記述する設計情報の詳細度を任意に変更し、第４階層以降の設計情報を同様に追記することができることは、当業者であれば理解できよう。
【００３３】
図５は、本発明の一実施形態に係る設計支援システムの編集画面を示す図である。設計支援システム５００は、３つの左フレーム５０１、メインフレーム５０２、および右フレーム５０３からなる。
【００３４】
左フレーム５０１は、各設計情報をツリー構造で示し、例えば設計者は、所望の設計情報をマウスクリックなどで選択することにより、後述するメインフレーム５０２に所望の設計情報を表示することができる。また、左フレーム５０１より、設計情報の新規追加、削除を行うことができる。
【００３５】
メインフレーム５０２は、図２〜４を用いて上述した、本発明の一実施形態に係る階層的な設計情報の表示および編集部である。図５におけるメインフレーム５０２は、第３階層までの設計情報が既に記述されている状態である。設計情報を新規に追加した直後の初期状態では、例えば、処理コンポーネント５０６〜５０８のみが空欄で表示される。また、処理コンポーネントは理論上は無限に追加でき、メインフレーム５０２に表示しきれない場合は、スクロールバー（図示せず）を表示させ、利用者がマウスなどを介して操作することにより、所望の位置の表示を行うことができる。
【００３６】
メインフレーム５０２の上部には、表示階層の選択リスト５０４および保存ボタン５０５を表示する。表示階層の選択リスト５０４は、どの階層、またはどの階層までを表示するかを選択することができる。例えば、第１の設計情報である機能設計情報のみを参照したい場合などに使用する。
【００３７】
保存ボタン５０５は、押下することにより、メインフレーム５０２にて編集した設計情報の更新処理を実行することができる。この際、メインフレーム５０２にて編集した設計情報に対して、整合性チェックを行うことができる。ここで行う整合性チェックの具体例は、設計情報として定義した変数が処理の中で一度も使用されていないことのチェック、定義した変数、引数、定数の間で同一の名称によって定義されていることの重複チェック、および定義した戻り値が定義通りのデータ型で戻されていること（受け側においては受けていること）のチェックなどが挙げられる。当該整合性チェックは、サーバコンピュータ（例えばＡＰサーバ１０５）で行うことができる。
【００３８】
メインフレーム５０２における各処理コンポーネントのラベル部分の右部に表示される「Ｅ」、「↑」、「↓」、「└＞」、「×」、「＋」、および「−」は、例えばボタンであり、押下することで、後述するように、該当する処理コンポーネントに対し各々特定の処理を実行することができる。なお、各ボタンは表示不要の場合は個別に表示させないこともできる。表示不要な場合とは、例えば、押下後に実行する処理が、該当する処理コンポーネントの性質上、実行する必要がない場合、または実行してはいけない場合などがある。以下に各ボタンの動作説明を示す。なお、「Ｅ」および「×」ボタン以外は、図６〜９を参照して説明するが、各図における動作説明は、図５におけるメインフレーム５０２の状態に対するものであることを理解されたい。
【００３９】
「Ｅ」ボタンの“Ｅ”は、編集を意味する“Ｅｄｉｔ”の頭文字であり、押下することにより、該当する処理コンポーネント内の編集可能な項目を表示欄からテキストボックスなどの入力欄に切り換えることができる。既に入力欄である場合は、表示欄に戻すことができる。これにより、誤編集を防止することができる。
【００４０】
「↑」ボタンは、図６に示すように、押下することにより、該当する処理コンポーネントの上部に、同一詳細度の処理コンポーネントを追加することができる。ここで同一詳細度とは、設計情報における詳細度が同一であるということを意味し、すなわち同一設計工程に係る設計情報であることを意味する。また、図６は、「↑」ボタン６０２を押下し、処理コンポーネント６０１が追加されたことを示す。処理コンポーネント６０１は追加した直後であるため、通し番号を示す「１」以外は空欄である。また、処理コンポーネント６０１の追加に伴い、処理コンポーネント６０１より下部にある処理コンポーネントの通し番号が、１づつ加算されていることが理解できよう。なお、図６において、「↑」ボタン６０２が太字で示されているのは、説明のための便宜的な表示であることを理解されたい（以下、図７〜９についても同様である）。
【００４１】
「↓」ボタンは、図７に示すように、押下することにより、該当する処理コンポーネントの下部に、同一詳細度の処理コンポーネントを追加することができる。図７は、「↓」ボタン７０１を押下し、処理コンポーネント７０２が追加されたことを示す。処理コンポーネント７０２は追加した直後であるため、通し番号を示す「２」以外は空欄である。また、処理コンポーネント７０２の追加に伴い、処理コンポーネント７０２より下部にある処理コンポーネントの通し番号が、１づつ加算されていることが理解できよう。
【００４２】
「└＞」ボタンは、図８に示すように、押下することにより、該当する処理コンポーネントの下部に、より詳細度の高い処理コンポーネントを追加することができる。すなわち、ここでいう「該当する処理コンポーネント」が上位工程の設計情報に関するものであり、追加される処理コンポーネントは、当該上位工程に対する下位工程の設計情報であることを意味する。また、図８は、「└＞」ボタン８０１を押下し、処理コンポーネント８０３が追加されたことを示す。図８では、「└＞」ボタン８０１を押下する前に、既に処理コンポーネント８０２が存在していたため、その下部に処理コンポーネント８０３が追加されている。当業者であれば容易に理解されようが、処理コンポーネント８０２も「└＞」ボタン８０１を押下することにより追加されたものである。
【００４３】
「×」ボタンは、押下することにより、該当する処理コンポーネントを削除することができる。なお、削除する際、該当する処理コンポーネントの下位の処理コンポーネントも含めて削除するか否かは単なる設計変更情報であるが、下位の処理コンポーネントを残すケースは設計情報という性質を鑑みると稀であろう。
【００４４】
「＋」および「−」ボタンは、図９に示すように、押下することにより、該当する処理コンポーネントの下位の処理コンポーネントの表示／非表示を切り替えることができる。図９は、図５における処理コンポーネント５０８の「−」ボタンを押下した直後のものであり、処理コンポーネント５０８の下位の処理コンポーネントが非表示状態になっている。また、「−」ボタンは、「＋」ボタン９０１に表示が変わっている。「＋」ボタン９０１を押下することにより、非表示状態となった下位の処理コンポーネントが再度表示される。なお、「＋」および「−」ボタンを押下する毎にボタンの表示を変更することや、ボタンの項目名（すなわち“＋”および“−”）は、一実施形態であることを理解されたい。これは他のボタンについても同様である。
【００４５】
図５に戻り、右フレーム５０３について説明する。右フレーム５０３は、テンプレートリストを表示し、利用者はここから入力支援のためのテンプレートを選択することができる。図５のテンプレートリストは、一実施形態であり、テンプレートリストの選択肢５０９〜５１２を含む。テンプレートリストの選択肢は、大きなカテゴリ（例えば５０９、５１０、および５１２）と、小さなカテゴリ（例えば５１１）とに分けられ、例えば、小さなカテゴリ５１１は、大きなカテゴリ５１０（「オンライン」）に属するカテゴリである。
【００４６】
利用者は、まず大きなカテゴリをマウスクリックなどで選択し、新たに表示される、選択した大きなカテゴリに属する小さなカテゴリから所望のテンプレートを選択する。図５では、大きなカテゴリ５１０（「オンライン」）を選択し、新たに表示された小さなカテゴリ５１１の中から「ＤＴＯ(Data Transfer Object)定義」用のテンプレートを選択している状態である。この状態で、上述した「↑」、「↓」、および「└＞」ボタンを押下することによって、該当するテンプレート（例えば入力値が全て空欄の処理コンポーネント５１３）が、メインフレーム５０２の所定の位置に表示される。この際、自動で設定可能な入力値は初期値として表示することもできる。具体的には、例えば、処理コンポーネント５１３の要求ＤＴＯＩＤの入力値（C20000001ReqtU001）を自動採番し、初期値として表示する。
【００４７】
なお、テンプレートリストの選択肢は、カテゴリ化せずに全て表示することもできるし、さらに細かくカテゴリ化することもできる。また、エラーメッセージを表示するなどして、設計情報の内容や階層の位置によって選択できるテンプレートを制御することもできる。例えば、下位の階層を追加する必要がない、または追加してはいけない場合、「└＞」ボタン押下時にエラーメッセージを表示し、処理コンポーネントを追加しないように制御することができる。もっとも、この場合、「└＞」ボタンを非表示とする制御の方がユーザフレンドリーの観点からも適しているかもしれない。処理コンポーネント５１３などに「└＞」ボタンが表示されていないのはそのためである。
【００４８】
上述した通り、保存ボタン５０５押下により、メインフレーム５０２にて編集した設計情報の更新処理を実行することができ、更新処理が正常に行われた場合、例えば、ＤＢサーバ１０７の設計情報記憶手段に設計情報が記憶される。この際、階層構造を維持したまま記憶することができる。
【００４９】
図１０は、設計情報記憶手段に記憶される設計情報のデータ構造例を示す図である。「機能ＩＤ」は、設計情報単位（図５のメインフレーム５０２に示される単位）でユニークなＩＤであり、「設計情報ＩＤ」と併せて、本データ構造のユニークキーとなる。
【００５０】
「設計情報ＩＤ」は、処理コンポーネント単位（図５の処理コンポーネント５０８および５１３などの単位）でユニークなＩＤであるが、本実施形態では、値「00」のみ、ヘッダ情報として処理コンポーネント５０６および５０７の２つを纏めて１つのデータとして表す。値「01」は第１階層目の１番目の設計情報であることを示し、図５における処理コンポーネント５０８を表す。値「01-01」は、第１階層の１番目の設計情報を親に持つ、第２階層の１番目の設計情報であることを示し、図５における処理コンポーネント５１３を表す。
【００５１】
設計情報（処理コンポーネント）の親子関係は、「上位設計情報ＩＤ」に親の「設計情報ＩＤ」を持つことによって保持される。そのため、第１階層の設計情報の場合、本項目には何も設定されない（またはハイフンや、スペース、空文字などを設定する。図１０ではハイフンを設定）。
【００５２】
「内容」は、設計情報の編集データであり、本実施形態では、ＣＳＶ形式でデータを持つことにより、複数の項目に対応することができる。
【００５３】
種別は、対象の設計情報がテンプレートを用いて入力されたものであるか否かを示し、本実施形態では、テンプレートを用いていない場合、文字列「text」を設定する。テンプレートを用いた場合は、「temp001」などの文字列が設定され、これはテンプレートの種類を示すＩＤと一致する。
【００５４】
図１１は、テンプレート情報記憶手段に記憶されるテンプレート情報のデータ構造例を示す図である。図１１に示すテンプレート情報は、図５の処理コンポーネント５１３に用いられているテンプレートを表し、例えばＸＭＬ文書で作成することができる。「テンプレート名」にはテンプレートの名称、「項目」には図５のメインフレーム５０２に表示する際の項目名が格納されている。「入力画面用表示コード」は、本実施形態では、表示する際に使用するＨＴＭＬ文書そのものである。また、「ソースコード出力用雛型」は、ソースコードを自動生成する際に用いる雛型である。当該雛型の変数部分に、設計支援システム１０３にて編集された設計情報の各項目をパラメータとして設定することにより、ソースコードを生成する。
【００５５】
一実施形態において、ソースコードおよび設計書は、設計情報記憶手段に設計情報が記憶された後、当該設計情報に基づき、予め決められた雛型で作成される。図１２は、本発明の一実施形態に係るソースコード自動生成の処理フローを示す図である。
【００５６】
ステップ１２０１において処理を開始し、図１０に示す設計情報から、ソースコードを生成する機能のレコード（「機能ＩＤ」で絞込む）に対し、「種別」が「text」以外（すなわち、テンプレートを用いたことを示す「tmp***」）のレコードを１件取得する（ステップ１２０２）。次に、図１１に示すテンプレート情報から、取得したレコードに対応するソースコード出力用雛型を取得する（ステップ１２０３）。当該ソースコード出力用雛型のパラメータとして、取得したレコードの値を設定する（ステップ１２０４）。これをパラメータの数だけ繰り返す（ステップ１２０４〜１２０５）。パラメータの設定が全て完了し、さらに「種別」が「text」以外のレコードが存在する場合、そのレコード数分、生成処理を繰り返す（ステップ１２０２〜１２０６）。「種別」が「text」以外のレコード全てに対し、ソースコードを生成すると、ステップ１２０７にて生成処理は終了する。
【００５７】
なお、図１では、ソースコード生成手段、および設計書生成手段を有するのはバッチサーバ１０６と示しているが、これはあくまでも一実施形態であり、別のサーバコンピュータで生成することもできる。例えば、設計情報記憶手段に設計情報が記憶される際であればＡＰサーバ１０５、記憶した後であればバッチサーバ１０６とシステム構成に応じて作業を分散することができる。生成されたソースコード、および設計書は、例えばＤＢサーバ１０７に記憶される。
【００５８】
また、生成されたソースコードに対して、任意のコンパイラ（例えば、Java（登録商標）ソースに対するコンパイルであればJavaコンパイラ）を使用してコンパイルし、コンパイルエラーが発生するかどうかにより、設計情報の整合性チェックを行うことができる。
【００５９】
このような構成により、詳細度に応じて設計情報を階層表示し、一画面での編集を行うことにより、一連の設計情報を一つの設計情報として捉えることができ、ソフトウェア開発における品質および生産性の向上が可能となる。
【符号の説明】
【００６０】
１０１ａ  設計者端末
１０１ｂ  プログラマ端末
１０１ｃ  レビュア端末
１０１ｎ  設計者端末
１０２    ネットワーク
１０３    設計支援システム
１０４    Ｗｅｂサーバ
１０５    ＡＰサーバ
１０６    バッチサーバ
１０７    ＤＢサーバ
２０１    処理コンポーネント（第１階層）
２０２    処理コンポーネント（第１階層）
３０１    処理コンポーネント（第２階層）
３０２    処理コンポーネント（第２階層）
３０３    処理コンポーネント（第２階層）
３０４    処理コンポーネント（第２階層）
３０５    処理コンポーネント（第２階層）
３０６    処理コンポーネント（第２階層）
４０１    処理コンポーネント（第３階層）
４０２    処理コンポーネント（第３階層）
４０３    処理コンポーネント（第３階層）
４０４    処理コンポーネント（第３階層）
４０５    処理コンポーネント（第３階層）
５００    設計支援システム
５０１    左フレーム
５０２    メインフレーム
５０３    右フレーム
５０４    表示階層の選択リスト
５０５    保存ボタン
５０６    処理コンポーネント
５０７    処理コンポーネント
５０８    処理コンポーネント
５０９    テンプレートリスト選択肢（カテゴリ大）
５１０    テンプレートリスト選択肢（カテゴリ大）
５１１    テンプレートリスト選択肢（カテゴリ小）
５１２    テンプレートリスト選択肢（カテゴリ大）
５１３    処理コンポーネント
６００    メインフレーム
６０１    処理コンポーネント
６０２    ↑ボタン
７００    メインフレーム
７０１    ↓ボタン
７０２    処理コンポーネント
８００    メインフレーム
８０１    └＞ボタン
８０２    処理コンポーネント
８０３    処理コンポーネント
９００    メインフレーム
９０１    ＋ボタン
【図１】
0005820324.tif 000002
【図２】
0005820324.tif 000003
【図３】
0005820324.tif 000004
【図４】
0005820324.tif 000005
【図５】
0005820324.tif 000006
【図６】
0005820324.tif 000007
【図７】
0005820324.tif 000008
【図８】
0005820324.tif 000009
【図９】
0005820324.tif 000010
【図１０】
0005820324.tif 000011
【図１１】
0005820324.tif 000012
【図１２】
0005820324.tif 000013