Análise e Projeto no RUP
Tópicos abordado
Visão geral do RUP
Introdução à disciplina de Análise &
Projeto



Atividades
Papéis
Artefatos
Análise & Projeto
Análise & 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
Análise versus Projeto
Foco no entendimento
do problema
Projeto idealizado
Comportamento
Estrutura do sistema
Requisitos funcionais
Modelos simples
Foco no entendimento
da solução
Operações e atributos
Performance
Pensamento no código
Ciclo de vida de objetos
Requisitos nãofuncionais
Modelo complexo
Visão geral dos artefatos
Modelo de análise
e projeto
Modelo de caso
de uso
Análise e
projeto
Documento da
arquitetura
Modelo de dados
Glossário
Documento
requisitos
Modelo de Analise e Projeto
A construção do modelo de análise e
projeto é o principal objetivo desta
disciplina
O modelo de análise e projeto contém
as realizações de casos de uso
Pode ser particionado em dois modelos


Modelo de Analise
Modelo de Projeto
Realização de Caso de Uso
Caso de Uso
Descreve como o caso
de uso é realizado,
associando o caso de
uso com classes e
outros elementos de
projeto
 Requisitos 
Realização de Caso
de Uso
Diagramas de Sequência
Diagramas de Colaboração
Diagramas de Classe
 Analise e projeto 
Fluxo de Análise e Projeto
Diagrama de
Atividades
Realizar síntese da arquitetura
Objetivo
Construir e avaliar uma prova de
conceito arquitetural

Mostrar que existe uma solução possível de
satisfazer os requisitos do sistema
relevantes à arquitetura
Definir a arquitetura candidata
Objetivo
Criar o esqueleto inicial da arquitetura
do sistema
Identificar classes de análise dos casos
de uso arquiteturalmente relevantes
Atualizar a realização de caso de uso
com as interações entre classes de
análise
Analisar comportamento
Objetivo
Transformar as descrições sobre o
comportamento providas pelos caso de
uso em um conjunto de elementos nos
quais o modelo de projeto vai se basear
Projetar componentes
Objetivo
Refinar as definições dos elementos
acrescentado detalhes sobre como
estes elementos implementam o
comportamento requerido
Refinar e atualizar as realizações de
casos de uso com os novos elementos
identificados
Projetar Banco de Dados
Objetivo
Identificar classes persistentes no
modelo de projeto
Projetar as estruturas de banco de
dados (Modelo de dados)
Definir mecanismos e estratégias para
armazenar e recuperar dados
Refinar Arquitetura
Objetivo
Permitir uma transição entre os
elementos e mecanismos de análise
para os de projeto
Manter a consistência e integração da
arquitetura
Descrever a arquitetura de execução e
produção da aplicação
Fluxo de Análise e Projeto
Light
Simplificando/Instanciando o
processo para um contexto
específico
Motivação
O RUP é um Framework

Genérico 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
específicas do projeto antes de sua
implantação
Fluxo de atividades
simplificado
1. Analisar Arquitetura
2. Analisar Caso de Uso
3. Projetar Classes
4. Projetar Banco de Dados
Analisar Arquitetura
Analisar Arquitetura
Esforço inicial em definir as partes do
sistema e seus relacionamentos
(Arquitetura Inicial)
Definir as convenções de
modelagem
Identificar os mecanismos de análise
Identificação das abstrações-chave
Arquitetura Inicial
Quais as principais partes do sistema?
Como elas interagem entre si?
Que padrões arquiteturais utilizar (no
todo ou internamente nas partes) ?




MVC
Baseado em camadas
Canais e filtros
Centrado em repositório
Exemplo de arquitetura inicial
Módulo de Vendas
Módulo de
Estoque
Interface Gráfica
Negócio
Dados
Socket
Convenções de modelagem
O que são?



Que diagramas e elementos de modelagem utilizar
Definir as regras para utilização desses
componentes
Convenções de nome
Exemplos


Casos de uso devem ser nomeados como ações
(Cadastrar usuário)
Cada realização de caso de uso deve conter:
 Um diagrama de classes
 No mínimo um diagrama de seqüência representando o
fluxo principal de ações
Mecanismos de análise
O que são?


Focam nos requisitos não-funcionais do sistema
Decisão estratégica sobre padrões, politicas e
práticas a serem utilizadas no projeto
Exemplos




Persistência
Comunicação
Gerenciamento de transações
Segurança
Identificar Abstrações-chave
Definir classes de análise preliminares



Conhecimento do domínio
Requisitos
Outros artefatos (Glossário e modelo de
negócio)
Exercício
Analisar Caso de Uso
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 associações das classes
Passos para Analisar Caso de
Uso
Para cada caso de uso:
1.
2.
Encontrar classes de análise
Distribuir comportamento entre as classes
Para cada classe:
3.
4.
5.
Descrever responsabilidades
Descrever atributos e associações
Qualificar mecanismos de análise
Passo 1: Encontrar classes de
análise
O comportamento do caso de uso é
distribuído em classes de análise
O que são classes de análise?
Representam o conceito mais abstrato dos elementos
do sistema

Primeiro passo concreto até chegar em um sistema
executável
Categorização temporária


São 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>>)
Classes de Fronteira
Itermediam a interface para qualquer
coisa externa ao sistema
<<boundary>>
Exemplos de classes fronteira



GUI
Interface com outros sistemas
Interface com dispositivos
Uma classe de Fronteira por interação
ator X caso de uso
Notação em UML
O Papel de uma Classe de
Fronteira
<<boundary>>
<<control>>
<<boundary>>
Usuário
<<boundary>>
<<entity>>
<<entity>>
Modela interação entre o sistema e seu ambiente
Exemplo de classes de
fronteira
Estudante
<<boundary>>
FormRegistroCursos
Matricular-se
Em disciplina
Sistema
Academico
<<boundary>>
SistemaAcademico
Classes de Entidade
Abstrações chave dos casos de uso
<<entity>>
Glossário
<<entity>>
<<entity>>
Descrição do
Caso de uso
O Papel de uma Classe de
Entidade
<<boundary>>
<<control>>
<<boundary>>
Usuário
<<boundary>>
<<entity>>
<<entity>>
Armazenam e gerenciam informação no sistema
Exemplo de classes de
entidade
<<entity>>
Estudante
<<entity>>
Curso
<<entity>>
Horario
Classes de Controle
Coordenam o comportamento (lógica de
controle) do caso de uso
Interface entre fronteira e entidade
<<control>>
O Papel de uma Classe de
Controle
<<boundary>>
<<control>>
<<boundary>>
Usuário
<<boundary>>
<<entity>>
<<entity>>
Coordenam o comportamento do caso de uso
Exemplo de Classe de
Controle
Estudante
Matricular-se
Em disciplina
<<control>>
ControladorMatricula
matricurlarAluno()
Sistema
Academico
Exercício
Passo 2: Distribuir
comportamento
Para cada fluxo de eventos



Identificar classes de análise participantes
Alocar responsabilidades do caso de uso às
classes de análise
Modelar interações entre as classes através
dos diagramas de interação
Distribuindo comportamento
entre as classes
Classes de análise
Diagrama de seqüência
Caso de uso
Diagrama de colaboração
Classes de análise com
responsabilidades
Alocando responsabilidades
Use estereótipos de análise como guia

Classes de fronteira
 Comportamento que envolve comunicação com um ator

Classes de entidade
 Comportamento que envolve informação encapsulada na
abstração

Classes de controle
 Comportamento específico ao (lógica de controle do)
caso de uso
Guia: Alocando
responsabilidades
Quem tem a informação necessária
para realizar a responsabilidade

isso pode envolver apenas uma classe,
mas pode ser preciso criar novas classes
ou relacionamentos entre classes
Modelando interações
Diagramas de interação (colaboração e
seqüência) modelam interações do sistema
com seus atores
A interação é iniciada por um ator e envolve
instâncias (objetos) das classes
Diagramas de interação capturam a
semântica do fluxo de eventos do caso de
uso


Auxiliam a identificar classes, responsabilidades e
relacionamentos
Mecanismo de validação da arquitetura
Vários diagramas podem ser
necessários
Anatomia de um Diagrama de
Seqüência
Objetos
:Fornecedor
:Cliente
 Linha da vida 
1: Solicita serviço
Mensagem
Foco do
controle
Mensagem
reflexiva
1.1: Solicita outro
serviço
Numeração
hierárquica
Exemplo de diagrama de
Seqüência
janela de
matrícula
: Aluno
controle de
matrícula
mat 101
mat 101
section 1
1: preenche info
2: submete
3: ad curso(Jose, mat 101)
4: ad(Jose)
5: curso aberto?
6: ad(Jose)
Diagrama de Colaboração
Objetos
:Cliente
Ligação
1: Solicita serviço
:Fornecedor
Mensagem
Exemplo de diagrama de
colaboração
janela de curso :
1: informação do curso
2: processa
JanelaCurso
3: adiciona curso
: Secretaria
gerenciador :
curso :
GerenciadorCurriculo
Curso
4: novo curso
Colaboração X Sequência
Colaboração



Mostra os
relacionamentos,
além das interações
Melhor para
visualizar a
colaboração
Melhor de ser usado
em reuniões
Sequência



Mostra a sequência
explicíta de
mensagens
Melhor para
visualizar o fluxo
Melhor para cenários
complexos
Exercício
Passo 3: Descrever
Responsabilidades
Atualizar os diagramas de classes com
as responsabilidades identificadas no de
iteração
Mensagens nestes diagramas resultam
em responsabilidades nas classes
receptoras
Como fazer?
diagrama de
interação
diagrama de
classe
:Fornecedor
:Cliente
// Executar responsabilidade
Fornecedor
// Executar responsabilidade
Gerenciando a consistência
Classes com responsabilidades similares são
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 são candidatas a serem
reexaminadas
Passo 4: Descrever atributos e
associações
Definir atributos
Estabelecer agregações e associações
Encontrando Atributos
Possíveis fontes: conhecimento do negócio,
requisitos, glossário, modelo do negócio, etc.
São propriedades/características das classes
identificadas


informação de propriedade exclusiva do objeto
informação que pode ser lida ou escrita por operações, mas
sem outro comportamento a não ser fornecer um valor
Se a informação tem comportamento complexo ou é
compartilhada, deve gerar uma classe
Encontrando Relacionamentos
Interações entre objetos nos diagrama de interação
pode indicar a necessidade de definir um
relacionamento entre as classes
Adicionar os elementos de um relacionamento




Tipo e nome
Navegabilidade
Multiplicidade
Papéis
Encontrando Relacionamentos
1: PerformResponsibility
Diagrama de
Colaboração
:Client
:Supplier
Link
Client
Diagrama
de classe
Supplier
Client
0..*
0..*
Prime suppliers
Association
Supplier
PerformResponsibility()
Exercício
Passo 5: Qualificar mecanismos
de análise
Mapear classes de análise em
mecanismos de análise
Classes de análise
Mecanismos de análise
Estudante
Persistente
ControladorMatricula
Distribuição, Segurança
Curso
Persistente, Interface
Legado
Passo 6: Unificar classes de
análise
Realização de Caso
de Uso
Diagramas de Classe
…
Realização de Caso
de Uso
Diagramas de Classe
…
Diagramas de Classe
Realização de Caso
de Uso
Diagramas de Classe
…
Projetar classes
Objetivo
Detalhar as partes do sistema
Concretização dos conceitos definidos até o
momento

Detalhes de implementação e ambiente de
produção
 Produtos utilizados
 Linguagem de programação
 Distribuição
 Performance
 Restrições físicas
Passos do projeto de classes
Para cada classe:
1.
2.
3.
4.
5.
6.
7.
Criar classes de projeto
Identificar classes persistentes
Definir métodos
Definir atributos
Definir estados
Definir relacionamentos
Contemplar os requisitos não-funcionais
Passo 1: Criar classes de
projeto
Converter classes de análise (Fronteira,
Controle e Entidade) em classes de
projeto
Padrões de projeto podem ser
incorporados
As classes são refinadas para incorporar
os mecanismos arquiteturais
Projetando classes de
fronteira
GUI (Graphical User Interface)



Que ferramenta de desenvolvimento de interface
gráfica será utilizada?
Quant pode ser criada pela ferramenta?
Que padrões serão utilizados?
Sistemas Externos



Que tecnologias/mecanismos de integração?
Que padrões?
Projetar como um subsistema…
Projetando classes de
entidade
Classes de Entidade são


Transitórias
Persistentes
São detalhadas no passo “Identificar
classes persistentes”
Projetando classes de controle
Decisões que deve ser tomadas:


Elas são realmente necessárias?
Elas podem/devem ser agrupadas?
Como decidir?




Complexidade
Operações relacionadas
Probabilidade de mudar
Performance e distribuição
Passo 2: Identificando classes
persistentes
Instancias da classe precisam preservar o seu
estado
Estratégia de persistencia é definida para
cada classe persistente
Curso
Candidato
JDBC
Serialização
BD Relacional
Arquivo
Exercício
Passo 3: Definir Métodos
Tem como propósito mapear
responsabilidades identificada na
análise para métodos na classe
Deve-se considerar

Nome, assinatura e visibilidade dos
métodos
Mapeando operações
:Cliente
- concreto
:Fornecedor
// Realizar alguma operação
Análise
Projeto
:Cliente
:Fornecedor
fazerAlgo()
+ concreto
Passo 4: Definir Atributos
Tem como propósito formalizar a
definição dos atributos
Deve-se considerar


Persistência
Visibidade, nome, tipo e valor inicial
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
Diagrama de Estados
Um diagrama de estados mostra o ciclo
de vida de um objeto
Nome do estado
Estado
Variavel: Tipo = valor
Ação de entrada
Ação de saída
Atividade
Evento(args)
[condição]
/ Operacao(args)
^obj.enviarMensagem(args)
Ações
Atividades
Transição
Exemplo de diagrama de
estado
Adiciona Aluno[ contador < 10 ]
Inicializado
Adiciona Aluno /
contador = 0
do: Incializa Curso
Aberto
Cancela
Cancela
[ contador = 10 ]
Cancelado
do: Notifica Alunos
Cancela
Fechado
do: Finaliza curso
Exercício
Passo 6: Definir Relacionamentos
Dependências
Associações



Simples
Agregação
Composição
Generalização
Passo 7: Contemplar os
requisitos não-funcionais
Concretização dos mecanismos de análise


Incorporar responsabilidades em algumas classes
Criar novas classes
Exemplos:



Segurança  Como armazenar as senhas? Que
algoritmo usar para criptografar uma mensagem?
Distribuição  Que tecnologia utilizar? Qual o
impacto da tecnologia nos objetos já definidos?
Tratamento de logs  Que tipo de operações
deve ter log (Acesso a dados, execução de
negócio, …)
Exercício
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 necessário
Será visto com mais detalhes em
outra disciplina…
FIM!!!
Download

Apresentação - Análise e Projeto no RUP - Sefaz-AL