複数のソフトウェアの特徴を分析して生成したフィーチャーモデルで開発者から受信した開発対象ソフトウェアに該当するフィーチャーを選択してフィーチャーリストを生成するフィーチャー選択部と、前記開発者から受信した開発対象ソフトウェアタイプに該当するコード自動生成器を決定するコード自動生成器選択部と、前記開発対象ソフトウェアタイプを利用して開発対象ソフトウェアのアーキテクチャコンポーネントを選択し、前記選択したアーキテクチャコンポーネント及び前記開発者から受信した前記決定したコード自動生成器の要求事項に基づいて自動生成されたコードを生成するコード自動生成部と、前記生成したフィーチャーリストに基づいて前記自動生成されたコード及び前記アーキテクチャコンポーネントのコードを変更して適応されたコードを出力する適応部と、前記適応されたコードでドメインのライブラリを呼び出す部分を実際のドメインライブラリを呼び出す部分と連結して最終生成コードを生成する連結部とを含むソフトウェア開発装置。前記ソフトウェア開発装置は、前記開発者と、前記フィーチャー選択部、コード自動生成器選択部及びコード自動生成部それぞれとの間の入力及び出力を制御するユーザインターフェースをさらに含むことを特徴とする請求項1に記載のソフトウェア開発装置。前記ソフトウェア開発装置は、あらかじめ開発された複数のコード自動生成器、複数のソフトウェアアーキテクチャコンポーネント及びソフトウェアドメインで使われるライブラリをソフトウェアタイプ別に各々保存する保存部をさらに含むことを特徴とする請求項1に記載のソフトウェア開発装置。前記ソフトウェア開発装置は、前記開発者から受信された開発対象ソフトウェアタイプに該当するコード自動生成器が保存部にソフトウェアタイプ別に保存されたあらかじめ開発された複数のコード自動生成器から選択されるように制御する制御部をさらに含むことを特徴とする請求項1に記載のソフトウェア開発装置。前記制御部は、前記開発者から受信された開発対象ソフトウェアタイプに該当するアーキテクチャコンポーネントが前記保存部にソフトウェアタイプ別に保存された複数のソフトウェアアーキテクチャコンポーネントから選択されるように制御することを特徴とする請求項4に記載のソフトウェア開発装置。前記制御部は、適応されたコードでドメインのライブラリを呼び出す部分と連結される部分が前記保存部に保存されたライブラリから選択されるように制御することを特徴とする請求項4に記載のソフトウェア開発装置。前記適応部は、前記開発対象ソフトウェアのアーキテクチャコンポーネントのソフトウェア骨組コードで具現されていない部分を前記生成された自動生成されたコードを利用して満たすことを特徴とする請求項1に記載のソフトウェア開発装置。前記フィーチャーモデルは、ソフトウェア製品ラインに属する複数のソフトウェアに含まれる共通点及び差異点をフィーチャー単位に分析して生成されたモデルであることを特徴とする請求項1に記載のソフトウェア開発装置。前記要求事項は、前記開発対象ソフトウェアタイプに該当するコード自動生成器によって変更されることを特徴とする請求項1に記載のソフトウェア開発装置。ソフトウェア開発装置で実行されるソフトウェア開発方法であって、複数のソフトウェアの特徴を分析して生成したフィーチャーモデルで開発者から受信した開発対象ソフトウェアに該当するフィーチャーを選択してフィーチャーリストを生成するステップと、前記開発者から受信した開発対象ソフトウェアタイプに該当するコード自動生成器を決定するステップと、前記開発対象ソフトウェアタイプを利用して開発対象ソフトウェアのアーキテクチャコンポーネントを選択し、前記選択したアーキテクチャコンポーネント及び前記開発者から受信した前記決定したコード自動生成器の要求事項に基づいて自動生成されたコードを生成するステップと、前記生成したフィーチャーリストに基づいて前記自動生成されたコード及び前記アーキテクチャコンポーネントのコードを変更して適応されたコードを出力するステップと、前記適応されたコードでドメインのライブラリを呼び出す部分を実際のドメインライブラリを呼び出す部分と連結して最終生成コードを生成するステップと、を含むことを特徴とするソフトウェア開発方法。前記ソフトウェア開発方法は、あらかじめ開発された複数のコード自動生成器、複数のソフトウェアアーキテクチャコンポーネント及びソフトウェアドメインで使われるライブラリをソフトウェアタイプ別に各々保存するステップをさらに含むことを特徴とする請求項10に記載のソフトウェア開発方法。前記ソフトウェア開発方法は、前記開発者から受信された開発対象ソフトウェアタイプに該当するコード自動生成器がソフトウェアタイプ別に保存されたあらかじめ開発された複数のコード自動生成器から選択されるように制御するステップをさらに含むことを特徴とする請求項10に記載のソフトウェア開発方法。前記制御するステップは、前記開発者から受信された開発対象ソフトウェアタイプに該当するアーキテクチャコンポーネントがソフトウェアタイプ別に保存された複数のソフトウェアアーキテクチャコンポーネントから選択されるように制御することを特徴とする請求項12に記載のソフトウェア開発方法。前記制御するステップは、適応されたコードでドメインのライブラリを呼び出す部分と連結される部分が前記ソフトウェアタイプ別に保存されたライブラリで選択されるように制御することを特徴とする請求項12に記載のソフトウェア開発方法。前記自動生成されたコードを生成するステップは、前記開発対象ソフトウェアのアーキテクチャコンポーネントのソフトウェア骨組コードで具現されていない部分を前記生成された自動生成されたコードを利用して満たすことを特徴とする請求項10に記載のソフトウェア開発方法。前記フィーチャーモデルは、ソフトウェア製品ラインに属する複数のソフトウェアに含まれる共通点及び差異点をフィーチャー単位に分析して生成されたモデルであることを特徴とする請求項10に記載のソフトウェア開発方法。前記要求事項は、前記開発対象ソフトウェアタイプに該当するコード自動生成器によって変更されることを特徴とする請求項10に記載のソフトウェア開発方法。前記のような諸問題点を解消するために、本発明の第1の目的は、タイプ別コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発装置を提供することにある。本発明の第2の目的は、タイプ別コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発方法を提供することにある。上記の本発明の第1の目的を達成するための本発明の一実施形態に係るソフトウェア開発装置は、複数のソフトウェアの特徴を分析して生成したフィーチャーモデルより開発者から受信した開発対象ソフトウェアに該当するフィーチャーを選択してフィーチャーリストを生成するフィーチャー選択部と、前記開発者から受信した開発対象ソフトウェアタイプに該当するコード自動生成器を決定するコード自動生成器選択部と、前記開発対象ソフトウェアタイプを利用して開発対象ソフトウェアのアーキテクチャコンポーネントを選択し、前記選択したアーキテクチャコンポーネント及び前記開発者から受信した前記決定されたコード自動生成器の要求事項に基づいて自動生成されたコードを生成するコード自動生成部と、前記生成されたフィーチャーリストに基づいて前記自動生成されたコード及び前記アーキテクチャコンポーネントのコードを変更して適応されたコードを出力する適応部と、前記適応されたコードからドメインのライブラリを呼び出す部分を実際のドメインライブラリを呼び出す部分と連結して最終生成コードを生成する連結部とを含んで構成することができる。上記の本発明の第2の目的を達成するための本発明の一実施形態に係るソフトウェア開発方法は、複数のソフトウェアの特徴を分析して生成したフィーチャーモデルより開発者から受信した開発対象ソフトウェアに該当するフィーチャーを選択してフィーチャーリストを生成するステップと、前記開発者から受信した開発対象ソフトウェアタイプに該当するコード自動生成器を決定するステップと、前記開発対象ソフトウェアタイプを利用して開発対象ソフトウェアのアーキテクチャコンポーネントを選択し、前記選択したアーキテクチャコンポーネント及び前記開発者から受信した前記決定されたコード自動生成器の要求事項に基づいて自動生成されたコードを生成するステップと、前記生成したフィーチャーリストに基づいて前記自動生成されたコード及び前記アーキテクチャコンポーネントのコードを変更して適応されたコードを出力するステップと、前記適応されたコードからドメインのライブラリを呼び出す部分を実際のドメインライブラリを呼び出す部分と連結して最終生成コードを生成するステップとを含んで構成することができる。上述のような本発明の一実施形態に係るソフトウェアタイプ別コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発方法及びそれのための装置を利用する場合、ソフトウェアタイプが異なる多様な種類のソフトウェアを、該当ソフトウェアタイプ別コード自動生成器を利用して開発することができる。また、既に開発されたソフトウェアタイプ別コード自動生成器のようなソフトウェアタイプの他のソフトウェアを、コード自動生成器を利用して製品ライン基盤のソフトウェア開発方法で開発しようとする時、該当ソフトウェアタイプ別コード自動生成器を修正及び再利用することができる効果がある。本発明は、多様に変更可能であり、さまざまな実施形態を有することができる。ここでは、特定の実施形態を図面に例示して詳細に説明する。しかし、これは本発明の好ましい実施態様に過ぎず、本発明の実施の範囲を限定するものではなく、本発明の明細書及び図面内容に基づいてなされた均等な変更および付加は、いずれも本発明の特許請求の範囲内に含まれるものとする。各図面の説明において、類似な構成要素に対して類似な参照符号を付与して説明する。第1、第2、A、Bなどの用語は、多様な構成要素を説明するために使用することはできるが、前記構成要素は前記用語により限定されるものではない。前記用語は、一つの構成要素を他の構成要素から区別するための目的のみで使用される。例えば、本発明の権利範囲を脱しない範囲で、第1の構成要素は第2の構成要素と命名することができ、類似に第2の構成要素も第1の構成要素と命名することができる。及び/またはとの用語は、複数の関連、記載された項目の組み合わせまたは複数の関連、記載された項目の中のいずれか一項目を含む。ある構成要素が他の構成要素に連結されているか、あるいは接続されていると記載している場合は、ある構成要素が他の構成要素に直接的に連結されるかあるいは接続されていることもあるが、間に他の構成要素が介在することもあることを意味する。一方、ある構成要素が他の構成要素に直接連結されているかあるいは直接接続されていると記載している場合は、中間に他の構成要素が存在しないことを意味する。本明細書で使用した用語は、単に、特定の実施形態を説明するために使用されたものであり、本発明を限定するものではない。単数の表現は、文脈上明白に異なる記載をしない限り複数の表現を含む。本出願において、含むまたは有するなどの用語は、明細書上に記載された特徴、数字、ステップ、動作、構成要素、部品またはこれらを組み合わせたものが存在することを指定するのであって、一つまたはそれ以上の他の特徴や数字、ステップ、動作、構成要素、部品またはこれらを組み合わせたものなどの存在または付加可能性をあらかじめ排除することではない。異なる定義のない限り、技術的や科学的な用語を含んでここで使用されるすべての用語は、本発明が属する技術分野で通常の知識を有する者により一般的に理解される意味と同一な意味を有する。一般的に使用される辞典に定義されているものと同様の用語は、関連技術の文脈上有する意味と一致することと解釈されるべく、本出願において明白に定義しない限り、理想的や過度に形式的な意味を有することで解釈されない。以下、添付した図面を参照して本発明の好ましい実施形態について詳細に説明する。本発明を説明する前に、一般的なソフトウェア開発方法について説明する。まず、ソフトウェア製品ラインを基盤としてソフトウェア開発方法を説明する。ソフトウェア製品ライン基盤のソフトウェア開発方法は、ソフトウェアを各々個別的に開発しないで類似のサービスを提供するソフトウェアをともに考慮して開発する方法である。すなわち、同一領域に属した多くのソフトウェアの機能的側面と品質を考慮して共通点と差異点の分析を通じて十分な核心資産を確保し、その核心資産を組み合わせて希望するソフトウェアを開発する方法によって、共通の資産を再利用して開発期間を短縮させ生産性を高めて良い品質を有したソフトウェアを開発することができる。次に、コード自動生成器を利用したソフトウェア開発方法について説明する。ソフトウェア製品ラインを基盤としたソフトウェア開発方法にはさまざまな方法があるが、その中で一つの方法として、コード自動生成器を利用してソフトウェア製品ライン基盤のソフトウェアを開発する方法がある。コード自動生成器は、モデルからソフトウェアのソースコードを自動で生成するシステムとして、人間が手動でソースコードを開発する時よりソフトウェア開発に必要な人力、価格及び時間を減らしてソフトウェアの生産性を高めることができる。次に、コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発方法について説明する。コード自動生成器を利用した単一ソフトウェア開発方法が多様なソフトウェアドメインで研究された。しかし、コード自動生成器を利用した単一ソフトウェア開発方法は、単一ソフトウェア開発を対象とするため、ソフトウェアをともに考慮して開発するソフトウェア製品ライン基盤のソフトウェア開発に適用しにくい問題点がある。コード自動生成器を利用してソフトウェア製品ライン基盤のソフトウェアを開発した研究がある。どころが、従来の研究は、コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発のために具体的にどのようなシステムがどのように結合して構成され、どのようなプロセスを通じて製品ライン基盤のソフトウェアが開発されるかが明確に提示していない。以下、図1を参照して本発明の一実施形態に係るソフトウェア開発装置の内部構造についてより具体的に説明する。図1は、本発明の一実施形態に係るソフトウェア開発装置の内部構造を概略的に示したブロック図である。図1を参照すると、ソフトウェア開発装置は、ユーザインターフェース100と、フィーチャー選択部101と、コード自動生成器選択部102と、コード自動生成部103と、適応部104と、連結部105と、制御部106と、保存部107とを含んで構成することができる。保存部107は、コード自動生成器保存ユニット図示せず、アーキテクチャモデル保存ユニット図示せず及びドメインライブラリ保存ユニット図示せずを含んで構成することができる。ユーザインターフェース100は、ソフトウェアタイプ別コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェアを開発しようとする開発者と、フィーチャー選択部101、コード自動生成器選択部102、コード自動生成部103、適応部104及び連結部105との間の入力及び出力を媒介する。フィーチャー選択部101は、ソフトウェア製品ラインのソフトウェア製品ラインに属する複数のソフトウェアの共通点及び差異点をフィーチャー単位に分析して生成されたフィーチャーモデルを基礎に、ユーザインターフェース100を通じて開発者から開発するソフトウェアに該当するフィーチャーを受信してフィーチャーのリストを生成する。ここで、フィーチャーモデルは、ソフトウェア製品ラインに属する複数のソフトウェアに含まれる共通点である共通フィーチャーと、ソフトウェア製品ラインに属する複数のソフトウェアによって複数のソフトウェアに含まれるか含まれない差異点である可変フィーチャーとを分析して生成されたモデルである。コード自動生成器選択部102は、ユーザインターフェース100を通じて開発者からソフトウェアタイプリストに含まれた複数のソフトウェアタイプの中で開発するソフトウェアタイプを受信し、受信された開発するソフトウェアタイプに該当するコード自動生成器を制御部106の制御により自動生成器保存ユニットから選択する。例えば、コード自動生成器選択部102は、ユーザインターフェース100を通じて開発者からソフトウェアタイプリストに含まれた複数のソフトウェアタイプの中で開発するソフトウェアタイプであるデータマネージャーソフトウェアタイプ、データ変換者ソフトウェアタイプ、データ分配者ソフトウェアタイプ、コントローラソフトウェアタイプ及びモニターソフトウェアタイプを受信することができるが、これに限定されるものではない。本発明の一実施形態によれば、データマネージャーソフトウェアタイプは、データを保存及び管理するソフトウェアとして、外部からデータの読み取り、書き込み、削除などの要請を受信し、受信されたデータの読み取り、書き込み、削除などの要請を処理する時、データベースに接続してデータの読み取り、書き込み、削除などの作業を実行する。データ変換者ソフトウェアタイプは、データ発信者から受信したデータをデータ変換規則によって他のデータ値に変換させるソフトウェアである。本発明の一実施形態によれば、データ分配者ソフトウェアタイプは、データ発信者から受信したデータをデータ分配規則によってデータ受信者に伝送する役割をするソフトウェアであり、コントローラソフトウェアタイプは、システムの状態Stateを管理するソフトウェアとして、現在状態の条件によってあらかじめ決定された動作Actionを行う役割をするソフトウェアであり、モニターソフトウェアタイプは、ユーザとシステムとの間のインターフェースとして、データを読み取ってユーザに表示する役割をするソフトウェアである。本発明の一実施形態によれば、ソフトウェアは、二つの以上のソフトウェアタイプを有することができ、例えば、データ変換者ソフトウェアタイプとデータ分配者ソフトウェアタイプを有するソフトウェアは、データ発信者から受信したデータをデータ変換規則によって他のデータ値に変換させ、データ分配規則によってデータ受信者に伝送する役割をするソフトウェアである。コード自動生成部103は、制御部106の制御により開発するソフトウェアタイプを利用してアーキテクチャモデル保存ユニットから開発するソフトウェアのアーキテクチャコンポーネントを選択し、ユーザインターフェース100を通じて開発者からコード自動生成器選択部102により選択されたコード自動生成器の要求事項を受信して開発するソフトウェアタイプに該当する自動生成されたコードを生成する。本発明の一実施形態によれば、ユーザインターフェース100を通じて開発者からコード自動生成器選択部102により選択されたコード自動生成器の要求事項を受信し、この時、受信されたコード自動生成器の要求事項は、フィーチャー選択部101から選択されたフィーチャーのリストによって変更部分及び適応される部分を含むことができる。本発明の一実施形態によれば、ユーザインターフェース100を通じて開発者からコード自動生成器選択部102により選択されたコード自動生成器の要求事項は、ソフトウェアのタイプによって選択されるデータ変換者ソフトウェアタイプのコード自動生成器、データ分配者ソフトウェアタイプのコード自動生成器、コントローラソフトウェアタイプのコード自動生成器、及びデータ変換者データ分配者ソフトウェアタイプのコード自動生成器の中で少なくとも一つのコード自動選択機によって異なる。この時、ソフトウェアタイプに該当するコード自動生成器は、本発明で記述した内容に限定されないで、他のソフトウェアタイプのためのソフトウェアタイプ別コード自動生成器を定義することができる。また、本発明は、多様な形態に具現することができ、ここで説明する例に限定されるものではない。適応部104は、コード自動生成部103から生成された自動生成されたコード及び選択された開発するソフトウェアのアーキテクチャコンポーネントのコードの中でフィーチャーのリストによって変更部分及び適応される部分をフィーチャー選択部101から選択されたフィーチャーリストによって変更して適応されたコードを出力する。ここで、適応されたコードには、フィーチャー選択部101から選択されたフィーチャーのリストによって変更及び適応される部分が抜けているが使用可能なドメインライブラリを呼び出す部分が含まれている。連結部105は、適応部104から適応されたコードでドメインのライブラリを呼び出す部分と制御部106の制御によりドメインライブラリの保存ユニットから選択された実際のドメインライブラリを呼び出す部分とを連結して最終生成コードを生成する。コード自動生成器保存ユニットは、あらかじめ開発されているソフトウェアタイプに該当するコード自動生成器を保存している。アーキテクチャモデル保存ユニットは、ソフトウェアタイプに該当するソフトウェアアーキテクチャモデルを保存している。ドメインライブラリ保存ユニットは、ソフトウェアドメインで使われるライブラリを保存している。制御部106は、コード自動生成器選択部102がユーザインターフェース100を通じて開発者からソフトウェアタイプリストに含まれた複数のソフトウェアタイプの中で開発するソフトウェアタイプを受信してコード自動生成器を選択する場合、ユーザインターフェース100を通じて開発者から受信された開発するソフトウェアタイプに該当するコード自動生成器が自動生成器保存ユニットから選択されるように制御する。制御部106は、コード自動生成部103が開発するソフトウェアタイプを利用して開発するソフトウェアのアーキテクチャコンポーネントを選択する場合、開発するソフトウェアのアーキテクチャコンポーネントがアーキテクチャモデル保存ユニットから選択されるように制御する。また、制御部106は、連結部105が適応されたコードからドメインのライブラリを呼び出す部分と実際のドメインライブラリを呼び出す部分を連結する場合、ドメインライブラリ保存ユニットから選択された実際のドメインライブラリを呼び出す部分が選択されるように制御する。以下、図2乃至図5を参照して本発明の一実施形態に係るソフトウェア開発装置のコード自動生成器選択部102により選択されたコード自動生成器の要求事項をより具体的に説明する。図2は、本発明の一実施形態に係るソフトウェアタイプ別ソフトウェア開発装置のコード自動生成器選択部により選択されたデータ変換者ソフトウェアタイプのコード自動生成器の要求事項を示した例示図である。図2を参照すると、データ変換者ソフトウェアタイプのソフトウェアがデータ発信者200からデータ-Aを受信すれば、受信されたデータ-Aは、データ変換規則201、例えば、受信されたデータ-Aの内容がaである場合という規則の変換規則201を通じて受信されたデータ-Aをデータ-Bに変換する。このような関係は、データ発信者データ、変換条件、そして動作を各列とする判断テーブル203で示すことができる。コード自動生成部103は、判断テーブル203を利用してデータ変換者ソフトウェアタイプを有するソフトウェアの自動生成されたコードを自動で生成することができる。図3は、本発明の一実施形態に係るソフトウェアタイプ別ソフトウェア開発装置のコードにより選択されたデータ分配者ソフトウェアタイプのコード自動生成器の要求事項を示した例示図である。図3を参照すると、データ分配者ソフトウェアタイプのソフトウェアがデータ発信者からデータ-Aを受信すれば、受信されたデータ-Aは、データ分配規則301、例えば、受信されたデータ-Aの内容がaである場合という規則の分配規則301を通じて受信されたデータ-Aをデータ受信者302に伝達する。このような関係は、データ発信者データ、条件、そして動作を各列とする判断テーブル303で示すことができる。コード自動生成部103は、判断テーブル303からデータ分配者ソフトウェアタイプを有するソフトウェアの自動生成されたコードを自動で生成することができる。図4は、本発明の一実施形態に係るソフトウェアタイプ別ソフトウェア開発装置のコード自動生成器選択部により選択されたコントローラーソフトウェアタイプのコード自動生成器の要求事項を示した例示図である。図4を参照すると、コントローラソフトウェアタイプのソフトウェアは、システムの多くの状態を管理する。例えば、システムの各状態で発生可能な条件が存在し、発生可能な条件を満足した場合に、コントローラソフトウェアタイプのソフトウェアは関数を呼び出すか他の状態に変更する。本発明の一実施形態によれば、コントローラソフトウェアタイプのソフトウェアは、システムの第1状態401乃至第4状態404を管理し、システムの状態が第1状態401の場合に、第1条件が満足した場合、第1状態401を第2状態402に変更し、システムの状態が第1状態401の場合に、第2条件が満足した場合、第1状態401を第3状態403に変更し、システムの状態が第3状態403の場合に、第3条件を満足した場合、第3状態403を第1状態401に変更する。このような関係は、状態、条件、そして動作を各列とするステートチャート計算機405で示すことができ、コード自動生成部103はステートチャート計算機405を利用してコントローラソフトウェアタイプを有するソフトウェアの自動生成されたコードを自動で生成することができる。図5は、本発明の一実施形態に係るソフトウェアタイプ別ソフトウェア開発装置のコード自動生成器選択部102により選択されたデータ変換者データ分配者ソフトウェアタイプのコード自動生成器の要求事項を示した例示図である。図5を参照すると、データ変換者データ分配者ソフトウェアタイプのソフトウェアはデータ発信者500からデータ-Aを受信し、受信されたデータ-Aをデータ変換規則及びデータ分配規則501を通じてデータ-Aをデータ-Bに変換し、変換されたデータ-Bをデータ受信者502に伝達する。このような関係は、データ変換者の判断テーブル203とデータ分配者の判断テーブル303が合された形態である、データ発信者データ、条件、動作を各列に有する判断テーブル503で示すことができる。コード自動生成部103は、判断テーブル503を利用してデータ変換者データ分配者ソフトウェアタイプを有するソフトウェアの自動生成されたコードを自動で生成することができる。以下、図6を参照して本発明の一実施形態に係るソフトウェア開発装置のコード自動生成部103から生成されたコードをソフトウェア骨組コードに満たした後、適応部104が自動生成されたコード及び選択された開発するソフトウェアのアーキテクチャコンポーネントのコードの中でフィーチャーのリストによって変更して適応するコードをより具体的に説明する。図6は、本発明の一実施形態に係るソフトウェア開発装置のコード自動生成部103が自動生成されたコードをソフトウェア骨組コードに満たした後、適応部が自動生成されたコード及び選択された開発するソフトウェアのアーキテクチャコンポーネントのコードの中でフィーチャーのリストによって変更して適応するコードを示した例示図である。図6を参照すると、コード自動生成部103は、制御部106の制御により開発するソフトウェアタイプを利用してアーキテクチャモデル保存ユニットから開発するソフトウェアのアーキテクチャコンポーネントを選択し、ユーザインターフェース100を通じて開発者からコード自動生成器選択部102により選択されたコード自動生成器の要求事項を受信して開発するソフトウェアタイプに該当する自動生成されたコード600a、600bを生成し、生成された自動生成コード600a、600bでソフトウェアアーキテクチャコンポーネントであるドメインコンポーネント、例えば、ソフトウェアドメインコンポーネント602及びソフトウェア骨組コード601で実現されなかった部分を満たす。適応部104は、ソフトウェア骨組コード及び自動生成されたコードをフィーチャー選択部101から選択されたフィーチャーリストによって変更して適応されたコードを出力することができる。ここで、適応されたコードには、ドメインライブラリを呼び出す部分が含まれており、ソフトウェアドメインコンポーネント602及び自動生成されたコード600a、600bは、フィーチャー選択部101から選択されたフィーチャーリストによって差異点に該当する適応されるコード部分603a、603bを含むことができる。適応部104は、ソフトウェア骨組コード及び自動生成されたコードをフィーチャー選択部101から選択されたフィーチャーリストと比較することによって発生する差異点に該当する適応されるコード部分603a、603bをソフトウェアコードに含ませないこともできる。連結部105は、適応部104から適応されたコードでドメインのライブラリを呼び出す部分とソフトウェアドメインコンポーネントのライブラリを呼び出す部分とを連結して最終生成コードを生成する。以下、図7を参照して本発明の一実施形態に係るソフトウェアタイプ別コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発装置を利用して開発されるソフトウェアの内部構造をより具体的に説明する。図7は、本発明の一実施形態に係るソフトウェアタイプ別コード自動生成器を利用したソフトウェア製品ライン基盤のソフトウェア開発装置を利用して開発されるソフトウェアの内部構造を概略的に示したブロック図である。図7を参照すると、データベース701は、データを保存し、ミドルウェア702と相互呼び出しを行う。ミドルウェア702は、開発しようとするソフトウェアドメインコンポーネント703と相互呼び出しを行う。ソフトウェアドメインコンポーネント703は、開発しようとするソフトウェアのドメインで共通的に使う機能をコンポーネント化させるためのもので、ソフトウェア骨組コード及び自動生成されたコード704と相互呼び出しを行う。ソフトウェア骨組コード及び自動生成されたコード704は、ソフトウェア骨組コードの具現されなかった部分を自動生成されたコードで満たすことにより生成された自動生成されたコードを保存する。ここで、ソフトウェア骨組コードは、ソフトウェアに特化されたインターフェースが定義されているコードとして関数内部が実現されていない、アルゴリズムが精製されていないコードであり、自動生成されたコードは、コード自動生成部103から自動的に生成されたソフトウェアに特化されたコードである。以下、図8を参照して本発明の一実施形態に係るソフトウェア開発方法をより具体的に説明する。図8は、本発明の一実施形態に係るソフトウェア開発方法を説明するためのフローチャートである。図8を参照すると、ソフトウェア開発装置は、ソフトウェア製品ラインのソフトウェア製品ラインに属する複数のソフトウェアの共通点及び差異点をフィーチャー単位に分析して生成されたフィーチャーモデルに基づいて開発者から開発するソフトウェアに該当するフィーチャーを受信してフィーチャーのリストを生成するステップS801。ここで、フィーチャーモデルは、ソフトウェア製品ラインに属する複数のソフトウェアに含まれる共通点である共通フィーチャーと、ソフトウェア製品ラインに属する複数のソフトウェアによって複数のソフトウェアに含まれるか含まれない差異点である可変フィーチャーとを分析して生成されたモデルである。ソフトウェア開発装置は、開発者からソフトウェアタイプリストに含まれた複数のソフトウェアタイプの中から開発するソフトウェアタイプを受信し、受信された開発するソフトウェアタイプに該当するコード自動生成器を選択するステップS802。ソフトウェア開発装置は、開発者からソフトウェアタイプリストに含まれた複数のソフトウェアタイプの中で開発するソフトウェアタイプであるデータマネージャーソフトウェアタイプ、データ変換者ソフトウェアタイプ、データ分配者ソフトウェアタイプ、コントローラソフトウェアタイプ及びモニターソフトウェアタイプを受信することができて、これに限定されるものではない。本発明の一実施形態によれば、データマネージャーソフトウェアタイプは、データを保存及び管理するソフトウェアとして、外部からデータの読み取り、書き込み、削除などの要請を受信し、受信されたデータの読み取り、書き込み、削除などの要請を処理する時、データベースに接続してデータの読み取り、書き込み、削除などの作業を行い、データ変換者ソフトウェアタイプは、データ発信者から受信したデータをデータ変換規則によって他のデータ値に変換させるソフトウェアである。本発明の一実施形態によれば、データ分配者ソフトウェアタイプは、データ発信者から受信したデータをデータ分配規則によってデータ受信者に伝送する役割をするソフトウェアであり、コントローラソフトウェアタイプは、システムの状態Stateを管理するソフトウェアとして、現在状態の条件によってあらかじめ決定された動作Actionを行う役割をするソフトウェアであり、モニターソフトウェアタイプは、ユーザとシステムとの間のインターフェースとして、データを読み取ってユーザに表示する役割をするソフトウェアである。本発明の一実施形態によれば、ソフトウェアは、二つの以上のソフトウェアタイプを有することができ、例えば、データ変換者ソフトウェアタイプとデータ分配者ソフトウェアタイプを有するソフトウェアは、データ発信者から受信したデータをデータ変換規則によって他のデータ値に変換させ、データ分配規則によってデータ受信者に伝送する役割をするソフトウェアである。次に、開発者から開発するソフトウェアタイプに該当するソフトウェアのアーキテクチャコンポーネントを受信し、開発者からコード自動生成器の要求事項を受信して開発するソフトウェアタイプに該当する自動生成されたコードを生成するステップS803。本発明の一実施形態によれば、ソフトウェア開発装置は、開発者からコード自動生成器選択部102により選択されたコード自動生成器の要求事項を受信し、この時、受信されたコード自動生成器の要求事項は、フィーチャーのリストによって変更部分及び適応される部分を含むことができる。本発明の一実施形態によれば、開発者から受信されたコード自動生成器の要求事項は、ソフトウェアのタイプによって選択されるデータ変換者ソフトウェアタイプのコード自動生成器、データ分配者ソフトウェアタイプのコード自動生成器、コントローラソフトウェアタイプのコード自動生成器、及びデータ変換者データ分配者ソフトウェアタイプのコード自動生成器の内少なくとも一つのコード自動選択器によって異なる。この時、ソフトウェアタイプに該当するコード自動生成器は、本発明で記述した内容に限定されなく、他のソフトウェアタイプのためのソフトウェアタイプ別コード自動生成器を定義することができる。また、本発明は多様な形態に具現することができ、ここで説明する例に限定されるものではない。次に、自動生成されたコード及び開発するソフトウェアのアーキテクチャコンポーネントのコードの中でフィーチャーのリストによって変更部分及び適応される部分をフィーチャーのリストによって変更して適応されたコードを出力するステップS804。ここで、適応されたコードには、フィーチャーのリストによって変更及び適応される部分が抜けているが、使用可能なドメインライブラリを呼び出す部分が含まれている。出力された適応されたコードでドメインのライブラリを呼び出す部分を実際のドメインライブラリを呼び出す部分と連結して最終生成コードを生成するステップS805。以上、添付した図面を参照して本発明の実施形態について説明したが、本発明が属する技術の分野における通常の知識を有する者であれば、本発明の技術的思想を逸脱しない範囲内で、様々な置換、変形及び変更が可能であるので、上述の実施形態及び添付された図面に限定されるものではない。