UML Components - A Simple Process for Specifying Component-Based Software Lucas Monteiro Braz lmonteirobraz@gmail.com São Leopoldo 17 de março de 2010
Components aren t rocket science Contudo, há grande confusão sobre os conceitos de componentes
Objetivos dos Componentes O principal objetivo dos componentes NÃO é reuso!!! O principal objetivo é que os componentes sejam facilmente substituídos Por outro componente completamente diferente Ou por uma versão atualizada do componente em uso Em primeiro lugar: construir para mudança Os requisitos mudam, a tecnologia muda, TUDO muda The purpose of the individual components is clearly important but is in many ways a secondary concern.
O que são componentes?
O que são componentes? Um componente só pode ser utilizado se ele está em conformidade com certos padrões (EJB, COM+)
O que são componentes? É necessário saber o que o componente faz Separar especificação e implementação A especificação é mais importante Componentes podem ser implementados em qualquer linguagem de programação, utilizando qualquer mecanismo de armazenamento de dados
O que são componentes? Enxergamos componentes como um pedaço de software que provê alguns serviços e que requer outros serviços Analogia com empresas Proveem serviços a seus clientes e frequentemente dependem dos serviços de outras empresas Uso de contratos Um contrato é um acordo formal entre duas ou mais partes, descrevendo de forma não ambígua as obrigações de cada parte e as punições caso estas não sejam cumpridas Um contrato não especifica o como será feito, apenas o que tem de ser feito
Uso de contratos com componentes Contrato de uso - como o cliente vai usar o componente Contrato de realização - como o componente deve ser implementado
Camadas da arquitetura do sistema
Processo de desenvolvimento
Processo de desenvolvimento
Definição dos requisitos - Conhecendo o negócio Apesar do levantamento de requisitos ser uma fase importante, não nos preocuparemos com essa etapa Mas uma coisa é certa, os requisitos mudarão Contudo, é essencial conhecer bem o que você irá especificar/implementar Nos preocuparemos com os estregáveis mínimos necessários realizar a especificação dos componentes
Processo de Negócio É fundamental conhecer bem os processos do negócio para o qual a aplicação servirá Todo processo não trivial deve ser documentado A descrição do processo do negócio pode ser feita utilizando-se o diagrama de atividades da UML ou qualquer notação que seja mais familiar à equipe Essa descrição não corresponde aos requisitos do software
Processo de Negócio
Processo de Negócio Exemplo - Locadora de filmes (Como melhorar este diagrama?)
Modelo de Conceitos do Negócio É necessário esclarecer os termos envolvidos no processo Originado (de certa forma) a partir do diagrama anterior Um dos entregáveis necessários para a etapa de especificação dos componentes
Modelo de Conceitos do Negócio
Modelo de Conceitos do Negócio
Casos de Uso Tentativa inicial de atribuir responsabilidades
Casos de Uso Identificar os casos de uso
Casos de Uso Identificar os casos de uso
Casos de Uso
Casos de Uso Exemplo
Especificação dos Componentes
Especificação dos Componentes Identificando os componentes
Especificação dos Componentes Identificando os componentes
Especificação dos Componentes Identificando Interfaces de Sistema Uma interface para cada caso de uso
Especificação dos Componentes Identificando Interfaces de Sistema Uma interface para cada caso de uso
Especificação dos Componentes Identificando Interfaces de Negócio As interfaces de Negócio são identificadas a partir do Modelo de Tipos de Negócio Deve-se seguir os passos: 1. Fazer uma cópia do Modelo de Conceitos do Negócio, esta cópia será o Modelo de Tipos de Negócio 2. Refinar e especificar regras adicionais na forma de restrições 3. Identificar os Tipos Principais 4. Criar uma Interface de Negócio para cada Tipo Principal 5. Refinar o modelo para indicar as responsabilidades de cada interface
Especificação dos Componentes Identificando Interfaces de Negócio Criar o Modelo de Tipos de Negócio como uma cópia refinada do Modelo de Conceitos do Negócio
Especificação dos Componentes Identificando Interfaces de Negócio Adicionar restrições
Especificação dos Componentes Identificando Interfaces de Negócio Identificar os tipos principais
Especificação dos Componentes Identificando Interfaces de Negócio Criar interfaces e atribuir responsabilidades
Especificação dos Componentes Normalmente, um componente para cada interface Exceção quando: Os conceitos representados pelas interfaces possuem o mesmo tempo de vida As interações entre as interfaces são complexas, frequentes ou envolvem grande quantidade de dados É interessante que a substituição dessas interfaces ocorra simultaneamente Deseja-se manter um certo nível de granularidade do sistema
Especificação dos Componentes Componentes de Sistema Componentes de Negócio
Arquitetura inicial dos Componentes
Revisão do Processo