Analise e Projeto
Orientado a Objetos –
APS II
Prof. Isledna
Objetivos
• Apresentar um método para análise e
projeto de sistemas orientado a
objetos, baseado na abordagem do
Processo Unificado (PU).
O que vamos fazer ?
• Usaremos a linguagem UML (Unified
Modeling Language) para criar modelos (de
análise e de projeto)
– Um modelo é uma representação abstrata dos
aspectos essenciais de um sistema
– O que é "essencial" depende do momento da
modelagem
– A UML usa uma representação principalmente
gráfica para representar os modelos
– UML é muito popular hoje em dia para modelar
sistemas
O que vamos fazer ?
• Usaremos Design Patterns (padrões de
projeto) para mostrar soluções abstratas
para problemas que surgem
frequentemente durante o projeto de
sistemas OO
– Os patterns tratarão principalmente de:
• Como atribuir responsabilidades a objetos (uma das
atividades mais difícil no desenvolvimento de
sistemas OO)
• Como separar o que muda do que é constante numa
determinada situação, com o objetivo de ganhar
flexibilidade
– Para evitar "o efeito gelatina"
O que vamos fazer ?
• Explicaremos e seguiremos um
processo de desenvolvimento que
mostra claramente quais são as
etapas a seguir para produzir
software de qualidade
– Veremos também quais artefatos devem
ser produzidos na várias fases e etapas
do processo
O que é Análise e
Projeto ?
• Diferenças entre análise e projeto: tem
mais do que uma definição empregada
– Primeira alternativa:
• A análise modela o problema e consiste das atividades
necessárias para entender o domínio do problema (o
que deve ser feito). É uma atividade de investigação.
• O projeto modela a solução e consiste das atividades
de criação (como pode ser feito)
O que é Análise e
Projeto ?
• Segunda alternativa:
– A análise consiste de todas as atividades feitas
com ou para o conhecimento do cliente. A
informação produzida é aquela que o cliente
deve discutir e aprovar
– O projeto inclui as atividades que resultam em
informação que interessa apenas ao
programador
– Com essa definição, a análise invade um pouco o
"lado da solução", pois o cliente deve discutir
alguns tipos de interações que ocorrerão na
interface do usuário, etc.
O que é Análise e
Projeto ?
• Nesta disciplina, adotaremos a segunda
alternativa
– associar as palavras "análise" e "projeto" aos
artefatos (deliverables) entregues nos final de
cada fase
– Um modelo de análise deve ser aprovado pelo
cliente e pode incluir alguma (pequena)
discussão da solução, principalmente no que diz
respeito à interface com usuário, etc.
Outros pontos a serem
abordados:
• As fases de requisitos
• Implementação e
• Testes
O que é Análise e Projeto
Orientados a Objeto ?
• A perspectiva empregada é de objetos
(coisas, conceitos ou entidades)
• Durante a Análise OO, a ênfase está em
achar e descrever objetos (ou conceitos)
no domínio do problema
– Por exemplo, num sistema de informação para
uma biblioteca, alguns dos conceitos são Livro,
Biblioteca, Usuário.
– Tais objetos podem ter atributos e
responsabilidades
• Durante o projeto orientado a objeto, a
ênfase está em achar objetos lógicos de
software que poderão ser eventualmente
implementados usando uma linguagem de
programação OO
– Tais objetos pode ter atributos e métodos
• Durante a construção (programação OO),
os objetos do projeto são implementados e
testados
APOO versus AP
Estruturada
• Com ambas as técnicas, usa-se
decomposição
• A decomposição é por função ou
processo
Introdução a Análise e
projeto
• Motivação
– Sociedade dependente de sistemas
• Anos atrás: bancos, empresas de
grande porte
• Hoje: celulares, aplicações
distribuídas, Internet
• Pressão sobre desenvolvedores:
rapidez, confiabilidade, preço, etc.
Cenário atual do
desenvolvimento
• Dificuldade de entendimento dos
requisitos
• Dificuldade de manutenção
• Proliferação de tecnologias
• Baixa qualidade
Melhores soluções
existentes
• Utilizar modelos mais baratos para
visualizar soluções
• Utilizar soluções que já foram
utilizadas com sucesso
• Melhorar a comunicação na equipe
• Orientação a objetos
– Representa o mundo real em termos de
objetos
Processo de
Desenvolvimento
• Uma linguagem de modelagem não é
suficiente
• Precisamos também de um processo de
desenvolvimento
• O que é um processo de desenvolvimento?
– Define quem faz o que, quando e como, para
atingir um certo alvo
Exemplos
•
•
•
•
•
•
•
Modelo em Cascata
Modelo de Prototipagem
Modelo Evolucionário
Desenvolvimento Baseado em Componentes
Modelo de Métodos formais
Programação Extrema
Processo Unificado
Processo unificado (PU)
• Linguagem de modelagem + processo
de desenvolvimento = método (ou
metodologia) de desenvolvimento
• Linguagem de Modelagem = UML
Princípios Básicos do PU
• Desenvolvimento iterativo
• Baseado em casos de uso
• Centrado na arquitetura
Desenvolvimento
Iterativo
• O desenvolvimento de um software é
dividido em vários ciclos de iteração, cada
qual produzindo um sistema testado,
integrado e executável.
• Em cada ciclo ocorrem as atividades de
análise de requisitos, projeto,
implementação e teste, bem como a
integração dos artefatos produzidos com
os artefatos já existentes.
Desenvolvimento
Iterativo
• Planejar quantos ciclos de desenvolvimento
serão necessários para alcançar os
objetivos do sistema.
• As partes mais importantes devem ser
priorizadas e alocadas nos primeiros ciclos.
– A primeira iteração estabelece os principais
riscos e o escopo inicial do projeto, de acordo
com a funcionalidade principal do sistema.
– Partes mais complexas do sistema devem ser
atacadas já no primeiro ciclo, pois são elas que
apresentam maior risco de inviabilizar o
projeto.
Desenvolvimento
Iterativo
• O tamanho de cada ciclo pode variar de
uma empresa para outra e conforme o
tamanho do sistema.
• Por exemplo, uma empresa pode desejar
ciclos de 4 semanas, outra pode preferir 3
meses.
• Produtos entregues em um ciclo podem ser
colocados imediatamente em operação, mas
podem vir a ser substituídos por outros
produtos mais complexos em ciclos
posteriores.
Baseado em Casos de Uso
• Um caso de uso é uma seqüência de ações,
executadas por um ou mais atores e pelo
próprio sistema, que produz um ou mais
resultados de valor para um ou mais atores.
• O PU é dirigido por casos de uso, pois
utiliza-os para dirigir todo o trabalho de
desenvolvimento, desde a captação inicial e
negociação dos requisitos até a aceitação
do código (testes).
Baseado em Casos de Uso
• Os casos de uso são centrais ao PU e
a outros métodos iterativos, pois:
– Os requisitos funcionais são registrados
preferencialmente por meio deles
– Eles ajudam a planejar as iterações
– Eles podem conduzir o projeto
– O teste é baseado neles.
Centrado na Arquitetura
• Arquitetura é a organização fundamental
do sistema como um todo. Inclui elementos
estáticos, dinâmicos, o modo como
trabalham juntos e o estilo arquitetônico
total que guia a organização do sistema.
• •A arquitetura também se refere a
questões como desempenho, escalabilidade,
reuso e restrições econômicas e
tecnológicas.
Centrado na Arquitetura
• No PU, a arquitetura do sistema em
construção é o alicerce fundamental sobre
o qual ele se erguerá
• •Deve ser uma das preocupações da equipe
de projeto.
• •A arquitetura, juntamente com os casos
de uso, deve orientar a exploração de
todos os aspectos do sistema
Centrado na arquitetura
• A arquitetura é importante porque:
• –Ajuda a entender a visão global
• –Ajuda a organizar o esforço de
desenvolvimento
• –Facilita as possibilidades de reuso
• –Facilita a evolução do sistema
• –Guia a seleção e exploração dos casos de
uso.
Processo de
Desenvolvimento
• As grandes fases de qualquer
processo de desenvolvimento
– Concepção
• Visão e viabilidade do sistema
– Elaboração
• Arquitetura e requisitos definidos
• Implementação dos requisitos mais
complicados
• As grandes fases de qualquer
processo de desenvolvimento (cont.)
– Construção
• Versão beta do software
– Transição
• Implantação do sistema no ambiente de
produção
Fase de Concepção
•
•
•
•
•
Estabelece-se as viabilidade de
implantação do sistema
Definição do escopo do sistema.
Estimativas de custos e cronograma
Identificação dos potenciais riscos que
devem ser gerenciados ao longo do
projeto
Esboço da arquitetura do sistema, que
servirá como alicerce para a sua
construção.
Fase de Elaboração
• Visão refinada do sistema:
– com a definição dos requisitos
funcionais;
– detalhamento da arquitetura criada na
fase anterior;
– gerenciamento contínuo dos riscos
envolvidos.
Fase de Construção
• O sistema é efetivamente
desenvolvido e, em geral, tem
condições de ser operado, mesmo que
em ambiente de teste, pelos clientes.
• É nesta fase que o desenvolvimento
iterativo e incremental é realizado
Fase de transição
• O sistema é entregue ao cliente para
uso em produção.
• Testes são realizados e um ou mais
incrementos do sistema são
implantados.
• Defeitos são corrigidos, se
necessário.
Resumo
• Um processo de desenvolvimento deve ser:
– Iterativo (ter várias iterações no tempo)
– Incremental (gerar novas versões
incrementadas a cada release)
• Motivos:
– Sempre tem algo para entregar para o cliente
apressado (a última iteração)
– Os requisitos mudam com tempo e um processo
iterativo mantém freqüentes contatos com o
cliente o que ajuda a manter os requisitos
sincronizados
– Altamente motivador para a equipe de
desenvolvimento (e o cliente) ver o software
funcionando cedo
Download

Processo Unificado