4 – Atividade
Projetar Caso de Uso
Objetivos deste módulo
• Apresentar os passos necessários para realizar a atividade projetar caso de uso e discutir seus artefatos
Projeto Orientado a Objetos 3
Projetar Caso de Uso
Analisar caso de uso Analista
Projetista de banco de
dados
Revisar projeto Projetar
caso de uso Arquiteto
Revisor do projeto
Projetar base de dados Projetar
arquitetura
Projetista
Projeto Orientado a Objetos 4
O que foi feito até agora
• Realização dos casos de uso (análise)
– Identificação das classes de análise, seus atributos, responsabilidades e relacionamentos
• Mapeamento das classes de análise em elementos de projeto
• Identificação de oportunidades de reuso
• Definição da organização do sistema
• Definição da distribuição do sistema
Projeto Orientado a Objetos 5
Objetivos desta atividade
• Refinar as realizações de casos de uso (elaboradas na análise de casos de uso)
– Incluindo os elementos de projeto
– Incorporando persistência nas realizações
• O objetivo final é ter um modelo
consistente que sirva de referência para a implementação do caso de uso
Visão geral dos artefatos
Projetar Caso de Uso Realização de
caso de uso
Subsistemas de projeto Documento de
requisitos
Realização de caso de uso (atualizada)
Projeto Orientado a Objetos 7
Passos para Projetar Caso de Uso
1. Refinar as realizações de casos de uso – incluir os elementos de projeto
– incluir persistência
2. Simplificar os diagramas de interação
usando (possivelmente novos) subsistemas (opcional)
Projeto Orientado a Objetos 8
Passo 1. Refinar as realizações de casos de uso
• Substitua as classes de análise por classes de projeto e/ou interfaces dos subsistemas
associados
• Incorpore persistência
• Atualize as realizações de casos de uso
– Diagramas de interação
– Visão das classes participantes (View of Participating Classes) – VOPC
Projeto Orientado a Objetos 9
Refinando as realizações de casos de uso
Subsistemas e Interfaces
BVF: Biblioteca Virtual Fucapi
Análise Projeto
<<boundary>>
ComunicacaoImpressora enviar()
<<subsystem>>
SubsistemaComunicacaoI mpressora ISubsistemaComunicacaoIm
pressora enviar()
Projeto Orientado a Objetos 11
Incorporando persistência
• Seguir as orientações de projeto definidas pelo arquiteto
• Algumas classes podem já ter sido inseridas pelo arquiteto
• Respeitar a organização de pacotes que foi definida
Projeto Orientado a Objetos 12
Exemplo: Atualizando diagramas de seqüência Caso de uso Fazer Login (antes)
: Locatário(a) : TelaLogin : ControladorLogin : CadastroLocatario efetuarLogin(login, senha)
efetuarLogin(login, senha)
pesquisarLocatario(login, senha)
registraSessao(login)
:
: Locatario create
Projeto Orientado a Objetos 13
Exemplo: Atualizando diagramas de seqüência Caso de uso Fazer Login (depois)
: Locatário(a) : TelaLogin : ControladorLogin : CadastroLocatario efetuarLogin(login, senha)
pesquisarLocatario(login, senha)
registraSessao(login)
<< interface >>
: Locatario create
: FachadaBVF
efetuarLogin(login, senha)
efetuarLogin(login, senha)
Exemplo: Atualizando diagramas de classe Caso de uso Fazer Login (antes)
CadastroLocatario
pesquisarLocatario(login, senha)
<<entity collection>>
TelaLogin
efetuarLogin(login, senha)() registraSessao(login)()
<<boundary>>
ControladorLogin efetuarLogin(login, senha)()
<<control>>
Locatário
<<entit...
Projeto Orientado a Objetos 15
Exemplo: Atualizando diagramas de classe Caso de uso Fazer Login (depois)
CadastroLocatario
pesquisarLocatario(login, senha)
<<interface>>
TelaLogin
efetuarLogin(login, senha)() registraSessao(login)()
FachadaBVF
efetuarLogin(login, senha)
Locatário
ControladorLogin
efetuarLogin(login, senha)
Projeto Orientado a Objetos 16
Exercício
• Dado:
– Realizações de caso de uso de análise (diagramas de interação e VOPCs)
– Mapeamento de classes de análise em elementos de projeto
– Classes persistentes
• Produzir:
– Realização do caso de uso Reservar Obra com elementos de projeto e persistência
• Diagrama de seqüência
• Diagrama de classes
Projeto Orientado a Objetos 17
Passo 2. Simplificar os diagramas de interação usando subsistemas
• Identifique subfluxos comuns nos diagramas de interação e encapsule-os em subsistemas
(possivelmente novos)
• Substitua os elementos internos pela interface dos subsistemas (nos diagramas)
• Interações internas ao subsistema serão descritas na atividade Projetar subsistema
Fonte: Rational
Quando encapsular fluxos em subsistemas
• Quando um sub-fluxo
– ocorre em vários casos de uso – possui potencial de reuso
– é complexo e de fácil encapsulamento
– é responsabilidade de uma equipe/pessoa específica – produz um resultado bem definido
– é encapsulado dentro de um componente de implementação
Projeto Orientado a Objetos 19
Benefícios de encapsular interações em subsistemas
• As realizações dos casos de uso passam a oferecer uma visão de mais alto nível
• As realizações podem ser descritas antes dos detalhes internos do projeto de subsistemas serem desenvolvidos
• As realizações se tornam mais genéricas e modulares (permitindo que subsistemas sejam substituídos praticamente sem impacto nos diagramas de interação)
Projeto Orientado a Objetos 20
O uso de subsistemas favorece o desenvolvimento paralelo
• Definição das interfaces
• Concentração nos requisitos que afetam as interfaces dos subsistemas
• Modelar mensagens fora do escopo interno do subsistema
• Diagramas de interação devem mostrar mensagens entre interfaces de subsistemas
• As interfaces são vistas como pontos de sincronização