Curso de Requisitos Módulo 02: UML e Orientação a Objetos Conceitos Básicos de UML e Orientação a Objetos O que é um Modelo? • Um modelo é uma simplificação da realidade • Pode ser um modelo detalhado • Pode ser um modelo mais genérico • Um bom modelo apresenta os itens mais importantes e abstrai os itens menos relevantes • Um modelo pode enfatizar a representação estrutural (organização do sistema) ou comportamental (dinâmica do sistema) Por que modelar? • Nos ajuda a visualizar o sistema que queremos • Nos permite especificar a estrutura e o comportamento do sistema • Nos fornece um template que nos guia na construção do sistema • Permite documentar as decisões técnicas A importância da modelagem Os sistemas hoje são mais complexos do que podemos entender. Por isto, modelamos E quanto mais complexos e caros os sistemas, mais obrigatório se torna modelar, para assim diminuir complexidade e testar conceitos em modelos que se construídos antes seriam caros Comunicação não Ambígua • Você pode utilizar técnicas de diagramação fornecidas pela UML para comunicar decisões técnicas de forma clara, não ambígua • Existem ferramentas automatizadas para criar estes diagramas UML • Um exemplo é o JUDE, uma ferramenta Open-source para modelar com UML UML – Unifield Modeling Language • É uma linguagem padrão da indústria para visualizar, especificar, construir e documentar os artefatos de sistema • A UML é independente de tecnologia e define uma linguagem gráfica para apresentar modelos, assim como a semântica para cada elemento gráfico • A UML melhora a comunicação entre os membros da equipe A linguagem dos diagramas • Os vários tipos de diagrama são necessários para representar as diferentes visões do sistema Diagramas de Sequência Diagramas de Colaboração Diagramas de Estado Diagramas Dinâmicos Diagramas de Casos de Uso Diagramas de Classes Modelos Diagramas de Atividade Diagramas de Objetos Diagramas de Componente Diagramas de Deployment Diagramas Estáticos Os quatro princípios da modelagem • Princípio 01: A escolha do modelo é importante – Depende da visão que se quer modelar (comportamento ou estrutura?) • Princípio 02: Os níveis de precisão podem variar – Depende de quem é o consumidor do modelo (para o cliente, um modelo de alto nível, para o desenvolvedor um mais detalhado) • Princípio 03: Os melhores modelos estão conectados com a realidade • Princípio 04: Um único modelo não é suficiente – Pelo menos dois modelos são necessários, um para comportamento (diagrama de sequência) e outro para estrutura (diagrama de classes) Principais diagramas utilizados pelo Analista de Requisitos • Diagrama de Casos de Uso – Estabelece o escopo do sistema e todos os seus possíveis usos pelos usuários (atores) • Diagrama de Atividades – Representa o fluxo de atividades que ocorrem em um caso de uso em resposta às requisições do ator • Diagrama de Classes – Modela quais classes participam da realização do caso de uso (estrutural) • Diagrama de Sequência – Modela qual é o comportamento das classes para atender ao ator do caso de uso (comportamento) Orientação a objetos • Para entendermos melhor como modelar, precisamos entender os conceitos básicos de orientação a objetos • A UML se baseia na Orientação a Objetos • A Orientação a Objetos possibilita representar a realidade nos modelos UML • A Orientação a Objetos permite abstrair itens e tornar relevantes outros itens O que é um Objeto? • Os objetos permitem representar coisas do mundo real, como: – Entidade Física: pessoas, carros, documentos – Conceitos: processo químico, algoritmos – Entidade de Software: Collections, Telas • Todos objetos tem 2 componenteschave: – Atributos, que definem o estado do objeto – Operações, que definem o comportamento do objeto Entidade física Entidade Conceitual Entidade de software Um objeto tem estado • O estado de um objeto é uma das condições possíveis em que um objeto pode estar • O estado normalmente muda com o passar do tempo • Representados por atributos e seus valores para cada objeto Um objeto possui comportamento • O comportamento de um objeto é representado pelas operações que o mesmo possui • O comportamento é a forma com que a aplicação se comporta em sua interação com o usuário Um objeto tem identidade • Cada objeto tem uma identidade única, mesmo que seus estados tenham valores idênticos Princípios da Orientação a Objetos • • • • Abstração Encapsulamento Modularidade Hierarquia O que é abstração? • Uma abstração é modelar o que é mais importante e suprimir ou ignorar detalhes pouco importantes, diminuindo a complexidade • A abstração captura a essência de algo • Um carro é um exemplo de abstração para um “um veículo movido a motor que transporta pessoas de um local a outro local”. • Abstrações dependem do contexto da modelagem (se um sistema de locadora, de recursos humanos, etc) O que encapsulamento? • Propriedades e comportamentos são encapsulados em objetos e acessados através de uma interface • Um exemplo de encapsulamento é um acelerador de carro. O motorista não precisa conhecer quais os cabos, componentes e tecnologia envolvidas, apenas apertar a interface “pedal do acelerador”. • Uma tela não precisa conhecer como um objeto de cadastro de alunos funciona, apenas chama a operação inserirAluno(dados), passando os dados de cadastro do aluno Benefícios do Encapsulamento • O encapsulamento melhora a manutenção e a torna menos cara. • Ao passar um valor para um método, o estado interno de um componente e seu comportamento interno é alterado, sem que os outros objetos tenham conhecimento • A complexidade fica isolada dentro do objeto, e as demais classes somente utilizam seus serviços O que é modularidade? • Modularidade ajuda a gerenciar complexidade, dividindo algo que é complexo dentro de peças gerenciáveis O que é Hierarquia? • O uso de Hierarquia ajuda a organizar elementos, tornando fácil reconhecer similaridades e diferenças O que é uma Classe? • É uma abstração de características comuns a um conjunto de objetos • Serve como template para criar objetos • Uma classe possui propriedades e operações Representando uma classe em UML O que é polimorfismo? • É a habilidade de esconder as diferentes formas de agir (implementações) através de uma única interface Exemplo de Polimorfismo Generalização e Herança • Generalização é o relacionamento entre classes em que uma classe compartilha sua estrutura e comportamento com uma ou mais classes O que é modelagem de casos de uso? • Associe necessidades a requisitos de software. • Defina claramente as fronteiras do sistema. • Capture e comunique o comportamento que é desejado do sistema. • Identifique quem ou o que interage Modelo com o sistema. Use case 1 • Valide/Verifique requisitos. Ator 2 • É um instrumento de Use case 2 Planejamento. Use case 3 Especificação Caso de Uso 2 Um Modelo de Caso de Uso é essencialmente Texto O Sistema Use case 1 Volta pelo Modelo de CSU Ator 1 - Navegue pelos textos - Liste todos os atores - Liste todos os casos de uso Use case 2 Ator 2 Use case 3 Ator 3 Especificação CSU 1 Especif. CSU 2 - Descrição breve - Descrição Breve - Fluxo de eventos - Fluxo de eventos Espec. CSU 3 - Descrição breve - Fluxo de eventos Elementos relevantes da Modelagem Ator Caso de Uso Ator Alguém ou alguma coisa externa, que tem o papel de interagir com o sistema Caso de Uso Representa alguma coisa de valor que o sistema fornece para os seus atores O que é um Caso de Uso? Nome do Caso de Uso Um Caso de Uso Define a seqüência de ações Realizado pelo sistema Que produz um resultado de valor Para um ator. O Caso de Uso contêm os Requisitos de Software • Cada caso de uso – Descreve ações no sistema que entrega algo de valor para um ator. – Apresenta a funcionalidade do sistema usada pelo ator – Modela o diálogo entre sistema e ator. – É um fluxo de eventos completo e significativo dos eventos da perspectiva de um ator em particular Benefícios dos Casos de Uso • Dá um contexto para os requisitos. – Coloca os requisitos do sistema em seqüência lógica – Ilustra porque o sistema é necessário. – Ajuda a verificar se todos requisitos foram atendidos. • São fáceis de entender. – Usa terminologia que clientes e usuários utilizam. – Fala de estórias concretas de uso do sistema – Verifique o entendimento dos stakeholders • Facilita o acordo entre os clientes. • Facilita reuso: teste, documentação, e projeto. Ciclo de Vida de Casos de Uso Fechar Matrículas Descoberto Descrição Breve: Este caso de uso permite ao Digitador Descreva brevemente Rabiscado Totalmente Descrito fechar o processo de matrículas. Ofertas de curso que não possuírem alunos serão canceladas. O sistema de Cobrança é notificado com todos os dados de matrícula para assim efetuar as devidas cobranças. Resumo do Fechar Matrículas -Fluxo de Eventos -Passo-a-Passo Fechar Matrículas Especificação de Caso de Uso - Fluxo de Eventos detalhado Requisitos Especiais -Condições Pré/Pós Definir Atores: Foco nos papéis • Um ator representa um papel que um humano, hardware, ou outro sistema desempenha em relação ao sistema. • Os nomes de ator devem representar claramente seu papel. ? Atores e Papéis Charlie: Está empregado como professor de matemática e é aluno de Economia. Jodie: É um aluno de Ciências. Matricular em Curso Charlie e Jodie agem como estudantes. Estudante Charlie também age como Professor. Submeter grades Professor Comunicação-Associação Ator 1 Caso de Uso Ator 2 Ator 3 • Um canal de comunicação entre um ator e um Caso de Uso. • Uma linha é usada para representar uma associação de comunicação. –Uma flecha indica quem inicia cada interação. –Uma linha se flecha indica que o caso de uso ou o ator podem iniciar a interação. Convenções das setas e linhas Sensor passivo Monitorar Alarmes Supervisor Sensor ativo Sensor híbrido Sensor passivo Monitorar Alarmes Supervisor Sensor ativo Sensor híbrido o Diálogo completo O estudante acessa o sistema. O sistema autentica o usuário. Estudante requisita dados do curso. Estudante Matricular em Curso Sistema de Cadastro de Cursos Sistema apresenta a lista de cursos. O sistema transmite a requisição. Estudante seleciona curso. O sistema retorna os dados do curso. Sistema apresenta a agenda do curso. Caso de Uso Estudante Matricular em Curso Cenário 1 Autenticar no sistema. Aprova o login. Digitar o assunto. Obter lista de cursos. Apresentar lista de cursos. Selecionar Cursos. Confirmar Disponibilidade. Mostrar grade final. Sistema de Cadastro de Cursos Cenário 2 Autenticar no sistema. Aprova o login. Digitar o assunto. Assunto inválido. Entra novamente assunto. Obter lista de cursos. Apresentar lista de cursos. Selecionar Cursos. Confirmar Disponibilidade. Mostrar grade final. Diagrama de Caso de Uso Máquina de Auto Atendimento (ATM) Sacar Fundos Transferir Fundos Consórcio de Bancos Cliente Banco Depositar Fundos Coletar Depósitos Caixa Manter ATM Manutenção Exemplo: Sistema de Matrículas Sistema de Matrículas Estudante Matricular em Curso Sistema de Registro de Cursos Outro caso de uso Ator X Caso de Uso 3 Ator Y Como deve ser o nome do caso de uso? • • • • Indicar o significado ou objetivo do CSU. Usa a forma ativa; começar com verbo. Imagine uma lista de tarefas. Exemplos de variação: – Matricular em cursos – Matriculando em cursos – Confirmar Matrícula – Matrícula em Curso – Usar Sistema de Matrícula Que variações tem maior significado para o usuário? Quais não tem? Que nome de caso de uso você escolhe? Por que? Passos para criar o Modelo de Casos de Uso 1. Procurar atores e casos de uso. –Identifique e descreva brevemente os atores. –Identifique e descreva brevemente casos de usos. 2. Escreva os casos de uso. –Desenhe todos os casos de uso. –Priorize os fluxos de casos de uso. –Detalhe os fluxos por ordem de prioridade. Procure Atores Quem está operando (interagindo com o sistema)? Estudante Digitador Sistema de Matrículas O sistema nunca digita no sistema; o digitador faz isto. Ou, você está construíndo uma aplicação web? Estudante Sistema de Matrícula Online (www.college.edu) Identifique atores • Quem/o que usa o sistema? • Quem/o que obtêm informação do sistema? • Quem/o que fornece informação para o cliente? • Onde na empresa o sistema é usado? • Quem/o que suporta ou mantêm o sistema? • Quais outros sistemas usam o sistema? Descrição de um ator Nome Estudante Descrição Breve Uma pessoa que se registra para um curso. Relacionamentos com os casos de uso Matricular em Curso Estudante Caminhar pelo Caso de Uso Checkpoints para Atores • Você encontrou todos atores? Você modelou todos os papéis do sistema em atores? • O ator está envolvido com pelo menos um caso de uso? • Você poderia identificar pelo menos duas pessoas que realizam o papel do ator? • Alguns atores desempenham funções semelhantes em relação ao sistema? Se sim, colocá-los em um único ator. Identificar Casos de Uso Quais objetivos desejo alcançar utilizando o sistema? Objetivo 1 Ator Objetivo 2 Identifique os Casos de Uso • Quais são os objetivos de cada ator? –Porque o ator quer utilizar o sistema? –O ator irá criar, guardar, mudar, remover, ou ler dados no sistema? Se sim, porque? –O ator precisa informar ao sistema sobre mudanças ou eventos externos? –O ator precisará ser informado sobre certas circunstâncias do sistema? • O sistema atende ao négocio com o comportamento correto? Descrição do Caso de Uso Nome Matricular em curso Descrição Breve O estudante seleciona os cursos que deseja para o próximo semeste. Uma grade dos cursos primários e alternativos são gerados. Relacionamento com atores Matricular em curso Estudante Checkpoints para Casos de Uso • O modelo de caso de uso apresenta o comportamento do sistema; com ele é fácil de entender o que o sistema ao revisar o modelo. • Todos os casos de uso foram identificados; o caso de uso conta com todos os comportamentos esperados pelo ator com o qual interage. • Todas as características estão mapeadas para pelo menos um caso de uso. • O modelo de caso de uso não contêm comportamento supérfulo; todos os casos de uso podem ser justificados ao rastreá-los de volta para os requisitos funcionais. • Todos os casos de uso CRUD são removidos. – Create, Retrieve, Update, Delete Decomposição funcional • É a quebra do problema em partes menores, isoladas. –As partes juntas fornecem a funcionalidade do sistema. • Muitas vezes não fazem sentido se isoladas. • Casos de uso: –Não há decomposição funcional. –Mantêm a funcionalidade junta para descrever o uso completo do sistema. –Fornecer o contexto. Decomposição Funcional Inserir Cartão Processar Transação Consórcio Bancário Entrar PIN Selecionar Conta Destino Selecionar Transferência de Fundos Cliente Entrar Quantidade Selecionar Conta Origem Selecionar Saque Selecionar Saldo da Conta Evite Decomposição Funcional Sintomas – Casos de uso pequenos – Muitos casos de uso – Casos de uso sem resultado real – Nomes com operações de baixo nível • “Operação” + “objeto” • “Função” + “dados” • Exemplo: “Inserir Cartão” – Dificuldade de entender o contexto geral Ações Corretivas – Procure um contexto maior “Porque está construíndo o sistema?” – Coloque-se no papel do usuário “O que o usuário quer obter?” “Qual objetivo o caso de uso deve satisfazer?” “Qual valor o caso de uso adiciona?” “Qual é a história do caso de uso?” Decomposição Funcional: Um exemplo corrigido Sacar Fundos Transferir Fundos Consórcio Bancário Cliente Depositar Fundos Evoluir o Caso de Uso Matricular em Curso Estudante Sistema de Matrícula em Curso + Descrição Breve Matricular Online em Curso + Fluxo de eventos rabiscado • Passos de alto nível Especificação de Caso de Uso do Matricular para Curso + Fluxo de Eventos detalhado • Passo a Passo + Requisitos Especiais + Condições Pré/Pós Casos de Uso e o RUP Analisar o Problema Entender Necessidades do Stakeholder Use-Case Spec. (outline) Refinar o Sistema Especificação de Caso de Uso (detalhada) ? Definir o Sistema Gerenciar o Escopo Gerenciar Mudanças de Requisito