製品
製品情報1::PRA Program Relation Analyzer
製品情報 : ProgramRelationAnalyzer (略称PRA)
PRAは、ごく僅かな入力をもとに、自動的に programの構造を解析して、programのTree構造を作成するprogramです。
Topから順次、呼んでいる関数(部品に相当する)やClass(モジュール部品に相当する)を辿り、その正順のTree構造を作成します。
また、記憶領域である変数や定数も、どの関数から参照されているかを、逆順のTree構造として作成します。
これがものづくりの世界の部品表に相当します。作成されたTree構造を参照することにより、programmerが関数/Class/変数/定数を変更
する場合どの関数に影響が及ぶかを確実に把握することができ、後退不具合の発生を防ぐことが出来ます。
また、Tree構造の表示機能は、program構造の「見える化」を実現するものの1つであり、programmerやmanagerが共に見て「知の共有化」を図ることが可能となります。
PRAの効果を再整理すると以下のようになります。
①開発・保守段階でdebugによる変更がどの範囲に影響が及ぶかを確認ができ、後退不具合を避けることが可能。
②開発段階で設計変更の影響範囲の事前確認ができ、適切な設計変更が可能。
③開発・保守段階においてprogramを変更した場合、テストすべきコマンドを知ることが可能。
④部品化を進める場合、その部品の適用範囲を知ることで、適切な機能強化を行うことが可能で、派生部品の発生を抑制できる。
⑤リファクタリングを行う場合のproject全体状況の把握「見える化」が可能。
⑥document作成時に有用である。
(対象のapplicationによっては、カスタマイズの必要もありえます。)
PRAには大きく分けて下記の4つの機能があります(c,c++版)。
(1) NewtreTreeStructure (NTS) ::main/wndprocなどをTopにしたTreeStructureを作成する機能
(2) NewtreCrossreferenceTable (NCT) ::DLLなどのCrossReferenceTableを作成する機能
(3) NewtreStatusInspector (NSI) ::同種の2つのPRADS間の差異分析をする機能
(4) DisplayTreeComparer (DTC) ::同種の2つのTree表示データを比較表示機能
・NTS,NCTへの入力はbscFileであり、NSI,DTCへの入力は、NTS,NCTで作成したPRADSです。
・出力は順逆のTree構造を始めとする種々の情報を出力する機能を持っています。
・PRAは、下記製品情報2の1種上に実装しています。
(1) NTS::main/wndproc/FuncをTopにしたTreeStructureを作成する。class内の多くの関数・変数・定数から使用されているもののみを
選別してTree構造が作成されます。(NTSCT::main/wndproc/FuncをTopにしたTreeStructureを作成するのはNTSと同じだが、
使用されているclass内では、全てのclass Functionを対象に解析して、CrossReferenceTableを作成します。)
下図は、NTSのMain(WndProc)から呼ばれている関数の正順(call)の出力サンプルである。
(2) NCT::Class,DLLなどの全ての関数のCall_Calledの関係を解析したCrossreferenceTableを作成します。
変数・定数も全ての関数を対象に解析して、逆順のTree構造を作成します。
下図は、NTCまたはNTSによる全てのClassFunctionの逆順(called)の出力サンプルである。
下図は、NTCによる全てのClassVariableの逆順(called)の出力サンプルである。
(3) NSI::同種の2つのNTS/NCTのDS間の差異分析をします。
NSIへの入力はNTS/NCTで作成したDSであり、差異を.h/.cppファイル単位に一覧表にして出力する。下段は NSIの出力Sampleで、
現在のExeと1つ前のExeの差異分析結果を示してします。1つ前のExeが正しい結果を出していたとすれば、差異のあるファイルを
重点的にデバッグすればよい。
(4) DTC::NTS/NCTの同種の2つのDS間の同種の2つのTree表示データを比較表示をする。(市販のcomparerを使用しています。)
下図は、Class Function一覧とClassVariable一覧のDisplayTreeComparer実行結果の比較表示例です。
製品情報2::N-ASP Toolkit
製品情報 : C++版N-ASP Toolkit
ASPとは、Associative Structure Packageの略称であり、ケンブリッジ大学のProf.C.A.LangおよびProf.J.C.Grayが
CAD/CAMの形状Model表現のためのData構造として、CAD/CAMの黎明期1966年に発表したものである。
Programming Techniques: ASP-a ring implemented associative structure package http://dl.acm.org/citation.cfm?id=363576
データ構造の一般的な分類によれば、ASPは、ネットワーク型データ構造の一種であり、ツリー型やリレーショナル型とは異なる。
Packageとは、対象とするData構造をコンピュータ内に構築するためのプログラムライブラリのことを示している。
ASPの構成要素
ASPは、任意の数のDataとこれらData間の関係を表現できる汎用のデータ構造(DataStructure::DSと略記する)のことを意味し、3種の構成要素とそれらを関連付けるRingから成っている。
ASPにおいては、上図に示すような、対象とするDataを格納する第1種の構成要素であるElementBlockと、ElementBlock同士を関連付ける
第2種の構成要素であるRingstartBlock、および第3種の構成要素であるAssociativeBlockという構成要素を用いて、ツリー/ネットワーク構造の双方をシンプルに表現することができる。
また、ElementBlockが持つ複数の属性の表現には、Ringstartブロックを複数使用することによって、重層的な表現が可能である。 ASPは、構造をシンプルな図式で表現できるため、データ構造の設計者の意図を明確に表現できる特長を持っている。
データ構造設計の「見える化」である。下記参考製品情報のAspEditor をN-ASP構造CADに発展させていけば、強力な設計toolとなろう。
ここでN-ASPとしたのは、ASPの概念の成立時(1960年代後半)に較べて、格段に進歩した情報技術と新たな知見を入れて実装したため、「New-」の字を付与した。また、N-ASPは、オンメモリーデータ構造であり、実装において階層の深さは、address limitによる制限のみとなるように配慮し、性能の良さ、application実装の容易さを目標とした。
N-ASP Toolkitは、VC++上で、N-ASPのプログラムライブラリ(DLL)を使用したSampleProgramを包含したもので、直ちにC++baseのApplicationが開発可能なものである。
以下 N-ASPの記法による構造設計図の例を示します。このように「見える化」の難しいデータ構造を図化できることが
複数人で開発するプロジェクトで「知の共有化」を可能にする。このことが、ASPの最大の利点といえるかもしれない。
[A]は、組織とスキルと要員を構造化したもので、これに人事情報や、組織の変遷など種々の構造を追加して組織モデルの
充実を図ることができる。
左の図は、トポロジーとDataを1つのDSに保持させるDSの設計例であり、下記1,2種のToolkitで実装されている。
右の図は、トポロジーをMainDSに保持し、Dataを分離してSubBlock構造を持たせた設計例である。3種のToolkitで実装されている。
[B]は、列車と停車駅と通過時間をDS表現するための設計例である。programmerは、この図を見ながら、N-ASPで実装すればよい。
[C]は、PRAの実際の構造設計図の一部である。1種ののToolkit上に実装している。
[A] SkillMapSampleのN-ASP構造設計図
[B] TrainTimeTableSampleのN-ASP構造設計図 .
[C] PRAの実際の構造設計図(部分) .
実際のN_ASPとしては3種類のToolkitを準備しています。
1種 EL/RS/ASのcreate,delete,change,GarbageCollection,store,loadなど
2種 1種 + create,delete,change に対するundo,redo機能
3種 2種 + トポロジ構造とデータの分離機能
組み込みソフト・ゲームや普通の事務処理系のapplicationは、1種で十分である。上記[C]のPRAは、この1種の上に実装している。
会話的な処理を必要とするapplicationは2種のundo,redo機能を活かすとよい。 専用CADなどの開発に適している。
検索が多い場合や、データ量が多い場合は、3種が適している。専用CADで大きなデータを扱う場合も3種が適している。
参考製品情報::AspEditor
参考製品情報 : AspEditor(参考展示)
N-Aspは構造の図化が容易であるという特長を活かしたN-Aspパッケージ用構造表示ソフトウェアである。
Asp構造をscreenに表示し構造が想定通り出来ているか確認したり、CADのようなinteractiveなアプリケーションを開発できる。
名古屋大学大学院工学研究科機械理工学専攻 松本研究室と共同研究したものである。下図は、screen上にDS構造をoutputした実例である。
上記[A]の組織モデルのASP構造設計例を1種のN-ASPを使って実装し、実際にprogramを実行し、DSを作成して、AspEditorに渡し出力したものである。(N-ASP設計図との実装例との違いは後者はSkillの項でLevelA,B,Cと細分している)