【ソフトウェア開発】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

  • E-6輸送攻略用編成案(水上打撃) [第1艦隊] 扶桑、山城、大鷹、利根(筑摩)、吹雪、皐月 [第2艦隊] 阿武隈、Гангут、大井、鳥海、霞、荒潮 これを主力に温存していた艦艇での攻略を目指します。 #艦これ
    about 8時間 ago
  • なんとかE-5甲クリア! 資材は枯渇中だけど、補給しながらE-6甲がんばります! ちなみに4枚目の画像が我が鎮守府の現状です。。。 なお、松輪は未着任です。E-7丙終えて余力があれば掘ります。 #艦これ https://t.co/lrqqFbIoSy
    about 9時間 ago
  • 夏イベの疲れを癒してくれます~ #艦これ 【艦これ】烈花の翠緑【秋津洲のオリジナル曲MV】<キネマ106> https://t.co/BJrda7Omfz #sm31728750 #ニコニコ動画 https://t.co/ENWCC8hl4K
    about 10時間 ago

BGM

機動戦士ガンダムUC オリジナルサウンドトラック

2 UNICORN -澤野弘之

↓の再生ボタンで再生できます

色々な楽曲を試聴したいなら
>>>こちら<<<

Nico Nico Community

Calendar

2017年8月
« 7月  
 12345
6789101112
13141516171819
20212223242526
2728293031 

Archive

↓↓Please support me!↓↓

ブログランキング・にほんブログ村へ