(57)【特許請求の範囲】
【請求項１】
複数のソフトウェアの特徴を分析して生成したフィーチャーモデルで開発者から受信した開発対象ソフトウェアに該当するフィーチャーを選択してフィーチャーリストを生成するフィーチャー選択部と、
前記開発者から受信した開発対象ソフトウェアタイプに該当するコード自動生成器を決定するコード自動生成器選択部と、
前記開発対象ソフトウェアタイプを利用して開発対象ソフトウェアのアーキテクチャコンポーネントを選択し、前記選択したアーキテクチャコンポーネント及び前記開発者から受信した前記決定したコード自動生成器の要求事項に基づいて自動生成されたコードを生成するコード自動生成部と、
前記生成したフィーチャーリストと、前記自動生成されたコード及び前記アーキテクチャコンポーネントのコードとを比較することにより生じた差異点に対応するコード部分を、前記自動生成されたコード及び前記アーキテクチャコンポーネントのコードから除外し、前記差異点に対応するコード部分を含まない前記自動生成されたコード及び前記アーキテクチャコンポーネントのコードである適応されたコードを出力する適応部と、
前記適応されたコードでドメインのライブラリを呼び出す部分を実際のドメインライブラリを呼び出す部分と連結して最終生成コードを生成する連結部とを含むソフトウェア開発装置。
【請求項２】
前記ソフトウェア開発装置は、
前記開発者と、前記フィーチャー選択部、コード自動生成器選択部及びコード自動生成部それぞれとの間の入力及び出力を制御するユーザインターフェースをさらに含むことを特徴とする請求項１に記載のソフトウェア開発装置。
【請求項３】
前記ソフトウェア開発装置は、
あらかじめ開発された複数のコード自動生成器、複数のソフトウェアアーキテクチャコンポーネント及びソフトウェアドメインコンポーネントで使われるライブラリをソフトウェアタイプ別に各々保存する保存部をさらに含むことを特徴とする請求項１に記載のソフトウェア開発装置。
【請求項４】
前記ソフトウェア開発装置は、
前記開発者から受信された開発対象ソフトウェアタイプに該当するコード自動生成器が保存部にソフトウェアタイプ別に保存されたあらかじめ開発された複数のコード自動生成器から選択されるように制御する制御部をさらに含むことを特徴とする請求項１に記載のソフトウェア開発装置。
【請求項５】
前記制御部は、
前記開発者から受信された開発対象ソフトウェアタイプに該当するアーキテクチャコンポーネントが前記保存部にソフトウェアタイプ別に保存された複数のソフトウェアアーキテクチャコンポーネントから選択されるように制御することを特徴とする請求項４に記載のソフトウェア開発装置。
【請求項６】
前記制御部は、
適応されたコードでドメインのライブラリを呼び出す部分と連結される部分が前記保存部に保存されたライブラリから選択されるように制御することを特徴とする請求項４に記載のソフトウェア開発装置。
【請求項７】
前記コード自動生成部は、
前記開発対象ソフトウェアのアーキテクチャコンポーネントのソフトウェア骨組コードで具現されていない部分を前記自動生成されたコードを利用して満たすことを特徴とする請求項１に記載のソフトウェア開発装置。
【請求項８】
前記フィーチャーモデルは、
ソフトウェア製品ラインに属する複数のソフトウェアに含まれる共通点及び差異点をフィーチャー単位に分析して生成されたモデルであることを特徴とする請求項１に記載のソフトウェア開発装置。
【請求項９】
前記要求事項は、
前記開発対象ソフトウェアタイプによって変更されることを特徴とする請求項１に記載のソフトウェア開発装置。
【請求項１０】
ソフトウェア開発装置で実行されるソフトウェア開発方法であって、
複数のソフトウェアの特徴を分析して生成したフィーチャーモデルで開発者から受信した開発対象ソフトウェアに該当するフィーチャーを選択してフィーチャーリストを生成するステップと、
前記開発者から受信した開発対象ソフトウェアタイプに該当するコード自動生成器を決定するステップと、
前記開発対象ソフトウェアタイプを利用して開発対象ソフトウェアのアーキテクチャコンポーネントを選択し、前記選択したアーキテクチャコンポーネント及び前記開発者から受信した前記決定したコード自動生成器の要求事項に基づいて自動生成されたコードを生成するステップと、
前記生成したフィーチャーリストと、前記自動生成されたコード及び前記アーキテクチャコンポーネントのコードとを比較することにより生じた差異点に対応するコード部分を、前記自動生成されたコード及び前記アーキテクチャコンポーネントのコードから除外し、前記差異点に対応するコード部分を含まない前記自動生成されたコード及び前記アーキテクチャコンポーネントのコードである適応されたコードを出力するステップと、
前記適応されたコードでドメインのライブラリを呼び出す部分を実際のドメインライブラリを呼び出す部分と連結して最終生成コードを生成するステップと、を含むことを特徴とするソフトウェア開発方法。
【請求項１１】
前記ソフトウェア開発方法は、
あらかじめ開発された複数のコード自動生成器、複数のソフトウェアアーキテクチャコンポーネント及びソフトウェアドメインコンポーネントで使われるライブラリをソフトウェアタイプ別に各々保存するステップをさらに含むことを特徴とする請求項１０に記載のソフトウェア開発方法。
【請求項１２】
前記ソフトウェア開発方法は、
前記開発者から受信された開発対象ソフトウェアタイプに該当するコード自動生成器がソフトウェアタイプ別に保存されたあらかじめ開発された複数のコード自動生成器から選択されるように制御するステップをさらに含むことを特徴とする請求項１０に記載のソフトウェア開発方法。
【請求項１３】
前記制御するステップは、
前記開発者から受信された開発対象ソフトウェアタイプに該当するアーキテクチャコンポーネントがソフトウェアタイプ別に保存された複数のソフトウェアアーキテクチャコンポーネントから選択されるように制御することを特徴とする請求項１２に記載のソフトウェア開発方法。
【請求項１４】
前記制御するステップは、
適応されたコードでドメインのライブラリを呼び出す部分と連結される部分が前記ソフトウェアタイプ別に保存されたライブラリで選択されるように制御することを特徴とする請求項１２に記載のソフトウェア開発方法。
【請求項１５】
前記自動生成されたコードを生成するステップは、
前記開発対象ソフトウェアのアーキテクチャコンポーネントのソフトウェア骨組コードで具現されていない部分を前記自動生成されたコードを利用して満たすことを特徴とする請求項１０に記載のソフトウェア開発方法。
【請求項１６】
前記フィーチャーモデルは、
ソフトウェア製品ラインに属する複数のソフトウェアに含まれる共通点及び差異点をフィーチャー単位に分析して生成されたモデルであることを特徴とする請求項１０に記載のソフトウェア開発方法。
【請求項１７】
前記要求事項は、
前記開発対象ソフトウェアタイプによって変更されることを特徴とする請求項１０に記載のソフトウェア開発方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発方法及びそれのための装置に関し、より詳細には、ソフトウェアタイプ別コード自動生成器を利用したソフトウェアの製品ライン基盤のソフトウェア開発方法及びそれのための装置に関する。
【背景技術】
【０００２】
コード自動生成器は、開発しようとするソフトウェアのタイプによって変わる。ここで、ソフトウェアタイプは、ソフトウェアが行う役割によって区分される。例えば、データを保存及び管理するソフトウェアは、データマネージャソフトウェアタイプであり、データ発信者から受けたデータ値をデータ変換規則に従って他のデータ値に変換するソフトウェアは、データ変換者ソフトウェアタイプである。
【０００３】
また、データ発信者から受けたデータをデータ分配規則によってデータ受信者に伝送するソフトウェアは、データ分配者ソフトウェアタイプであり、システムの状態を管理するソフトウェアは、コントローラソフトウェアタイプであり、ユーザとシステムとの間のインターフェースとしてデータを読み出してユーザに表示するソフトウェアは、モニターソフトウェアタイプである。
【０００４】
ソフトウェアタイプ別のコード自動生成器を定義及び開発することにより、ソフトウェアタイプが異なる多様な種類のソフトウェアを該当ソフトウェアタイプのコード自動生成器を利用して開発することができる。
【０００５】
また、コード自動生成器を利用してあるソフトウェアを開発しようとする時、開発しようとするソフトウェアのタイプのようなソフトウェアタイプのコード自動生成器が既に存在する場合、既存のコード自動生成器を修正及び再使用することができる。
【０００６】
しかし、従来のコード自動生成器を利用した単一または製品ライン基盤のソフトウェアの開発方法は、いずれも一つ種類のコード自動生成器を仮定として行われた。したがって、従来の方法は、ソフトウェアタイプが異なる多様な種類のソフトウェアを、コード自動生成器を利用して開発することが困難であった。
【０００７】
また、あるソフトウェアを、コード自動生成器を利用して開発しようとする時、コード自動生成器が既に存在する場合、その既存のコード自動生成器を開発しようとするソフトウェア開発に再使用できるか否かを判断しにくい問題点がある。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前記のような諸問題点を解消するために、本発明の第１の目的は、タイプ別コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発装置を提供することにある。
【０００９】
本発明の第２の目的は、タイプ別コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発方法を提供することにある。
【課題を解決するための手段】
【００１０】
上記の本発明の第１の目的を達成するための本発明の一実施形態に係るソフトウェア開発装置は、複数のソフトウェアの特徴を分析して生成したフィーチャーモデルより開発者から受信した開発対象ソフトウェアに該当するフィーチャーを選択してフィーチャーリストを生成するフィーチャー選択部と、前記開発者から受信した開発対象ソフトウェアタイプに該当するコード自動生成器を決定するコード自動生成器選択部と、前記開発対象ソフトウェアタイプを利用して開発対象ソフトウェアのアーキテクチャコンポーネントを選択し、前記選択したアーキテクチャコンポーネント及び前記開発者から受信した前記決定されたコード自動生成器の要求事項に基づいて自動生成されたコードを生成するコード自動生成部と、前記生成されたフィーチャーリストに基づいて前記自動生成されたコード及び前記アーキテクチャコンポーネントのコードを変更して適応されたコードを出力する適応部と、前記適応されたコードからドメインのライブラリを呼び出す部分を実際のドメインライブラリを呼び出す部分と連結して最終生成コードを生成する連結部とを含んで構成することができる。
【００１１】
上記の本発明の第２の目的を達成するための本発明の一実施形態に係るソフトウェア開発方法は、複数のソフトウェアの特徴を分析して生成したフィーチャーモデルより開発者から受信した開発対象ソフトウェアに該当するフィーチャーを選択してフィーチャーリストを生成するステップと、前記開発者から受信した開発対象ソフトウェアタイプに該当するコード自動生成器を決定するステップと、前記開発対象ソフトウェアタイプを利用して開発対象ソフトウェアのアーキテクチャコンポーネントを選択し、前記選択したアーキテクチャコンポーネント及び前記開発者から受信した前記決定されたコード自動生成器の要求事項に基づいて自動生成されたコードを生成するステップと、前記生成したフィーチャーリストに基づいて前記自動生成されたコード及び前記アーキテクチャコンポーネントのコードを変更して適応されたコードを出力するステップと、前記適応されたコードからドメインのライブラリを呼び出す部分を実際のドメインライブラリを呼び出す部分と連結して最終生成コードを生成するステップとを含んで構成することができる。
【発明の効果】
【００１２】
上述のような本発明の一実施形態に係るソフトウェアタイプ別コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発方法及びそれのための装置を利用する場合、ソフトウェアタイプが異なる多様な種類のソフトウェアを、該当ソフトウェアタイプ別コード自動生成器を利用して開発することができる。
【００１３】
また、既に開発されたソフトウェアタイプ別コード自動生成器のようなソフトウェアタイプの他のソフトウェアを、コード自動生成器を利用して製品ライン基盤のソフトウェア開発方法で開発しようとする時、該当ソフトウェアタイプ別コード自動生成器を修正及び再利用することができる効果がある。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の一実施形態に係るソフトウェア開発装置の内部構造を概略的に示したブロック図である。
【図２】図２は、本発明の一実施形態に係るソフトウェア開発装置のコード自動生成器選択部により選択されたデータ変換者ソフトウェアタイプのコード自動生成器の要求事項を示した例示図である。
【図３】図３は、本発明の一実施形態に係るソフトウェア開発装置のコード自動生成器選択部により選択されたデータ分配者ソフトウェアタイプのコード自動生成器の要求事項を示した例示図である。
【図４】図４は、本発明の一実施形態に係るソフトウェア開発装置のコード自動生成器選択部により選択されたコントローラソフトウェアタイプのコード自動生成器の要求事項を示した例示図である。
【図５】図５は、本発明の一実施形態に係るソフトウェア開発装置のコード自動生成器選択部により選択されたデータ変換者＋データ分配者ソフトウェアタイプのコード自動生成器の要求事項を示した例示図である。
【図６】図６は、本発明の一実施形態に係るソフトウェア開発装置のコード自動生成部から生成されたコードをソフトウェア骨組コードに満たした後適応部が自動生成されたコード及び選択された開発するソフトウェアのアーキテクチャコンポーネントのコードの中でフィーチャーのリストによって変更して適応するコードを示した例示図である。
【図７】図７は、本発明の一実施形態に係るソフトウェアタイプ別コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発装置を利用して開発されるソフトウェアの内部構造を概略的に示したブロック図である。
【図８】図８は、本発明の一実施形態に係るソフトウェア開発方法を説明するためのフローチャートである。
【発明を実施するための形態】
【００１５】
本発明は、多様に変更可能であり、さまざまな実施形態を有することができる。ここでは、特定の実施形態を図面に例示して詳細に説明する。しかし、これは本発明の好ましい実施態様に過ぎず、本発明の実施の範囲を限定するものではなく、本発明の明細書及び図面内容に基づいてなされた均等な変更および付加は、いずれも本発明の特許請求の範囲内に含まれるものとする。各図面の説明において、類似な構成要素に対して類似な参照符号を付与して説明する。
【００１６】
第１、第２、Ａ、Ｂなどの用語は、多様な構成要素を説明するために使用することはできるが、前記構成要素は前記用語により限定されるものではない。前記用語は、一つの構成要素を他の構成要素から区別するための目的のみで使用される。例えば、本発明の権利範囲を脱しない範囲で、第１の構成要素は第２の構成要素と命名することができ、類似に第２の構成要素も第１の構成要素と命名することができる。及び／またはとの用語は、複数の関連、記載された項目の組み合わせまたは複数の関連、記載された項目の中のいずれか一項目を含む。
【００１７】
ある構成要素が他の構成要素に「連結されて」いるか、あるいは「接続されて」いると記載している場合は、ある構成要素が他の構成要素に直接的に連結されるかあるいは接続されていることもあるが、間に他の構成要素が介在することもあることを意味する。一方、ある構成要素が他の構成要素に「直接連結されて」いるかあるいは「直接接続されて」いると記載している場合は、中間に他の構成要素が存在しないことを意味する。
【００１８】
本明細書で使用した用語は、単に、特定の実施形態を説明するために使用されたものであり、本発明を限定するものではない。単数の表現は、文脈上明白に異なる記載をしない限り複数の表現を含む。本出願において、「含む」または「有する」などの用語は、明細書上に記載された特徴、数字、ステップ、動作、構成要素、部品またはこれらを組み合わせたものが存在することを指定するのであって、一つまたはそれ以上の他の特徴や数字、ステップ、動作、構成要素、部品またはこれらを組み合わせたものなどの存在または付加可能性をあらかじめ排除することではない。
【００１９】
異なる定義のない限り、技術的や科学的な用語を含んでここで使用されるすべての用語は、本発明が属する技術分野で通常の知識を有する者により一般的に理解される意味と同一な意味を有する。一般的に使用される辞典に定義されているものと同様の用語は、関連技術の文脈上有する意味と一致することと解釈されるべく、本出願において明白に定義しない限り、理想的や過度に形式的な意味を有することで解釈されない。
【００２０】
以下、添付した図面を参照して本発明の好ましい実施形態について詳細に説明する。
【００２１】
本発明を説明する前に、一般的なソフトウェア開発方法について説明する。まず、ソフトウェア製品ラインを基盤としてソフトウェア開発方法を説明する。ソフトウェア製品ライン基盤のソフトウェア開発方法は、ソフトウェアを各々個別的に開発しないで類似のサービスを提供するソフトウェアをともに考慮して開発する方法である。
【００２２】
すなわち、同一領域に属した多くのソフトウェアの機能的側面と品質を考慮して共通点と差異点の分析を通じて十分な核心資産を確保し、その核心資産を組み合わせて希望するソフトウェアを開発する方法によって、共通の資産を再利用して開発期間を短縮させ生産性を高めて良い品質を有したソフトウェアを開発することができる。
【００２３】
次に、コード自動生成器を利用したソフトウェア開発方法について説明する。ソフトウェア製品ラインを基盤としたソフトウェア開発方法にはさまざまな方法があるが、その中で一つの方法として、コード自動生成器を利用してソフトウェア製品ライン基盤のソフトウェアを開発する方法がある。
【００２４】
コード自動生成器は、モデルからソフトウェアのソースコードを自動で生成するシステムとして、人間が手動でソースコードを開発する時よりソフトウェア開発に必要な人力、価格及び時間を減らしてソフトウェアの生産性を高めることができる。
【００２５】
次に、コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発方法について説明する。コード自動生成器を利用した単一ソフトウェア開発方法が多様なソフトウェアドメインで研究された。
【００２６】
しかし、コード自動生成器を利用した単一ソフトウェア開発方法は、単一ソフトウェア開発を対象とするため、ソフトウェアをともに考慮して開発するソフトウェア製品ライン基盤のソフトウェア開発に適用しにくい問題点がある。コード自動生成器を利用してソフトウェア製品ライン基盤のソフトウェアを開発した研究がある。
【００２７】
どころが、従来の研究は、コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発のために具体的にどのようなシステムがどのように結合して構成され、どのようなプロセスを通じて製品ライン基盤のソフトウェアが開発されるかが明確に提示していない。以下、図１を参照して本発明の一実施形態に係るソフトウェア開発装置の内部構造についてより具体的に説明する。
【００２８】
図１は、本発明の一実施形態に係るソフトウェア開発装置の内部構造を概略的に示したブロック図である。
【００２９】
図１を参照すると、ソフトウェア開発装置は、ユーザインターフェース１００と、フィーチャー選択部１０１と、コード自動生成器選択部１０２と、コード自動生成部１０３と、適応部１０４と、連結部１０５と、制御部１０６と、保存部１０７とを含んで構成することができる。保存部１０７は、コード自動生成器保存ユニット（図示せず）、アーキテクチャモデル保存ユニット（図示せず）及びドメインライブラリ保存ユニット（図示せず）を含んで構成することができる。
【００３０】
ユーザインターフェース１００は、ソフトウェアタイプ別コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェアを開発しようとする開発者と、フィーチャー選択部１０１、コード自動生成器選択部１０２、コード自動生成部１０３、適応部１０４及び連結部１０５との間の入力及び出力を媒介する。
【００３１】
フィーチャー選択部１０１は、ソフトウェア製品ラインのソフトウェア製品ラインに属する複数のソフトウェアの共通点及び差異点をフィーチャー単位に分析して生成されたフィーチャーモデルを基礎に、ユーザインターフェース１００を通じて開発者から開発するソフトウェアに該当するフィーチャーを受信してフィーチャーのリストを生成する。
【００３２】
ここで、フィーチャーモデルは、ソフトウェア製品ラインに属する複数のソフトウェアに含まれる共通点である共通フィーチャーと、ソフトウェア製品ラインに属する複数のソフトウェアによって複数のソフトウェアに含まれるか含まれない差異点である可変フィーチャーとを分析して生成されたモデルである。
【００３３】
コード自動生成器選択部１０２は、ユーザインターフェース１００を通じて開発者からソフトウェアタイプリストに含まれた複数のソフトウェアタイプの中で開発するソフトウェアタイプを受信し、受信された開発するソフトウェアタイプに該当するコード自動生成器を制御部１０６の制御により自動生成器保存ユニットから選択する。
【００３４】
例えば、コード自動生成器選択部１０２は、ユーザインターフェース１００を通じて開発者からソフトウェアタイプリストに含まれた複数のソフトウェアタイプの中で開発するソフトウェアタイプであるデータマネージャーソフトウェアタイプ、データ変換者ソフトウェアタイプ、データ分配者ソフトウェアタイプ、コントローラソフトウェアタイプ及びモニターソフトウェアタイプを受信することができるが、これに限定されるものではない。
【００３５】
本発明の一実施形態によれば、データマネージャーソフトウェアタイプは、データを保存及び管理するソフトウェアとして、外部からデータの読み取り、書き込み、削除などの要請を受信し、受信されたデータの読み取り、書き込み、削除などの要請を処理する時、データベースに接続してデータの読み取り、書き込み、削除などの作業を実行する。データ変換者ソフトウェアタイプは、データ発信者から受信したデータをデータ変換規則によって他のデータ値に変換させるソフトウェアである。
【００３６】
本発明の一実施形態によれば、データ分配者ソフトウェアタイプは、データ発信者から受信したデータをデータ分配規則によってデータ受信者に伝送する役割をするソフトウェアであり、コントローラソフトウェアタイプは、システムの状態（Ｓｔａｔｅ）を管理するソフトウェアとして、現在状態の条件によってあらかじめ決定された動作（Ａｃｔｉｏｎ）を行う役割をするソフトウェアであり、モニターソフトウェアタイプは、ユーザとシステムとの間のインターフェースとして、データを読み取ってユーザに表示する役割をするソフトウェアである。
【００３７】
本発明の一実施形態によれば、ソフトウェアは、二つの以上のソフトウェアタイプを有することができ、例えば、データ変換者ソフトウェアタイプとデータ分配者ソフトウェアタイプを有するソフトウェアは、データ発信者から受信したデータをデータ変換規則によって他のデータ値に変換させ、データ分配規則によってデータ受信者に伝送する役割をするソフトウェアである。
【００３８】
コード自動生成部１０３は、制御部１０６の制御により開発するソフトウェアタイプを利用してアーキテクチャモデル保存ユニットから開発するソフトウェアのアーキテクチャコンポーネントを選択し、ユーザインターフェース１００を通じて開発者からコード自動生成器選択部１０２により選択されたコード自動生成器の要求事項を受信して開発するソフトウェアタイプに該当する自動生成されたコードを生成する。
【００３９】
本発明の一実施形態によれば、ユーザインターフェース１００を通じて開発者からコード自動生成器選択部１０２により選択されたコード自動生成器の要求事項を受信し、この時、受信されたコード自動生成器の要求事項は、フィーチャー選択部１０１から選択されたフィーチャーのリストによって変更部分及び適応される部分を含むことができる。
【００４０】
本発明の一実施形態によれば、ユーザインターフェース１００を通じて開発者からコード自動生成器選択部１０２により選択されたコード自動生成器の要求事項は、ソフトウェアのタイプによって選択されるデータ変換者ソフトウェアタイプのコード自動生成器、データ分配者ソフトウェアタイプのコード自動生成器、コントローラソフトウェアタイプのコード自動生成器、及びデータ変換者＋データ分配者ソフトウェアタイプのコード自動生成器の中で少なくとも一つのコード自動選択機によって異なる。
【００４１】
この時、ソフトウェアタイプに該当するコード自動生成器は、本発明で記述した内容に限定されないで、他のソフトウェアタイプのためのソフトウェアタイプ別コード自動生成器を定義することができる。また、本発明は、多様な形態に具現することができ、ここで説明する例に限定されるものではない。
【００４２】
適応部１０４は、コード自動生成部１０３から生成された自動生成されたコード及び選択された開発するソフトウェアのアーキテクチャコンポーネントのコードの中でフィーチャーのリストによって変更部分及び適応される部分をフィーチャー選択部１０１から選択されたフィーチャーリストによって変更して適応されたコードを出力する。
【００４３】
ここで、適応されたコードには、フィーチャー選択部１０１から選択されたフィーチャーのリストによって変更及び適応される部分が抜けているが使用可能なドメインライブラリを呼び出す部分が含まれている。連結部１０５は、適応部１０４から適応されたコードでドメインのライブラリを呼び出す部分と制御部１０６の制御によりドメインライブラリの保存ユニットから選択された実際のドメインライブラリを呼び出す部分とを連結して最終生成コードを生成する。
【００４４】
コード自動生成器保存ユニットは、あらかじめ開発されているソフトウェアタイプに該当するコード自動生成器を保存している。アーキテクチャモデル保存ユニットは、ソフトウェアタイプに該当するソフトウェアアーキテクチャモデルを保存している。ドメインライブラリ保存ユニットは、ソフトウェアドメインで使われるライブラリを保存している。
【００４５】
制御部１０６は、コード自動生成器選択部１０２がユーザインターフェース１００を通じて開発者からソフトウェアタイプリストに含まれた複数のソフトウェアタイプの中で開発するソフトウェアタイプを受信してコード自動生成器を選択する場合、ユーザインターフェース１００を通じて開発者から受信された開発するソフトウェアタイプに該当するコード自動生成器が自動生成器保存ユニットから選択されるように制御する。
【００４６】
制御部１０６は、コード自動生成部１０３が開発するソフトウェアタイプを利用して開発するソフトウェアのアーキテクチャコンポーネントを選択する場合、開発するソフトウェアのアーキテクチャコンポーネントがアーキテクチャモデル保存ユニットから選択されるように制御する。また、制御部１０６は、連結部１０５が適応されたコードからドメインのライブラリを呼び出す部分と実際のドメインライブラリを呼び出す部分を連結する場合、ドメインライブラリ保存ユニットから選択された実際のドメインライブラリを呼び出す部分が選択されるように制御する。
【００４７】
以下、図２乃至図５を参照して本発明の一実施形態に係るソフトウェア開発装置のコード自動生成器選択部１０２により選択されたコード自動生成器の要求事項をより具体的に説明する。
【００４８】
図２は、本発明の一実施形態に係るソフトウェアタイプ別ソフトウェア開発装置のコード自動生成器選択部により選択されたデータ変換者ソフトウェアタイプのコード自動生成器の要求事項を示した例示図である。
【００４９】
図２を参照すると、データ変換者ソフトウェアタイプのソフトウェアがデータ発信者２００からデータ−Ａを受信すれば、受信されたデータ−Ａは、データ変換規則２０１、例えば、受信されたデータ−Ａの内容がａである場合という規則の変換規則２０１を通じて受信されたデータ−Ａをデータ−Ｂに変換する。このような関係は、データ発信者＊データ、変換条件、そして動作を各列とする判断テーブル２０３で示すことができる。コード自動生成部１０３は、判断テーブル２０３を利用してデータ変換者ソフトウェアタイプを有するソフトウェアの自動生成されたコードを自動で生成することができる。
【００５０】
図３は、本発明の一実施形態に係るソフトウェアタイプ別ソフトウェア開発装置のコードにより選択されたデータ分配者ソフトウェアタイプのコード自動生成器の要求事項を示した例示図である。
【００５１】
図３を参照すると、データ分配者ソフトウェアタイプのソフトウェアがデータ発信者からデータ−Ａを受信すれば、受信されたデータ−Ａは、データ分配規則３０１、例えば、受信されたデータ−Ａの内容がａである場合という規則の分配規則３０１を通じて受信されたデータ−Ａをデータ受信者３０２に伝達する。このような関係は、データ発信者＊データ、条件、そして動作を各列とする判断テーブル３０３で示すことができる。コード自動生成部１０３は、判断テーブル３０３からデータ分配者ソフトウェアタイプを有するソフトウェアの自動生成されたコードを自動で生成することができる。
【００５２】
図４は、本発明の一実施形態に係るソフトウェアタイプ別ソフトウェア開発装置のコード自動生成器選択部により選択されたコントローラーソフトウェアタイプのコード自動生成器の要求事項を示した例示図である。
【００５３】
図４を参照すると、コントローラソフトウェアタイプのソフトウェアは、システムの多くの状態を管理する。例えば、システムの各状態で発生可能な条件が存在し、発生可能な条件を満足した場合に、コントローラソフトウェアタイプのソフトウェアは関数を呼び出すか他の状態に変更する。
【００５４】
本発明の一実施形態によれば、コントローラソフトウェアタイプのソフトウェアは、システムの第１状態４０１乃至第４状態４０４を管理し、システムの状態が第１状態４０１の場合に、第１条件が満足した場合、第１状態４０１を第２状態４０２に変更し、システムの状態が第１状態４０１の場合に、第２条件が満足した場合、第１状態４０１を第３状態４０３に変更し、システムの状態が第３状態４０３の場合に、第３条件を満足した場合、第３状態４０３を第１状態４０１に変更する。
【００５５】
このような関係は、状態、条件、そして動作を各列とするステートチャート計算機４０５で示すことができ、コード自動生成部１０３はステートチャート計算機４０５を利用してコントローラソフトウェアタイプを有するソフトウェアの自動生成されたコードを自動で生成することができる。
【００５６】
図５は、本発明の一実施形態に係るソフトウェアタイプ別ソフトウェア開発装置のコード自動生成器選択部１０２により選択されたデータ変換者＋データ分配者ソフトウェアタイプのコード自動生成器の要求事項を示した例示図である。
【００５７】
図５を参照すると、データ変換者＋データ分配者ソフトウェアタイプのソフトウェアはデータ発信者５００からデータ−Ａを受信し、受信されたデータ−Ａをデータ変換規則及びデータ分配規則５０１を通じてデータ−Ａをデータ−Ｂに変換し、変換されたデータ−Ｂをデータ受信者５０２に伝達する。
【００５８】
このような関係は、データ変換者の判断テーブル２０３とデータ分配者の判断テーブル３０３が合された形態である、データ発信者＊データ、条件、動作を各列に有する判断テーブル５０３で示すことができる。
【００５９】
コード自動生成部１０３は、判断テーブル５０３を利用してデータ変換者＋データ分配者ソフトウェアタイプを有するソフトウェアの自動生成されたコードを自動で生成することができる。以下、図６を参照して本発明の一実施形態に係るソフトウェア開発装置のコード自動生成部１０３から生成されたコードをソフトウェア骨組コードに満たした後、適応部１０４が自動生成されたコード及び選択された開発するソフトウェアのアーキテクチャコンポーネントのコードの中でフィーチャーのリストによって変更して適応するコードをより具体的に説明する。
【００６０】
図６は、本発明の一実施形態に係るソフトウェア開発装置のコード自動生成部１０３が自動生成されたコードをソフトウェア骨組コードに満たした後、適応部が自動生成されたコード及び選択された開発するソフトウェアのアーキテクチャコンポーネントのコードの中でフィーチャーのリストによって変更して適応するコードを示した例示図である。
【００６１】
図６を参照すると、コード自動生成部１０３は、制御部１０６の制御により開発するソフトウェアタイプを利用してアーキテクチャモデル保存ユニットから開発するソフトウェアのアーキテクチャコンポーネントを選択し、ユーザインターフェース１００を通じて開発者からコード自動生成器選択部１０２により選択されたコード自動生成器の要求事項を受信して開発するソフトウェアタイプに該当する自動生成されたコード６００ａ、６００ｂを生成し、生成された自動生成コード６００ａ、６００ｂでソフトウェアアーキテクチャコンポーネントであるドメインコンポーネント、例えば、ソフトウェアドメインコンポーネント６０２及びソフトウェア骨組コード６０１で実現されなかった部分を満たす。
【００６２】
適応部１０４は、ソフトウェア骨組コード及び自動生成されたコードをフィーチャー選択部１０１から選択されたフィーチャーリストによって変更して適応されたコードを出力することができる。
【００６３】
ここで、適応されたコードには、ドメインライブラリを呼び出す部分が含まれており、ソフトウェアドメインコンポーネント６０２及び自動生成されたコード６００ａ、６００ｂは、フィーチャー選択部１０１から選択されたフィーチャーリストによって差異点に該当する適応されるコード部分６０３ａ、６０３ｂを含むことができる。
【００６４】
適応部１０４は、ソフトウェア骨組コード及び自動生成されたコードをフィーチャー選択部１０１から選択されたフィーチャーリストと比較することによって発生する差異点に該当する適応されるコード部分６０３ａ、６０３ｂをソフトウェアコードに含ませないこともできる。
【００６５】
連結部１０５は、適応部１０４から適応されたコードでドメインのライブラリを呼び出す部分とソフトウェアドメインコンポーネントのライブラリを呼び出す部分とを連結して最終生成コードを生成する。
【００６６】
以下、図７を参照して本発明の一実施形態に係るソフトウェアタイプ別コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発装置を利用して開発されるソフトウェアの内部構造をより具体的に説明する。
【００６７】
図７は、本発明の一実施形態に係るソフトウェアタイプ別コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発装置を利用して開発されるソフトウェアの内部構造を概略的に示したブロック図である。
【００６８】
図７を参照すると、データベース７０１は、データを保存し、ミドルウェア７０２と相互呼び出しを行う。ミドルウェア７０２は、開発しようとするソフトウェアドメインコンポーネント７０３と相互呼び出しを行う。
【００６９】
ソフトウェアドメインコンポーネント７０３は、開発しようとするソフトウェアのドメインで共通的に使う機能をコンポーネント化させるためのもので、ソフトウェア骨組コード及び自動生成されたコード７０４と相互呼び出しを行う。
【００７０】
ソフトウェア骨組コード及び自動生成されたコード７０４は、ソフトウェア骨組コードの具現されなかった部分を自動生成されたコードで満たすことにより生成された自動生成されたコードを保存する。
【００７１】
ここで、ソフトウェア骨組コードは、ソフトウェアに特化されたインターフェースが定義されているコードとして関数内部が実現されていない、アルゴリズムが精製されていないコードであり、自動生成されたコードは、コード自動生成部１０３から自動的に生成されたソフトウェアに特化されたコードである。以下、図８を参照して本発明の一実施形態に係るソフトウェア開発方法をより具体的に説明する。
【００７２】
図８は、本発明の一実施形態に係るソフトウェア開発方法を説明するためのフローチャートである。
【００７３】
図８を参照すると、ソフトウェア開発装置は、ソフトウェア製品ラインのソフトウェア製品ラインに属する複数のソフトウェアの共通点及び差異点をフィーチャー単位に分析して生成されたフィーチャーモデルに基づいて開発者から開発するソフトウェアに該当するフィーチャーを受信してフィーチャーのリストを生成する（ステップＳ８０１）。
【００７４】
ここで、フィーチャーモデルは、ソフトウェア製品ラインに属する複数のソフトウェアに含まれる共通点である共通フィーチャーと、ソフトウェア製品ラインに属する複数のソフトウェアによって複数のソフトウェアに含まれるか含まれない差異点である可変フィーチャーとを分析して生成されたモデルである。
【００７５】
ソフトウェア開発装置は、開発者からソフトウェアタイプリストに含まれた複数のソフトウェアタイプの中から開発するソフトウェアタイプを受信し、受信された開発するソフトウェアタイプに該当するコード自動生成器を選択する（ステップＳ８０２）。
【００７６】
ソフトウェア開発装置は、開発者からソフトウェアタイプリストに含まれた複数のソフトウェアタイプの中で開発するソフトウェアタイプであるデータマネージャーソフトウェアタイプ、データ変換者ソフトウェアタイプ、データ分配者ソフトウェアタイプ、コントローラソフトウェアタイプ及びモニターソフトウェアタイプを受信することができて、これに限定されるものではない。
【００７７】
本発明の一実施形態によれば、データマネージャーソフトウェアタイプは、データを保存及び管理するソフトウェアとして、外部からデータの読み取り、書き込み、削除などの要請を受信し、受信されたデータの読み取り、書き込み、削除などの要請を処理する時、データベースに接続してデータの読み取り、書き込み、削除などの作業を行い、データ変換者ソフトウェアタイプは、データ発信者から受信したデータをデータ変換規則によって他のデータ値に変換させるソフトウェアである。
【００７８】
本発明の一実施形態によれば、データ分配者ソフトウェアタイプは、データ発信者から受信したデータをデータ分配規則によってデータ受信者に伝送する役割をするソフトウェアであり、コントローラソフトウェアタイプは、システムの状態（Ｓｔａｔｅ）を管理するソフトウェアとして、現在状態の条件によってあらかじめ決定された動作（Ａｃｔｉｏｎ）を行う役割をするソフトウェアであり、モニターソフトウェアタイプは、ユーザとシステムとの間のインターフェースとして、データを読み取ってユーザに表示する役割をするソフトウェアである。
【００７９】
本発明の一実施形態によれば、ソフトウェアは、二つの以上のソフトウェアタイプを有することができ、例えば、データ変換者ソフトウェアタイプとデータ分配者ソフトウェアタイプを有するソフトウェアは、データ発信者から受信したデータをデータ変換規則によって他のデータ値に変換させ、データ分配規則によってデータ受信者に伝送する役割をするソフトウェアである。
【００８０】
次に、開発者から開発するソフトウェアタイプに該当するソフトウェアのアーキテクチャコンポーネントを受信し、開発者からコード自動生成器の要求事項を受信して開発するソフトウェアタイプに該当する自動生成されたコードを生成する（ステップＳ８０３）。
【００８１】
本発明の一実施形態によれば、ソフトウェア開発装置は、開発者からコード自動生成器選択部１０２により選択されたコード自動生成器の要求事項を受信し、この時、受信されたコード自動生成器の要求事項は、フィーチャーのリストによって変更部分及び適応される部分を含むことができる。
【００８２】
本発明の一実施形態によれば、開発者から受信されたコード自動生成器の要求事項は、ソフトウェアのタイプによって選択されるデータ変換者ソフトウェアタイプのコード自動生成器、データ分配者ソフトウェアタイプのコード自動生成器、コントローラソフトウェアタイプのコード自動生成器、及びデータ変換者＋データ分配者ソフトウェアタイプのコード自動生成器の内少なくとも一つのコード自動選択器によって異なる。
【００８３】
この時、ソフトウェアタイプに該当するコード自動生成器は、本発明で記述した内容に限定されなく、他のソフトウェアタイプのためのソフトウェアタイプ別コード自動生成器を定義することができる。また、本発明は多様な形態に具現することができ、ここで説明する例に限定されるものではない。
【００８４】
次に、自動生成されたコード及び開発するソフトウェアのアーキテクチャコンポーネントのコードの中でフィーチャーのリストによって変更部分及び適応される部分をフィーチャーのリストによって変更して適応されたコードを出力する（ステップＳ８０４）。
【００８５】
ここで、適応されたコードには、フィーチャーのリストによって変更及び適応される部分が抜けているが、使用可能なドメインライブラリを呼び出す部分が含まれている。出力された適応されたコードでドメインのライブラリを呼び出す部分を実際のドメインライブラリを呼び出す部分と連結して最終生成コードを生成する（ステップＳ８０５）。
【００８６】
以上、添付した図面を参照して本発明の実施形態について説明したが、本発明が属する技術の分野における通常の知識を有する者であれば、本発明の技術的思想を逸脱しない範囲内で、様々な置換、変形及び変更が可能であるので、上述の実施形態及び添付された図面に限定されるものではない。
【図１】
0005559356.tif 000002
【図２】
0005559356.tif 000003
【図３】
0005559356.tif 000004
【図４】
0005559356.tif 000005
【図５】
0005559356.tif 000006
【図６】
0005559356.tif 000007
【図７】
0005559356.tif 000008
【図８】
0005559356.tif 000009