2015年05月01日

4月度進捗

access1504.jpg4月度のアクセス状況は図のようになりました。多少の落ち込みはあるようですが、変動の範囲内といえるでしょう。

4月度は、これまで集中しておりましたコンサルティング業務が一段落し、久しぶりにCodeSqueezer2.0の開発業務に時間を割くことができました。

今月度は、全体構成を改めて検討したのですが、これまで別個のものとしておりましたファンクションダイアグラムと手続きダイアグラムを統一することといたしました。

手続きは、手続きクラス(class Proc)で定義されたデータ構造で、ソースコードに対応した木構造に配置され、名前などはすべて文字列として扱われております。一方のファンクションはファンクションクラス(class Func)で定義されたデータ構造で、処理の流れに対応したダイアグラムとして扱われます。

同じ手続きは、ソースコード中に一回記述すれば何度でも呼び出すことができます。すなわち手続きは、マクロ定義のような、テンプレート的な性質をもち、呼び出される毎にこれに対応するファンクションが生成されます。ファンクションは処理ごとに生成され同じ処理が複数個所で実行される場合は複数のファンクションが生成されることとなります。このため、従来のmhdlコンパイラではこれらを別のものとして取り扱っておりました。

手続きの木構造からファンクションを生成する手続きは図のように行われます。proc_diagram.jpgユーザ定義の手続きは、ファンクションダイアグラムであるファンクションに変換されます。このとき、手続き名がファンクション名となり、文字列である入出力ポート名のリストがclass Portのリストに変換されます。また、内部に配置される手続き名のリストがclass Funcのリストとなります。ここで基本的に行っていることは、文字列をそれぞれのデータ構造に変換しているだけなのですが、これらのデータ構造には文字列で表された名前をもちますので、最初からデータ構造を用いて手続きを規定しても問題はありません。またこうすることで、変換の手間が一回省けるというものです。

そこで、両者を兼用する新しいクラスとしてclass Blockを用いることといたしました。このクラスは、定義の木構造に対応したポインタをもち、それぞれの構成要素はデータ構造として持つことといたします。Blockという名称は、生成されるものが「ブロックダイアグラム」であることから、これを構成する要素の名称としてはブロックが好ましかろうとの判断によります。

従来「手続き(Proc)」なり、「ファンクション(Func)」なりの名称を用いておりましたのは、既存のプログラム言語との共通性を意識してのものだったのですが、基本的に異なるプログラム言語ですので、他の言語との共通性はあまり重要ではないものと今回判断いたしました。

一つ注意しなくてはいけない点として、手続きは定義ごとに与えられるのに対し、ファンクションは配置ごとに異なるデータ構造を準備する必要があります。

これに対応するため、class Blockには配置済みフラグを設け、配置が行われた際にはこれを立てるようにいたします。新たに配置すべきブロックがすでに配置済みである場合は、このブロックの複製を異なる名前で生成し、これを配置するようにいたします。参照に際しては、常にオリジナルのブロック定義を参照しますので、複製されたブロックは、定義の木構造部分は不要です。また、配置済みフラグも参照されることはないのですが、こちらは配置済みとしておくのが分かりやすそうです。

この共通化を行うことでプログラムの簡素化が可能となりそうです。また、これまでに検討いたしましたシミュレーションその他は、ファンクションダイアグラムに対して行っていたのですが、この部分はブロックダイアグラムと全く変わりませんので、これまでの作業も無駄になることはありません。

その他、ファンクションには、これをコード化する関数、動作をシミュレートする関数、テストする関数などが付属していたのですが、これらを個別の関数とすることはソースコードが複雑となりますので、これらをまとめたclass Methodsをブロックのメンバーとすることといたします。やっておりますことは何の変化もないのですが、様々なサービス関数をクラスに含めることで、ブロックダイアグラムはより抽象度の高い記述が可能となり、将来の変更もより容易になるものと期待しております。

あとは、このデータ構造で実際の処理プログラムを制作するだけなのですが、これが一大作業であることは言うまでもありません。ここは一つずつ着実に作業を進めるしかありません。
posted by 管理人 at 16:15| Comment(0) | TrackBack(0) | 日記
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/125440183

この記事へのトラックバック
Powered by さくらのブログ