cwnicol programming

プログラミング関連の投稿をすこしだけ

C言語 シーケンス図 自動生成

github.com

 

[背景]

C言語のソースからシーケンス図を自動作成するツールが

見当たらなかったので作成した。plantUML用入力ファイルを出力する。

できたファイルをplantUMLで読み込むことでシーケンス図が見れる。

 

[動作環境]

Windows10で動確済み。(どのWindowsでも多分大丈夫)

解析するソースの対象プラットフォームは制限なし。

 

[入手方法]

・上記github内のreleaseからexeダウンロード

または

・ソースからコンパイル(debugビルドでないと落ちる)

 

[使い方]

githubのreadMe.md参照

・plantUMLでシーケンス図の下部が切れてしまう場合、

 PLANTUML_LIMIT_SIZEに16000等を設定。

 

[注意点]

・ソースは適切にモジュール分割されていること

 (公開関数プロトタイプ宣言がヘッダにある)

・汎用的なソースフォーマットに対応していない

ので、ソースによって落ちる可能性大。

・ろくにテストしていないので出力結果は参考程度に思って。

・出力されるシーケンス図はif elseやswitch caseを考慮していない。

・シーケンス図に出てくる関数は各モジュールの公開関数のみ。

C言語 ファイル検索 再帰 ライブラリ

簡単に取り込めるファイル検索ライブラリ。(Windows用)

(指定フォルダ配下の、指定拡張子の全フルパスを取得する)

エラー処理は未実装。とりあえず動く。

 

使用者はlist.h, findFile.h内のインターフェースのみ把握しておけば使える。

まずはtest_findFile.cを見て概略をつかむのがおすすめ。

 --------------------------------------------------------------------------------------------------------

list.h, list.c, findFile.h, findFile.cをプロジェクトに取り込んで、

findFile.hにあるインターフェースでファイルリスト取得。

結果はlist型で返ってくる。listはlist.hにあるインターフェースで扱う。

 

listはクラスモジュールなのでインスタンス化して使用する。

listモジュールとfindFileモジュールの詳細な使用方法は、test_list.c,

test_findFile.cを参照。

 

c findfile

 

c言語 モジュール分割

cのプログラムはファイルを分けてモジュール分割可能。

ヘッダーファイルは設計図で、Cファイルは実装だ。

ヘッダーファイルには他モジュールが知る必要がことだけを書く。

公開関数のプロトタイプと、それの戻り値、引数で関係してくる

マクロ、列挙体、構造体。

 

ヘッダーファイルを読めば、プログラムの概略は把握しやすい。

なので、ヘッダーファイルはコメント多く丁寧に記述すること。

 

ファイルを一構成要素とした、モジュール構成図、シーケンス図が

設計書に記述される内容だ。

シーケンス図内では各モジュールの公開関数だけでなく、

各モジュール内の主要な非公開関数も記述するとベター。

 

ここまでに出てきた、モジュール構成図、シーケンス図(これは

ストーリー毎に存在)、ヘッダーファイルを見れば、プログラムの

全てを知らなくても、概要レベルで一度全体を把握できる。

(もちろん、関数で実装している機能の詳細は別途必要だけれども)

 

そんなこんなでモジュール分割することによる利点をまるで把握

できていなかったのでメモ書き。

 

追記:

そもそもある程度の大きさのプログラムを作るときは、はじめに

どのようなモジュールを作ってとか考えて、データ構造と関数を

割り振っていくんだろう。

 

オプション処理 カプセル化

先日C言語カプセル化できることを知ったので、それをオプション処理で応用してみた。(エラー処理は未実装)

 

オプションクラスを使う人は、option.hのインターフェース使用方法を知っていれば、オプションについて詳しく知る必要もない。

 

option - object oriented