クラス図とパッケージ図は、ソフトウェアの論理設計をモデル化しています
コンポーネント図モデルの実装ビュー
非常に短い例を通して、上記の違いを明確にしていただけますか?
答えはあなたの質問そのものにあります。ソフトウェアが設計され、ソフトウェアが実装されているとどう思いますか?
設計では、実行可能なソフトウェアを設計するための青写真を開発します。この青写真には、ソフトウェアに変換できるモデルが含まれ、実装には、そのモデルを実際のソフトウェア、つまりコードに変換することが含まれます。
同様に、コンポーネントは一般にクラスよりも大きく、より抽象的です。クラスはオブジェクトインスタンスの比較的低レベルの青写真( design )ですが、コンポーネントは、カプセル化されたモジュール(を一緒に形成するクラスのセットである場合があります。実装)次にインターフェースします。コンポーネントにクラスがまったく含まれていない場合もあります。
さて、コンポーネント図は実際のコードを示していませんしかし依存関係実際に実装されたソフトウェアコンポーネント = (これらのコンポーネントは、実行可能ファイル、ファイル、フォルダーなどのようなものにすることができます。たとえば:-
すでに説明したように、クラス図はUML構造図であり、クラスとインターフェイスのレベルで設計されたシステムの構造を示し、それらの機能、制約、および関係(関連付け、一般化、依存関係など)を示します。クラス図の例:
私は自分自身を明確にしたことを望みます。
UMLコンポーネントでは、クラス図と同じことができます。
ただし、主な違いは、コンポーネントにはクラスよりも大きい責任があることです。
Kruchtenは、システムのさまざまな部分をキャプチャするために 4 + 1ビューモデル を開発しました。簡単に言えば、システムのさまざまなビュー(論理、物理、開発、プロセス、ユースケース)をモデル化するのに役立ちます。
各ビューは、システムの固有の側面をキャプチャします
論理ビューは、システムが構成されているwhatとhowの部分を記述します相互作用する
開発ビューとも呼ばれる実装ビューは、システムのパーツがモジュールとコンポーネントに編成される方法を説明します
習慣的に、それはより詳細な図として見ることができます。クラス図には、などの実装固有のタイプで定義されたプロパティが必要です。
Box
- cats: list<Cat>
+ getCat: Cat
+ addCat: void
コンポーネントは、同じものの詳細度の低いビューです。どれだけ詳細が見えるか覚えていません。私が覚えている限り、それは型のないクラス図と同じものである可能性があります。
コンポーネント図は、構築しようとしているものの一般的な考え方を設計するために使用する必要があります。実装にはコンポーネント図を使用して存在する必要のないクラスが必要なため、クラス図はクラスが多いほど異なる場合があります。
確かにしばらく図を描いていなかったので、私の言葉は一粒の塩でとらえなければなりません。
クラスモデルは、コンポーネントモデルのベースです。
ソフトウェア設計者は、最初に、論理要素( "クラス")、その責任( "メソッド")、構造( "プロパティ")、および他のクラスとの関係(一般化、関連付けなど)を指定する論理構造を設計します。使用されるテクノロジー。これはクラスモデルです
ソフトウェアエンジニアは、クラスモデルに基づいて、設計されたクラスモデルを実現するために、作成または購入するソフトウェア(「コンポーネント」)とそれらの間の接続(統合、依存関係など)を指定します。これはコンポーネントモデルです。
次に、展開モデルは、コンポーネントがハードウェアまたは仮想ハードウェアのどこに展開されるかを示します。