"ECUに搭載されるアプリケーションの統合を支援する統合支援装置であって、ECUに搭載されていた複数のアプリケーションのソースコードを記憶する記憶手段から、それぞれのソースコードを読み出し機能単位毎の記述を抽出する抽出手段と、第1のアプリケーションの前記記述と第2のアプリケーションのソースコードの前記記述を比較して、一致条件を満たした前記記述同士を関連づける関連づけ手段と、前記第1のアプリケーション又は前記第2のアプリケーションのソースコードの前記記述の一方を共通コード部に登録し、前記第1のアプリケーション及び前記第2のアプリケーションから関連づけられた前記記述をそれぞれ消去すると共に前記共通コード部への対応づけ情報を記述する統合手段と、を有することを特徴とする統合支援装置。前記関連づけ手段は、第1のアプリケーションの前記記述と第2のアプリケーションの前記記述を関連づける操作を受け付ける、ことを特徴とする請求項1記載の統合支援装置。前記関連づけ手段は、第1のアプリケーションの前記記述と第2のアプリケーションのソースコードの前記記述の比較結果を用いて、第1のアプリケーションの前記記述と第2のアプリケーションの前記記述の相違部分を表示装置に提示する、ことを特徴とする請求項1又は2記載の統合支援装置。前記抽出手段は、複数のアプリケーションの前記記述に含まれるプログラム言語の関数の書式が関数毎に登録された関数仕様ドキュメントを前記記憶手段から読み出し、関数毎に関数仕様記述を抽出し、前記関連づけ手段は、前記第1のアプリケーションと前記第2のアプリケーションの前記関数仕様記述を比較して、前記一致条件を満たした前記関数仕様記述同士を関連づけ、前記統合手段は、前記第1のアプリケーション又は前記第2のアプリケーションの前記関数仕様記述の一方を共通仕様記述部に登録し、前記第1のアプリケーション及び前記第2のアプリケーションから関連づけられた前記関数仕様記述をそれぞれ消去すると共に前記共通仕様記述部への対応づけ情報を記述する、ことを特徴とする請求項1~3いずれか1項記載の統合支援装置。前記関連づけ手段は、前記第1のアプリケーションと前記第2のアプリケーションの前記関数仕様記述が前記一致条件を満たすと判定した場合にのみ、前記関数仕様記述に含まれる関数名を少なくとも一部に含む、第1のアプリケーションの前記記述と第2のアプリケーションの前記記述が一致したと判定する、ことを特徴とする請求項4記載の統合支援装置。前記一致条件は、関数の引数又は戻り値の少なくとも一方が一致することを条件とする、ことを特徴とする請求項1~4いずれか1項記載の統合支援装置。前記関連づけ手段は、前記一致条件の設定を受け付ける、ことを特徴とする請求項1~4いずれか1項記載の統合支援装置。ECUに搭載されるアプリケーションの統合を支援する統合支援方法であって、抽出手段が、ECUに搭載されていた複数のアプリケーションのソースコードを記憶する記憶手段から、それぞれのソースコードを読み出し機能単位毎の記述を抽出するステップと、関連づけ手段が、第1のアプリケーションの前記記述と第2のアプリケーションのソースコードの前記記述を比較して、一致条件を満たした前記記述同士を関連づけるステップと、統合手段が、前記第1のアプリケーション又は前記第2のアプリケーションのソースコードの前記記述の一方を共通コード部に登録し、前記第1のアプリケーション及び前記第2のアプリケーションから関連づけられた前記記述をそれぞれ消去すると共に前記共通コード部への対応づけ情報を記述するステップと、を有することを特徴とする統合支援方法。ところでECUの機能の多くはアプリケーションプログラムが提供するので、ECUの機能統合には複数のアプリケーションを1つのECUに再搭載する作業が含まれる。統合対象となるアプリケーションは個別のECU上で動くことを前提に設計されているので、アプリケーション間で機能が重複することがある。この場合、単に複数のアプリケーションを統合すると1つのECUが複数の同じ機能を有してしまい好ましくない。また、機能が同じでもわずかな仕様の違いにより、統合の前後でアプリケーションの振る舞いが変わってしまう場合もある。このような不都合を回避するため、従来、別々のECU上で動作していたアプリケーションを1つのECUに統合する際は、開発者が複数のアプリケーションにおいて、同一機能で仕様が同じ部分同一機能でも仕様が部分的に異なる部分を判断して、手作業で統合化を行っている。機能と仕様が同じであれば統合の前後でアプリケーションの振る舞いが変わるおそれは少ない。また、同一機能でも仕様が部分的に異なる場合、開発者が機能に関するソースコードを調整すればよいことがわかるので、調整すれば振る舞いが変わるおそれを低減できる。したがって、統合前にこういった仕様の違いを抽出できれば開発者の作業負担を軽減できる。本発明は、上記課題に鑑み、別々のECUが実行していた複数のアプリケーションの統合の自動化を支援する統合支援装置を提供することを目的とする。上記課題に鑑み、本発明は、ECUに搭載されるアプリケーションの統合を支援する統合支援装置であって、ECUに搭載されていた複数のアプリケーションのソースコードを記憶する記憶手段から、それぞれのソースコードを読み出し機能単位毎の記述を抽出する抽出手段と、第1のアプリケーションの前記記述と第2のアプリケーションの前記記述を比較して、一致条件を満たした前記記述同士を関連づける関連づけ手段と、前記第1のアプリケーション又は前記第2のアプリケーションの前記記述の一方を共通コード部に登録し、前記第1のアプリケーション及び前記第2のアプリケーションから関連づけられた前記記述をそれぞれ消去すると共に前記共通コード部への対応づけ情報を記述する統合手段と、を有することを特徴とする。別々のECUが実行していた複数のアプリケーションの統合の自動化を支援する統合支援装置を提供することができる。以下、本発明を実施するための形態について図面を参照しながら説明する。図1aは統合支援装置の正面図の一例を示す。統合支援装置100はコンピュータを実体とし、コンピュータがプログラムを実行することで統合支援装置100が実現される。図では一台のコンピュータが図示されているが、1つのコンピュータで統合支援装置100の全ての処理を行う必要はなく、例えば、開発者の操作するコンピュータがサーバ上のコンピュータに処理を依頼する形態で1つの統合支援装置100を提供するとしてもよい。また、統合支援装置100は多くのデータを使用するが、統合支援装置100が全てのデータをローカルに記憶していてもよいし、ネットワークを介して接続された他の1台以上のコンピュータが分散して記憶していてもよい。図1bは統合支援装置100のハードウェア構成図の一例を示す。統合支援装置100は、バスにより接続されたCPU23、ROM18、RAM19、外部I/F20、通信制御部21、入力装置I/F14、表示装置I/F15、記憶装置16、及び、補助記憶装置17を有する。CPU23は統合支援装置100の全体の制御を司るものであり、その他のブロックはCPU23の制御下におかれる。ROM18は、入出力用の簡易なプログラム及びその他の静的な書き換えのないデータを記憶している。RAM19は、CPU23がプログラムを実行する際、プログラムやデータの一時的な記憶場所として利用される。外部I/F20は、USB等のインターフェースを用いて外部の機器との通信を可能とする。通信制御部21は、有線または無線によりイーサネット登録商標等のネットワークに接続し、外部の機器との通信を可能とする。入力装置I/F14にはキーボードやマウス等の入力装置11が接続され、開発者からの操作を受け付けるインターフェースとなる。表示装置I/F15にはディスプレイ等の表示装置12が接続され開発者に視覚的な情報を提供するインターフェースとなる。記憶装置16は、プログラム22や大量のデータなどを蓄積したり、データベースの記憶場所として利用される不揮発のメモリHDD等である。プログラム22は、不図示のサーバからダウンロードすることでインストールされたり、可搬型記憶媒体13に記憶された状態で配布される。補助記憶装置17は、DVDやメモリカードなどの可搬型記憶媒体13からデータを読み込んだり、バックアップのためのデータを書き込んだりする、可搬型記憶媒体13のインターフェースとして利用される。図2は、統合支援装置100の機能ブロック図の一例を示す。統合支援装置100は抽出部33、照合部34及び統合部35を有する。これらの機能はCPU23がプログラム22を実行して実現される。また、統合支援装置100は統合元データ31、統合テンプレート32、及び、統合後データ36を記憶している。これらはアプリケーション及びアプリケーションに付随するドキュメントである。統合元データ31等は記憶装置16、可搬型記憶媒体13、ネットワーク上のNASNetworkAttachedStorage、又は、ネットワークに接続された他の機器に記憶されている。図では、アプリケーションをアプリと省略している。アプリA、Bは統合対象の2つのアプリケーションであり、統合元データ31として記憶装置16等に記憶される。GUI37は、主に表示装置12に表示される操作画面であり、入力装置11を介して開発者の操作を受け付けるために使用される。アプリA ́、B ́及び共通部は統合後データ36として記憶装置16等に記憶されている。アプリA ́はアプリケーションAに固有の部分、アプリB ́はアプリケーションBに固有の部分、共通部はアプリケーションAとBに共通の部分である。統合元データ31は、統合対象の各アプリケーションの統合に必要なデータである。具体的にはアプリケーションA、Bのソースコード、アプリケーションA、Bの仕様が記述されたドキュメント等が含まれる。本実施形態では2つのアプリケーションの統合を例に説明するがアプリケーションの数が3つ以上でも同様に処理できる。ソースコードは、例えばC、C、GO、Java登録商標等どのようなプログラム言語で記述されていてもよい。ソースコードはプログラム言語の文法に従って記述されている。ドキュメントは自然言語日本語、英語、中国語等やXML等のマークアップランゲージで記述されているが、好ましくは予め定められたフォーマットを用いて記述されている。フォーマットは、項目分けすること、及び、項目毎の記述内容を定めている。自然言語の場合のフォーマットは、ドキュメントがテーブル状、リスト状などに記述される際の項目を規定しており、マークアップランゲージの場合はタグによりデータ構造が定められる。また、このように厳密に項目を定めておくことが困難な場合、ドキュメントは少なくとも段落分けされている。ドキュメントは、アプリケーションに含まれるモジュールの機能、各機能を提供するための関数の仕様等を定める。関数が機能に対応する場合、仕様は同じ機能の振る舞いに影響する。ドキュメントを読めば、ソースコードの開発者以外の人間がアプリケーションが提供する各機能や、機能を使用するために必要な情報引数や戻り値を理解できるようになっている。ドキュメントはアプリケーションの開発者が作成するものであるが、いくつのドキュメントに分割するか、ドキュメント名、ドキュメント内容等が厳密に決まっているとは限らない。統合テンプレート32は、抽出部33が抽出した統合中のアプリケーションのドキュメントやソースコードを管理するためのデータである。具体的には、アプリケーションの機能や仕様についてドキュメントで記述された機能説明箇所、及び、機能を提供する機能に対応したソースコードの機能対応関数等が登録される。統合後データ36は、上記のとおり、複数のアプリケーションが統合されることで得られた統合後のアプリケーションA ́、B ́及び共通部である。それぞれ、ドキュメントやソースコード等を含む。抽出部33は、アプリケーションのドキュメントやソースコードを参照して、アプリケーション毎に、統合元データ31から、アプリケーションの機能に対応するドキュメントの機能説明箇所、及び、ソースコードから機能を実現する機能対応関数、を抽出する。抽出した機能説明箇所、機能対応関数を統合テンプレート32に登録する。照合部34は、2つの方法でアプリケーション間で重複している機能を対応づける。まず、照合部34は抽出部33が抽出したアプリケーション間の機能説明箇所同士、機能対応関数同士を照合して一致している機能説明箇所及び機能対応関数を特定する。機能説明箇所又は機能対応関数が完全に一致している場合、その関数の機能は2つのアプリケーションに重複しているし、仕様も同じだと判定される。また、照合部34は機能説明箇所及び機能対応関数が類似しているが完全には一致しない場合、相違部分を開発者に提示する。開発者は、相違部分を見ることで2つのアプリケーションの機能や仕様が同じか否かを判断することができる。また、照合部34は開発者から、2つのアプリケーションに共通する機能説明箇所又は機能対応関数を受け付ける。開発者が選択した2つのアプリケーションの機能説明箇所又は機能対応関数は、開発者が機能だけでなく仕様も同じであると判断した機能である。すなわち、上記の明示の前又は後に、開発者が重複していると判断した機能説明箇所又は機能対応関数を選択することで、照合部34は2つのアプリケーションの機能説明箇所同士又は機能対応関数同士を関連付けることができる。統合部35は、照合部34が重複していると判定した又は受け付けた機能について、ドキュメントとソースコードをそれぞれ編集することで、アプリA ́、B ́を作成する。また、ドキュメントとソースコードの共通部分をそれぞれ抽出し、統合後データ36の共通部に出力する。動作手順図3は、統合支援装置100の全体的な動作を示すシーケンス図の一例を示す。S1:開発者は、統合支援装置100の入力装置11を操作して統合対象のアプリケーションを指示する。S2:抽出部33は開発者が指示したアプリケーションA,Bを統合元データ31に登録する。S3:抽出部33は統合元データ31のアプリケーションA,Bからドキュメントとソースコードをそれぞれ取り出し、機能説明箇所及び機能対応関数を抽出する。機能説明箇所と機能対応関数は照合部34に出力される。S4:照合部34はアプリケーションAとBの機能説明箇所を突合して重複する機能説明箇所、及び、アプリケーションAとBの機能対応関数を突合して重複する機能対応関数を関係づける。S5:照合部34は重複する機能説明箇所及び機能対応関数、並びに、機能説明箇所及び機能対応関数の相違部分をGUI37に提示する。S6:開発者は、GUI37に表示される機能説明箇所及び機能対応関数の相違部分を目視して、又は、目視する前に、アプリケーションA、Bの機能説明箇所を関連付け、アプリケーションA、Bの機能対応関数を関連付ける。S7:照合部34は、機能説明箇所及び機能対応関数の関連づけを統合部35に通知する。S8:統合部35は、関連付けられた機能説明箇所及び機能対応関数はアプリケーションAとBに共通であるとして、アプリケーションAとBのうち一方の機能説明箇所及び機能対応関数を共通部に登録する。また、元のアプリケーションA、Bのドキュメントから機能説明箇所を削除すると共に、共通部への参照情報を記述する。同様に、元のアプリケーションA、Bのソースコードから機能対応関数を削除すると共に、共通部への参照情報を記述する。このような編集後のアプリケーションA、BのドキュメントとソースコードがアプリA ́、B ́である。なお、統合部35はアプリケーションA ́、B ́や共通部を作成する際、開発者による仕様の変更などの操作を受け付けることができる。以下、抽出、照合、及び、統合について詳細に説明する。抽出図4はドキュメントからの抽出を模式的に説明する図の一例である。図4では抽出部33がアプリケーションAから機能説明箇所を抽出している。まず、統合元データ31にはアプリケーションAのドキュメントとソースコードが登録されている。S31:抽出部33は統合テンプレート成果物一覧を作成する。アプリケーションAの成果物一覧にはモジュール仕様書、関数仕様書、ソースファイル等が登録される。成果物はアプリケーション間で共通とは限らないので、開発者が、抽出部33が処理対象とするドキュメント及びソースコードを統合支援装置100に指示したり、処理対象のドキュメント及びソースコードに特定のファイル名を付与しておくことも有効である。成果物一覧はドキュメント及びソースコードの具体的な内容であり、成果物一覧のモジュール仕様書と関数仕様書はドキュメントから抽出され、ソースファイルはソースコードから抽出される。ところで、アプリケーションの統合において、ソースコードが統合されていれば、1つのECUに統合後のアプリケーションを搭載することができる。しかしながら、ソースコードに付随するドキュメントがなければその後のメンテナンス等に不都合が生じるおそれがある。本実施形態では、ドキュメントの統合を含めアプリケーションの統合について説明するが、アプリケーションの規模が小さい場合などは、ソースコードのみを統合することも可能である。S32:抽出部33はモジュール仕様書から各モジュールを、関数仕様書から各関数をリストアップする。ここではモジュール仕様書の目次に各モジュールがリストアップされているものとして、抽出部33はモジュール仕様書の目次を抽出する図の統合テンプレートモジュール仕様。モジュール仕様書は、例えばアプリケーションの中の1つ以上の機能の集合である。1つの関数が1つの機能に対応する場合、複数の関数モジュールの集合の機能を定義している。統合テンプレートモジュール仕様にははじめにモジュール一覧ModuleA1ModuleA2が登録されている。ModuleA1ModuleA2はモジュール名とみなすことができる。抽出部33は関数仕様書からも同様に統合テンプレート関数仕様書を作成するが、これについては後述する。S33:抽出部33は統合テンプレートモジュール仕様の各モジュールに対する記述をモジュール毎に、モジュール仕様書から抽出して記述部に登録する。この記述部が、モジュール仕様書の機能説明箇所である。統合テンプレートモジュール仕様にはまずModuleA1が登録されているので、抽出部33は目次を参照し又はModuleA1でモジュール仕様書を検索する等して、モジュール仕様書からModuleA1にいて記述された箇所を特定する。ModuleA2についても同様である。抽出部33は、特定した箇所から次のモジュールの特定箇所が始まるまでを1つのモジュールに関する記述として抽出する。これらの処理により、ModuleA1の記述部には以下のような記述が登録される。3.ModuleA131概要ModuleA1はXXに対するサービスを提供する。...4.ModuleA241概要ModuleA2はYYに対するサービスを提供する。...XXに対するサービスやYYに対するサービスがアプリケーションAのモジュールの機能の説明である。図5はソースファイルからの抽出を模式的に説明する図の一例である。図5では抽出部33がアプリケーションAから機能対応関数を抽出している。S311:すでに説明したように抽出部33は統合テンプレート成果物一覧を作成している。S312:抽出部33はソースファイルを参照して、ソースファイルのフォルダ構成とファイル名を統合テンプレートソースファイル一覧に登録する。ソースファイルは機能単位の開発や開発管理などのため複数のファイルから構成されることが多い。また、ファイル間の関係を明確にするため、ファイルがフォルダに分散して管理されることがある。フォルダ構成とは各ファイルが記憶されているフォルダとフォルダ間の関係を意味する。アプリケーションAの統合テンプレートソースファイル一覧にはモジュール名1MdlA1に続いて、ファイル名11srcA1c12srcA1h13srcA2c14srcA3cが登録されている。ファイル名の前の数字11~14がファイル構造を表し、左から数えて同じ位の数字が同じファイルは同じ階層のフォルダであることを意味する。深い階層のフォルダに記憶されているファイルほど数字の桁数が多くなる。よって、ファイル名の前の数字を辿ることでフォルダ構造が表される。S313:抽出部33は統合テンプレートソースファイル一覧に登録されたファイル毎に、ソースファイルから統合テンプレート関数一覧を作成する。この統合テンプレートはソースファイルの関数をリストアップしたものである。関数型の言語では開発者が関数を定義することができ、関数の書式は言語毎に決まっている。例えば、C言語では返り値の型関数名関数の内容や処理という記述で関数を定義できる。返り値の型はint、char、void返り値が不要な場合等、いくつかの種類に限定される。よって、返り値の型の後からの手前までが、関数名である。抽出部33はこのように言語毎に定まっている関数の定義の書式に基づき関数名をソースファイルの各ファイルから抽出する。このような処理により、アプリケーションAのsrcA1cというファイルの統合テンプレート関数一覧にはFuncA11FuncA12FuncA13FuncA14FuncA15という関数名が登録される。S313:抽出部33は統合テンプレート関数一覧に登録された各関数のコードをファイルから抽出して記述部に記述する。図示するように、FuncA13という関数のコードは以下のようになる。101行:voidFuncA13intmod1102行:...106行:caseSLEEP1xx行:}関数の定義がどのコードどの行で終了したかは、関数の書式により定められている。例えば、C言語の場合、関数名の直後の{が閉じる1xx行目の}である。よって、抽出部33は、各関数のコードを容易に特定して抽出することができる。関数はアプリケーションの機能を提供するものなので、関数に対応するコードは機能対応関数となる。図6はアプリケーションBのドキュメントとソースファイルからの抽出を模式的に説明する図の一例である。図6では抽出部33がアプリケーションBから機能説明箇所と機能対応関数を抽出している。S321:すでに説明したように抽出部33は統合テンプレート成果物一覧を作成している。アプリケーションBの成果物一覧は、関数設計書、ソースコード、及び、要求仕様書であり、アプリケーションAとはドキュメント名が異なっている。しかし、同等の記述が含まれるドキュメントが存在する。S322:抽出部33は関数設計書を参照して、統合テンプレート関数設計書を作成する。関数設計書の目次に各関数がリストアップされているものとして、抽出部33は関数設計書の目次を抽出する。アプリケーションBの統合テンプレート関数仕様書にははじめにModuleB1FuncB1FunckB2が登録されている。これからModuleB1に含まれる関数名が抽出される。S323:抽出部33は統合テンプレート関数設計書の各関数に対する記述を関数毎に、関数設計書から抽出して記述部に登録する。この記述部は関数設計書の機能説明箇所である。統合テンプレート関数設計書にはFuncB1が登録されているので、抽出部33は目次を参照し又はFuncB1で関数設計書を検索する等して、関数設計書からFuncB1にいて記述された箇所を特定する。FuncB2についても同様である。抽出部33は、特定した箇所から次の関数の特定箇所が始まるまでを1つの関数に関する記述として抽出する。これらの処理により、FuncB1の記述部には以下のような記述が登録される。21FunckB11シンタックスvoidFunc12引数mod1:制御モード例えば、シンタックスはこの関数の書式を示し、引数は関数に渡す変数にどのような物理量が格納されるかが示される。シンタックスや引数が仕様の一例であるが、この他、関数の振る舞いに影響しうる要素は仕様となりうる。抽出部33は、アプリケーションAと同様にアプリケーションBの統合テンプレートソースファイル一覧及び統合テンプレート関数一覧を作成する。作成方法はアプリケーションAと同様なので省略するS324~S326。<ドキュメントの関数の仕様とソースコードの関数について>ドキュメントの関数仕様書や関数設計書に仕様が記述された関数と、ソースコードの関数は対応関係を有する。ドキュメントはソースコードの関数の記述方法を規定したものだからである。例えば、アプリケーションBの場合、関数設計書のFuncB1と統合テンプレート関数一覧のFuncB1は対応している。ソースコードの関数は、対応する関数設計書の関数の書式に必ず従っている。このため、開発者は、関数設計書とソースコードの関数を把握できるように、関数仕様書の関数名とソースコードの関数名が一致するように、又は、少なくとも関数仕様書の関数名を一部に含むようにしてソースコードの関数名を付与する。例えば、関数設計書のFuncB1と統合テンプレート関数一覧のFuncB1xxは関係した関数である。したがって、統合支援装置100はドキュメントの関数名を一部に含むソースコードの関数は、ドキュメントに規定された関数であることを検出できるようになっている。なお、関数設計書がある関数の書式の全てを規定する例えば全ての引数のに対し、ソースコードでは一部の書式例えば、引数を省略できる。このため、ソースコードには、関数仕様書の1つの関数から派生した複数の関数が含まれる可能性があり、関数仕様書の関数とソースコードの関数は1対1に対応するとは限らない。照合図7は、アプリケーションAとBのドキュメントの照合について説明する図の一例である。照合部34はアプリケーションAとBの重複する機能説明箇所と重複する機能対応関数を関係づける。まず、開発者が、成果物単位でアプリケーションAとBで重複している成果物を把握しているのであれば、開発者は重複している成果物を選択すればよい。照合部34は、アプリケーションAとBの統合テンプレート成果物一覧をGUI37に表示する。アプリケーションAでは関数の書式等が記述されているドキュメントの名称が関数仕様書となっているが、アプリケーションBでは関数設計書となっている。開発者は関数仕様書と関数設計書が対応するもの内容が等価であることを入力装置11を使って入力する。照合部34は、関数仕様書と関数設計書が対応しているという操作を受け付ける。実際には、成果物単位の全体が重複していることは希なので、次に、照合部34は受け付けた関数仕様書と関数設計書が対応しているという対応関係を用いて、アプリケーションAの統合テンプレート関数仕様書とアプリケーションBの統合テンプレート関数設計書をGUI37に表示する。開発者は、提供する機能及び仕様が同じであるため、内容が等価と見なせる関数を入力装置11を使って入力する。例えば、統合対象のアプリケーションAとアプリケーションBにおいて、同じ機能及び仕様の関数は同じ関数名で記述されているのであれば、開発者は、照合部34が同じ関数名の関数を関連付ければよい。図では、開発者はアプリケーションAのFuncA1とアプリケーションBのFuncB2を関係づけている。照合部34は、FuncA1とFuncB2が対応しているという操作を受け付ける。開発者は、このような操作をアプリケーションAとBで機能が重複する全ての関数について行う。これにより、照合部34は、アプリケーションAの統合テンプレート関数仕様書からFuncA1の記述部と、アプリケーションBの統合テンプレート関数仕様書からFuncB2の記述部とを関係づけることができる。このようにして機能説明箇所のレベルで関連づけが行われる。FuncA1の記述部とFuncB2の記述部では関数名が異なっているが、機能説明箇所が完全には一致しなくても、開発者が機能及び仕様が同じであると判断すれば、互いに重複する機能であるとみなすことができる。なお、開発者が関数仕様書や関数設計書の関数名から全ての記述部の内容を思い出すことは困難なので、開発者は入力装置11を操作して記述部をGUI37に表示して、記述部の内容を確認しながらアプリケーションAとBの機能説明箇所を関連づける。一方、関数の数が多い場合など、開発者が全ての関数について重複した記述部を関連付けることは時間がかかる。このため、照合部34は開発者による機能説明箇所の関連づけを支援する。照合部34は、アプリケーションAの関数仕様書の各関数の記述部と、アプリケーションBの関数設計書の各関数の記述部とを、1つの文字アルファベット、数字、記号等を含むずつ比較し全ての文字が一致するか否かを判定する。照合部34は、記述部が完全に一致する関数は機能及び仕様が重複した関数であるとして両者を関連付ける。アプリケーションAとアプリケーションBにおいて、同じ機能及び仕様でも、記述部が全く同じであることは多くないので、照合部34は一部が一致した2つの記述部について機能及び仕様が重複すると判定することもできる。例えば、引数の物理量が全て同じ、かつ、戻り値が同じ関数は、仕様が同じ機能が重複していると判定する。こうすることで、記述部の若干の相違部分を無視して、機能及び仕様が共通する関数を対応づけることができる。例えば、図7ではFuncA1とFuncB21は関数名が異なるが、引数の物理量がどちらも制御モードであり、どちらも戻り値がないため、照合部34はこの2つの関数は、仕様が同じ機能が重複していると判定できる。なお、この場合、開発者は、照合部34が一致していると判定する条件引数の物理量が一致すること、戻り値が一致すること、引数と戻り値がともに一致すること等を設定することができる。また、ある条件の下、照合部34が一致したと判定するのでなく、記述部の内容がある程度は一致するが完全に一致しない関数を開発者に提示することもできる。例えば、引数の物理量が一致したがその他が一致しない場合、戻り値が一致したがその他が一致しない場合、引数の物理量と戻り値が一致したがその他が一致しない場合、照合部34は一致しない部分を強調してGUIに表示する。図ではFuncB21が強調して四角で囲って表示されている。または、一致する部分を強調して表示してもよい。開発者は、相違部分又は一致部分を目視して、2つの記述部が記述する関数の機能及び仕様が重複するか否かを容易に判断することができる。この場合、開発者は、照合部34が強調表示するための一致条件を設定することができる。図8は、アプリケーションAとBのソースコードの照合について説明する図の一例である。ソースコードの照合もドキュメントと同様である。すなわち、照合部34は、アプリケーションAとBの統合テンプレート成果物一覧をGUI37に表示する。アプリケーションAではソースコードが記憶されたドキュメントの名称がソースファイルとなっているが、アプリケーションBではソースコードとなっている。開発者はソースファイルとソースコードが対応するもの内容が等価であることを入力装置11を使って入力する。照合部34は、ソースファイルとソースコードが対応しているという操作を受け付ける。照合部34は、受け付けたソースファイルとソースコードが対応しているという対応関係を用いて、アプリケーションAの統合テンプレートソースファイル一覧とアプリケーションBの統合テンプレートソースコード一覧をGUI37に表示する。開発者は、提供する機能が同じであるため、内容が等価と見なせるソースファイルとソースコードを入力装置11を使って入力する。図では、開発者はアプリケーションAのsrcA1cとアプリケーションBのsrcB11cを関係づけている。照合部34は、srcA1cとsrcB11cが対応しているという操作を受け付ける。開発者は、このような操作をアプリケーションAとBで等価と見なせる全てのソースファイル又はソースコードについて行う。次に、照合部34は、受け付けたsrcA1cとsrcB11cが対応しているという対応関係を用いて、アプリケーションAの統合テンプレート関数一覧とアプリケーションBの統合テンプレート関数一覧をGUI37に表示する。開発者は、提供する機能及び仕様が同じであるため、内容が等価と見なせる関数名を入力装置11を使って入力する。図では、開発者はアプリケーションAのFuncA12とアプリケーションBのFuncB4を関係づけている。照合部34は、FuncA12とFuncB4が対応しているという操作を受け付ける。開発者は、このような操作をアプリケーションAとBで等価と見なせる全ての関数について行う。これにより、照合部34は、アプリケーションAの統合テンプレート関数一覧からFuncA12の記述部と、アプリケーションBの統合テンプレート関数一覧からFuncB4の記述部とを関係づけることができる。このように、記述部の記述が一致すると判定された関数は、アプリケーションAとBで共通化できる関数となる。また、ドキュメントにおける関数の対応付けと同様に、照合部34は2つの記述部が一致条件を満たす場合に、ソースコードの関数が共通の機能及び仕様を提供すると判定する。照合部34は2つの記述部を1つの文字ずつ比較し完全に一致する場合、又は、一部が一致する場合、ソースコードが提供する機能が一致すると判定することができる。この一致条件は関数仕様書又は関数設計書の一致条件と同じであることが好ましい。一致条件が同じであることで、ドキュメントが一致する関数はソースコードも一致すると判定されやすくなる。また、照合部34は、一部が一致しない場合に相違部分又は一致部分を強調して表示して開発者に通知する。これにより、開発者はソースコードの相違を容易に把握できる。なお、ある関数についてアプリケーションA,Bの関数仕様書と関数設計書の記述部機能説明箇所が一致した場合、同じ関数のソースコードの記述部機能対応関数がアプリケーションA,B間で一致するかどうかは不定である。上記のように、関数仕様書は関数の仕様に過ぎないので、ソースコードで実際に関数が全ての引数を使用するかどうか等は決まっていないためである。逆に、アプリケーションA,Bのソースコード間で一致すると判定された記述部の関数は、関数仕様書と関数設計書の記述部機能説明箇所が一致すべきである。したがって、この関係を利用して、機能対応関数が共通か否かを、機能説明箇所も共通か否かに応じて保証することが好適となる。すなわち、照合部34は、ソースコードの関数に対応する関数のドキュメントの2つの記述部が一散していると判定された場合に限り、ソースコードの2つの関数の機能が重複すると判定する。こうすることで、関数の重複を厳密に判定できる。なお、図7,8ではアプリケーションAのモジュール仕様書から抽出された記述部について、アプリケーションBと比較されていない。これは、アプリケーションBにモジュール仕様書が含まれていないためであり、アプリケーションBのドキュメントにモジュール仕様書又はモジュール仕様書に相当する仕様書が含まれていれば、記述部同士が比較して関連づけされる。関数の重複の判定にモジュール仕様書の記述部が一致するか否かを利用することもできる。統合統合部35は照合結果に基づき、アプリケーションAとBのドキュメント及びソースコードを編集し、また、アプリケーションAとBに共通のドキュメント及びソースコードを作成する上記の共通部。図9は、アプリケーションAとBのドキュメントの統合について説明する図の一例である。統合部35は、共通部の関数仕様書関数設計書としてもよいを作成する。すなわち、アプリケーションA又はBのドキュメントの記述部の一方を選択し、共通部の記述部に登録する。アプリケーションA又はBのドキュメントの記述部が同じであれば、どちらを採用してもよい。なお、関数が提供する機能及び仕様は同じだが、アプリケーションAとBでドキュメントの記述部が完全には一致しない場合がある。この場合、統合部35は、予め定められたアプリケーションA又はBのいずれかの記述部を一貫して共通部の記述部に採用する。共通部の関数仕様書には、ドキュメントにおいて機能が重複した数だけ関数名が登録される。なお、開発者は記述部の内容を、アプリケーションA又はBのいずれかの記述部とも異なる内容に変更することができる。こうすることで、統合時の関数の仕様を詳細に定めることができる。また、統合部35は共通部の記述部に登録した関数に、アプリケーションA,Bにとって共通の関数名を付与する。例えば、アプリケーションAの関数仕様書ではFuncA1、アプリケーションBの関数設計書ではFuncB21という関数名に、FunCom1という関数名を付与する。新たな関数名は、開発者が置き換えられていない関数名と一見して判別できる関数名となっている。また、統合部35は、アプリケーションAの関数仕様書においてFuncA1をFunCom1に置き換え、アプリケーションBの関数設計書においてFuncB21をFunCom1に置き換える。置き換わった後の関数仕様書はアプリケーションAに固有の関数仕様書であり、置き換わった後の関数設計書はアプリケーションBに固有の関数設計書である。以下、置き換えられた関数を共通関数という。そして、統合部35は、アプリケーションAの関数仕様書の共通関数に、共通関数の記述部と関連づける参照情報を記述する。アプリケーションBの関数設計書においても同様である。このように、アプリケーションAとBで機能が共通する関数を共通部に抽出することで、開発者は共通の機能についてそのドキュメントを一元管理することができる。例えば、開発者は、アプリケーションA、Bには共通関数があること、及び、共通関数の個数を容易に把握できる。図10は、アプリケーションAとBのソースコードの統合について説明する図の一例である。ドキュメントと同様に、統合部35は関連付けられた関数に、アプリケーションA,Bにとって共通の関数名を付与する。置き換えられた関数名は、置き換えられていない関数名と開発者が一見して判別できる関数名となっている。また、統合部35は、ソースコードの関数に対応する関数仕様書または関数設計書の関数名と、同じ又は同じ関数名を一部に含む関数名をソースコードの関数に付与する。ソースコードの関数と、関数仕様書又は関数設計書の関数の対応は、少なくとも一部の関数名が共通することから特定されている。また、統合部35は、アプリケーションA又はBのソースコードの記述部の一方を選択し、共通部の記述部に登録する。アプリケーションA又はBのドキュメントの記述部が同じであれば、どちらを採用してもよい。関数が提供する機能及び仕様は同じだが、アプリケーションAとBでソースコードの記述部が完全には一致しない場合がある。この場合、統合部35は、予め定められたアプリケーションA又はBのいずれかの記述部を一貫して共通部の記述部に採用する。共通部の関数一覧には、ソースコードにおいて機能が重複した数だけ関数名が登録される。なお、開発者は記述部の内容を、アプリケーションA又はBのいずれかの記述部とも異なる内容に変更することができる。こうすることで、統合時の関数のソースコードを詳細に定めることができる。また、統合部35は、統合テンプレート関数一覧を編集する。例えば、アプリケーションAの関数一覧ではFuncA12、アプリケーションBの関数一連ではFuncB4という関数名に、新たに付与したFunCom11という関数名を付与する。この結果、アプリケーションAの関数一覧においてFuncA12はFunCom11に置き換わる。アプリケーションBの関数一覧においてFuncB4はFunCom11に置き換わる。これに伴い、統合部35は、アプリケーションAのソースコードからFuncA12の記述部を削除し、FunCom11の記述部への参照情報を記述する。同様に、アプリケーションBのソースコードからFuncB4の記述部を削除し、FunCom11の記述部への参照情報を記述する。置き換わった後の関数一覧はアプリケーションAに固有の関数一覧であり、置き換わった後の関数一覧はアプリケーションBに固有の関数一覧である。このように、アプリケーションAとBで機能及び仕様が共通する関数を共通部に抽出することで、開発者は共通の機能についてそのソースコードを一元管理することができる。開発者による実装作業について開発者は統合後データ36を参照しながらアプリケーションAとBを1つのECUに搭載する。具体的には、ソースコードをコンパイルしたオブジェクトコードが搭載される。従来の課題であった、2つのアプリケーションを統合することで同一機能が重複して搭載されてしまうことについて、アプリケーションA ́、アプリケーションB ́及び共通部のオブジェクトコードを搭載することで解決できる。こうすることで共通の機能は1つしか搭載されないようにすることができ、アプリケーションA ́とアプリケーションB ́の両方が共通の機能を呼び出すこともできる。また、従来の課題であった、統合の前後で同一アプリケーションの挙動の違いが生じることについては、関数一覧の照合時に、挙動の違いが生じないように一致条件を定めておくことで解決できる。一致条件を満たさない記述部同士は関連付けられないので、統合部35は統合しない。したがって、機能が同じでも挙動仕様が異なる関数は、アプリケーションA ́の固有の部分とアプリケーションB ́の固有の部分にそれぞれ残るので、統合前の挙動を示すことができる。なお、統合の前と後でECUのハードウェア構成が異なることに起因して、関数の挙動が異なる場合は各関数を別々に搭載するだけでは解決できない。しかし、この場合でも、アプリケーションA ́の固有の部分とアプリケーションB ́の固有の部分にそれぞれ関数が残るので、開発者がそれぞれを別の記述に修正することで対応できる。"