1

UML を使用してクライアント/サーバー システムのモデルを開発する方法についてアドバイスが必要です。簡単に説明すると、このシステムは、携帯電話で動作するモバイル クライアントで構成されています。ほとんどのモバイル アプリケーションと同様に、モバイル アプリケーションはサーバーに接続して、何らかの処理、バックアップのログ記録、およびサードパーティ アプリケーションへの接続を実行します。

アドバイスが必要なのは、システム全体を想定すると、モバイル アプリケーションのほとんどすべてのクラスが、いくつかのクラスを除いてサーバー アプリケーションに複製されるということです。同様に、いくつかの他のクラスといくつかの追加機能を除いて、モバイル アプリケーションと同じクラスのほとんどを含むサーバー アプリケーションでも同様です。

例を挙げると、モバイル アプリケーションには、アクターの個人情報とログイン情報で構成される User クラスがあります。同様に、サーバー アプリケーションには、モバイル アプリケーションにないいくつかの機能/メソッドがあることを除いて、モバイル アプリケーションの User クラスに存在する同じメンバーを持つ User クラスがあります。

サーバー アプリケーションには、サードパーティ アプリケーションに接続して課金機能/メソッドを実行するクラスもあります。このクラスは明らかにモバイル アプリケーションでも複製されますが、サードパーティに接続するための機能/方法を持つモバイル アプリケーション課金クラスはありません。

目下の問題はわかりましたが、UML モデリングの原則に従うのであれば、これらのクラスを複製するのではなく、モデリングで再利用を利用する必要があると思います。モバイル アプリケーションをサーバー アプリケーションから分離するためにパッケージを使用しているので、次のことが必要になると思います。

  1. モバイル アプリケーションとサーバー アプリケーションの両方で同じこと (メソッドとメンバー) を行う基本クラスを持つ
  2. モバイル アプリケーションまたはサーバー アプリケーションのいずれかで追加のメンバーと機能を持つクラスの場合、継承の依存関係を使用して追加のクラスを作成し、それらを処理する必要があります。
  3. << includes >> 依存関係を使用して #2 から生成されたクラスを Mobile および Server パッケージに追加するか、 << includes >> 依存関係を使用して #1 から生成されたクラスをモバイルおよびサーバー パッケージに追加する必要がある場合があります。

同じクラスを複製することはUMLモデリングの理想に反すると思うので、モデリングを実装する方法についての私の考えは正しいですか。しかし、それらがモバイル アプリケーションとサーバー アプリケーションの間の分離であるという事実は、モバイル アプリケーションを完全に個別にモデリングし、次にサーバー アプリケーションを個別にモデリングするという方針に沿って考える必要があります。

繰り返しますが、私の考え方は正しいですか。

4

1 に答える 1

1

私には、3つのパッケージを持つモデルが1つしかないようです。

  • モバイルおよびサーバー アプリケーションで使用されるクラスを含む commonComponents パッケージ
  • モバイル アプリケーションで使用されるクラスを含むモバイル パッケージ
  • サーバー アプリケーションで使用されるクラスを含むサーバー パッケージ

mobile および server パッケージは、commonComponents パッケージに含まれる要素をインポート (<> 関係) します。たとえば、User commonComponents:User クラスはサーバー パッケージにインポートされ、そこで serve:User クラスによって拡張されます。パッケージは名前空間であるため、同じ名前のクラスを持つことができることに注意してください。

これがあなたに役立つことを願っています

http://lowcoupling.com/post/47802411601/uml-diagrams-and-models-with-papyrus

于 2013-01-19T18:58:00.657 に答える