UML 2.0 O que é um componente? Componente É uma parte do sistema que é física e substituível e que esta em conformidade com um conjunto de interfaces(fornecidas e/ou requeridas). Um componente é parte do sistema e é reutilizável. Componente Na UML 2 ...uma parte modular de um sistema que encapsula seu conteúdo e cuja manifestação seja substituível dentro de seu ambiente. Um componente define seu comportamento em termos de interfaces fornecidas e requeridas. Componente Um componente é substituível Deve-se, portanto, poder adicionar novos componentes e substituir componentes antigos. Um componente deve estar de acordo com um conjunto de interfaces (conjunto de métodos) que o realiza. O que seria então um Diagrama de Componentes? Diagramas de Componentes Especificação de um conjunto de componentes e suas interdependências. Representam de forma estática, aspectos físicos do sistema que está sendo modelado. São importantes para visualizar, especificar e documentar sistemas baseados em componentes. Eles mostram um conjunto de componentes e seus relacionamentos. Diagramas de Componentes São tipicamente usados para: Modelar a organização do código fonte; Modelar lançamento de executáveis (release); Modelar fisicamente um banco de dados; Modelar sistemas adaptativos. Diagramas de Componentes Modelar a organização do código fonte: na implementação das classes definidas durante a modelagem, o código gerado será armazenado fisicamente em arquivos, o diagrama de componentes servem como forma de gerenciamento destes arquivos. Modelar lançamento de executáveis (releases): uma versão de um sistema envolve combinações específicas de diversas partes. O diagrama de componentes pode modelar os diversos componentes necessários para uma determinada versão do sistema. Diagramas de Componentes Modelar fisicamente um banco de dados: considerando-se que as informações do sistema serão armazenadas em arquivos ou tabelas de um banco de dados, um diagrama de componentes pode mostrar os arquivos (ou tabelas) do banco de dados e seus relacionamentos. Modelar sistemas adaptativos: a execução de alguns sistemas baseia-se no uso de componentes dinâmicos (carga dinâmica, agentes móveis, etc.), que podem ser descritos através de um diagrama de componentes conjuntamente com outros diagramas da UML. Diagrama de Componentes O principal elemento sintático deste diagrama é o componente. UML 1.x UML 2 Opcional <<component>> nomeDoComponente nomeDoComponente Diagrama de Componentes Interfaces oferecidas (I1, I2) Interfaces requeridas (I3) Associação de interfaces a portas p1 l1 l2 l3 <<component>> Componente1 <<component>> l1 l2 l3 Componente1 p2 Diagrama de Componentes Relacionamento entre componentes l1 l2 <<component>> Componente1 l3 l3 <<component>> Componente2 Conector de Montagem: estabelece uma ligação entre componentes, em que uma interface (conjunto de métodos) requerida por um é fornecida por outro. Diagrama de Componentes Relacionamento de componentes <<component>> ComponenteX : Classe1 : Classe2 Conector de Delegação: relaciona os métodos fornecidos com os elementos da estrutura interna responsável por implementá-los ou para relacionar o elemento interno que invoca um método requerido à porta pela qual ocorre essa invocação. Exemplo de um Diagrama de Componentes ImageObserver: é uma interface. Componente.py: implementa(fornece) essa interface. image.py: depende(requer) da interface. Exemplo de um Diagrama de Componentes Objetivo O principal objetivo deste diagrama segundo Scott Ambler, é possibilitar a construção de artefatos para o perfil de arquitetura da solução, seja para a arquitetura técnica ou a de negócios. Dúvidas?