UML – Diagramas de componentes UML – diagramas de componentes, v.1.0, João Pascoal Faria, 2001 ‹#› Diagrama de Componentes Captura a estrutura física da implementação Construído como parte da especificação da arquitectura Objectivo • Organizar o código fonte (ambiente de desenvolvimento) • Construir uma release executável (ambiente de produção) • Especificar uma base de dados física Desenvolvido por arquitectos e programadores Contém componentes, interfaces e relações entre componentes UML – diagramas de componentes, v.1.0, João Pascoal Faria, 2001 ‹#› Componentes Um componente é uma parte física (feita de bits e bytes) e substituível de um sistema, que proporciona a realização de um conjunto de interfaces • Podem-nos interessar diferentes ambientes: desenvolvimento, produção, testes, ... Exemplos: executáveis, bibliotecas, tabelas, ficheiros, documentos Um componente representa um empacotamento físico de elementos relacionados logicamente (normalmente classes) Notação: caixa com tabs kernel32.dll UML – diagramas de componentes, v.1.0, João Pascoal Faria, 2001 ‹#› Tipos de componentes - ícones e estereótipos <<executable>> componente que pode ser executado num nó 2 rodas dentadas <<library>> biblioteca estática ou dinâmica <<database>> base de dados <<table>> tabela de uma base de dados <<file>> ficheiro contendo código fonte ou dados <<document>> documento genérico UML – diagramas de componentes, v.1.0, João Pascoal Faria, 2001 ‹#› Interfaces Uma interface é um conjunto de operações usado para especificar os serviços de uma classe ou componente Relação de concretização (realization): um componente pode concretizar (implementar os serviços de) uma ou mais interfaces • Normalmente quer dizer que tem classes que implementam esses interfaces • Diz-se que as interfaces são exportadas • Um componente poder ser substituído por outro componente que implementa as mesmas interfaces - Não basta obedecer à mesma sintaxe, mas também à mesma semântica Relação de dependência: um componente pode usar uma ou mais interfaces • Diz-se que essas interfaces são importadas • Um componente que usa outro componente através de uma interface bem definida, não deve depender da implementação (do componente em si), mas apenas da interface UML – diagramas de componentes, v.1.0, João Pascoal Faria, 2001 ‹#› Interfaces – Exemplo 1 image.java componente.java ImageObserver ou com mais detalhe: image.java dependência interface <<interface>> ImageObserver abort: int {final static} error: int {final static} imageUpdate(): Boolean concretização componente.java UML – diagramas de componentes, v.1.0, João Pascoal Faria, 2001 ‹#› Interfaces – Exemplo 2 componente Java Application JDBC Visual Basic Application Sun JDBCODBC brigde SQL Server JDBC driver interface (mais precisamente, API) ODBC Oracle ODBC driver SQL Server ODBC driver Transact SQL SQL Server DBMS UML – diagramas de componentes, v.1.0, João Pascoal Faria, 2001 ‹#› Tipos de dependências entre componentes Dependências simples: • entre ficheiros com código fonte, para controlo de alterações • entre executáveis e/ou bibliotecas, para gestão de configurações e dependências • entre executáveis ou bibliotecas e tabelas ou documentos de ajuda por eles usados Dependências estereotipadas: • estereótipo «hyperlink» - entre páginas html ou páginas html e executáveis • estereótipo «trace» - entre versões consecutivas do mesmo tipo de componente Não esquecer que é melhor depender das interfaces do que das implementações UML – diagramas de componentes, v.1.0, João Pascoal Faria, 2001 ‹#› Dependências - Exemplo UML – diagramas de componentes, v.1.0, João Pascoal Faria, 2001 ‹#› Composição e agrupamento de componentes Conforme o nome indica, os componentes são para compor (montar), criando componentes maiores ou sistemas inteiros Exemplos: • Base de dados composta por tabelas • Biblioteca dinâmica (dll) composta por componentes COM+ No caso de agrupamentos de componentes que não criam componentes (físicos) maiores, usar pacotes de componentes Base de dados de biblioteca Web site «hyperlink» Web page 1 Web page n Tabela de sócios Tabela de reservas Tabela de publicações UML – diagramas de componentes, v.1.0, João Pascoal Faria, 2001 ‹#› Caso de estudo (biblioteca) Pacotes de componentes Páginas Web Dinâmicas do SIB Componentes de Lógica de Negócio do SIB Base de Dados do SIB UML – diagramas de componentes, v.1.0, João Pascoal Faria, 2001 ‹#› Caso de estudo (biblioteca) Todos os componentes Páginas Web Dinâmicas do SIB Mostra menu que está disponível em qualquer página index.html login.h tml Segue um padrão! Qual é? Como formalizar? O padrão é arquitectura! para inserir novo pesquisaAu tores.html pesquisaPubli cações.html listaAutor es.asp listaPublica ções.asp fichaAutor. asp pesquisaSó cios.html pesquisaReq uisições.html listaSóci os.asp listaRequisiç ões.asp fichaSóc io.asp fichaRequi sição.asp fichaPublica ção.asp Componentes de Lógica de Negócio do SIB <<COM+>> GestãoAuto res <<COM+>> GestãoPubli cações <<dbtable>> Autores <<dbtable>> Publicações <<COM+>> GestãoRequ isições <<COM+>> GestãoSóci os Base de Dados do SIB <<dbtable>> Requisições <<dbtable>> Sócios UML – diagramas de componentes, v.1.0, João Pascoal Faria, 2001 ‹#›