【ソフトウェア開発】DoxygenとGraphvizで詳細設計


会社のPCの入れ替えでDoxygenとGraphvizを再設定する機会があったので、メモメモφ(・ω・ )

本記事のカテゴリーをプログラミングにしましたが、プログラミング手法に関する話はありません。

ざっくり、どんなものか言っちゃいますと、

Doxygenはコメント(javadocまたはDoxyヘッダー、XML ドキュメント コメント)をHTMLベースで読みやすくしてくれるツールです。

GraphvizはDOT言語というスクリプトの一種を用いてグラフを生成してくれるツールです。

 

この二つを組み合わせることで、詳細設計書が作れちゃいます。

私としては、今後の開発はTDD(テスト駆動開発)を行っていくべきだと思っています。
そのためにも工数を削減できる箇所は削減してテスト関連の作業に工数を割り振るべきです。

今回は詳細設計書をDoxygenベースで作成することで、詳細設計の工程を簡略化することが狙いです。
なんと今なら、オマケで単体テスト仕様書まで作れちゃいます!

まず、下記URLからDoxygenとGraphvizをDLしてください。
最新版は、Doxygenが1.8.6、Graphvizが2.36でした。

Doxygen: http://www.doxygen.jp/

Graphviz: http://www.graphviz.org/

 

私の記憶だと、何かの理由でGraphvizを先に入れたほうが良かった記憶があるので、Graphviz ⇒ Doxygenの順にインストールしました。

インストールして、Doxygenを立ち上げると、以下の画面が出てきます。

doxygen

ステップ1 – Doxygenの設定

ステップ1として、設定を登録したDoxyfileを作成しましょう。

まずは設定です。
Wizardタブを開き、プロジェクト名とバージョン番号を入れましょう。

残りの項目は任意で良いと思います。

次にExportタブを開きます。
TopicsからProjectを選択し、出力言語: 日本語に設定します。

次はBuildを選択し、以下の3つにチェックを入れます。

EXTRACT_ALL
EXTRACT_PRIVATE
EXTRACT_STATIC

これで全てのメンバが表示されるようになります。

 次にTopicsの一番下にあるDotを選択し、以下にチェックを入れます。

HAVE_DOT
UML_LOOK
CALL_GRAPH

あとはDOT_PATHにGraphvizの実行ファイルがあるパスを入れれば設定は完了です。
私の場合は、「C:/Program Files/Graphviz2.36/bin」でした。

最後に設定をファイルに保存です。
[File] → [Save]でDoxyfileを書き出します。

以降、設定を呼び出す場合は、[File] → [Open](または[Open recent])からDoxyfileを開くことで設定を読み込めます。

次はコメントコーディングをしてみましょう。

 

ステップ2 コメントコーディング

ここでは、詳細設計で行うフローチャートを作る感じですね。

ただ、Doxygenではフローチャートは作成することができませんので、代わりにコメントで処理の流れを決めてしまいます。

たとえば、

//! Aの処理
//! <IF>Aの処理が成功した場合
//! -->フラグを立てる
//! <ELSE>
//! -->フラグを下ろす

というような感じです。

アクティビティ図で書くとこんなイメージ。

sampleVisual Studioでの開発だと関数ヘッダーコメントにコメントタグが利用できるので、関数の解説はこのコメントタグを利用して書きます。
以下のような感じ。

/// <summary>
/// 計算に使用する入力値を全てチェック
/// </summary>
/// <param name="inputData">入力データ(in)</param>
/// <returns>正常:true</returns>
/// <returns>エラー:false</returns>
/// <exception cref="System.Exception"/>

コメントタグが利用できない場合は、doxyタグを利用することで代替可能です。
VisualStudioだと自動入力機能があるので、今回はコメントタグを利用しています。

また、ifやswitchでの条件分岐、forやwhileでのループは<if>や<for>という形で表現しています。
<>が全角になっているのは、半角にしてしまうとDoxygenでのhtml生成時にタグと誤認識してしまうので、これを回避するためです。

スコープは–>という形で表現しています。ひとつ深くなると—->となり、さらに深くなると——>という感じです。

try-catch-finallyは、[try][catch][finally]という感じで括りを分かるように記述しています。

これでコメントコーディングは完了。あとはコメントに沿って実装をするだけです。
これなら設計者と実装者が異なっていても簡単にコードに落とせますね。

この方法を導入して、詳細設計にかかるコストをかなり削減することができました。
単体テストもCUnitやNUnitを使う場合は、同じ方法でテスト仕様書を作成することができます。
設計コストを抑えてテストをちゃんとやって品質を向上させましょー!

もっと効果的でコストを抑えられるやり方や、このやり方の改良点などがあれば、ぜひぜひ教えてください!


この記事をシェアする

    Mask_Siva

    北の試される大地に生息しているSEです。
    楽しみながらプログラムを作ったり、ゲームで遊んだりしています。

    コメントをお待ちしております

    HTMLタグは利用できません

    Advertising



    新品/中古ゲーム販売 通販ショップの駿河屋

    Twitter

    仮面被り過ぎ@コンプレックス大佐
    @Mask_Siva

    • 久々の #五丈原 https://t.co/tlevLPTRuM
      about 29分 ago
    • バスの広告システム、Windowsで動いてるんだね。 このバスのWindowsは壊れてるみたいですが、、、 誰か起動ディスクで修復してあげて〜 https://t.co/RPXY63Jw7L
      about 1時間 ago
    • 先日の学科教員の方々による授業参観の報告書をいただきました。 見直さなきゃならない点もありますが、全教員から満点をもらえた項目もあったので、講義担当初年度としては及第点は取れたかな。 後期の講義に反映していきたいと思います。 #非常勤講師
      about 1時間 ago

    BGM

    TVアニメ「蒼穹のファフナー EXODUS」オリジナルサウンドトラック vol.1
    1 序章 -斉藤恒芳

    ↓の再生ボタンで再生できます
    色々な楽曲を試聴したいなら
    >>>こちら<<<

    Nico Nico Community

    Calendar

    2021年7月
     123
    45678910
    11121314151617
    18192021222324
    25262728293031

    Archive

    My WIsh List

    Amazonで気になっている物をまとめています。

    「これは良かった!」「こっちの方がいいよ!」というものがあれば、教えてください<(_ _)>

    https://amzn.to/3oof0rZ