Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software Representação de uma classe Nome da classe Atributos +publicos -privados Métodos (serviços) +publicos -privados Exemplo de Diagrama de classes (DC) Associações Nome da associação: significado Papéis: Grau: 1,*,1..n Graus Agregação /Composição Agregação Composição Classes associativas Herança Classes e Objetos Conjuntos: Elemento de uma classe Programação: variável dinâmica cujo tipo é dado pela classe Classe existe em tempo de compilação Objetos existem em tempo de execução Objetos e estados Estado: forma de comportamento de um objeto Estados de um objeto complementa ao Modelo de Classes especifica o comportamento dinâmico dos objetos Comportamento de objetos Diagrama de Transição de Estados (DTE) Componentes descrevem o comportamento de sistemas Estados: modo de comportamento Transições: sinalizam mudanças de estado Estilos Mealy: tudo se passa nas transições Moore: tudo se passa nos estados Diagrama de Estados UML Estados Eventos Transições Ações Estados Estados: Objeto pode estar ativo num estado Executando operações Tipos especiais de estados: Inicial (somente 1) Final ( vários) Ações UML entry: ações executadas ao entrar no estado; do: ações executadas dentro do estado; exit: ações executadas ao sair do estado. Transições Descreve uma mudança de estado Elementos: Evento Condição de guarda (opcional) Ações ( opcional) Transições Indica a passagem de um estado a outro Sintaxe da especificação de uma transição de estado : assinatura-evento ‘[’ condição-de-guarda ‘]’ ’/’ ação Assinatura do evento: nome-evento ‘(‘ nome- parâmetro: tipo-parâmetro ‘,’ ... ‘)’ Eventos Causador de uma transição Sinal sem conteúdo informacional Exemplo de DTE (1) Exemplo de DTE (2) Exemplo de DTE (3) Especificando Comportamento de Objetos Controle Visão especificação formal da implementação de um caso de uso especificação formal do comportamento de uma interfaceusuário Domínio especificação formal do ciclo de vida dos objetos do negócio Como criar um DTE 1-Identificar modos de comportamento do objeto sendo modelado 2-identificar e nomear os eventos que provocam as transições entre estados 3-identificar o estado inicial e os possíveis estados finais 4-associe a cada um dos estados as ações que devem ser executadas Implementando casos de uso Caso de Uso: sequência de interações Interações: objeto solicita serviços a objeto Solicitação de serviços: mensagem Interações: ordem temporal Diagrama de seqüência (DS) da UML Elementos principais: Objetos Linhas de vida Mensagens Exemplo de DS (1) Exemplo de DS (2) Linhas de vida Representa a existência do objeto em uma interação (vivo na memória) Criação de um objeto: create para a etiqueta do objeto. Destruição de um objeto: destroy marcando a linha da vida com um grande “X”. Tipos de Mensagens Mensagem: ativa um serviço no objeto destino. Síncrona: espera o término da execução do serviço Assíncrona: deixa uma mensagem e segue Em frente Para que servem os DS Memória de cálculo Ajuda a descobrir os serviços das classes Descartável (pode ser recuperado a partir do código fonte) Tipos de serviços Visão Domínio Apresentar uma interface lógica Retorna dados de entrada Apresenta dados na saída Sinaliza controle Buscar um elemento/lista Gravar um elemento/lista Controle Inicializar caso de uso Como construir um DS 1-Inicialmente assuma um DS para cada caso de uso 2-Identifique os objetos participantes: identifique e nomeie o objeto de interface (Visão) responsável pela interação com o ator, crie um objeto de controle com o mesmo nome do caso de uso identifique os objetos do modelo que participam da interação 3-Um passo de um caso de uso tem uma forma canônica que contém uma ou mais das seguintes ações: ator envia informação ao sistema sistema consulta modelo(s) sistema envia informações ao ator sistema registra resultados da transação no modelo 4-Estes passos podem ser mapeados da seguinte maneira se o passo do caso de uso indica que o ator envia uma mensagem então crie um serviço pare obter os dados da mensagem se o passo envolve devolver informações para o ator crie serviços na interface para mostrar estes dados se as informações forem passadas ao sistema, crie serviços nos objeto de domínio para receber estas informações se o passo envolve um registro de uma operação crie um serviço no objeto de domínio para executar a operação.