Curso de RequisitosMódulo 02: UML e Orientação a
ObjetosConceitos 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 modelagemOs 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 deAtividade
Modelos
Diagramas Estáticos
Diagramas de Sequência
Diagramas de Colaboração
Diagramasde Estado
Diagramas deDeployment
Diagramas de Componente
Diagramas deObjetos
Diagramas de ClassesDiagramas de
Casos de Uso
Diagramas Dinâmicos
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 componentes-chave:– 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 com o sistema.• Valide/Verifique requisitos.• É um instrumento de
Planejamento.EspecificaçãoCaso de Uso 2
Ator 2
Use case 1
Modelo
Use case 2
Use case 3
Use case 1
Use case 2
Use case 3
Um Modelo de Caso de Uso é essencialmente Texto
Volta pelo Modelo de CSU- Navegue pelos textos - Liste todos os atores- Liste todos os casos de uso
Especif. CSU 2- Descrição Breve- Fluxo de eventos
Espec. CSU 3- Descrição breve- Fluxo de eventos
Ator 1
Ator 2
Ator 3
Especificação CSU 1- Descrição breve - Fluxo de eventos
O Sistema
Elementos relevantes da Modelagem
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
Ator
Caso de Uso
O que é um Caso de Uso?
Define a seqüência de ações
Realizado pelo sistema
Que produz um resultado de valor
Para um ator.
Um Casode Uso
Nome do Caso de Uso
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
Descoberto
Rabiscado
Descreva brevemente
Fechar Matrículas
Descrição Breve: Este caso de uso permite ao Digitador 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 detalhadoRequisitos Especiais-Condições Pré/Pós
Totalmente Descrito
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. ?
Charlie e Jodie agem como estudantes.
Charlie também age como Professor.
Estudante
Professor
Atores e Papéis
Matricular em Curso
Submeter grades
Charlie: Está empregado como professor de matemática e é aluno de
Economia.
Jodie: É um aluno de Ciências.
Comunicação-Associação• 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.
Ator 1
Ator 2 Ator 3
Caso de Uso
Convenções das setas e linhas
Supervisor Sensor ativo
Sensor passivo
Sensor híbrido
Supervisor
Monitorar Alarmes
Sensor passivo
Sensor híbrido
Sensor ativo
Monitorar Alarmes
Cada Associação de Comunicação é o Diálogo completo
Estudante Sistema de Cadastro de Cursos
Matricular em Curso
Sistema apresenta a lista de cursos.
Estudante seleciona curso.
Sistema apresenta a agenda do curso.
O estudante acessa o sistema.
O sistema autentica o usuário.
Estudante requisita dados do curso.
O sistema transmite a requisição.
O sistema retorna os dados do curso.
Um cenário de uma instância de Caso de Uso
Cenário 1Autenticar no sistema.Aprova o login.Digitar o assunto.Obter lista de cursos.Apresentar lista de cursos.Selecionar Cursos.Confirmar Disponibilidade.Mostrar grade final.
Cenário 2Autenticar 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.
EstudanteSistema de
Cadastro de Cursos
Matricular em Curso
Diagrama de Caso de Uso
Consórcio deBancos
Cliente Banco
Máquina de Auto Atendimento (ATM)
Caixa
Sacar Fundos
Transferir Fundos
Depositar Fundos
Manter ATMManutenção
Coletar Depósitos
Exemplo: Sistema de Matrículas
Sistema de Registrode Cursos
Estudante
Sistema de Matrículas
Ator XAtor Y
Matricular em Curso
Outro caso de uso
Caso de Uso 3
• 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
Como deve ser o nome do caso de uso?
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.
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?
Sistema de Matrícula Online(www.college.edu)
Estudante
Quem está operando (interagindo com o sistema)?Procure Atores
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 EstudanteDescrição Breve Uma pessoa que se
registra para um curso.
Relacionamentos
com os casos de
uso
Matricular em Curso
Estudante
Caminhar peloCaso 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
Ator
Objetivo 1
Objetivo 2
Quais objetivos desejo alcançar
utilizando o sistema?
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.
Relacionamentocom 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
Entrar PIN
Inserir Cartão
Selecionar Conta Origem
Entrar Quantidade
Selecionar Saque
Cliente
Selecionar Saldo da Conta
Selecionar Transferência
de Fundos
Selecionar Conta Destino
Consórcio Bancário
Processar Transação
Evite Decomposição FuncionalSintomas
– 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
Depositar Fundos
ClienteConsórcio Bancário
Evoluir o Caso de Uso
Especificação de Caso de Usodo Matricular para Curso
+ Fluxo de Eventos detalhado• Passo a Passo
+ Requisitos Especiais+ Condições Pré/Pós
Matricular Online em Curso+ Fluxo de eventos rabiscado
• Passos de alto nível
Estudante Sistema de Matrícula em Curso
+ Descrição Breve
Matricular em Curso
Casos de Uso e o RUP?
Analisar o Problema
Refinar o Sistema Gerenciar Mudanças de
RequisitoEspecificaçãode Caso de Uso
(detalhada)
Definir o Sistema
Gerenciar o Escopo
Use-Case Spec.(outline)
Entender Necessidades do
Stakeholder