web-dev-qa-db-ja.com

Cプログラミング言語のUML

UMLは、C++を使用したモデリングシステムで最も一般的に使用されます。私のプロジェクトでは、Cは実装言語です。 Cに適用できるUML戦略に関するリソースを探しています。設計時にUMLを使用し、システムのさまざまな側面を表現したいと考えています。

28
Andy

C専用のUMLの使用について説明している既存のリソースはありません。他の人が言及しているように、UMLは言語に依存しません。

UMLを使用すると、問題のドメイン用のモデルと、実装用のモデルを作成できることに注意してください。問題領域をCの観点からモデル化するのではなく、高レベルのOOとしてモデル化するようにしてください。問題のドメインを十分に理解したら、実装のモデリングを開始できます。

手続き型C実装のモデリングには、次の図が役立ちます。

  • クラス図:
    • CモジュールAPIを表示する
    • Cモジュールの関係を表示します(主に非OOの依存関係)
    • 構造と列挙を表示する(<<ステレオタイプ>>を使用)
  • パッケージ図:ライブラリの内容(モジュール)、およびライブラリ間の依存関係を表示します
  • アクティビティ図:重要なアルゴリズムのフローチャート
  • シーケンス/コラボレーション図:モジュール/エンティティ/入力/出力間のイベント/メッセージが時間内にどのように発生するかを示します
  • ステートチャート図:もちろん、ステートマシンの場合!

クラス図を拡張すると、手続き型Cの場合、次の方法でクラス図を「乱用」できます。

  • グローバル外部関数->パブリックメソッド
  • ローカル静的関数->プライベートメソッド
  • グローバル外部変数->パブリックメンバー
  • ローカル静的変数->プライベートメンバー
  • 構造体->「構造体」ステレオタイプのクラス
  • #define定数->「列挙」ステレオタイプのクラス

実験してみると、UMLを悪用するための独自の規則が見つかります。

32
Emile Cormier

Cの問題は、Cが手続き型プログラミング言語であるということです。 Cアプリケーションできめの細かいデザインを取得するのは困難です。 Cを使用している場合は、依存関係や相互作用のグラフではなく、シーケンス図やコンポーネント図を使用して、何が起こっているのかを説明し、概要を説明することをお勧めします。

8
monksy

オブジェクト指向設計は言語に依存せず、もちろんUMLを使用してシステムを設計できます。 Rhapsodyのようないくつかのツールは、コード生成とラウンドトリップも可能にします。C++がオプションではないいくつかの特別なプロジェクトに使用します。コードを手動で記述したい場合は、Subsystem_Module_Class_Methodなどの命名規則を使用して、オブジェクト指向の方法で関数に名前を付け、クラスごとに.cファイルを使用します。 Cを使用することは、すっきりとしたデザインを持つことに対する障害ではありません。

5
jdehaan