UML Infrastructure Specification, v2.3 - Page 11
7.1 Design Principles
The UML metamodel has been architected with the following design principles in mind:
• Modularity — This principle of strong cohesion and loose coupling is applied to group constructs into packages and organize features into metaclasses.
• Layering — Layering is applied in two ways to the UML metamodel. First, the package structure is layered to separate the metalanguage core constructs from the higher-level constructs that use them. Second, a 4-layer metamodel architectural pattern is consistently applied to separate concerns (especially regarding instantiation) across layers of abstraction.
• Partitioning — Partitioning is used to organize conceptual areas within the same layer. In the case of the InfrastructureLibrary, fine-grained partitioning is used to provide the flexibility required by current and future metamodeling standards. In the case of the UML metamodel, the partitioning is coarser-grained in order to increase the cohesion within packages and loosening the coupling across packages.
• Extensibility — The UML can be extended in two ways:
• A new dialect of UML can be defined by using Profiles to customize the language for particular platforms (e.g., J2EE/EJB, .NET/COM+) and domains (e.g., finance, telecommunications, aerospace).
• A new language related to UML can be specified by reusing part of the InfrastructureLibrary package and augmenting with appropriate metaclasses and metarelationships. The former case defines a new dialect of UML, while the latter case defines a new member of the UML family of languages.
• Reuse — A fine-grained, flexible metamodel library is provided that is reused to define the UML metamodel, as well as other architecturally related metamodels, such as the Meta Object Facility (MOF) and the Common Warehouse Metamodel (CWM).
Tradução:
- Modularidade - Este princípio de forte coesão e baixo acoplamento é aplicado para agrupar construções em pacotes e organizar recursos em metaclasses.
- Camadas - Camadas são aplicadas de duas maneiras ao metamodelo da UML. Primeiro, a estrutura do pacote é colocada em camadas para separar as construções principais da metalinguagem das construções de nível superior que as utilizam. Segundo, um padrão arquitetural de metamodelo de 4 camadas é consistentemente aplicado para separar as preocupações (especialmente em relação à instanciação) entre as camadas de abstração.
- Particionamento - O particionamento é usado para organizar áreas conceituais dentro da mesma camada. No caso da InfrastructureLibrary, o particionamento refinado é usado para fornecer a flexibilidade exigida pelos padrões atuais e futuros de metamodelagem. No caso do metamodelo UML, o particionamento é mais granulado para aumentar a coesão dentro dos pacotes e soltar o acoplamento entre os pacotes.
- Extensibilidade - A UML pode ser estendida de duas maneiras: (1) Um novo dialeto da UML pode ser definido usando Perfis para personalizar a linguagem para determinadas plataformas (por exemplo, J2EE / EJB, .NET / COM +) e domínios (por exemplo, finanças, telecomunicações, aeroespacial). (2) Um novo idioma relacionado à UML pode ser especificado reutilizando parte do pacote InfrastructureLibrary e aumentando com metaclasses e metarelationships apropriados. O primeiro caso define um novo dialeto da UML, enquanto o último caso define um novo membro da família de linguagens UML.
- Reutilização - É fornecida uma biblioteca de metamodelo flexível e refinada que é reutilizada para definir o metamodelo da UML, bem como outros metamodelos relacionados à arquitetura, como o Meta Object Facility (MOF) e o Common Warehouse Metamodel (CWM).