Title: An
1Análise e Projeto no RUP
2Tópicos abordado
- Visão geral do RUP
- Introdução à disciplina de Análise Projeto
- Atividades
- Papéis
- Artefatos
3Análise Projeto
4Aná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
5Aná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ão-funcionais
- Modelo complexo
6Visão geral dos artefatos
Modelo de análise e projeto
Modelo de caso de uso
Documento da arquitetura
Modelo de dados
Documento requisitos
Glossário
7Modelo 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
8Realização de Caso de Uso
- Descreve como o caso de uso é realizado,
associando o caso de uso com classes e outros
elementos de projeto
? Analise e projeto ?
? Requisitos ?
9Fluxo de Análise e Projeto
Diagrama de Atividades
10Realizar síntese da arquitetura
11Objetivo
- Construir e avaliar uma prova de conceito
arquitetural - Mostrar que existe uma solução possível de
satisfazer os requisitos do sistema relevantes à
arquitetura
12Definir a arquitetura candidata
13Objetivo
- 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
14Analisar comportamento
15Objetivo
- 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
16Projetar componentes
17Objetivo
- 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
18Projetar Banco de Dados
19Objetivo
- 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
20Refinar Arquitetura
21Objetivo
- 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
22Fluxo de Análise e Projeto Light
- Simplificando/Instanciando o processo para um
contexto específico
23Motivaçã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
24Fluxo de atividades simplificado
- Analisar Arquitetura
- Analisar Caso de Uso
- Projetar Classes
- Projetar Banco de Dados
25Analisar Arquitetura
26Analisar 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
27Arquitetura 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
28Exemplo de arquitetura inicial
Módulo de Vendas
Módulo de Estoque
Interface Gráfica
Negócio
Socket
Dados
29Convençõ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
30Mecanismos 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
31Identificar Abstrações-chave
- Definir classes de análise preliminares
- Conhecimento do domínio
- Requisitos
- Outros artefatos (Glossário e modelo de negócio)
32Exercício
33Analisar Caso de Uso
34Objetivos
- 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
35Passos para Analisar Caso de Uso
- Para cada caso de uso
- Encontrar classes de análise
- Distribuir comportamento entre as classes
- Para cada classe
- Descrever responsabilidades
- Descrever atributos e associações
- Qualificar mecanismos de análise
36Passo 1 Encontrar classes de análise
- O comportamento do caso de uso é distribuído em
classes de análise
37O 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 (ltltboundarygtgt)
- Controle (ltltcontrolgtgt)
- Entidade (ltltentitygtgt)
38Classes 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 interação ator X caso
de uso
Notação em UML
39O Papel de uma Classe de Fronteira
Usuário
Modela interação entre o sistema e seu ambiente
40Exemplo de classes de fronteira
41Classes de Entidade
- Abstrações chave dos casos de uso
42O Papel de uma Classe de Entidade
Usuário
Armazenam e gerenciam informação no sistema
43Exemplo de classes de entidade
44Classes de Controle
- Coordenam o comportamento (lógica de controle) do
caso de uso - Interface entre fronteira e entidade
ltltcontrolgtgt
45O Papel de uma Classe de Controle
Coordenam o comportamento do caso de uso
46Exemplo de Classe de Controle
matricurlarAluno()
47Exercício
48Passo 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
49Distribuindo comportamento entre as classes
Classes de análise
Diagrama de seqüência
Diagrama de colaboração
Classes de análise com responsabilidades
Caso de uso
50Alocando 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
51Guia 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
52Modelando 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
53Vários diagramas podem ser necessários
54Anatomia de um Diagrama de Seqüência
Objetos
Fornecedor
Cliente
Mensagem reflexiva
? Linha da vida ?
1 Solicita serviço
1.1 Solicita outro serviço
Mensagem
Foco do controle
Numeração hierárquica
55Exemplo de diagrama de Seqüência
56Diagrama de Colaboração
Objetos
Cliente
Fornecedor
1 Solicita serviço
Mensagem
Ligação
57Exemplo de diagrama de colaboração
58Colaboraçã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
59Exercício
60Passo 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
61Como fazer?
Fornecedor
Cliente
diagrama de interação
// Executar responsabilidade
Fornecedor
diagrama de classe
// Executar responsabilidade
62Gerenciando 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
63Passo 4 Descrever atributos e associações
- Definir atributos
- Estabelecer agregações e associações
64Encontrando 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
65Encontrando 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
66Encontrando Relacionamentos
1 PerformResponsibility
Diagrama de Colaboração
Client
Supplier
Link
Client
Supplier
Client
Supplier
0..
0..
Diagrama de classe
Prime suppliers
PerformResponsibility()
Association
67Exercício
68Passo 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
69Passo 6 Unificar classes de análise
70Projetar classes
71Objetivo
- 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
72Passos do projeto de classes
Para cada classe
- Criar classes de projeto
- Identificar classes persistentes
- Definir métodos
- Definir atributos
- Definir estados
- Definir relacionamentos
- Contemplar os requisitos não-funcionais
73Passo 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
74Projetando 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
75Projetando classes de entidade
- Classes de Entidade são
- Transitórias
- Persistentes
- São detalhadas no passo Identificar classes
persistentes
76Projetando 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
77Passo 2 Identificando classes persistentes
- Instancias da classe precisam preservar o seu
estado - Estratégia de persistencia é definida para cada
classe persistente
JDBC
Curso
BD Relacional
Serialização
Candidato
Arquivo
78Exercício
79Passo 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
80Mapeando operações
- concreto
Fornecedor
Cliente
// Realizar alguma operação
Análise
Projeto
Fornecedor
Cliente
fazerAlgo()
concreto
81Passo 4 Definir Atributos
- Tem como propósito formalizar a definição dos
atributos - Deve-se considerar
- Persistência
- Visibidade, nome, tipo e valor inicial
82Passo 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
83Diagrama de Estados
- Um diagrama de estados mostra o ciclo de vida de
um objeto
Evento(args) condição / Operacao(args) obj.envi
arMensagem(args)
Nome do estado
Variavel Tipo valor
Estado
Ação de entrada
Ações
Ação de saída
Atividade
Atividades
Transição
84Exemplo de diagrama de estado
85Exercício
86Passo 6 Definir Relacionamentos
- Dependências
- Associações
- Simples
- Agregação
- Composição
- Generalização
87Passo 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, )
88Exercício
89Projetar 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
90FIM!!!