(57)【要約】【課題】複数の作業者が分担してソフトウェアの開発を行う場合において、各作業者がソフトウェアを効率良く開発することができるソフトウェア生成装置の提供。【解決手段】ソフトウェア生成装置１は、記憶部３、読み込み部２、更新判断部６１、整合性判断部６２及びマージ処理部６３を備える。記憶部３は、プログラムモジュールが階層的に構成されている第１プログラムモジュール群を記憶している。読み込み部２は、第１プログラムモジュール群と異なる第２プログラムモジュール群を読み込む。更新判断部６１は、第２プログラムモジュール群の中から第１プログラムモジュール群に対し更新されているプログラムモジュールを判断する。整合性判断部６２は、更新判断部による判断結果に基づいて、第１及び第２プログラムモジュール群の整合性を判断する。マージ処理部６３は、第１及び第２プログラムモジュール群についてマージ処理を行う。【選択図】図１
2008234379.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセスを実現するためのプログラムモジュールが階層的に構成されている第１プログラムモジュール群を記憶している記憶部（３）と、
前記第１プログラムモジュール群と異なる前記プログラムモジュールを少なくとも１つ含む第２プログラムモジュール群を受付可能な受付部（２）と、
前記受付部（２）が前記第２プログラムモジュール群を受け付けた場合、前記第２プログラムモジュール群の中から前記第１プログラムモジュール群に対し更新されている前記プログラムモジュールを判断する更新判断部（６１）と、
前記更新判断部（６１）による判断結果に基づいて、前記第１プログラムモジュール群と前記第２プログラムモジュール群との整合性を判断する整合性判断部（６２）と、
前記整合性判断部（６２）による整合性の判断後、前記第１プログラムモジュール群及び前記第２プログラムモジュール群についてマージ処理を行い、第３プログラムモジュール群を生成するマージ処理部（６３）と、
を備えるソフトウェア生成装置（１）。
【請求項２】
前記第１プログラムモジュール群及び前記第２プログラムモジュール群は、所定プログラムモジュール群がそれぞれ更新されたものであって、
前記更新判断部（６１）は、前記第１プログラムモジュール群及び前記第２プログラムモジュール群それぞれの中から前記所定プログラムモジュール群に対し更新されている前記プログラムモジュール群を更に判断し、
前記整合性判断部（６２）は、前記所定プログラムモジュール群に対し更新されている前記第１プログラムモジュール群内の前記プログラムモジュールと、前記所定プログラムモジュール群に対し更新されている前記第２プログラムモジュール群内の前記プログラムモジュールとに共通して含まれる同じ階層の前記プログラムモジュールの整合性を更に判断する、
請求項１に記載のソフトウェア生成装置。
【請求項３】
前記整合性判断部（６２）により前記第１プログラムモジュール群と前記第２プログラムモジュール群との整合性がないと判断された場合、その旨を示す整合性判断情報を表示する第１表示部（４）を更に備える、
請求項１または２に記載のソフトウェア生成装置（１）。
【請求項４】
前記マージ処理部（６３）が前記第３プログラムモジュール群を生成する時に基準とする前記第１プログラムモジュール群または前記第２プログラムモジュール群を指定可能な第１指定部（５）を更に備え、
前記マージ処理部（６３）は、前記第１指定部（５）により指定された前記第１プログラムモジュール群または前記第２プログラムモジュール群を基準として、前記マージ処理を一括して行う、
請求項１〜３のいずれかに記載のソフトウェア生成装置（１）。
【請求項５】
前記マージ処理部（６３）が前記第３プログラムモジュール群を生成する時に基準とする前記第１プログラムモジュール群または前記第２プログラムモジュール群を、前記第１プログラムモジュール群及び前記第２プログラムモジュール群それぞれにより実現される前記プロセス毎に指定可能な第２指定部（５）を更に備え、
前記マージ処理部（６３）は、前記第２指定部（５）により指定された前記第１プログラムモジュール群または前記第２プログラムモジュール群を基準として、前記マージ処理を前記プロセス毎に行う、
請求項１〜３のいずれかに記載のソフトウェア生成装置（１）。
【請求項６】
前記第２指定部（５）により前記第１プログラムモジュール群または前記第２プログラムモジュール群が指定される前に、前記第１プログラムモジュール群と前記第２プログラムモジュール群との差分情報を表示する第２表示部（４）を更に備える、
請求項５に記載のソフトウェア生成装置（１）。
【請求項７】
複数のプロセスを実現するためのプログラムモジュールが階層的に構成されている第１プログラムモジュール群を記憶する第１ステップと、
前記第１プログラムモジュール群と異なる前記プログラムモジュールを少なくとも１つ含む第２プログラムモジュール群を受け付ける第２ステップと、
前記第２プログラムモジュール群の中から前記第１プログラムモジュール群に対し更新されている前記プログラムモジュールを判断する第３ステップと、
前記第３ステップによる判断結果に基づいて、前記第１プログラムモジュール群と前記第２プログラムモジュール群との整合性を判断する第４ステップと、
前記第１プログラムモジュール群及び前記第２プログラムモジュール群についてマージ処理を行い、第３プログラムモジュール群を生成する第５ステップと、
を備えるソフトウェア生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア生成装置ならびにソフトウェア生成方法に関する。
【背景技術】
【０００２】
従来より、ソフトウェアの開発においては、例えば特許文献１に示すような、ソフトウェアの要求仕様に基づいてプログラムを自動的に生成する装置が用いられる場合がある。
【０００３】
また、実現するプロセスの数が多くソフトウェアの開発工程が複雑である場合には、ソフトウェアは、複数の作業者により開発されることが多い。このような場合、ソフトウェアの開発効率を考慮してある程度まとまったプロセスが作業範囲として分割され、分割された作業範囲は、各作業者それぞれに割り当てられる。そして、ソフトウェアは、各作業者が作業範囲についてプログラムモジュールの生成作業を行うことで、並行して開発される。
【特許文献１】特開２００６−３１６１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、複数の作業者が分担してソフトウェアの開発を行った場合、各作業者により開発された各プログラムモジュールをマージする必要がある。このようなマージ作業は、作業者により行われることが多く、手間がかかってしまう。
【０００５】
仮に、マージ作業が自動で行われる場合、複数の作業者が共通して担当したプロセスがあると、その共通したプロセスにおけるマージ後のプログラムモジュールにおいては、全体の処理内容やそのプロセスの上下階層間が不整合であるためにバグが生じる場合がある。バグの内容としては、例えば、他の作業者により追加されたプロセスの起動の記述し忘れや、入出力部分における記述が他の階層のプロセスとの間で一致していない等が挙げられる。このように、共通したプロセスを含む各プログラムモジュールを単にマージすると、整合性の維持が困難となるため、かえってソフトウェアの開発効率が低下してしまう。
【０００６】
そこで、本発明は、複数の作業者が分担してソフトウェアの開発を行う場合においても、作業者がソフトウェアを効率良く開発することができるソフトウェア生成装置及びソフトウェア生成方法の提供を目的とする。
【課題を解決するための手段】
【０００７】
発明１に係るソフトウェア生成装置は、記憶部と、受付部と、更新判断部と、整合性判断部と、マージ処理部とを備える。記憶部は、複数のプロセスを実現するためのプログラムモジュールが階層的に構成されている第１プログラムモジュール群を記憶している。受付部は、第１プログラムモジュール群と異なるプログラムモジュールを少なくとも１つ含む第２プログラムモジュール群を受け付ける。更新判断部は、受付部が第２プログラムモジュール群を受け付けた場合、第２プログラムモジュール群の中から第１プログラムモジュール群に対し更新されているプログラムモジュールを判断する。整合性判断部は、更新判断部による判断結果に基づいて、第１プログラムモジュール群と第２プログラムモジュール群との整合性を判断する。マージ処理部は、整合性判断部による整合性の判断後、第１プログラムモジュール群及び第２プログラムモジュール群についてマージ処理を行い、第３プログラムモジュール群を生成する。
【０００８】
ここで、第１及び第２プログラムモジュール群が、２人の作業者によりそれぞれの作業範囲について生成されたプログラムモジュール群である場合について説明する。このソフトウェア生成装置は、第２プログラムモジュール群を受け付けると、第１及び第２プログラムモジュール群のマージ処理を実際に行う前に、第１及び第２プログラムモジュール群の整合性判断を行う。これにより、第１及び第２プログラムモジュール群をマージした時に発生するバグは、第１及び第２プログラムモジュール群を実際にマージする前に容易に発見される。従って、複数人でソフトウェアを開発した場合であっても、ソフトウェアを効率よく生成することができる。
【０００９】
発明２に係るソフトウェア生成装置は、発明１に係るソフトウェア生成装置であって、第１プログラムモジュール群及び第２プログラムモジュール群は、所定プログラムモジュール群がそれぞれ更新されたものである。そして、更新判断部は、第１プログラムモジュール群及び第２プログラムモジュール群それぞれの中から所定プログラムモジュール群に対し更新されているプログラムモジュール群を更に判断する。整合性判断部は、所定プログラムモジュール群に対し更新されている第１プログラムモジュール群内のプログラムモジュールと、所定プログラムモジュール群に対し更新されている第２プログラムモジュール群内のプログラムモジュールとに共通して含まれる同じ階層のプログラムモジュールの整合性を更に判断する。
【００１０】
ここで、所定プログラムモジュール群が、例えば既存のソフトウェアのプログラムモジュール群であるとした場合、第１及び第２プログラムモジュール群は、この既存のソフトウェアを基準として更新されたプログラムモジュール群である。この場合、ソフトウェア生成装置１は、各作業者が担当する第１及び第２プログラムモジュール群の中に、所定プログラムモジュール群に対して更新されているプログラムモジュールがある場合には、第１及び第２プログラムモジュール群に共通しており、かついずれのモジュール群においても更新されている同階層のプログラムモジュールについて、特に整合性をチェックする。これにより、マージ対象となる第１及び第２プログラムモジュール群内において、共通している同階層のプログラムモジュールが複数の作業者により更新されている場合であっても、整合性を維持しながらマージ処理を行うことができる。
【００１１】
発明３に係るソフトウェア生成装置は、発明１または２に係るソフトウェア生成装置であって、第１表示部を更に備える。第１表示部は、整合性判断部により第１プログラムモジュール群と第２プログラムモジュール群との整合性がないと判断された場合、その旨を示す整合性判断情報を表示する。
【００１２】
これにより、このソフトウェア生成装置を使用している作業者は、第１及び第２プログラムモジュール群のマージを行った際にバグが発生することを事前に知ることができる。従って、作業者は、実際にマージを行う前、バグが発生しないようにプログラムモジュール群の修正を行うことができる。
【００１３】
発明４に係るソフトウェア生成装置は、発明１〜３のいずれかに係るソフトウェア生成装置であって、第１指定部を更に備える。第１指定部は、マージ処理部が第３プログラムモジュール群を生成する時に基準とする第１プログラムモジュール群または第２プログラムモジュール群を指定する。そして、マージ処理部は、第１指定部により指定された第１プログラムモジュール群または第２プログラムモジュール群を基準として、マージ処理を一括して行う。
【００１４】
このソフトウェア生成装置は、例えば、第１プログラムモジュール群が選択された場合、第１プログラムモジュール群を基準として第２プログラムモジュール群を一括でマージする。これにより、第１及び第２プログラムモジュール群のマージ処理は、作業者の手間をかけることなく一度に行われる。
【００１５】
発明５に係るソフトウェア生成装置は、発明１〜３のいずれかにに係るソフトウェア生成装置であって、第２指定部を更に備える。第２指定部は、マージ処理部が第３プログラムモジュール群を生成する時に基準とする第１プログラムモジュール群または第２プログラムモジュール群を、第１プログラムモジュール群及び第２プログラムモジュール群それぞれにより実現されるプロセス毎に指定する。そして、マージ処理部は、第２指定部により指定された第１プログラムモジュール群または第２プログラムモジュール群を基準として、マージ処理をプロセス毎に行う。
【００１６】
これにより、第１及び第２プログラムモジュール群のマージ処理は、第１プログラムモジュール群または第２プログラムモジュール群のいずれかを指定して一度に行われるよりも、作業者の所望する条件に沿ってより細かく行われる。
【００１７】
発明６に係るソフトウェア生成装置は、発明５に係るソフトウェア生成装置であって、第２表示部を更に備える。第２表示部は、第２指定部により第１プログラムモジュール群または第２プログラムモジュール群が指定される前に、第１プログラムモジュール群と第２プログラムモジュール群との差分情報を表示する。
【００１８】
ここで、差分情報としては、例えば第１及び第２プログラムモジュール群それぞれにより実現されるプロセスの制御仕様や定義語の相違点などが挙げられる。このソフトウェア生成装置によると、作業者は、このような差分情報に基づいて、ソフトウェア生成装置がマージを行う際の条件を詳細に設定することができる。
【００１９】
発明７に係るソフトウェア生成方法は、第１ステップ、第２ステップ、第３ステップ、第４ステップ及び第５ステップを備える。第１ステップでは、複数のプロセスを実現するためのプログラムモジュールが階層的に構成されている第１プログラムモジュール群を記憶する。第２ステップでは、第１プログラムモジュール群と異なるプログラムモジュールを少なくとも１つ含む第２プログラムモジュール群を受け付ける。第３ステップでは、第２プログラムモジュール群の中から第１プログラムモジュール群に対し更新されているプログラムモジュールを判断する。第４ステップでは、第３ステップによる判断結果に基づいて、第１プログラムモジュール群と第２プログラムモジュール群との整合性を判断する。第５ステップでは、第１プログラムモジュール群及び第２プログラムモジュール群についてマージ処理を行い、第３プログラムモジュール群を生成する。
【００２０】
これにより、発明１と同様の効果を奏することができる。
【発明の効果】
【００２１】
発明１によると、第１及び第２プログラムモジュール群をマージした時に発生するバグは、第１及び第２プログラムモジュール群を実際にマージする前に容易に発見される。従って、複数人でソフトウェアを開発した場合であっても、ソフトウェアを効率よく生成することができる。
【００２２】
発明２によると、マージ対象となる第１及び第２プログラムモジュール群内において、共通している同階層のプログラムモジュールが複数の作業者により更新されている場合であっても、整合性を維持しながらマージ処理を行うことができる。
【００２３】
発明３によると、作業者は、第１及び第２プログラムモジュール群のマージを行った際にバグが発生することを事前に知ることができる。従って、作業者は、実際にマージを行う前、バグが発生しないようにプログラムモジュール群の修正を行うことができる。
【００２４】
発明４によると、第１及び第２プログラムモジュール群のマージ処理は、作業者の手間をかけることなく一度に行われる。
【００２５】
発明５によると、第１及び第２プログラムモジュール群のマージ処理は、第１プログラムモジュール群または第２プログラムモジュール群のいずれかを指定して一度に行われるよりも、作業者の所望する条件に沿ってより細かく行われる。
【００２６】
発明６によると、作業者は、差分情報に基づいて、ソフトウェア生成装置がマージを行う際の条件を詳細に設定することができる。
【００２７】
発明７によると、発明１と同様、第１及び第２プログラムモジュール群をマージした時に発生するバグは、第１及び第２プログラムモジュール群を実際にマージする前に容易に発見されるため、複数人でソフトウェアを開発した場合であっても、ソフトウェアを効率よく生成することができる。
【発明を実施するための最良の形態】
【００２８】
（１）概要
図１は、本実施形態に係るソフトウェア生成装置の構成を模式的に示す図である。本実施形態のソフトウェア生成装置１は、例えば空調機のマイコン用ソフトウェア等であるソフトウェアのプログラムを生成するために用いられる装置であって、ソフトウェアが複数人の作業者により並行して開発される場合に適用される。
【００２９】
ここで、ソフトウェア生成装置１により開発されるソフトウェアについて、図２を用いて説明する。図２は、開発対象のソフトウェアが実現するプロセスの構造を説明するための概念図である。尚、図２中の“○”は、各プロセスを表し、各プロセスに付されている符号“ｐ１〜ｐ８”は、各プロセスを識別するための番号を表している。本実施形態において開発されるソフトウェアは、図２に示すように、複数のプロセスｐ１〜ｐ８を含み、複数のプロセスｐ１〜ｐ８は、階層化された構造を有する。ソフトウェアを開発する各作業者には、複数のプロセスｐ１〜ｐ８のうち、独立性の高いまとまった階層を含むプロセスが割り当てられる。そして、各作業者は、割り当てられた各プロセスを実現するためのプログラムモジュールを生成する。特に、ひとりの作業者に対し複数の階層のプロセスが割り当てられている場合、この作業者により複数のプログラムモジュールが生成されるが、以下では、このようにして生成された複数のプログラムモジュールを「プログラムモジュール群」という。図２のように、全プロセスｐ１〜ｐ８が階層的な構造を有しているため、各作業者により生成されたプログラムモジュール群も、階層的な構成を有している。
【００３０】
以下に、具体例として、２人の作業者（以下、作業者Ａ，作業者Ｂという）それぞれに複数のプロセスが作業範囲として割り当てられた場合について説明する。図２に示すように、作業者Ａにはプロセスｐ２，ｐ３，ｐ４が割り当てられ、作業者Ｂにはプロセスｐ２，ｐ５，ｐ６，ｐ７が割り当てられたとする。特に、既存のソフトウェアを展開して新たなソフトウェアを生成する場合であれば、各作業者は、先ずは既存のソフトウェアが有するプロセスｐ１〜ｐ６，ｐ８（図２のＳ）を実現するための所定プログラムモジュール群をコピーし、そのコピーしたプログラムモジュール群を用いて、作業範囲のプロセスについて作業を行う。具体的には、作業者Ａは、プロセスｐ２〜ｐ４の部分を実現するための作業を行い、プログラムモジュール群Ａを生成する。作業者Ｂは、プロセスｐ２，ｐ５〜ｐ７の部分を実現させるための作業を行い、プログラムモジュール群Ｂを生成する。そして、このようにして生成されたプログラムモジュール群Ａ，Ｂは、ソフトウェア生成装置１によりマージされ、開発対象のソフトウェアができあがる。
【００３１】
ここで、プロセスｐ２（図２の斜線部分）は、両作業者Ａ，Ｂの作業範囲内に共通して含まれている。従って、各作業者Ａ，Ｂにより生成されるプログラムモジュール群Ａとプログラムモジュール群Ｂとでは、プロセスｐ２を実現するためのプログラムモジュールの記述が、少なくとも一部共通していることになる。このように、複数の作業範囲内に共通して含まれるプロセスを「共通プロセス」という。また、作業者Ａの作業範囲であるプロセスｐ３，ｐ４は、作業者Ｂの作業範囲内に含まれていない。同様に、作業者Ｂの作業範囲であるプロセスｐ５〜ｐ７は、作業者Ａの作業範囲内に含まれていない。このように、他の作業者の作業範囲内に含まれていないプロセスを、「単独開発階層のプロセス」という。各作業範囲内に単独開発階層のプロセスがあると、任意の作業者により生成されたプログラムモジュール群は、他の作業者により生成されたプログラムモジュール群とは異なるプログラムモジュールを有していることになる。
【００３２】
そこで、本実施形態に係るソフトウェア生成装置１は、このようなプログラムモジュール群同士をマージする際、整合性を判断するための機能を有する。
【００３３】
（２）構成
次に、上述した機能を搭載しているソフトウェア生成装置１の構成について、図１を用いて具体的に説明する。ソフトウェア生成装置１は、記憶部２、読み込み部３（受付部に相当）、表示部４（第１表示部及び第２表示部に相当）、操作部５（第１指定部及び第２指定部に相当）及び制御部６を備える。
【００３４】
〔記憶部〕
記憶部２は、例えばＨＤＤ等からなり、制御部６により読み出されて実行される各種プログラムを記憶している。また、記憶部２は、既存のソフトウェアを展開して新たなソフトウェアが生成される場合であれば、既存のソフトウェアの所定プログラムモジュール群を記憶しており、また任意の作業者により所定プログラムモジュール群が更新された場合には、そのマージ後のプログラムモジュール群（以下、第１プログラムモジュールという）を記憶することができる。
【００３５】
〔読み込み部〕
読み込み部３は、作業者により生成されたプログラムモジュール群（以下、第２プログラムモジュール群）等を読み込み、制御部６内のＲＡＭ（図示せず）内に一時的に記憶させる。ここで、第２プログラムモジュール群が、例えばフラッシュメモリやＣＤ、ＤＶＤのソフトウェア生成装置１外部の記録媒体に格納されている場合には、読み込み部３は、記録媒体がＵＳＢインターフェースやＣＤドライブ、ＤＶＤドライブ等を介してソフトウェア生成装置１内に挿入され認識された後、第２プログラムモジュール群を記憶媒体内から読み出す。また、例えば第２プログラムモジュール群がＰＣ等の端末内における記憶部に格納されており、その端末とソフトウェア生成装置１とがイントラネット等のネットワークを介して通信可能に接続されている場合には、読み込み部３は、ネットワークを介して端末から第２プログラムモジュール群を取得することができる。
【００３６】
尚、読み込み部３により読み込まれた第２プログラムモジュール群は、記憶部２内に記憶されている所定プログラムモジュールまたは第１プログラムモジュール群それぞれと異なるプログラムモジュールを少なくとも１つ含む。
【００３７】
〔表示部〕
表示部４は、例えば液晶ディスプレイからなり、記憶部２内に記憶されている第１または所定プログラムモジュール群と第２プログラムモジュール群とをマージするための画面（図３）や、マージを行う際の各種条件の設定画面（図４）、マージされるプログラムモジュール群同士の差分情報画面（図５）等を表示する。ここで、図３は、作業者がＤＦＤを用いてプログラムモジュール群同士をマージする場合に表示される場合の画面例である。また、図４では、作業者Ａ，Ｂがマージを行う際の各種条件を選択可能なように、選択されるべき各種条件に対応して選択ボタン１１が付されている。
【００３８】
〔操作部〕
操作部５は、例えば文字キーやテンキー等を備えたキーボードとマウス等のポインティングデバイスとからなり、表示部４に表示された画面に基づいて作業者が各種条件の設定やマージ実行の指示を行う場合等に用いられる。
【００３９】
例えば、第１プログラムモジュール群と第２プログラムモジュール群とをマージする場合において、表示部４に図４が表示されていれば、作業者は、操作部５を介して「一括マージ」または「プロセス毎にマージする」等の選択ボタン１１に印を付すことで、各種設定を選択することができる。「一括マージ」が選択された場合、マージする時に基準となるプログラムモジュール群は、操作部５を介して第１プログラムモジュール群及び第２プログラムモジュール群のいずれかに指定される。特に、「プロセス毎にマージする」が選択された場合、マージする時に基準とするプログラムモジュール群は、第１プログラムモジュール群及び第２プログラムモジュール群それぞれにより実現されるプロセス毎に、操作部５を介して作業者により指定される。具体例としては、作業者は、図２のプロセスｐ３のマージを行う場合には第１プログラムモジュール群を指定し、図２のプロセスｐ５のマージを行う場合には第２プログラムモジュール群を指定することが可能である。
【００４０】
〔制御部〕
制御部６は、ワークメモリとして用いられるＲＡＭとＣＰＵとからなる構成を有しており、記憶部２、読み込み部３、表示部４及び操作部５と接続されている。制御部６は、記憶部２内に記憶されている各種プログラムに基づいて、接続された各機能部を制御する。特に、本実施形態に係る制御部６は、第１プログラムモジュール群と第２プログラムモジュール群とがマージされようとする場合、その第１及び第２プログラムモジュール群について整合性を判断し、整合性判断後の第１プログラムモジュール群と第２プログラムモジュール群とをマージする。このような動作を実現するため、制御部６は、更新判断部６１、整合性判断部６２、マージ処理部６３、差分判断部６４及び画面情報生成部６５として機能する。
【００４１】
〔更新判断部〕
更新判断部６１は、第２プログラムモジュール群が読み込まれた場合、第２プログラムモジュール群のうち、作業者により更新が行われたプログラムモジュールを判断する。より具体的には、第２プログラムモジュール群と第１プログラムモジュール群とについてマージを行う場合には、更新判断部６１は、第２プログラムモジュール群の中から第１プログラムモジュール群に対し更新されているプログラムモジュールを判断する。特に、第１プログラムモジュール群及び第２プログラムモジュール群それぞれが、所定プログラムモジュール群を元にして各作業者により更新されたものである場合には、更新判断部６１は、第１プログラムモジュール群及び第２プログラムモジュール群それぞれの中から、所定プログラムモジュール群に対し更新されているプログラムモジュール群を判断する。
【００４２】
尚、更新判断部６１により更新されていると判断されたプログラムモジュールの情報は、整合性判断部６２に出力される。
【００４３】
〔整合性判断部〕
整合性判断部６２は、更新判断部６１による判断結果に基づいて、マージ対象となるプログラムモジュール群同士の整合性を判断する。例えば、第１プログラムモジュール群と第２プログラムモジュール群とがマージされる場合には、第１プログラムモジュール群と第２プログラムモジュール群との整合性を判断する。特に、第１プログラムモジュール群及び第２プログラムモジュール群それぞれが、所定プログラムモジュール群を元にして各作業者により更新されたものである場合には、整合性判断部６２は、第１及び第２プログラムモジュール群内のうち、所定プログラムモジュール群に対し更新されているプログラムモジュールそれぞれに共通して含まれる同じ階層のプログラムモジュールについて整合性を判断する。
【００４４】
ここで、“共通して含まれる同じ階層のプログラムモジュール”は、例えば図２のプロセスｐ２のように、共通プロセスを実現するためのプログラムモジュールをいう。このように、複数の作業者の作業範囲内に共通プロセスがあり、この共通プロセスが各作業者により更新されてしまうと、ひとりの作業者が生成したプログラムモジュール群には他の作業者により更新された内容が反映されていないため、例えばひとりの作業者が生成したプログラムモジュール群には他の作業者により更新された内容を起動させる部分がない等の不整合が生じる可能性が高くなる。これに対し、整合性判断部６２は、共通プロセスを実現するためのプログラムモジュールについては、特に整合性判断を行うため、複数の作業者により更新されたプログラムモジュール群同士がマージされる際、不整合が生じにくくなる。
【００４５】
以下に、整合性判断の動作が具体的にどのように行われるのかの一例について説明する。例えば、記憶部２内の第１プログラムモジュール群と読み込まれた第２プログラムモジュール群とのマージが行われようとする場合には、整合性判断部６２は、先ずは第１プログラムモジュール群と第２プログラムモジュール群とを仮想的にマージし、制御部６のＲＡＭ内に一時的に格納する。次いで、整合性判断部６２は、仮想的にマージしたマージ結果に対し、更新判断部６１による判断結果に基づいて、整合性のチェックを行う。そして、整合性判断部６２は、２つのプログラムモジュール群それぞれに共通して含まれる同じ階層のプログラムモジュールを選択し、選択したプログラムモジュールについて重点的に整合性を判断する。
【００４６】
また、整合性を判断する具体的な内容としては、例えば以下が挙げられる。
（Ｉ）マージ対象となるプログラムモジュール群それぞれにより実現される各プロセスのうち、共通プロセス（即ち図２中のプロセスｐ２）と、共通プロセスの上下階層にあるプロセス（図２中のプロセスｐ１，ｐ３、ｐ５）との入出力が一致しているか否かを判断する
（ＩＩ）共通プロセス（図２のプロセスｐ２）と、共通プロセスの上下階層にあるプロセス（図２中のプロセスｐ１，ｐ３、ｐ５）とで、同じ変数が用いられているかを判断する
（ＩＩＩ）共通プロセス（図２のプロセスｐ２）に、共通プロセスの下階層にあるプロセス（図２中のプロセスｐ３，ｐ５）の起動が記述されているかを判断する。
【００４７】
尚、整合性判断部６２は、整合性の判断を行うと、この結果を示す整合性判断情報を画面情報生成部６５に出力する。整合性判断情報には、仮想的にマージされたプログラムモジュール群について整合性があるか否かの結果や、整合性がない場合には整合性がないと判断した理由（バグ情報）、バグ情報に該当するプロセス名などが含まれる。
【００４８】
〔マージ処理部〕
マージ処理部６３は、記憶部２が記憶しているプログラムモジュール群と読み込まれた第２プログラムモジュール群とについて実際にマージ処理を行い、第３プログラムモジュール群を生成する。より具体的には、操作部５を介して作業者により所定プログラムモジュール群と第２プログラムモジュール群とのマージ処理が指示された場合には、マージ処理部６３は、所定プログラムモジュール群と第２プログラムモジュール群とをマージする。また、第１プログラムモジュール群と第２プログラムモジュール群とのマージ処理が指示された場合には、マージ処理部６３は、第１プログラムモジュール群と第２プログラムモジュール群とをマージする。
【００４９】
特に、マージ処理部６３は、表示部４が図４の画面を表示している状態で、「一括マージ」と、一括マージ時に基準となるプログラムモジュール群とが操作部５を介して選択された場合には、選択されたプログラムモジュール群を基準としてマージ処理を一括して行う。この場合、プログラムモジュール群のマージ処理は、一度で行われる。
【００５０】
また、表示部４が図４の画面の表示している状態で、「プロセス毎にマージする」が選択された場合、マージ処理部６３は、プロセス毎に指定されたプログラムモジュール群を基準として、マージ処理をプロセスごとに行う。この場合、マージ処理部６３は、例えば図２のプロセスｐ３においては第１プログラムモジュール群を基準とし、プロセスｐ５においては第２プログラムモジュール群を基準として行うことができる。従って、プロセス毎のマージ処理では、ユーザの所望する条件によってより細かく行われる。
【００５１】
〔差分判断部〕
差分判断部６４は、マージ対象である２つのプログラムモジュール群の差分を判断する。例えば、第１プログラムモジュール群と第２プログラムモジュール群とのマージ処理が指示された場合には、差分判断部６４は、第１及び第２プログラムモジュール群を比較し、第１プログラムモジュール群と第２プログラムモジュール群とで異なるプログラムモジュールを判断する。このような差分判断の動作は、マージ処理の時に基準となるプログラムモジュール群が操作部５を介して選択される前に行われる。具体的には、差分判断部６４は、操作部５を介してマージ処理が指示され、制御部６内に２つのプログラムモジュール群が読み込まれた時に、この２つのプログラムモジュール群についての差分判断を行う。
【００５２】
尚、差分判断部６４により判断された結果（即ち差分情報）は、記憶部２内に記憶されると共に、画面情報生成部６５に出力される。ここで、本実施形態に係る差分情報としては、具体的には、マージ対象であるプログラムモジュール群（例えば第１及び第２プログラムモジュール群）それぞれにより実現されるプロセスの制御仕様や定義語の相違点等が挙げられる。また、差分情報には、マージ対象となるプログラムモジュール群において互いに異なるプログラムモジュールがある場合には、作業者の利便性を考慮して、そのプログラムモジュールにより実現されるプロセス名が含まれているとよい。
【００５３】
〔画面情報生成部〕
画面情報生成部６５は、表示部４に表示される画面情報を生成して出力する。例えば、ユーザにより操作部５を介してマージ処理が指示された場合、画面情報生成部６５は、図４に示すようなマージを行う際の各種条件の設定画面についての画面情報を生成する。そして、この図４の画面中において「プロセス毎にマージする」が選択され、かつ差分判断部６４からの差分情報を取得した場合、画面情報生成部６５は、図５に示すような差分情報の画面についての画面情報を生成する。また、整合性判断部６２から整合性判断情報を取得した場合、画面情報生成部６５は、図６に示すように、この旨を示すメッセージと共に、バグ情報、該当のプロセス名等を含む画面が表示部４に表示されるように、画面情報を生成する。尚、図６では、整合性がないと判断された場合に表示される画面例を示す。
【００５４】
（３）一連の動作の流れ
次に、本実施形態に係るソフトウェア生成装置１の一連の動作の流れについて説明する。図７は、ソフトウェア生成装置１の動作の流れを示すフローチャートである。ここでは、記憶部２内には所定プログラムモジュール群または第１プログラムモジュール群が記憶されているとする。
【００５５】
ステップＳ１：第２プログラムモジュール群が記憶されている記憶媒体がソフトウェア生成装置１に挿入され、操作部５を介して作業者によりマージが指示されると、読み込み部３は、第２プログラムモジュール群を読み込み、これを制御部６のＲＡＭ内に格納する。尚、マージ指示では、マージの開始指示がなされると共に、記憶部２内から第２プログラムモジュール群とのマージを行うべきプログラムモジュール群が選択される。
【００５６】
ステップＳ２〜３：制御部６の更新判断部６１は、第２プログラムモジュール群の中から、ステップＳ１において指示されたプログラムモジュール群（即ち、所定プログラムモジュール群または第１プログラムモジュール群）に対し更新されているプログラムモジュールを判断する（Ｓ２）。差分判断部６４は、第２プログラムモジュール群とステップＳ１において指示されたプログラムモジュール群との差分を判断する（Ｓ３）。
【００５７】
ステップＳ４：整合性判断部６２は、第２プログラムモジュール群とステップＳ１において指示されたプログラムモジュール群とを仮想的にマージし、仮想的にマージされたプログラムモジュール群について整合性の判断を行う。
【００５８】
ステップＳ５〜７：ステップＳ４において、整合性がないと判断された場合（Ｓ５のＮＯ）、画面情報生成部６５は、整合性がない旨を示す結果、バグ情報、バグ情報に該当するプロセス名などを含む整合性判断情報を表示部４に表示させるための画面情報を生成する。これにより、表示部４には、図６に示す画面が表示される（Ｓ６）。次いで、画面情報生成部６５は、第２プログラムモジュール群を修正するための画面情報を生成し、表示部４は、図６の画面に加えて図３に示す編集画面を更に表示する。これにより、作業者は、図６の整合性判断情報を確認しながら、プログラムモジュール群の修正を図３の編集画面上で行うことができる（Ｓ７）。尚、作業者は、記憶部２内のプログラムモジュール群、または読み込んだ第２プログラムモジュール群のいずれかを編集することができる。編集が終了すると、整合性判断部６２は、修正後のプログラムモジュール群について再度整合性判断を行う（Ｓ５）。
【００５９】
ステップＳ８〜９：ステップＳ４において、整合性があると判断された場合（Ｓ５のＹＥＳ）、マージ処理部６３は、マージ対象の２つのプログラムモジュール群についてマージ処理を行う（Ｓ８）。ここで、マージ処理の具体的な動作の流れについては、後述する。マージ処理部６３は、マージ処理により第３プログラムモジュール群を生成すると、これを記憶部２内に記憶する（Ｓ９）。
【００６０】
（３−１）マージ処理サブルーチン
図８は、ソフトウェア生成装置１が行うマージ処理サブルーチンである。
【００６１】
ステップＳ２１：画面情報生成部６５は、マージを行う際の各種条件についての設定画面の画面情報を生成する。これにより、表示部４には、図４のマージ条件の設定画面が表示される。そして、作業者は、操作部５を介してマージ条件の設定を行う。
【００６２】
ステップＳ２２〜２４：図４のマージ条件の設定画面上において「一括マージ」が指定され（Ｓ２２のＹＥＳ）、かつ基準とするプログラムモジュール群として「既に記憶済みのプログラムモジュール群」が指定された場合（Ｓ２３のＹＥＳ）、マージ処理部６３は、ステップＳ１において指示されたプログラムモジュール群を基準として、このプログラムモジュール群と第２プログラムモジュール群とを一括してマージする（Ｓ２４）。
【００６３】
ステップＳ２５：ステップＳ２３において、基準とするプログラムモジュール群として「新たに読み込んだプログラムモジュール群」が指定された場合（Ｓ２３のＮｏ）、マージ処理部６３は、ステップＳ１で読み込んだ第２プログラムモジュール群を基準として、第２プログラムモジュール群とステップＳ１において指示されたプログラムモジュール群とを一括してマージする。
【００６４】
ステップＳ２６〜２８：ステップＳ２２において、図４のマージ条件の設定画面上の「プロセス毎にマージする」が指定された場合（Ｓ２６のＹＥＳ）、画面情報生成部６５は、ステップＳ３において差分判断部６４により判断された判断結果（即ち差分情報）を表示部４に表示させるための画面情報を生成する。これにより、表示部４には、図５の差分情報画面が表示される。そして、操作部５を介して、作業者によりマージ処理時に基準となるプログラムモジュール群がプロセス毎に設定されると、マージ処理部６３は、プロセス毎に設定されたプログラムモジュール群を基準として、マージ処理を行う（Ｓ２７）。この動作は、全てのプロセスについて基準となるプログラムモジュール群が設定され、マージ処理が完了するまで行われる（Ｓ２８）。
【００６５】
（４）ソフトウェアを開発する流れの具体例
次に、２人の作業者Ａ，Ｂがソフトウェア生成装置１を用いて空調機のマイコン用ソフトウェアを開発する流れの具体例を、主に図９〜１１を用いて説明する。ここでは、既存の空調機のマイコン用ソフトウェアを展開して新たなマイコン用ソフトウェアが生成される場合を例にとり説明する。
【００６６】
ここで、ソフトウェアの開発工程について簡単に説明する。ソフトウェア開発は、一般的に、基本計画、外部設計、コーディング、テストの順で行われる。基本計画では、空調機の大まかな仕様を記述した概要仕様書と、この仕様を具体的な機能として記述した機能仕様書とが作成される。これらの作成には、主にウォーターフォールモデルが使用される。
【００６７】
次いで、外部設計では、図３に示すようなＤＦＤを用いて外部仕様書が生成される。この外部仕様書には、空調機のマイコン用ソフトウェアを生成するための詳細な仕様が記述されている。ここで、このような外部仕様書は、図３に示すようにソフトウェア生成装置１上に直接記述されることができる。このような場合、外部仕様書に含まれるデータの流れやプロセスの詳細な仕様は階層的に記述され、作業者Ａ，Ｂにより図３中の各プロセスがクリックされると、そのプロセスの下層にあるプロセスはＤＦＤを用いて表示される。尚、本実施形態では、２人の各作業者Ａ，Ｂにはそれぞれ複数のプロセスが作業範囲として割り当てられるため、外部仕様書は、各作業者Ａ，Ｂが担当する作業範囲毎に作成されるとする。
【００６８】
そして、コーディングにおいては、外部仕様書において記述された各プロセスを実行するためのプログラムモジュール群が生成される。尚、プログラムモジュール群の生成方法については、各作業者Ａ，Ｂが直接プログラムのソースファイルを記述する方法や、ソフトウェア生成装置１等によりプログラムを自動生成させる方法等が挙げられる。また、本実施形態では、外部仕様書は各作業者Ａ，Ｂにより分担して作成されるため、プログラムモジュール群も各作業者Ａ，Ｂにより作成される。各作業者Ａ，Ｂにより作成されたプログラムモジュール群を、「プログラムモジュール群Ａ」「プログラムモジュール群Ｂ」とし、以下では、プログラムモジュール群Ａ，Ｂは作成された状態にあるとして説明する。
【００６９】
先ず、図９に示すように、作業者Ａが、プログラムモジュール群Ａ及びプログラムモジュール群Ａに対応する外部仕様書が記録された記録媒体をソフトウェア生成装置１に挿入したとする。すると、ソフトウェア生成装置１の読み込み部３は、プログラムモジュール群Ａ及び外部仕様書を読み込む。制御部６の更新判断部６１は、記憶部２内に記憶されている既存のソフトウェアの所定プログラムモジュール群を読み出し、プログラムモジュール群Ａの中から所定プログラムモジュール群に対し更新されているプログラムモジュールを判断する。そして、整合性判断部６２は、更新判断部６１による判断結果に基づいて、マージ対象となる所定プログラムモジュール群とプログラムモジュール群Ａとの整合性を判断し、表示部４は、その結果を示す整合性判断情報を表示する。整合性がないと判断された場合には、表示部４は、図６に示すようなマージ結果を表示し、更に図３に示すような外部仕様書の編集画面を表示する。その後、作業者Ａによる外部仕様書の編集、プログラムモジュール群Ａの修正、及び整合性判断の動作は、整合性があると判断されるまでこの順番で繰り返される。
【００７０】
そして、整合性があると判断された後、表示部４は、図４のマージ条件の設定画面を表示する。ここで、作業者Ａは、この画面上から「一括マージ」と「既に記憶済みのプログラム」を選択したとする。すると、ソフトウェア生成装置１のマージ処理部６３は、記憶部２内の所定プログラムモジュール群を基準にしてプログラムモジュール群Ａを一度でマージし、マージ後のプログラムモジュール群Ａ’は、記憶部２内に記憶される。
【００７１】
次いで、作業者Ｂは、プログラムモジュール群Ｂ及びプログラムモジュール群Ｂに対応する外部仕様書が記録された記録媒体をソフトウェア生成装置１に挿入したとする。すると、ソフトウェア生成装置１の読み込み部３はプログラムモジュール群Ｂ及び外部仕様書を読み込む。制御部６の更新判断部６１は、記憶部２内に記憶されている前回マージ処理を行った後のプログラムモジュール群Ａ’を読み出し、プログラムモジュール群Ｂの中からプログラムモジュール群Ａ’に対し更新されているプログラムモジュールを判断する。そして、上述した場合と同様に、整合性判断部６２による整合性判断や外部仕様書の編集、プログラムモジュール群Ｂの編集等が行われ、整合性があると判断された場合には、表示部４は、図４のマージ条件設定画面を表示する。
【００７２】
ここで、作業者Ｂは、この画面上から「一括マージ」を選択したとする。この場合にソフトウェア生成装置１が行うマージ処理を、図１０に示す。「一括マージ」と共に、基準とするプログラムモジュール群として「既に記憶済みのプログラムモジュール群」が選択された場合には、マージ処理部６３は、前回マージが行われた後のプログラムモジュール群Ａ’を基準として一括でマージ処理を行う。すると、図１０の（ａ）に示すように、前回マージが行われた後のプログラムモジュール群Ａ’に対し、プログラムモジュール群Ａ’にはないプログラムモジュール群Ｂの部分が追加されたものが生成され、記憶部２内に記憶される。一方、基準とするプログラムモジュール群として「新たに読み込んだプログラムモジュール群」が選択された場合には、マージ処理部６３は、プログラムモジュール群Ｂを基準として一括でマージ処理を行う。すると、図１０の（ｂ）に示すように、プログラムモジュール群Ｂに対し、プログラムモジュール群Ｂにはないプログラムモジュール群Ａ’の部分が追加されたものが生成され、記憶部２内に記憶される。
【００７３】
また、作業者Ｂが、図４の画面上から「プロセス毎にマージ」を選択した場合、表示部４は、図５に示す差分情報を表示する。作業者Ｂは、この図５の差分情報に基づいて、基準とするプログラムモジュール群を選択することができる。ソフトウェア生成装置１のマージ処理部６３は、プロセス毎に選択されたプログラムモジュール群を基準としてマージ処理を行い、マージ後のプログラムモジュール群を記憶部２内に記憶させる。このようにしてマージされ生成されたプログラムモジュール群の例を、図１１に示す。
【００７４】
（５）効果
（Ａ）
このソフトウェア生成装置１は、読み込み部３が第２プログラムモジュール群を読み込むと、記憶部２内に記憶しているプログラムモジュール群と第２プログラムモジュール群とのマージ処理を実際に行う前に、これらのプログラムモジュール群の整合性判断を行う。これにより、これらのプログラムモジュール群同士をマージした時に発生するバグは、実際にマージ処理を行う前に容易に発見される。従って、複数人でソフトウェアを開発した場合であっても、ソフトウェアを効率よく生成することができる。
【００７５】
（Ｂ）
特に、既存のソフトウェアを展開して新たな用ソフトウェアが生成される場合、ソフトウェア生成装置１は、各作業者により生成された第１及び第２プログラムモジュール群の中に、所定プログラムモジュール群に対して更新されているプログラムモジュールがある場合には、第１及び第２プログラムモジュール群に共通しており、かついずれのモジュール群においても更新されている同階層のプログラムモジュールについて、特に整合性をチェックする。これにより、マージ対象となる第１及び第２プログラムモジュール群内において、共通している同階層のプログラムモジュールが複数の作業者により更新されている場合であっても、整合性を維持しながらマージ処理を行うことができる。
【００７６】
（Ｃ）
そして、マージ対象となるプログラムモジュール群において、整合性判断部６２により整合性がないと判断された場合、表示部４は、この旨を示す整合性判断情報を表示する。これにより、このソフトウェア生成装置１を使用している作業者は、マージ処理を行った際にバグが発生することを事前に知ることができる。従って、作業者は、実際にマージを行う前、バグが発生しないように、プログラムモジュール群の修正を行うことができる。
【００７７】
（Ｄ）
また、ソフトウェア生成装置１は、マージ処理時に基準となるプログラムモジュール群が選択されると、選択されたプログラムモジュール群を基準として一括してマージ処理を行うことができる。これにより、プログラムモジュール群のマージ処理は、作業者の手間をかけることなく一度に行われる。
【００７８】
（Ｅ）
また、ソフトウェア生成装置１は、「プロセス毎にマージする」が選択され、プロセス毎に基準となるプログラムモジュール群が選択されると、選択されたプログラムモジュール群を基準としてプロセス毎にマージ処理を行う。これにより、マージ処理は、マージ対象となるプログラムモジュール群のいずれかを指定して一度に行う場合よりも、作業者の所望する条件に沿ってより細かく行われる。
【００７９】
（Ｆ）
また、このソフトウェア生成装置１によると、作業者は、マージ対象となるプログラムモジュール群の差分情報に基づいて、ソフトウェア生成装置１がマージを行う際の条件を詳細に設定することができる。
【００８０】
＜その他の実施形態＞
（ａ）
上記実施形態では、図２のプロセスｐ２に示すように、共通プロセスが１つである場合について説明したが、共通プロセスは、複数あってもよい。この場合、ソフトウェア生成装置１は、整合性の判断を行う時、共通プロセス全てについて順に整合性を判断する。
【００８１】
（ｂ）
上記実施形態では、２人の作業者Ａ，Ｂがソフトウェアを開発する場合について説明したが、本発明に係るソフトウェア生成装置１は、２以上の作業者によりソフトウェアが開発する場合にも適用できる。
【００８２】
（ｃ）
上記実施形態では、図７のステップＳ３に示すように、差分情報は、マージ処理が行われる場合にのみ表示されていたが、これに限定されない。差分情報は、差分判断部６４による差分判断後には記憶部２内に記憶されているため、例えば作業者により差分情報の閲覧を指示された場合等には、表示部４に表示されることができる。
【００８３】
（ｄ）
上記実施形態では、「（４）ソフトウェアを開発する流れの具体例」のように、既存のソフトウェアを展開して新たなマイコン用ソフトウェアが生成される場合について説明したが、本発明に係るソフトウェア生成装置１は、既存のソフトウェアがない場合に、一からソフトウェアを開発する場合においても適用できる。
【産業上の利用可能性】
【００８４】
本発明に係るソフトウェア生成装置及びソフトウェア生成方法は、複数人でソフトウェアを開発した場合であっても、ソフトウェアが効率よく生成される効果を有するため、複数人でソフトウェアを開発する場合に適用することができる。
【図面の簡単な説明】
【００８５】
【図１】本実施形態に係るソフトウェア生成装置の構成を模式的に示す図。
【図２】本実施形態に係るソフトウェア生成装置により開発されるソフトウェアが有する複数のプロセスの構造を説明するための概念図。
【図３】プログラムモジュール群同士をマージする時に表示部に表示される画面例。
【図４】マージを行う際の各種条件の設定画面例。
【図５】マージされるプログラムモジュール群同士の差分情報画面。
【図６】整合性判断部により整合性がないと判断された場合に、表示部に表示される画面例。
【図７】本実施形態に係るソフトウェア生成装置１の動作の流れを示すフローチャート。
【図８】本実施形態に係るソフトウェア生成装置１が行うマージ処理サブルーチン。
【図９】本実施形態に係るソフトウェア生成装置１を用いてソフトウェアの開発を行う過程を説明するための図。
【図１０】本実施形態に係るソフトウェア生成装置１を用いてソフトウェアの開発を行う過程を説明するための図。
【図１１】本実施形態に係るソフトウェア生成装置１を用いてソフトウェアの開発を行う過程を説明するための図。
【符号の説明】
【００８６】
１  ソフトウェア生成装置
２  記憶部
３  読み込み部
４  表示部
５  操作部
６  制御部
６１  更新判断部
６２  整合性判断部
６３  マージ処理部
６４  差分判断部
６５  画面情報生成部
ｐ１〜ｐ８  プロセス
【図１】
2008234379.tif 000003
【図２】
2008234379.tif 000004
【図３】
2008234379.tif 000005
【図４】
2008234379.tif 000006
【図５】
2008234379.tif 000007
【図６】
2008234379.tif 000008
【図７】
2008234379.tif 000009
【図８】
2008234379.tif 000010
【図９】
2008234379.tif 000011
【図１０】
2008234379.tif 000012
【図１１】
2008234379.tif 000013