com/alvarofpinheiroaulas/
br.linkedin.com/in/alvarofpinheiro/
Engenharia de Software
Fundamentos
http://www.alvarofpinheiro.eti.br
Projeto
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Projetos
Origem dos erros nos softwares
Outros
10%
Programação
7%
Análise
56%
Desenho
27%
www.alvarofpinheiro.eti.br
Projetos
Custo de correção dos erros
Incremento de
100 a 1000 vezes
Custo
www.alvarofpinheiro.eti.br
Projetos
Incremento do custo dos erros
1 Captura de requisitos
5 Codificação
10 Teste Unitário
25 Prova de Aceitação
100 Manutenção
Boehm, 1988
www.alvarofpinheiro.eti.br
Fatores de êxito dos projetos
www.alvarofpinheiro.eti.br
Êxito do projeto segundo seu tamanho
60
50
até $750m
40 $750ma $1.5M
Porcentagem de
êxito (%) $1.5Ma $3M
30
$3Ma $6M
20 $6Ma $10M
+ de $10M
10
0
Tamanho do projeto ($)
www.alvarofpinheiro.eti.br
As seis melhores práticas para
desenvolver Projetos de SW
• Desenvolvimento iterativo
• Administração de requisitos
• Uso de arquitetura de componentes
• Modelo visual (UML)
• Verificação contínua da qualidade
• Administração de Mudanças
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Análise
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Engenharia
de
Requisitos
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Metodologias
Modelos
Processos
Técnicas
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Engenharia de Software
Metodologias
www.alvarofpinheiro.eti.br
Engenharia de Software
Metodologias
www.alvarofpinheiro.eti.br
Metodologias
As metodologias tradicionais
devem ser aplicadas apenas em
situações em que os requisitos do
software são estáveis e requisitos
futuros são previsíveis.
www.alvarofpinheiro.eti.br
Metodologias
www.alvarofpinheiro.eti.br
Metodologias
www.alvarofpinheiro.eti.br
Metodologias
O termo “metodologias ágeis”
tornou-se popular em 2001
quando dezessete especialistas
em processos de desenvolvimento
de software representando os
métodos Extreme Programming
(XP), Scrum, DSDM, Crystal e
outros, estabeleceram princípios
comuns compartilhados por todos
esses métodos.
www.alvarofpinheiro.eti.br
Metodologias Ágeis
Conceito
www.alvarofpinheiro.eti.br
Metodologias Ágeis
Introdução
Enquanto as metodologias ágeis
variam em termos de práticas e
ênfases, elas compartilham
algumas características, como
desenvolvimento iterativo e
incremental, comunicação e
redução de produtos
intermediários, como
documentação extensiva.
www.alvarofpinheiro.eti.br
Metodologias Ágeis
Introdução
www.alvarofpinheiro.eti.br
Metodologias Ágeis
Modelos
www.alvarofpinheiro.eti.br
Metodologias Ágeis
X
Metodologias Tradicionais
www.alvarofpinheiro.eti.br
Metodologias
Manifesto Ágil Conceitos
Indivíduos e interações ao invés de
processos e ferramentas.
www.alvarofpinheiro.eti.br
Modelo Cascata
www.alvarofpinheiro.eti.br
Processo
www.alvarofpinheiro.eti.br
O que é um processo
www.alvarofpinheiro.eti.br
Processo
• Servir de guia para todos
www.alvarofpinheiro.eti.br
Controle dos Processos
• Arquitetura
• CMMI
• Fases
• Fabrica de Software
www.alvarofpinheiro.eti.br
Metodologias
Tradicionais
www.alvarofpinheiro.eti.br
Rational
Unified
Process
(RUP)
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
RUP
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Metodologias
Ágeis
www.alvarofpinheiro.eti.br
Scrum
www.alvarofpinheiro.eti.br
Scrum
Fases
• Planejamento
• Sprints
– Ciclos
• Encerramento
www.alvarofpinheiro.eti.br
Scrum
www.alvarofpinheiro.eti.br
Scrum
Objetivo
www.alvarofpinheiro.eti.br
Scrum
Outros Objetivos
Garantir maior flexibilidade e habilidade para
tratamento de sistemas complexos e simples;
www.alvarofpinheiro.eti.br
Scrum
Abordagem
www.alvarofpinheiro.eti.br
Scrum
Abordagem
O foco da metodologia é
encontrar uma forma de trabalho
dos membros da equipe para
produzir o software de forma
flexível e em um ambiente em
constante mudança.
www.alvarofpinheiro.eti.br
Scrum
Idéia
www.alvarofpinheiro.eti.br
Scrum
A metodologia é baseada em
princípios semelhantes aos da XP:
equipes pequenas, requisitos pouco
estáveis ou desconhecidos e
iterações curtas para promover
visibilidade para o desenvolvimento.
No entanto, as dimensões em
Scrum diferem de XP.
www.alvarofpinheiro.eti.br
Scrum
PROCESSO:
Ágil BASE P/ SCRUM:
Empírico Técnicas e tools OO
Incremental
www.alvarofpinheiro.eti.br
Scrum
Características
Deliverable flexível;
Cronograma flexível;
Revisões frequentes;
Colaboração;
Orientação a Objeto.
www.alvarofpinheiro.eti.br
Scrum
Fases
Planejamento
• Processo definido
Backlog
• Relativamente curta
• Design da arquitetura do sistema
• Estimativas de datas e custos
• Criação do backlog
– Participação de clientes e outros departamentos
• Levantamento dos requisitos e atribuição de prioridades
• Definição de equipes e seus líderes
• Definição de pacotes a serem desenvolvidos
www.alvarofpinheiro.eti.br
Scrum
Fases
Sprint
• Processo Empírico
• Cada time recebe uma parte do backlog para
desenvolvimento
– O backlog não sofrerá modificações durante o Sprint
• Duração de 1 a 4 semanas
Fonte: Mountain Goat Software
• Sempre apresentam um executável ao final
www.alvarofpinheiro.eti.br
Scrum
Fases – Sprint
Reuniões Diárias
• Cerca de 15 minutos de duração
• Gerenciada pelo líder de cada equipe
• Todos respondem às perguntas:
– O que você realizou desde a última reunião?
– Quais problemas você enfrentou?
– Em que você trabalhará até a próxima reunião?
• Benefícios:
– Maior integração entre os membros da equipe
– Rápida solução de problemas
• Promovem o compartilhamento de conhecimento
– Progresso medido continuamente
• Minimização de riscos
www.alvarofpinheiro.eti.br
Scrum
Fases – Sprint
Revisão
• Deve obedecer à data de entrega
– Permitida a diminuição de funcionalidades
www.alvarofpinheiro.eti.br
Scrum
Fases
Encerramento
• Iniciada quando todos os aspectos são
satisfatórios (tempo, competitividade, requisitos,
qualidade, custo)
• Atividades:
– Testes de integração
– Testes de sistema
– Documentação do usuário
– Preparação de material de treinamento
– Preparação de material de marketing
www.alvarofpinheiro.eti.br
Scrum
Qualidade, Gerenciamento e Testes
Passos e papéis bem definidos
www.alvarofpinheiro.eti.br
Scrum
Conclusões
www.alvarofpinheiro.eti.br
XP – eXtreme
Programming
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Introdução
www.alvarofpinheiro.eti.br
Introdução
· Feedback constante;
· Abordagem incremental;
· A comunicação entre as pessoas
é encorajada.
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Conceito
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Teste Primeiro o Desenvolvimento
Se quiser modelar para ter um
melhor entendimento, sem
problemas, mas tenha em mente
que é uma modelagem que pode
não servir assim que o sistema
sofrer alterações, ao invés, XP
prega que se use Test First Design
(ou Test Driven Development,
outro nome pra mesma coisa).
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Vantagem
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Paradigma
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Paradigma
A XP enfatiza o desenvolvimento
rápido do projeto e visa garantir a
satisfação do cliente, além de
favorecer o cumprimento das
estimativas.
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Paradigma
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Regra: Comunicação
A finalidade do princípio de
comunicação é manter o melhor
relacionamento possível entre
clientes e desenvolvedores,
preferindo conversas pessoais a
outros meios de comunicação. A
comunicação entre os
desenvolvedores e o gerente do
projeto também é encorajada.
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Regra: Simplicidade
A simplicidade visa permitir a criação de código
simples que não deve possuir funções
desnecessárias. Por código simples entende-se
implementar o software com o menor número
possível de classes e métodos. Outra idéia
importante da simplicidade é procurar
implementar apenas requisitos atuais, evitando-
se adicionar funcionalidades que podem ser
importantes no futuro. A aposta da XP é que é
melhor fazer algo simples hoje e pagar um pouco
mais amanhã para fazer modificações necessárias
do que implementar algo complicado hoje que
talvez não venha a ser usado, sempre
considerando que requisitos são mutáveis.
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Regra: Feedback
A prática do feedback constante significa
que o programador terá informações constantes do
código e do cliente. A informação do código é dada
pelos testes constantes, que indicam os erros tanto
individuais quanto do software integrado. Em relação
ao cliente, o feedback constante significa que ele terá
freqüentemente uma parte do software totalmente
funcional para avaliar. O cliente então constantemente
sugere novas características e informações aos
desenvolvedores. Eventuais erros e não conformidades
são rapidamente identificados e corrigidos nas
próximas versões. Desta forma, a tendência é que o
produto final esteja de acordo com as expectativas
reais do cliente.
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Regra: Coragem
É necessário coragem para implantar
os três valores anteriores. Por
exemplo, não são todas as pessoas
que possuem facilidade de
comunicação e têm bom
relacionamento. A coragem também dá
suporte à simplicidade, pois assim que
a oportunidade de simplificar o
software é percebida, a equipe pode
experimentar. Além disso, é preciso
coragem para obter feedback
constante do cliente. www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Práticas
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Práticas
· Planejamento
· Entregas freqüentes
· Metáfora
· Projeto simples
· Testes
· Refatoração
· Programação em pares
· Propriedade coletiva
· Integração contínua
· 40 horas de trabalho semanal
· Cliente presente
· Código padrão
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Prática 1: Planejamento
Consiste em decidir o que é necessário ser feito e o
que pode ser adiado no projeto. A XP baseia-se em
requisitos atuais para desenvolvimento de software,
não em requisitos futuros. Além disso, a XP procura
evitar os problemas de relacionamento entre a área de
negócios (clientes) e a área de desenvolvimento. As
duas áreas devem cooperar para o sucesso do projeto,
e cada uma deve focar em partes específicas do
projeto. Desta forma, enquanto a área de negócios
deve decidir sobre o escopo, a composição das versões
e as datas de entrega, os desenvolvedores devem
decidir sobre as estimativas de prazo, o processo de
desenvolvimento e o cronograma detalhado para que o
software seja entregue nas datas especificadas.
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Prática 2: Entregas Freqüêntes
Visa à construção de um software simples, e
conforme os requisitos surgem, há a atualização
do software. Cada versão entregue deve ter
o menor tamanho possível, contendo os
requisitos de maior valor para o negócio.
Idealmente devem ser entregues versões a cada
mês, ou no máximo a cada dois meses,
aumentando a possibilidade de feedback rápido
do cliente. Isto evita surpresas caso o software
seja entregue após muito tempo, melhora as
avaliações e o feedback do cliente, aumentando a
probabilidade do software final estar de acordo
com os requisitos do cliente.
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Prática 3: Metáfora
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Prática 4: Projeto Simples
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Prática 5: Testes
A XP focaliza a validação do
projeto durante todo o processo
de desenvolvimento. Os
programadores desenvolvem o
software criando primeiramente
os testes.
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Prática 6: Refatoração
Focaliza o aperfeiçoamento do
projeto do software e está presente
em todo o desenvolvimento. A
refatoração deve ser feita apenas
quando é necessário, ou seja,
quando um desenvolvedor da dupla,
ou os dois, percebe que é possível
simplificar o módulo atual sem
perder nenhuma funcionalidade.
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Prática 7: Programação em Pares
A implementação do código é feita em dupla, ou
seja, dois desenvolvedores trabalham em um único
computador. O desenvolvedor que está com o
controle do teclado e do mouse implementa o
código, enquanto o outro observa continuamente o
trabalho que está sendo feito, procurando identificar
erros sintáticos e semânticos e pensando
estrategicamente em como melhorar o código que
está sendo implementado. Esses papéis podem e
devem ser alterados continuamente. Uma grande
vantagem da programação em dupla é a
possibilidade dos desenvolvedores estarem
continuamente aprendendo um com o outro.
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Prática 8: Propriedade Coletiva
O código do projeto pertence a todos os membros
da equipe. Isto significa que qualquer pessoa que
percebe que pode adicionar valor a um código,
mesmo que ele próprio não o tenha desenvolvido,
pode fazê-lo, desde que faça a bateria de testes
necessária. Isto é possível porque na XP todos
são responsáveis pelo software inteiro. Uma
grande vantagem desta prática é que, caso um
membro da equipe deixe o projeto antes do fim, a
equipe consegue continuar o projeto com poucas
dificuldades, pois todos conhecem todas as partes
do software, mesmo que não seja de forma
detalhada.
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Prática 9: Integração Contínua
Interagir e construir o sistema de software
várias vezes por dia, mantendo os
programadores em sintonia, além de
possibilitar processos rápidos. Integrar
apenas um conjunto de modificações de cada
vez é uma prática que funciona bem porque
fica óbvio quem deve fazer as correções
quando os testes falham: a última equipe que
integrou código novo ao software. Esta
prática é facilitada com o uso de apenas uma
máquina de integração, que deve ter livre
acesso a todos os membros da equipe.
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Prática 10: 40 hs de trabalho
semanal
A XP assume que não se deve fazer horas
extras constantemente. Caso seja necessário
trabalhar mais de 40 horas pela segunda
semana consecutiva, existe um problema
sério no projeto que deve ser resolvido não
com aumento de horas trabalhadas, mas com
melhor planejamento, por exemplo. Esta
prática procura ratificar o foco nas pessoas e
não em processos e planejamentos. Caso
seja necessário, os planos devem ser
alterados, ao invés de sobrecarregar as
pessoas.
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Prática 11: Cliente Presente
www.alvarofpinheiro.eti.br
XP – eXtreme Programming
Prática 12: Código Padrão
Padronização na arquitetura do
código, para que este possa ser
compartilhado entre todos os
programadores.
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Crystal
Processo de
Desenvolvimento
de Software
www.alvarofpinheiro.eti.br
• Crystal/Clear faz parte, na realidade, de
um conjunto de metodologias criado por
Cockburn. As premissas apresentadas para
a existência deste conjunto são:
www.alvarofpinheiro.eti.br
• Todo projeto tem necessidades,
convenções e uma metodologia
diferentes.
• O funcionamento do projeto é
influenciado por fatores humanos, e há
melhora neste quando os indivíduos
produzem melhor.
• Comunicação melhor e lançamentos
freqüentes reduzem a necessidade de
construir produtos intermediários do
processo
www.alvarofpinheiro.eti.br
• Crystal/Clear é uma metodologia
direcionada a projetos pequenos,
com equipes de até 6
desenvolvedores. Assim como com
SCRUM, os membros da equipe
tem especialidades distintas. Existe
uma forte ênfase na comunicação
entre os membros do grupo.
Existem outras metodologias
Crystal para grupos maiores.
www.alvarofpinheiro.eti.br
• Toda a especificação e projeto são
feitos informalmente, utilizando
quadros publicamente visíveis. Os
requisitos são elaborados utilizando
casos de uso, um conceito similar às
estórias de usuário em XP, onde
são enunciados os requisitos como
tarefas e um processo para sua
execução.
www.alvarofpinheiro.eti.br
• As entregas das novas versões de
software são feitos em incrementos
regulares de um mês, e existem
alguns subprodutos do processo
que são responsabilidade de
membros específicos do projeto.
www.alvarofpinheiro.eti.br
• Grande parte da metodologia é
pouco definida, e segundo o autor,
isto é proposital; a idéia de
Crystal/Clear é permitir que cada
organização implemente as
atividades que lhe parecem
adequadas, fornecendo um mínimo
de suporte útil do ponto de vista de
comunicação e documentos
www.alvarofpinheiro.eti.br
A família Crystal de Métodos
www.alvarofpinheiro.eti.br
Feature Driven
Development
Desenvolvimento
orientado a
funcionalidades
www.alvarofpinheiro.eti.br
FDD - Características
www.alvarofpinheiro.eti.br
FDD - Processos
O FDD consiste de 5 processos principais:
www.alvarofpinheiro.eti.br
FDD – Processos (Cont.)
www.alvarofpinheiro.eti.br
FDD - Cargos e Responsabilidades
Principais
Gerente de projeto (Project Manager)
Arquiteto líder (Chief architect)
Gerente de desenvolvimento (Development Manager)
Programador líder (Chief programmer)
Proprietário de classe (Class owner)
Especialísta do domínio (Domain experts)
Gerente do domínio (Domain manager)
www.alvarofpinheiro.eti.br
FDD - Cargos e Responsabilidades
(Cont.)
De apoio
Gerente de versão (Release manager)
Guru de linguagem (Language lawyer/language guru)
Engenheiro de construção (Build engineer)
“Ferramenteiro” (Toolsmith)
Administrador de sistemas (System Administrator)
Adicionais
Testadores (Testers)
Instaladores (Deployers)
Escritores técnicos (Technical writes)
www.alvarofpinheiro.eti.br
FDD - Boas Práticas
www.alvarofpinheiro.eti.br
FDD - Boas Práticas (Cont.)
Equipe de funcionalidades (Feature teams)
Formação de equipes pequenas e dinâmicas.
Inspeção (Inspection)
Uso dos melhores métodos conhecidos de detecção de erros.
Construções freqüentes (Regular Builds)
Garantir que existe um sistema sempre disponível e de-monstrável.
Administração de Configuração (Configuration Manager)
Habilita acompanhamento do histórico do código-fonte..
www.alvarofpinheiro.eti.br
Dynamic Systems
Development
Method (DSDM)
Método dinâmico de
desenvolvimento de
sistemas
www.alvarofpinheiro.eti.br
DSDM - Características
Progenitor do XP
Arcabouço para desenvolvimento rápido de
aplicações (RAD)
Fixa tempo e recursos ajustando a quantia de
funcio-nalidades
Pequenas equipes
Suporta mudanças nos requisitos durante o ciclo
de vida
www.alvarofpinheiro.eti.br
DSDM - Fases
O DSDM consiste de 5 fases:
Feasibility
Review Study
www.alvarofpinheiro.eti.br
DSDM – Fases (Cont.)
www.alvarofpinheiro.eti.br
DSDM - Cargos e
Responsabilidades
Desenvolvedores (Developers)
Desenvolvedores Sêniores (Senior Developers)
Coordenador Técnico (Technical Coordinator
Usuário Embaixador (Ambassador User)
Usuário Consultor (Adviser User)
Visionário (Visionary)
Executivo responsável (Executive Sponsor)
Especialísta do domínio (Domain experts)
Gerente do domínio (Domain manager)
www.alvarofpinheiro.eti.br
DSDM - Práticas
www.alvarofpinheiro.eti.br
Adaptive Software
Development
Desenvolvimento
Adaptável de
Software
www.alvarofpinheiro.eti.br
ASD - Características
Iterativo e incremental
Sistemas grandes e complexos
Arcabouço para evitar o caos
Cliente sempre presente
Desenvolvimento de aplicações em
conjunto (Joint Application development –
JAD)
www.alvarofpinheiro.eti.br
ASD - Fases
O ASD possui ciclos de 3 fases:
www.alvarofpinheiro.eti.br
ASD – Fases (Cont.)
Especular (Speculate)
Fixa prazos e objetivos
Define um plano baseado em componentes
Colaborar (Collaborate)
Construção concorrente de vários componentes
Aprender (Learn)
Repetitivas revisões de qualidade e foco na demostranção das
funcionalidades desenvolvidas (Learning loop)
Presença do cliente e especialistas do domínio
Os ciclos duram de 4 a 8 semanas
www.alvarofpinheiro.eti.br
ASD - Propriedades
www.alvarofpinheiro.eti.br
ASD – Propriedades (Cont.)
Prazos pré-fixados (Time-boxed)
Força os participantes do projeto a definir severamente decisões do projeto
logo cedo.
www.alvarofpinheiro.eti.br
ASD - Cargos e Responsabilidades
Este método não descreve cargos em detalhes
Executivo responsável (Executive Sponsor)
Participantes de uma sessão (workshop) do desenvolvimento de aplicações em
conjunto (JAD)
Facilitador (Facilitator)
Liderar e planejar as sessões
Escriba (Scribe)
Efetuar anotações
Cliente (Customer)
Sempre presente
Gerente de Projetos (Project Manager)
Desenvolvedores (Developers)
www.alvarofpinheiro.eti.br
Paradigma
Orientada a
Objetos
www.alvarofpinheiro.eti.br
Desenvolvimento de Software
Programas
Processos
Dados
www.alvarofpinheiro.eti.br
Enfoque a Programas
• Visão tradicional usa perspectiva de algoritmo
www.alvarofpinheiro.eti.br
Desenvolvimento de Software
Objetos
www.alvarofpinheiro.eti.br
Enfoque a Objetos
• Visão contemporânea adota perspectiva OO
www.alvarofpinheiro.eti.br
Objetos (o domínio da aplicação)
pilha de saída
doc
docs secretária
pilha de entrada
arquivo
www.alvarofpinheiro.eti.br
Representando o mundo real
• Temos a representação do mundo real
doc
Instrução Pilha de saída
Chefe
Interrupção doc
Próximo
Próximo Instrução
Secretária
doc
eliminação
do
irrelevante
e
amplificação
do
essencial
www.alvarofpinheiro.eti.br
Abstração
• É o mecanismo que nos permite
representar uma realidade complexa em
termos de um modelo simplificado, de
modo que detalhes irrelevantes possam
ser suprimidos.
• Processo de filtragem de detalhes sem
importância do objeto, para que apenas as
características apropriadas que o
descrevem permaneçam.
www.alvarofpinheiro.eti.br
Três abstrações de um carro
saldo
www.alvarofpinheiro.eti.br
Objetos
• Um objeto é qualquer coisa, real ou abstrata, sobre a
qual armazenamos dados e operações que manipulam
tais dados
www.alvarofpinheiro.eti.br
Objetos
• Validação de um Objeto
– É aplicável ao contexto ?
– Existe independente de outros Objetos ?
– Possui atributos e operações ?
– Exemplos
• Cor
www.alvarofpinheiro.eti.br
Simplificando...
• Sob o ponto de vista superficial , a expressão
orientada a objetos significa que o aplicativo é
organizado como uma coleção de objetos que
incorporam tanto a estrutura como o
comportamento dos dados
www.alvarofpinheiro.eti.br
Controle de Pizzarias
www.alvarofpinheiro.eti.br
Controle de Pizzarias
www.alvarofpinheiro.eti.br
Funcionário
Cardápio Caixa
Tipo
Prato Comanda
Preço
+AlteraPreço +CalculaConta
+GetPreço
Pedido Cliente
www.alvarofpinheiro.eti.br
Classes - Fabrica de Objetos
Definição da classe
Objetos
www.alvarofpinheiro.eti.br
Classes
• Podemos fazer uma analogia dizendo que as
classes são “fábricas” de objetos.
www.alvarofpinheiro.eti.br
Desenvolvimento de Software
Programas x Classes
Programas Classes
processos atributos
dados operações
www.alvarofpinheiro.eti.br
Notação para Classes
class Fruta
{
int gramas;
int cals_por_gramas;
int total_calorias ()
{ return gramas * cals_por_grama; }
}
www.alvarofpinheiro.eti.br
Mensagem
• A POO identifica uma abordagem em que o
programador visualiza seu programa em
execução em termos de objetos que se
comunicam através de trocas de mensagens
• Mensagem - composta por um seletor e por
parâmetros (opcional)
Cliente Conta
debite(50R$) debite
www.alvarofpinheiro.eti.br
Mensagem
• Objetos interagem enviando mensagens uns para
os outros.
• O objeto que receber a mensagem responderá
através da seleção e execução de um método que
fará parte de seu comportamento
• Após a execução, o controle volta para o objeto
que enviou a mensagem
• Uma mesma mensagem pode gerar ações
diferentes (alguma forma de polimorfismo)
• Em geral, classes bem projetadas escondem seus
dados de maneira que eles só possam ser
modificados por métodos daquela classe
www.alvarofpinheiro.eti.br
Classe Exemplo
class Exemplo
{
public static void Main (string args[])
{
Fruta AlgumaFruta = new Fruta();
Citros Laranja = new Citros();
AlgumaFruta.Descascar();
Laranja.Descascar();
Laranja.Espremer();
}
}
www.alvarofpinheiro.eti.br
Encapsulamento
separa os
aspectos
externos de um
objeto dos
detalhes de
implementação
www.alvarofpinheiro.eti.br
Encapsulamento
• Encapsulamento separa os aspectos externos de um
objeto dos detalhes de implementação internos do
objeto
• É a propriedade dos objetos de agregarem, em seu
interior, dados e as operações que atuam sobre estes
dados.
• O encapsulamento possibilita que os objetos
escondam parte de seus componentes do mundo
exterior, de modo que o acesso às suas informações
seja controlado
• Você não precisa saber como um telefone realmente
funciona, para poder usar-lo. Só precisamos saber
para que ele serve, e conhecer sua interface, ou seja a
forma de nos comunicarmos com ele.
www.alvarofpinheiro.eti.br
Encapsulamento
www.alvarofpinheiro.eti.br
Implementando o encapsulamento
• Telefone
– interface pública - que você usa para
interagir com o objeto
– implementação - as operações internas,
o propósito do objeto
• Carro
– interfaces públicas - pedais, direção,
câmbio
– implementação - o propósito do carro
www.alvarofpinheiro.eti.br
Implementando o encapsulamento
• Em sistemas puramente orientado a
objetos, todos os atributos são privados e
apenas podem ser acessados ou
alterados através de operações na
interface pública
Exercício
• Descreva as interfaces disponíveis num
Sistema de Som
Baixar,Aumentar,Gravar,Adiantar,Voltar
www.alvarofpinheiro.eti.br
Interfaces Públicas
Os detalhes de como são os métodos internamente, ou de
como eles são implementados não são visíveis através da
interface
Cliente Conta
nc debite
a1 b1
a2 b2
Moveis
Quadrada Redonda
www.alvarofpinheiro.eti.br
Generalização/Especialização
Conta Sobremesa
ContaEspecial BoloDeChocolate
www.alvarofpinheiro.eti.br
Herança
• É o mecanismo para definir uma nova
classe em termos de uma já existente
• É o relacionamento entre classes de
objetos que permite a uma classe incluir
atributos e operações definidas por outra
classe mais genérica.
• A classe mais genérica é chamada de
superclasse e as classe mais específicas
de subclasse.
www.alvarofpinheiro.eti.br
Herança
www.alvarofpinheiro.eti.br
Herança
Polígono
Cor
posição central Círculo
raio
www.alvarofpinheiro.eti.br
Herança (Java)
class Fruta
{
int gramas;
int cals_por_gramas;
int total_calorias ()
{ return gramas * cals_por_grama; }
}
www.alvarofpinheiro.eti.br
Polimorfismo de Sobreposição
Fruta
Descasca()
www.alvarofpinheiro.eti.br
Polimorfismo
• O polimorfismo de sobreposição é
resolvido dinamicamente
exibir()
www.alvarofpinheiro.eti.br
Polimorfismo
www.alvarofpinheiro.eti.br
Polimorfismo (Java)
class Fruta
{
int gramas;
int cals_por_gramas;
int total_calorias ()
{ return gramas * cals_por_grama; }
void descascar () {System.Out.Println (descasca uma fruta); }
}
www.alvarofpinheiro.eti.br
Associação – Agregação – Composição
www.alvarofpinheiro.eti.br
Custodia de um objeto
• Propriedade de um objeto e a
responsabilidade posterior de destruí-lo
• Exemplo:
• biblioteca e livros (custodia da biblioteca)
– se a biblioteca for destruída, os livros serão
destruídos, a menos dos livros emprestados que
a custodia esta com os usuários
www.alvarofpinheiro.eti.br
Interfaces - Definições
• Uma interface é um esqueleto de uma
classe (a forma que a classe deve ter),
mostrando os métodos que a classe terá
quando alguém a implementar.
www.alvarofpinheiro.eti.br
Interfaces
– Características
www.alvarofpinheiro.eti.br
Interfaces
– Utilidades e capacidades
Hidroavião
www.alvarofpinheiro.eti.br
interface MaquinaVoadora
{
int Navegar (ponto de, ponto para);
void Pousar ();
void Decolar (double combustivel);
}
class Helicoptero implements MaquinaVoadora
{
double Tanque_Combust;
int Rotac_motor;
int Rotores;
int Navegar (ponto de, ponto para) { */ o codigo aqui */ }
void Decolar (double combustivel)
{
Tanque_Combust + = combustivel;
for (; Rotac_motor < 6000; Rotac_motor ++);
}
void Pousar () {/*..................*/}
}
www.alvarofpinheiro.eti.br
MaquinaFlutuadora interface
Navio implementação
Windsurf
www.alvarofpinheiro.eti.br
interface MaquinaFlutuadora
{
int Navegar (ponto de, ponto para);
void LancarAncora ();
void LevantarAncora (double combustivel);
}
CLIENTE BD
www.alvarofpinheiro.eti.br
Interfaces
– Estudo de Caso
– Arquitetura do software para Java
Interface Camada de
Gráfica Aplicação
insert Implementação
Interface delete
update
Comandos
Camada de SQL
BD
Acesso a Dados
www.alvarofpinheiro.eti.br
Interfaces
– Estudo de Caso
– Arquitetura do software para Java
Interface Camada de
Gráfica Aplicação
Chamada stored
Camada de procedure
BD
Acesso a Dados
www.alvarofpinheiro.eti.br
Abordagem Orientada a Objetos
INTERFACE
INTERFACE
Dados solicita serviço Dados
+ responde a +
solicitação Operações
Operações
www.alvarofpinheiro.eti.br
Abordagem Orientada a Objetos
• Analogia com o LEGO (montar os componentes)
– Javabeans, EJB, ActiveX
Notação complexa
(UML)
1994
www.alvarofpinheiro.eti.br
Evolução
da
Análise Orientada a Objetos
• No princípio encontramos recomendações de desenho
(Booch, 1986)
• Se impõe o modelo orientado as características dos objetos
(Shlaer & Mellor, 1988)
• Surgem muitos métodos, mas de autores provenientes das bases de
dados relacionais
(Coad & Yourdon, Martin & Odell, Rumbaugh, Embley, etc., 1990)
• Se impõe os métodos orientados ao comportamento dos objetos
(Wirfs-Brock, Jacobson, Rubin & Goldberg, 1994)
• Começa a iniciar-se a UML (1994) www.alvarofpinheiro.eti.br
Evolução
da
Análise Orientada a Objetos
1980 1985 1990 1995 2000
Características
Comportamentos
UML
www.alvarofpinheiro.eti.br
O caminho até a unificação
www.alvarofpinheiro.eti.br
O caminho até o padrão
• Se elabora a versão 0.9 do Unified Modeling Language
UML 1.3
OMG Acceptance, Nov 1997
Final submission to OMG, Sep ‘97 UML 1.1
public First submission to OMG, Jan ´97
feedback
UML partners UML 1.0
www.alvarofpinheiro.eti.br
UML
• Linguagem para visualizar,
especificar, construir e documentar
software
• Padrão aberto
• Suporta o ciclo completo do
desenvolvimento de sofware
• Suportada por várias ferramentas
www.alvarofpinheiro.eti.br
Objetivos da UML
• Estabelecer uma linguagem visual de modelo,
expressivo e sensível em seu uso
• Manter uma independência dos processos de
modelagem das linguagens de programação
• Estabelecer bases formais
• Integrar as melhores práticas
• Impor um padrão mundial
www.alvarofpinheiro.eti.br
Modelos, Visões e Diagramas
A model is a complete
description of a system
from a particular
perspective Use Case
Use Case
Diagrams State
Use Case
Diagrams State
Diagrams
Diagrams Class
Diagrams
Diagrams
Use Case
Use Case
Diagrams
Sequence
Diagrams
Diagrams
Scenario State
Scenario
Diagrams State
Diagrams
Collaboration
Diagrams Models Component
Diagrams
Diagrams Diagrams
Scenario
Scenario
Diagrams
Statechart
Diagrams Component
Component
Diagrams
Diagrams Deployment
Diagrams
Diagrams
www.alvarofpinheiro.eti.br
Desenvolvimento centrado em Modelos
Necessidade
dos Usuários Processo de Desenvolvimento de SW
• Exemplos:
Maquetes, Planos, Equações, Protótipos,
Simulação por Computador,
Gráficos informais
www.alvarofpinheiro.eti.br
Modelar não é um fim
• É um meio para construir melhor
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Arquitetura dos Modelos
Visão de Visão de
desenho implementação
Visão de Visão de
processos Distribuição
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Ferramentas da UML
www.alvarofpinheiro.eti.br
Ferramentas da UML
• Modelo de requisito • Diagrama de casos de uso
www.alvarofpinheiro.eti.br
O Porquê destas ferramentas
Levantamento
Modelo de classes
Modelo de
Classe Classe
casos de uso
Modelo de comportamento
Modelo de interação
www.alvarofpinheiro.eti.br
Modelo de Requisitos
• Nos primeiros estágios da programação praticamente
se construía a aplicação dos requisitos em linguagem
natural
Funcionalidade Erros
desejada Exceções
Caminho
Base
Funcionalidade
não desejada
www.alvarofpinheiro.eti.br
Casos de Uso
• Introduzido formalmente por Ivar Jacobson
• Aceitado pela comunidade usuária de OO e por muitos
metodologistas
• É empregado na etapa de levantamento para captar os
requerimentos dos usuários
• De fácil compreensão por parte dos usuários dos
sistemas
• Ferramenta que precisa de outros complementos para
ser utilizado em processos de modelagem OO
www.alvarofpinheiro.eti.br
Casos de Uso
www.alvarofpinheiro.eti.br
Ainda sobre Casos de Uso
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Casos de Uso
Ator
Emprestar
título
Devolver título
Usuário
Reservar título
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Diagrama de Casos de Uso
Abrir o.s.
<<extend>>
Atendente de
1º nível
Fechar o.s.
<<extend>>
Cadastrar anamnese
Atendente de
1º nível
Realizar atendimento de 1º
nível
<<uses>>
www.alvarofpinheiro.eti.br
USE CASE: ABRIR O.S.
Fluxo de dados principal:
O use case inicia quando o solicitante telefona para o ramal do Call Center para a
resolução de um problema. O atendente de 1o nível informa a matrícula do
solicitante. O sistema verifica se o solicitante está cadastrado. Se o mesmo estiver
cadastrado, o atendente informa o equipamento e então o sistema verifica se o
mesmo está em manutenção. Se o equipamento não estiver em manutenção, o
sistema verifica se o equipamento está em garantia. Se não estiver em garantia, o
sistema busca os softwares associados àquele equipamento e o atendente verifica
a necessidade de execução do processo de anamnese. O sistema sugere a
prioridade do atendimento a partir do nível do solicitante e o atendente de 1 o nível
confirma a prioridade do atendimento. Em seguida, informa a ocorrência do
problema. O atendente de 1o nível usa (consultar base de conhecimento). A
seguir, o atendente de 1o nível registra data, hora, tipo e dados obrigatórios da
O.S.
1 0..6
1..* 1..*
Curso Disciplina
0..*
ensina
1
Aspectos estáticos
Professor
www.alvarofpinheiro.eti.br
Diagrama de Classes
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Diagrama de Seqüência
: Form : Solicitante
: Atendente de 1º
AbrirOS
nível
Abrir( )
Validar Usuário( )
Finalizar
Aspectos
Dinâmicos
www.alvarofpinheiro.eti.br
Diagrama de Seqüência
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Diagrama de Componentes
Aplicação Específica Software
Aplicação Geral
Gerencial Atendimento
Contratos Equipamento
Manutenção OS Ambiente de
Preventiva Conhecimento
MiddleWare
MTS
Relacionamento
System Software
Windows NT Oracle
entre os
Componentes
www.alvarofpinheiro.eti.br
Componentes
• Os componentes são um importante bloco de
construção na modelagem dos aspectos físicos do
sistema;
www.alvarofpinheiro.eti.br
Componentes
www.alvarofpinheiro.eti.br
Diagrama de Componentes
• Um nodo (nó) é um elemento físico que existe em tempo de
execução e representa um recurso computacional, geralmente
tendo pelo menos alguma memória e, freqüentemente,
capacidade de processamento
Nodos e Componentes
www.alvarofpinheiro.eti.br
Diagrama de Distribuição
SERVIDOR DE DADOS SERVIDOR DE OBJETOS
Atendimento.DLL
Gerencial.DLL
WINDOWS NT
Equipamento.DLL
Contrato.DLL
ORACLE Ambiente de
OS.DLL Conhecimento
.DLL
Manutenção Func_Help_
Preventiva.DLL Desk.DLL
Associação
Defeito.DLL Hardware.DLL
dos componentes
ao Hardware Software.DLL
REDE
www.alvarofpinheiro.eti.br
Arquitetura
www.alvarofpinheiro.eti.br
Acabamento
Instalações
Ambientação
Estrutura
Reboco
Base
www.alvarofpinheiro.eti.br
Definição de Arquitetura
www.alvarofpinheiro.eti.br
O que é Arquitetura de Software?
• É a visão do software a nível de funções
(subsistemas) e as interconexões entre
estas funções
• A arquitetura do software reflete como este
software irá funcionar
• Aspectos cruciais de um software são
determinados na definição da arquitetura do
mesmo
• A definição da arquitetura está baseada nos
requisitos funcionais e não-funcionais do
software em questão
www.alvarofpinheiro.eti.br
O que é Arquitetura de SW?
“Uma arquitetura é composta de:
Barry Boehm
www.alvarofpinheiro.eti.br
Relaciona-se com.....
www.alvarofpinheiro.eti.br
Definição de Arquitetura
A atividade em Contexto:
Requisitos de
Qualidade Arquitetura de HW
Arquitetura de SW
Restrições
Desenho Detalhado,
Codificação,
Integração e Testes
www.alvarofpinheiro.eti.br
Estilo de Arquitetura
Um estilo define uma família de sistemas em termos
de seus padrões de organização estrutural
Descrição do Estilo
• Componentes: unidades de software
• Conectores: comunicação entre componentes
• Estruturas de Controle e Comunicação de Dados
• Interação entre Dados e Controle, Regras e Restrições
www.alvarofpinheiro.eti.br
Exemplos de Estilo - Arquitetura
Sistemas em Camadas
Baseado em Eventos
Repositório Compartilhado
Interpretadores
Processamento Distribuído
Programa Principal/Subrotinas
Orientados a um domínio específico
Pipe & Filter
www.alvarofpinheiro.eti.br
Arquitetura de Software
• Modelos de Arquitetura
• O projeto de arquitetura pode ser
expresso através de diagramas de bloco
apresentando uma visão geral da
estrutura do sistema
• Modelos mais específicos mostram
• Compartilhamento de dados
• Distribuição
• Interfaces entre os sistemas
• Relacionamentos entre subsistemas
www.alvarofpinheiro.eti.br
Modelos de Arquitetura
www.alvarofpinheiro.eti.br
Modelos de Arquitetura
• O modelo de arquitetura usado afeta
– Desempenho
– Robustez
– Distributividade
– Manutenibilidade
www.alvarofpinheiro.eti.br
As 4 Visões
Arquitetura de Software
Componentes
Conectores
Configuração
Visão Conceitual
Restrições
de Execução
Componentes
Conectores Restrições de Módulos
Visão de
Configuração Execução
Módulos
Arquitetura de
Visão de Módulo
Hardware
Nova partição
de módulos
Módulos
Subsistemas Nova partição de módulos
Camadas
Entidades de
tempo de
execução
Visão de Código
• Integração de Pacotes
www.alvarofpinheiro.eti.br
Arquitetura:Visão Conceitual -Perguntas
www.alvarofpinheiro.eti.br
4 Visões
Visão de Módulos
www.alvarofpinheiro.eti.br
Arquitetura:Visão de Módulos - Perguntas
www.alvarofpinheiro.eti.br
4 Visões
Visão de Execução
• Distribuição de funcionalidades em entidades de tempo
de execução
• Assinalar os Hardwares
www.alvarofpinheiro.eti.br
Arquitetura:Visão de Execução -
Perguntas
• Como se mapeia o produto em elementos de tempo
de execução?
• Como cumprimos os requisitos de performance,
recuperação e reconfiguração?
• Como se consegue concorrência, distribuição e
replicação sem fazer complexos algoritmos de
controle?
• Como se minimiza o impacto de mudanças na
plataforma de execução?
www.alvarofpinheiro.eti.br
4 Visões
Visão de Código
www.alvarofpinheiro.eti.br
Arquitetura:Visão de Código -Perguntas
www.alvarofpinheiro.eti.br
Diferentes visões de uma Arquitetura
www.alvarofpinheiro.eti.br
Propriedades
• Arquiteturas definem componentes, porém omitem
seus detalhes privados( informações não arquiteturais)
Exemplos:
Relacionamentos : É-Sub-Módulo,
Sincroniza-com,etc.
www.alvarofpinheiro.eti.br
A Arquitetura auxilia a...
• Comunicação com os stakeholders
– Abstração de Alto nível comum a todos
– Cria um entendimento mútuo e consensual
• Reusabilidade de Abstrações
– A arquitetura é um artefato relativamente pequeno,
fácil de entender e que pode ser reusado em
outros projetos
www.alvarofpinheiro.eti.br
Recomendações(Arquitetura)
• Trabalhar com grupo pequeno de liderados(+experientes)
www.alvarofpinheiro.eti.br
Arquitetura de Software
• Estruturação do sistema
• Modelagem de controle
• Decomposição modular
www.alvarofpinheiro.eti.br
Tipos de Modelos
– Modelos Estruturais
• Modelo de Repositório -Case
• Modelo Cliente-Servidor
• Modelo de Camada - Modelo OSI
– Modelos de Controle
• Controle Centralizado
– Modelo de Retorno de Chamada
– Modelo de Gerente
• Controle Baseado em Eventos
– Modelo Broadcasting
– Modelo Baseado em Interrupções
www.alvarofpinheiro.eti.br
Estruturação do Sistema
• O sistema é decomposto em vários
subsistemas principais e as comunicações
entre eles são identificadas
• Nesta etapa, os subsistemas são
determinados através de critérios gerais e
comuns a todos os softwares existentes
Exemplos:
• Acesso a banco de dados
• Regra de negócios e processamento
• Interface gráfica
• Comunicação
www.alvarofpinheiro.eti.br
Estruturação do sistema
www.alvarofpinheiro.eti.br
Arquitetura de Software
• Decomposição modular
• Subsistema
• Um subsistema é também um sistema,
cuja operação é independente dos
serviços providos por outros
subsistemas
• Módulo
• Um módulo é um componente do
sistema que provê serviços a outros
componentes mas que normalmente
não seria considerado um sistema
separado
www.alvarofpinheiro.eti.br
Decomposição modular
• Diferença entre subsistemas e
módulos
• Não há uma definição clara
Comunicação
Processamento de Cadastramento de
Pedidos Informações
Acesso a Dados
www.alvarofpinheiro.eti.br
Arquitetura de Software
• Modelo Cliente-Servidor
• Modelo de arquitetura que mostra como
dados e processamento são distribuídos
entre processadores
• Componentes:
• Conjunto de servidores separados que
realizam serviços específicos
• Conjunto de clientes que usam estes
serviços
• Rede que permite que clientes acessem
os servidores
• Modelo largamente aplicado em sistemas
modernos
www.alvarofpinheiro.eti.br
Arquitetura de Software
• Modelo Cliente-Servidor
www.alvarofpinheiro.eti.br
Arquitetura de Software
www.alvarofpinheiro.eti.br
Arquitetura de Software
– Exemplo: Sistema de Vendas de Livros
–Visão client-server da arquitetura (visão
mais física dos componentes de software)
GUI
Servidor de Servidor de
Dados Aplicação
www.alvarofpinheiro.eti.br
O Modelo Multi-Camadas
Componentes de Apresentação
Windows
Browser NetPC Windows Other
Terminal
www.alvarofpinheiro.eti.br
Passos para construção
• Construção de um programa segundo o
paradigma de orientação a objetos
– Questões
– Até onde detalhar os módulos do software a
nível de projeto de arquitetura ?
– Normalmente, um módulo é detalhado de
forma a mostrar o ciclo de funcionamento
do mesmo
GUI
Cad Autores Cadastro Cadastro
Autores Livros
www.alvarofpinheiro.eti.br
Arquitetura de Software
– Exemplo: Sistema de Vendas de Livros
–Questões
–É necessário mostrar apenas os
componentes a serem desenvolvidos
ou todos os elementos da solução
(SGBD, servidores de internet,
proxies, etc.) ?
–É possível mostrar componentes de
software que não serão desenvolvidos
mas que fazem parte da solução
–Esta visão dá ênfase à estruturação
física do sistema
www.alvarofpinheiro.eti.br
Arquitetura de Software
– Exemplo: Sistema de Vendas de Livros
– Detalhamento do módulo de importação de
clientes
Servidor TCP JAVA
Manutenção
Pedidos
www.alvarofpinheiro.eti.br
Duas Camadas
Servidor Cliente
www.alvarofpinheiro.eti.br
Arquitetura em duas camadas
Servidor
Servidor de Cliente
Aplicação
www.alvarofpinheiro.eti.br
Arquitetura em 3 camadas
(GUI)
Negócios
Acesso a Dados
BD
www.alvarofpinheiro.eti.br
Arquitetura 3 camadas
• Introdução de um middleware (Middle tier server)
entre a Interface com o usuário (cliente) e o
componente de gerenciamento de dados
(servidor);
www.alvarofpinheiro.eti.br
Acesso
GUI Interface Negócio Interface Dados
CLIENTE BD
www.alvarofpinheiro.eti.br
Application Server
• J2EE é uma arquitetura (Sun)
www.alvarofpinheiro.eti.br
Padronização
Os padrões devem proporcionar:
www.alvarofpinheiro.eti.br
Qualidade
É importante lembrar que a
qualidade do software esta
diretamente associada à forma de
manutenção, performance e
portabilidade de problemas, os
quais podemos prevenir e/ou
capturar, reduzindo o tempo gasto
no futuro através de debug ou
otimização de código, através da
utilização desse documento.
www.alvarofpinheiro.eti.br
Regras
O uso deste documento também ajudará
a novos desenvolvedores entenderem a
padronização e o nível de expertise
código. Eles não verão somente regras
associadas com a qualidade na
programação, mas o "entendimento" atrás
das regras utilizadas. Muitas regras e
definições usadas neste documento
contem informações redundantes. Isto foi
feito com o intuito de poder ser usado
sem a necessidade de ler regras
anteriores.
www.alvarofpinheiro.eti.br
Regras
• Aumento de Produtividade
Prover direções na melhoria do desenvolvimento de código.
• Abstração
O uso de abstração permite uma mudança transparente.
• Aumento de Qualidade
Permite o aumento de qualidade como um código mais
legível. Legibilidade implica em uma taxa baixa de erros.
www.alvarofpinheiro.eti.br
Destinado
www.alvarofpinheiro.eti.br
Estrutura
Este documento agrupa seus pontos em
tópicos específicos. Os pontos estão em
formas de regras ou definições. As regras
devem "quase" nunca serem quebradas,
em quanto às definições podem ser
violadas com mais freqüências. Caso
alguns tipos de padronização não façam
sentido no projeto em desenvolvimento,
esses devem ser ignorados e podem ser
evoluídos durante o processo de
desenvolvimento
www.alvarofpinheiro.eti.br
Por que usar Padrão de Projeto?
• Podem ser utilizados para melhorar o entendimento ou comunicação dos problemas /
decisões arquiteturais. (Fowler)
• Podem ser vistos como uma tentativa de criar um vocabulário comum para comunicação.
(Fowler)
• Padrões dão suporte tanto aos novatos quanto aos especialistas em desenvolvimento de
software (Buschmann et al.)
www.alvarofpinheiro.eti.br
O que é Padrão de Projeto?
• Um padrão é a solução para um determinado problema
em um determinado contexto
www.alvarofpinheiro.eti.br
GRASP
www.alvarofpinheiro.eti.br
GRASP - General Responsability Assignment Software
Patterns
www.alvarofpinheiro.eti.br
GRASP - General Responsability Assignment Software
Patterns
• Creator
• Information Expert
• Low Coupling
• Controller
• High Cohesion
• Polymorphism
• Pure Fabrication
• Indirection
• Protected Variations
www.alvarofpinheiro.eti.br
GoF
www.alvarofpinheiro.eti.br
Quais os Padrões de Projeto?
www.alvarofpinheiro.eti.br
Qual o template de um Padrão?
• Nome
– O nome que serve como referencia para o padrão
• O Problema
– Explica o problema que ocorre em um contexto, com sintomas e
em condições.
• A Solução
– Elementos que constituem o design, seus relacionamentos,
responsabilidades e colaborações.
• As Conseqüências
– Resultados e compromissos decorrentes da aplicação do
padrão.
– Impactos sobre a flexibilidade, extensibilidade, portabilidade ou
desempenho do sistema.
– Fundamentam a escolha do padrão mais apropriado
www.alvarofpinheiro.eti.br
Qual o template de um Padrão?
• Nome e Classificação
– Identificam unicamente o padrão e o classifica para catalogação
• Intenção
– Um breve descrição que deve responder o que o padrão faz, qual sua intenção e
que problema ele trata.
• Também Conhecido Como
– Outros nomes pelo qual o padrão é conhecido
• Motivação
– Um cenário que ilustra o problema e como as classes deste padrão o
solucionam
• Aplicabilidade
– Em que situações o padrão pode ser aplicado
• Estrutura
– Representação gráfica do padrão com suas classes e colaborações
www.alvarofpinheiro.eti.br
Qual o template de um Padrão?
• Participantes
– Classes e objetos que participam no padrão, incluindo suas responsabilidades
• Colaborações
– Como os participantes colaboram entre si
• Conseqüências
– Como o padrão atende a seus objetivos e que “efeitos colaterais” seu uso pode
provocar
• Implementação
– Dicas, técnicas e erros comuns ao implementar este padrão
• Exemplo de Código
– Fragmentos de código ilustrando o padrão
• Usos Conhecidos
– Exemplos de uso do padrão em sistemas reais
• Padrões Relacionados
– Padrões que estão fortemente relacionados a este , incluindo suas diferenças, ou
utilizados por este
www.alvarofpinheiro.eti.br
Quais as categorias de
Padrões?
• Padrões Criacionais: Auxiliam a criação de objetos, tornando o
programa menos dependente do modo como os objetos são criados e
compostos. Assim, estes padrões permitem que se mude as classes
dos objetos criados em tempo de execução com pouco esforço do
programador;
www.alvarofpinheiro.eti.br
Quais os critérios de Padrões?
• Os padrões de projeto são classificados por dois critérios. O
primeiro critério, chamado objetivo, refletem as categorias
(criação, de estrutura ou de comportamento). O segundo
critério é chamado de escopo, e especifica quando o padrão é
aplicado (classes ou a objetos). Padrões com escopo de
classe lidam com relacionamentos estabelecidos através de
herança, ou seja, estáticos e definidos em tempo de
compilação. Padrões com escopo de objeto lidam com
relacionamentos de objeto, que podem ser modificados em
tempo de execução e são mais dinâmicos. Praticamente todo
padrão utiliza herança de alguma forma, por isto apenas os
padrões que focam em relacionamentos através de herança
devem ser classificados com escopo de classe. Os padrões
mais importantes estão em escopo de objeto.
www.alvarofpinheiro.eti.br
Qual o escopo de Padrões?
Scope Class Creational Structural Behavioral
www.alvarofpinheiro.eti.br
O que é um Padrão Criacional?
• Padrões de projeto abstraem o processo de instanciação. Eles ajudam a tornar
o sistema independente de como os objetos são criados, compostos e
representados. Um padrão criacional de classe utiliza herança para variar a
classe que será instanciada. Um padrão criacional de objeto irá delegar a
instanciação de um objeto para outro objeto.
• AbstractFactory [objeto]
• Builder [objeto]
• Factory Method [classe]
• Prototype [objeto]
• Singleton [objeto]
www.alvarofpinheiro.eti.br
Abstract Factory
Interface para criação de objetos
• Neste exemplo, a classe abstrata WidgetFactory possui duas especializações:
MotifWidgetFactory para widgets Motif e QtWidgetFactory para widgets Qt. Essas
especializações são classes concretas capazes de "produzir" os elementos da interface gráfica.
O cliente do toolkit obtém os elementos gráficos de que necessita através da classe (interface)
WidgetFactory sem ter conhecimento das classes concretas. Da mesma maneira, o cliente
somente interage com as interfaces que representam os elementos produzidos pela Abstract
Factory (no exemplo, a classe Janela e a classe Botao).
Classe abstrata
Classe concreta
www.alvarofpinheiro.eti.br
Abstract Factory
• Intenção: Provê uma interface para criar famílias de
objetos relacionados ou dependentes sem especificar
suas classes concretas.
• Aplicabilidade: Este padrão deve ser utilizado quando
o programa precisa de independência de como seus
objetos são criados, compostos e representados. Ou
quando o sistema precise ser configurado para uma
ou muitas famílias de classes ou objetos. Ou quando
uma família de objetos relacionados é projetada para
ser utilizada em conjunto e esta premissa deve ser
garantida. Ou quando deseja-se prover uma biblioteca
de classes, e deseja-se disponibilizar apenas as
interfaces, e não as implementações.
www.alvarofpinheiro.eti.br
Builder
Separa construção da
•
representação
Neste exemplo, o método lerRTF() (classe LeitorRTF) percorre uma lista com os tokens
encontrados no texto de entrada (formato RTF) e, para cada tipo de token, chama um método do
objeto de tipo ConversorTexto. Dependendo do formato escolhido para o texto de destino, será
escolhida uma implementação da classe ConversorTexto: ConversorPDF, ConversorTeX ou
ConversorASCII. Cada uma destas classes implementa os métodos de acordo com as
características do formato relacionado. A classe ConversorASCII não implementa os métodos
converteParagrafo() e converteFonte() pois este formato (ASCII) não possui elementos de estilo
Classe
representação
Classe
construção
www.alvarofpinheiro.eti.br
Builder
• Intenção: Separa a construção de um objeto complexo
de sua representação, de modo que o mesmo processo
de construção possa criar diferentes representações.
• Aplicabilidade: O padrão builder deve ser utilizado
quando o algoritmo para criação de objetos complexos
deve ser independente das partes que compõem o
objeto e da forma como este objeto é “montado”. Ou
quando o processo de construção deve permitir
diferentes representações para o objeto que está sendo
construído.
www.alvarofpinheiro.eti.br
Factory Method
Delega a uma classe a instaciação de
outras
• Neste exemplo, uma aplicação, que é construída através de um framework baseado
no padrão Factory Method, suporta a criação de documentos do tipo
MeuDocumento. O framework é constituído pelas classes abstratas Aplicacao e
Documento. A aplicação disponibiliza as classes concretas MinhaAplicacao e
MeuDocumento. A classe MinhaAplicacao é uma implementação da abstração
definida pela classe Aplicacao.
Classes
abstratas
Classes
concretas
www.alvarofpinheiro.eti.br
Factory Method
• Intenção: Define uma interface para criação um objeto, mas deixa
as subclasses decidirem que classe instanciar. Permite que uma
classe delegue a instanciação a suas subclasses.
• Aplicabilidade: Este padrão deve ser utilizado quando um classe
não pode antecipar a classe dos objetos que deve criar. Ou quando
a classe deseja que suas subclasses especifiquem o objeto que
será criado. O quando a classe delega a responsabilidade de
criação para um de muitas classes auxiliares, e deseja-se localizar
o “conhecimento” de que classe auxiliar deve ser delegada.
www.alvarofpinheiro.eti.br
Prototype
Criação de objetos baseados em
protótipos
• Neste exemplo é mostrado uma hierarquia de classes representando documentos de
formato ASCII e PDF que são criados através da classe Cliente. A partir de duas
instâncias prototípicas, ascii e pdf, o método criarDocumento cria clones de
documentos de acordo com o tipo desejado. A tarefa de realizar a criação da
instância é implementada na classe Documento e herdada por suas classes filhas,
ASCII e PDF.
Interface
Realiza a
interface
Clonável
Hierarquia de
classes
Subclasses de
Documento
“Instâncias
prototípicas”
www.alvarofpinheiro.eti.br
Prototype
• Intenção: Especifica que tipos de objetos criar usando uma
instância prototípica do objeto. Cria novos objetos através da cópia
deste protótipo.
• Aplicabilidade: Este padrão deve ser utilizado quando a aplicação
deve ser independente de como os produtos são criados,
compostos, e representados, e, adicionalmente:
• As classes a serem instanciadas são definidas em tempo de execução
(por exemplo, dynamic loading);
• Deseja-se evitar criar um hierarquia de fábricas paralelas a hierarquia
de classes;
• Quando a instanciação da classe pode ter um de algumas poucas
combinações diferentes de estado. Isto pode ser mais conveniente criar
um número correspondente de protótipos e cloná-los ao invés de
instanciar a classe manualmente a cada vez com o estado apropriado.
www.alvarofpinheiro.eti.br
Singleton
• Intenção: Garante que uma classe possui apenas uma
única instância. Provê um ponto de acesso global a ela.
• Aplicabilidade: Este padrão de ser utilizado quando deve
haver apenas uma instância de cada classe e esta
instância deve ser acessível a todos os clientes a partir
de um ponto de acesso conhecido. Ou quando uma
única instância deve ser extensível apenas por
subclasses, e os clientes devem apenas utilizar a
instância estendida, sem modificar seu código.
www.alvarofpinheiro.eti.br
O que é um Padrão Estrutural?
• Padrões estruturais focam em como criar estruturas de maior porte através da composição
de classes e objetos. Padrões estruturais de classe utilizam herança para compor
interfaces ou implementações. Padrões estruturais de objeto utilizam composição de
objetos para prover novas funcionalidades. A flexibilidade adicional da composição de
objetos vêm da habilidade de mudar esta composição em tempo de execução, o que é
impossível na composição estática de classes.
• Bridge [objeto]
• Composite [objeto]
• Decorator [objeto]
• Facade [objeto]
• Flyweight [objeto]
• Proxy [objeto]
www.alvarofpinheiro.eti.br
• Adapter permite que um objeto cliente utilize serviços de outros
objetos com interfaces diferentes por meio de uma interface única.
Ponto único de
acesso
Utiliza métodos
de classes
distintas por
uma interface
única
Subclasses
distintas
www.alvarofpinheiro.eti.br
Adapter
www.alvarofpinheiro.eti.br
• Bridge O diagrama mostra a solução para o problema citado. Temos duas hierarquias de
classes relacionadas: a hierarquia de tipos de janelas (Janela, Icone e Dialogo) e a de
implementação nas plataformas suportadas (JanelaImpl, XWindowImpl e MSWindowImpl). O
relacionamento entre as interfaces, Janela e JanelaImpl, é a "ponte" que "desacopla" a interface
da implementação. Para que um ícone seja desenhado, faz-se uma chamada ao método
DesenhaBorda() que por sua vez realiza "n" chamadas ao método DesenhaLinha() da classe
XWindowImpl ou MSWindowImpl, dependendo da plataforma desejada.
Interfaces
Implementação
das Interfaces
Hierarquias
www.alvarofpinheiro.eti.br
Bridge
• Intenção: Desacopla uma abstração de sua implementação, de
modo que as duas possam variar independentemente.
• Aplicabilidade: Este padrão pode ser utilizado nas seguintes
situações:
• Deseja-se evitar uma dependência direta entre a abstração e sua
implementação. Este pode ser o caso, por exemplo, quando a
implementação tiver de ser selecionada ou substituída em tempo de
execução;
• Ambas as abstrações e suas implementações devem ser extensíveis
através da criação de subclasses. Neste caso o padrão bridge permite
que diferentes abstrações e implementações possam ser combinadas e
estendidas independentemente.
• Mudanças na implementação de uma abstração não deve impactar em
seus clientes, isto é, seu código não deve ser recompilado.
www.alvarofpinheiro.eti.br
• Composite o diagrama abaixo mostra a estrutura de classes que
permite que clientes tratem de modo uniforme tanto objetos individuais
quanto suas composições.
Classe abstrata
Subclasses
www.alvarofpinheiro.eti.br
Composite
• Intenção: Compõe objetos em estruturas de
árvores para representar hierarquias parte-todo.
Permite que clientes tratem de modo uniforme
tanto objetos individuais quanto suas
composições.
• Aplicabilidade: Este padrão deve ser utilizando
quando deseja-se representar hierarquias parte-
todo. Ou quando deseja-se que clientes sejam
capazes de ignorar as diferenças entre
composições dos objetos e os objetos
individualmente. Clientes irão tratar
uniformemente todos os objetos na estrutura
composta.
www.alvarofpinheiro.eti.br
Decorator definimos uma subclasse de ElementoDeDocumento chamada MonoElementoDeDocumento
MonoElementoDeDocumento é uma classe abstrata para todos os ElementoDeDocumento de
embelezamento
Interface
Classe abstrata
Classe abstrata
para
embelezamento
Classe
concretas
www.alvarofpinheiro.eti.br
Decorator
• Inteção: Anexa dinamicamente responsabilidades adicionais a um
objeto. Provê uma alternativa flexível ao uso de herança como
mecanismo de extensão de funcionalidade
• Aplicabilidade: Utilize este padrão para adicionar responsabilidades
individuais a objetos dinamicamente e transparentemente, isto é,
sem afetar outros objetos. Utilize este padrão para
responsabilidades que podem ser “removidas”. Ou ainda quando a
extensão de funcionalidade através da criação de subclasses é
impraticável. Em algumas situações um grande número de
extensões independentes são possíveis e isto poderá produzir uma
grande quantidade de subclasses para suportar cada uma das
combinações.
www.alvarofpinheiro.eti.br
Facade define uma interface de mais alto nível que torna um subsistema de mais fácil
uso
Classe de mais
alto nível
www.alvarofpinheiro.eti.br
Facade
• Intenção: Provê uma interface unificada para o conjunto de
interfaces de um subsistema. Define uma interface de mais alto
nível que torna um subsistema de mais fácil uso
• Aplicabilidade: Utilize este padrão quando:
• Deseja-se prover uma interface simples para um subsistema complexo.
A fachada pode prover uma visão padrão do subsistema que é boa o
suficiente para a maior parte dos clientes. Apenas clientes que
necessitem de customização terão que olhar além da fachada.
• Existem muitas dependências entre clientes e as classes que
implementam as abstrações. A introdução da fachada desacopla o
subsistema dos clientes e outros subsistemas, promovendo a
independência e portabilidade do subsistema.
• Deseja-se quebrar o sistema em camadas. Utilize a fachada para
definir um ponto de entrada para cada um dos subsistemas. Se os
subsistemas são dependentes, pode-se simplificar as dependências
entre eles fazendo com que se comuniquem apenas através de suas
fachadas.
www.alvarofpinheiro.eti.br
FlyWeight define compartilhamento para suportar um grande número de pequenos
objetos de forma eficiente
www.alvarofpinheiro.eti.br
Flyweight
• Intenção: Usa compartilhamento para suportar um
grande número de pequenos objetos de forma eficiente.
• Aplicabilidade: Este padrão deve ser utilizado quando:
• Uma aplicação utiliza um grande número de objetos;
• Armazenamento tem custo elevado devido a grande quantidade
de objetos;
• Muitos grupos de objeto podem ser substituídos por
relativamente poucos objetos compartilhados.
• A aplicação não depende da identidade do objeto. Uma vez que
os objetos podem ser compartilhados, testes de identidade irão
retornar true para objetos conceitualmente distintos.
www.alvarofpinheiro.eti.br
Proxy provê um ponto de atendimento para que outro objeto possa controlar o acesso ao
primeiro
Classe que
provê ponto de
atendimento
Classe que
realiza a
interface Classe
controlada
Classe que
controla outra
classe
www.alvarofpinheiro.eti.br
Proxy
www.alvarofpinheiro.eti.br
O que é um padrão
Comportamental?
• Padrões comportamentais estão relacionados com algoritmos e atribuição de
responsabilidades entre objetos. Estes padrões não descrevem apenas os
padrões de classes e objetos, mas também os padrões de comunicação entre
estas classes e objetos. Caracterizam complexos fluxos de controle, difíceis de
acompanhar em tempo de execução. Eles mudam o foco do fluxo de controle e
permite que se concentre apenas na forma como os objetos estão
interconectados.
www.alvarofpinheiro.eti.br
O que é um padrão
Comportamental?
•Chain of Responsibility [objeto]
•Command [objeto]
•Interpreter [classe]
•Iterator [objeto]
•Mediator [objeto]
•Memento [objeto]
•Observer [objeto]
•State [objeto]
•Strategy [objeto]
•Template Method [classe]
•Visitor [objeto]
www.alvarofpinheiro.eti.br
Chain of Responsability, é um modelo de objetos que assume a tarefa de descobrir qual objeto
pode satisfazer sua solicitação.
Inicia a procura
para saber qual
o objeto pode
atender a
solicitação
www.alvarofpinheiro.eti.br
Chain of Responsibility
• Intenção: Evita acoplamento entre solicitantes e atendentes
permitindo que mais de um objeto tenha chance de tratar a
solicitação. Encadeia os atendentes e passa a solicitação através
desta cadeia permitindo que todos eles a tratem.
• Aplicabilidade: Este padrão deve ser usado quando:
• mais de um objeto pode tratar uma solicitação e o objeto que a tratará
não é conhecido a priori.
• o objeto que trata a solicitação deve ser escolhido automaticamente;
• deve-se emitir uma solicitação para um dentre vários objetos, sem
especificar explicitamente o receptor;
• o conjunto de objetos que pode tratar uma solicitação deveria ser
especificado dinamicamente.
www.alvarofpinheiro.eti.br
Command encapsula uma solicitação em um objeto, permitindo que se parametrize clientes com
diferentes solicitações, filas ou registros de solicitações, suportando ainda que operações sejam
desfeitas
Pode ser
atendida de
várias formas
Envia
solicitação
parametrizada
www.alvarofpinheiro.eti.br
Command
• Intenção: Encapsula uma solicitação em um objeto, permitindo que se
parametrize clientes com diferentes solicitações, filas ou registros de
solicitações, suportando ainda que operações sejam desfeitas.
• Aplicabilidade: Utilize este padrão para:
• Parametrizar objetos por uma ação a ser executada. Você pode expressar tal
parametrização numa linguagem procedural através de uma função callback, ou seja,
uma função que é registrada em algum lugar para ser chamada em um momento
mais adiante. Os Commands são uma substituição orientada a objetos para
callbacks;
• Especificar, enfileirar e executar solicitações em tempos diferentes. Um objeto
Command pode ter um tempo de vida independente da solicitação original. Se o
receptor de uma solicitação pode ser representado de uma maneira independente do
espaço de endereçamento, então você pode transferir um objeto Command para a
solicitação para um processo diferente e lá atender a solicitação;
• Suportar desfazer operações. A operação Execute, de Command, pode armazenar
estados para reverter seus efeitos no próprio comando. A interface do Command
deve ter acrescentada uma operação Unexecute, que o reverte efeitos de uma
chamada anterior de Execute. Os comandos executados são armazenados em uma
lista histórica. O nível ilimitado de desfazer e refazer operações é obtido percorrendo
esta lista para trás e para frente, chamando operações Unexecute e Execute,
respectivamente.
www.alvarofpinheiro.eti.br
Interpreter dada uma linguagem, cria uma representação de sua gramática, juntamente com um
interpretador que utiliza esta representação para interpretar sentenças na linguagem.
www.alvarofpinheiro.eti.br
Interpreter
• Intenção: Dada uma linguagem, cria uma representação de sua gramática,
juntamente com um interpretador que utiliza esta representação para
interpretar sentenças na linguagem.
• Aplicabilidade: Este padrão deve ser utilizado quando existe uma
linguagem a ser interpretada e é possível representar expressões nesta
linguagem como árvores sintáticas abstratas. Esse padrão funciona melhor
quando:
• A gramática é simples. Para gramáticas complexas, a hierarquia de classes se
torna muito grande e não gerenciável. Outras ferramentas como geradores de
parsers são melhores alternativas nestas situações, pois podem interpretar
expressões sem construir árvores sintáticas abstradas, o que pode salvar
espaço e possivelmente tempo;
• Eficiência não é crítico. Os interpretadores mais eficientes são usualmente não
implementados através da interpretação de árvores de parser diretamente, mas
primeiro é feita uma tradução para um outro formato.
www.alvarofpinheiro.eti.br
Iterator provê uma forma de acessar seqüencialmente os elementos de um agregado de objetos, sem
expor a sua representação interna
www.alvarofpinheiro.eti.br
Iterator
• Intenção: Provê uma forma de acessar seqüencialmente os elementos de
um agregado de objetos, sem expor a sua representação interna
• Aplicabilidade: O padrão iterator deve ser utilizado para acessar
agregações de objetos sem expor sua representação interna; para suportar
diversas “varreduras transversais” em agregados de objetos; para prover
uma interface uniforme para varrer estruturas agregadas diferentes.
www.alvarofpinheiro.eti.br
Mediator define um objeto que encapsula o modo como um conjunto de objetos interage. Promove
um acoplamento fraco entre objetos, evitando que referenciem explicitamente um ao outro, e com isto
permitindo que se possa variar independentemente a interação entre eles.
www.alvarofpinheiro.eti.br
Mediator
• Intenção: Define um objeto que encapsula o modo como um conjunto de
objetos interage. Promove um acoplamento fraco entre objetos, evitando
que referenciem explicitamente um ao outro, e com isto permitindo que se
possa variar independentemente a interação entre eles.
• Aplicabilidade: Use este padrão quando um conjunto de objetos se
comunicam de maneira complexa; o reuso de objetos é dificultado porque
este referencia e se comunica com muitos outros objetos; o comportamento
operações deve ser customizável sem a criação de inúmeras subclasses.
www.alvarofpinheiro.eti.br
Memento
sem violar o
encapsulament
o, captura e
armazena
externamente o
estado de um
objeto, de modo
que o estado
anterior de um
objeto possa
ser
posteriormente
restaurado
www.alvarofpinheiro.eti.br
• Memento Aplicabilidade: Use este padrão
quando uma parte ou todo o estado de um
objeto deve ser guardado e possivelmente
recuperado posteriormente; a obtenção
direta do estado quebraria a proteção de
informação expondo detalhes de
implementação.
www.alvarofpinheiro.eti.br
Observer define
uma dependência
1-para-n entres
objetos, de modo
que quando o
estado de um
objeto é alterado
todos seus
dependentes são
notificados e
atualizados
automaticamente
www.alvarofpinheiro.eti.br
• Observer Aplicabilidade: Use este padrão
quando uma mudança em um objeto deve
causar mudança em outros e não se sabe quais
e quantos são os outros objetos; quando um
objeto deve ser capaz de notificar outros objetos
sem assumir nada sobre que são estes outros
objetos. Em outras palavras, você não quer que
estes objetos estejam fortemente acoplados
entre si.
www.alvarofpinheiro.eti.br
State permite
que um objeto
altere seu
comportamento
quando seu
estado interno
se modifica e o
objeto parecerá
ter mudado de
classe
www.alvarofpinheiro.eti.br
• State Aplicabilidade: Este padrão deve ser utilizado quando:
• O comportamento de um objeto depende fortemente do seu estado e
ele deve alterar o seu comportamento em tempo de execução
dependendo do seu estado.
• Os métodos têm instruções condicionais grandes em que as condições
dependem do estado do objeto. Este estado é normalmente
representado por uma ou mais constantes do tipo enumerado.
Frequentemente, vários métodos contém esta mesma estrutura
condicional. O padrão State coloca cada ramo da instrução condicional
numa classe separada. Desta forma, o estado do objeto pode ser
tratado como um objeto ele próprio, o qual pode variar
independentemente.
www.alvarofpinheiro.eti.br
Strategy define uma família
de algoritmos, encapsula cada
um, e os faz inter-cambiáveis.
Permite que o algoritmo varie
independentemente de seus
clientes
www.alvarofpinheiro.eti.br
• Strategy Aplicabilidade: Este padrão deve ser utilizando quando:
• Diversas classes relacionados diferem apenas em
comportamento. Estratégias provêem formas de configurar a
classe com um dos muitos comportamentos;
• Necessita-se de diversas variações de um algoritmo;
• Um algoritmo utiliza dados que não devem ser conhecidos pelo
cliente. Utilize este padrão para evitar expor estruturas de dados
complexas e específicas do algoritmo.
• Um classe define diversos comportamentos, e estes aparecem
como instruções condicionais múltiplas. Ao invés de manter
estas condicionais, mova os trechos condicionais para sua
própria classe de estratégia.
www.alvarofpinheiro.eti.br
Template Method define o
esqueleto de um algoritmo
através de uma operação,
delegando alguns passos as
suas subclasses. Permitem
que subclasses redefinam
certos aspectos de um
algoritmo sem modificar a
estrutura do mesmo.
www.alvarofpinheiro.eti.br
• Template Method Aplicabilidade: Este padrão deve ser
utilizado:
• Para implementar partes invariantes de um algoritmo
uma única vez e deixar que as subclasses
implementem o comportamento que varia.
• Quando o comportamento padrão entre subclasses
devam ser fatorados e localizados em uma classe
comum para evitar duplicação de código;
• Para controlar extensões por subclasses. Pode-se
definir um template method que chama operações
gancho em pontos específicos, permitindo extensões
apenas nestes pontos.
www.alvarofpinheiro.eti.br
Visitor representa uma
operação a ser executada
sobre os elementos da
estrutura de um objeto.
Visitantes permitem que se
definam novas operações sem
modificar as classes dos
elementos sobre as quais atua.
www.alvarofpinheiro.eti.br
• Visitor Aplicabilidade: Este padrão deve ser utilizado quando:
• Uma estrutura de objetos contém muitas classes de objetos com
interfaces distintas, e deseja-se executar operações nestes objetos que
dependem de sua classe concreta;
• Muitas operações distintas e não relacionadas precisam ser executadas
em objetos em uma estrutura de objetos, e deseja-se evitar poluir estas
classes com estas operações. Visitor permite que operações
relacionadas sejam mantidas juntas definindo-as em uma classe.
Quando a estrutura do objeto é compartilhada por muitas aplicações,
utilize Visitor para colocar as operações apenas nas aplicações que
necessitem dela;
• As classes que definem a estrutura do objeto raramente muda, porém
frequentemente deseja-se adicionar novas operações sobre a estrutura.
Modificar a classe da estrutura de objetos requer redefinir a interface
para todos os visitors, o que é potencialmente custoso. Se as classes
da estrutura de objetos mudam constantemente, provavelmente é
melhor definir as operações nestas classes.
www.alvarofpinheiro.eti.br
Qualidade
www.alvarofpinheiro.eti.br
Qualidade
Motivação
• Principais benefícios da qualidade
• Diminuição dos defeitos
• Aumento da confiabilidade do software
• Menos retrabalho
• Aumento da motivação da equipe
• Diminuição de custos do desenvolvimento
• Diminuição de custos da manutenção corretiva
• Aumento do valor agregado do software
• Aumento da satisfação do cliente
• Diminuição de horas extras de trabalho
www.alvarofpinheiro.eti.br
Qualidade
Motivação
• Diminuição do custo de correção de defeitos
www.alvarofpinheiro.eti.br
Qualidade
Conceitos Básicos
www.alvarofpinheiro.eti.br
Qualidade
Conceitos Básicos
www.alvarofpinheiro.eti.br
Qualidade
Conceitos Básicos
www.alvarofpinheiro.eti.br
Qualidade
Conceitos Básicos
www.alvarofpinheiro.eti.br
Qualidade
Conceitos Básicos
www.alvarofpinheiro.eti.br
Qualidade
Conceitos Básicos
www.alvarofpinheiro.eti.br
Qualidade
Conceitos Básicos
www.alvarofpinheiro.eti.br
Qualidade
Conceitos Básicos
www.alvarofpinheiro.eti.br
Qualidade
Conceitos Básicos
www.alvarofpinheiro.eti.br
Qualidade
Conceitos Básicos
www.alvarofpinheiro.eti.br
Qualidade
Conceitos Básicos
www.alvarofpinheiro.eti.br
Qualidade
Conceitos Básicos
www.alvarofpinheiro.eti.br
Qualidade
Conceitos Básicos
www.alvarofpinheiro.eti.br
Qualidade
Custo da Qualidade
www.alvarofpinheiro.eti.br
Qualidade
Qualidade de Software
www.alvarofpinheiro.eti.br
Qualidade
Princípios da Qualidade
www.alvarofpinheiro.eti.br
Qualidade
Software
www.alvarofpinheiro.eti.br
Qualidade
Produto de Software
www.alvarofpinheiro.eti.br
Qualidade
Produto de Software
www.alvarofpinheiro.eti.br
Qualidade
Produto de Software
www.alvarofpinheiro.eti.br
Qualidade
Produto de Software
www.alvarofpinheiro.eti.br
Qualidade
Processo de Software
www.alvarofpinheiro.eti.br
Qualidade
Processo de Software
www.alvarofpinheiro.eti.br
Qualidade
Barreiras
www.alvarofpinheiro.eti.br
Qualidade
Iniciando
www.alvarofpinheiro.eti.br
Qualidade
Modelo de Melhoria PDCA
www.alvarofpinheiro.eti.br
Qualidade
Modelo de Melhoria IDEAL
www.alvarofpinheiro.eti.br
Qualidade
Modelo de Melhoria
www.alvarofpinheiro.eti.br
Qualidade
Metodologia
www.alvarofpinheiro.eti.br
Qualidade
Modelo a ser Seguido
www.alvarofpinheiro.eti.br
Qualidade
Modelo a ser Seguido
www.alvarofpinheiro.eti.br
Qualidade
Escopo
www.alvarofpinheiro.eti.br
Qualidade
Equipe
www.alvarofpinheiro.eti.br
Qualidade
Equipe
www.alvarofpinheiro.eti.br
Qualidade
Equipe
www.alvarofpinheiro.eti.br
Qualidade
Auditorias
www.alvarofpinheiro.eti.br
Qualidade
Auditorias
www.alvarofpinheiro.eti.br
Qualidade
Auditorias
www.alvarofpinheiro.eti.br
Qualidade
Auditorias
www.alvarofpinheiro.eti.br
Qualidade
Auditorias
www.alvarofpinheiro.eti.br
Qualidade
Auditorias
www.alvarofpinheiro.eti.br
Qualidade
Auditorias
www.alvarofpinheiro.eti.br
Qualidade
Auditorias
www.alvarofpinheiro.eti.br
Qualidade
SQA
www.alvarofpinheiro.eti.br
Estimativas
www.alvarofpinheiro.eti.br
"Não se pode controlar
aquilo que não se
consegue medir.“
Tom de Marco
www.alvarofpinheiro.eti.br
Motivação
• Não se pode gerenciar...
– O que não se pode medir (Tom DeMarco)
www.alvarofpinheiro.eti.br
O que medir e quando?
• O que deve ser estimado?
– Tamanho, esforço, custo, …
• Quando estimar?
– No início e durante todo o projeto as estimativas devem ser revisadas sempre
que necessário
• O que considerar?
– Escopo do projeto
– Atividades e produtos de trabalho
– Processo de desenvolvimento
– Modelo do ciclo de vida do projeto
– Modelos / dados históricos para converter as estimativas em homem-hora e
custo...
www.alvarofpinheiro.eti.br
Medida Padrão
• A falta de uma unidade padrão para
quantificar o tamanho do software
– é o grande problema com que nos
defrontamos nos projetos de
desenvolvimento, manutenção e expansão de
sistemas.
• Que unidade de medida padronizada e
uniforme deve ser adotada para mensurar
o tamanho de um projeto ?
www.alvarofpinheiro.eti.br
Medida Padrão
• Quantidade de linhas de código?
• Quantidade de módulos?
• Quantidade de funções?
www.alvarofpinheiro.eti.br
Problemas comuns
• Má interpretação do SOW
www.alvarofpinheiro.eti.br
Estimativas – Aspectos
importantes
• As premissas e restrições utilizadas devem ser documentadas
www.alvarofpinheiro.eti.br
Estimativas – Aspectos
importantes (2)
• Estimativa de esforço e custo devem estar
relacionadas
www.alvarofpinheiro.eti.br
Técnicas de
Estimativas
WideBand Delphi
www.alvarofpinheiro.eti.br
WideBand Delphi
• O método Delphi foi desenvolvido em 1948
– esse método requer que um pequeno grupo de experts realizem
estimativas individuais para um determinado problema e que ao
final um consenso seja alcançado através de iterações de
seções de estimativas
www.alvarofpinheiro.eti.br
WideBand Delphi
• Principais Vantagens:
– As estimativas não são realizadas por uma única pessoa
– A técnica suporta a identificação do WBS do projeto (conjunto
de atividades base para o planejamento do projeto)
• Todos estimam sobre a mesma base – o WBS
– As pessoas são mais comprometidas com as
estimativas,sempre que participam da realização das mesmas
– A troca de conhecimento entre os experts durante as iterações
de realização das estimativas permite um consenso com maior
embasamento, “menos incerto”
www.alvarofpinheiro.eti.br
WideBand Delphi
• Principais Vantagens
– Pode ser utilizado para estimar qualquer coisa
www.alvarofpinheiro.eti.br
Wideband Delphi – Processo de
Estimativa
• Técnica de estimativa Bottom-up
• A saída do processo é:
– Lista detalhada das atividades do projeto;
– Tarefas operacionais e de overhead;
– Tarefas relacionadas ao processo;
– Premissas das estimativas;
– Estimativas de todos os participantes para as atividades do projeto.
www.alvarofpinheiro.eti.br
Wideband Delphi – Processo de
Estimativa
Planejamento
Reunião de
Kick-off
Preparação
Individual
Reunião de
Estimativas
Organização dos
resultados
Revisão dos
resultados finais
www.alvarofpinheiro.eti.br
Wideband Delphi –
Planejamento
• Uma sessão de Wideband Delphi se inicia com a definição do
escopo do problema
– Problemas maiores devem ser quebrados em módulos gerenciáveis
que possam ser estimados de forma mais precisa
– A pessoa responsável por iniciar o processo de estimativa deve ter a
preocupação de prover o máximo de informações possíveis para o
grupo responsável por estimar o projeto
• O grupo de estimativas deve possuir a seguinte configuração:
– Um moderador, responsável por planejar e coordenar as estimativas
– O gerente de projeto
– Dois ou três participantes técnicos
www.alvarofpinheiro.eti.br
Wideband Delphi –
Planejamento
• O moderador deve conhecer bem o escopo a ser
estimado, de forma a poder estimar como qualquer outro
membro do grupo
– Mas o seu principal papel é agir como facilitador imparcial para
resolver conflitos durante a realização das estimativas
www.alvarofpinheiro.eti.br
Wideband Delphi – Processo de
Estimativa
Planejamento
Reunião de
Kick-off
Preparação
Individual
Reunião de
Estimativas
Organização dos
resultados
Revisão dos
resultados finais
www.alvarofpinheiro.eti.br
Wideband Delphi – Reunião de
Kick-off
• Uma reunião de kick-off é realizada com a equipe de estimativas
para garantir que todos possuem um entendimento suficiente do
escopo
• O moderador fornece explicações detalhadas sobre o escopo a ser
estimado
– sobre a técnica de estimativas WIDEBAND para membros da equipe
que não são familiares com a mesma
• Apresenta premissas e limitações que já sejam conhecidas e que
deverão impactar as estimativas
• A equipe revisa os objetivos finais das estimativas e discute todos
os aspectos necessários para melhorar o entendimento do escopo
• A unidade a ser estimada é acordada: horas, dias, semanas, $,
linhas de código
www.alvarofpinheiro.eti.br
Wideband Delphi – Reunião de
Kick-off
• A reunião de kick-off permite que o moderador
decida se o processo de estimativa pode ser
continuado, para tal os seguintes requisitos
devem ser satisfeitos:
– A equipe selecionada deve possuir o conhecimento
necessário par estimar o projeto e todas as
informações estão disponíveis
– A reunião de kick-off deve ter acontecido com
sucesso
– A equipe deve estar em consenso a respeito do
objetivo da estimativa e da unidade a ser estimada
www.alvarofpinheiro.eti.br
Wideband Delphi – Processo de
Estimativa
Planejamento
Reunião de
Kickoff
Preparação
Individual
Reunião de
Estimativas
Organização dos
resultados
Revisão dos
resultados finais
www.alvarofpinheiro.eti.br
Wideband Delphi – Preparação
Individual
• Cada participante deverá definir a lista de atividades que considerar
necessária para realizar as estimativas em um nível de detalhe
apropriado
www.alvarofpinheiro.eti.br
Wideband Delphi –
Preparação Individual
Padrão de formulário para registro da lista de atividades
e estimativas
Tarefas Iteração Iteração Iteração Iteração
#1 #2 #3 #4
Requisitos
Levantar requisitos
Documentar os requisitos
Validar requisitos
Atualizar documento de requisitos
Elaborar diagrama de casos de uso
Elaborar especificação de casos de uso
Validar modelo de casos de uso
Atualizar modelo de casos de uso
www.alvarofpinheiro.eti.br
Implementar protótipo de interface
Wideband Delphi – Preparação
Individual
• As estimativas não devem ser influenciadas pelo que a
gerência ou outros stakeholders do projeto almejem
– Evitar que pressões externas influenciem nas estimativas
www.alvarofpinheiro.eti.br
Wideband Delphi – Preparação
Individual
• Incluir atividades extras ao desenvolvimento de software
– Garantia da qualidade
– Gerência de configuração
– Atividades gerais do processo relacionadas ao ciclo de vida
adotado
– Atividades relacionadas a re-trabalho
– Atividades gerais de suporte: Treinamentos, Reuniões…
• Documentar todas as premissas tomadas como base
para realização da estimativa
www.alvarofpinheiro.eti.br
Wideband Delphi – Preparação
Individual
• Orientações para realização das estimativas:
– Assumir que uma única pessoa (você) irá realizar toda a
atividade
– Assumir que todas as atividades serão realizadas
seqüencialmente
– Assumir que as atividades serão desenvolvidas de forma
ininterrupta
• Facilita o processo de estimativas
– Listar todos os períodos de dependência entre as atividades, de
forma a apoiar a tradução das estimativas em prazos
posteriormente
www.alvarofpinheiro.eti.br
Wideband Delphi – Processo de
Estimativa
Planejamento
Reunião de
Kickoff
Preparação
Individual
Reunião de
Estimativas
Organização dos
resultados
Revisão dos
resultados finais
www.alvarofpinheiro.eti.br
Wideband Delphi – Reunião de
Estimativas
• O moderador coleta as estimativas individuais de cada
participante e gera um gráfico a partir das mesmas
www.alvarofpinheiro.eti.br
Wideband Delphi – Reunião de
Estimativas
• O moderador não deve identificar o responsável por cada estimativa
– O anonimato é importante para a técnica Wideband
www.alvarofpinheiro.eti.br
Wideband Delphi – Reunião de
Estimativas
• Após as discussões, cada participante deverá estimar
“individualmente” novamente a lista de atividades
– De forma a refiná-las com as informações obtidas nas discussões
da reunião
www.alvarofpinheiro.eti.br
Wideband Delphi – Reunião de
Estimativas
• Iterações adicionais seguindo a mesma dinâmica devem ser
realizadas até que…
– Tenha havido 4 iterações
– As estimativas tenham convergido para um intervalo aceitável
(que deve ser definido antecipadamente: dados históricos)
– O tempo da reunião de estimativa ter se esgotado (em média 2h)
– Os participantes não estejam confortáveis em alterar suas últimas
estimativas
www.alvarofpinheiro.eti.br
Wideband Delphi – Reunião de
Estimativas
Gráfico de estimavas mostrando os resultados de
três iterações de uma sessão de Wideband Delphi
www.alvarofpinheiro.eti.br
Wideband Delphi – Processo de
Estimativa
Planejamento
Reunião de
Kickoff
Preparação
Individual
Reunião de
Estimativas
Organização dos
resultados
Revisão dos
resultados finais
www.alvarofpinheiro.eti.br
Wideband Delphi – Organização
dos Resultados
• A realização da reunião não significa o fim dos trabalhos…
www.alvarofpinheiro.eti.br
Wideband Delphi – Processo de
Estimativa
Planejamento
Reunião de
Kickoff
Preparação
Individual
Reunião de
Estimativas
Organização dos
resultados
Revisão dos
resultados finais
www.alvarofpinheiro.eti.br
Wideband Delphi – Revisão dos
Resultados Finais
• Na última etapa para fechamento das estimativas a equipe revisa os
resultados finais
www.alvarofpinheiro.eti.br
Wideband Delphi – Processo de
Estimativa
www.alvarofpinheiro.eti.br
Wideband Delphi – Processo de
Estimativa
• Estimativas finais: serão realizadas com base
nas estimativas finais de cada membro da
equipe
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Motivação
• Técnica de estimativas baseada na abordagem de especificação de
casos de uso
– Que é uma técnica de especificação de requisitos para sistema
orientados a objetos
– Fácil de entender
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Principais conceitos
Casos de uso – Conceito da linguagem
UML para uma funcionalidade do sistema
que agregue valor para os atores do
mesmo. Casos de uso surgem dos
requisitos do sistema.
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Principais conceitos
EF – Environmental Factor
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Principais conceitos
• Critérios de entrada para uso da técnica
– Todos os casos de uso do sistema devem
estar identificados
– Atores identificados para todos os casos de
uso do sistema
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
Calcular pontos de
casos de uso ajustados
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
• O processo se inicia com a identificação dos
atores do sistema a ser desenvolvido,
classificando-os como simples, médio e
complexo
• Critérios para a classificação de atores:
– Simples: um sistema legado com uma interface de
comunicação bem definida;
– Médio: sistema legado com comunicação via
protocolos, por exemplo TCP/IP, ou interfaces Text-
Based, por exemplo Terminal ASCII;
– Complexo: pessoa que interage com o sistema via
interface gráfica.
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
• Tabela de peso dos atores
Tipo do ator Descrição Peso
Interface de um
Simples 1
sistema
Interface interativa
Médio ou via protocolos de 2
comunicação
Complexo Interface gráfica 3
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
• Exemplo de atribuição de pesos aos
atores
– Usuário funcionário do banco
– Sistema de transações bancárias
– => 1 ator complexo e 1 ator médio
• Total de pontos
– 1*3 + 1*2 = 5 pontos
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
Calcular pontos de
casos de uso ajustados
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
• Processo similar ao dos atores do sistema
• Cada caso de uso identificado para o sistema
deve ser classificado como
– simples, médio e complexo.
• A base para a tomada dessa decisão é o
número de transações envolvidas no caso de
uso, incluindo os fluxos alternativos
• O conceito de transações nesse contexto se
restringe a um “conjunto atômico de atividades”,
um cenário do caso de uso por exemplo
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
• A tabela abaixo lista o fator e a classificação de cada tipo de
caso de uso.
Tipo do Caso de
Descrição Peso
Uso
<= 3
Simples transações 5
/cenários
De 4 a 7
Médio transações 10
/ cenários
Mais do que 7
Complexo transações 15
/ cenários
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
• Outro mecanismo usado para medir a
complexidade de casos de uso é o número de
classes de análise
– a quantidade de transações nesse caso não é levada
em consideração
• Essa abordagem só pode ser utilizada quando
as classes de análise do sistema já estão
definidas, e já se sabe que classes de análise
implementam os casos de uso
– as classes de projeto não são levadas em
consideração
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
• A tabela abaixo lista o fator e a classificação de cada tipo de caso de
uso de acordo com as classes de análise envolvidas
Tipo do Caso de
Descrição Peso
Uso
Menos do que 5
Simples 5
classes de análise.
De 5 a 10 classes de
Médio 10
análise.
Mais do que 10 classes
Complexo 15
de análise.
Calcular pontos de
casos de uso ajustados
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
• O fator calculado através dos atores do
sistema deve ser somado ao fator
calculado pelos casos de uso
• Esse fator é denominado UUCP
(Unadjusted use case points) e será
ajustado para refletir a complexidade do
projeto e a experiência da equipe de
desenvolvimento
Fator dos atores + Fator dos casos de uso = UUCP
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
Calcular pontos de
casos de uso ajustados
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
• É necessário ponderar o fator UUCP com os aspectos técnicos do
projeto: complexidade do sistema, experiência da equipe e
requisitos não funcionais
• O fator TCF(Technical Complexity Factor) expressa a complexidade
do sistema.
• Para o cálculo do TCF para cada fator é atribuído um peso no valor
de 0 a 5, onde o 0 significa que o fator é irrelevante ao sistema e 5
indica ser essencial
• Soma-se então o valor de cada fator multiplicado pelo peso
atribuído em função do sistema específico (os valores de 0 a 5).
– TFactor = SOMA ((TLevel) * (Peso Especifico))
– TCF = 0.6 + (0.01*TFactor)
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
“Fatores Técnicos”
Descrição do Fator Peso padrão do fator
Numero do (para o método UCP)
fator
T1 Sistema distribuído 2
T2 Objetivos de tempo de resposta e 1
capacidade de taxa de transferência
T3 Alta eficiência para o usuário final 1
(sistemas on-line)
T4 Processamento interno complexo 1
T5 O código deve ser reutilizável 1
T6 Facilidade de instalar 0.5
T7 Facilidade de uso 0.5
T8 Portável 2
T9 Facilidade de manutenção 1
T10 Concorrência 1
T11 Possui requisitos de segurança 1
T12 Provê interfaces para componentes 1
externos
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
Calcular pontos de
casos de uso ajustados
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
• Após a definição do TCF, é necessário
calcular o fator relacionado ao ambiente
de desenvolvimento, incluindo equipe, o
EF (Environmental Factor).
• Para o cálculo do EF utiliza-se outro
conjunto de fatores
• Para cada um dos fatores listados no
conjunto se atribui pesos específicos para
o sistema nos limites de 0 a 5
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
“Fatores Ambientais”
Número do Fator Descrição do Fator Peso Padrão
F5 Motivação 1
F6 Requisitos estáveis 2
F7 Equipe alocada em tempo parcial -1
F8 Linguagem de programação -1
complexa
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
• A seguir são listados os critérios de atribuição dos pesos de cada
fator:
– De F1 até F4, o valor 0 indica não haver experiência, 5 significa experts
e 3 um nível médio de experiência
– F5, 0 indica não existência de motivação, 5 alta motivação e 3 média
– F6, 0 indica requisitos extremamente instáveis, 5 estáveis e 3 nível
parcial de instabilidade
– F7, 0 indica inexistência de pessoas da equipe em tempo parcial, 5
toda a equipe em tempo parcial e 3 expressa uma equipe mista
– F8, 0 indica linguagem de programação fácil, 5 extremamente difícil e 3
uma linguagem com nível de dificuldade médio
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
• O Cálculo do fator ambiental segue a
mesma regra do fator técnico
• Soma-se então o valor de cada fator
multiplicado pelo peso atribuído em
função do sistema específico (os valores
de 0 a 5), sendo definido dessa forma o
valor EFactor
– EFactor = SOMA((FLevel) * (Peso
específico))
– EF = 1.4 + (-0.03*EFactor)
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
Calcular pontos de
casos de uso ajustados
www.alvarofpinheiro.eti.br
Pontos de Caso de Uso
Processo de Contagem
• Depois do cálculo de todos os fatores que
influenciam a complexidade total do
sistema, pode-se obter o total de pontos
de caso de uso através da seguinte
fórmula:
UCP = UUCP * TCF * EF
www.alvarofpinheiro.eti.br
Realização das Estimativas de
Esforço
• Para a estimativa de esforço do projeto, o método de Pontos de
Caso de Uso sugere o fator de 20 homens hora por Ponto de Caso
de Uso, UCP
• Uma outra análise ainda pode ser feita sobre os fatores ambientais
para ajustar esse fator:
– Na contagem dos fatores de F1 a F6 que obtiveram peso menor do que
3, e dos fatores de F7 e F8 que obtiveram peso > 3, os resultados dos
valores apresentam as seguintes situações:
• Se o valor final obtido for <= 2, é indicado o fator 20 homens/hora por UCP;
• Se o valor obtido for 3 ou 4, é indicado o fator 28 homens/hora por UCP;
www.alvarofpinheiro.eti.br
Realização das Estimativas de
Esforço
• Ainda quanto ao valor do fator ambiental...
– Se o valor obtido for >= 5, o projeto deve ser revisto,
pois os fatores ambientais podem contribuir para o
insucesso do mesmo
– O fator EF se torna um pouco mais critico devido a
medir o nível de experiência da equipe e a
estabilidade do projeto
– Números negativos nessa área indicam que o projeto
terá que reservar um certo tempo para treinamento
da equipe ou para correção de problemas
introduzidos devido a inexperiência da mesma.
www.alvarofpinheiro.eti.br
GQM
Goal Question
Metric
www.alvarofpinheiro.eti.br
Introdução
• A idéia básica de GQM é derivar métricas
de software a partir de perguntas e
objetivos.
www.alvarofpinheiro.eti.br
Definindo um Programa de Métricas
www.alvarofpinheiro.eti.br
Significado de GQM
• Goal
– Quais são as metas/objetivos?
• Question
– Quais questões se deseja responder?
• Metric
– Quais métricas poderão ajudar?
www.alvarofpinheiro.eti.br
GQM - Vantagens
• Apóia a definição top-down do processo de medição e
a análise bottom-up dos dados resultantes;
• Ajuda na identificação de métricas úteis e relevantes;
• Apóia a análise e interpretação dos dados coletados;
• Permite uma avaliação da validade das conclusões
tiradas;
• Diminui a resistência das pessoas contra processos
de medição.
www.alvarofpinheiro.eti.br
GQM – Passos Básicos...
1. Listar os principais objetivos do processo de
medição;
2. Derivar de cada objetivo as perguntas que devem
ser respondidas para determinar se os objetivos
foram atingidos;
3. Decidir o que precisa ser medido para ser capaz de
responder as perguntas adequadamente (definição
das métricas).
www.alvarofpinheiro.eti.br
GQM – Hierarquia dos Passos
• Os objetivos da medição são definidos em termos da
entidade, propósito, atributos de qualidade, ponto de
vista e ambiente
• Cada objetivo é refinado em um conjunto de
perguntas que representam uma definição
operacional do objetivo
• Para cada pergunta, as métricas relevantes são
definidas.
www.alvarofpinheiro.eti.br
GQM – Estrutura Hierárquica
www.alvarofpinheiro.eti.br
Premissas para a medição
• Prover resultados consistentes;
• Permitir sua obtenção por não
especialistas em informática;
• Ser de fácil aprendizado;
• Ser compreensível ao usuário final;
• Servir para estimativas;
• Permitir automatização;
• Possibilitar obter séries históricas.
www.alvarofpinheiro.eti.br
Exemplo
• Problema
– Durante a fase de testes muitos defeitos
foram encontrados e suspeita-se de que a
qualidade do software poderá não atingir um
nível satisfatório na implantação (deadline).
• Solução
– Construir uma árvore GQM para auxiliar na
tomada desta decisão.
www.alvarofpinheiro.eti.br
Exemplo
Decidir quando o software
estará pronto para a implantação
Pessoas
Tamanho de Defeitos Casos de Horas de Horas
disponíveis por
código descobertos testes utilização
www.alvarofpinheiro.eti.br de teste
dia para testes
GQM - Fases
1. Planejamento
2. Definição
3. Coleta de dados
4. Interpretação
www.alvarofpinheiro.eti.br
GQM - Problemas
• Há uma necessidade de se estabelecer um padrão de
especificação de métricas que permita expressar uma métrica
com detalhes suficientes para torná-la não ambígua e que ao
mesmo tempo seja de fácil especificação.
• No trabalho de Kitchenham é proposto um modelo que permite a
modelagem e o armazenamento de métricas de software.
• No trabalho de Ford, sugere-se que as métricas sejam
categorizadas por tamanho, esforço e planejamento, qualidade,
desempenho, confiabilidade e complexidade. Para cada uma
destas categorias é proposto um conjunto de métricas que são
agrupadas em classes de atributos relacionados ao software.
www.alvarofpinheiro.eti.br
Integração GQM e QIM
• QIM
– Quality Improvement Paradigm
www.alvarofpinheiro.eti.br
CMMi
www.alvarofpinheiro.eti.br
Capability Maturity Model
e Rational Unified Process
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Relembrando os níveis de
maturidade...
Optimizing
5 Foco na melhoria do
processo
Quantitatively
Managed
4 Processo medido e
controlado
Defined
3 Processo proativo e
definido para a
organização
Managed
Processo definido para
2 o nível de projetos e
frequentemente reativo
Performed
1 Processo imprevisível,
pouco controlado
www.alvarofpinheiro.eti.br
Relembrando ...
Um Processo Gerenciado
Executado de acordo
com políticas
Stakeholders
relevantes
Monitorado e
Controlado Aderência
é verificada
www.alvarofpinheiro.eti.br
A Situação Atual
• Problemas comuns no desenvolvimento
de software:
– software que não atende aos requisitos de
funcionalidade e qualidade esperados.
– projetos que extrapolam prazo e custo
estimados.
– projetos mais complexos, com equipes
maiores, mais difíceis de gerenciar.
– gerência de projetos ineficiente.
• “Crise de software é eminentemente
gerencial”.
www.alvarofpinheiro.eti.br
Motivação
Standish Group
www.alvarofpinheiro.eti.br
Motivação
• Percentual de projetos bem sucedidos
está aumentando:
– Melhores ferramentas para monitorar e
controlar progresso do desenvolvimento dos
projetos.
– Melhoria dos processos de gerenciamento e
perfis dos gerentes.
• Busca pela qualidade do
desenvolvimento de software adoção
de modelos de qualidade.
www.alvarofpinheiro.eti.br
Objetivos
• Contribuir para melhoria da
qualidade do desenvolvimento de
software através da efetiva gerência
de projetos:
www.alvarofpinheiro.eti.br
Níveis de Maturidade
Processo
Otimizando (5)
de
Melhoria
Contínua
Gerenciado (4) Processo
Previsível
www.alvarofpinheiro.eti.br
Estrutura do CMM
indicam
Níveis de
Capacitação do Maturidade
Processo
contêm
alcançam Áreas-chave de
Metas Processo
Organizadas pelas
descrevem Práticas-chave
Atividades ou
infra-estrutura
www.alvarofpinheiro.eti.br
Nível 2 do CMM
Metas:
• Documentar e controlar os
requisitos alocados para
estabelecer uma base para todo o
processo de desenvolvimento.
• Manter planos, artefatos e
atividades de software
consistentes com os requisitos
alocados.
www.alvarofpinheiro.eti.br
KPA Planejamento de
Projetos
Metas:
• Documentar as estimativas de software a
serem usadas no planejamento e
acompanhamento do projeto.
• Planejar e documentar as atividades e os
compromissos do projeto de
desenvolvimento de software.
• Obter a concordância dos grupos e das
pessoas envolvidas quanto aos respectivos
compromissos relacionados ao projeto de
desenvolvimento de software.
www.alvarofpinheiro.eti.br
KPA Supervisão e
Acompanhamento de
Projeto
Metas:
• Acompanhar os resultados e desempenhos
reais confrontando-os com o plano de
desenvolvimento de software.
• Tomar ações corretivas e gerenciá-las até
sua conclusão.
• Assegurar que as alterações nos
compromissos de software se dêem
através de acordo entre os grupos e as
pessoas envolvidas.
www.alvarofpinheiro.eti.br
KPA Gerência de Contrato
de Software
Metas:
• Contratar empresa de software qualificada
• Estabelecer acordo entre contratada e
contratante
• Manter comunicação efetiva entre contratada
e contratante
• Contratante deve acompanhar desempenho e
resultados da contratada, comparando-os
com compromissos assumidos.
www.alvarofpinheiro.eti.br
KPA Garantia da Qualidade
Metas:
• Planejar atividades de GQS
• Verificar conformidade das atividades e
produtos de software.
• Informar aos envolvidos as atividades e
resultados de GQS.
• Encaminhar à gerência questões de não-
conformidade não resolvidas no âmbito do
projeto de software.
www.alvarofpinheiro.eti.br
KPA Gerência de
Configuração de Software
Metas:
• Planejar atividades de Gerência de
Configuração de Software
• Identificar, controlar e tornar disponíveis os
artefatos de software
• Controlar alterações nos artefatos de
software
• Informar aos envolvidos acerca do estado e
conteúdo das baselines de software.
www.alvarofpinheiro.eti.br
CMM nível 2 e o RUP
• KPA Gerenciamento de Requisitos:
– Processo orientado a casos de uso.
– Fluxo de gerenciamento de mudanças.
• KPA Planejamento de Projeto de
Software:
– Elaboração do Plano de Projeto, Plano da
Iteração, Estimativas de esforço, Lista de
Riscos.
– Avaliação e revisão dos planejamentos
(avaliação e planejamento das iterações).
www.alvarofpinheiro.eti.br
CMM nível 2 e o RUP
• KPA Supervisão e Acompanhamento do
Projeto de Software:
– Resultados acompanhados e avaliados ao
final de cada iteração e cada fase.
– Alterações nos compromissos acordadas e
acompanhadas pelos envolvidos.
– Planejamento das próximas iterações com
base nas avaliações.
www.alvarofpinheiro.eti.br
CMM nível 2 e o RUP
• KPA Garantia da Qualidade:
– Milestones com objetivos bem definidos para
auditorias.
– Atividades de revisões bem definidas.
– Provê modelos de documentos a serem
utilizados como padrão do projeto, para tratar
questões de não conformidade.
www.alvarofpinheiro.eti.br
CMM nível 2 e o RUP
• KPA Gerência de Configuração de
Software
– Plano de Gerenciamento de Configuração,
Plano de Gerenciamento de Builders.
• KPA Gerência de Contrato de Software:
– Não é diretamente atendido no RUP, porém,
as ferramentas, técnicas e mecanismos
existentes no RUP podem ser utilizados para
acompanhar o contrato.
www.alvarofpinheiro.eti.br
Objetivos / Expectativas
• Ao final do módulo o aluno deve:
– Entender os conceitos do CMMI nos níveis de
maturidade 3, 4 e 5
– Entender as áreas de processo e atividades
de forma macro nos respectivos níveis
www.alvarofpinheiro.eti.br
Nível 3 de Maturidade
www.alvarofpinheiro.eti.br
Nível 3 de Maturidade
In Out
www.alvarofpinheiro.eti.br
Áreas de Processo - Nível 3
www.alvarofpinheiro.eti.br
As áreas de engenharia do
nível 3
Requisitos
REQM
Soluções alternativas
RD Requisitos TS PI Cliente
Ver Val
Necessidades do cliente
www.alvarofpinheiro.eti.br
Desenvolvimento dos
Requisitos
Produzir e analisar requisitos do cliente,
do produtos e dos componentes
www.alvarofpinheiro.eti.br
Solução Técnica
www.alvarofpinheiro.eti.br
Solução Técnica
• Principais atividades:
– Verificar e evoluir os cenários de instalação e
operação do produto
– Definir critérios para a análise das soluções
apropriadas
– Realizar análise “Make or Buy or reuse”
– Elaborar e implementar o projeto gerando o produto
final
– Elaborar documentação de suporte ao produto:
manuais, manuais de instalação e operação, etc.
www.alvarofpinheiro.eti.br
Integração do Produto
www.alvarofpinheiro.eti.br
Integração do Produto
• Principais atividades:
– Realizar testes de integração entres os componentes
e módulos
– Estabelecer a seqüência de integração, preparar o
ambiente, estabelecer procedimentos de integração
– Revisar interfaces para garantir completude
– Garantir que os componentes estão devidamente
integrados e prontos para o release
– Liberar o produto
www.alvarofpinheiro.eti.br
V&V – Verificação e Validação
X
Estamos construindo o produto correto?
Estamos atendendo às necessidades operacionais?
Demonstrar que o produto ou componente atende
a intenção de uso quando implantado no ambiente
planejado
www.alvarofpinheiro.eti.br
V&V – Verificação e Validação
Verificação Validação
www.alvarofpinheiro.eti.br
Nível 3 de Maturidade
www.alvarofpinheiro.eti.br
Foco no processo da
organização & Definição do
processo da organização
Planejar e implementar a melhoria do processo
organizacional baseada nos pontos fortes e fracos
existentes no processo
• SG1: Determinar oportunidades Estabelecer e manter o processo
de melhoria de processos (assets do processo) da organização
– Periodicamente os pontos fracos
e oportunidades de melhoria do SG1: Estabelecer o processo (e
processo são identificados seus assets) da organização
• SG2: Planejar e implementar
atividades de melhoria de
processos
– Os ajustes e melhorias no
processo são implementados de
forma planejada e novas versões
do processo são disponibilizadas
www.alvarofpinheiro.eti.br
Treinamento Organizacional
Desenvolver e manter as habilidades e conhecimentos das
pessoas para que elas possam executar seus Papéis de
forma efetiva e eficiente
www.alvarofpinheiro.eti.br
Gerenciamento Integrado de
Projetos
Estabelecer e gerenciar o projeto e o envolvimento dos
stakeholders relevantes de acordo com um processo
integrado, definido e adaptado a partir do processo
da organização
www.alvarofpinheiro.eti.br
Gerenciamento de Riscos
www.alvarofpinheiro.eti.br
Gerenciamento Integrado de
Fornecedor
Identificar proativamente produtos e/ou componentes
que possam ser usados para satisfazer requisitos do projeto
e gerenciar os fornecedores selecionados de forma cooperada
www.alvarofpinheiro.eti.br
Análise de Decisão e
Resolução
Analisar possíveis decisões através de um processo
de avaliação formal que avalia alternativas identificadas
com base em critério estabelecido
www.alvarofpinheiro.eti.br
Áreas de processo especificas
de IPPD
• Ambiente organizacional para Integração
– Prover a infra-estrutura necessária para o
desenvolvimento do processo e do produto integrado
a gerenciar pessoas para a integração
• Integração de equipes
– Formar e manter uma equipe integrada para o
desenvolvimento de produtos de trabalho
www.alvarofpinheiro.eti.br
Nível 4 de Maturidade
www.alvarofpinheiro.eti.br
Nível 4 de Maturidade
www.alvarofpinheiro.eti.br
Nível 4 de Maturidade
Nível 4 – Gerenciado Quantitativamente
www.alvarofpinheiro.eti.br
Nível 4 de Maturidade
In Out
www.alvarofpinheiro.eti.br
Nível 4: Endereçando as
causas especiais de variação...
Variações
especiais
% Esforço Organizacional
160%
140% % Esforço
% Esforço Org.
120% Organizacional
100% Goal
80%
60%
40% UCL
20%
0%
LCL
Jan Fev Mar Abr Mai Jun Jul Ago Set Nov Dez
www.alvarofpinheiro.eti.br
Áreas de Processo - Nível 4
• Performance do Processo Organizacional
• Gerenciamento Quantitativo de Projetos Optimizing
Quantitatively
Managed
Defined
Managed
Performed
www.alvarofpinheiro.eti.br
Performance do Processo
Organizacional
Estabelecer e manter um entendimento quantitativo
da performance do processo padrão da organização (e assets)
para suportar a qualidade e objetivos de performance do
processo, e prover dados de performance do processo,
baselines e modelos para gerenciar quantitativamente os
projetos da organização
www.alvarofpinheiro.eti.br
Gerenciamento Quantitativo
de Projetos
Nível 5 – Otimizando
www.alvarofpinheiro.eti.br
Nível 5 de Maturidade
Nível 5 – Otimizando
In Out
www.alvarofpinheiro.eti.br
Nível 5: Endereçando as
causas comuns de variação...
Variações
Comuns
% Esforço Organizacional
140%
120% % Esforço
% Esforço Org.
100% Organizacional
80% Goal
60%
40% UCL
20%
0%
LCL
Jan Fev Mar Abr Mai Jun Jul Ago Set Nov Dez
www.alvarofpinheiro.eti.br
Áreas de Processo - Nível 5
• Desenvolvimento e Inovação Organizacional
• Análise Causal e Resolução Optimizing
Quantitatively
Managed
Defined
Managed
Performed
www.alvarofpinheiro.eti.br
Desenvolvimento e Inovação
Organizacional
Selecionar e implantar melhorias inovadoras de forma incremental
Que de forma mensurável melhoram os processos e
tecnologias da organização. As melhorias suportam os objetivos
de qualidade e da performance do processo da organização
derivados dos objetivos de negócio.
www.alvarofpinheiro.eti.br
Considerações Finais
• Principais problemas:
– Institucionalização do processo
– Envolvimento da gerência sênior nas atividades necessárias para a
implantação do modelo
• Aspectos importantes:
– Definir processos que façam sentido para o escopo da organização,
caso contrário não sobreviverão após a avaliação
– O modelo permite interpretações para diversos tipos de organizações
– Atenção com a área de processo de Medição e Análise
www.alvarofpinheiro.eti.br
Considerações Finais
• Principais Benefícios
– Uma aplicação criteriosa de conceitos de gerenciamento de processos
e de melhoria da qualidade ao desenvolvimento e manutenção de
software
– Um modelo para melhoria organizacional reconhecido
internacionalmente
– Ponto forte para empresas que desejam ingressar no mercado de
exportação
– Maior controle sobre os projetos
– Criação de uma base histórica de dados organizacional
– Melhoria nas estimativas dos projetos
– Visibilidade do progresso do projeto mais perto do real
www.alvarofpinheiro.eti.br
Considerações Finais
• Mas nem tudo são flores...
– No inicio da institucionalização dos processos, o
overhead percebido é grande
• Nesse momento, ajustes devem ser realizados para
minimizar ao máximo o overhead
• É importante que pessoas com experiência em
desenvolvimento de software participem das definições dos
processos ou pelo menos aprovem
www.alvarofpinheiro.eti.br
Considerações Finais
• Mas nem tudo são flores...
– É necessário fazer com que a equipe de desenvolvimento se torne uma
aliada dos processos
• Isso é possível e os ganhos são grandes!!
– Quando o ganho não é imediato, as atividades se tornam difíceis de
implantar
www.alvarofpinheiro.eti.br
Gerência de
Projetos
www.alvarofpinheiro.eti.br
Áreas de resultados
Clientes
Fronteira
Organização
Recursos
Processos
Produtos e Serviços
Atendimento
Necessidades
www.alvarofpinheiro.eti.br
Áreas de resultados – de fora para dentro
Impactos: a mudança da
realidade da clientela
Clientes
Fronteira
Organização
Recursos
Processos
que são gerados pelos...
Produtos e Serviços
Atendimento
Necessidades
são atendidas através de...
www.alvarofpinheiro.eti.br
Cadeia de resultados
Clientes
Fronteira
P
Organização
R
Recursos
Processos
O
J
E
Produtos e Serviços
T
Atendimento O
Necessidades
www.alvarofpinheiro.eti.br
ESTRATÉGIA
É uma definição de um futuro desejado e dos meios
eficazes para alcançá-lo
(Ackoff)
Aonde
A melhor maneira pretendemos
de evoluir de “B” para “A” chegar
(A)
• Programas
• Projetos Portfólio
Onde • Outros trabalhos
estamos?
(B)
www.alvarofpinheiro.eti.br
GESTÃO DE PORTFÓLIO
www.alvarofpinheiro.eti.br
CENÁRIO ATUAL DOS PORTFOLIOS NAS ORGANIZAÇÕES
www.alvarofpinheiro.eti.br
SINAIS DE PROBLEMAS NA GESTÃO DE
PORTFÓLIOS
• Não há um entendimento claro e formal
1 de como os PROJETOS estão conectados à
ESTRATÉGIA da organização.
www.alvarofpinheiro.eti.br
SISTEMÁTICA DE GESTÃO
Assegurar que a coleção de projetos escolhidos esteja alinhada
com os objetivos da organização.
www.alvarofpinheiro.eti.br
DEFINIÇÃO
Portfólio
www.alvarofpinheiro.eti.br
DEFINIÇÃO
Portfólio
www.alvarofpinheiro.eti.br
SEPARANDO CONCEITOS...
www.alvarofpinheiro.eti.br
SUCESSO NO GERENCIAMENTO
Gerenciamento de Gerenciamento de
PROJETOS PORTFÓLIO
www.alvarofpinheiro.eti.br
COMPARANDO
www.alvarofpinheiro.eti.br
CONTEXTO ORGANIZACIONAL
www.alvarofpinheiro.eti.br
VISÃO GERAL DOS PROCESSOS
Processos de Gerenciamento do Portfólio
sim
www.alvarofpinheiro.eti.br
PROCESSOS DE ALINHAMENTO
Identificação do componente
– Número, nome, descrição, etc.
Componentes Objetivos estratégicos apoiados
inventariados e
Benefícios quantitativos e qualitativos
documentados
Recursos requeridos
Cliente
Patrocinador
Stakeholders
Cronograma
Resultados tangíveis
Riscos
www.alvarofpinheiro.eti.br
PROCESSOS DE ALINHAMENTO
www.alvarofpinheiro.eti.br
PROCESSOS DE ALINHAMENTO
www.alvarofpinheiro.eti.br
PROCESSOS DE ALINHAMENTO
Ranqueamento
multicritérios
ROI
Custos
Duração
Riscos
Recursos
Preço
Promoção
www.alvarofpinheiro.eti.br
PROCESSOS DE ALINHAMENTO
Critério 1
Ir em frente
alto
Cuidado
médio Finalizar
baixo
www.alvarofpinheiro.eti.br
PROCESSOS DE ALINHAMENTO
www.alvarofpinheiro.eti.br
PROCESSOS DE ALINHAMENTO
www.alvarofpinheiro.eti.br
PROCESSOS DE ALINHAMENTO
Um método gráfico
O tamanho da bolha reflete
www.alvarofpinheiro.eti.br
PROCESSOS DE ALINHAMENTO
www.alvarofpinheiro.eti.br
MONITORAMENTO E CONTROLE
Processos de Gerenciamento do Portfólio
sim
www.alvarofpinheiro.eti.br
REVISÃO DO PORTFÓLIO E COMUNICAÇÃO
Informações consistentes
e precisas
Visão, Missão e
Plano Estratégico
Planejamento
Revisão do desempenho
Estratégico do Portfólio
Identificação,
categorização,
Operações Gerenciamento avaliação, seleção,
Solicitações de
Programas e
do Portfólio priorização,
balanceamento e
Projetos autorização de
componentes do
Portfólio
Gerenciamento
Revisão do desempenho
de Programas e de Programas e Projetos
Entregas concluídas Projetos
para operações
Processos www.alvarofpinheiro.eti.br
MUDANÇA ESTRATÉGICA
www.alvarofpinheiro.eti.br
CONTEXTO
Processos mais eficazes para gerenciamento de múltiplos projetos
e atividades relacionadas, em um ambiente de um programa
Portfólio
www.alvarofpinheiro.eti.br
DEFINIÇÃO
Portfólio
www.alvarofpinheiro.eti.br
COMPARANDO
www.alvarofpinheiro.eti.br
UM EXEMPLO DO GOVERNO
DE
Visão de Futuro
MINAS
Tornar Minas
Gerais o
melhor Estado
Opções para se viver
Estratégicas
10
31 Objetivos
Programas Estratégico
Estruturadore s
s
www.alvarofpinheiro.eti.br
UM EXEMPLO DO GOVERNO DE MINAS
GP
ORGANIZACIONAL
INFORMATIZAÇÃO
METODOLOGIA
ESTRUTURA
COMPETÊNCIAS
www.alvarofpinheiro.eti.br
UM EXEMPLO DO GOVERNO DE MINAS
Aumento do nível de execução dos projetos
Previsibilidade e controle sobre os resultados
Benefícios
“Consideramos a ferramenta de GP
extremamente oportuna para aumentar a
eficiência da gestão dos gastos do setor
público e ampliar a contribuição deste
setor para o desenvolvimento nacional.”
www.alvarofpinheiro.eti.br
GERENCIAMENTO DE BENEFÍCIOS
Programa Avalia o impacto
organizacional do
Benefícios discretos programa
Avalia as
interdependências dos
Benefícios benefícios
A1...n
Designa responsabilidades
Projeto A pelos benefícios reais
Projeto B
Benefícios
coordenados
Gestão do
Benefício Benefícios do
Projeto C Programa
s Programa
1...n
Projeto D
Projeto E
Benefícios
E1...n
www.alvarofpinheiro.eti.br
GERENCIAMENTO DE PROGRAMAS NO
PLANEJAMENTO ESTRATÉGICO
Visão estratégica
Mobilização Objetivos
Opções estratégicasPortfólio estratégico
estratégicos
Programas
Infraestrutura Entrega de Conclusão
Set up Pre- Set up do Operações
gerencial e técnica benefícios do Transição
Programa Programa regulares
para o Programa incrementais Programa
Projetos
www.alvarofpinheiro.eti.br
CICLO DE VIDA DO PROGRAMA
Perfil de Entrega de
Custos benefícios
Tempo
www.alvarofpinheiro.eti.br
CICLO DE VIDA DO PROGRAMA
Governança do Programa
www.alvarofpinheiro.eti.br
TEMAS DO GERENCIAMENTO DE
PROGRAMAS
• Gerenciamento de
1 benefícios
3 • Governança do programa
www.alvarofpinheiro.eti.br
GERENCIAMENTO DE BENEFÍCIOS
Identificação Análise Planejament Realização Transição
o
Identificar e Derivar e Estabelecer Monitorar Consolidar
qualificar os priorizar plano de componentes benefícios
benefícios de componentes realização de coordenados
negócios benefícios
Mapear Reportar
benefícios no benefícios
Plano do
Programa
www.alvarofpinheiro.eti.br
GERENCIAMENTO DAS PARTES
INTERESSADAS
“São indivíduos ou organizações cujos interesses podem ser
afetados pelos resultados do programa, positiva ou
negativamente”.
Diretor de Programa
Gerente de Programa
Gerentes de Projetos
Patrocinador do Programa
Cliente
Organização executora
Membros de equipes
Escritório de gerenciamento de Programas
Comitê de Governança do Programa
www.alvarofpinheiro.eti.br
GOVERNANÇA DO PROGRAMA
Trata-se do processo de
desenvolver, comunicar,
implementar, monitorar e
assegurar as políticas,
procedimentos, estruturas
organizacionais e práticas
associadas a um programa.
O resultado é um ambiente
para tomada de decisões de
forma eficaz.
www.alvarofpinheiro.eti.br
PROCESSOS DE GERENCIAMENTO
Iniciação Define
DE e autoriza o programa ou um projeto dentro do
PROGRAMAS
programa, gerando a declaração de benefícios do
programa e o plano de realização de benefícios.
www.alvarofpinheiro.eti.br