(58)【調査した分野】(Int.Cl.,DB名)
ソフトウェアの開発のために導出された要求事項と機能をコードとして実現するとき、プログラミング言語で利用されるソフトウェアコードを視覚的に実現するための方法であって、
コードブロック生成部によって、前記要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成する段階と、
コードブロック設定部によって、ユーザーから入力された情報に基づいて、前記コードブロック内に含まれるコードブロック属性または内部属性コードを設定する段階とを含み、
前記コードブロックは下位のコードブロックである平叙文コードブロック、繰り返し文コードブロックおよび条件文コードブロックを含み、
前記コードブロック属性または内部属性コードを設定する段階は、前記コードブロックに対する機能情報および前記機能情報に対する説明情報を含む前記コードブロック属性と、制御フローの設定のために条件の入力または繰り返し文の入力に使用される条件文の設定を含む前記内部属性コードとを前記コードブロックに含ませる段階を含み、
前記コードブロック属性または内部属性コードを設定する段階は、前記コードブロック生成部を介して複数のコードブロックが生成される場合、設定された前記コードブロック属性または内部属性コードに基づいて前記複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類する段階を含み、
前記コードブロック属性または内部属性コードを設定する段階は、前記階層的なツリー構造または階層的なブロック構造におけるコードブロックの位置に基づいて、自動的にブロック番号を割り当てる段階を含むことを特徴とする、ソフトウェアコードの視覚的実現方法。
コードブロック変換部によって、ユーザーからの要請があれば、前記コードブロックを、予め設定されたプログラミング言語に対応するコードに変換する段階をさらに含むことを特徴とする、請求項1に記載のソフトウェアコードの視覚的実現方法。
前記コードブロック属性または内部属性コードを設定する段階の途中または後、ユーザーから前記コードブロックに対する表示要請があれば、ディスプレイ部を介して前記コードブロックに対する機能情報、説明情報および内部属性コードを表示する段階をさらに含むことを特徴とする、請求項1に記載のソフトウェアコードの視覚的実現方法。
前記コードブロック属性または内部属性コードを設定する段階は、前記コードブロックの位置、ブロック番号、管理番号、インデックスおよび前記内部属性コードを前記コードブロックに含ませる段階を含むことを特徴とする、請求項1に記載のソフトウェアコードの視覚的実現方法。
前記ブロック番号を割り当てる段階で割り当てられたブロック番号は前記コードブロックに対する制御フローの順序決定に用いられ、前記ブロック番号に基づいて順次コーディングが行われることを特徴とする、請求項1に記載のソフトウェアコードの視覚的実現方法。
前記コードブロックは、前記階層的なツリー構造または階層的なブロック構造における位置によって上位コードブロックと下位コードブロックに分類され、上位コードブロックに含まれている下位コードブロックの入出力引数は特性によってグループ化されてインデックスに設定することを特徴とする、請求項1に記載のソフトウェアコードの視覚的実現方法。
前記上位コードブロックは、一つ以上の下位コードブロックと前記下位コードブロックの変数宣言に対する内部属性コードを含み、前記一つ以上の下位コードブロックは、前記上位コードブロックから入力引数を受信し、前記上位コードブロックへ出力引数を返すことを特徴とする、請求項6に記載のソフトウェアコードの視覚的実現方法。
前記コードブロック内に含まれるコードブロック属性または内部属性コードを設定する段階は、既に生成されたコードブロックと前記コードブロックとの関係を包含関係または並列関係に設定する段階を含むことを特徴とする、請求項1に記載のソフトウェアコードの視覚的実現方法。
前記コードブロック属性または内部属性コードを設定する段階の後、コードブロック検証部によって、ランダム変数を用いてまたは前記コードブロック内の条件文に入力または出力される変数を用いて前記コードブロックを検証する段階をさらに含むことを特徴とする、請求項1に記載のソフトウェアコードの視覚的実現方法。
前記コードブロック属性または内部属性コードを設定する段階の後、コードブロック権限設定部によってコードブロックのアクセス権限を設定する段階をさらに含むことを特徴とする、請求項1に記載のソフトウェアコードの視覚的実現方法。
ソフトウェアの開発のために導出された要求事項と機能をコードとして実現するとき、プログラミング言語で利用されるソフトウェアコードを視覚的に実現するための装置であって、
前記要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成するコードブロック生成部と、
ユーザーから入力された情報に基づいて、前記コードブロック内に含まれるコードブロック属性または内部属性コードを設定するコードブロック設定部とを含み、
前記コードブロックは下位のコードブロックである平叙文コードブロック、繰り返し文コードブロックおよび条件文コードブロックを含み、
前記コードブロック設定部は、前記コードブロックに対する機能情報および前記機能情報に対する説明情報を含む前記コードブロック属性と、制御フローの設定のために条件の入力または繰り返し文の入力に使用される条件文の設定を含む前記内部属性コードとを前記コードブロックに含まれ、
前記コードブロック設定部は、前記コードブロック生成部を介して複数のコードブロックが生成される場合、設定された前記コードブロック属性または内部属性コードに基づいて前記複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類され、
前記コードブロック設定部は、前記階層的なツリー構造または階層的なブロック構造におけるコードブロックの位置に基づいて、自動的にブロック番号を割り当てることを特徴とする、ソフトウェアコードの視覚的実現装置。
ユーザーからの要請があれば、前記コードブロックを、予め設定されたプログラミング言語に対応するコードに変換するコードブロック変換部を含むことを特徴とする、請求項12に記載のソフトウェアコードの視覚的実現装置。
前記コードブロックは、前記階層的なツリー構造または階層的なブロック構造における位置に基づいて上位コードブロックと下位コードブロックに分類されることを特徴とする、請求項12に記載のソフトウェアコードの視覚的実現装置。
前記上位コードブロックは、一つ以上の下位コードブロックを含み、前記一つ以上の下位コードブロックは、前記上位コードブロックから入力引数を受信し、前記上位コードブロックに出力引数を返すことを特徴とする、請求項14に記載のソフトウェアコードの視覚的実現装置。
【発明を実施するための形態】
【0031】
以下、本発明の属する技術分野における通常の知識を有する者が本発明の技術的思想を容易に実施することができる程度に詳細に説明するために、本発明の最も好適な実施例を添付図面に基づいて説明する。まず、各図面の構成要素に参照符号を付するにあたり、同一の構成要素に対しては、たとえ他の図面上に表示されても、可能な限り同一の符号を持つようにしていることに留意すべきである。また、本発明を説明するにあたり、関連した公知の構成または機能に関する具体的な説明が本発明の要旨を曖昧にするおそれがあると判断される場合には、その詳細な説明は省略する。
【0032】
図1はソフトウェアコードの視覚的実現装置を介してソフトウェアコードを実現する方法を説明するための図である。
図2はディスプレイ部に表示されるコードブロックの構造を説明するための図である。
図3はコードブロックのデータ共有について説明するための図である。
図4はコードブロックと、コードブロックを用いてソフトウェアコードを実現する方法を説明するための図である。
図5は 生成されたコードブロックをコードに変換する過程を説明するための図である。
図6および
図7はコードブロックの関係を説明するための図である。
図8はソフトウェアコードの視覚的実現装置を説明するための図である。
図9はソフトウェアコードの視覚的実現装置に含まれているコードブロック設定部を説明するための図である。
図10〜
図17は格納部に格納されたコードブロックの種類を説明するための図である。
図18は複数のコードブロックにブロック番号を割り当てる方法を説明するための図である。
図19はインデックスが追加されたコードブロックが表示される例示を示す図である。
図20はコードブロック変換部を介してコードブロックをコードに変換する例示を説明するための図である。
図21はソフトウェアコードの視覚的実現方法を説明するための図である。
図22はソフトウェアコードの視覚的実現方法においてユーザーの入力に応じてコードブロック情報を設定する段階を説明するための図である。
【0033】
以下、本発明の実施形態によるソフトウェアコードの視覚的実現方法及び装置を添付図面に基づいて詳細に説明する。
【0034】
図1に示すように、ユーザーはプログラミングツールを用いてソフトウェアコーディングを行う。ここで、ユーザーは、従来の一つのラインごとにコーディングを行う方式ではなく、図面符号20で示されるように、コードブロック単位でコーディングを行うことができる。さらに、それぞれのコードブロックは互いに独立している。
【0035】
ここで、コードブロックは、ソフトウェアを構成するコンポーネント(Component)のいずれか一つを意味する。以下ではコードブロックについて述べるが、本発明は、コンポーネントの一実施形態であるコードブロックに限定されず、ソフトウェアを階層的に構造化することが可能なコンポーネント全般に関するものである。
【0036】
コードブロックは、ソフトウェアの機能をブロック単位で区分したものである。このようなコードブロックは、図面符号30で示されるように、機能情報31、説明情報32、コード情報33および管理番号34を含んで構成できる。上述したように、従来のコーディング方式は、コーディングが1次元的に行われるので、既に実現されたソフトウェアコードに対する可読性に劣り、各コードの意味するところが不明確であるという問題点があった。これに対し、本発明のコードブロックは、図面符号30で示されるように、コードブロックごとに、各コードブロックが意味する機能情報31、説明情報32、コード情報33および管理番号34をすぐに確認することができるので、ユーザーまたはオペレーターが、当該部分の意味するところが何なのか直観的かつ明確に確認することができるという利点がある。ここで、機能情報31、説明情報32、コード情報33および管理番号34が意味するところは、次のとおりである。
【0037】
機能情報31は、ソフトウェアを実現するために導出された、またはユーザーの要求事項を具体化して設計された機能に対する説明を示す。すなわち、機能情報31は、当該コードブロックに対する包括的な情報が含まれ得る。
【0038】
ここで、ユーザーの要求事項は、階層構造(Layered)を有し、制御段階を持たない。さらに、要求事項はコードブロックで自分の役割を担当することになる。また、要求事項は、それぞれ自分の特性に応じてインデックス(Index)を持つことができる。ひいては、要求事項はグループを形成することができ、このようなグループもインデックスとして表示できる。
【0039】
説明情報32は、前述した機能情報に対する詳細なまたは具体的な説明を含むことができる。ここで、説明情報32に含まれる情報には、例えば、機能に対する詳細な説明、絵および図表などのように多様な形態の情報が含まれ得る。すなわち、このような説明情報32を用いて、ユーザーはソフトウェアコードをより直観的に理解することができる。
【0040】
コード情報33は、ソフトウェアを実現するコード、または当該コードブロックを構成する下位コードブロックなどに対する情報を含むことができる。ここで、下位コードブロックに対する説明は
図4を参照して後述する。
【0041】
管理番号34は、ユーザーまたはオペレーターが各コードブロックに対する管理を行うための番号であって、ユーザーまたはオペレーターが与える番号を示す。
【0042】
また、図面符号20で示されるように、コードブロックは複数個が階層的なツリー構造で実現できる。また、このようなコードブロックは、このような階層的なツリー構造だけでなく、
図2に示すように階層的なブロック構造で実現できる。これらの階層的なツリー構造または階層的なブロック構造で実現されたコードブロックは、前述したように、ソフトウェアを構成する機能と一対一で対応して実現される。つまり、機能をコードブロック構造に構造化し、コードブロックの内部に定義された機能をコーディングしてブロック間のデータ共有と制御フローを明確に定義すると、コードブロックで構成されたコードは一般的なプログラミング言語で表現できる。
【0043】
次に、ブロック間のデータ共有と制御フローについてより詳細に説明する。データ共有は下位コードブロックが必要とする入出力データを、上位コードブロックがブロック内部のデータとしてすべて所有するように構造化することであり、制御フローは階層的なブロック構造で同じ階層間にのみ存在するようにすることにより、制御フローとデータ流れを分離するのである。言い換えれば、1つのコードブロック内に複数の下位コードブロックが存在すると仮定すると、すべての下位コードブロックは、上位コードブロックでそれぞれが必要とするすべてのデータにアクセスすることが可能なので、まるで全ての入出力データがグローバル変数のように運用でき、制御フローは下位コードブロック間にのみ定義すればよい。このような構造はすべての階層で適用され、各階層で定義された制御フローは下位コードブロック間で定義された制御フローに連係することにより、コードブロックは順序付けされる。
【0044】
ここで制御フローを決定する方法では、上位コードブロックの順序が定められることにより、下位コードブロックは上位コードブロックの定められた順序に従って順序が決められる。つまり、コードブロックに対するブロック番号、すなわち、1、1−1、1−1−1、1−1−2、1−2、1−2−1、1−2−2、2、2−1などの順に順序が決められ得る。
【0045】
また、データ共有方法について、上位コードブロックは下位コードブロックが必要とする入出力データを必ず所有し、このような特徴はすべての階層に適用できる。たとえば、ソフトウェアが機能1および機能2を含むと仮定する。また、ここで、機能1は、細部的に機能1−1と機能1−2を含むと仮定する。このような機能は、また、
図1の図面符号20および
図2に示されるように、機能1がコードブロック1、機能2がコードブロック2に対応して実現できる。ここで、制御フローは機能1、機能1−1、機能1−2および機能2の順となる。
【0046】
図3は本発明の一実施形態によるコードブロックのデータ共有を示す概念図であり、具体的に定義されたデータ領域内においてコードブロック間でデータを共有する概念を示す。
【0047】
コードブロックは上位コードブロックと下位コードブロックに区分できる。ここで、上位コードブロックは、下位コードブロックが共有すべきデータを定義し、管理しなければならない。すなわち、上位コードブロックは、下位コードブロックが必要とするすべての入出力データを所有していなければならない。これは、例えば、一般的なプログラミング言語においてデータをグローバル変数として定義し、各地域(下位コードブロック)でグローバル変数を利用するのと同じ原理である。
【0048】
図3に示すように、上位コードブロックは少なくとも一つの下位ブロックで構成された領域のデータを管理し、このような構造は継続的に階層化できる。これは、たとえば、C言語の場合、複数の中括弧(‘{’または‘}’)を用いて無限に複数層のローカル変数をサポートし、また、上位コードブロックが持つローカル変数は下位コードブロックでアクセスすることが可能なローカル変数のような役割を果たすことができる。
【0049】
以下、
図4を参照して、本発明の一実施形態によるコードブロック、およびコードブロックを用いてソフトウェアコードを実現する方法を説明する。
【0050】
つまり、コードブロックを用いてソフトウェアを実現するためのツールにおいて、新しいコードブロックを追加する行為は、当該コードブロックが所属する位置に新たなコードブロックを生成することを示す。コードブロックを実現するサポートツール上で最初のコードブロックを追加しなくても、最上位のコードブロックは常に存在する。たとえば、Cプログラミング言語における最上位のコードブロックはMain()関数として定義できる。また、コードブロックが追加されると、選択されたコードブロックの種類に応じて条件文の定義、入出力変数の義、コードブロックの順序(ブロック番号)定義、当該コードブロックの変数宣言が要求される。
【0051】
図4に示すように、ユーザーは、コードブロックの内部属性コードをコーディングウィンドウを介して実現することができる。具体的に、コードブロックは、コーディングウィンドウを介してコードブロックの変数宣言/コードブロックの入力変数割り当て/条件文/当該コードブロックの機能実現コード/コードブロックの出力変数割り当ての内容を別個に管理することができ、コード実現の際に、当該位置に関連コードを位置させることができる。このようなコーディングウィンドウは、変数宣言ウィンドウ41、入力変数割り当てウィンドウ42、条件文ウィンドウ43、コード入力ウィンドウ44および出力変数割り当てウィンドウ45のうちの少なくとも一つを含んで構成できる。つまり、コーディングウィンドウは、前記ウィンドウをすべて利用するのではなく、ユーザーが必要なウィンドウを選択してコーディングを行うことができる。
【0052】
ここで、変数宣言ウィンドウ41は、コードブロックの内部で利用されるすべての変数(すなわち、コードブロックの機能実現のために使用されるすべての変数)の宣言に使用され、入力変数割り当てウィンドウ42は、入力変数に対する割り当てに使用される。また、条件文ウィンドウ43は、条件文(例えば、If、Switch制御文など)コーディング、繰り返し文(例えば、While、For、Do while制御文など)コーディングで条件部分を宣言するために使用される。また、コード入力ウィンドウ44は、平叙文コーディング、条件文コーディング、繰り返し文コーディングで実質的に機能の実行を定義するために使用される内部属性コードの入力に使用される。また、最終的に、出力変数割り当てウィンドウ45は当該コードブロックから上位コードブロックへ値を返すために使用される。
【0053】
上述したように、コードブロックを追加すると、当該コードブロックの内部属性コードにコードブロックの変数宣言/コードブロックの入力変数割り当て/条件文/コードブロックの出力変数割り当て情報が管理できる。当該コードブロックの主要内容は当該コードブロックの機能実現コードであるため、ユーザーまたはオペレーターはコードブロックの内部属性情報をコードブロックの位置および役割に応じて定義することができるので、ユーザーまたはオペレーターは主要内容である機能実現コードの完成に対する集中が可能となる。
【0054】
また、
図4に示されている変数の宣言と割り当てのためのウィンドウ41、42、43、45は別個の領域で当該内容の定義が可能であり、これは当該コードブロックの機能実現のためのコード(すなわち、コード入力ウィンドウを介して入力された内部属性コード)とは別に管理できる。コードブロックを追加するときに、コード入力ウィンドウ44の部分を除いた残りの部分は、当該コードブロックの内部属性情報領域に機能を定義して当該コードブロックを使用することができる。コードブロックの内部属性情報で管理される内容も、ソフトウェアコードへの変換時に
図4と同じ順序でコーディングできる。
【0055】
このようにコーディングウィンドウを介して設定されたコードブロックの内部属性コードのユーザーによって、予め設定されたプログラミング言語に変換できる。
【0056】
以下、
図5を参照して、本発明の一実施形態によって生成されたコードブロックをコードに変換する過程を述べる。より具体的に、
図5を参照して、上位コードブロックが下位コードブロックを含む場合、これらのコードブロックをコードに変換する過程について述べる。
【0057】
コードで表現されるコードブロックは、C言語の関数(Function)に類似する特性を有することができる。すなわち、C言語の関数は、関数領域の内部で使用されるローカル変数が存在し、関数で使用される引数を関数の外部から持ってくることができる。そして、結果値として特定の値を返すことができる。
【0058】
C言語における関数は、ブラックボックスのようなもので、関数の内部でどのような行為を行うかについて、データ共有の観点から、特定の入力値を入力したときに特定の結果を導出するように思われる。つまり、関数は、外部の引数を入力すると、約束された行為を行ったり結果値を返したりするものなので、自分だけのデータ領域を持つことができる。また、このような関数は、順序に従って順次呼び出されるとき、その機能を行うソフトウェアコンポーネントに区分できる。
【0059】
上述したように、ブロック間のデータ共有および制御フローについて説明すると、データ共有は下位コードブロックが必要とする入出力データを、上位コードブロックがブロック内部のデータとしてすべて所有するように構造化することであり、制御フローは階層的なブロック構造において同じ階層間にのみ存在するようにすることにより、制御フローとデータ流れを分離するのである。言い換えれば、一つのコードブロック内に複数の下位コードブロックが存在すると仮定すると、すべての下位コードブロックは上位コードブロックでそれぞれが必要とするすべてのデータにアクセスすることが可能なので、まるで全ての入出力データがグローバル変数のように運用でき、制御フローは下位コードブロック間にのみ定義すればよい。このような構造はすべての階層で適用され、各階層で定義された制御フローは下位コードブロック間で定義された制御フローに連係することにより、コードブロックは順序付けされる。
【0060】
ここで制御フローを決定する方法とデータ共有方法は詳細に上述されているので、重複部分に関する説明は省略する。
【0061】
コードブロックは、このようなデータ領域と制御フローの特性を有することができる。具体的に、C言語の関数機能とコードブロックとの相違点は、関数は特定の時点に複数のコードで共通に呼び出して使用可能であるが、コードブロックは特定の位置に所属して独立して決められた役割を果たすことにある。
【0062】
たとえば、管理番号3のコードブロックが存在し、このようなコードブロック内に管理番号32のコードブロックが所属していると仮定する。この場合、管理番号3のコードブロック内に所属している32コードブロックは、3コードブロックから入力引数を受けて演算を実行した後、約束された出力引数をさらに3コードブロックに返す。ここで、入出力データ以外の32コードブロック内のすべての引数と行為は32コードブロック内で独立して実行できる。また、これは上位コードブロックとしての3コードブロックだけでなく、他のいかなるコードブロックにも影響を与えない。
【0063】
C言語において上記の特性を有するコードを関数を用いて実現することができるが、C言語では関数の内部に関数を宣言することをサポートしないため、本発明では中括弧(Braces、{})を用いてコードブロックを実現する。中括弧はCコード内で領域をブロックに区分する方法の一つであって、中括弧の内部に宣言された変数は当該領域でのみ認識されるローカル変数となる。このような事項は、
図5を参照すればより明らかになる。すなわち、上位コードブロックは、下位コードブロックを含む構造であって、中括弧で区分されて表現できる。
【0064】
また、上位中括弧(上位コードブロック)に宣言された変数(入力引数)は、下位の中括弧(下位コードブロック)で宣言された変数に再び割り当てさせて演算を行い、最終的に、結果値をさらに上位中括弧(上位コードブロック)に宣言された変数(出力引数)として返す方法によりコードブロックが実現される。すなわち、コードブロックの内部で処理される行為は、いずれもコードブロックのローカル変数を用いて行われるので、他のコードブロックと独立した関係を維持することができる。コードブロックは、次の特徴を満足すると、いかなる方法でも生成が可能である。
【0065】
また、前記コードブロックの関係は、前述したように包含関係であってもよいが、並列関係への形成も可能である。このような事項は、前述したコードブロックが包含関係で実現された
図6、およびコードブロックが並列関係で実現された
図7を参照すると、より明らかになる。
【0066】
すなわち、
図6に示されている包含関係は、少なくとも1つのコードブロックが他のコードブロック内に存在するものと定義できる。包含関係にあるコードブロックにおいて、上位コードブロックは、上位コードブロックで使用される変数の宣言以外に、他の別個のコードを持たない。これにより、包含関係にあるコードブロックの制御フローは、上位ブロックの変数宣言部分がまずコーディングされ、その後、含まれているコードブロックのコードを位置させればよい。したがって、後述する並列関係においてコードブロックの制御フローによって上位コードブロックのコードの位置が決定されると、下位コードブロックのコードはその範囲内で下位コードブロック間のコード順序を決定することにより、ソフトウェアの全体コードを構成することができる。
【0067】
また、
図7に示すように、コードブロックが包含関係におらず同じ上位コードブロックに含まれている関係を並列関係と定義する。並列関係にあるコードブロックは順序付けされなければならない。例えば、
図7で表現されているように、1つのコードブロックをコードブロック1、他のコードブロックをコードブロック2にして制御フローを定義する場合、コードブロック形態がソフトウェアコードに変換されると、これは上述した
図5のような形態でなされ得る。
【0068】
以下、
図8を参照して、本発明の一実施形態に係るソフトウェアコードの視覚的実現装置について述べる。
図8は本発明の一実施形態に係るソフトウェアコードの視覚的実現装置を示すブロック図である。
図8に示すように、本発明の一実施形態に係るソフトウェアコードの視覚的実現装置は、コードブロック生成部110、コードブロック設定部120、コードブロック権限設定部130、コードブロック検証部140、およびコードブロック変換部150を含んで構成できる。以下、これらの構成について具体的に述べる。
【0069】
コードブロック生成部110は、ソフトウェアの実現について、顧客の要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成する機能を行う。
【0070】
さらに詳しくは、コードブロック生成部110は要求事項(Requirement)を導き出し、このような要求事項は1つのコードブロックとして実現できる。ここで、要求事項は、階層構造(Layered)を有し、制御段階を持たない。さらに、要求事項は、実現されるべきコードでそれぞれ自分の役割を担当する。また、要求事項はそれぞれ自分の特性に応じてインデックス(Index)を有することができる。ひいては、要求事項はグループを形成することができ、このようなグループもインデックスとして表示できる。
【0071】
コードブロック生成部110は、要求事項を用いてコードブロックを生成する。この際、コードブロックは制御段階を持つことができ、それぞれの要求事項はコードブロックに割り当てられ得る。ここで、コードブロックに対する生成は2つの方式に大別される。すなわち、第1の生成方法は、例えば、
図4に示されているコードウィンドウ内に、すべての属性が空いているコードブロックを生成する方式である。また、第2の生成方法は、格納部83に既に格納されたコードブロック形態を呼び出してコードブロックを生成する方式である。すなわち、格納部83は、多様な形態のコードブロックを含むことができる。具体的に、格納部83は、制御フローに従って平叙文コードブロック、繰り返し文コードブロックおよび条件文コードブロックを含むことができる。ここで、格納部83に格納されたコードブロックの種類は次のとおりである。
【0072】
ここで、平叙文コードブロックに対する例示は
図10に示されている。
図10はいわゆるGoto Nextコードブロックを示し、これは一般的なコードブロックであって、別個の制御フローが存在しないコードブロックを示す。具体的に、Goto Nextコードブロックは、一般的なコードブロックであって、当該コードブロックの後に次の順序のコードブロックが存在するように指定することができる。
【0073】
繰り返し文コードブロックに対する例は
図11〜
図13に示されている。すなわち、
図11はForコードブロック、
図12はWhileコードブロック、
図13はDo whileコードブロックをそれぞれ示す。
図11〜
図13に記載された繰り返し文コードブロックは、条件が満足される間、当該コードブロックの内部で一定の行為を繰り返し行う繰り返し文の機能を実行するコードブロックである。ところが、コードブロックの観点からみると、繰り返し文の内部行為が繰り返し行われるとしても、結局はコードブロックの順序にすべきことを処理しているのと同様である。つまり、当該コードブロックが1回実行されるものとみなされる。
【0074】
条件文コードブロックに対する例示は
図14及び
図15に示されている。すなわち、
図14はSwitchコードブロックを、
図15はIfコードブロックをそれぞれ示す。
図14及び
図15に記載された繰り返し文コードブロックは、入力された変数が特定の条件に該当するとき、該当する機能を行うコードブロックを示す。
【0075】
また、コードブロックは後述の関数コードブロックをさらに含むことができる。関数コードブロックは関数を用いて実現されるコードブロックを示す。これに対する例示は
図16及び
図17に示されている。このような関数コードブロックは、C言語における関数使用と同様に、最上位ブロックで宣言し定義して使用できる。
図16に示すように、関数コードブロックは、他のコードブロックとは、ローカル変数宣言/入力変数割り当て/演算実行/結果返し機能がすべて同じであるが、さらに関数名(引数)宣言とブロックの名称として関数名(引数)を使用することが相違する。このような理由から、関数コードブロックは最上位ブロックで宣言することができる。
【0076】
図8に示されているコードブロック設定部120は、ユーザーから入力された情報に基づいて、前記コードブロック内に含まれるコードブロック属性またはコードを設定する機能を行う。ここで、コードブロック属性は、先に
図1を参照して記載したように、当該コードブロックに対する機能情報と説明情報を含む。つまり、このようなコードブロック属性は、1次元的にコーディングが行われて可読性に劣る従来のコーディング方式の問題を解消するために案出されたもので、ソフトウェアを実現するときに導出された要求事項を具体化して設計された機能の簡略な説明および詳しい説明が含まれる。具体的には、機能情報ソフトウェアを実現するために導出された、またはユーザーの要求事項を具体化して設計された機能についての説明を示し、説明情報は前述した機能情報についての具体的な説明を含むことを示す。ここで、説明情報に含まれる情報は、例えば、機能に対する詳細な説明、絵および図表などのように多様な形態の情報が含まれ得る。このようなコードブロック属性を用いて、従来のコーディング方式で1次元的に表現される方式、例えば注釈などとは異なり、ユーザーによるより直観的な理解が可能となる。
【0077】
また、内部属性コードは、
図4を参照して説明したように、コーディングウィンドウを介してユーザーから設定できる。ここで、コーディングウィンドウは変数宣言ウィンドウ、入力変数割り当てウィンドウ、条件文ウィンドウ、コード入力ウィンドウ、および出力変数割り当てウィンドウを含んで構成でき、これらのそれぞれについては先に詳細に叙述されたので、重複部分に対する叙述は省略する。このように設定されたコードブロック属性と内部属性コードは、ユーザーから当該コードブロックに対する表示要請があれば、ディスプレイ部82を介してコードブロックに対する機能情報、説明情報及び内部属性コードが表示される。
【0078】
また、コードブロック設定部120は、コードブロック生成部110を介して複数のコードブロックが生成される場合、ユーザーの設定に基づいて、複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類することができる。これに対する例示は
図1及び
図2に示されている。このように分類された階層的な構造は、ユーザーまたはオペレーターによって直観的にソフトウェアの分析に役立てることができるという利点がある。また、このような構造化を介して、例えば、追ってのソフトウェアの編集においても管理がより容易になるという利点がある。
【0079】
たとえば、ユーザーまたはオペレーターが階層的なツリー構造または階層的なブロック構造に含まれている複数のコードブロックのうちのいずれかを他の位置にコピーする場合を仮定する。すなわち、コードブロックを用いてソフトウェアを構成する場合、同じ機能を行うものの、他の位置に所属するコードブロックが存在することもあり、類似する機能を有するコードブロックが存在することもある。このとき、コードブロックをコピーして他のコードブロックの下に貼り付けることができる。コードブロックを貼り付けると、管理番号/入力変数宣言/出力変数宣言は消去され、ブロック番号は当該コードブロックの位置に基づいて自動的に割り当てられる。コードブロックをコピーして保存されるデータは、機能(要求事項)/記述とコードの内容中のコードの内部変数宣言/条件/機能実現コードに区分される。コピーされるコードブロックが選択されると、選択されたコードブロックの下位コードブロックも一緒にコピーされる。コピーされるコードブロックの下位コードブロックのデータはすべてそのまま維持できる。
【0080】
また、コードブロックは、階層的なツリー構造または階層的なブロック構造における位置によって、上位コードブロックと下位コードブロックに分類できる。また、前述したように、下位コードブロック内に含まれている内部属性コードは、上位コードブロックに対して独立して実現され、上位コードブロックは、内部に変数宣言機能のみを実行するだけで、追加のコードを含まない。つまり、上位コードブロックは、下位コードブロックが必要とする共有データ(下位コードブロック間でデータを共有することができるようにデータバスの役割を行う)のみを含み、一つ以上の下位コードブロックのみを含み、一つ以上の下位コードブロックは上位コードブロックから入力引数を受信し、上位コードブロックへ出力引数を返す。
【0081】
また、コードブロック設定部120は、階層的なツリー構造または階層的なブロック構造におけるコードブロックの位置に基づいて、自動的にブロック番号を割り当てることができる。すなわち、例えば、1つのコードブロック内に2つのコードブロックが含まれている場合を仮定する(
図18参照)。
図18に示すように、最上位コードブロックはブロック番号が1に設定されると仮定する。ここで、このような最上位コードブロックは2つの下位コードブロックを含んでおり、これらの下位コードブロックはそれぞれブロック番号が11および12に割り当てられ得る。また、ここでブロック番号12のコードブロックが例えば2つのコードブロックをさらに含むと、これらの2つのコードブロックはそれぞれ121および122のブロック番号が割り当てられ得る。ここで、ブロック番号の割り当て方法は、単に例示に過ぎず、他の様々な方式で応用可能である。また、ここで、ブロック番号11、121および122のコードブロックはそれぞれ最下位コードブロックとなるので、これらは内部属性コードを含んで実現できる。これに対し、ブロック番号1および12のコードブロックはそれぞれ下位コードブロックを含むので、これらは変数宣言のためのコードの他に別のコードを含まなくなる。
【0082】
また、コードブロック設定部120は、コードブロックに対するインデックスをさらに設定することができる。つまり、ソフトウェアが数個のコードブロックのみを含む場合、管理が容易であるが、実際の実現上では、数多くのコードブロックが一つのソフトウェアの実現のために使用できる。この場合、ユーザーまたはオペレーターに、より直観的に当該コードブロックが表すところを知らせるために、当該コードブロックにインデックスを追加することができる。これにより、それぞれのコードブロックはインデックス/機能(要求事項)/記述/コードを管理番号およびブロック番号を用いて管理することができ、必要に応じて、一定の領域ごとにまたは全体構成に対してインデックス/機能(要求事項)/記述/コードでそれぞれ表現できる。これに対する例示は
図19に示されている。
【0083】
すなわち、
図19に示すように、ソフトウェアで計算機を実現する場合が存在しうる。このような計算機は、ユーザーインターフェースを表すコードブロック、演算子を表すコードブロック、およびグラフィックを表すコードブロックを含むことができる。この際、このようなコードブロックの表すところが明らかになるように、コードブロック上にこのようなインデックス機能を追加することにより、ユーザーまたはオペレーターがより容易にプログラミングを実行することができるようになる。
【0084】
また、このようなインデックスは、コードブロックに対するインデックスだけでなく、上位コードブロックで管理する変数に対するインデックスも含むことができる、すなわち、上位コードブロックの場合、多段階の下位コードブロックが含まれてもよく、場合によっては相当多い量の変数を管理することができる。このような場合、C言語の例を挙げて説明すると、変数を構造体を用いてグループ化することができ、このような構造体もインデックスを介して管理することにより、より明確にソフトウェアを外形的に管理することができる。
【0085】
コードブロック権限設定部130は、他のユーザーからのアクセス権限を設定するためのコードブロックのアクセス権限を設定する機能を行う。具体的には、コードブロック権限設定部130は、全体コードブロック構造におけるそれぞれの、少なくとも一部、または全体コードブロックに対して権限設定が可能である。選択されたコードブロックは、下位コードブロックが含まれるように設定することができ、下位コードブロックが含まれないようにセキュリティ設定が可能である。セキュリティが設定されたコードブロックは、機能/説明/機能実現コードを権限のある者以外には見ることができないように設定し、或いは修正権限が制限できる。このようなアクセス権限設定は、機能/説明/内部属性コードに対して個別設定も可能である。アクセス権限設定は、一部のコードブロックのみが他人に見えるように設定することもできる。コードブロックは、多段階(見えないように設定/見えるが、修正できないように設定/入出力変数およびメッセージは修正ができないように設定/すべてのデータの修正ができるように設定)のセキュリティ設定も可能である。特定のコードブロックの変数およびメッセージは、管理者によって定められたコードブロックでのみ使用されるようにセキュリティ設定する機能がサポートされる。
【0086】
コードブロック検証部140は、ランダム変数を用いて、コードブロックに含まれている入力変数を繰り返し入力してコードブロックを検証する機能を行う。たとえば、ユーザーが検証のためのコードブロックを選択すると、選択されたコードブロックの下位コードブロックと一緒に検証単位となる。その後、ディスプレイ部82上に、入出力引数で構成された部分と入出力引数の条件部分で構成された画面が表示される。ここで、条件部分に入出力引数それぞれに対する入出力条件を明示して検証を行うと、条件に明示された範囲内でランダム変数を用いて入力変数を持続的に入力することにより、オペレーターが止まるまで自動的に多様な変数の入力を介してコードを検証することができる。
【0087】
ここで、検証方法は、ランダム変数を利用するか、或いは条件内のすべての値に対して順次変数の入力および出力値を検証する方式で行われ得る。試験を介してエラーが発生する場合、エラーが発生したコードブロックの位置を知らせるか(コンパイルエラー時にコンパイラが知らせるコードのラインが所属しているコードブロックの認識を介して)、或いは出力変数の条件の中でもエラーの発生した出力変数名を知らせる方式が行われ得る。検証実行の際に、コンピュータのメモリ使用およびCPU使用状態なども試験結果の画面に連動して表示できる。入力変数/出力変数の条件は数字および記号(<、>)で構成され、条件は重複表現が可能である。検証方法において順次試験が選択されると、変数の宣言された型に応じて、当該変数で表現されるすべての数字を順次適用して検証を行う。検証の開始および終了は、すべての数字の適用が完了すると自動的に終了するか、或いはオペレーターの終了ボタンを押すことにより終了する。
【0088】
また、図面において、コードブロック検証部140はコードブロックの設定後にのみ検証を行うように示されているが、これは単に発明の理解を助けるためであり、コードブロックの設定後のどの段階でも検証を行うことができる。
【0089】
コードブロック変換部150は、ユーザーからの要請があれば、前記コードブロックを、予め設定されたプログラミング言語に対応するコードに変換する機能を行う。これに対する例示は
図20に示されている。
図20に示した上位コードブロックは2つの下位コードブロックを含み、これらの下位コードブロックは並列関係で含まれている。また、このようなコード変換についての方法は詳細に前述したので、重複部分についての説明は省略する。また、コードブロック変換についての叙述において、本明細書はC言語を中心に叙述されているが、これは単に明細書の理解を助けるための例示に過ぎず、他の様々な形態の言語に適用可能である。
【0090】
また、図面において、コードブロック変換部150はコードブロックに対する権限設定後にのみ変換を行うように示されているが、これは単に発明の理解を助けるためであり、コードブロック設定後のどの段階でも変換を行うことができる。
【0091】
また、本発明のソフトウェアコードの視覚的実現装置100は、コードブロックを用いたソフトウェア実現の際に、関連する機能の相関関係、変数あるいはメッセージを用いて当該データの流れや関係様相を検証するとき、ユーザーまたはオペレーターにコードブロックの様々なビュー機能を提供することができる。コードブロックはブロック番号/管理番号/コードブロックに宣言された変数およびメッセージを中心に関連コードブロックを階層的ツリー構造または階層的ブロック構造で表示する機能を有する。
【0092】
ここで、コードブロック表示範囲は、特定のコードブロックを含むことにより様々に設定することが可能である。コードブロックに宣言された変数が基準となるとき、上位コードブロックから下位コードブロックに入力/出力される変数は同じ変数として認識され、すべての関連コードブロックを表示することができる。コードブロックを用いたソフトウェア実現ツールは、各コードブロックに属性の割り当てが可能である。たとえば、データの保存に関わる機能を一つの属性として定義し、それに関連したコードブロックに当該属性を定義することができる。定義されたデータの保存に関連した属性を選択し、それに関連したコードブロックのみを表示(ツリー構造/ブロック構造)することができる。このような属性情報は、重複して設定が可能であり、1つのコードブロックに重複して定義することも可能である。コードブロックのコード情報は、一つのソフトウェアコード(C言語のソースコード形式)で表現できる。機能(要求事項)/記述は、1つの報告書形式で管理番号を基準に機能と記述を同時に表示することができる。
【0093】
以下、
図9を参照して、コードブロック設定部についてさらに述べる。
図9は本発明の一実施形態に係るソフトウェアコードの視覚的実現装置に含まれているコードブロック設定部を示すブロック図である。
図9に示すように、コードブロック設定部120は、コードブロック属性設定モジュール121、コード設定モジュール122、関係設定モジュール123およびブロック番号設定モジュール124を含んで構成できる。以下の叙述において、前述した内容と重複する事項についての説明は省略する。
【0094】
コードブロック属性設定モジュール121は、コードブロック内のコードブロック属性を設定する機能を行う。すなわち、コードブロック属性設定モジュール121は、コードブロック内でコードブロックに対する機能情報と説明情報を設定する機能を行う。これは入力部を介したユーザーの入力によって可能である。上述したように、このようなコードブロック属性は、1次元的にコーディングが行われて可読性に劣る従来のコーディング方式の問題点を解消するために案出されたもので、ソフトウェアを実現するときに導出された要求事項を具体化して設計された機能の簡略な説明(簡単な機能説明)、および詳しい説明(詳細な説明、絵および図表など)が含まれる。このようなコードブロック属性を用いて、従来のコーディング方式で1次元的に表現される方式、例えば注釈などとは異なり、ユーザーによるより直観的な理解が可能となる。
【0095】
コード設定モジュール122は、コードブロック内の内部属性コードを設定する機能を行う。これは、
図4および
図8の説明で述べたように、ユーザーがコーディングウィンドウを介して入力したコードによって設定可能である。また、コーディングウィンドウは、変数宣言ウィンドウ、入力変数割り当てウィンドウ、条件文ウィンドウ、コード入力ウィンドウおよび出力変数割り当てウィンドウのうちの少なくとも1つを含んで構成できる。これについては先に詳細に述べたので、重複部分についての説明は省略する。
【0096】
関係設定モジュール123は、コードブロック生成部110を介して複数のコードブロックが生成される場合、ユーザーの設定に基づいて、複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類する機能を行う。また、このような分類を介して、関係設定モジュール123は複数のコードブロックを並列関係または包含関係に設定することができる。これらの関係に対する設定方法と種類については先に詳細に述べたので、これについての追加説明は省略する。
【0097】
ブロック番号設定モジュール124は、関係設定モジュール123で設定された階層的なツリー構造または階層的なブロック構造におけるコードブロックの位置に基づいて、コードブロックに自動的にブロック番号を割り当てる機能を行う。このような割り当て方法は、例えば、最上位コードブロックにはx、最上位コードブロックに含まれる下位コードブロックにはxy、その次の下位コードブロックにはxyzのような形で実現可能である。ただし、このような実現方法は単に例示に過ぎず、コードブロックに対する位置が把握できる多様な形態で実現可能である。
【0098】
以下、
図21を参照して、本発明の一実施形態に係るソフトウェアコードの視覚的実現方法についてさらに述べる。
図21は本発明の一実施形態に係るソフトウェアコードの視覚的実現方法を示すフローチャートである。以下の叙述では、
図1〜
図20を参照して言及される部分と重複する事項についての説明は省略する。
【0099】
まず、ユーザーにコードブロックを生成するか否かを確認する段階(S110)が行われる。つまり、本発明のソフトウェアコードの視覚的実現方法は、例えば、ユーザーが新たにコードブロックを生成する機能を行うことができるが、既に生成されたコードブロックに対する編集(例えば、コピー、削除および編集)も可能である。これにより、コードブロックを生成するか否かを確認する段階(S110)で、これについての確認が必要である。その後、コードブロックを生成するか否かを確認する段階(S110)で、もしユーザーが新しいコードブロックを生成することを望むと確認される場合には、コードブロックを生成する段階(S120)が行われ、もしユーザーが新しいコードブロックを生成することを望まないと確認される場合には、コードブロック属性または内部属性コードを設定する段階(S130)が行われる。
【0100】
コードブロックを生成する段階(S120)では、コードブロック生成部によって、要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成する機能を行う。ここで、生成されたコードブロックは、ユーザーが新しい編集を望むときに使用される内部の空いた基本的な枠組み、格納部に格納された平叙文コードブロック、繰り返し文コードブロックおよび条件文コードブロックを含むことができる。これらのコードブロックの種類については
図10〜
図17を参照して詳細に説明されたので、これについての追加説明は省略する。また、このようなコードブロックが生成されると、これに対するブロック番号が自動的に割り当てられる。
【0101】
その後、コードブロック設定部により、ユーザーから入力された情報に基づいて、コードブロック内に含まれるコードブロック情報、すなわち、コードブロック属性または内部属性コードを設定する段階(S130)が行われる。このようなコードブロック属性または内部属性コードを設定する段階(S130)では、例えば、コードブロックを生成する段階(S120)で新しいコードブロックが生成された場合、生成されたコードブロックに対するコードブロック属性と内部属性コードを設定することができる。ここで、コードブロック属性は上述したように機能情報と説明情報を含む。このようなコードブロック属性と内部属性コードに対する設定方法については先に詳細に述べたので、これについての追加説明は省略する。
【0102】
また、コードブロック属性または内部属性コードを設定する段階(S130)は、コードブロックの位置、ブロック番号、管理番号、インデックスおよび前記内部属性コードをコードブロックに含ませる段階をさらに含むことができる。また、図示してはいないが、コードブロック属性または内部属性コードを設定する段階(S130)の後、ユーザーからコードブロックに対する表示要請があれば、ディスプレイ部を介してコードブロックに対する機能情報、説明情報および内部属性コードを表示する段階をさらに含んでもよい。
【0103】
また、コードブロック属性または内部属性コードを設定する段階(S130)は、コードブロック生成部を介して複数のコードブロックが生成される場合、ユーザーの設定に基づいて複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類することができる。つまり、複数のコードブロックはコードブロックの位置に基づいて並列関係または包含関係で形成できる。これにより、ユーザーは、複数のコードブロックが存在しても、これらが階層的なツリー状または階層的なブロック状に構成されるので、容易に管理を行うことができる。
【0104】
また、前述したように、このような階層的なツリー構造または階層的なブロック構造における位置に基づいて、コードブロックは上位コードブロックと下位コードブロックに区分できる。また、下位コードブロック内に含まれている内部属性コードは上位コードブロックに対して独立して実現できる。
【0105】
ここで、上位コードブロックは一つ以上の下位コードブロックを含み、一つ以上の下位コードブロックは上位コードブロックから入力引数を受信し、上位コードブロックに出力引数を返すことができる。
【0106】
また、コードブロックは制御フローに基づいて平叙文コードブロック、繰り返し文コードブロックおよび条件文コードブロックを含むことができ、これについては先に
図8〜
図17を参照して詳細に説明したので、これについての追加説明は省略する。
【0107】
コードブロック設定部によってコードブロックに対するブロック番号を設定する段階(S140)では、コードブロックの階層的位置に基づいてブロック番号を自動的に割り当てる。また、このようなブロック番号は、ブロックの移動によって自動的に設定可能であり、ユーザーが任意に変更することができない。つまり、このようなブロック番号の割り当ては、コードブロックを生成する段階(S120)、またはコードブロック属性または内部属性コードを設定する段階(S130)で設定されたコードブロックの位置に基づいて、コードブロック設定部によってコードブロックに対するブロック番号を設定する段階(S140)で行われ得る。
【0108】
コードブロックに対するブロック番号を設定した後、コードブロックの検証を行うか否かを判断する段階(S150)が続く。ここで、コードブロックの検証が必要であると判断されれば、すなわち、ユーザーがコードブロックの検証を望む場合には、コードブロックを検証し(S160)、ユーザーがコードブロックの検証を望まない場合には、コードブロックの権限を設定する(S170)。
【0109】
コードブロックを検証する段階(S160)は、コードブロック検証部によってランダム変数を用いて、コードブロックに含まれている入力または出力変数を繰り返し入力または検証してコードブロックを検証する機能を行う。また、コードブロックを検証する段階(S160)は、このようなランダム変数を用いる方法だけでなく、条件内のすべての値に対して順次変数の入力がなされる方式で行うことができる。また、このような検証過程については
図8を参照して詳細に説明されたので、これについての追加説明は省略する。
【0110】
その後、コードブロックに対する権限を設定する段階(S170)が行われる。さらに、コードブロックに対する権限を設定する段階(S170)は、必須的に行われる段階ではなく、ユーザーの必要に応じて選択的に実行可能である。つまり、コードブロックに対する権限を設定する段階(S170)は、ユーザーの必要に応じて全体コードブロック構造におけるそれぞれの、少なくとも一部または全体コードブロックに対してセキュリティ設定を行う。
【0111】
その後、追加的なコードブロックの生成または編集作業が必要であるか否かを判断する段階(S180)が行われる。ここで、ユーザーの選択に応じてさらにコードブロックに対する生成または編集作業を行わなければならないと判断されると、再びコードブロックを生成する段階(S110)に戻って上述の段階を繰り返し行う。もし、ユーザーの選択に応じて、さらにコードブロックに対する生成または編集作業を行わなくてもよいと判断されると、コードブロックを、予め設定されたプログラミング言語に対応するコードに変換する(S190)。
【0112】
その後、コードブロック変換部によって、コードブロックを、既に設定されたプログラミング言語に対応するコードに変換する段階(S190)が続く。このような変換過程については先に本発明の一実施形態に係るソフトウェアコードの視覚的実現装置を参照して詳細に説明されたので、これについての追加叙述は省略する。
【0113】
以下、
図22を参照して、
図21に示したコードブロック情報を設定する段階についてさらに述べる。
図22は、本発明の一実施形態に係るソフトウェアコードの視覚的実現方法において、ユーザーの入力に基づいてコードブロック情報を設定する段階を示すフローチャートである。以下の叙述では、先に開示された内容と重複する部分は省略する。
【0114】
まず、新しいコードブロックが生成されたか否かを判断する判断段階(S210)が行われる。つまり、新しいコードブロックが生成されたか否かを判断する判断段階(S210)を介して、ユーザーが新しいコードブロックを生成し、これに対する作業を行うことを望むのか、あるいは既存のコードブロックを編集することを望むのかについて判別した後、新しいコードブロックが生成されたと判断される場合には、新しいコードブロックのコードブロック情報を設定し(S230)、新しいコードブロックが生成されていないと判断される場合には、既存のコードブロックに対する編集(S220)を行う。
【0115】
既存のコードブロックに対する編集段階(S220)は、階層的なツリー構造または階層的なブロック構造内でコードブロックの編集、例えばコードブロックのコピー、移動、削除および編集を行う段階である。つまり、既存のコードブロックに対する編集段階(S220)は、
図21の新しいコードブロックを生成する段階(S120)で別個の新しいコードブロックに対する生成なしに行われることもあり、または、新しいコードブロックを生成したとしても、ユーザーの意図に応じて編集される過程を示す。既存のコードブロックに対する編集過程(S220)は先に
図8を参照して詳細に開示されたので、これについての追加説明は省略する。
【0116】
新しいコードブロックに対するコードブロック情報を設定する段階(S230)は、新しいコードブロックを生成する段階(S120)で生成された新しいコードブロックに対するコードブロック情報を設定する段階である。ここで、コードブロック情報は、機能および説明情報を含むコードブロック属性と、実質的にソフトウェアコードが実現される内部属性コードを含む。つまり、コードブロックを用いてソフトウェアを実現するとき、上位コードブロック内で(上位ブロックに所属している下位コードブロックで)使用される変数に対する定義が必要であり、定義された変数を入出力引数として用いて下位コードブロックの機能を定義する。新しいコードブロックに対するコードブロック情報を設定する段階(230)では、このような機能定義や変数設定などの機能を行うことができる。しかし、常に順序が決まっているのではなく、まず概略的なブロックのみを定義した後、具体的な機能を実現してもよく、データの利用をまず定義し、各機能を実現してもよい。
【0117】
その後、コードブロックに対する位置および関係を設定する段階(S240)が行われる。本発明で開示されたコードブロックは、階層的なツリー構造または階層的なブロック構造で開示できることをその特徴とする。つまり、このようなコードブロックに対する位置および関係を設定する段階(S240)は、生成または編集されたコードブロックに対してその位置を設定し、他のコードブロックとの関係を設定して、エラーなしにコードブロックが実行されるようにする。
【0118】
その後、コードブロックが最下位コードブロックであるか否かを判断する段階(S250)が行われる。つまり、本発明に係るコードブロックは、上位コードブロックの場合、変数の割り当ての他に、追加のコード実現をせず、実質的なコードは最下位コードブロックに含まれる。このようなコードブロックの特性によってコードブロックが最下位コードブロックであるか否かを判断する段階(S250)が行われる。判断の結果、コードブロックが最下位コードブロックであると判断されると、ユーザーから内部属性コードの入力を受ける段階(S260)が続く。ユーザーから内部属性コードを入力された後、コードブロック設定部によってコードブロックに対するブロック番号を設定する段階(S140)を開始する。もし、コードブロックが最下位コードブロックではないと判断されると、コードブロックを生成するか否かを確認する段階(S110)が続いて、他のコードブロックを追加するかに対する判断をさらに行う。ここで、他のコードブロックに対する追加または編集機能が行われると、
図21に示した段階を再び行い、そうでなければ終了する。
【0119】
本発明に係るソフトウェアコードの視覚的実現方法は、様々なコンピュータ手段を介して実行できるプログラム命令形態で実現され、コンピュータ可読媒体に記録できる。前記コンピュータ可読媒体は、プログラム命令、データファイル、データ構造などを単独で或いは組み合わせて含むことができる。前記媒体に記録されるプログラム命令は、本発明のために特別に設計されて構成されたものであるか、あるいはコンピュータソフトウェアの当業者に公知になって使用可能なものである。コンピュータ可読記録媒体の例には、ハードディスク、フロッピーディスクおよび磁気テープなどの磁気媒体(magnetic media)、CD−ROM、DVDなどの光記録媒体(optical media)、フロップティカルディスク(floptical disk)などの磁気−光媒体(magneto−optical media)、およびROM、RAM、フラッシュメモリなどのようなプログラム命令を格納および実行するように特別に構成されたすべての形態のハードウェア装置が含まれる。プログラム命令の例には、コンパイラによって作られる機械語コードだけでなく、インタプリターなどを用いてコンピュータによって実行できる高級言語コードを含むことができる。このようなハードウェア装置は、本発明の動作を実行するために一つ以上のソフトウェアモジュールとして作動するように構成でき、その逆も同様である。
【0120】
本発明の原理の教示は、ハードウェアとソフトウェアの組み合わせとして実現できる。また、ソフトウェアは、プログラム格納部上で実際に実行されるアプリケーションとして実現できる。アプリケーションは、任意の適切なアーキテクチャを含むマシンにアップロードされ、マシンによって実行できる。好ましくは、マシンは一つ以上の中央処理装置(CPU)、コンピュータプロセッサ、ランダムアクセスメモリ(RAM)、および入/出力(I/O)インターフェースなどのハードウェアを持つコンピュータプラットフォーム上に実現できる。また、コンピュータプラットフォームはオペレーティングシステムおよびマイクロ命令コードを含むことができる。ここで説明された様々なプロセス及び機能は、マイクロ命令コードの一部、アプリケーションの一部、またはこれらの任意の組み合わせでありうる。これらはCPUを含む多様な処理装置によって実行できる。さらに、追加データ格納部およびプリンターなどの様々な他の周辺機器がコンピュータプラットフォームに接続できる。
【0121】
添付図面に示されている構成システムコンポーネント及び方法の一部が好ましくはソフトウェアで実現されるので、システムコンポーネントまたはプロセス機能ブロック間の実際の接続は本発明の原理がプログラミングされる方式によって異なるという点がさらに理解されるべきである。ここでの教示が与えられると、関連技術分野の当業者は本発明の原理のそれらおよび類似する実施形態または構成を参酌することができるだろう。
【0122】
[項目1]
ソフトウェアの開発のために導出された要求事項と機能をコードとして実現するとき、プログラミング言語で利用されるソフトウェアコードを視覚的に実現するための方法であって、
コードブロック生成部によって、前記要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成する段階と、
コードブロック設定部によって、ユーザーから入力された情報に基づいて、前記コードブロック内に含まれるコードブロック属性または内部属性コードを設定する段階と
を含み、
前記コードブロック属性または内部属性コードを設定する段階は、前記コードブロックに対する機能情報、前記機能情報に対する説明情報および前記内部属性コードを前記コードブロックに含ませる段階を含むことを特徴とする、ソフトウェアコードの視覚的実現方法。
【0123】
[項目2]
コードブロック変換部によって、ユーザーからの要請があれば、前記コードブロックを、予め設定されたプログラミング言語に対応するコードに変換する段階をさらに含むことを特徴とする、項目1に記載のソフトウェアコードの視覚的実現方法。
【0124】
[項目3]
前記コードブロック属性または内部属性コードを設定する段階の途中または後、ユーザーから前記コードブロックに対する表示要請があれば、ディスプレイ部を介して前記コードブロックに対する機能情報、説明情報および内部属性コードを表示する段階をさらに含むことを特徴とする、項目1に記載のソフトウェアコードの視覚的実現方法。
【0125】
[項目4]
前記コードブロック属性または内部属性コードを設定する段階は、前記コードブロックの位置、ブロック番号、管理番号、インデックスおよび前記内部属性コードを前記コードブロックに含ませる段階を含むことを特徴とする、項目1に記載のソフトウェアコードの視覚的実現方法。
【0126】
[項目5]
前記コードブロック属性または内部属性コードを設定する段階は、前記コードブロック生成部を介して複数のコードブロックが生成される場合、前記ユーザーの設定に基づいて前記複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類する段階を含むことを特徴とする、項目4に記載のソフトウェアコードの視覚的実現方法。
【0127】
[項目6]
前記コードブロック属性または内部属性コードを設定する段階は、前記階層的なツリー構造または階層的なブロック構造におけるコードブロックの位置に基づいて、自動的にブロック番号を割り当てる段階を含むことを特徴とする、項目5に記載のソフトウェアコードの視覚的実現方法。
【0128】
[項目7]
前記ブロック番号を割り当てる段階で割り当てられたブロック番号は前記コードブロックに対する制御フローの順序決定に用いられ、前記ブロック番号はコードブロックの位置設定に基づいて自動的に割り当てられ、前記ブロック番号に基づいて順次コーディングが行われることを特徴とする、項目6に記載のソフトウェアコードの視覚的実現方法。
【0129】
[項目8]
前記コードブロックは、前記階層的なツリー構造または階層的なブロック構造における位置によって上位コードブロックと下位コードブロックに分類され、前記下位コードブロック内に含まれている内部属性コードは上位コードブロックに対して独立して実現され、上位コードブロックに含まれている下位コードブロックの入出力引数は特性によってグループ化されてインデックス化できることを特徴とする、項目1に記載のソフトウェアコードの視覚的実現方法。
【0130】
[項目9]
前記上位コードブロックは、一つ以上の下位コードブロックと前記下位コードブロックの変数宣言に対する内部属性コードを含み、前記一つ以上の下位コードブロックは、前記上位コードブロックから入力引数を受信し、前記上位コードブロックへ出力引数を返すことを特徴とする、項目8に記載のソフトウェアコードの視覚的実現方法。
【0131】
[項目10]
前記コードブロックは、制御フローに従って平叙文コードブロック、繰り返し文コードブロックおよび条件文コードブロックを含むことを特徴とする、項目1に記載のソフトウェアコードの視覚的実現方法。
【0132】
[項目11]
前記コードブロック内に含まれるコードブロック属性または内部属性コードを設定する段階は、既に生成されたコードブロックと前記コードブロックとの関係を包含関係または並列関係に設定する段階を含むことを特徴とする、項目1に記載のソフトウェアコードの視覚的実現方法。
【0133】
[項目12]
前記コードブロック属性または内部属性コードを設定する段階で、前記内部属性コードは、
前記内部属性コードの入力変数および出力変数の宣言に使用される変数宣言ウィンドウ;
前記入力変数の割り当てに使用される入力変数割り当てウィンドウ;
条件文または繰り返し文の入力に使用される条件文ウィンドウ;
前記コードブロックに対する機能実現のためのソフトウェアコードの入力に使用されるコード入力ウィンドウ;および
前記出力変数の割り当てに使用される出力変数割り当てウィンドウのうちの少なくとも一つを含むコーディングウィンドウを介して、ユーザーから入力されることを特徴とする、項目1に記載のソフトウェアコードの視覚的実現方法。
【0134】
[項目13]
前記コードブロック属性または内部属性コードを設定する段階の後、コードブロック検証部によって、ランダム変数を用いてまたは前記コードブロック内の条件文に入力または出力される変数を用いて前記コードブロックを検証する段階をさらに含むことを特徴とする、項目1に記載のソフトウェアコードの視覚的実現方法。
【0135】
[項目14]
前記コードブロック属性または内部属性コードを設定する段階の後、コードブロック権限設定部によってコードブロックのアクセス権限を設定する段階をさらに含むことを特徴とする、項目1に記載のソフトウェアコードの視覚的実現方法。
【0136】
[項目15]
ソフトウェアの開発のために導出された要求事項と機能をコードとして実現するとき、プログラミング言語で利用されるソフトウェアコードを視覚的に実現するための装置であって、
前記要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成するコードブロック生成部と、
ユーザーから入力された情報に基づいて、前記コードブロック内に含まれるコードブロック属性または内部属性コードを設定するコードブロック設定部と
を含み、
前記コードブロック設定部は、前記コードブロックに対する機能情報、前記機能情報に対する説明情報、および前記内部属性コードを前記コードブロックに含ませることを特徴とする、ソフトウェアコードの視覚的実現装置。
【0137】
[項目16]
ユーザーからの要請があれば、前記コードブロックを、予め設定されたプログラミング言語に対応するコードに変換するコードブロック変換部を含むことを特徴とする、項目15に記載のソフトウェアコードの視覚的実現装置。
【0138】
[項目17]
前記コードブロック設定部は、前記コードブロック生成部を介して複数のコードブロックが生成される場合、前記ユーザーの設定に基づいて前記複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類することを特徴とする、項目15に記載のソフトウェアコードの視覚的実現装置。
【0139】
[項目18]
前記コードブロック設定部は、前記階層的なツリー構造または階層的なブロック構造におけるコードブロックの位置に基づいて、自動的にブロック番号を割り当てることを特徴とする、項目17に記載のソフトウェアコードの視覚的実現装置。
【0140】
[項目19]
前記コードブロックは、前記階層的なツリー構造または階層的なブロック構造における位置に基づいて上位コードブロックと下位コードブロックに分類され、前記下位コードブロック内に含まれている内部属性コードは前記上位コードブロックに対して独立して実現されることを特徴とする、項目15に記載のソフトウェアコードの視覚的実現装置。
【0141】
[項目20]
前記上位コードブロックは、一つ以上の下位コードブロックを含み、前記一つ以上の下位コードブロックは、前記上位コードブロックから入力引数を受信し、前記上位コードブロックに出力引数を返すことを特徴とする、項目19に記載のソフトウェアコードの視覚的実現装置。