Contexto Aps a etapa de anlise de requisitos, temos documentos de requisitos e os casos de uso em mos. Queremos agora gerar um primeiro modelo do sistema a partir dos casos de uso. Este modelo chamado de modelo de anlise. 2009 MDS - Bacal 3 15/03/2005 3/28 Contexto Requisitos Anlise Projeto 2009 MDS - Bacal 4 15/03/2005 4/28 Atividade de Anlise Vai proporcionar um mtodo que permita que criemos um modelo de classes do sistema a partir dos casos de uso Trar a resposta para a pergunta: Quais classes preciso para implementar estes casos de uso? 2009 MDS - Bacal 5 15/03/2005 5/28 Anlise & RUP A maneira como vamos realizar a etapa de anlise se baseia no processo do RUP (Rational Unified Process) A anlise ser orientada a casos de uso, ou seja, os casos de uso serviro de guia para a etapa de anlise 2009 MDS - Bacal 6 15/03/2005 6/28 Casos de Uso X Anlise casos de uso anlise Descritos na linguagem do cliente Descrito na linguagem dos desenvolvedores Viso externa do sistema Viso interna do sistema Captura as funcionalidades do sistema Mostra, de modo abstrato, como a funcionalidade pode ser realizada Estruturado por casos de uso Estruturado por classes e pacotes 2009 MDS - Bacal 7 Anlise & Projeto Os objetivos do fluxo:
Transformar os requisitos em um projeto do sistema do que o sistema ser Derivar uma arquitetura robusta do sistema Adaptar o projeto 2009 MDS - Bacal 8 Anlise versus Projeto Foco no entendimento do problema Projeto idealizado Comportamento Estrutura do sistema Requisitos funcionais Modelos simples Foco no entendimento da soluo Operaes e atributos Performance Pensamento no cdigo Ciclo de vida de objetos Requisitos no- funcionais Modelo complexo 2009 MDS - Bacal 9 Viso geral dos artefatos Anlise e projeto Modelo de anlise e projeto Documento da arquitetura Modelo de caso de uso Modelo de dados Documento requisitos Glossrio 2009 MDS - Bacal 10 Modelo de Analise e Projeto A construo do modelo de anlise e projeto o principal objetivo desta disciplina O modelo de anlise e projeto contm as realizaes de casos de uso Pode ser particionado em dois modelos Modelo de Analise Modelo de Projeto
2009 MDS - Bacal 11 Realizao de Caso de Uso Realizao de Caso de Uso Caso de Uso Diagramas de Colaborao Diagramas de Colaborao Diagramas de Classe Diagramas de Classe Diagramas de Sequncia Diagramas de Sequncia Descreve como o caso de uso realizado, associando o caso de uso com classes e outros elementos de projeto
Requisitos Analise e projeto 2009 MDS - Bacal 12 Fluxo de Anlise e Projeto Diagrama de Atividades 2009 MDS - Bacal 13 Realizar sntese da arquitetura 2009 MDS - Bacal 14 Objetivo Construir e avaliar uma prova de conceito arquitetural Mostrar que existe uma soluo possvel de satisfazer os requisitos do sistema relevantes arquitetura 2009 MDS - Bacal 15 Definir a arquitetura candidata 2009 MDS - Bacal 16 Objetivo
acrescentado detalhes sobre como estes elementos implementam o comportamento requerido
Refinar e atualizar as realizaes de
casos de uso com os novos elementos identificados
2009 MDS - Bacal 21 Projetar Banco de Dados 2009 MDS - Bacal 22 Objetivo
Identificar classes persistentes no
modelo de projeto
Projetar as estruturas de banco de
dados (Modelo de dados)
Definir mecanismos e estratgias
para armazenar e recuperar dados
2009 MDS - Bacal 23 Refinar Arquitetura 2009 MDS - Bacal 24 Objetivo Permitir uma transio entre os elementos e mecanismos de anlise para os de projeto Manter a consistncia e integrao da arquitetura Descrever a arquitetura de execuo e produo da aplicao
Fluxo de Anlise e Projeto Simplificado Simplificando/Instanciando o processo para um contexto especfico 2009 MDS - Bacal 26 Motivao O RUP um Framework Genrico e complexo demais, pois visa atender todos os tipos de projetos de desenvolvimento de software
Toda disciplina do RUP deve ser analisada e customizada de acordo com as necessidades especficas do projeto antes de sua implantao 2009 MDS - Bacal 27 15/03/2005 27/28 Passos da Atividade de Anlise Identificar as classes Identificar persistncia Identificar responsabilidades das classes Identificar relacionamentos Identificar atributos
4. Projetar Banco de Dados Analisar Arquitetura 2009 MDS - Bacal 30 Analisar Arquitetura Esforo inicial em definir as partes do sistema e seus relacionamentos (Arquitetura Inicial) Definir as convenes de modelagem Identificar os mecanismos de anlise Identificao das abstraes-chave 2009 MDS - Bacal 31 Arquitetura Inicial Quais as principais partes do sistema? Como elas interagem entre si? Que padres arquiteturais utilizar (no todo ou internamente nas partes) ? MVC Baseado em camadas Canais e filtros Centrado em repositrio 2009 MDS - Bacal 32 Exemplo de arquitetura inicial Interface Grfica Negcio Dados Mdulo de Vendas Mdulo de Estoque Socket 2009 MDS - Bacal 33 Convenes de modelagem O que so? Que diagramas e elementos de modelagem utilizar Definir as regras para utilizao desses componentes Convenes de nome Exemplos Casos de uso devem ser nomeados como aes (Cadastrar usurio) Cada realizao de caso de uso deve conter: Um diagrama de classes No mnimo um diagrama de seqncia representando o fluxo principal de aes
2009 MDS - Bacal 34 Mecanismos de anlise O que so? Focam nos requisitos no-funcionais do sistema Deciso estratgica sobre padres, politicas e prticas a serem utilizadas no projeto Exemplos Persistncia Comunicao Gerenciamento de transaes Segurana 2009 MDS - Bacal 35 Identificar Abstraes-chave Definir classes de anlise preliminares Conhecimento do domnio Requisitos Outros artefatos (Glossrio e modelo de negcio)
Analisar Caso de Uso 2009 MDS - Bacal 37 Objetivos Identificar as classes que executam o fluxo de eventos do caso de uso Distribuir o comportamento do caso de uso nestas classes Identificar atributos, responsabilidades e associaes das classes 2009 MDS - Bacal 38 Passos para Analisar Caso de Uso Para cada caso de uso: 1. Encontrar classes de anlise 2. Distribuir comportamento entre as classes Para cada classe: 3. Descrever responsabilidades 4. Descrever atributos e associaes 5. Qualificar mecanismos de anlise 2009 MDS - Bacal 39 Passo 1: Encontrar classes de anlise O comportamento do caso de uso distribudo em classes de anlise
2009 MDS - Bacal 40 O que so classes de anlise? Representam o conceito mais abstrato dos elementos do sistema Primeiro passo concreto at chegar em um sistema executvel
Categorizao temporria So convertidas para classes de projeto Servem para diminuir o gap entre os requisitos e projeto
Podem ser dos seguintes tipos Fronteira (<<boundary>>) Controle (<<control>>) Entidade (<<entity>>) 2009 MDS - Bacal 41 15/03/2005 41/28 Classes de Fronteira Utilizada para modelar a interao entre um ator e o sistema Para cada interao entre um ator e caso de uso, criada uma classe de fronteira Possuem o esteretipo <<boundary>>
2009 MDS - Bacal 42 Classes de Fronteira Itermediam a interface para qualquer coisa externa ao sistema Exemplos de classes fronteira GUI Interface com outros sistemas Interface com dispositivos Uma classe de Fronteira por interao ator X caso de uso <<boundary>> Notao em UML 2009 MDS - Bacal 43 O Papel de uma Classe de Fronteira <<boundary>> <<entity>> <<control>> <<boundary>> <<boundary>> <<entity>> Usurio Modela interao entre o sistema e seu ambiente 2009 MDS - Bacal 44 Exemplo de classes de fronteira Matricular-se Em disciplina Estudante Sistema Academico <<boundary>> FormRegistroCursos <<boundary>> SistemaAcademico 2009 MDS - Bacal 45 15/03/2005 45/28 Classes de Entidade Utilizadas para modelar a informao manipulada pelo sistema Podem ser persistentes ou no Conceito anlogo s entidades dos diagramas ER So identificadas a partir do fluxo de eventos do caso de uso Possuem o esteretipo <<entity>>
2009 MDS - Bacal 46 Classes de Entidade Abstraes chave dos casos de uso <<entity>> Glossrio Descrio do Caso de uso <<entity>> <<entity>> 2009 MDS - Bacal 47 O Papel de uma Classe de Entidade <<boundary>> <<entity>> <<control>> <<boundary>> <<boundary>> <<entity>> Usurio Armazenam e gerenciam informao no sistema 2009 MDS - Bacal 48 Exemplo de classes de entidade <<entity>> Estudante <<entity>> Curso <<entity>> Horario 2009 MDS - Bacal 49 15/03/2005 49/28 Classes de Controle Classes responsveis por controlar o fluxo de execuo do caso de uso Normalmente criada uma classe de controle para cada caso de uso Possuem o esteretipo <<control>>
2009 MDS - Bacal 50 Classes de Controle Coordenam o comportamento (lgica de controle) do caso de uso Interface entre fronteira e entidade <<control>> 2009 MDS - Bacal 51 O Papel de uma Classe de Controle <<boundary>> <<entity>> <<control>> <<boundary>> <<boundary>> <<entity>> Usurio Coordenam o comportamento do caso de uso 2009 MDS - Bacal 52 Exemplo de Classe de Controle Matricular-se Em disciplina Estudante Sistema Academico <<control>> ControladorMatricula matricurlarAluno() 2009 MDS - Bacal 53 15/03/2005 53/28 registrar faltas registrar smulas das aulas Professor consultar freqncia Aluno editar alunos remover alunos adicionar turma remover turma editar turma Servidor de e-mail adicionar alunos Secretria Usuario efetuar login Exemplo 2009 MDS - Bacal 54 15/03/2005 54/28 Exemplo Efetuar Login Fluxo de eventos: 1. Usurio informa login e senha 2. Sistema checa se o login e senha conferem 3. Sistema registra a sesso do aluno e a tela principal do sistema exibida
2009 MDS - Bacal 55 15/03/2005 55/28 Exemplo Que classes preciso criar? uma classe de fronteira para lidar com a interao dos atores com o sistema uma classe de entidade para representar as informaes relevantes do aluno uma classe de controle para gerenciar o fluxo de execuo do caso de uso 2009 MDS - Bacal 56 15/03/2005 56/28 Exemplo ControladorLogin Usuario TelaLogin ControladorLogin <<control>> Usuario <<entity>> TelaLogin <<boundary>> H diferentes opes de visualizao dos esteretipos. A opo padro mostrada acima - os esteretipos so visualizados atravs da mudana dos cones das classes. H tambm a opo de se visualizar os esteretipos do modo convencional (<<esteretipo>>). 2009 MDS - Bacal 57 15/03/2005 57/28 Persistncia Mas caso alguma classe de entidade precise ser persistente? Que classe ser responsvel por realizar as tarefas de persistncia? Para cada classe de entidade que precise ser persistente, criada uma nova classe com o esteretipo <<entity collection>> 2009 MDS - Bacal 58 15/03/2005 58/28 Exemplo TelaLogin <<boundary>> CadastroUsuarios <<entity collection>> ControladorLogin <<control>> Usuario <<entity>> 2009 MDS - Bacal 59 Passo 2: Distribuir comportamento Para cada fluxo de eventos Identificar classes de anlise participantes Alocar responsabilidades do caso de uso s classes de anlise Modelar interaes entre as classes atravs dos diagramas de interao 2009 MDS - Bacal 60 Distribuindo comportamento entre as classes
Caso de uso Diagrama de seqncia Diagrama de colaborao Classes de anlise Classes de anlise com responsabilidades 2009 MDS - Bacal 61 Alocando responsabilidades Use esteretipos de anlise como guia Classes de fronteira Comportamento que envolve comunicao com um ator Classes de entidade Comportamento que envolve informao encapsulada na abstrao Classes de controle Comportamento especfico ao (lgica de controle do) caso de uso 2009 MDS - Bacal 62 Guia: Alocando responsabilidades Quem tem a informao necessria para realizar a responsabilidade isso pode envolver apenas uma classe, mas pode ser preciso criar novas classes ou relacionamentos entre classes 2009 MDS - Bacal 63 Modelando interaes Diagramas de interao (colaborao e seqncia) modelam interaes do sistema com seus atores A interao iniciada por um ator e envolve instncias (objetos) das classes Diagramas de interao capturam a semntica do fluxo de eventos do caso de uso Auxiliam a identificar classes, responsabilidades e relacionamentos Mecanismo de validao da arquitetura 2009 MDS - Bacal 64 Vrios diagramas podem ser necessrios
2009 MDS - Bacal 65 Anatomia de um Diagrama de Seqncia :Cliente :Fornecedor Objetos Linha da vida 1: Solicita servio 1.1: Solicita outro servio Mensagem reflexiva Foco do controle Numerao hierrquica Mensagem 2009 MDS - Bacal 66 Exemplo de diagrama de Seqncia : Aluno janela de matrcula controle de matrcula mat 101 1: preenche info 2: submete 3: ad curso(Jose, mat 101) 4: ad(Jose) 5: curso aberto? 6: ad(Jose) mat 101 section 1 2009 MDS - Bacal 67 Diagrama de Colaborao :Cliente :Fornecedor Objetos Mensagem 1: Solicita servio
Ligao 2009 MDS - Bacal 68 Exemplo de diagrama de colaborao : Secretaria janela de curso : JanelaCurso gerenciador : GerenciadorCurriculo curso : Curso 1: informao do curso 2: processa 3: adiciona curso 4: novo curso 2009 MDS - Bacal 69 15/03/2005 69/28 Exemplo : usurio : TelaLogin : ControladorLogin : CadastroAlunos efetuarLogin(login, senha) efetuarLogin(login, senha) checar(login, senha) registrarSessao() 2009 MDS - Bacal 70 Colaborao X Sequncia Colaborao Mostra os relacionamentos, alm das interaes Melhor para visualizar a colaborao Melhor de ser usado em reunies Sequncia Mostra a sequncia explicta de mensagens Melhor para visualizar o fluxo Melhor para cenrios complexos 2009 MDS - Bacal 71 Passo 3: Descrever Responsabilidades Atualizar os diagramas de classes com as responsabilidades identificadas no de iterao
Mensagens nestes diagramas resultam em responsabilidades nas classes receptoras 2009 MDS - Bacal 72 Como fazer? :Cliente :Fornecedor // Executar responsabilidade Fornecedor // Executar responsabilidade diagrama de classe diagrama de interao 2009 MDS - Bacal 73 15/03/2005 73/28 Classes com mtodos 2009 MDS - Bacal 74 Passo 4: Descrever atributos e associaes Definir atributos
Estabelecer agregaes e associaes 2009 MDS - Bacal 75 15/03/2005 75/28 Identificando Atributos Tambm necessrio identificar quais os atributos das classes Um bom conhecimento do domnio do problema bastante importante para esta tarefa, principalmente na identificao de atributos das classes de entidade Nesta etapa ainda no precisamos indicar quais os tipos dos atributos 2009 MDS - Bacal 76 Encontrando Atributos Possveis fontes: conhecimento do negcio, requisitos, glossrio, modelo do negcio, etc.
So propriedades/caractersticas das classes identificadas informao de propriedade exclusiva do objeto informao que pode ser lida ou escrita por operaes, mas sem outro comportamento a no ser fornecer um valor
Se a informao tem comportamento complexo ou compartilhada, deve gerar uma classe 2009 MDS - Bacal 77 15/03/2005 77/28 Identificando relacionamentos As classes identificadas no funcionam isoladamente, elas se relacionam com as demais classes Os diagramas de interao so muito teis nesta tarefa Para cada ligao presente nos diagramas de interao, necessrio um relacionamento no diagrama de classes
2009 MDS - Bacal 78 Encontrando Relacionamentos
Interaes entre objetos nos diagrama de interao pode indicar a necessidade de definir um relacionamento entre as classes
Adicionar os elementos de um relacionamento Tipo e nome Navegabilidade Multiplicidade Papis 2009 MDS - Bacal 79 Encontrando Relacionamentos :Client :Supplier Link Supplier PerformResponsibility() Diagrama de classe Diagrama de Colaborao Association Client Supplier Client 1: PerformResponsibility Prime suppliers 0..* 0..* 2009 MDS - Bacal 80 15/03/2005 80/28 Diagrama final 2009 MDS - Bacal 81 Gerenciando a consistncia Classes com responsabilidades similares so candidatas a serem combinadas
Uma classe com responsabilidades disjuntas candidata a ser dividida
Classes sem (ou com apenas uma responsabilidade) e classes que interagem com muitas classes so candidatas a serem reexaminadas
2009 MDS - Bacal 82 Passo 5: Qualificar mecanismos de anlise Mapear classes de anlise em mecanismos de anlise Classes de anlise Mecanismos de anlise Estudante Persistente ControladorMatricula Distribuio, Segurana Curso Persistente, Interface Legado 2009 MDS - Bacal 83 Passo 6: Unificar classes de anlise Realizao de Caso de Uso Diagramas de Classe Diagramas de Classe
Realizao de Caso de Uso Diagramas de Classe Diagramas de Classe
Realizao de Caso de Uso Diagramas de Classe Diagramas de Classe
Diagramas de Classe Diagramas de Classe Projetar classes 2009 MDS - Bacal 85 Objetivo Detalhar as partes do sistema Concretizao dos conceitos definidos at o momento Detalhes de implementao e ambiente de produo Produtos utilizados Linguagem de programao Distribuio Performance Restries fsicas 2009 MDS - Bacal 86 Passos do projeto de classes 1. Criar classes de projeto 2. Identificar classes persistentes 3. Definir mtodos 4. Definir atributos 5. Definir estados 6. Definir relacionamentos 7. Contemplar os requisitos no-funcionais Para cada classe: 2009 MDS - Bacal 87 Passo 1: Criar classes de projeto Converter classes de anlise (Fronteira, Controle e Entidade) em classes de projeto
Padres de projeto podem ser incorporados
As classes so refinadas para incorporar os mecanismos arquiteturais 2009 MDS - Bacal 88 Projetando classes de fronteira GUI (Graphical User Interface) Que ferramenta de desenvolvimento de interface grfica ser utilizada? Quant pode ser criada pela ferramenta? Que padres sero utilizados? Sistemas Externos Que tecnologias/mecanismos de integrao? Que padres? Projetar como um subsistema 2009 MDS - Bacal 89 Projetando classes de entidade Classes de Entidade so Transitrias Persistentes So detalhadas no passo Identificar classes persistentes 2009 MDS - Bacal 90 Projetando classes de controle Decises que deve ser tomadas: Elas so realmente necessrias? Elas podem/devem ser agrupadas? Como decidir? Complexidade Operaes relacionadas Probabilidade de mudar Performance e distribuio
2009 MDS - Bacal 91 Passo 2: Identificando classes persistentes Instancias da classe precisam preservar o seu estado Estratgia de persistencia definida para cada classe persistente Curso BD Relacional Candidato Arquivo JDBC Serializao 2009 MDS - Bacal 92 Passo 3: Definir Mtodos Tem como propsito mapear responsabilidades identificada na anlise para mtodos na classe Deve-se considerar Nome, assinatura e visibilidade dos mtodos
2009 MDS - Bacal 93 :Fornecedor Mapeando operaes :Cliente // Realizar alguma operao :Fornecedor :Cliente fazerAlgo() Projeto Anlise + concreto - concreto 2009 MDS - Bacal 94 Passo 4: Definir Atributos Tem como propsito formalizar a definio dos atributos Deve-se considerar Persistncia Visibidade, nome, tipo e valor inicial 2009 MDS - Bacal 95 Passo 5: Definir estado Tem como objetivo definir como o objeto se comporta Relevante apenas para objetos com ciclo de vida complexo Pode ser especificado em UML Diagrama de estados Diagrama de atividades 2009 MDS - Bacal 96 Diagrama de Estados Um diagrama de estados mostra o ciclo de vida de um objeto
Nome do estado Variavel: Tipo = valor Ao de entrada Ao de sada Atividade Evento(args) [condio] / Operacao(args) ^obj.enviarMensagem(args) Estado Aes Atividades Transio 2009 MDS - Bacal 97 Exemplo de diagrama de estado Inicializado Aberto Fechado Cancelado do: Incializa Curso do: Finaliza curso do: Notifica Alunos Adiciona Aluno / contador = 0 Adiciona Aluno[ contador < 10 ] [ contador = 10 ] Cancela Cancela Cancela 2009 MDS - Bacal 98 Passo 6: Definir Relacionamentos Dependncias Associaes Simples Agregao Composio Generalizao 2009 MDS - Bacal 99 Passo 7: Contemplar os requisitos no-funcionais Concretizao dos mecanismos de anlise Incorporar responsabilidades em algumas classes Criar novas classes Exemplos: Segurana Como armazenar as senhas? Que algoritmo usar para criptografar uma mensagem? Distribuio Que tecnologia utilizar? Qual o impacto da tecnologia nos objetos j definidos? Tratamento de logs Que tipo de operaes deve ter log (Acesso a dados, execuo de negcio, ) 2009 MDS - Bacal 100 Projetar Banco de Dados Mapear as classes persistentes em conceitos do Banco de Dados Definir os tipos de dados mais adequados para o BD Normalizar se necessrio