JP2008242873A - ソフトウェア自動構成装置及び方法 - Google Patents

ソフトウェア自動構成装置及び方法 Download PDF

Info

Publication number
JP2008242873A
JP2008242873A JP2007083245A JP2007083245A JP2008242873A JP 2008242873 A JP2008242873 A JP 2008242873A JP 2007083245 A JP2007083245 A JP 2007083245A JP 2007083245 A JP2007083245 A JP 2007083245A JP 2008242873 A JP2008242873 A JP 2008242873A
Authority
JP
Japan
Prior art keywords
software
configuration information
automatic program
software component
component
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007083245A
Other languages
English (en)
Inventor
Koji Hashimoto
幸司 橋本
Yuichiro Morita
雄一朗 守田
Fumio Narisawa
文雄 成沢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007083245A priority Critical patent/JP2008242873A/ja
Priority to US12/014,892 priority patent/US20080244520A1/en
Publication of JP2008242873A publication Critical patent/JP2008242873A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Abstract

【課題】
ソフトウェア部品数が大規模化した場合でも、ソフトウェア構成情報およびソフトウェア部品を記憶する手段に対する維持管理を容易にする。
【解決手段】
個々のソフトウェア部品構成情報に対応したソフトウェア部品を、ユーザが独自にタグを定義できるマークアップ言語によって単一の木構造に構造化して記憶したソフトウェア部品データベース150と、ソフトウェア部品データベース150からソフトウェア構成情報を入力する構成情報入力部112と、入力したソフトウェア構成情報に基づいて部品選択画面を表示するとともに、ユーザによる部品の選択を受け付けるGUI部111と、部品選択結果に対応するソフトウェア部品をソフトウェア部品データベース150から入力するソフトウェア部品入力部122と、ソフトウェア部品入力部122で入力したソフトウェア部品を組み合わせてプログラムを生成する生成部121を有するプログラム自動構成装置。
【選択図】図1

Description

本発明は、プログラム自動構成装置及び方法に関する。
機器に組み込まれるソフトウェアは年々その複雑さを増しており、その開発時間,コストはとても大きなものになっている。そのような状況で、既存のソフトウェア部品を組み合わせて新たなソフトウェアを開発することが有用である。さらに、既存のソフトウェア部品に実績のあるものを選択することにより、それらを組み合わせて開発した新規ソフトウェアの品質を維持することも可能となる。
ただし、ソフトウェア部品を組み合わせる機械的な作業を人手で行う場合、その人為的なミスによりソフトウェアの不具合が混入する可能性が考えられる。また、組み合わせるソフトウェア部品の数が数百を超えるようになると、その機械的な作業も容易ではない。
既存のソフトウェア部品を組み合わせて新規プログラムのソースコードを自動生成するプログラム自動構成装置として、ソフトウェア構成情報を木構造に構造化して記憶する手段と、前記構成情報を構成する個々の構成情報要素に対応したソフトウェア部品を前記木構造と同じ木構造で記憶する手段を備えたものが知られている(例えば特許文献1)。2つの記憶手段がそれぞれ、ソフトウェア構成情報およびソフトウェア部品を同じ木構造で記憶することにより、ソフトウェア構成情報を構成する構成情報要素から容易に対応するソフトウェア部品を特定可能となる。
特開平02−105222号公報
しかしながら、従来技術では、ソフトウェア構成情報を記憶する前記手段とソフトウェア部品を記憶する前記手段との間で、同じ木構造となるように各記憶手段が記憶する情報を維持管理しなければならない。ソフトウェア部品数が大規模になると、そのような維持管理に要するコストが大きくなってしまう。
本発明の目的は、ソフトウェア部品数が大規模化した場合でも、ソフトウェア構成情報およびソフトウェア部品を記憶する手段に対する維持管理を容易にすることである。
本発明は、ソフトウェア構成情報および当該ソフトウェア構成情報に含まれる個々のソフトウェア部品構成情報に対応したソフトウェア部品を、ユーザが独自にタグを定義できるマークアップ言語によって単一の木構造に構造化して記憶する。このデータベース記憶部から入力したソフトウェア構成情報に基づいて部品選択画面を表示するとともに、入力デバイスでユーザに部品を選択させる。そして、当該選択結果に対応するソフトウェア部品をデータベース記憶部から入力し、入力したソフトウェア部品を組み合わせてプログラムを生成する。好ましくは、ユーザから受け付けた部品選択結果をマークアップ言語による部分木として構成して出力し、当該部分木に対応するソフトウェア部品をデータベース記憶部から入力して、入力したソフトウェア部品を組み合わせてプログラムを生成することである。
ソフトウェア部品数が大規模化した場合でも、ソフトウェア構成情報およびソフトウェア部品を記憶する手段に対する維持管理を容易にできる。
図1は、本発明の一実施形態をなすソフトウェア自動構成装置の機能ブロック図を示す。図2は、図1のハードウェア構成を示す。
複数のソフトウェア部品を組み合わせて新規プログラムのソースコードを自動生成するソフトウェア自動構成装置は、自動構成部100およびソフトウェア部品データベース
150から構成される。この例では、図1における自動構成部100をコンピュータ201に配置し、ソフトウェア部品データベース150をサーバ202に配置している例を示している。しかしながら、自動構成部100およびソフトウェア部品データベース150を同一のコンピュータに配置したり、自動構成部100における部品選択部110およびコード生成部120をそれぞれ異なるコンピュータに配置したりしても構わない。
ソフトウェア部品データベース150には、ソフトウェア構成情報および複数のソフトウェア部品が格納される。ソフトウェア構成情報は構造化された複数のソフトウェア部品構成情報から構成される。ソフトウェア部品データベース150では、ソフトウェア部品構成情報とソフトウェア部品が対応付けられている。ソフトウェア部品構成情報とは対応するソフトウェア部品の名前や設定パラメータ等を示す。一方、ソフトウェア部品とはソースファイルまたは部分的なソースコード文字列を示す。ソフトウェア部品データベース150において、全てのソフトウェア部品およびソフトウェア部品構成情報は単一のツリーで管理され、部品構成情報+ソフトウェア部品.xmlファイル151として格納される。
図3は、図1の部品構成情報+ソフトウェア部品.xmlファイル151に含まれるツリーの例を示す。図4は、図3をXMLによって記述した例を示す。ここではXMLを用いた例を示すが、ユーザが独自にタグを定義できるマークアップ言語であれば良く、SGML等を用いて記述してもよい。
図1に戻り、自動構成部100は部品選択部110およびコード生成部120から構成される。部品選択部110はさらにGUI部111および構成情報入力部112から構成される。構成情報入力部112は、ソフトウェア部品データベース150に格納された部品構成情報+ソフトウェア部品.xmlファイル151からソフトウェア部品構成情報のみを抽出し、それをインターフェース部としてのGUI(グラフィック・ユーザ・インターフェース)部111に出力する。GUI部111は構成情報入力部112から入力したソフトウェア部品構成情報を基に、部品選択画面を表示する。図6は、図1のGUI部111の部品選択画面例を示す。そして、ソフトウェア自動構成装置のユーザ160からソフトウェア部品の選択を受け付ける。ソフトウェア部品の選択を受け付けると、GUI部111はその選択結果をソフトウェア部品選択結果.xmlファイル130に出力する。図7は、図3に示すソフトウェア部品構成情報からソフトウェア部品“AnalogWeight”を選択してそのパラメータ設定として“AnalogPort”に“AN1”を設定し、ソフトウェア部品
“StartButton”のパラメータ設定として“DigitalPort”に“PB0”を設定し、ソフトウェア部品“Beeper”を選択した場合における、ソフトウェア部品選択結果.xmlファイルの内容を論理的なツリーで示している。図7に示すように、ソフトウェア部品選択結果
.xmlファイルに含まれるツリーは必ず図3に示す部品構成情報+ソフトウェア部品.xmlファイルに含まれるツリーの部分木になるように、GUI部111はソフトウェア部品選択結果.xmlファイルを出力する。なお、ソフトウェア部品の選択結果は必ずしもソフトウェア部品選択結果.xmlファイルに出力する必要はなく、オブジェクト等のメモリイメージとして上記選択結果をソフトウェア部品入力部に直接出力しても構わない。
コード生成部120は生成部121およびソフトウェア部品入力部122から構成される。ソフトウェア部品入力部122は、ソフトウェア部品選択結果.xmlファイル130を入力する。そして、同ファイルに含まれるツリーを基に、部品構成情報+ソフトウェア部品.xmlファイル151から選択されたソフトウェア部品を抽出し、生成部121に出力する。生成部121はソフトウェア部品入力部122から入力したソフトウェア部品を適切に結合し、コンパイル可能なソースコードとして出力する。
以下では、本実施形態のソフトウェア自動構成装置を構成する各部について詳細に説明する。
図4に戻り、XMLによって記述した例を詳述する。ここではスペースの都合上、図3に示す論理的ツリーのうちノード300〜321に対応するXMLを示している。
図4において、<Group>や<Component>,<ChoiceComponent>,<Parameter>,
<ChoiceParameter>タグ内に定義される属性がソフトウェア部品構成情報を示している。例えば、<ChoiceComponent name=“BooleanWeight”>タグ406において、
“name=“BooleanWeight””
がソフトウェア部品構成情報を示している。以下、各タグについて説明する。
<Group> タグはソフトウェア部品構成情報を分類するためのものである。例えば図3において、ノード300は図4における<Group>タグ400に対応し、“MicrowaveOven”というオーブンレンジシステムそのものを定義している。すなわち、図3のツリーにおいてノード300の子孫ノードは全てオーブンレンジシステムに関するソフトウェア部品構成情報またはソフトウェア部品であるという分類を示している。また、オーブンレンジシステムに関するソフトウェア部品構成情報は“Sensors”および“Actuators”に分類されることを、ノード302および340が示している。図4に示すように生成部タグを導入することにより、このような生成部タグの入れ子構造を表現可能にしている。そして、ノード304および330,341,342によって、分類“Sensors”には“WeightSensor”および“StartButton”というソフトウェア部品が属しており、分類“Actuators”には
“Beeper”および“Light”というソフトウェア部品が属していることが定義される。
<Component> タグは、ソフトウェア部品に直接対応する構成情報を定義するためのものである。例えば図3において、ノード330は“StartButton” というボタンに関するソフトウェア部品構成情報を定義する。なお、ノード341および342にはソフトウェア部品構成情報として“optional=“true”” が定義されている。これは、同ノードに対応するソフトウェア部品の実現する機能がオプションであることを示している。一方、ノード330には上記の定義がない。したがって、“StartButton” はオプションではなく必須の機能であることと定義される。
<ChoiceComponent> タグは、ソフトウェア部品に直接対応する構成情報を定義するためのものであり、ソフトウェア部品の選択肢を定義する。例えば図3において、ノード304および306,314により、“WeightSensor”というソフトウェア部品には
“BooleanWeight”および“AnalogWeight”が選択肢として定義される。これにより、
“WeightSensor”として“BooleanWeight”または“AnalogWeight” のいずれかのソフトウェア部品が選択されるべきであると定義される。具体的にはノード306は、図4における<ChoiceComponent>タグ406に対応し、“BooleanWeight”という重量センサに関するソフトウェア部品構成情報を定義する。<ChoiceComponent> タグにより、重量センサのうち“BooleanWeight” というソフトウェア部品が選択肢の一つとして定義される。また、ノード314は、図4における<ChoiceComponent> タグ414に対応し、
“AnalogWeight”という重量センサに関するソフトウェア部品構成情報を定義する。
<ChoiceComponent> タグにより、重量センサのうち“AnalogWeight”というソフトウェア部品が選択肢の一つとして定義される。
<Parameter> タグはソフトウェア部品の設定パラメータを定義するためのものである。そして、<ChoiceParameter> タグは上記パラメータにおける設定内容の選択肢を定義する。例えば図3において、ノード308は、図4における<Parameter> タグ408に対応し、ノード306“BooleanWeight”の設定パラメータとして“DigitalPort”を定義している。そして、ノード310および312はそれぞれ図4における<ChoiceParameter> タグ410および412に対応し、本パラメータの設定内容の選択肢として“PA0”および
“PA1”を定義している。
一方、<src>タグと</src>タグで挟んだ部分はソフトウェア部品を示している。<src>
</src>タグ内には<file>タグまたは<text>タグを挿入可能である。<file>タグと</file>タグで挟んだ部分はソースコードが記述されたファイルそのものをソフトウェア部品として示し、<text>タグと</text> タグで挟んだ部分は部分的なソースコードとなる文字列とそれを挿入すべきファイルパス名をソフトウェア部品として示している。例えば図4において、<ChoiceComponent>タグ406の直下にある<src>タグ407内には、ソースコードが記述されたファイル
“/src/Sensors/BooleanWeight/BooleanWeight.c”
および
“/src/Sensors/BooleanWeight/BooleanWeight.h”
がソフトウェア部品として示されている。また、<Parameter>タグ408の直下にある
<src>タグ409内には、ソースコード文字列を挿入すべきファイルパス名が
“/src/Sensors/Sensors.h”
であり、挿入されるソースコード文字列が
“#define WeightSensorPort”
であるソフトウェア部品が示されている。以上のように<file>タグおよび<text>タグを導入することにより、ファイルそのものをソフトウェア部品として扱うものと、ソースコード文字列をソフトウェア部品として扱うものとを生成部121は区別して処理することが可能となる。
そして、<src>タグを<Component>や<Parameter>、<ChoiceParameter> タグに挟むことにより、ソフトウェア部品とそのソフトウェア部品に対応するソフトウェア部品構成情報を一対一に対応付けている。例えば図4において、
“/src/Sensors/BooleanWeight/BooleanWeight.c”
というファイルを<src>タグ407内に挟み、同<src>タグを<ChoiceComponent> タグ406の直下に挟むことにより、“BooleanWeight”というソフトウェア部品構成情報と
“/src/Sensors/BooleanWeight/BooleanWeight.c”
というソフトウェア部品を一対一に対応付けている。
なお、例えば<Group>タグ400の直下にある<src>タグ401内にもソフトウェア部品を定義することができる。前記のように<Group>タグ400は“MicrowaveOven”というオーブンレンジシステムそのものを定義するものである。したがって、<src> タグ401にソフトウェア部品を定義することにより、同ソフトウェア部品をシステム全体で共通のソフトウェア部品として定義することが可能となる。このように、<Group>タグの直下にも
<src> タグを定義可能にすることにより、ソフトウェア部品間で共通のソフトウェア部品を定義可能である。
以上より、構成情報入力部112は、<Group>および<Component>、<ChoiceComponent>,<Parameter>,<ChoiceParameter>タグに注目することによりソフトウェア部品構成情報のみを抽出することが可能となる。一方、ソフトウェア部品入力部は<src> タグに注目することにより各ソフトウェア部品構成情報に対応するソフトウェア部品を抽出することが可能となる。
なお、部品構成情報+ソフトウェア部品.xmlファイル151に記述される前記ツリーは論理的に単一のものであればよく、部分的なツリーが物理的に複数のファイルに記述されていても構わない。例えば図5に示すように、ハイパーリンクを用いることにより論理的には単一のツリーだが物理的には複数のファイルにソフトウェア部品およびソフトウェア部品構成情報を記述することも可能である。
構成情報入力部112は、部品構成情報+ソフトウェア部品.xmlファイル151を入力しソフトウェア部品構成情報のみを抽出し、GUI部111に出力する。具体的には、構成情報入力部112は<Group>および<Component>,<ChoiceComponent>,<Parameter>,
<ChoiceParameter>タグに注目することによりソフトウェア部品構成情報のみを抽出する。
GUI部111は、構成情報入力部112からソフトウェア構成情報を入力し、同情報を基に部品選択画面を表示する。例えば図3(または図4)に示すソフトウェア構成情報を入力すると、GUI部111は図6に示すような部品選択画面を表示する。ソフトウェア自動構成装置のユーザ160はマウスポインタ640を用いて同画面を操作することにより、ソフトウェア部品の選択やパラメータ設定を行う。
GUI部111は、ソフトウェア構成情報を基に以下のようにツリー表示を行う。
<Group> タグで定義されたノードは、アイコン601,602,603,604のように、内容を展開可能なフォルダとして表示する。<Component> タグで定義されたノードについては、属性“optional”が定義されていない場合、アイコン630のように内容を展開可能なフォルダとして表示する。一方、属性“optional”が“true”と定義された
<Component>タグや<ChoiceComponent>タグで定義されたノードについては、610や611に示すようなチェックボックスを表示することにより、対応するソフトウェア部品がオプションまたは選択肢であることを示す。<Parameter>タグに対応するノードについては、620や631に示すようにアイコンを区別している。同アイコンがクリックされると
<ChoiceParameter> タグに対応するノード群を650に示すようにパラメータ選択肢として表示する。例えば図6は“AnalogPort”620がクリックされた場合における画面表示を示している。ここでは、図3においてノード316以下にあるノード318,320,322を、図6における650に示すようなパラメータ選択画面として表示する。
図6に示すような部品選択画面を介してソフトウェア自動構成装置のユーザ160からソフトウェア部品の選択やパラメータ設定を受け付けると、GUI部111はその受け付けた結果をソフトウェア部品選択結果.xmlファイル130として出力する。図7は、ソフトウェア部品“WeightSensor”として“AnalogWeight”を選択しそのパラメータ設定として“AnalogPort”に“AN1”を設定し、ソフトウェア部品“StartButton”のパラメータ設定として“DigitalPort”に“PB0”を設定し、ソフトウェア部品“Beeper”をユーザ160が選択した場合における、ソフトウェア部品選択結果.xmlファイルの内容を論理的なツリーで示した例である。このように、構成情報入力部112から入力したソフトウェア部品構成情報の論理ツリーの部分木になるようにGUI部111は選択結果.xmlファイルを出力する。そのためには、あるノードに対応するソフトウェア部品が選択された場合、同ノードの親を含む全ての先祖ノードを同ファイルに含む必要がある。図7に示すツリーに対応するXMLファイルの記述例を図8示す。
ソフトウェア部品入力部122は、ソフトウェア部品選択結果.xmlファイル130を入力するとともに、部品構成情報+ソフトウェア部品.xmlファイル151における<src> タグに注目することにより、選択されたソフトウェア部品を特定する。具体的には、部品構成情報+ソフトウェア部品.xmlファイル151をXMLデータベースに格納した場合、
XPathやXQueryを用いることによりソフトウェア部品を特定することができる。
例えばXPathを用いた場合、次のようにソフトウェア部品を特定可能である。図3(または図4)に示す部品構成情報+ソフトウェア部品.xmlファイルおよび図7(または図8)に示す選択結果.xmlファイルを考える。ソフトウェア部品入力部は選択結果.xmlファイルのツリーをルートノードからリーフノードに向かって辿りながら各ノードについて以下の処理を行う。
[ステップ1]
現在訪れているノードのXPathを求める。例えば、図8における<ChoiceComponent name=“AnalogWeight”>タグ801に対応するノードに現在訪れている場合、そのXPathは
“/Group[attribute::name=“MicrowaveOven”]/subGroups/Group[attribute::name=
“Sensors”]/subGroups/Group[attribute::name=“WeightSensor”]/ChoiceComponent
[attribute::name=“AnalogWeight”]”
となる。
[ステップ2]
ステップ1で求めたXPathの末尾に“/src”を追加する。これにより、前記XPathは
“/Group[attribute::name=“MicrowaveOven”]/subGroups/Group[attribute::name=
“Sensors”]/subGroups/Group[attribute::name=“WeightSensor”]/ChoiceComponent
[attribute::name=“AnalogWeight”]/src”
となる。
[ステップ3]
ステップ2で求めたXPath を用いてXMLデータベースに格納された図4に示す部品構成情報+ソフトウェア部品.xmlファイル内を検索する。これにより、<src> タグ415に挟まれた
<file>/src/Sensors/AnalogWeight/AnalogWeight.c</file>
および
<file>/src/Sensors/AnalogWeight/AnalogWeight.h</file>
という文字列を特定することができる。以上のように、<ChoiceComponent name=
“AnalogWeight”>というソフトウェア部品構成情報に一対一に対応する上記ソフトウェア部品を抽出できたことになる。
以上のように、ソフトウェア部品選択結果.xmlファイル130の論理的ツリーをルートノードからリーフノードに向かって辿りながら各ノードについて上記処理を行うことにより、必要なソフトウェア部品を全て抽出することができる。そして、ソフトウェア部品入力部122は抽出したソフトウェア部品を生成部121に出力する。
生成部121は、ソフトウェア部品入力部122から入力したソフトウェア部品を組み合わせソースファイルとして出力する。入力したソフトウェア部品がファイルそのものである場合、同ファイルをそのままソースファイルとして出力する。図4に示す部品構成情報+ソフトウェア部品.xmlファイルのように、ソフトウェア部品であるファイルのパス名のみを定義し、ファイルの実体を個別にデータベースに格納することができる。また、ソフトウェア部品であるファイルの内容を全て部品構成情報+ソフトウェア部品.xmlファイル151に含めることも可能である。
一方、生成部121が入力したソフトウェア部品がソースコード文字列である場合、生成部121は同文字列を指定されたファイルに挿入する必要がある。ここで、挿入すべきファイルの雛形をあらかじめ用意することも可能である。図9は、テンプレートエンジンである
Velocity(http://jakarta.apache.org/velocity/)
を用いた場合における、挿入すべきファイルの雛形の例として、“/src/Sensors/Sensors.h”ファイルの雛形を示している。図9において、文字列の挿入場所を“$component.
context” として定義している。Velocityでは、図9に示すように“#foreach”ディレクティブを用いることにより、複数の文字列を逐次的に挿入することができる。例えば、図3または図4に示す部品構成情報+ソフトウェア部品.xmlファイルに対し図7または図8に示すソフトウェア部品選択結果.xmlファイルがソフトウェア部品入力部122に入力された場合を考える。このとき、ソフトウェア部品入力部122によって特定されるソフトウェア部品のうち、ノード316,320,331,332に対応するソフトウェア部品に注目する。これらのソフトウェア部品は、図4に示すように共通の挿入先ファイル
“/src/Sensors/Sensors.h”が指定され、それぞれ“#define WeightSensorPort”,
“AN1\n”,“#define StartButtonPort”,“PB0\n” というソースコード文字列であるとする(“\n”は改行文字)。この4つのソースコード文字列をソフトウェア部品入力部122から入力した生成部121は、Velocityを用いて図9に示す雛形ファイルに対し逐次的に挿入することにより、図10に示すようなソースファイルを生成する。
図11は、図3におけるノード340以下の部分木に対応するXMLを示している。ここで図11に示す部品構成情報+ソフトウェア部品.xmlファイルに対し、図12に示す選択結果.xmlファイルがソフトウェア部品入力部122に入力された場合を考える。このとき、図12においてノード1200および1201に注目すると、オプションであるソフトウェア部品“Beeper”および“Light” が選択されていることがわかる。ソフトウェア部品入力部122によって特定されるソフトウェア部品のうち、ソフトウェア部品
“Beeper”および“Light” に対応するソフトウェア部品については、図11に示すようにソースコード文字列の挿入先ファイルとして“/src/FW/extern.h”,“/src/FW/init.c”,“/src/FW/entry.c”,“/src/FW/exit.c” が定義されている。上記ファイルの雛形ファイルをそれぞれ図13,図15,図17,図19に示す。図11より、挿入先ファイル“/src/FW/extern.h”に対してはソースコード文字列“#include <src/Actuators/
Beeper/Beeper.h”および“#include <src/Actuators/Light/Light.h”、挿入先ファイル
“/src/FW/init.c”に対してはソースコード文字列“Beeper_init();\n”および
“Light_init();\n”、挿入先ファイル“/src/FW/entry.c”に対してはソースコード文字列“Light_on();\n” 、挿入先ファイル“/src/FW/exit.c”に対してはソースコード文字列“Beeper_beep();\n”および“Light_off();\n”を挿入することにより、生成部121はそれぞれ図14,図16,図18,図20に示すソースファイルを生成する。
本発明の一実施形態をなすソフトウェア自動構成装置の機能ブロック図を示す。 図1のハードウェア構成を示す。 図1の部品構成情報+ソフトウェア部品.xmlファイル151に含まれるツリーの例を示す。 図3をXMLによって記述した例を示す。 図3に示したファイルをハイパーリンクを用いて複数ファイルに分割した例を示す。 図1のGUI部111の部品選択画面例を示す。 図1の例で、論理的なツリーで内容を示した選択結果.xmlの例を示す。 図7に対応するXMLを示す。 テンプレートエンジンを用いた例を示す。 コード生成部120が生成したソースファイルを示す。 論理的なツリーで内容を示した部品構成情報+ソフトウェア部品.xmlの例を示す。 論理的なツリーで内容を示した選択結果.xmlの例を示す。 テンプレートエンジンを用いた場合の雛形ファイルを示す。 コード生成部120が生成したソースファイルを示す。 テンプレートエンジンを用いる場合の雛形ファイルを示す。 コード生成部120が生成したソースファイルを示す。 テンプレートエンジンを用いた場合の雛形ファイルを示す。 コード生成部120が生成したソースファイルを示す。 テンプレートエンジンを用いた場合の雛形ファイルを示す。 コード生成部120が生成したソースファイルを示す。
符号の説明
100 自動構成部
110 部品選択部
111 GUI部
112 構成情報入力部
120 コード生成部
121 生成部
122 ソフトウェア部品入力部
130 ソフトウェア部品選択結果.xmlファイル
150 ソフトウェア部品データベース
151 部品構成情報+ソフトウェア部品.xmlファイル
160 ユーザ

Claims (18)

  1. ソフトウェア構成情報および当該ソフトウェア構成情報に含まれる個々のソフトウェア部品構成情報に対応したソフトウェア部品を、ユーザが独自にタグを定義できるマークアップ言語によって単一の木構造に構造化して記憶したデータベース記憶部と、
    前記データベース記憶部から前記ソフトウェア構成情報を入力する構成情報入力部と、
    前記構成情報入力部が入力した前記ソフトウェア構成情報に基づいて部品選択画面を表示するとともに、ユーザによる部品の選択を受け付けるインターフェース部と、
    前記インターフェース部で前記ユーザから受け付けた部品選択結果に対応するソフトウェア部品を前記データベース記憶部から入力するソフトウェア部品入力部と、
    前記ソフトウェア部品入力部で入力したソフトウェア部品を組み合わせてプログラムを生成する生成部と、
    を有するプログラム自動構成装置。
  2. 請求項1記載のプログラム自動構成装置であって、
    前記インターフェース部は、前記ユーザから受け付けた部品選択結果を前記マークアップ言語による部分木として構成して出力し、
    前記ソフトウェア部品入力部は、前記インターフェース部で構成された前記部分木に対応するソフトウェア部品を前記データベース記憶部から入力するプログラム自動構成装置。
  3. 請求項1記載のプログラム自動構成装置であって、
    前記データベース記憶部は、前記木構造において複数の下位の前記ソフトウェア部品構成情報を有する上位の前記ソフトウェア部品構成情報に、前記下位のソフトウェア部品構成情報に共通するソフトウェア部品を対応付けて記憶するプログラム自動構成装置。
  4. 請求項2記載のプログラム自動構成装置であって、
    前記データベース記憶部は、前記木構造において複数の下位の前記ソフトウェア部品構成情報を有する上位の前記ソフトウェア部品構成情報に、前記下位のソフトウェア部品構成情報に共通するソフトウェア部品を対応付けて記憶し、
    前記生成部は、前記上位のソフトウェア部品構成情報から前記下位のソフトウェア部品構成情報を辿りながら前記ソフトウェア部品を抽出し、組み合わせて前記プログラムを生成するプログラム自動構成装置。
  5. 請求項1記載のプログラム自動構成装置であって、
    前記生成部は、前記ソフトウェア部品入力部で入力したソフトウェア部品を結合し、コンパイル可能なソースコードとして出力するプログラム自動構成装置。
  6. 請求項1記載のプログラム自動構成装置であって、
    前記データベース記憶部は、前記木構造における部分木をなす複数のファイルを互いに関連付けて記憶するプログラム自動構成装置。
  7. 請求項1記載のプログラム自動構成装置であって、
    前記データベース記憶部は、前記ソフトウェア構成情報として、選択必須の前記ソフトウェア部品構成情報と選択任意の前記ソフトウェア部品構成情報を区別して記憶するプログラム自動構成装置。
  8. 請求項1記載のプログラム自動構成装置であって、
    前記インターフェース部は、前記データベース記憶部の木構造に基づく階層をフォルダ形式で表示するプログラム自動構成装置。
  9. 請求項1記載のプログラム自動構成装置であって、
    前記データベース記憶部は、前記ソフトウェア構成情報として、分類タグを含むプログラム自動構成装置。
  10. 請求項1記載のプログラム自動構成装置であって、
    前記データベース記憶部は、前記ソフトウェア構成情報として、ソフトウェア部品に直接対応する構成情報を定義するタグを含むプログラム自動構成装置。
  11. 請求項1記載のプログラム自動構成装置であって、
    前記データベース記憶部は、前記ソフトウェア構成情報として、ソフトウェア部品の選択肢を定義するタグを含むプログラム自動構成装置。
  12. 請求項1記載のプログラム自動構成装置であって、
    前記データベース記憶部は、前記ソフトウェア構成情報として、ソフトウェア部品の設定パラメータを定義するタグを含むプログラム自動構成装置。
  13. 請求項1記載のプログラム自動構成装置であって、
    前記データベース記憶部は、前記ソフトウェア構成情報として、ソフトウェア部品の設定パラメータにおける設定内容の選択肢を定義するタグを含むプログラム自動構成装置。
  14. 請求項1記載のプログラム自動構成装置であって、
    前記データベース記憶部は、前記ソフトウェア構成情報として、ソフトウェア部品のソースコードが記述されたファイルを定義するタグを含むプログラム自動構成装置。
  15. 請求項1記載のプログラム自動構成装置であって、
    前記データベース記憶部は、前記ソフトウェア構成情報として、ソフトウェア部品のソースコードとなる文字列と当該文字列を挿入すべきファイルパス名を定義するタグを含むプログラム自動構成装置。
  16. 請求項1記載のプログラム自動構成装置であって、
    前記データベース記憶部に記憶されたソフトウェア構成情報は、構成情報の分類を示す構成情報要素と、ソフトウェア部品を示す構成情報要素と、ソフトウェア部品の設定パラメータを示す構成情報要素とが区別されて格納されているプログラム自動構成装置。
  17. 請求項1記載のプログラム自動構成装置であって、
    前記インターフェース部は、前記構成情報の分類を示す要素については分類を示す情報を表示し、前記ソフトウェア部品を示す要素についてはソフトウェア部品として表示し、前記ソフトウェア部品の設定パラメータを示す要素については設定パラメータとして表示するプログラム自動構成装置。
  18. ソフトウェア構成情報および当該ソフトウェア構成情報に含まれる個々のソフトウェア部品構成情報に対応したソフトウェア部品を、ユーザが独自にタグを定義できるマークアップ言語によって単一の木構造に構造化して記憶したデータベース記憶部から前記ソフトウェア構成情報を入力し、
    入力した前記ソフトウェア構成情報に基づいて部品選択画面を表示するとともに、入力デバイスでユーザに部品を選択させ、当該選択結果に対応するソフトウェア部品を前記データベース記憶部から入力し、
    入力したソフトウェア部品を組み合わせてプログラムを生成するプログラム自動構成方法。
JP2007083245A 2007-03-28 2007-03-28 ソフトウェア自動構成装置及び方法 Pending JP2008242873A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007083245A JP2008242873A (ja) 2007-03-28 2007-03-28 ソフトウェア自動構成装置及び方法
US12/014,892 US20080244520A1 (en) 2007-03-28 2008-01-16 Device and method for automatically configuring software

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007083245A JP2008242873A (ja) 2007-03-28 2007-03-28 ソフトウェア自動構成装置及び方法

Publications (1)

Publication Number Publication Date
JP2008242873A true JP2008242873A (ja) 2008-10-09

Family

ID=39796531

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007083245A Pending JP2008242873A (ja) 2007-03-28 2007-03-28 ソフトウェア自動構成装置及び方法

Country Status (2)

Country Link
US (1) US20080244520A1 (ja)
JP (1) JP2008242873A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010079566A1 (ja) * 2009-01-09 2010-07-15 日本電気株式会社 サービス提供装置、サービス提供システム、サービス提供方法および記憶媒体
US20200065870A1 (en) * 2010-12-28 2020-02-27 Amazon Technologies, Inc. Managing use of software components

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080163197A1 (en) * 2006-12-30 2008-07-03 Sap Ag Multi-product installation tool database architecture
US20090144701A1 (en) * 2007-11-30 2009-06-04 Norman Lee Faus Methods and systems for providing configuration data
KR101470319B1 (ko) * 2008-02-15 2014-12-08 삼성전자주식회사 컴포넌트 모델 기반의 가상 소프트웨어 플랫폼을 생성하는방법, 이를 이용하여 소프트웨어 플랫폼 아키텍처를검증하는 방법 및 그 장치
US20100125827A1 (en) * 2008-11-18 2010-05-20 International Business Machines Corporation Developing software code using parameterized annotations

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02105222A (ja) * 1988-10-13 1990-04-17 Matsushita Electric Ind Co Ltd ソフトウェア自動生成装置とソフトウェア自動生成方法
JPH06214768A (ja) * 1993-01-13 1994-08-05 Hitachi Software Eng Co Ltd プログラム部品作成方法及びプログラム自動生成方法
JPH07168711A (ja) * 1993-12-16 1995-07-04 Fuji Facom Corp プログラム管理方法
JP2002202886A (ja) * 2000-10-27 2002-07-19 Toshiba Corp アプリケーション開発システム、その方法およびアプリケーション開発プログラムおよびアプリケーション生成方法
JP2002229783A (ja) * 2001-01-31 2002-08-16 Toshiba Corp ソフトウェア構築支援システム、その方法およびソフトウェア構築支援プログラム
JP2004026083A (ja) * 2002-06-27 2004-01-29 Fujitsu Ten Ltd 車輌制御プログラム開発システム、車輌制御装置、及び記憶媒体
WO2005020071A1 (ja) * 2003-08-20 2005-03-03 Japan Tobacco Inc. プログラム生成システム、プログラム生成プログラムおよびプログラム生成モジュール
JP2007011507A (ja) * 2005-06-28 2007-01-18 Fuji Electric Holdings Co Ltd プログラムツリーの表示方法、およびプログラム生成システム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7114147B2 (en) * 2000-03-09 2006-09-26 Electronic Data Systems Corporation Method and system for reporting XML data based on precomputed context and a document object model
DE10121790B4 (de) * 2000-06-03 2006-11-23 International Business Machines Corp. Softwarekonfigurationsverfahren zur Verwendung in einem Computersystem
US7107574B1 (en) * 2002-03-07 2006-09-12 Mcafee, Inc. Managing computer program configuration data
US8589861B2 (en) * 2002-11-06 2013-11-19 Code Valley Corp Pty Ltd Code generation
WO2004079568A1 (en) * 2003-03-05 2004-09-16 Expert Consultants, Inc. System and method for building a component-based architecture
US8255888B2 (en) * 2003-09-30 2012-08-28 Sap Ag API derivation and XML schema derivation for developing applications
US7562307B2 (en) * 2004-05-21 2009-07-14 Computer Associates Think, Inc. Automated creation of web page to XML translation servers
US7447697B2 (en) * 2004-06-08 2008-11-04 Oracle International Corporation Method of and system for providing path based object to XML mapping
JP2008512794A (ja) * 2004-09-10 2008-04-24 グラフロジック インコーポレイテッド オブジェクト処理グラフアプリケーション開発システム
US9766953B2 (en) * 2004-12-16 2017-09-19 Openspan, Inc. System and method for non-programmatically constructing software solutions
US7716636B2 (en) * 2005-01-10 2010-05-11 Microsoft Corporation User interface for accessing and loading software components of a development set on a computer while other software components of the set are loading
US20060282820A1 (en) * 2005-06-09 2006-12-14 International Business Machines Corporation COBOL syntax for native XML file parsing and file generation
JP2007304685A (ja) * 2006-05-09 2007-11-22 Hitachi Ltd ソフトウェア部品の検索システム及びプログラム

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02105222A (ja) * 1988-10-13 1990-04-17 Matsushita Electric Ind Co Ltd ソフトウェア自動生成装置とソフトウェア自動生成方法
JPH06214768A (ja) * 1993-01-13 1994-08-05 Hitachi Software Eng Co Ltd プログラム部品作成方法及びプログラム自動生成方法
JPH07168711A (ja) * 1993-12-16 1995-07-04 Fuji Facom Corp プログラム管理方法
JP2002202886A (ja) * 2000-10-27 2002-07-19 Toshiba Corp アプリケーション開発システム、その方法およびアプリケーション開発プログラムおよびアプリケーション生成方法
JP2002229783A (ja) * 2001-01-31 2002-08-16 Toshiba Corp ソフトウェア構築支援システム、その方法およびソフトウェア構築支援プログラム
JP2004026083A (ja) * 2002-06-27 2004-01-29 Fujitsu Ten Ltd 車輌制御プログラム開発システム、車輌制御装置、及び記憶媒体
WO2005020071A1 (ja) * 2003-08-20 2005-03-03 Japan Tobacco Inc. プログラム生成システム、プログラム生成プログラムおよびプログラム生成モジュール
JP2007011507A (ja) * 2005-06-28 2007-01-18 Fuji Electric Holdings Co Ltd プログラムツリーの表示方法、およびプログラム生成システム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010079566A1 (ja) * 2009-01-09 2010-07-15 日本電気株式会社 サービス提供装置、サービス提供システム、サービス提供方法および記憶媒体
CN102272720A (zh) * 2009-01-09 2011-12-07 日本电气株式会社 服务提供设备、服务提供系统、服务提供方法、和存储介质
US8495565B2 (en) 2009-01-09 2013-07-23 Nec Corporation Service providing apparatus, service providing system, service providing method, and storage medium
US20200065870A1 (en) * 2010-12-28 2020-02-27 Amazon Technologies, Inc. Managing use of software components

Also Published As

Publication number Publication date
US20080244520A1 (en) 2008-10-02

Similar Documents

Publication Publication Date Title
US11163542B2 (en) Dynamically generating and rendering user interfaces based on data models
US10318628B2 (en) System and method for creation of templates
Matthes et al. Hybrid Wikis: Empowering Users to Collaboratively Structure Information.
US9229920B1 (en) Compound undo/redo manager for mixed model edits
JP4613214B2 (ja) ソフトウェア自動構成装置
US10002117B1 (en) Translating annotation tags into suggested markup
JP2008242873A (ja) ソフトウェア自動構成装置及び方法
JP2011128777A (ja) 操作監視装置
US20100169333A1 (en) Document processor
JP5576570B2 (ja) 業務仕様からワークフローを生成する方法、プログラム及びシステム
KR100261265B1 (ko) 웹 문서 저작을 위한 장치 및 그 운용 방법
JP2004326626A (ja) 構造化文書ファイル管理装置および構造化文書ファイル管理方法
EP1744271A1 (en) Document processing device
JP2001344230A (ja) マルチメディア文書生成装置及び方法、及びこれらをコンピュータに実行させるプログラムを記録した記録媒体
Gharibi et al. ArchFeature: Integrating features into product line architecture
KR20140059999A (ko) 조사 보고서 작성 장치 및 조사 보고서 작성 디스플레이 방법
US20230367471A1 (en) System and Method for Specifying Properties for a Protocol-Compliant Uniform Resource Locator
JP5589396B2 (ja) レイアウト支援装置、レイアウト支援方法、プログラム
US10922476B1 (en) Resource-efficient generation of visual layout information associated with network-accessible documents
US20230350965A1 (en) System and Method for Validating a Protocol-Compliant Uniform Resource Locator
JP2008217170A (ja) 情報処理装置およびプログラム
Voborník Configuration Frameworks
Tamayo et al. OGC Schemas Browser: Visualizing OWS’XML Schemas
Garshol et al. Extending Content Management with Topic Maps–Ontopia/Liferay Integration
JP2006048561A (ja) プログラム開発支援装置およびドキュメント自動生成処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090706

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090714

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090914

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100622