Understand 4.0 マイナーバージョンアップ版の新機能 – C言語のシーケンス図対応

Understand 4.0 マイナーバージョンアップ版では、UML シーケンスダイアグラムが、C 言語でも表示できるようになりました。

Understand の UML シーケンス図の仕様

  • C 言語の UML シーケンス図では、ライフラインは、ファイルを表示します。
  • 未解決の関数(定義元が見つからない関数、Unresolved Function)への呼び出しの場合、ライフラインはファイルではなく関数名を表示します。
    例: UMLシーケンス図のグラフ例の strlen, printf 関数
  • C++, Java, C#, Objective-C, VB.NET の UML シーケンス図は、ライフラインは、クラスを表示します。
  • 未知の関数(宣言・定義いずれも見つからない関数、Unknown Function)への呼び出しは、表示されません。
    例: サンプルコード aaa.c の func_e() の呼び出し部分
  • 関数呼び出しを含まない制御構造は、複合フラグメント(alt, loop)が表示されません。
  • 関数マクロは展開され、展開された関数がライフラインに表示されます。
  • C/C++ 混在時の UML シーケンス図は、ライフラインには、C言語の場合はファイル名(未解決の関数への呼出しの場合は、関数名)、C++言語の場合はクラス名を混在して表示します。

UML シーケンス図の表示方法

  1. エンティティフィルター画面やソースエディターで、任意の関数やメソッドを選択します。
  2. 右クリック[グラフィカルビュー]-[UML Sequence Diagram]を選択します。

UML シーケンス図の表示例

サンプルソースコード
  • aaa.c
     

    #include <stdio.h>
    #include <string.h>
    #include “bar.h”
    #define MAX 10

    void func_a(int altflag)
    {
      int value = 0;
      char foo[] = “test”;
      char* bar = “test”;
      int i;

      if (bar != NULL) {
        for (i=0; i < MAX; i++) {
          if (strlen(foo) > 0) {
            value = func_b();
          }
        }
      }
      value = func_b();

      if (altflag > 0) {
        value++;
      } else {
        value–;
      }

      if (altflag > MAX) {
        value = func_b();
      } else {
        value = func_c();
      }
      func_d();
      func_e();
      printf(“%d”, value);
    }

  • bbb.c
      #include “bar.h” {
    int func_b () {
      return func_c();
    }
  • ccc.c
      #include “bar.h” {
    int func_c () {
      func_d();
      return 1;
    }
  • ddd.c
      void func_d () {
    }
  • bar.h
      void func_a();
    int func_b();
    int func_c();
    void func_d();

C 言語のシーケンス図対応は、日本のユーザー様からご要望を多く頂き、実現された機能です。
C 言語のソースも、シーケンス図を用いて、処理の流れを視覚的に表現できるようになりました。

是非、ご活用ください。

タイトルとURLをコピーしました
Close Bitnami banner
Bitnami