Diagramas de Componentes Components 1
Diagramas que suportam unidades de implementação O UML suporta dois diagramas para representar unidades de implementação: Vista de implementação Mostra a implementação de classes de desenho agrupadas em componentes reutilizáveis Vista de instalação Mostra o arranjo físico de recursos computacionais em tempo de execução Components 2
Diagramas de desenho e implementação do UML Construir o diagrama de pacotes agrupar classes em pacotes Um para a fase final de análise Um para a fase de desenho Construir diagrama de componentes Pacotes (especificação e corpo) Tarefas (especificação e corpo) Subprogramas (especificação e corpo) Programa principal Construir diagrama de deployment Para o desenho físico apenas Components 3
Vista de implementação Representada por diagramas de componentes Com interfaces e dependências entre componentes Componente: Unidade de implementação com interfaces bem definidas Planeada para ser substituível (i.e. reutilizável) Implementa um conjunto de classes de desenho QuoteService Components 4
Diagramas de componentes (1) Quando bem desenhadas não dependem directamente de outras componentes (apenas das interfaces que outras componentes oferecem) Assim, um componente pode ser substituído por outro com interfaces equivalentes Transactions Web-GUI update Interfaces oferecidas e requeridas (UML 1.x) Components 5
Diagramas de componentes (2) Uma interface oferece uma lista de operações implementadas pelo componente As interfaces devem ter nome Componentes podem ser estereotipados, para lhes adicionar sentido semântico adicional Estereótipos que se aplicam a componentes: <<executable>>, <<library>>, <<table>>, <<file>>, <<document>> Components 6
Componentes: definições (1) Unidades binárias de produção, aquisição e lançamento que interagem para formar um sistema funcional. (Szypersky, 97) Um pacote coerente de software que pode ser independentemente desenvolvido e lançado como uma unidade e que define interfaces pelas quais pode ser composto com outros componentes para fornecer e usar serviços. (D Souza, 98) Components 7
Componentes: definições (2) Unidade modular com interfaces bem definidas substituível no seu ambiente envolvente. (OMG, 2005) O conceito de componente enquadra-se nas áreas do desenvolvimento e estruturação de sistemas baseado em componentes Um componente é modelado através do ciclo de desenvolvimento e sucessivamente refinado nas fases de implementação (deployment) e execução Components 8
Componentes (1) Componentes referem-se à organização do software. Um componente é uma parte física e substituível dum sistema que corresponde e realiza um conjunto de interfaces. Um componente é descrito por um nome (ou path name), tagged values,... Pacotes podem conter componentes ou outros pacotes. Classes podem ser mapeadas num componente. Classes representam abstracções lógicas Componentes representam abstracções físicas Components 9
Componentes (2) Permitem a montagem de sistemas a partir de partes substituíveis. São físicos, i.e. não vivem no mundo dos conceitos. São substituíveis: Deve-se poder portanto adicionar novos componentes e substituir componentes antigos. São partes do sistema e são reutilizáveis. Components 10
Componentes e Classes Classes representam abstracções lógicas. Componentes implementam um conjunto de elementos lógicos (e.g. classes). Classes podem ter atributos e operações directamente. Componentes tem operações que só são acedidas através de suas interfaces. (Em UML 2.0 é permitido que tenham atributos próprios.) Components 11
Interfaces (1) Uma interface é uma colecção de operações usada para especificar um serviço de uma classe ou componente. Tracker TargetTracker Observer Classes que realizam uma interface podem conter operações adicionais. Classes que utilizam uma interface não são forçadas a usar todas as operações disponíveis. Components 12
Interfaces (2) A maior parte dos sistemas baseados em componentes utilizam interfaces como cola p/ se ligarem. Cada interface representa um papel desempenhado por uma (ou mais) classe(s). Através de interfaces visões diferentes de uma classe podem ser utilizadas por clientes diferentes. Aumenta a flexibilidade e extensibilidade, relativamente à manutenção. Components 13
Componentes e Interfaces (1) Interface de exportação ou oferecida: interface que realiza um componente; interface que um componente oferece como um serviço para outros componentes. Interface de importação ou requerida: interface que um componente utiliza. Um componente pode importar e exportar várias interfaces. A mesma interface utilizada ou realizada por um componente é realizada por classes que o componente implementa. Components 14
Componentes e Interfaces (2) WP.exe <<Interface>> ISpell wordsmith.dll WP.exe wordsmith.dll ISpell Components 15
UML 2.0: Notação Interfaces oferecidas Interfaces requeridas Components 16
UML 2.0: interfaces oferecidas e requeridas Components 17
UML 2.0: Representação de uma interface Vista interna white box Vista externa black box Components 18
UML 2.0: Interfaces e portas Interface: uma ou mais operações e zero ou mais atributos que definem um comportamento coeso Porta (port): permite definir uma interacção específica entre o componente e o seu ambiente; portas podem ter nome Student administration Access control Student schedule Student Security data Encryption Persistence Data Access Components 19
UML 2.0: portas Components 20
Componentes e conectores (1) Conector: permite efectuar as ligações entre portas e interfaces de componentes Conector de delegação: efectua a ligação entre o contracto externo de um componente, especificado pelos seus portos, e a realização desse comportamento pelas partes do componente Um conector de delegação efectua a ligação entre uma porta e a(s) respectiva(s) porta(s) ou interface(s) internas do mesmo tipo Components 21
Componentes e conectores (2) Conector de junção (assembly): efectua a ligação entre dois componentes, um que fornece um serviço e outro que o requer. Um conector de junção é definido entre uma interface requerida ou porta e uma interface fornecida ou porta. Components 22
UML 2.0: Conectores Conectores de delegação Conectores de junção Components 23
Exemplo em UML 2.0 Components 24
Exemplo em UML 1.x Components 25