(58)【調査した分野】(Int.Cl.,DB名)
機能を表す図形により記述される図形式プログラムの特徴と、前記図形式プログラムから生成されたテキスト形式のソースコードの特徴との関連を分析した関連分析結果を格納する関連データベースと、
前記図形式プログラムが入力される図形式プログラム入力手段と、
前記図形式プログラム入力手段に入力された前記図形式プログラムの特徴を分析する図形式プログラム分析手段と、
前記図形式プログラム分析手段の分析結果と、前記関連データベースに格納されている前記関連分析結果とに基づいて、前記図形式プログラム入力手段に入力された前記図形式プログラムを評価する図形式プログラム評価手段と、
を備えることを特徴とする図形式プログラム評価システム。
前記関連データベースは、前記図形式プログラムの特徴を定量化した第1の特徴量と、前記ソースコードの特徴を定量化した第2の特徴量との関連を統計的に分析した前記関連分析結果を格納することを特徴とする請求項1に記載の図形式プログラム評価システム。
機能を表す図形により記述される図形式プログラムの特徴と、前記図形式プログラムから生成されたテキスト形式のソースコードの特徴との関連を分析した関連分析結果を格納する記憶装置と、
前記図形式プログラムが入力される入力装置と、
を備えるコンピュータに、
前記入力装置に入力された前記図形式プログラムの特徴を分析する図形式プログラム分析処理と、
前記図形式プログラム分析処理の分析結果と、前記記憶装置に格納されている前記関連分析結果とに基づいて、前記入力装置に入力された前記図形式プログラムを評価する図形式プログラム評価処理と、
を実行させることを特徴とする図形式プログラム評価プログラム。
【発明を実施するための形態】
【0013】
本明細書および添付図面の記載により、少なくとも以下の事項が明らかとなる。
【0014】
図1は本発明によるソースコード自動生成・評価システムの一つの実施の形態を示した図である。この例では、ソースコード生成手段2により変換されるテキスト形式のプログラムは、C言語のプログラムであるものとする。
【0015】
プログラムを製作する作業者は、図形式プログラム入力手段1を使用して図形式プログラムを製作する。製作した図形式プログラムは、図形式プログラム分析手段4にて分析が行われ、対象となる図形式で記述されたプログラムの特徴を数値化する。数値化した結果は、図形式プログラム評価手段7にて、関連データベース6の情報を基に評価される。評価結果は図形式プログラム評価結果表示手段8を用いて表示される。この表示された結果を基にプログラムを製作する作業者は、入力した図形式プログラムに問題があれば、これを修正し、問題がなくなるまで、これを反復して、図形式プログラムを完成させる。図形式プログラムが完成したら、ソースコード生成手段2によりC言語のソースコードを生成して、ソースコード自動生成・評価システム100による作業を完了する。
【0016】
さらに、今回製作したプログラムの情報を関連データベース6に反映させるときには以下の処理を実行する。プログラムを製作する作業者が図形式プログラム入力手段1を使用して図形式プログラムを製作した段階で、ソースコード生成手段2によりC言語のソースコードを生成する。次にソースコード分析手段3により生成したC言語のソースコードを数値化する。ここで、関連分析手段5により、ソースコード分析手段3により数値化した結果と、図形式プログラム分析手段4により数値化した結果との相関を分析する。分析結果は、関連データベース6に格納される。
【0017】
ソースコード生成手段2やソースコード分析手段3による処理は通常時間がかかるので、この作業は、図形式プログラム入力手段1によりプログラムを製作するのとは、別のタイミングで実施するのが望ましい。
【0018】
図2は、図形式プログラム入力手段1を使用して製作した図形式プログラムの例である。これは、データフロー図を示しており、In−1に入力された信号データに対しては、処理aが実行される。また、In−2に入力された信号データに対して処理dが実行され、その結果に対して処理eが実行される。さらに、これらの結果に対して処理bが実行され、その結果に対して処理cが実行された後、その結果はOut−1に出力されることを意味している。
【0019】
図2のプログラムは、ソースコード生成手段2により、例えば、
図3のようなC言語プログラムに変換される。
図2の図形式プログラムから、ソースコード生成手段2によりC言語のプログラムに変換する方法は、例えば特許文献2に記載の方法など、公知の方法を用いることができる。
【0020】
図2に示した図形式プログラムは、図形式プログラム分析手段4にて分析が行われる。分析(対象となる図形式で記述されたプログラムの特徴の数値化)の方法は種々の方法があるが、例えば、図形式プログラムに含まれるブロックの数は、分析項目の一例である。
図2において、「図形式プログラムに含まれるブロックの数」を計数する方法を
図4を用いて説明する。
【0021】
S201では、対象となる図形式プログラムから、図形要素を1つ選択する。S202では選択した図形要素が接続線であるかどうか判定する。接続線であったときにはS203に進み、L1、L2、L3のようにLで始まる新たな符号を割り当てる。また、接続線でなかったときには、S204に進み、E1、E2、E3のようにEで始まる新たな符号を割り当てる。符号を割り当てたら、この図形要素についての処理を終了し、これをすべての図形要素について実行する。すべての図形要素について実行が終わったら、ループを抜け、処理を終了する。
図4の処理を実行した後、割り当てた符号を
図2に重ねて表示すると
図5のようになる。ここで、Eで始まる符号が割り当てられた数が、図形式プログラムに含まれるブロックの数となる。
図2の例では、この値は8になる。
【0022】
また、図形式プログラムに含まれる接続線の数は、分析項目の一例である。これは、同様にLで始まる符号が割り当てられた数が図形式プログラムに含まれる接続線の数となる。
図2の例では、この値は7になる。
【0023】
また、入力の数は、分析項目の一例である。この場合、すべてのEで始まる符号について調べ、入力が無く、出力があるブロックの数を計数すれば、値が求まる。その具体的な処理の方法としては、すべてのLで始まる図形要素について、その両側にある図形要素の符号を特定し、これを列挙する。
図2の図形式プログラムの場合、この結果は、例えば
図6のように表現することができる。その後、第1列には現れるが、第3列には現れないものの数を数える。例えば、E1は、第1列には、第1行で現れるが、第3列には現れない。従って、E1は入力の要素である。次にE2については、第1列には、第2行で現れるが、第3列には、第1行で現れる。従って、E2は入力の要素ではない。このようにすべての行について調べた後、重複するものを除外すれば入力の数となる。
図2の例では、この値は2になる。
【0024】
また、出力の数は、分析項目の一例である。この場合、
図6を用いて、第3列には現れるが、第1列には現れないものの数を数え、重複を除けば良い。
図2の例では、この値は1になる。
【0025】
また、合流の数は、分析項目の一例である。この場合も、
図6を用いて計数できる。すなわち、第3列に複数回現れる符号の数を数えればよい。
図2の例の場合、E6は第3列に2回現れるので、これが合流に相当する。計数の方法は、第3列をキーにソートし、同じものが連続する符号の種類を数えればよい。
図2の例ではこの値は1になる。
【0026】
また、分岐の数は、分析項目の一例である。この場合も、同様に
図6を用いて、第1列に複数回現れる符号の数を同様の方法で測定すればよい。
図2の例では、この値は0になる。
【0027】
図7は、図形式プログラム入力手段1を使用して製作した図形式プログラムの別の例である。この図では破線で囲われた領域は、その下からの入力が真のときのみ実行されることを意味している。そのため、ソースコード生成手段2により、例えば、
図8のような分岐構造のあるC言語プログラムに変換される。このようなブロック図の場合、条件により実行される区画の数は、分析項目の一例となる。
【0028】
一方、ソースコード分析手段3では、ソースコード生成手段2により変換されたC言語のプログラムを分析する。例えば、プログラムの実行行数は、分析項目の一例である。実行行数の数え方も幾通りかあるが、例えば、ソースコード全体から、コメントのみの行と、空の行を除いた行数を数えれば良い。この数え方によると、例えば、
図3のソースコードでは、実行行数は、11行である。
図8のソースコードでは、実行行数は、14行である。
【0029】
また、自動変数の数は、変換されたC言語プログラムの分析項目の一例である。
図3のソースコードでは、自動変数の数は2である。
図8の例でも、自動変数の数は2である。
【0030】
また、入れ子(ネスト)の深さは、変換されたC言語プログラムの分析項目の一例である。
図3のソースコードでは、入れ子の深さの最大数は0である。また、
図8のソースコードでは、入れ子の深さの最大数は1である。
【0031】
また、マッケーブ(Thomas McCabe)による経路複雑度や循環的複雑度(Cyclomatic complexity)などと呼ばれるよく知られた指標も、変換されたC言語プログラムの分析項目の一例である。経路複雑度は判定の数に1を加算することで求められるので、
図3のソースコードでは、経路複雑度は1である。
図8のソースコードでは、経路複雑度は2である。
【0032】
このように図形式プログラム分析手段4は図形式プログラム入力手段1により入力された図形式プログラムを数値化する。また、ソースコード分析手段3は、入力された図形式プログラムをソースコード生成手段2で自動コード生成した結果のソースコードを数値化する。関連分析手段5においては、これらの源を同一とする2つの数値化の結果の間の関連を統計的手法を用いて分析する。
【0033】
まず、関連分析手段5は、このような測定結果の組が得られたら、これを関連データベース6に格納する。複数の測定結果の組が格納されたら、関連分析手段5は、これらのデータにより、統計処理を行えるようになる。
【0034】
図9は、関連データベース6のデータ構造の一部を示した例である。元となる図形式プログラムが同一の数値化の結果1組に対して、1行のデータが記録される。
図9の例では、一番左の列にプログラムの名称が記録される。
図9の例では、左から2番目から8番目までは図形式プログラム分析手段4により数値化された値が記録される。
図9の例では、左から9番目から12番目まではソースコード分析手段3により数値化された値が記録される。
【0035】
関連分析手段5は、ソースコード分析手段3により数値化した値を1つ選択して従属変数(目的変数)とし、図形式プログラム分析手段4により数値化した値(複数)を独立変数(説明変数)とした重回帰分析を行い、最小2乗法のような方法を用いて、重み係数(偏回帰係数)を計算する。関連分析手段5は、図形式プログラム分析手段4により数値化したすべての値に対してこれを行い、重み係数を計算する。この計算結果は、重回帰式とともに、関連データベース6に格納される。
【0036】
図10は、関連データベース6のデータ構造の一部を示した例で、重回帰分析の結果得られた重み係数の記録方式を示したものである。この表では、求めたい従属変数を縦に配置し、各行ごとの従属変数の予測値を独立変数から計算するための、各独立変数に対応する重み係数を横に記録している。この係数を用いてそれぞれの従属変数の予測値を計算するが、これは、
図10の左上のセルに記載されている重回帰式にて計算する。
【0037】
このように重回帰式に対応した重み係数が関連データベース6に格納されるので、図形式プログラム入力手段1により図形式プログラムを作成した際に、ソースコード生成手段2、ソースコード分析手段3による処理を行わなくとも、入力した図形式プログラムを図形式プログラム分析手段4により数値化し、図形式プログラム評価手段7により、数値化した値を重回帰式に当てはめることにより、ソースコード分析手段3により数値化されると予測される予測値が取得される。
【0038】
ところで、C言語のプログラムの品質保証の手段としては、静的検証によりソースコードを定量化し、その値に基準を設けて、基準値を逸脱した際には設計規約違反として、逸脱しないようにソースコードを修正するというような方法が一般に行われているが、図形式プログラム評価手段7により、重回帰式により計算される値は、これに相当する予測値になるため、図形式プログラム評価手段7は、この基準に照らし合わせて、図形式プログラム入力手段1により入力された図形式プログラムを評価し、基準値の逸脱があるかどうか、判定する。その結果は、図形式プログラム評価結果表示手段8により表示される。図形式プログラム入力手段1を使用して図形式プログラムを製作する作業者は、この結果を見て、逸脱がある場合には、図形式プログラムを修正し、逸脱が起こらないように図形式プログラムを修正する。
【0039】
ここで示したような、ソースコード自動生成・評価システム100は、
図11に示したような汎用の計算機システム上に構築することができる。
図11に示したコンピュータシステムは、演算装置51、主記憶装置52、ディスプレイ装置53、補助記憶装置54、入力装置55から構成される。そして、ソースコード自動生成・評価プログラムが補助記憶装置54からバス56を介して主記憶装置52に読み込まれ、演算装置51にて実行されることによって、ソースコード自動生成・評価システム100の各手段の処理を実行することができる。
【0040】
プログラムを製作する作業者は、入力装置55を使用して図形式プログラムの入力作業を行い、その結果は、ディスプレイ装置53に表示される。また、図形式プログラムの入力後、評価の指示を入力装置55から行うことにより、図形式プログラム分析手段4が起動され、その結果と、補助記憶装置54に格納された関連データベース6を参照して図形式プログラム評価手段7が実行される。その結果は、ディスプレイ装置53に表示されるので、この結果を見て、プログラムを製作する作業者は、入力装置55により、図形式プログラムの修正を行う。
【0041】
また、関連の分析を行うときには、作業者が入力装置55により、分析実行の指示を行い、まだソースコード生成手段2によるソースコード生成が行われていないときにはソースコードの生成を行い、ソースコード分析手段3により、生成されたソースコードの分析が行われる。また、図形式プログラム分析手段4により図形式プログラムの分析が行われていないときには、図形式プログラムの分析が実行される。その後、これらの関連が、関連分析手段5にて実行され、その結果が補助記憶装置54に格納された関連データベース6に格納され、参照可能な状態となる。
【0042】
なお、上記実施形態では、作業者は、ソースコード自動生成・評価システム100を用いて、図形式プログラムの製作および評価の両方を行うことができるが、これに限定されるものではない。例えば、重回帰分析の結果得られた重み係数が予め格納された関連データベースを備え、図形式プログラム製作システムによって別途製作された図形式プログラムを読み込み、関連データベースを参照して評価する、図形式プログラム評価システムを構築してもよい。当該図形式プログラム評価システムは、関連データベースのほか、少なくとも、図形式プログラム入力手段、図形式プログラム分析手段、および図形式プログラム評価手段を備える。好ましくは、さらに、図形式プログラムの評価結果を表示するディスプレイ装置や、印刷するプリンタ装置などの評価結果出力手段を備える。
【0043】
前述したように、
図1に示したソースコード自動生成・評価システム100(図形式プログラム評価システム)において、入力された図形式プログラムの特徴を分析した分析結果と、関連データベース6に格納されている、図形式プログラムおよびソースコードの特徴間の関連を分析した関連分析結果とに基づいて、図形式プログラムを評価することによって、図形式プログラムからソースコードを生成してソースコードの特徴を分析することなく、図形式プログラムの静的検証を、既存の形式のプログラムと同じ基準で、効率的に実施することができる。したがって、既存の形式のプログラムと同じ実績のある基準で評価した図形式プログラムを効率的に製作できるようになり、不具合の少ない、品質の良い図形式プログラムを安定して迅速に製作できるようになる。
【0044】
また、図形式プログラムおよびソースコードの特徴を定量化(数値化)することによって、それぞれ定量化された第1および第2の特徴量間の関連を統計的手法を用いて分析することができ、当該統計処理された関連分析結果を関連データベース6に格納することができる。
【0045】
また、第1の特徴量を独立変数とし、第2の特徴量を従属変数とした(重)回帰分析を行うことによって、入力された図形式プログラムに基づく第1の特徴量を(重)回帰式に当てはめて第2の特徴量の予測値を求めることができ、当該予測値に基づいて図形式プログラムを評価することができる。
【0046】
また、図形式プログラムに基づく第1の特徴量としては、ブロックの数、接続線の数、入力の数、出力の数、合流の数、分岐の数、条件により実行される区画の数などを用いることができる。一方、ソースコードに基づく第2の特徴量としては、実行行数、自動変数の数、入れ子の深さの最大数、経路複雑度など、C言語のようなテキスト形式の高級言語において一般的に用いられている指標を用いることができる。
【0047】
また、図形式プログラムからソースコードを生成してソースコードの特徴を分析する手段をさらに備えることによって、図形式プログラムおよびソースコードの特徴間の関連を分析して、当該関連分析結果を関連データベース6に反映させることができる。さらに、図形式プログラムの評価結果を表示するディスプレイ装置などの出力手段を備えることによって、評価結果を参照しながら図形式プログラムの修正を行うことができる。
【0048】
また、コンピュータに、ソースコード自動生成・評価システム100の図形式プログラム分析手段4および図形式プログラム評価手段7の処理を実行させる図形式プログラム評価プログラムにおいて、入力された図形式プログラムの分析結果と、補助記憶装置54に格納されている関連分析結果とに基づいて、図形式プログラムを評価することによって、図形式プログラムからソースコードを生成してソースコードの特徴を分析することなく、図形式プログラムの静的検証を、既存の形式のプログラムと同じ基準で、効率的に実施することができる。
【0049】
また、コンピュータに、ソースコード生成手段2、ソースコード分析手段3、および関連分析手段5の処理をさらに実行させることによって、図形式プログラムおよびソースコードの特徴間の関連を分析して、当該関連分析結果を関連データベース6に反映させることができる。さらに、コンピュータが図形式プログラムの評価結果を表示するディスプレイ装置53などの出力手段をさらに備えることによって、評価結果を参照しながら図形式プログラムの修正を行うことができる。
【0050】
また、図形式プログラムおよびソースコードの特徴間の関連を分析した関連分析結果を格納する関連データベース6を構築することによって、関連データベース6(に格納されている関連分析結果)を参照して、入力された図形式プログラムを評価することができ、図形式プログラムからソースコードを生成してソースコードの特徴を分析することなく、図形式プログラムの静的検証を、既存の形式のプログラムと同じ基準で、効率的に実施することができる。
【0051】
なお、上記実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得るとともに、本発明にはその等価物も含まれる。