(57)【要約】      （修正有）【課題】ソフトウェアコードを視覚的に実現するための方法および装置を提供する。【解決手段】視覚的実現装置１００において、コードブロック生成部１１０によって、要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成する段階と、コードブロック設定部１２０によって、ユーザーから入力された情報に基づいて、コードブロック内に含まれるコードブロック属性または内部属性コードを設定する段階とを含む。コードブロック属性または内部属性コードを設定する段階は、コードブロックに対する機能情報、機能情報に対する説明情報および内部属性コードをコードブロックに含ませる段階を含む。【選択図】図８
2018185850.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの開発のために導出された要求事項と機能をコードとして実現するとき、プログラミング言語で利用されるソフトウェアコードを視覚的に実現するための方法であって、
コードブロック生成部によって、前記要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成する段階と、
コードブロック設定部によって、ユーザーから入力された情報に基づいて、前記コードブロック内に含まれるコードブロック属性または内部属性コードを設定する段階とを含み、
前記コードブロックは制御フローに従って平叙文コードブロック、繰り返し文コードブロックおよび条件文コードブロックを含み、
前記コードブロック属性または内部属性コードを設定する段階は、前記コードブロックに対する機能情報、前記機能情報に対する説明情報および前記制御フローの設定のために条件の入力または繰り返し文の入力に使用される条件文の設定を含む前記内部属性コードを前記コードブロックに含ませる段階を含み、
前記コードブロック属性または内部属性コードを設定する段階は、前記コードブロック生成部を介して複数のコードブロックが生成される場合、前記ユーザーの設定に基づいて前記複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類する段階を含み、
前記コードブロック属性または内部属性コードを設定する段階は、前記階層的なツリー構造または階層的なブロック構造におけるコードブロックの位置に基づいて、自動的にブロック番号を割り当てる段階を含むことを特徴とする、ソフトウェアコードの視覚的実現方法。
【請求項２】
コードブロック変換部によって、ユーザーからの要請があれば、前記コードブロックを、予め設定されたプログラミング言語に対応するコードに変換する段階をさらに含むことを特徴とする、請求項１に記載のソフトウェアコードの視覚的実現方法。
【請求項３】
前記コードブロック属性または内部属性コードを設定する段階の途中または後、ユーザーから前記コードブロックに対する表示要請があれば、ディスプレイ部を介して前記コードブロックに対する機能情報、説明情報および内部属性コードを表示する段階をさらに含むことを特徴とする、請求項１に記載のソフトウェアコードの視覚的実現方法。
【請求項４】
前記コードブロック属性または内部属性コードを設定する段階は、前記コードブロックの位置、ブロック番号、管理番号、インデックスおよび前記内部属性コードを前記コードブロックに含ませる段階を含むことを特徴とする、請求項１に記載のソフトウェアコードの視覚的実現方法。
【請求項５】
前記ブロック番号を割り当てる段階で割り当てられたブロック番号は前記コードブロックに対する制御フローの順序決定に用いられ、前記ブロック番号に基づいて順次コーディングが行われることを特徴とする、請求項１に記載のソフトウェアコードの視覚的実現方法。
【請求項６】
前記コードブロックは、前記階層的なツリー構造または階層的なブロック構造における位置によって上位コードブロックと下位コードブロックに分類され、上位コードブロックに含まれている下位コードブロックの入出力引数は特性によってグループ化されてインデックスに設定することを特徴とする、請求項１に記載のソフトウェアコードの視覚的実現方法。
【請求項７】
前記上位コードブロックは、一つ以上の下位コードブロックと前記下位コードブロックの変数宣言に対する内部属性コードを含み、前記一つ以上の下位コードブロックは、前記上位コードブロックから入力引数を受信し、前記上位コードブロックへ出力引数を返すことを特徴とする、請求項６に記載のソフトウェアコードの視覚的実現方法。
【請求項８】
前記コードブロック内に含まれるコードブロック属性または内部属性コードを設定する段階は、既に生成されたコードブロックと前記コードブロックとの関係を包含関係または並列関係に設定する段階を含むことを特徴とする、請求項１に記載のソフトウェアコードの視覚的実現方法。
【請求項９】
前記コードブロック属性または内部属性コードを設定する段階で、前記内部属性コードは、
前記内部属性コードの入力変数および出力変数の宣言に使用される変数宣言ウィンドウ；
前記入力変数の割り当てに使用される入力変数割り当てウィンドウ；
前記条件文または繰り返し文の入力に使用される条件文ウィンドウ；
前記コードブロックに対する機能実現のためのソフトウェアコードの入力に使用されるコード入力ウィンドウ；および
前記出力変数の割り当てに使用される出力変数割り当てウィンドウのうちの少なくとも一つを含むコーディングウィンドウを介して、ユーザーから入力されることを特徴とする、請求項１に記載のソフトウェアコードの視覚的実現方法。
【請求項１０】
前記コードブロック属性または内部属性コードを設定する段階の後、コードブロック検証部によって、ランダム変数を用いてまたは前記コードブロック内の条件文に入力または出力される変数を用いて前記コードブロックを検証する段階をさらに含むことを特徴とする、請求項１に記載のソフトウェアコードの視覚的実現方法。
【請求項１１】
前記コードブロック属性または内部属性コードを設定する段階の後、コードブロック権限設定部によってコードブロックのアクセス権限を設定する段階をさらに含むことを特徴とする、請求項１に記載のソフトウェアコードの視覚的実現方法。
【請求項１２】
ソフトウェアの開発のために導出された要求事項と機能をコードとして実現するとき、プログラミング言語で利用されるソフトウェアコードを視覚的に実現するための装置であって、
前記要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成するコードブロック生成部と、
ユーザーから入力された情報に基づいて、前記コードブロック内に含まれるコードブロック属性または内部属性コードを設定するコードブロック設定部とを含み、
前記コードブロックは制御フローに従って平叙文コードブロック、繰り返し文コードブロックおよび条件文コードブロックを含み、
前記コードブロック設定部は、前記コードブロックに対する機能情報、前記機能情報に対する説明情報、および前記制御フローの設定のために条件の入力または繰り返し文の入力に使用される条件文の設定を含む前記内部属性コードを前記コードブロックに含まれ、
前記コードブロック設定部は、前記コードブロック生成部を介して複数のコードブロックが生成される場合、前記ユーザーの設定に基づいて前記複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類され、
前記コードブロック設定部は、前記階層的なツリー構造または階層的なブロック構造におけるコードブロックの位置に基づいて、自動的にブロック番号を割り当てることを特徴とする、ソフトウェアコードの視覚的実現装置。
【請求項１３】
ユーザーからの要請があれば、前記コードブロックを、予め設定されたプログラミング言語に対応するコードに変換するコードブロック変換部を含むことを特徴とする、請求項１２に記載のソフトウェアコードの視覚的実現装置。
【請求項１４】
前記コードブロックは、前記階層的なツリー構造または階層的なブロック構造における位置に基づいて上位コードブロックと下位コードブロックに分類されることを特徴とする、請求項１２に記載のソフトウェアコードの視覚的実現装置。
【請求項１５】
前記上位コードブロックは、一つ以上の下位コードブロックを含み、前記一つ以上の下位コードブロックは、前記上位コードブロックから入力引数を受信し、前記上位コードブロックに出力引数を返すことを特徴とする、請求項１４に記載のソフトウェアコードの視覚的実現装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアコードを視覚的に実現するための方法及び装置に係り、より具体的には、コードブロックを用いてソフトウェアコードを視覚的に実現するための方法及び装置に関する。
【０００２】
本発明は、２０１４年５月２２日に出願された韓国特許出願第１０−２０１４−００６１８２８号の利益を主張し、その内容はすべて本明細書に組み込まれる。
【背景技術】
【０００３】
一般に、ソフトウェアの開発は、エンジニアの要求事項の導出、機能の設計、コードの実現およびソフトウェアの検証に至る一連の過程を介して行われる。このような過程においては多くの困難な要素が存在するが、要求事項を一目瞭然に整理するためのツール、機能をモデル化するためのツール、コードのプログラミングをサポートするためのツールなどが開発され、ソフトウェア開発者にとって大きく役立っている。
【０００４】
しかし、導き出されたエンジニアの要求事項に基づいてソフトウェアを実現するためには、要求事項を充足する具体的な機能を設計し、その機能をコードとして実現しなければならないが、具体的な機能をコードとして実現する方法を直接サポートするツールが存在しない。言い換えれば、ソフトウェアの機能をコードと一対一で対応させて、要求事項および機能設計がソフトウェアコードのどの部分でどのように実現されており、他の機能とはどのような関係があるのかを一目瞭然にコードから確認して実現することができるツールが不在である。
【０００５】
一般言語や絵、図表などで表現された機能は、人間の頭の中で理解され、それがコードという別の形態で表現されなければならない。つまり、このような表現は、人間という媒介を経て、一般言語からプログラミング言語に変換されなければならない。このような理由から、適切に設計された機能であっても、実現されたコードとの不一致または機能の誤った実現により多くのエラーがソフトウェアから検出される。また、表に現れないが、コードを実現した意図とは違って修正される場合、エラーを起こす潜在的な可能性が相当ある場合も数多い。
【０００６】
大規模のソフトウェアを実現してから長い時間が経過したソフトウェアの場合、定義された要求事項と設計資料が存在しても、そのソフトウェアコードの構造を容易に理解することができない現象が発生する。つまり、ソフトウェアの機能を表現している一般言語とソフトウェアを実現するコードとの表現上の違いにより、ソフトウェアコードは、実現した者の個人的な性向、意図および問題解決方式だけでなく、要求事項を理解する方法、ソフトウェアの設計を再解釈する方法に応じて、意図していない様々な要素がコードに含まれるようになる。このような点に起因して、これらの要素がコードを汎用的に理解、解釈するのに大きな障害となっており、ソフトウェアコードの可読性が低下してソフトウェアの開発が効率的ではなくなる。
【０００７】
プログラミング言語は、一般言語に比べて読み取って理解することが難しい。プログラミング言語は、制御フローに従って順次コードを構成しなければならず、表現ごとに正確に宣言および定義されなければならない。つまり、プログラミング言語は、順序に従って順次表現されなければその表現は別の意味を持つようになり、このようなプログラミング言語で使用するデータと命令文のような構文の形態または意味を正確に定義しておかなければエラーが発生することがある。なぜなら、コンピュータは状況を考慮して判断または理解することができないので、すべてのプログラミング言語の文章は明確に定義され、順序付けされて一つの意味で構成されなければならないためである。このような理由から、一般的なソースコードはテキスト形式で構成され、コードの意味単位は一つのライン（Ｌｉｎｅ）で構成されて、ラインの順序に従ってコードが構成されている。
【０００８】
プログラミング言語は、機能を定義するときに人の理解を助けるために使用された図表や絵、哲学的または抽象化機能を正確に表現することができない。それだけでなく、コードの意味単位がラインで構成されており、膨大な量のコードである場合には、直接ラインに沿って意味を一つ一つ解釈するまでは具体的なソフトウェアの実現程度を理解することが容易ではない。もちろん、設計ドキュメントを用いて概略的な意味を捉えることは可能であるが、前述したように、設計ドキュメントとコードとの間には表現上の違い（一般言語とプログラミング言語との表現の違い）が存在するため、設計ドキュメントを見ることでは実際のソフトウェアを構成しているコードがどのように実現されているかを確認することはできないという問題点がある。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、ソフトウェアを、コードブロックを含む完全なコンポーネントで構成する方法を実現することにある。
【００１０】
本発明の他の目的は、ソフトウェアの開発のために導出された要求事項と機能をコードとして実現するとき、プログラミング言語で利用されるソフトウェアコードを視覚的に実現するための装置および方法を提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するための本発明のソフトウェアコードの視覚的実現方法は、コードブロック生成部によって、要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成する段階と、コードブロック設定部によって、ユーザーから入力された情報に基づいて、コードブロック内に含まれるコードブロック属性または内部属性コードを設定する段階とを含み、コードブロック属性または内部属性コードを設定する段階は、コードブロックに対する機能情報、機能情報に対する説明情報および内部属性コードをコードブロックに含ませる段階を含むことを特徴とする。
【００１２】
また、本発明のソフトウェアコードの視覚的実現方法は、コードブロック変換部によって、ユーザーからの要請があれば、コードブロックを、予め設定されたプログラミング言語に対応するコードに変換する段階をさらに含むことができる。
【００１３】
また、本発明のソフトウェアコードの視覚的実現方法は、コードブロック属性または内部属性コードを設定する段階の後、ユーザーからコードブロックに対する表示要請があれば、ディスプレイ部を介してコードブロックに対する機能情報、説明情報および内部属性コードを表示する段階をさらに含むことができる。
【００１４】
また、コードブロック属性または内部属性コードを設定する段階は、コードブロックの位置、ブロック番号、インデックス、管理番号および内部属性コードをコードブロックに含ませる段階を含むことができる。
【００１５】
また、コードブロック属性または内部属性コードを設定する段階は、コードブロック生成部を介して複数のコードブロックが生成される場合、ユーザーの設定に基づいて複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類する段階を含むことができる。
【００１６】
また、コードブロック属性または内部属性コードを設定する段階は、階層的なツリー構造または階層的なブロック構造におけるコードブロックの位置に基づいて自動的にブロック番号を割り当てる段階を含むことができる。
【００１７】
また、ブロック番号を割り当てる段階で割り当てられたブロック番号は、ユーザーの入力を介して前記コードブロックの位置が変更されると、自動変更される。
【００１８】
また、コードブロックは、階層的なツリー構造または階層的なブロック構造における位置によって上位コードブロックと下位コードブロックに分類され、下位コードブロック内に含まれている内部属性コードは上位コードブロックに対して独立して実現され、上位コードブロックに含まれている下位コードブロックの入出力引数は特性によってグループ化されてインデックス化できる。
【００１９】
また、上位コードブロックは一つ以上の下位コードブロックを含み、一つ以上の下位コードブロックは、上位コードブロックから入力引数を受信し、上位コードブロックへ出力引数を返すことができる。
【００２０】
また、コードブロックが複数の階層から構成されているとき、上位コードブロックは、すぐ下の段階の下位コードブロックが必要とするすべての入出力引数を含む。
【００２１】
また、コードブロックは、制御フローに基づいて平叙文コードブロック、繰り返し文コードブロックおよび条件文コードブロックを含むことができる。
【００２２】
また、コードブロック内に含まれるコードブロック属性または内部属性コードを設定する段階は、既に生成されたコードブロックと前記コードブロックとの関係を包含関係または並列関係に設定する段階を含むことができる。
【００２３】
また、コードブロック属性または内部属性コードを設定する段階で、内部属性コードは、内部属性コードの入力変数および出力変数の宣言に使用される変数宣言ウィンドウ；入力変数の割り当てに使用される入力変数割り当てウィンドウ；条件文または繰り返し文の入力に使用される条件文ウィンドウ；コードブロックに対する機能実現のためのソフトウェアコードの入力に使用されるコード入力ウィンドウ；および出力変数の割り当てに使用される出力変数割り当てウィンドウのうちの少なくとも一つを含むコーディングウィンドウを介して、ユーザーから入力できる。
【００２４】
また、本発明のソフトウェアコードの視覚的実現方法は、コードブロック属性または内部属性コードを設定する段階の後、コードブロック検証部によって、ランダム変数を用いて、またはコードブロック内の条件文に入力または出力される変数を用いてコードブロックを検証する段階をさらに含むことができる。
【００２５】
また、本発明のソフトウェアコードの視覚的実現方法は、コードブロック属性または内部属性コードを設定する段階の後、コードブロック権限設定部によってコードブロックのアクセス権限を設定する段階をさらに含むことができる。
【００２６】
上記目的を達成するための本発明のソフトウェアコードの視覚的実現装置は、要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成するコードブロック生成部と；ユーザーから入力された情報に基づいて、コードブロック内に含まれるコードブロック属性または内部属性コードを設定するコードブロック設定部とを含み、コードブロック設定部は、コードブロックに対する機能情報、機能情報に対する説明情報、および内部属性コードをコードブロックに含ませることを特徴とする。
【発明の効果】
【００２７】
本発明のソフトウェアコードの視覚的実現方法および装置によれば、機能単位に区分されたコードブロックを用いて視覚的なソフトウェアコーディングが可能であり、既存のように一つのラインずつコーディングを行うのではなく、コードブロックを用いた高次元的な形態の表現が可能となって、ユーザーまたはオペレーターのソフトウェア開発がより効率よく行われるという効果がある。
【００２８】
また、本発明のソフトウェアコードの視覚的実現方法および装置によれば、コードブロック間の関係が明らかになり、入出力引数の流れが明確となることにより、コードの可読性が向上するうえ、ソフトウェアの再使用が容易になるという効果がある。
【００２９】
また、本発明のソフトウェアコードの視覚的実現方法および装置によれば、ソフトウェアのコードが機能を行う単位でコードブロックと一対一で対応し、また、このようなコードブロックはツリー構造または階層的なブロック構造で実現できるので、ユーザーがより直観的にソフトウェアコードを実現することができるという効果がある。
【図面の簡単な説明】
【００３０】
【図１】本発明のソフトウェアコードの視覚的実現装置を介してソフトウェアコードを実現する方法を示す概念図である。
【図２】本発明の一実施形態によってディスプレイ部に表示されるコードブロックの構造を示す図である。
【図３】本発明の一実施形態によるコードブロックのデータ共有を示す概念図である。
【図４】本発明の一実施形態によるコードブロックと、コードブロックを用いてソフトウェアコードを実現する方法を示す図である。
【図５】本発明の一実施形態によって生成されたコードブロックをコードに変換する過程を示す図である。
【図６】本発明の一実施形態によるコードブロックの関係を説明するための図である。
【図７】本発明の一実施形態によるコードブロックの関係を説明するための図である。
【図８】本発明の一実施形態によるソフトウェアコードの視覚的実現装置を示すブロック図である。
【図９】本発明の一実施形態によるソフトウェアコードの視覚的実現装置に含まれているコードブロック設定部を示すブロック図である。
【図１０】本発明の一実施形態によって格納部に格納されたコードブロックの種類を示す図である。
【図１１】本発明の一実施形態によって格納部に格納されたコードブロックの種類を示す図である。
【図１２】本発明の一実施形態によって格納部に格納されたコードブロックの種類を示す図である。
【図１３】本発明の一実施形態によって格納部に格納されたコードブロックの種類を示す図である。
【図１４】本発明の一実施形態によって格納部に格納されたコードブロックの種類を示す図である。
【図１５】本発明の一実施形態によって格納部に格納されたコードブロックの種類を示す図である。
【図１６】本発明の一実施形態によって格納部に格納されたコードブロックの種類を示す図である。
【図１７】本発明の一実施形態によって格納部に格納されたコードブロックの種類を示す図である。
【図１８】本発明の一実施形態によって複数のコードブロックにブロック番号を割り当てる方法を示す図である。
【図１９】本発明のインデックスが追加されたコードブロックが表示される例示を示す図である。
【図２０】本発明のソフトウェアコードの視覚的実現装置に含まれているコードブロック変換部を介してコードブロックをコードに変換する例示を示す図である。
【図２１】本発明の一実施形態によるソフトウェアコードの視覚的実現方法を示すフローチャートである。
【図２２】本発明の一実施形態によるソフトウェアコードの視覚的実現方法においてユーザーの入力に応じてコードブロック情報を設定する段階を示すフローチャートである。
【発明を実施するための形態】
【００３１】
以下、本発明の属する技術分野における通常の知識を有する者が本発明の技術的思想を容易に実施することができる程度に詳細に説明するために、本発明の最も好適な実施例を添付図面に基づいて説明する。まず、各図面の構成要素に参照符号を付するにあたり、同一の構成要素に対しては、たとえ他の図面上に表示されても、可能な限り同一の符号を持つようにしていることに留意すべきである。また、本発明を説明するにあたり、関連した公知の構成または機能に関する具体的な説明が本発明の要旨を曖昧にするおそれがあると判断される場合には、その詳細な説明は省略する。
【００３２】
図１はソフトウェアコードの視覚的実現装置を介してソフトウェアコードを実現する方法を説明するための図である。図２はディスプレイ部に表示されるコードブロックの構造を説明するための図である。図３はコードブロックのデータ共有について説明するための図である。図４はコードブロックと、コードブロックを用いてソフトウェアコードを実現する方法を説明するための図である。図５は 生成されたコードブロックをコードに変換する過程を説明するための図である。図６および図７はコードブロックの関係を説明するための図である。図８はソフトウェアコードの視覚的実現装置を説明するための図である。図９はソフトウェアコードの視覚的実現装置に含まれているコードブロック設定部を説明するための図である。図１０〜図１７は格納部に格納されたコードブロックの種類を説明するための図である。図１８は複数のコードブロックにブロック番号を割り当てる方法を説明するための図である。図１９はインデックスが追加されたコードブロックが表示される例示を示す図である。図２０はコードブロック変換部を介してコードブロックをコードに変換する例示を説明するための図である。図２１はソフトウェアコードの視覚的実現方法を説明するための図である。図２２はソフトウェアコードの視覚的実現方法においてユーザーの入力に応じてコードブロック情報を設定する段階を説明するための図である。
【００３３】
以下、本発明の実施形態によるソフトウェアコードの視覚的実現方法及び装置を添付図面に基づいて詳細に説明する。
【００３４】
図１に示すように、ユーザーはプログラミングツールを用いてソフトウェアコーディングを行う。ここで、ユーザーは、従来の一つのラインごとにコーディングを行う方式ではなく、図面符号２０で示されるように、コードブロック単位でコーディングを行うことができる。さらに、それぞれのコードブロックは互いに独立している。
【００３５】
ここで、コードブロックは、ソフトウェアを構成するコンポーネント（Ｃｏｍｐｏｎｅｎｔ）のいずれか一つを意味する。以下ではコードブロックについて述べるが、本発明は、コンポーネントの一実施形態であるコードブロックに限定されず、ソフトウェアを階層的に構造化することが可能なコンポーネント全般に関するものである。
【００３６】
コードブロックは、ソフトウェアの機能をブロック単位で区分したものである。このようなコードブロックは、図面符号３０で示されるように、機能情報３１、説明情報３２、コード情報３３および管理番号３４を含んで構成できる。上述したように、従来のコーディング方式は、コーディングが１次元的に行われるので、既に実現されたソフトウェアコードに対する可読性に劣り、各コードの意味するところが不明確であるという問題点があった。これに対し、本発明のコードブロックは、図面符号３０で示されるように、コードブロックごとに、各コードブロックが意味する機能情報３１、説明情報３２、コード情報３３および管理番号３４をすぐに確認することができるので、ユーザーまたはオペレーターが、当該部分の意味するところが何なのか直観的かつ明確に確認することができるという利点がある。ここで、機能情報３１、説明情報３２、コード情報３３および管理番号３４が意味するところは、次のとおりである。
【００３７】
機能情報３１は、ソフトウェアを実現するために導出された、またはユーザーの要求事項を具体化して設計された機能に対する説明を示す。すなわち、機能情報３１は、当該コードブロックに対する包括的な情報が含まれ得る。
【００３８】
ここで、ユーザーの要求事項は、階層構造（Ｌａｙｅｒｅｄ）を有し、制御段階を持たない。さらに、要求事項はコードブロックで自分の役割を担当することになる。また、要求事項は、それぞれ自分の特性に応じてインデックス（Ｉｎｄｅｘ）を持つことができる。ひいては、要求事項はグループを形成することができ、このようなグループもインデックスとして表示できる。
【００３９】
説明情報３２は、前述した機能情報に対する詳細なまたは具体的な説明を含むことができる。ここで、説明情報３２に含まれる情報には、例えば、機能に対する詳細な説明、絵および図表などのように多様な形態の情報が含まれ得る。すなわち、このような説明情報３２を用いて、ユーザーはソフトウェアコードをより直観的に理解することができる。
【００４０】
コード情報３３は、ソフトウェアを実現するコード、または当該コードブロックを構成する下位コードブロックなどに対する情報を含むことができる。ここで、下位コードブロックに対する説明は図４を参照して後述する。
【００４１】
管理番号３４は、ユーザーまたはオペレーターが各コードブロックに対する管理を行うための番号であって、ユーザーまたはオペレーターが与える番号を示す。
【００４２】
また、図面符号２０で示されるように、コードブロックは複数個が階層的なツリー構造で実現できる。また、このようなコードブロックは、このような階層的なツリー構造だけでなく、図２に示すように階層的なブロック構造で実現できる。これらの階層的なツリー構造または階層的なブロック構造で実現されたコードブロックは、前述したように、ソフトウェアを構成する機能と一対一で対応して実現される。つまり、機能をコードブロック構造に構造化し、コードブロックの内部に定義された機能をコーディングしてブロック間のデータ共有と制御フローを明確に定義すると、コードブロックで構成されたコードは一般的なプログラミング言語で表現できる。
【００４３】
次に、ブロック間のデータ共有と制御フローについてより詳細に説明する。データ共有は下位コードブロックが必要とする入出力データを、上位コードブロックがブロック内部のデータとしてすべて所有するように構造化することであり、制御フローは階層的なブロック構造で同じ階層間にのみ存在するようにすることにより、制御フローとデータ流れを分離するのである。言い換えれば、１つのコードブロック内に複数の下位コードブロックが存在すると仮定すると、すべての下位コードブロックは、上位コードブロックでそれぞれが必要とするすべてのデータにアクセスすることが可能なので、まるで全ての入出力データがグローバル変数のように運用でき、制御フローは下位コードブロック間にのみ定義すればよい。このような構造はすべての階層で適用され、各階層で定義された制御フローは下位コードブロック間で定義された制御フローに連係することにより、コードブロックは順序付けされる。
【００４４】
ここで制御フローを決定する方法では、上位コードブロックの順序が定められることにより、下位コードブロックは上位コードブロックの定められた順序に従って順序が決められる。つまり、コードブロックに対するブロック番号、すなわち、１、１−１、１−１−１、１−１−２、１−２、１−２−１、１−２−２、２、２−１などの順に順序が決められ得る。
【００４５】
また、データ共有方法について、上位コードブロックは下位コードブロックが必要とする入出力データを必ず所有し、このような特徴はすべての階層に適用できる。たとえば、ソフトウェアが機能１および機能２を含むと仮定する。また、ここで、機能１は、細部的に機能１−１と機能１−２を含むと仮定する。このような機能は、また、図１の図面符号２０および図２に示されるように、機能１がコードブロック１、機能２がコードブロック２に対応して実現できる。ここで、制御フローは機能１、機能１−１、機能１−２および機能２の順となる。
【００４６】
図３は本発明の一実施形態によるコードブロックのデータ共有を示す概念図であり、具体的に定義されたデータ領域内においてコードブロック間でデータを共有する概念を示す。
【００４７】
コードブロックは上位コードブロックと下位コードブロックに区分できる。ここで、上位コードブロックは、下位コードブロックが共有すべきデータを定義し、管理しなければならない。すなわち、上位コードブロックは、下位コードブロックが必要とするすべての入出力データを所有していなければならない。これは、例えば、一般的なプログラミング言語においてデータをグローバル変数として定義し、各地域（下位コードブロック）でグローバル変数を利用するのと同じ原理である。
【００４８】
図３に示すように、上位コードブロックは少なくとも一つの下位ブロックで構成された領域のデータを管理し、このような構造は継続的に階層化できる。これは、たとえば、Ｃ言語の場合、複数の中括弧（‘｛’または‘｝’）を用いて無限に複数層のローカル変数をサポートし、また、上位コードブロックが持つローカル変数は下位コードブロックでアクセスすることが可能なローカル変数のような役割を果たすことができる。
【００４９】
以下、図４を参照して、本発明の一実施形態によるコードブロック、およびコードブロックを用いてソフトウェアコードを実現する方法を説明する。
【００５０】
つまり、コードブロックを用いてソフトウェアを実現するためのツールにおいて、新しいコードブロックを追加する行為は、当該コードブロックが所属する位置に新たなコードブロックを生成することを示す。コードブロックを実現するサポートツール上で最初のコードブロックを追加しなくても、最上位のコードブロックは常に存在する。たとえば、Ｃプログラミング言語における最上位のコードブロックはＭａｉｎ（）関数として定義できる。また、コードブロックが追加されると、選択されたコードブロックの種類に応じて条件文の定義、入出力変数の義、コードブロックの順序（ブロック番号）定義、当該コードブロックの変数宣言が要求される。
【００５１】
図４に示すように、ユーザーは、コードブロックの内部属性コードをコーディングウィンドウを介して実現することができる。具体的に、コードブロックは、コーディングウィンドウを介してコードブロックの変数宣言／コードブロックの入力変数割り当て／条件文／当該コードブロックの機能実現コード／コードブロックの出力変数割り当ての内容を別個に管理することができ、コード実現の際に、当該位置に関連コードを位置させることができる。このようなコーディングウィンドウは、変数宣言ウィンドウ４１、入力変数割り当てウィンドウ４２、条件文ウィンドウ４３、コード入力ウィンドウ４４および出力変数割り当てウィンドウ４５のうちの少なくとも一つを含んで構成できる。つまり、コーディングウィンドウは、前記ウィンドウをすべて利用するのではなく、ユーザーが必要なウィンドウを選択してコーディングを行うことができる。
【００５２】
ここで、変数宣言ウィンドウ４１は、コードブロックの内部で利用されるすべての変数（すなわち、コードブロックの機能実現のために使用されるすべての変数）の宣言に使用され、入力変数割り当てウィンドウ４２は、入力変数に対する割り当てに使用される。また、条件文ウィンドウ４３は、条件文（例えば、Ｉｆ、Ｓｗｉｔｃｈ制御文など）コーディング、繰り返し文（例えば、Ｗｈｉｌｅ、Ｆｏｒ、Ｄｏ  ｗｈｉｌｅ制御文など）コーディングで条件部分を宣言するために使用される。また、コード入力ウィンドウ４４は、平叙文コーディング、条件文コーディング、繰り返し文コーディングで実質的に機能の実行を定義するために使用される内部属性コードの入力に使用される。また、最終的に、出力変数割り当てウィンドウ４５は当該コードブロックから上位コードブロックへ値を返すために使用される。
【００５３】
上述したように、コードブロックを追加すると、当該コードブロックの内部属性コードにコードブロックの変数宣言／コードブロックの入力変数割り当て／条件文／コードブロックの出力変数割り当て情報が管理できる。当該コードブロックの主要内容は当該コードブロックの機能実現コードであるため、ユーザーまたはオペレーターはコードブロックの内部属性情報をコードブロックの位置および役割に応じて定義することができるので、ユーザーまたはオペレーターは主要内容である機能実現コードの完成に対する集中が可能となる。
【００５４】
また、図４に示されている変数の宣言と割り当てのためのウィンドウ４１、４２、４３、４５は別個の領域で当該内容の定義が可能であり、これは当該コードブロックの機能実現のためのコード（すなわち、コード入力ウィンドウを介して入力された内部属性コード）とは別に管理できる。コードブロックを追加するときに、コード入力ウィンドウ４４の部分を除いた残りの部分は、当該コードブロックの内部属性情報領域に機能を定義して当該コードブロックを使用することができる。コードブロックの内部属性情報で管理される内容も、ソフトウェアコードへの変換時に図４と同じ順序でコーディングできる。
【００５５】
このようにコーディングウィンドウを介して設定されたコードブロックの内部属性コードのユーザーによって、予め設定されたプログラミング言語に変換できる。
【００５６】
以下、図５を参照して、本発明の一実施形態によって生成されたコードブロックをコードに変換する過程を述べる。より具体的に、図５を参照して、上位コードブロックが下位コードブロックを含む場合、これらのコードブロックをコードに変換する過程について述べる。
【００５７】
コードで表現されるコードブロックは、Ｃ言語の関数（Ｆｕｎｃｔｉｏｎ）に類似する特性を有することができる。すなわち、Ｃ言語の関数は、関数領域の内部で使用されるローカル変数が存在し、関数で使用される引数を関数の外部から持ってくることができる。そして、結果値として特定の値を返すことができる。
【００５８】
Ｃ言語における関数は、ブラックボックスのようなもので、関数の内部でどのような行為を行うかについて、データ共有の観点から、特定の入力値を入力したときに特定の結果を導出するように思われる。つまり、関数は、外部の引数を入力すると、約束された行為を行ったり結果値を返したりするものなので、自分だけのデータ領域を持つことができる。また、このような関数は、順序に従って順次呼び出されるとき、その機能を行うソフトウェアコンポーネントに区分できる。
【００５９】
上述したように、ブロック間のデータ共有および制御フローについて説明すると、データ共有は下位コードブロックが必要とする入出力データを、上位コードブロックがブロック内部のデータとしてすべて所有するように構造化することであり、制御フローは階層的なブロック構造において同じ階層間にのみ存在するようにすることにより、制御フローとデータ流れを分離するのである。言い換えれば、一つのコードブロック内に複数の下位コードブロックが存在すると仮定すると、すべての下位コードブロックは上位コードブロックでそれぞれが必要とするすべてのデータにアクセスすることが可能なので、まるで全ての入出力データがグローバル変数のように運用でき、制御フローは下位コードブロック間にのみ定義すればよい。このような構造はすべての階層で適用され、各階層で定義された制御フローは下位コードブロック間で定義された制御フローに連係することにより、コードブロックは順序付けされる。
【００６０】
ここで制御フローを決定する方法とデータ共有方法は詳細に上述されているので、重複部分に関する説明は省略する。
【００６１】
コードブロックは、このようなデータ領域と制御フローの特性を有することができる。具体的に、Ｃ言語の関数機能とコードブロックとの相違点は、関数は特定の時点に複数のコードで共通に呼び出して使用可能であるが、コードブロックは特定の位置に所属して独立して決められた役割を果たすことにある。
【００６２】
たとえば、管理番号３のコードブロックが存在し、このようなコードブロック内に管理番号３２のコードブロックが所属していると仮定する。この場合、管理番号３のコードブロック内に所属している３２コードブロックは、３コードブロックから入力引数を受けて演算を実行した後、約束された出力引数をさらに３コードブロックに返す。ここで、入出力データ以外の３２コードブロック内のすべての引数と行為は３２コードブロック内で独立して実行できる。また、これは上位コードブロックとしての３コードブロックだけでなく、他のいかなるコードブロックにも影響を与えない。
【００６３】
Ｃ言語において上記の特性を有するコードを関数を用いて実現することができるが、Ｃ言語では関数の内部に関数を宣言することをサポートしないため、本発明では中括弧（Ｂｒａｃｅｓ、｛｝）を用いてコードブロックを実現する。中括弧はＣコード内で領域をブロックに区分する方法の一つであって、中括弧の内部に宣言された変数は当該領域でのみ認識されるローカル変数となる。このような事項は、図５を参照すればより明らかになる。すなわち、上位コードブロックは、下位コードブロックを含む構造であって、中括弧で区分されて表現できる。
【００６４】
また、上位中括弧（上位コードブロック）に宣言された変数（入力引数）は、下位の中括弧（下位コードブロック）で宣言された変数に再び割り当てさせて演算を行い、最終的に、結果値をさらに上位中括弧（上位コードブロック）に宣言された変数（出力引数）として返す方法によりコードブロックが実現される。すなわち、コードブロックの内部で処理される行為は、いずれもコードブロックのローカル変数を用いて行われるので、他のコードブロックと独立した関係を維持することができる。コードブロックは、次の特徴を満足すると、いかなる方法でも生成が可能である。
【００６５】
また、前記コードブロックの関係は、前述したように包含関係であってもよいが、並列関係への形成も可能である。このような事項は、前述したコードブロックが包含関係で実現された図６、およびコードブロックが並列関係で実現された図７を参照すると、より明らかになる。
【００６６】
すなわち、図６に示されている包含関係は、少なくとも１つのコードブロックが他のコードブロック内に存在するものと定義できる。包含関係にあるコードブロックにおいて、上位コードブロックは、上位コードブロックで使用される変数の宣言以外に、他の別個のコードを持たない。これにより、包含関係にあるコードブロックの制御フローは、上位ブロックの変数宣言部分がまずコーディングされ、その後、含まれているコードブロックのコードを位置させればよい。したがって、後述する並列関係においてコードブロックの制御フローによって上位コードブロックのコードの位置が決定されると、下位コードブロックのコードはその範囲内で下位コードブロック間のコード順序を決定することにより、ソフトウェアの全体コードを構成することができる。
【００６７】
また、図７に示すように、コードブロックが包含関係におらず同じ上位コードブロックに含まれている関係を並列関係と定義する。並列関係にあるコードブロックは順序付けされなければならない。例えば、図７で表現されているように、１つのコードブロックをコードブロック１、他のコードブロックをコードブロック２にして制御フローを定義する場合、コードブロック形態がソフトウェアコードに変換されると、これは上述した図５のような形態でなされ得る。
【００６８】
以下、図８を参照して、本発明の一実施形態に係るソフトウェアコードの視覚的実現装置について述べる。図８は本発明の一実施形態に係るソフトウェアコードの視覚的実現装置を示すブロック図である。図８に示すように、本発明の一実施形態に係るソフトウェアコードの視覚的実現装置は、コードブロック生成部１１０、コードブロック設定部１２０、コードブロック権限設定部１３０、コードブロック検証部１４０、およびコードブロック変換部１５０を含んで構成できる。以下、これらの構成について具体的に述べる。
【００６９】
コードブロック生成部１１０は、ソフトウェアの実現について、顧客の要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成する機能を行う。
【００７０】
さらに詳しくは、コードブロック生成部１１０は要求事項（Ｒｅｑｕｉｒｅｍｅｎｔ）を導き出し、このような要求事項は１つのコードブロックとして実現できる。ここで、要求事項は、階層構造（Ｌａｙｅｒｅｄ）を有し、制御段階を持たない。さらに、要求事項は、実現されるべきコードでそれぞれ自分の役割を担当する。また、要求事項はそれぞれ自分の特性に応じてインデックス（Ｉｎｄｅｘ）を有することができる。ひいては、要求事項はグループを形成することができ、このようなグループもインデックスとして表示できる。
【００７１】
コードブロック生成部１１０は、要求事項を用いてコードブロックを生成する。この際、コードブロックは制御段階を持つことができ、それぞれの要求事項はコードブロックに割り当てられ得る。ここで、コードブロックに対する生成は２つの方式に大別される。すなわち、第１の生成方法は、例えば、図４に示されているコードウィンドウ内に、すべての属性が空いているコードブロックを生成する方式である。また、第２の生成方法は、格納部８３に既に格納されたコードブロック形態を呼び出してコードブロックを生成する方式である。すなわち、格納部８３は、多様な形態のコードブロックを含むことができる。具体的に、格納部８３は、制御フローに従って平叙文コードブロック、繰り返し文コードブロックおよび条件文コードブロックを含むことができる。ここで、格納部８３に格納されたコードブロックの種類は次のとおりである。
【００７２】
ここで、平叙文コードブロックに対する例示は図１０に示されている。図１０はいわゆるＧｏｔｏ  Ｎｅｘｔコードブロックを示し、これは一般的なコードブロックであって、別個の制御フローが存在しないコードブロックを示す。具体的に、Ｇｏｔｏ  Ｎｅｘｔコードブロックは、一般的なコードブロックであって、当該コードブロックの後に次の順序のコードブロックが存在するように指定することができる。
【００７３】
繰り返し文コードブロックに対する例は図１１〜図１３に示されている。すなわち、図１１はＦｏｒコードブロック、図１２はＷｈｉｌｅコードブロック、図１３はＤｏ  ｗｈｉｌｅコードブロックをそれぞれ示す。図１１〜図１３に記載された繰り返し文コードブロックは、条件が満足される間、当該コードブロックの内部で一定の行為を繰り返し行う繰り返し文の機能を実行するコードブロックである。ところが、コードブロックの観点からみると、繰り返し文の内部行為が繰り返し行われるとしても、結局はコードブロックの順序にすべきことを処理しているのと同様である。つまり、当該コードブロックが１回実行されるものとみなされる。
【００７４】
条件文コードブロックに対する例示は図１４及び図１５に示されている。すなわち、図１４はＳｗｉｔｃｈコードブロックを、図１５はＩｆコードブロックをそれぞれ示す。図１４及び図１５に記載された繰り返し文コードブロックは、入力された変数が特定の条件に該当するとき、該当する機能を行うコードブロックを示す。
【００７５】
また、コードブロックは後述の関数コードブロックをさらに含むことができる。関数コードブロックは関数を用いて実現されるコードブロックを示す。これに対する例示は図１６及び図１７に示されている。このような関数コードブロックは、Ｃ言語における関数使用と同様に、最上位ブロックで宣言し定義して使用できる。図１６に示すように、関数コードブロックは、他のコードブロックとは、ローカル変数宣言／入力変数割り当て／演算実行／結果返し機能がすべて同じであるが、さらに関数名（引数）宣言とブロックの名称として関数名（引数）を使用することが相違する。このような理由から、関数コードブロックは最上位ブロックで宣言することができる。
【００７６】
図８に示されているコードブロック設定部１２０は、ユーザーから入力された情報に基づいて、前記コードブロック内に含まれるコードブロック属性またはコードを設定する機能を行う。ここで、コードブロック属性は、先に図１を参照して記載したように、当該コードブロックに対する機能情報と説明情報を含む。つまり、このようなコードブロック属性は、１次元的にコーディングが行われて可読性に劣る従来のコーディング方式の問題を解消するために案出されたもので、ソフトウェアを実現するときに導出された要求事項を具体化して設計された機能の簡略な説明および詳しい説明が含まれる。具体的には、機能情報ソフトウェアを実現するために導出された、またはユーザーの要求事項を具体化して設計された機能についての説明を示し、説明情報は前述した機能情報についての具体的な説明を含むことを示す。ここで、説明情報に含まれる情報は、例えば、機能に対する詳細な説明、絵および図表などのように多様な形態の情報が含まれ得る。このようなコードブロック属性を用いて、従来のコーディング方式で１次元的に表現される方式、例えば注釈などとは異なり、ユーザーによるより直観的な理解が可能となる。
【００７７】
また、内部属性コードは、図４を参照して説明したように、コーディングウィンドウを介してユーザーから設定できる。ここで、コーディングウィンドウは変数宣言ウィンドウ、入力変数割り当てウィンドウ、条件文ウィンドウ、コード入力ウィンドウ、および出力変数割り当てウィンドウを含んで構成でき、これらのそれぞれについては先に詳細に叙述されたので、重複部分に対する叙述は省略する。このように設定されたコードブロック属性と内部属性コードは、ユーザーから当該コードブロックに対する表示要請があれば、ディスプレイ部８２を介してコードブロックに対する機能情報、説明情報及び内部属性コードが表示される。
【００７８】
また、コードブロック設定部１２０は、コードブロック生成部１１０を介して複数のコードブロックが生成される場合、ユーザーの設定に基づいて、複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類することができる。これに対する例示は図１及び図２に示されている。このように分類された階層的な構造は、ユーザーまたはオペレーターによって直観的にソフトウェアの分析に役立てることができるという利点がある。また、このような構造化を介して、例えば、追ってのソフトウェアの編集においても管理がより容易になるという利点がある。
【００７９】
たとえば、ユーザーまたはオペレーターが階層的なツリー構造または階層的なブロック構造に含まれている複数のコードブロックのうちのいずれかを他の位置にコピーする場合を仮定する。すなわち、コードブロックを用いてソフトウェアを構成する場合、同じ機能を行うものの、他の位置に所属するコードブロックが存在することもあり、類似する機能を有するコードブロックが存在することもある。このとき、コードブロックをコピーして他のコードブロックの下に貼り付けることができる。コードブロックを貼り付けると、管理番号／入力変数宣言／出力変数宣言は消去され、ブロック番号は当該コードブロックの位置に基づいて自動的に割り当てられる。コードブロックをコピーして保存されるデータは、機能（要求事項）／記述とコードの内容中のコードの内部変数宣言／条件／機能実現コードに区分される。コピーされるコードブロックが選択されると、選択されたコードブロックの下位コードブロックも一緒にコピーされる。コピーされるコードブロックの下位コードブロックのデータはすべてそのまま維持できる。
【００８０】
また、コードブロックは、階層的なツリー構造または階層的なブロック構造における位置によって、上位コードブロックと下位コードブロックに分類できる。また、前述したように、下位コードブロック内に含まれている内部属性コードは、上位コードブロックに対して独立して実現され、上位コードブロックは、内部に変数宣言機能のみを実行するだけで、追加のコードを含まない。つまり、上位コードブロックは、下位コードブロックが必要とする共有データ（下位コードブロック間でデータを共有することができるようにデータバスの役割を行う）のみを含み、一つ以上の下位コードブロックのみを含み、一つ以上の下位コードブロックは上位コードブロックから入力引数を受信し、上位コードブロックへ出力引数を返す。
【００８１】
また、コードブロック設定部１２０は、階層的なツリー構造または階層的なブロック構造におけるコードブロックの位置に基づいて、自動的にブロック番号を割り当てることができる。すなわち、例えば、１つのコードブロック内に２つのコードブロックが含まれている場合を仮定する（図１８参照）。図１８に示すように、最上位コードブロックはブロック番号が１に設定されると仮定する。ここで、このような最上位コードブロックは２つの下位コードブロックを含んでおり、これらの下位コードブロックはそれぞれブロック番号が１１および１２に割り当てられ得る。また、ここでブロック番号１２のコードブロックが例えば２つのコードブロックをさらに含むと、これらの２つのコードブロックはそれぞれ１２１および１２２のブロック番号が割り当てられ得る。ここで、ブロック番号の割り当て方法は、単に例示に過ぎず、他の様々な方式で応用可能である。また、ここで、ブロック番号１１、１２１および１２２のコードブロックはそれぞれ最下位コードブロックとなるので、これらは内部属性コードを含んで実現できる。これに対し、ブロック番号１および１２のコードブロックはそれぞれ下位コードブロックを含むので、これらは変数宣言のためのコードの他に別のコードを含まなくなる。
【００８２】
また、コードブロック設定部１２０は、コードブロックに対するインデックスをさらに設定することができる。つまり、ソフトウェアが数個のコードブロックのみを含む場合、管理が容易であるが、実際の実現上では、数多くのコードブロックが一つのソフトウェアの実現のために使用できる。この場合、ユーザーまたはオペレーターに、より直観的に当該コードブロックが表すところを知らせるために、当該コードブロックにインデックスを追加することができる。これにより、それぞれのコードブロックはインデックス／機能（要求事項）／記述／コードを管理番号およびブロック番号を用いて管理することができ、必要に応じて、一定の領域ごとにまたは全体構成に対してインデックス／機能（要求事項）／記述／コードでそれぞれ表現できる。これに対する例示は図１９に示されている。
【００８３】
すなわち、図１９に示すように、ソフトウェアで計算機を実現する場合が存在しうる。このような計算機は、ユーザーインターフェースを表すコードブロック、演算子を表すコードブロック、およびグラフィックを表すコードブロックを含むことができる。この際、このようなコードブロックの表すところが明らかになるように、コードブロック上にこのようなインデックス機能を追加することにより、ユーザーまたはオペレーターがより容易にプログラミングを実行することができるようになる。
【００８４】
また、このようなインデックスは、コードブロックに対するインデックスだけでなく、上位コードブロックで管理する変数に対するインデックスも含むことができる、すなわち、上位コードブロックの場合、多段階の下位コードブロックが含まれてもよく、場合によっては相当多い量の変数を管理することができる。このような場合、Ｃ言語の例を挙げて説明すると、変数を構造体を用いてグループ化することができ、このような構造体もインデックスを介して管理することにより、より明確にソフトウェアを外形的に管理することができる。
【００８５】
コードブロック権限設定部１３０は、他のユーザーからのアクセス権限を設定するためのコードブロックのアクセス権限を設定する機能を行う。具体的には、コードブロック権限設定部１３０は、全体コードブロック構造におけるそれぞれの、少なくとも一部、または全体コードブロックに対して権限設定が可能である。選択されたコードブロックは、下位コードブロックが含まれるように設定することができ、下位コードブロックが含まれないようにセキュリティ設定が可能である。セキュリティが設定されたコードブロックは、機能／説明／機能実現コードを権限のある者以外には見ることができないように設定し、或いは修正権限が制限できる。このようなアクセス権限設定は、機能／説明／内部属性コードに対して個別設定も可能である。アクセス権限設定は、一部のコードブロックのみが他人に見えるように設定することもできる。コードブロックは、多段階（見えないように設定／見えるが、修正できないように設定／入出力変数およびメッセージは修正ができないように設定／すべてのデータの修正ができるように設定）のセキュリティ設定も可能である。特定のコードブロックの変数およびメッセージは、管理者によって定められたコードブロックでのみ使用されるようにセキュリティ設定する機能がサポートされる。
【００８６】
コードブロック検証部１４０は、ランダム変数を用いて、コードブロックに含まれている入力変数を繰り返し入力してコードブロックを検証する機能を行う。たとえば、ユーザーが検証のためのコードブロックを選択すると、選択されたコードブロックの下位コードブロックと一緒に検証単位となる。その後、ディスプレイ部８２上に、入出力引数で構成された部分と入出力引数の条件部分で構成された画面が表示される。ここで、条件部分に入出力引数それぞれに対する入出力条件を明示して検証を行うと、条件に明示された範囲内でランダム変数を用いて入力変数を持続的に入力することにより、オペレーターが止まるまで自動的に多様な変数の入力を介してコードを検証することができる。
【００８７】
ここで、検証方法は、ランダム変数を利用するか、或いは条件内のすべての値に対して順次変数の入力および出力値を検証する方式で行われ得る。試験を介してエラーが発生する場合、エラーが発生したコードブロックの位置を知らせるか（コンパイルエラー時にコンパイラが知らせるコードのラインが所属しているコードブロックの認識を介して）、或いは出力変数の条件の中でもエラーの発生した出力変数名を知らせる方式が行われ得る。検証実行の際に、コンピュータのメモリ使用およびＣＰＵ使用状態なども試験結果の画面に連動して表示できる。入力変数／出力変数の条件は数字および記号（＜、＞）で構成され、条件は重複表現が可能である。検証方法において順次試験が選択されると、変数の宣言された型に応じて、当該変数で表現されるすべての数字を順次適用して検証を行う。検証の開始および終了は、すべての数字の適用が完了すると自動的に終了するか、或いはオペレーターの終了ボタンを押すことにより終了する。
【００８８】
また、図面において、コードブロック検証部１４０はコードブロックの設定後にのみ検証を行うように示されているが、これは単に発明の理解を助けるためであり、コードブロックの設定後のどの段階でも検証を行うことができる。
【００８９】
コードブロック変換部１５０は、ユーザーからの要請があれば、前記コードブロックを、予め設定されたプログラミング言語に対応するコードに変換する機能を行う。これに対する例示は図２０に示されている。図２０に示した上位コードブロックは２つの下位コードブロックを含み、これらの下位コードブロックは並列関係で含まれている。また、このようなコード変換についての方法は詳細に前述したので、重複部分についての説明は省略する。また、コードブロック変換についての叙述において、本明細書はＣ言語を中心に叙述されているが、これは単に明細書の理解を助けるための例示に過ぎず、他の様々な形態の言語に適用可能である。
【００９０】
また、図面において、コードブロック変換部１５０はコードブロックに対する権限設定後にのみ変換を行うように示されているが、これは単に発明の理解を助けるためであり、コードブロック設定後のどの段階でも変換を行うことができる。
【００９１】
また、本発明のソフトウェアコードの視覚的実現装置１００は、コードブロックを用いたソフトウェア実現の際に、関連する機能の相関関係、変数あるいはメッセージを用いて当該データの流れや関係様相を検証するとき、ユーザーまたはオペレーターにコードブロックの様々なビュー機能を提供することができる。コードブロックはブロック番号／管理番号／コードブロックに宣言された変数およびメッセージを中心に関連コードブロックを階層的ツリー構造または階層的ブロック構造で表示する機能を有する。
【００９２】
ここで、コードブロック表示範囲は、特定のコードブロックを含むことにより様々に設定することが可能である。コードブロックに宣言された変数が基準となるとき、上位コードブロックから下位コードブロックに入力／出力される変数は同じ変数として認識され、すべての関連コードブロックを表示することができる。コードブロックを用いたソフトウェア実現ツールは、各コードブロックに属性の割り当てが可能である。たとえば、データの保存に関わる機能を一つの属性として定義し、それに関連したコードブロックに当該属性を定義することができる。定義されたデータの保存に関連した属性を選択し、それに関連したコードブロックのみを表示（ツリー構造／ブロック構造）することができる。このような属性情報は、重複して設定が可能であり、１つのコードブロックに重複して定義することも可能である。コードブロックのコード情報は、一つのソフトウェアコード（Ｃ言語のソースコード形式）で表現できる。機能（要求事項）／記述は、１つの報告書形式で管理番号を基準に機能と記述を同時に表示することができる。
【００９３】
以下、図９を参照して、コードブロック設定部についてさらに述べる。図９は本発明の一実施形態に係るソフトウェアコードの視覚的実現装置に含まれているコードブロック設定部を示すブロック図である。図９に示すように、コードブロック設定部１２０は、コードブロック属性設定モジュール１２１、コード設定モジュール１２２、関係設定モジュール１２３およびブロック番号設定モジュール１２４を含んで構成できる。以下の叙述において、前述した内容と重複する事項についての説明は省略する。
【００９４】
コードブロック属性設定モジュール１２１は、コードブロック内のコードブロック属性を設定する機能を行う。すなわち、コードブロック属性設定モジュール１２１は、コードブロック内でコードブロックに対する機能情報と説明情報を設定する機能を行う。これは入力部を介したユーザーの入力によって可能である。上述したように、このようなコードブロック属性は、１次元的にコーディングが行われて可読性に劣る従来のコーディング方式の問題点を解消するために案出されたもので、ソフトウェアを実現するときに導出された要求事項を具体化して設計された機能の簡略な説明（簡単な機能説明）、および詳しい説明（詳細な説明、絵および図表など）が含まれる。このようなコードブロック属性を用いて、従来のコーディング方式で１次元的に表現される方式、例えば注釈などとは異なり、ユーザーによるより直観的な理解が可能となる。
【００９５】
コード設定モジュール１２２は、コードブロック内の内部属性コードを設定する機能を行う。これは、図４および図８の説明で述べたように、ユーザーがコーディングウィンドウを介して入力したコードによって設定可能である。また、コーディングウィンドウは、変数宣言ウィンドウ、入力変数割り当てウィンドウ、条件文ウィンドウ、コード入力ウィンドウおよび出力変数割り当てウィンドウのうちの少なくとも１つを含んで構成できる。これについては先に詳細に述べたので、重複部分についての説明は省略する。
【００９６】
関係設定モジュール１２３は、コードブロック生成部１１０を介して複数のコードブロックが生成される場合、ユーザーの設定に基づいて、複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類する機能を行う。また、このような分類を介して、関係設定モジュール１２３は複数のコードブロックを並列関係または包含関係に設定することができる。これらの関係に対する設定方法と種類については先に詳細に述べたので、これについての追加説明は省略する。
【００９７】
ブロック番号設定モジュール１２４は、関係設定モジュール１２３で設定された階層的なツリー構造または階層的なブロック構造におけるコードブロックの位置に基づいて、コードブロックに自動的にブロック番号を割り当てる機能を行う。このような割り当て方法は、例えば、最上位コードブロックにはｘ、最上位コードブロックに含まれる下位コードブロックにはｘｙ、その次の下位コードブロックにはｘｙｚのような形で実現可能である。ただし、このような実現方法は単に例示に過ぎず、コードブロックに対する位置が把握できる多様な形態で実現可能である。
【００９８】
以下、図２１を参照して、本発明の一実施形態に係るソフトウェアコードの視覚的実現方法についてさらに述べる。図２１は本発明の一実施形態に係るソフトウェアコードの視覚的実現方法を示すフローチャートである。以下の叙述では、図１〜図２０を参照して言及される部分と重複する事項についての説明は省略する。
【００９９】
まず、ユーザーにコードブロックを生成するか否かを確認する段階（Ｓ１１０）が行われる。つまり、本発明のソフトウェアコードの視覚的実現方法は、例えば、ユーザーが新たにコードブロックを生成する機能を行うことができるが、既に生成されたコードブロックに対する編集（例えば、コピー、削除および編集）も可能である。これにより、コードブロックを生成するか否かを確認する段階（Ｓ１１０）で、これについての確認が必要である。その後、コードブロックを生成するか否かを確認する段階（Ｓ１１０）で、もしユーザーが新しいコードブロックを生成することを望むと確認される場合には、コードブロックを生成する段階（Ｓ１２０）が行われ、もしユーザーが新しいコードブロックを生成することを望まないと確認される場合には、コードブロック属性または内部属性コードを設定する段階（Ｓ１３０）が行われる。
【０１００】
コードブロックを生成する段階（Ｓ１２０）では、コードブロック生成部によって、要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成する機能を行う。ここで、生成されたコードブロックは、ユーザーが新しい編集を望むときに使用される内部の空いた基本的な枠組み、格納部に格納された平叙文コードブロック、繰り返し文コードブロックおよび条件文コードブロックを含むことができる。これらのコードブロックの種類については図１０〜図１７を参照して詳細に説明されたので、これについての追加説明は省略する。また、このようなコードブロックが生成されると、これに対するブロック番号が自動的に割り当てられる。
【０１０１】
その後、コードブロック設定部により、ユーザーから入力された情報に基づいて、コードブロック内に含まれるコードブロック情報、すなわち、コードブロック属性または内部属性コードを設定する段階（Ｓ１３０）が行われる。このようなコードブロック属性または内部属性コードを設定する段階（Ｓ１３０）では、例えば、コードブロックを生成する段階（Ｓ１２０）で新しいコードブロックが生成された場合、生成されたコードブロックに対するコードブロック属性と内部属性コードを設定することができる。ここで、コードブロック属性は上述したように機能情報と説明情報を含む。このようなコードブロック属性と内部属性コードに対する設定方法については先に詳細に述べたので、これについての追加説明は省略する。
【０１０２】
また、コードブロック属性または内部属性コードを設定する段階（Ｓ１３０）は、コードブロックの位置、ブロック番号、管理番号、インデックスおよび前記内部属性コードをコードブロックに含ませる段階をさらに含むことができる。また、図示してはいないが、コードブロック属性または内部属性コードを設定する段階（Ｓ１３０）の後、ユーザーからコードブロックに対する表示要請があれば、ディスプレイ部を介してコードブロックに対する機能情報、説明情報および内部属性コードを表示する段階をさらに含んでもよい。
【０１０３】
また、コードブロック属性または内部属性コードを設定する段階（Ｓ１３０）は、コードブロック生成部を介して複数のコードブロックが生成される場合、ユーザーの設定に基づいて複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類することができる。つまり、複数のコードブロックはコードブロックの位置に基づいて並列関係または包含関係で形成できる。これにより、ユーザーは、複数のコードブロックが存在しても、これらが階層的なツリー状または階層的なブロック状に構成されるので、容易に管理を行うことができる。
【０１０４】
また、前述したように、このような階層的なツリー構造または階層的なブロック構造における位置に基づいて、コードブロックは上位コードブロックと下位コードブロックに区分できる。また、下位コードブロック内に含まれている内部属性コードは上位コードブロックに対して独立して実現できる。
【０１０５】
ここで、上位コードブロックは一つ以上の下位コードブロックを含み、一つ以上の下位コードブロックは上位コードブロックから入力引数を受信し、上位コードブロックに出力引数を返すことができる。
【０１０６】
また、コードブロックは制御フローに基づいて平叙文コードブロック、繰り返し文コードブロックおよび条件文コードブロックを含むことができ、これについては先に図８〜図１７を参照して詳細に説明したので、これについての追加説明は省略する。
【０１０７】
コードブロック設定部によってコードブロックに対するブロック番号を設定する段階（Ｓ１４０）では、コードブロックの階層的位置に基づいてブロック番号を自動的に割り当てる。また、このようなブロック番号は、ブロックの移動によって自動的に設定可能であり、ユーザーが任意に変更することができない。つまり、このようなブロック番号の割り当ては、コードブロックを生成する段階（Ｓ１２０）、またはコードブロック属性または内部属性コードを設定する段階（Ｓ１３０）で設定されたコードブロックの位置に基づいて、コードブロック設定部によってコードブロックに対するブロック番号を設定する段階（Ｓ１４０）で行われ得る。
【０１０８】
コードブロックに対するブロック番号を設定した後、コードブロックの検証を行うか否かを判断する段階（Ｓ１５０）が続く。ここで、コードブロックの検証が必要であると判断されれば、すなわち、ユーザーがコードブロックの検証を望む場合には、コードブロックを検証し（Ｓ１６０）、ユーザーがコードブロックの検証を望まない場合には、コードブロックの権限を設定する（Ｓ１７０）。
【０１０９】
コードブロックを検証する段階（Ｓ１６０）は、コードブロック検証部によってランダム変数を用いて、コードブロックに含まれている入力または出力変数を繰り返し入力または検証してコードブロックを検証する機能を行う。また、コードブロックを検証する段階（Ｓ１６０）は、このようなランダム変数を用いる方法だけでなく、条件内のすべての値に対して順次変数の入力がなされる方式で行うことができる。また、このような検証過程については図８を参照して詳細に説明されたので、これについての追加説明は省略する。
【０１１０】
その後、コードブロックに対する権限を設定する段階（Ｓ１７０）が行われる。さらに、コードブロックに対する権限を設定する段階（Ｓ１７０）は、必須的に行われる段階ではなく、ユーザーの必要に応じて選択的に実行可能である。つまり、コードブロックに対する権限を設定する段階（Ｓ１７０）は、ユーザーの必要に応じて全体コードブロック構造におけるそれぞれの、少なくとも一部または全体コードブロックに対してセキュリティ設定を行う。
【０１１１】
その後、追加的なコードブロックの生成または編集作業が必要であるか否かを判断する段階（Ｓ１８０）が行われる。ここで、ユーザーの選択に応じてさらにコードブロックに対する生成または編集作業を行わなければならないと判断されると、再びコードブロックを生成する段階（Ｓ１１０）に戻って上述の段階を繰り返し行う。もし、ユーザーの選択に応じて、さらにコードブロックに対する生成または編集作業を行わなくてもよいと判断されると、コードブロックを、予め設定されたプログラミング言語に対応するコードに変換する（Ｓ１９０）。
【０１１２】
その後、コードブロック変換部によって、コードブロックを、既に設定されたプログラミング言語に対応するコードに変換する段階（Ｓ１９０）が続く。このような変換過程については先に本発明の一実施形態に係るソフトウェアコードの視覚的実現装置を参照して詳細に説明されたので、これについての追加叙述は省略する。
【０１１３】
以下、図２２を参照して、図２１に示したコードブロック情報を設定する段階についてさらに述べる。図２２は、本発明の一実施形態に係るソフトウェアコードの視覚的実現方法において、ユーザーの入力に基づいてコードブロック情報を設定する段階を示すフローチャートである。以下の叙述では、先に開示された内容と重複する部分は省略する。
【０１１４】
まず、新しいコードブロックが生成されたか否かを判断する判断段階（Ｓ２１０）が行われる。つまり、新しいコードブロックが生成されたか否かを判断する判断段階（Ｓ２１０）を介して、ユーザーが新しいコードブロックを生成し、これに対する作業を行うことを望むのか、あるいは既存のコードブロックを編集することを望むのかについて判別した後、新しいコードブロックが生成されたと判断される場合には、新しいコードブロックのコードブロック情報を設定し（Ｓ２３０）、新しいコードブロックが生成されていないと判断される場合には、既存のコードブロックに対する編集（Ｓ２２０）を行う。
【０１１５】
既存のコードブロックに対する編集段階（Ｓ２２０）は、階層的なツリー構造または階層的なブロック構造内でコードブロックの編集、例えばコードブロックのコピー、移動、削除および編集を行う段階である。つまり、既存のコードブロックに対する編集段階（Ｓ２２０）は、図２１の新しいコードブロックを生成する段階（Ｓ１２０）で別個の新しいコードブロックに対する生成なしに行われることもあり、または、新しいコードブロックを生成したとしても、ユーザーの意図に応じて編集される過程を示す。既存のコードブロックに対する編集過程（Ｓ２２０）は先に図８を参照して詳細に開示されたので、これについての追加説明は省略する。
【０１１６】
新しいコードブロックに対するコードブロック情報を設定する段階（Ｓ２３０）は、新しいコードブロックを生成する段階（Ｓ１２０）で生成された新しいコードブロックに対するコードブロック情報を設定する段階である。ここで、コードブロック情報は、機能および説明情報を含むコードブロック属性と、実質的にソフトウェアコードが実現される内部属性コードを含む。つまり、コードブロックを用いてソフトウェアを実現するとき、上位コードブロック内で（上位ブロックに所属している下位コードブロックで）使用される変数に対する定義が必要であり、定義された変数を入出力引数として用いて下位コードブロックの機能を定義する。新しいコードブロックに対するコードブロック情報を設定する段階（２３０）では、このような機能定義や変数設定などの機能を行うことができる。しかし、常に順序が決まっているのではなく、まず概略的なブロックのみを定義した後、具体的な機能を実現してもよく、データの利用をまず定義し、各機能を実現してもよい。
【０１１７】
その後、コードブロックに対する位置および関係を設定する段階（Ｓ２４０）が行われる。本発明で開示されたコードブロックは、階層的なツリー構造または階層的なブロック構造で開示できることをその特徴とする。つまり、このようなコードブロックに対する位置および関係を設定する段階（Ｓ２４０）は、生成または編集されたコードブロックに対してその位置を設定し、他のコードブロックとの関係を設定して、エラーなしにコードブロックが実行されるようにする。
【０１１８】
その後、コードブロックが最下位コードブロックであるか否かを判断する段階（Ｓ２５０）が行われる。つまり、本発明に係るコードブロックは、上位コードブロックの場合、変数の割り当ての他に、追加のコード実現をせず、実質的なコードは最下位コードブロックに含まれる。このようなコードブロックの特性によってコードブロックが最下位コードブロックであるか否かを判断する段階（Ｓ２５０）が行われる。判断の結果、コードブロックが最下位コードブロックであると判断されると、ユーザーから内部属性コードの入力を受ける段階（Ｓ２６０）が続く。ユーザーから内部属性コードを入力された後、コードブロック設定部によってコードブロックに対するブロック番号を設定する段階（Ｓ１４０）を開始する。もし、コードブロックが最下位コードブロックではないと判断されると、コードブロックを生成するか否かを確認する段階（Ｓ１１０）が続いて、他のコードブロックを追加するかに対する判断をさらに行う。ここで、他のコードブロックに対する追加または編集機能が行われると、図２１に示した段階を再び行い、そうでなければ終了する。
【０１１９】
本発明に係るソフトウェアコードの視覚的実現方法は、様々なコンピュータ手段を介して実行できるプログラム命令形態で実現され、コンピュータ可読媒体に記録できる。前記コンピュータ可読媒体は、プログラム命令、データファイル、データ構造などを単独で或いは組み合わせて含むことができる。前記媒体に記録されるプログラム命令は、本発明のために特別に設計されて構成されたものであるか、あるいはコンピュータソフトウェアの当業者に公知になって使用可能なものである。コンピュータ可読記録媒体の例には、ハードディスク、フロッピーディスクおよび磁気テープなどの磁気媒体（ｍａｇｎｅｔｉｃ  ｍｅｄｉａ）、ＣＤ−ＲＯＭ、ＤＶＤなどの光記録媒体（ｏｐｔｉｃａｌ  ｍｅｄｉａ）、フロップティカルディスク（ｆｌｏｐｔｉｃａｌ  ｄｉｓｋ）などの磁気−光媒体（ｍａｇｎｅｔｏ−ｏｐｔｉｃａｌ  ｍｅｄｉａ）、およびＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を格納および実行するように特別に構成されたすべての形態のハードウェア装置が含まれる。プログラム命令の例には、コンパイラによって作られる機械語コードだけでなく、インタプリターなどを用いてコンピュータによって実行できる高級言語コードを含むことができる。このようなハードウェア装置は、本発明の動作を実行するために一つ以上のソフトウェアモジュールとして作動するように構成でき、その逆も同様である。
【０１２０】
本発明の原理の教示は、ハードウェアとソフトウェアの組み合わせとして実現できる。また、ソフトウェアは、プログラム格納部上で実際に実行されるアプリケーションとして実現できる。アプリケーションは、任意の適切なアーキテクチャを含むマシンにアップロードされ、マシンによって実行できる。好ましくは、マシンは一つ以上の中央処理装置（ＣＰＵ）、コンピュータプロセッサ、ランダムアクセスメモリ（ＲＡＭ）、および入／出力（Ｉ／Ｏ）インターフェースなどのハードウェアを持つコンピュータプラットフォーム上に実現できる。また、コンピュータプラットフォームはオペレーティングシステムおよびマイクロ命令コードを含むことができる。ここで説明された様々なプロセス及び機能は、マイクロ命令コードの一部、アプリケーションの一部、またはこれらの任意の組み合わせでありうる。これらはＣＰＵを含む多様な処理装置によって実行できる。さらに、追加データ格納部およびプリンターなどの様々な他の周辺機器がコンピュータプラットフォームに接続できる。
【０１２１】
添付図面に示されている構成システムコンポーネント及び方法の一部が好ましくはソフトウェアで実現されるので、システムコンポーネントまたはプロセス機能ブロック間の実際の接続は本発明の原理がプログラミングされる方式によって異なるという点がさらに理解されるべきである。ここでの教示が与えられると、関連技術分野の当業者は本発明の原理のそれらおよび類似する実施形態または構成を参酌することができるだろう。
【０１２２】
［項目１］
ソフトウェアの開発のために導出された要求事項と機能をコードとして実現するとき、プログラミング言語で利用されるソフトウェアコードを視覚的に実現するための方法であって、
コードブロック生成部によって、前記要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成する段階と、
コードブロック設定部によって、ユーザーから入力された情報に基づいて、前記コードブロック内に含まれるコードブロック属性または内部属性コードを設定する段階と
を含み、
前記コードブロック属性または内部属性コードを設定する段階は、前記コードブロックに対する機能情報、前記機能情報に対する説明情報および前記内部属性コードを前記コードブロックに含ませる段階を含むことを特徴とする、ソフトウェアコードの視覚的実現方法。
【０１２３】
［項目２］
コードブロック変換部によって、ユーザーからの要請があれば、前記コードブロックを、予め設定されたプログラミング言語に対応するコードに変換する段階をさらに含むことを特徴とする、項目１に記載のソフトウェアコードの視覚的実現方法。
【０１２４】
［項目３］
前記コードブロック属性または内部属性コードを設定する段階の途中または後、ユーザーから前記コードブロックに対する表示要請があれば、ディスプレイ部を介して前記コードブロックに対する機能情報、説明情報および内部属性コードを表示する段階をさらに含むことを特徴とする、項目１に記載のソフトウェアコードの視覚的実現方法。
【０１２５】
［項目４］
前記コードブロック属性または内部属性コードを設定する段階は、前記コードブロックの位置、ブロック番号、管理番号、インデックスおよび前記内部属性コードを前記コードブロックに含ませる段階を含むことを特徴とする、項目１に記載のソフトウェアコードの視覚的実現方法。
【０１２６】
［項目５］
前記コードブロック属性または内部属性コードを設定する段階は、前記コードブロック生成部を介して複数のコードブロックが生成される場合、前記ユーザーの設定に基づいて前記複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類する段階を含むことを特徴とする、項目４に記載のソフトウェアコードの視覚的実現方法。
【０１２７】
［項目６］
前記コードブロック属性または内部属性コードを設定する段階は、前記階層的なツリー構造または階層的なブロック構造におけるコードブロックの位置に基づいて、自動的にブロック番号を割り当てる段階を含むことを特徴とする、項目５に記載のソフトウェアコードの視覚的実現方法。
【０１２８】
［項目７］
前記ブロック番号を割り当てる段階で割り当てられたブロック番号は前記コードブロックに対する制御フローの順序決定に用いられ、前記ブロック番号はコードブロックの位置設定に基づいて自動的に割り当てられ、前記ブロック番号に基づいて順次コーディングが行われることを特徴とする、項目６に記載のソフトウェアコードの視覚的実現方法。
【０１２９】
［項目８］
前記コードブロックは、前記階層的なツリー構造または階層的なブロック構造における位置によって上位コードブロックと下位コードブロックに分類され、前記下位コードブロック内に含まれている内部属性コードは上位コードブロックに対して独立して実現され、上位コードブロックに含まれている下位コードブロックの入出力引数は特性によってグループ化されてインデックス化できることを特徴とする、項目１に記載のソフトウェアコードの視覚的実現方法。
【０１３０】
［項目９］
前記上位コードブロックは、一つ以上の下位コードブロックと前記下位コードブロックの変数宣言に対する内部属性コードを含み、前記一つ以上の下位コードブロックは、前記上位コードブロックから入力引数を受信し、前記上位コードブロックへ出力引数を返すことを特徴とする、項目８に記載のソフトウェアコードの視覚的実現方法。
【０１３１】
［項目１０］
前記コードブロックは、制御フローに従って平叙文コードブロック、繰り返し文コードブロックおよび条件文コードブロックを含むことを特徴とする、項目１に記載のソフトウェアコードの視覚的実現方法。
【０１３２】
［項目１１］
前記コードブロック内に含まれるコードブロック属性または内部属性コードを設定する段階は、既に生成されたコードブロックと前記コードブロックとの関係を包含関係または並列関係に設定する段階を含むことを特徴とする、項目１に記載のソフトウェアコードの視覚的実現方法。
【０１３３】
［項目１２］
前記コードブロック属性または内部属性コードを設定する段階で、前記内部属性コードは、
前記内部属性コードの入力変数および出力変数の宣言に使用される変数宣言ウィンドウ；
前記入力変数の割り当てに使用される入力変数割り当てウィンドウ；
条件文または繰り返し文の入力に使用される条件文ウィンドウ；
前記コードブロックに対する機能実現のためのソフトウェアコードの入力に使用されるコード入力ウィンドウ；および
前記出力変数の割り当てに使用される出力変数割り当てウィンドウのうちの少なくとも一つを含むコーディングウィンドウを介して、ユーザーから入力されることを特徴とする、項目１に記載のソフトウェアコードの視覚的実現方法。
【０１３４】
［項目１３］
前記コードブロック属性または内部属性コードを設定する段階の後、コードブロック検証部によって、ランダム変数を用いてまたは前記コードブロック内の条件文に入力または出力される変数を用いて前記コードブロックを検証する段階をさらに含むことを特徴とする、項目１に記載のソフトウェアコードの視覚的実現方法。
【０１３５】
［項目１４］
前記コードブロック属性または内部属性コードを設定する段階の後、コードブロック権限設定部によってコードブロックのアクセス権限を設定する段階をさらに含むことを特徴とする、項目１に記載のソフトウェアコードの視覚的実現方法。
【０１３６】
［項目１５］
ソフトウェアの開発のために導出された要求事項と機能をコードとして実現するとき、プログラミング言語で利用されるソフトウェアコードを視覚的に実現するための装置であって、
前記要求事項と機能に応じてソフトウェアコードをブロック単位で実現するために使用されるコードブロックを生成するコードブロック生成部と、
ユーザーから入力された情報に基づいて、前記コードブロック内に含まれるコードブロック属性または内部属性コードを設定するコードブロック設定部と
を含み、
前記コードブロック設定部は、前記コードブロックに対する機能情報、前記機能情報に対する説明情報、および前記内部属性コードを前記コードブロックに含ませることを特徴とする、ソフトウェアコードの視覚的実現装置。
【０１３７】
［項目１６］
ユーザーからの要請があれば、前記コードブロックを、予め設定されたプログラミング言語に対応するコードに変換するコードブロック変換部を含むことを特徴とする、項目１５に記載のソフトウェアコードの視覚的実現装置。
【０１３８】
［項目１７］
前記コードブロック設定部は、前記コードブロック生成部を介して複数のコードブロックが生成される場合、前記ユーザーの設定に基づいて前記複数のコードブロックを階層的なツリー構造または階層的なブロック構造に分類することを特徴とする、項目１５に記載のソフトウェアコードの視覚的実現装置。
【０１３９】
［項目１８］
前記コードブロック設定部は、前記階層的なツリー構造または階層的なブロック構造におけるコードブロックの位置に基づいて、自動的にブロック番号を割り当てることを特徴とする、項目１７に記載のソフトウェアコードの視覚的実現装置。
【０１４０】
［項目１９］
前記コードブロックは、前記階層的なツリー構造または階層的なブロック構造における位置に基づいて上位コードブロックと下位コードブロックに分類され、前記下位コードブロック内に含まれている内部属性コードは前記上位コードブロックに対して独立して実現されることを特徴とする、項目１５に記載のソフトウェアコードの視覚的実現装置。
【０１４１】
［項目２０］
前記上位コードブロックは、一つ以上の下位コードブロックを含み、前記一つ以上の下位コードブロックは、前記上位コードブロックから入力引数を受信し、前記上位コードブロックに出力引数を返すことを特徴とする、項目１９に記載のソフトウェアコードの視覚的実現装置。
【図１】
2018185850.tif 000003
【図２】
2018185850.tif 000004
【図３】
2018185850.tif 000005
【図４】
2018185850.tif 000006
【図５】
2018185850.tif 000007
【図６】
2018185850.tif 000008
【図７】
2018185850.tif 000009
【図８】
2018185850.tif 000010
【図９】
2018185850.tif 000011
【図１０】
2018185850.tif 000012
【図１１】
2018185850.tif 000013
【図１２】
2018185850.tif 000014
【図１３】
2018185850.tif 000015
【図１４】
2018185850.tif 000016
【図１５】
2018185850.tif 000017
【図１６】
2018185850.tif 000018
【図１７】
2018185850.tif 000019
【図１８】
2018185850.tif 000020
【図１９】
2018185850.tif 000021
【図２０】
2018185850.tif 000022
【図２１】
2018185850.tif 000023
【図２２】
2018185850.tif 000024
【外国語明細書】
2018185850000001.pdf