SlideShare uma empresa Scribd logo
1 de 774
https://www.facebook.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 
Análise 
56% 
Programação 
7% 
Desenho 
27% 
Outros 
10% 
www.alvarofpinheiro.eti.br
Projetos 
Custo de correção dos erros 
Custo 
Incremento de 
100 a 1000 vezes 
Etapas do ciclo de desenvolvimento 
www.alvarofpinheiro.eti.br
Projetos 
Incremento do custo dos erros 
Captura de requisitos 
Análise e Desenho 
Codificação 
Teste Unitário 
Prova de Aceitação 
Manutenção 
1 
2,5 
5 
10 
25 
100 
Boehm, 1988 
www.alvarofpinheiro.eti.br
Fatores de êxito dos projetos 
• Em 1998 o Standish Group levantou 365 companhias e 8000 
projetos e apresentou os resultados em seu informe de 1999 
• Melhora no êxito dos projetos: 16% en 1994 vs. 26% em 
1998 além de redução de custos e tempos 
• Causas: participação dos usuários, suporte executivo, claro 
estabelecimento dos objetivos do negócio, administração de 
projetos, entregas permanentes, requisitos firmes, menor 
tamanho e duração do projeto, etc. 
www.alvarofpinheiro.eti.br
Êxito do projeto segundo seu tamanho 
60 
50 
40 
30 
20 
10 
0 
até $750m 
$750m a $1.5M 
$1.5M a $3M 
$3M a $6M 
$6M a $10M 
+ de $10M 
Porcentagem de 
êxito (%) 
Standish Group, 1999 
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 
O termo Engenharia de Software 
surgiu em uma conferência no 
final da década de 60. A proposta 
inicial era a sistematização do 
desenvolvimento de software, que 
deveria ser tratado com 
engenharia e não como arte. 
www.alvarofpinheiro.eti.br
Engenharia de Software 
Metodologias 
Desta forma, a idéia foi propor a 
utilização de métodos, 
ferramentas e técnicas para a 
produção de software confiável, 
correto e entregue respeitando os 
prazos e custos definidos. 
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 
Dentre os fatores responsáveis 
por alterações nos requisitos 
estão a dinâmica das 
organizações, as alterações nas 
leis e as mudanças pedidas pelos 
stakeholders, que geralmente têm 
dificuldades em definir o escopo 
do futuro software. 
www.alvarofpinheiro.eti.br
Metodologias 
As metodologias ágeis incentivam 
a mudança nos requisitos, pois 
desta forma é possível realmente 
entregar ao cliente o produto que 
ele precisa. 
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 
Para ser realmente considerada 
ágil a metodologia deve aceitar as 
mudanças ao invés de tentar 
prever o futuro. 
O problema é como receber, 
avaliar e responder às mudanças. 
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 
Desta forma existem maiores 
possibilidades de atender aos 
requisitos do cliente, que muitas 
vezes são mutáveis. 
www.alvarofpinheiro.eti.br
Metodologias Ágeis 
Modelos 
Dentre as várias metodologias 
ágeis existentes, as mais 
conhecidas são a eXtreme 
Programming e a Scrum. 
www.alvarofpinheiro.eti.br
Metodologias Ágeis 
X 
Metodologias Tradicionais 
Um exemplo de uma metodologia 
tradicional ou pesada é o modelo 
em Cascata, que é composto 
basicamente por atividades 
seqüenciais de levantamento de 
requisitos, análise, projeto, 
implementação, teste, 
implantação e manutenção. 
www.alvarofpinheiro.eti.br
Metodologias 
Manifesto Ágil 
O resultado foi a criação da 
Aliança Ágil e o estabelecimento 
do “Manifesto Ágil” (Agile 
Manifesto). 
www.alvarofpinheiro.eti.br
Metodologias 
Manifesto Ágil Conceitos 
Indivíduos e interações ao invés de 
processos e ferramentas. 
Software executável ao invés de 
documentação. 
Colaboração do cliente ao invés de 
negociação de contratos. 
Respostas rápidas a mudanças ao 
invés de seguir planos. 
www.alvarofpinheiro.eti.br
Metodologias 
É uma metodologia ágil para 
equipes pequenas e médias que 
desenvolvem software baseado 
em requisitos vagos e que se 
modificam rapidamente. 
www.alvarofpinheiro.eti.br
Modelo Cascata 
O modelo em Cascata dominou a 
forma de desenvolvimento de 
software até o início da década de 
90, apesar das advertências dos 
pesquisadores da área e dos 
desenvolvedores, que 
identificaram os problemas 
gerados ao se adotar esta visão 
seqüencial de tarefas. 
www.alvarofpinheiro.eti.br
Modelo Cascata 
O pesquisador, Tom Gilb, 
desencoraja o uso do modelo em 
Cascata para grandes softwares, 
estimulando o desenvolvimento 
incremental como um modelo que 
apresenta menores riscos e 
maiores possibilidades de 
sucesso. 
www.alvarofpinheiro.eti.br
Processo 
www.alvarofpinheiro.eti.br
O que é um processo 
• Um processo define quem faz o que, 
quando e como para se alcançar 
um objetivo 
www.alvarofpinheiro.eti.br
Processo 
• Servir de guia para todos 
• Especificar quais artefatos devem ser 
gerados e quando devem ser gerados. 
• Direcionar as Atividades individuais e de 
equipes. 
• Oferecer critérios para o gerenciamento 
ISO9000-3 
www.alvarofpinheiro.eti.br
Processo de desenvolvimento 
de um software 
• Elicitação de requisitos 
• Definição da arquitetura 
• Análise 
• Projeto 
• Implementação 
• Testes 
• Implantação 
• Manutenção 
www.alvarofpinheiro.eti.br
Controle dos Processos 
• Arquitetura 
• CMMI 
• Fases 
• Software Process Automation 
• 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 
RUP é um framework de processo centrado na 
arquitetura, baseado em UML, dirigido por casos 
de uso e como tal, precisa ser instanciado de 
acordo com variáveis de tamanho, 
complexidade e domínio do sistema, de acordo 
com a organização com seus níveis de 
processos e experiências e capacidade das 
pessoas 
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 
Outra metodologia ágil que 
apresenta uma comunidade 
grande de usuários. 
www.alvarofpinheiro.eti.br
Scrum 
Objetivo 
Seu objetivo é fornecer um 
processo conveniente para projeto 
e desenvolvimento orientado a 
objeto. 
www.alvarofpinheiro.eti.br
Scrum 
Outros Objetivos 
 Garantir maior flexibilidade e habilidade para 
tratamento de sistemas complexos e simples; 
 Produzir um sistema susceptível a mudanças de 
requisitos iniciais e adicionais durante o projeto: 
 Requerimentos dos clientes; 
 Necessidades do negócio; 
 Pressão relativa ao tempo; 
 Competitividade do mercado; 
 Qualidade; 
 Recursos. 
www.alvarofpinheiro.eti.br
Scrum 
Abordagem 
A Scrum apresenta uma 
abordagem empírica que aplica 
algumas idéias da teoria de 
controle de processos industriais 
para o desenvolvimento de 
softwares, reintroduzindo as 
idéias de flexibilidade, 
adaptabilidade e produtividade. 
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 
A idéia principal da Scrum é que o 
desenvolvimento de softwares envolve 
muitas variáveis técnicas e do 
ambiente, como requisitos, recursos e 
tecnologia, que podem mudar durante 
o processo. Isto torna o processo de 
desenvolvimento imprevisível e 
complexo, requerendo flexibilidade 
para acompanhar as mudanças. 
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 
A Scrum divide o desenvolvimento em 
iterações (sprints) de trinta dias. 
Equipes pequenas, de até dez pessoas, 
são formadas por projetistas, 
programadores, engenheiros e 
gerentes de qualidade. Estas equipes 
trabalham em cima de funcionalidades 
(os requisitos, em outras palavras) 
definidas no início de cada sprint. A 
equipe é responsável pelo 
desenvolvimento desta funcionalidade. 
www.alvarofpinheiro.eti.br
Scrum 
Na Scrum existem reuniões de 
acompanhamento diárias. Nessas 
reuniões, que são preferencialmente 
de curta duração (aproximadamente 
quinze minutos), são discutidos pontos 
como o que foi feito desde a última 
reunião e o que precisa ser feito até a 
próxima. As dificuldades encontradas e 
os fatores de impedimento 
(bottlenecks) são identificados e 
resolvidos. 
www.alvarofpinheiro.eti.br
Scrum 
Introdução 
ORIGEM: 
ADM (Advanced 
Development Methods) 
+ 
VMARK Software 
METODOLOGIA: 
Gerenciamento, manutenção 
e desenvolvimento de softwares: 
simples e pequenos 
grandes e complexos 
PROCESSO: 
Ágil 
Empírico 
Incremental 
BASE P/ SCRUM: 
Técnicas e tools OO 
www.alvarofpinheiro.eti.br
Scrum 
Características 
 Deliverable flexível; 
 Cronograma flexível; 
 Times de desenvolvimento pequenos (por volta de 6); 
 Revisões frequentes; 
 Colaboração; 
 Orientação a Objeto. 
www.alvarofpinheiro.eti.br
Scrum 
Fases 
Planejamento 
• Processo definido 
• 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 
Backlog 
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 
• Sempre apresentam um executável ao final 
Fonte: Mountain Goat Software 
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 
• Apresentação do produto à clientes e/ou diretores de marketing 
– Sugestões de mudanças são incorporadas ao backlog 
• Produto pode até ser lançado no mercado 
• Benefícios: 
– Apresentar resultados concretos ao cliente 
– Integrar e testar uma boa parte do software 
– Motivação da equipe 
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
Qualidade, Gerenciamento e Testes 
 Passos e papéis bem definidos 
 Gerenciamento de riscos 
 Revisões frequentes / diárias 
 Definição de padrões 
 Realização de testes 
 Elaboração de documentação 
 Grupo QA 
Controles 
Backlog 
Release/Melhoria 
Mudanças 
Problemas 
Soluções 
Issues 
Scrum 
www.alvarofpinheiro.eti.br
Conclusões 
 Divisão de responsabilidades 
 papéis bem definidos 
 Processo ágil e flexível 
 inúmeras mudanças no decorrer do 
projeto 
 Foco em controle/gerenciamento 
 minimiza risco 
 maximiza qualidade 
 Times pequenos 
 Colaboração 
 Ausência de práticas de 
Engenharia de Software 
(técnicas e notações) e 
tools 
 Necessidade de 
associação com outras 
metodologias e tools 
(XP, GNATS) 
 Dificuldade na 
implementação de 
mudanças 
Scrum 
www.alvarofpinheiro.eti.br
XP – eXtreme 
Programming 
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Introdução 
Não se pode comparar XP com 
UML, já que UML se presta apenas 
como linguagem de modelagem, 
não define processos e XP define 
processo e não modelagem. 
Conclusão, se você quiser pode 
usar UML com XP. 
www.alvarofpinheiro.eti.br
Introdução 
Entretanto, diferente dos processos 
tradicionais, em XP a modelagem tem 
duas utilidades: 
1. O problema a ser tratado é 
complexo e precisa ser melhor 
entendido. 
2. Uma parte do sistema ficou 
"estável" (sem muitas modificações), e 
pode ser documentada. 
www.alvarofpinheiro.eti.br
Metodologia 
XP – eXtreme Programming 
Dentre as principais diferenças da 
XP em relação às outras 
metodologias estão: 
· Feedback constante; 
· Abordagem incremental; 
· A comunicação entre as pessoas 
é encorajada. 
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
XP – eXtreme Programming 
Conceito 
Em XP a modelagem não deve ser 
usada para definir o design do 
sistema. 
Em XP assume-se que o sistema 
está em constante mudança, ou 
seja, seu design vai mudar, e sua 
modelagem vai estar furada. 
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 
Qual a vantagem em usar XP em 
relação às metodologias tradicionais? 
XP é baseado em sistemas que sofrem 
constante mudança de requisitos, para 
esse tipo de sistema, a vantagem é 
poder mudar os requisitos sem o 
impacto no desenvolvimento caso 
fosse utilizada uma metodologia 
tradicional. 
www.alvarofpinheiro.eti.br
XP – eXtreme Programming 
Primeiro Projeto 
O primeiro projeto a usar XP foi o 
C3, da Chrysler. Após anos de 
fracasso utilizando metodologias 
tradicionais, com o uso da XP o 
projeto ficou pronto em pouco 
mais de um ano. 
www.alvarofpinheiro.eti.br
XP – eXtreme Programming 
Paradigma 
A maioria das regras da XP causa 
polêmica à primeira vista e muitas 
não fazem sentido se aplicadas 
isoladamente. 
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 
As regras, práticas e valores da 
XP proporcionam um agradável 
ambiente de desenvolvimento de 
software para os seus seguidores, 
que são conduzidos por quatro 
valores: comunicação, 
simplicidade, feedback e coragem. 
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 
A XP baseia-se nas 12 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 
São as descrições de um software 
sem a utilização de termos 
técnicos, com o intuito de guiar o 
desenvolvimento do software. 
www.alvarofpinheiro.eti.br
XP – eXtreme Programming 
Prática 4: Projeto Simples 
O programa desenvolvido pelo método 
XP deve ser o mais simples possível e 
satisfazer os requisitos atuais, sem a 
preocupação de requisitos futuros. 
Eventuais requisitos futuros devem ser 
adicionados assim que eles realmente 
existirem. Esta forma de raciocínio se 
opõe ao “implemente para hoje e 
projete para amanhã”. 
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 
É fundamental a participação do cliente 
durante todo o desenvolvimento do 
projeto. O cliente deve estar sempre 
disponível para sanar todas as dúvidas 
de requisitos, evitando atrasos e até 
mesmo construções erradas. Uma idéia 
interessante é manter o cliente como 
parte integrante da equipe de 
desenvolvimento. 
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 
• Criada por Alistair Cockburn 
• http://alistair.cockburn.us/crystal 
• Editor da série Agile Software Development 
da Addison-Wesley. 
www.alvarofpinheiro.eti.br
Feature Driven 
Development 
Desenvolvimento 
orientado a 
funcionalidades 
www.alvarofpinheiro.eti.br
FDD - Características 
 Método ágil e adaptativo; 
 Foco nas fases de desenho e construção 
 Interage com outras metodologias 
 Não exige nenhum processo específico de modelagem 
 Possui desenvolvimento iterativo 
 Enfatiza aspectos de qualidade durante o processo e 
inclui entregas freqüentes e tangíveis 
 Suporta desenvolvimento ágil com rápidas adaptações às 
mudanças de requisitos e necessidades do mercado 
www.alvarofpinheiro.eti.br
FDD - Processos 
 O FDD consiste de 5 processos principais: 
www.alvarofpinheiro.eti.br
FDD – Processos (Cont.) 
 Desenvolver um modelo compreensível (Develop 
an overall model) 
 Construir uma lista de funcionalidades (Build a 
features list) 
 Planejar por funcionalidade (Plan By Feature) 
 Projetar por funcionalidade (Design by feature) 
 Construir por funcionalidade (Build by feature) 
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 
 Modelagem de objetos de domínio (Domain Object Modeling) 
 Exploração e explicação do problema do domínio 
 Resulta em um arcabouço 
 Desenvolver por funcionalidade (Developing by feature) 
 Desenvolvimento e acompanhamento do progresso através de da lista de 
funcionalidades. 
 Proprietários de classes individuais (Individual class ownership) 
 Cada classe possui um único desenvolvedor responsável 
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.) 
Estudo das possibilidades (Feasibility 
study) 
Estudo dos negócios (Business study) 
Iteração do modelo funcional (Functional 
model iteration) 
Iteração de projeto e construção (Design 
and build iteration) 
Implementação final (Final implementation) 
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 
 Usuário sempre envolvido 
 Equipe do DSDM autorizada a tomar decisões 
 Foco na frequente entrega de produtos 
 Adaptação ao negócio é o critério para entregas 
“Construa o produto certo antes de você construí-lo corretamente” 
 Desenvolvimento iterativo e incremental 
 Mudanças são reversíveis utilizando pequenas iterações 
 Requisitos são acompanhados em alto nível 
 Testes integrados ao ciclo de vida 
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 
 Orientado a missões (Misson-driven) 
 Atividades são justificadas através de uma missão, que pode mudar ao 
longo do projeto 
 Baseado em componentes (Component-based) 
 Construir o sistema em pequenos pedaços 
 Iterativo (Iterative) 
 Desenvolvimento em cascata (Waterfall) só funciona em ambientes bem 
definidos e compreendidos. O ASD possui foco em refazer do que fazer 
corretamente já na primeira vez 
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. 
 Tolerância a mudanças (Change-tolerant) 
 As mudanças são freqüentes 
 É sempre melhor estar pronto a adaptá-las do que controlá-las 
 Constante avaliação de quais componentes podem mudar 
 Orientado a riscos (Risk driver) 
 Itens de alto risco são desenvolvidos primeiro 
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 
• O principal bloco de construção é o 
procedimento ou função 
• Conduz o foco de atenção para questões 
referentes ao controle e a decomposição de 
algoritmos maiores em outros menores 
• Modelagem de dados quebrando os objetos em 
tabelas, e criando mecanismos para junção 
posterior 
www.alvarofpinheiro.eti.br
Desenvolvimento de Software 
Objetos 
Visualiza e representa o mundo real 
como um conjunto de objetos que 
interagem entre si para que determinadas 
operações sejam realizadas. 
Motorista Carro 
Parar 
www.alvarofpinheiro.eti.br
Enfoque a Objetos 
• Visão contemporânea adota perspectiva OO 
• Forma de construir software que difere bastante 
dos enfoques tradicionais 
• Programação orientada a objetos é 
freqüentemente referenciada como um “novo” 
paradigma de programação. 
• A palavra paradigma, neste contexto, significa 
um conjunto de teorias, padrões e métodos que 
juntos representam uma forma de organizar o 
conhecimento 
www.alvarofpinheiro.eti.br
Enfoque a Objetos 
• Ela é definida, no mais puro senso, como a 
programação implementada pelo envio de 
mensagens. A solução de um problema consiste 
em identificar os objetos, mensagens e 
seqüências de mensagens para efetuar a solução 
• Um software desenvolvido com essa tecnologia 
guarda muita semelhança com os objetos do 
mundo real 
• Cada objeto do mundo real transforma-se em um 
“objeto” de software 
• Conduz o foco de atenção para a montagem de 
sistemas a partir de componentes 
www.alvarofpinheiro.eti.br
Exemplo 
• Você resolve jantar numa pizzaria 
• Existem vários objetos na pizzaria: 
– Prédio 
– Mesa 
– Garçom, etc.... 
• Cada Objeto tem características que o 
descrevem 
– Mesa redonda ou quadrada 
– Mesa desocupada ou não 
www.alvarofpinheiro.eti.br
Objetos (o domínio da aplicação) 
pilha de entrada 
pilha de saída 
chefe 
docs 
secretária 
doc 
doc 
arquivo 
docs 
www.alvarofpinheiro.eti.br
Representando o mundo real 
• Temos a representação do mundo real 
• A aplicação de Entrada e Saída de 
documentos nas caixas de entrada e saída 
de uma secretária 
• Transformando em representação de objetos 
observamos que eles executam apenas 
trocas de mensagens para se comunicar 
entre si 
www.alvarofpinheiro.eti.br
Objetos (o modelo de objetos) 
Chefe 
Pilha de saída 
Próximo 
Secretária 
Arquivo 
Pilha de 
entrada 
doc 
doc 
doc 
doc 
doc 
Cópia 
Anotação 
Edição 
Próximo 
Instrução 
Interrupção 
Instrução 
Empilhamento Registro/Status 
www.alvarofpinheiro.eti.br
Abstração 
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 
Placa, conserto, 
pagamento, 
etc... 
Km/l, 
manutenção, 
etc... 
Identificação, 
impostos, placa, 
etc... 
Registros 
de oficina 
Registros 
em casa 
Registros 
Detran 
www.alvarofpinheiro.eti.br
Extraindo o essencial... 
• Para processar algo do mundo real em 
computador, temos que extrair as 
características essenciais. Os dados que 
representam estas características são 
maneira como representam tal coisa em um 
sistema 
• Um mesmo objeto, por exemplo um carro 
pode dependendo do contexto ser 
visualizado de formas diferentes. Os dados 
relevantes do carro para uma oficina, são 
diferentes dos dados relevantes para o 
Detran, por exemplo www.alvarofpinheiro.eti.br
Objetos 
Conta corrente 
deposito() 
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 
• Unidade básica de modularização do sistema na 
abordagem OO 
• Um objeto é um ente independente, composto por: 
– atributos, isto é, características ou propriedades que definem o 
objeto 
– comportamento, isto é, um conjunto de ações pré-definidas 
(denominada métodos), através das quais o objeto responderá 
à demanda de processamento por parte de outros objetos 
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 
• Exercício: Defina um computador PC segundo os 
princípios de Orientação a Objetos 
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 
• Reflita alguns minutos como poderíamos montar 
este ambiente em termos de objetos!!!. 
• A seguir um exemplo de um controle de 
Pizzaria (imagine como seria modelar este 
ambiente em OO para calcular uma conta) 
www.alvarofpinheiro.eti.br
Controle de Pizzarias 
• Sistema que informatiza os pedidos de pizza em um 
restaurante 
• Poderia ser modelado pelos objetos, Pedido, Cardápio, 
Pizza, Caixa, Cliente, Garçom, Cozinheiro, etc. 
• O Cardápio teria como responsabilidade, armazenar os 
preços, mantendo-os atualizados 
• Pedido seria responsável pelo processamento dos 
pedidos feitos pelos clientes 
www.alvarofpinheiro.eti.br
Controle de Pizzarias 
• Caixa calcularia a conta a ser paga. 
• Caso houvesse alteração no sistema para atender a 
necessidade de atualização de preços, esta seria 
uma responsabilidade do Cardápio. Os demais 
Objetos não sofreriam qualquer espécie de 
alteração 
• Caso a forma de calcular a conta fosse modificada 
(por exemplo a gorjeta), o Caixa seria refeito. 
• Enfim cada Objeto com sua respectiva função 
www.alvarofpinheiro.eti.br
Funcionário 
Cozinheiro Garçom Serviços 
Cardápio 
Tipo 
Prato 
Preço 
+AlteraPreço 
+GetPreço 
Caixa 
Comanda 
+CalculaConta 
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. 
• Exemplificando, temos que Pessoa é uma 
classe e João é um objeto (instância) da 
classe Pessoa 
• Um carro é uma classe; “meu carro” é um 
objeto 
• Objetos similares são agrupados em classes 
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 
• Se a companhia telefônica mudar seus 
processos, você vai continuar usando o 
aparelho normalmente 
• A implementação de uma classe, pode ser 
alterada sem afetar a sua interface. Se um novo 
telefone for criado, como um telefone digital, a 
implementação foi alterada, mas a interface 
permanece a mesma 
• Reflita associando as idéias com um 
liquidificador 
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 
nc é o número da conta do cliente (do tipo Conta) e enxerga os métodos 
debite, mb2 e mb3. 
Um objeto do tipo Cliente não precisa saber detalhes de implementação 
do método debite para chamá-lo, ele só precisa saber que a operação faz 
um débito na Conta e conhecer a sua assinatura. 
www.alvarofpinheiro.eti.br
class Conta 
{ 
private double saldo; 
private long numero; 
public void credite(double val) 
{ 
saldo = saldo + val; 
} 
public void debite(double val) 
{ 
saldo = saldo - val; 
} 
public void imprimaSaldo() 
{ 
System.Out.Println(“Conta:“+numero+“Saldo:R$“ + saldo); 
} 
} 
www.alvarofpinheiro.eti.br
Generalização 
• Generalização identifica e define coisas 
comuns em uma coleção de objetos 
Moveis 
Cadeiras Mesas Biros 
Quadrada Redonda 
www.alvarofpinheiro.eti.br
Generalização/Especialização 
• Generalização é um processo que ajuda 
a identificar as classes principais do 
sistema. Ao identificar as partes comuns 
dos objetos, a generalização ajuda a 
reduzir as redundâncias, e promove 
reutilização 
• O processo inverso a generalização, e a 
Especialização, que foca a criação de 
classes mais individuais 
www.alvarofpinheiro.eti.br
Herança 
Conta 
ContaCorrente Poupança 
ContaEspecial 
Sobremesa 
Bolo Sorvete 
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 
• A forma de validar herança é usar a 
frase “é um”. 
• Exemplo da bicicleta e o avião, que 
ambos tem rodas, assento, capacidade 
de bagagem. 
• Bicicleta é um avião 
• Avião é uma bicicleta. 
www.alvarofpinheiro.eti.br
Herança 
Figura 
Polígono 
Círculo 
Cor 
posição central 
Num de lados 
vértices 
raio 
www.alvarofpinheiro.eti.br
Herança (Java) 
class Fruta 
{ 
int gramas; 
int cals_por_gramas; 
int total_calorias () 
{ return gramas * cals_por_grama; } 
} 
class Citros extends Fruta 
{ 
void espremer () {/*............*/} 
} 
Todas as cítricas são frutas 
www.alvarofpinheiro.eti.br
Polimorfismo 
• Significa que a mesma operação pode ter 
implementações diferentes. 
• Uma subclasse pode sobrepor a 
implementação de uma operação que ela 
herda de uma superclasse. 
• Somente pode ser usado com a herança 
www.alvarofpinheiro.eti.br
Polimorfismo de Sobreposição 
Fruta 
Descasca() 
Cítrica Não Cítrica 
Descasca() 
www.alvarofpinheiro.eti.br
Polimorfismo 
• O polimorfismo de sobreposição é 
resolvido dinamicamente 
• Ocorre quando uma classe possui um 
método com o mesmo nome e assinatura 
(número, tipo e ordem dos parâmetros) de 
um método da superclasse. Quando isso 
acontece, dizemos que a subclasse 
sobrepõe (overrides) o método da 
superclasse 
www.alvarofpinheiro.eti.br
Polimorfismo 
Ícone 
origem: Ponto 
exibir() 
Botão 
exibir() 
O tratamento do exibir() em 
Botão irá “overridar” 
o exibir() do Ícone, 
Apesar de herdar o método 
dele e poder reutilizá-lo, ele 
implementará de outra 
maneira este método 
www.alvarofpinheiro.eti.br
Polimorfismo 
• No exemplo do Sistema de Controle de Pizzaria 
• Na pizzaria, a mensagem PRINT para Pedido 
produz a conta 
• Enviada para Cardápio, imprime a lista de 
preços 
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); } 
} 
class Citros extends Fruta 
{ 
void espremer () {/*............*/} 
void descascar () {System.Out.Println (descasca uma citro); } 
} 
www.alvarofpinheiro.eti.br
Polimorfismo (Java) 
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
Associação e Composição 
• Objetos são associados quando um usa os 
serviços do outro, e eles existem 
independentemente 
– A pessoa usa o computador 
• A composição ocorre quando um objeto 
esta contido no outro (tem). 
– Lápis - grafite , receptáculo de madeira 
www.alvarofpinheiro.eti.br
Associação – Agregação – Composição 
Associação – Agregação – Composição 
Notação: ------- <>------ <>--------- 
Empresa (todo) <> --------------- Depto. (parte) 
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. 
• É uma coleção de operações usadas para 
especificar um serviço de uma classe ou 
componente. 
www.alvarofpinheiro.eti.br
Interfaces 
– Características 
– Interfaces formalizam o polimorfismo 
– Aumentam o nível de reusabilidade 
– Viabilizam o uso de componentes 
– Reduzem o esforço de evolução da 
aplicação 
www.alvarofpinheiro.eti.br
Interfaces 
– Características 
– Definem um tipo especificando apenas a 
assinatura de seus métodos 
– Não podem ser instanciadas 
– Não possuem atributos e seus métodos não tem 
corpo 
– Classes implementam interfaces, ou seja, 
provêem implementação para os métodos 
especificados em uma interface 
www.alvarofpinheiro.eti.br
Interfaces 
– Utilidades e capacidades 
– Garantir independência entre componentes de 
software 
– Garantir substituição de um serviço sem 
necessidade de alterar quem está usando este 
serviço 
– Usada para generalizar conceitos 
– Em JAVA, interface tem uma conotação muito 
forte e poderosa e “emula”, de forma bastante 
eficiente, herança múltipla 
www.alvarofpinheiro.eti.br
Herança Múltipla 
Máquina Voadora Máquina Flutuadora 
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 
Navio 
interface 
implementação 
Lancha Veleiro etc..... 
Windsurf 
www.alvarofpinheiro.eti.br
interface MaquinaFlutuadora 
{ 
int Navegar (ponto de, ponto para); 
void LancarAncora (); 
void LevantarAncora (double combustivel); 
} 
class Navio implements MaquinaFlutuadora 
class Veleiro implements MaquinaFlutuadora 
class Veleiro extends Navio 
www.alvarofpinheiro.eti.br
class HidroAviao implements Navio, MaquinaVoadora 
{ 
double Tanque_Combust; 
int Rotac_motor; 
int Cabo_ancora; 
void LancarAncora () { Cabo_ancora = 200; } 
void LevantarAncora () { Cabo_ancora = 0; } 
int Navegar (ponto de, ponto para) {/*................*/}; 
void Pousar () 
{ 
for ( ; Rotac_motor > 0; Rotac_motor --); 
LancarAncora (); 
} 
void Decolar (double combustivel) 
{ 
LevantarAncora (); 
Tanque_Combust + = combustivel; 
for ( ; Rotac_motor < 6000; Rotac_motor ++); 
} 
} www.alvarofpinheiro.eti.br
Negócio 
Acesso 
GUI Interface Interface Dados 
CLIENTE BD 
www.alvarofpinheiro.eti.br
Interfaces 
– Estudo de Caso 
– Arquitetura do software para Java 
Interface 
Gráfica 
Camada de 
Aplicação 
Camada de 
Acesso a Dados 
Comandos 
SQL 
insert 
delete 
update 
Interface 
Implementação 
BD 
www.alvarofpinheiro.eti.br
Interface 
Gráfica 
Camada de 
Aplicação 
Camada de 
Acesso a Dados 
Chamada stored 
procedure 
insert 
delete 
update 
Interface 
mantida 
Implementação muda 
BD 
Interfaces 
– Estudo de Caso 
– Arquitetura do software para Java 
www.alvarofpinheiro.eti.br
Abordagem Orientada a Objetos 
INTERFACE 
Dados 
+ 
Operações 
INTERFACE 
Dados 
+ 
Operações 
solicita serviço 
responde a 
solicitação 
www.alvarofpinheiro.eti.br
Abordagem Orientada a Objetos 
• Analogia com o LEGO (montar os componentes) 
– Javabeans, EJB, ActiveX 
• Em Java temos poucos tipos primitivos 
(int, long, short, double, float, char, boolean) 
Tudo são classes. 
Exceções: Linhas de codigo, Guis, Strings, etc... 
• Pacotes de bibliotecas de classes da plataforma Java 
– java.lang - nucleo da linguagem 
– java.awt - interface gráfica 
– java.net - operações na rede 
– java.io - lidar com arquivos 
– java.util - utilitários 
www.alvarofpinheiro.eti.br
Unified 
Modeling 
Language 
(UML) 
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Esquema da evolução 
da 
análise de sistemas 
Métodos orientados a processos 
simples e notação simples 
Métodos orientados a dados 
simples e notação simples 
Métodos orientados a objetos 
Simples e notação complexa 
Processos de desenvolvimento 
1994 
Complexo (RUP) 
Notação complexa 
(UML) 
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 
UML 
Comportamentos 
www.alvarofpinheiro.eti.br
O caminho até a unificação 
• Grady Booch manifiesta a necessidade de unificar critérios 
• James Rumbaugh se une a Booch em outubro de 1994 
• Ambos elaboram a versão 0.8 do Unified Method 
• Em 1995 Ivar Jacobson completa o trio de “amigos” 
www.alvarofpinheiro.eti.br
O caminho até o padrão 
• Se elabora a versão 0.9 do Unified Modeling Language 
• Durante 1996 se realizam sucessivas modificações na base e 
um acréscimo de novos participantes (versões 0.91 e 1.0) 
• Se realiza a versão 1.1 em conjunto com outras importantes 
empresas, que é apresentada a OMG (Object Management 
Group) 
• A OMG adota a UML versão 1.1 como standard no final de 
1997 
• Atualmente se encontra vigente a versão 1.4 e se está gerando 
as bases da versão 2.0, que se espera seja mais estável 
www.alvarofpinheiro.eti.br
UML 
Web - June ´96 UML 0.9 
OOPSLA ´95 Unified Method 0.8 
Other methods Booch method OMT 
OOSE 
public 
feedback 
Final submission to OMG, Sep ‘97 
First submission to OMG, Jan ´97 
UML 1.1 
OMG Acceptance, Nov 1997 
UML 1.3 
UML partners UML 1.0 
UML 1.4 
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 
DiUasgera Cmasse 
DiUagsera Cmasse 
Diagrams 
Use Case 
DiUasgera Cmasse 
DiSaegqraumensce 
Diagrams 
Scenario 
DiSagcreanmarsio 
CDoiallgarbaomrastion 
Diagrams 
State 
DiagSrtaamtes 
DCiaogmrpamonsent 
Diagrams 
Component 
DCiaogmrapmonsent 
DDeiapglroamyms ent 
Diagrams 
Scenario 
DiSagcreanmarsio 
DSiatgarteacmhsart 
Diagrams 
State 
DiagSrtaamtes 
DiagCrlaamsss 
Diagrams 
Models 
www.alvarofpinheiro.eti.br
Desenvolvimento centrado em Modelos 
Necessidade 
dos Usuários 
Processo 1 
Processo de Desenvolvimento de SW 
Modelo 1 
Processo 2 
Processo n 
Modelo 2 
Desenvolver Software é transformar modelos 
SW Novo/ 
Modificado 
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Uso de Modelos 
• Representações simplificadas de coisas reais 
• Usados há muitos anos em outros ramos da 
Engenharia,mais maduras que a nossa 
• Se constroem para melhorar o entendimento 
• 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 
• Se é mais barato construir e corrigir os erros sobre o 
produto, Modelar não tem sentido 
• É muito melhor ver o produto do software do que o 
modelo, porém terminar o SW e ver que ele não atende 
as Necessidades é muito mais caro 
• A Correção é muito mais eficiente nas etapas iniciais do 
Processo, e os modelos servirão de base para antecipá-los 
• É conveniente conhecer vários tipos de Modelos. Distintos 
problemas ou partes deles, requerem distintas técnicas de 
modelagem 
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Estrutural: modela aspectos estáticos do 
software focando nas entidades participantes 
e seus relacionamentos. Os diagramas deste 
conjunto são: diagrama de classes, objetos, 
componentes e implementação. 
Comportamental: modela aspectos dinâmicos 
do software focando, na maioria das vezes, 
como as entidades interagem para prover 
uma determinada funcionalidade para o 
usuário. Os diagramas deste conjunto são: 
diagrama de casos de uso, seqüência, 
colaboração, estados e atividades. 
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Arquitetura dos Modelos 
Visão de 
implementação 
Visão de 
Distribuição 
Visão de 
desenho 
Visão de 
processos 
Visão de 
casos de uso 
Estrutura 
(UC,Classes,Relações) 
Estrutura 
Componentes 
Física (Topologia, 
Implantação,comunicação) 
Escalabilidade 
(threads) 
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Ferramentas da UML 
– O porquê das ferramentas da UML 
– Administração de requisitos com casos de uso 
– Modelos de interação 
– Modelos de comportamento 
– Modelos de desenhos 
www.alvarofpinheiro.eti.br
Ferramentas da UML 
• Modelo de requisito 
• Modelo de estrutura 
• Modelo de interação 
• Modelo de comportamento 
• Ferramentas de desenho 
• Organização de modelo 
• Diagrama de casos de uso 
• Diagrama de clases 
• Diagrama de objetos 
• Diagrama de sequências 
• Diagrama de colaboracionais 
• Diagrama de estados 
• Diagrama de atividades 
• Diagrama de componentes 
• Diagrama de distribuição 
• Diagrama de pacotes 
www.alvarofpinheiro.eti.br
O Porquê destas ferramentas 
Classe Classe 
Levantamento 
Modelo de 
casos de uso 
Modelo de classes 
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 
• Com o advento dos métodos de análise, se supunha 
que os requisitos estavam completamente definidos 
antes da modelagem 
• Com os métodos orientados a objetos começam a 
aparecer técnicas de modelagem de requerimentos, 
baseados na criação de “cenários” 
www.alvarofpinheiro.eti.br
Construção dos Diagramas 
• Passos recomendados: 
• elaborar uma lista de atores e definir suas funções 
• eleger o ator mais representativo do sistema para começar o diagrama 
• esgotar todas necessidades funcionais do ator incorporando casos de uso da 
funcionalidade base 
• para cada caso de uso, buscar os atores que devam colaborar com ele 
• repetir os dois passos anteriores para cada ator 
• incorporar a funcionalidade necessária para exceções e erros 
• fatorizar os casos de uso 
• obter os atores abstratos mediante generalização 
• descrever cada caso de uso a medida que se inclue no modelo 
• validar e verificar o modelo junto com os usuarios 
www.alvarofpinheiro.eti.br
Estratégia de Levantamento 
Erros 
Exceções 
Caminho 
Base 
Funcionalidade 
desejada 
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 
• São empregados para capturar o comportamento 
que se espera do sistema, sem ter de especificar 
como este comportamento é implementado (caixa 
preta); 
• Possibilitam que desenvolvedores obtenham uma 
compreensão comum do sistema , junto aos 
usuários e especialistas do domínio 
www.alvarofpinheiro.eti.br
Ainda sobre Casos de Uso 
• Cada caso de uso descreve uma forma possível 
de utilização do sistema por representar uma 
porção de sua funcionalidade; 
• Um caso de uso é uma descrição de um conjunto 
de seqüência de ações, incluindo variações que 
um sistema executa a partir das interações 
externas ao sistema 
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Casos de Uso 
Usuário 
Emprestar 
título 
Devolver título 
Reservar título 
Ator 
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
www.alvarofpinheiro.eti.br
Cadastrar anamnese 
Atendente de 
1º nível 
<<extend>> 
<<extend>> 
Consultar base de 
conhecimento 
Cadastrar satisfação do 
solicitante 
Abrir o.s. 
Fechar o.s. 
Realizar atendimento de 1º 
nível 
<<uses>> 
Atendente de 
1º nível 
Diagrama de Casos de Uso 
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 1o 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. 
Fluxo de dados excepcional: 
1. Se o solicitante não estiver cadastrado, o sistema não permite que o 
atendimento seja realizado. 
2. Se após a abertura da O.S., o atendente de 1o nível encontrou a solução do 
problema, estende (fechar O.S). 
3. Se o equipamento estiver em manutenção, o sistema não permite que o 
atendimento seja realizado. 
4. Caso o equipamento esteja em garantia e o tipo da O.S. não for de software, o 
atendente de 1o nível registra data, hora, tipo, dados obrigatórios da O.S e 
número do contrato, encaminhando-a para o coordenador de 2o nível. 
www.alvarofpinheiro.eti.br
Diagrama de Classes 
Aluno 
Curso Disciplina 
Professor 
1 
1..* 
0..6 
0..* 
0..* 
1 
1..* 1..* 
matricula-se 
ensina 
pertence a 
Aspectos estáticos 
www.alvarofpinheiro.eti.br
Diagrama de Classes 
• Diagrama utilizado para representar os aspectos 
estáticos do Sistema 
• Exibe um conjunto de classes e seus 
relacionamentos 
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 
: Atendente de 1º 
nível 
: Form 
AbrirOS 
: Solicitante 
Abrir( ) 
Informar Matrícula Usuário( ) 
Finalizar 
Validar Usuário( ) 
Usuário Não Cadastrado 
Aspectos 
Dinâmicos 
www.alvarofpinheiro.eti.br
Diagrama de Seqüência 
• Usados para modelar os aspectos dinâmicos 
do Sistema 
• É um diagrama de interação que enfatiza a 
ordenação de mensagens com relação ao tempo 
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 
Aplicação Geral 
MiddleWare 
System Software 
Software 
Gerencial Atendimento 
Contratos Equipamento 
Manutenção 
Preventiva 
Hardware 
MTS 
Windows NT 
OS Ambiente de 
Conhecimento 
Software Func_Help_Desk Defeito 
Oracle 
Relacionamento 
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; 
 • Um componente é uma parte física e substituível 
do sistema que realiza uma interface ou usa os 
serviços da mesma; 
 • Um componente tipicamente representa o 
empacotamento físico dos elementos lógicos como 
classes, interfaces e colaborações 
www.alvarofpinheiro.eti.br
Componentes 
 Uma interface é uma coleção de operações que são 
usadas para especificar um serviço de uma classe 
ou um componente; 
 O Diagrama de Componentes exibe as organizações 
e dependências entre componentes, com o 
propósito de modelar a visão de implementação dos 
módulos de software executáveis de um sistema; 
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 
 • Componente são as “coisas” que participam na execução de 
um sistema; os nodos são as “coisas” que executam os 
componentes; 
 • Os componentes representam o empacotamento físico dos 
elementos lógicos; os nodos representam a distribuição física 
dos componentes. 
www.alvarofpinheiro.eti.br
Diagrama de Distribuição 
SERVIDOR DE DADOS SERVIDOR DE OBJETOS 
Gerencial.DLL 
Contrato.DLL 
OS.DLL 
Manutenção 
Preventiva.DLL 
Defeito.DLL 
Software.DLL 
Atendimento.DLL 
Equipamento.DLL 
Ambiente de 
Conhecimento 
.DLL 
Func_Help_ 
Desk.DLL 
Hardware.DLL 
WINDOWS NT 
ORACLE 
Associação 
dos componentes 
ao Hardware 
Micros Atendimento 
1º Nível 
HD.EXE 
Micros Coordenação 
HD.EXE 
Micros Atendimento 
2º Nível 
HD.EXE 
Micros Gerência 
HD.EXE 
REDE 
www.alvarofpinheiro.eti.br
Arquitetura 
www.alvarofpinheiro.eti.br
Acabamento 
Instalações 
Estrutura 
Reboco 
Base 
Ambientação 
www.alvarofpinheiro.eti.br
Definição de Arquitetura 
•A Arquitetura é uma série de abstrações que 
permitem lidar com a complexidade das 
soluções 
• A Arquitetura forma a espinha dorsal para se 
construir sistemas de software com sucesso 
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: 
• Uma coleção de componentes,conexões e 
restrições 
• Uma coleção de declarações de stakeholders 
sobre suas necessidades 
• As razões que justifiquem que os 
componentes,suas conexões e restrições 
satisfaçam as necessidades dos stakeholders” 
Barry Boehm 
www.alvarofpinheiro.eti.br
Relaciona-se com..... 
 A organização de sistemas em termos de componentes 
 Estruturas globais de controle 
 Protocolos de Comunicação 
 Sincronização e acesso a dados 
 Alocação de funcionalidades aos elementos de projeto 
 Composição dos elementos de Projeto 
 Distribuição Física 
 Escalabilidade e Desempenho 
 Evolução do Sistema 
 Seleção entre alternativas sobre decisões de projetos 
www.alvarofpinheiro.eti.br
Definição de Arquitetura 
A atividade em Contexto: 
Requisitos de 
Qualidade Arquitetura de HW 
Modificações 
Arquitetura de SW 
Modificações 
Restrições 
Análise de Domínio 
Análise de Requisitos 
Análise de Riscos 
Desenho de 
Arquitetura de 
Software 
Desenho 
de Arquitetura 
de Hardware 
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 
• Estrutura, controle e decomposição 
modular podem ser baseados num 
modelo ou estilo de arquitetura particular 
• Como a maioria dos sistemas são 
heterogêneos, filosofias de vários 
modelos são utilizadas em um projeto 
real de arquitetura 
www.alvarofpinheiro.eti.br
Modelos de Arquitetura 
• O modelo de arquitetura usado afeta 
– Desempenho 
– Robustez 
– Distributividade 
– Manutenibilidade 
• Alguns domínios de aplicação possuem 
modelos específicos 
–Compiladores 
–Sistemas de acesso a redes locais 
www.alvarofpinheiro.eti.br
As 4 Visões 
Arquitetura de Software 
Visão Conceitual 
Visão de Módulo 
Visão de Código 
Visão de 
Execução 
Componentes 
Conectores 
Configuração 
Componentes 
Conectores 
Configuração 
Restrições 
de Execução 
Módulos 
Nova partição de módulos 
Módulos 
Subsistemas 
Camadas 
Construção de Código 
Arquitetura de 
Hardware 
Restrições de Módulos 
Nova partição 
de módulos 
Entidades de 
tempo de 
execução 
Mudanças nas entidades 
www.alvarofpinheiro.eti.br
4 Visões 
Visão Conceitual 
• A funcionalidade do sistema se mapeia através de 
componentes conceituais, e a coordenação 
(fluxo lógico de controle) e a comunicação se resolve 
com conectores 
• É uma visão mais abstrata do domínio da aplicação 
• Integração de Pacotes 
www.alvarofpinheiro.eti.br
Arquitetura:Visão Conceitual -Perguntas 
• Os requisitos funcionais estão sendo atendidos? 
• Como se integram os COTS (pacotes)? 
• Como se incorporam SW/HW específico do 
domínio? 
• Como ela suportará a linha de produtos?. 
• Como minimizar as mudanças de requisitos ou 
domínio? 
www.alvarofpinheiro.eti.br
4 Visões 
Visão de Módulos 
• Aplicar abstração,encapsulamento e interfaces 
• Decomposição do sistema em módulos e divisão 
em camadas 
www.alvarofpinheiro.eti.br
Arquitetura:Visão de Módulos - Perguntas 
• Como se mapeia o produto na plataforma de SW? 
• Que serviços suporta/usa o sistema e exatamente onde? 
• Como se pode testar? 
• Como minimizar dependências e maximizar reuso de 
módulos? 
• Como podemos isolar as mudanças nos COTS 
(commercial of the shelf), na plataforma de SW/HW? 
www.alvarofpinheiro.eti.br
4 Visões 
Visão de Execução 
• Distribuição de funcionalidades em entidades de tempo 
de execução 
• Resolução, Coordenação e Comunicaçã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 
• O código está dividido em muitos arquivos de distintos 
tipos(bibliotecas, executáveis,etc.) 
• Organizado em estruturas de armazenamento 
• Depende da linguagem de programação 
• Em versão e com implementações complexas 
www.alvarofpinheiro.eti.br
Arquitetura:Visão de Código -Perguntas 
• Como se mapeiam as entidades de execução em 
componentes de distribuição, como os módulos são 
mapeados em código origem? 
• Como se constroem os componentes de distribuição? 
• Como se pode administrar versões? 
• Como reduzir tempo e esforço na construção do 
produto e suas melhoras?. 
• Que ferramentas de desenvolvimenro seriam úteis e 
como se suportam a integração e os testes? 
www.alvarofpinheiro.eti.br
Diferentes visões de uma Arquitetura 
• Cada Projeto vai possuir uma visão dominante 
 Por exemplo, frequentemente a visão de módulos 
é dominante 
 As demais visões são moldadas ou adaptadas 
para se enquadrarem na visão dominante 
www.alvarofpinheiro.eti.br
Propriedades 
• Arquiteturas definem componentes, porém omitem 
seus detalhes privados( informações não arquiteturais) 
• Explicita informações de como um componente 
(USA, É USADO, SE RELACIONA COM, INTERAGE COM 
OUTRO COMPONENTE) 
• Comporta várias visões mais nenhuma visão 
isoladamente pode ser considerada uma arquitetura 
• Todo sistema tem Arquitetura 
• O comportamento dos componentes é parte da 
Arquitetura 
www.alvarofpinheiro.eti.br
Propriedades 
Relembrando 
O papel dos componentes, relacionamentos e até 
mesmo o contexto mudam em cada visão 
Exemplos: 
Componentes podem ser : Módulos,Processos,etc. 
Relacionamentos : É-Sub-Módulo, 
Sincroniza-com,etc. 
Contexto: Em tempo de desenvolvimento, 
Em tempo de execução,etc. 
www.alvarofpinheiro.eti.br
Importância do projeto de 
arquitetura 
–Um mau projeto de arquitetura não 
pode ser salvo por uma boa 
implementação 
– Existem modelos e estilos diferentes de 
arquitetura 
–Normalmente, vários modelos são 
utilizados em um mesmo projeto de 
software 
www.alvarofpinheiro.eti.br
Importância da Arquitetura 
• A arquitetura abstrai informações detalhadas do 
sistema mas consegue prover informação suficiente 
para: 
– Análise do sistema como um todo 
– Tomada de Decisões (técnicas ou gerenciais) 
– Redução de Riscos 
• Se o projeto ainda não definiu a Arquitetura do 
Sistema, incluindo sua justificativa, ele não deve 
prosseguir com o desenvolvimento em larga escala 
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 
• Decisões iniciais de projeto 
– São críticas ( infra-estrutura, espinha dorsal do 
sistema) e com impacto em todo ciclo de vida 
• 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) 
• Partir dos requisitos e da lista priorizada dos atributos 
de qualidade 
•Deixar tudo sempre documentado 
•Descrever como os requisitos são cumpridos 
•Revisada por usuários e analisada formalmente 
•Criar incrementalmente o sistema ao redor dela 
•Seguir princípios de desenho 
www.alvarofpinheiro.eti.br
Arquitetura do Comércio Eletrônico 
Camada Apresentação 
(Cliente) 
HTML Browser 
Internet Explorer 
Netscape 
HotJava 
HTTP 
(web) 
Servidor Internet 
Windows 
2000 
Server 
JSERV 
Midware p/ interação 
com Servelets 
SERVLET Camada 
Aplicação 
Acesso 
Dados 
SGDB 
Oracle 
Servlet Interface Java 
Request e Response 
do Browser 
Formata HTML de 
Resposta 
SGBD 
Inteligência 
da 
Aplicação 
Infra-Estrutura 
www.alvarofpinheiro.eti.br
Arquitetura de Software 
• Passos do projeto de arquitetura 
• 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 
– Nesta fase, uma visão MACRO das 
partes componentes do sistema e 
suas respectivas interconexões são 
obtidas 
– Os requisitos do sistema têm que 
estar estabelecidos para que critérios 
de definição de arquitetura sejam 
aplicados 
www.alvarofpinheiro.eti.br
Arquitetura de Software 
• Modelagem de controle 
• Um modelo do relacionamento de controle 
entre as diferentes partes do sistema é 
estabelecido 
• Controle Centralizado 
• Modelo de Retorno de Chamada 
• Modelo de Gerente 
• Controle baseado em Eventos 
• Modelo Broadcasting 
• Modelo de Interrupções 
www.alvarofpinheiro.eti.br
Arquitetura de Software 
• Decomposição modular 
• Os subsistemas identificados são 
decompostos em módulos 
• Nesta fase, ocorre o detalhamento da 
visão macro estabelecida na fase de 
estruturação do sistema 
• Exemplos: 
• Subsistema Caixa 
• Modulo de Recebimento 
• Modulo de Abertura/Fechamento 
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 
• Nomenclatura normalmente usada 
indistintamente por projetistas e 
analistas 
• Engenharia de software moderna usa 
estes termos para designar elementos 
diferentes em um projeto de software 
www.alvarofpinheiro.eti.br
Arquitetura de Software 
• Exemplo de Arquitetura 
Interface 
Gráfica 
Comunicação 
Processamento de 
Pedidos 
Cadastramento de 
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 
Cliente 1 Cliente 2 Cliente N 
Rede (LAN, WAN ou Internet) 
Servidor 1 Servidor 2 Servidor N 
www.alvarofpinheiro.eti.br
Arquitetura de Software 
–Exemplo: Sistema de Vendas de Livros 
–Sistema cliente-servidor 3 camadas 
–Manutenção de livros e autores 
–Processamento de pedidos de livros 
–Exportação de pedidos (automática) 
–Importação de cadastro de clientes 
(automática) 
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) 
Rede Local TCP/IP 
Servidor de 
Dados 
Servidor de 
Aplicação 
GUI 
www.alvarofpinheiro.eti.br
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de Software

Mais conteúdo relacionado

Mais procurados

Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareDanilo Sousa
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Elaine Cecília Gatto
 
Introdução a engenharia de software aula 01
Introdução a engenharia de software   aula 01Introdução a engenharia de software   aula 01
Introdução a engenharia de software aula 01Franklin Matos Correia
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geralsergiocrespo
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareCloves da Rocha
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de ConfiguraçãoWagner Zaparoli
 
Introdução a Gerência de Configuração
Introdução a Gerência de ConfiguraçãoIntrodução a Gerência de Configuração
Introdução a Gerência de ConfiguraçãoIgor Takenami
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de SoftwareLeinylson Fontinele
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareUFPA
 
07 Modelagem de banco de dados: Modelo Físico
07 Modelagem de banco de dados: Modelo Físico07 Modelagem de banco de dados: Modelo Físico
07 Modelagem de banco de dados: Modelo FísicoCentro Paula Souza
 
Introdução à Qualidade de Software
Introdução à Qualidade de SoftwareIntrodução à Qualidade de Software
Introdução à Qualidade de SoftwareCloves da Rocha
 
Arquitetura de Software Na Pratica
Arquitetura de Software Na PraticaArquitetura de Software Na Pratica
Arquitetura de Software Na PraticaAlessandro Kieras
 
O Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareO Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareCamilo de Melo
 

Mais procurados (20)

Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de Software
 
Eng.ª do Software - 2. Requisitos
Eng.ª do Software - 2. RequisitosEng.ª do Software - 2. Requisitos
Eng.ª do Software - 2. Requisitos
 
Aula 2 - Processos de Software
Aula 2 - Processos de SoftwareAula 2 - Processos de Software
Aula 2 - Processos de Software
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1
 
Introdução a engenharia de software aula 01
Introdução a engenharia de software   aula 01Introdução a engenharia de software   aula 01
Introdução a engenharia de software aula 01
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
 
Aula 7 - Modelagem de Software
Aula 7 - Modelagem de SoftwareAula 7 - Modelagem de Software
Aula 7 - Modelagem de Software
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de Configuração
 
Introdução a Gerência de Configuração
Introdução a Gerência de ConfiguraçãoIntrodução a Gerência de Configuração
Introdução a Gerência de Configuração
 
Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de Software
 
07 Modelagem de banco de dados: Modelo Físico
07 Modelagem de banco de dados: Modelo Físico07 Modelagem de banco de dados: Modelo Físico
07 Modelagem de banco de dados: Modelo Físico
 
Introdução à Qualidade de Software
Introdução à Qualidade de SoftwareIntrodução à Qualidade de Software
Introdução à Qualidade de Software
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Arquitetura de Software Na Pratica
Arquitetura de Software Na PraticaArquitetura de Software Na Pratica
Arquitetura de Software Na Pratica
 
O Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareO Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de Software
 

Destaque

Atitudes ágeis nas fases de um projeto de software - 2013
Atitudes ágeis nas fases de um projeto de software - 2013Atitudes ágeis nas fases de um projeto de software - 2013
Atitudes ágeis nas fases de um projeto de software - 2013Gustavo Piccin
 
Plano de projeto de software
Plano de projeto de softwarePlano de projeto de software
Plano de projeto de softwareSigelman Araujo
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentaçãoerysonsi
 
Prototipagem
PrototipagemPrototipagem
Prototipagemjwainer
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentaçãoerysonsi
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De SoftwareFelipe Goulart
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetosGabriel Faustino
 
Gestao de projetos_-_exercicio_1._com_gabarito_doc
Gestao de projetos_-_exercicio_1._com_gabarito_docGestao de projetos_-_exercicio_1._com_gabarito_doc
Gestao de projetos_-_exercicio_1._com_gabarito_docneyfds
 

Destaque (10)

Atitudes ágeis nas fases de um projeto de software - 2013
Atitudes ágeis nas fases de um projeto de software - 2013Atitudes ágeis nas fases de um projeto de software - 2013
Atitudes ágeis nas fases de um projeto de software - 2013
 
Projeto de software
Projeto de softwareProjeto de software
Projeto de software
 
Lista de Eventos
Lista de EventosLista de Eventos
Lista de Eventos
 
Plano de projeto de software
Plano de projeto de softwarePlano de projeto de software
Plano de projeto de software
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentação
 
Prototipagem
PrototipagemPrototipagem
Prototipagem
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentação
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetos
 
Gestao de projetos_-_exercicio_1._com_gabarito_doc
Gestao de projetos_-_exercicio_1._com_gabarito_docGestao de projetos_-_exercicio_1._com_gabarito_doc
Gestao de projetos_-_exercicio_1._com_gabarito_doc
 

Semelhante a Fundamentos da Engenharia de Software

Qualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projetoQualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projetoValquíria Duarte D'Amato
 
Web aula: ágil x tradicional - projetos híbridos
Web aula: ágil x tradicional - projetos híbridosWeb aula: ágil x tradicional - projetos híbridos
Web aula: ágil x tradicional - projetos híbridosProjetos e TI
 
Mini curso testes ágeis
Mini curso testes ágeisMini curso testes ágeis
Mini curso testes ágeisQualister
 
RPA - Portfólio de Serviços iProcess com RPA uiPath
RPA - Portfólio de Serviços iProcess com RPA uiPathRPA - Portfólio de Serviços iProcess com RPA uiPath
RPA - Portfólio de Serviços iProcess com RPA uiPathEduardo Britto
 
FB Consulting & Training
FB Consulting & TrainingFB Consulting & Training
FB Consulting & TrainingLucas Ribeiro
 
RPA - Portfólio de Serviços iProcess
RPA - Portfólio de Serviços iProcessRPA - Portfólio de Serviços iProcess
RPA - Portfólio de Serviços iProcessEduardo Britto
 
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Felipe Nascimento
 
Sebrae Startup Day 2017 - Rio Sul Valley
Sebrae Startup Day 2017 - Rio Sul ValleySebrae Startup Day 2017 - Rio Sul Valley
Sebrae Startup Day 2017 - Rio Sul ValleyJosé A. Rodrigues Nt.
 
Apresentacao pmbok e pmi
Apresentacao pmbok e pmiApresentacao pmbok e pmi
Apresentacao pmbok e pmiLeo Paixão
 
Apresentação De Depoimento De Cio Agco
Apresentação De Depoimento De Cio AgcoApresentação De Depoimento De Cio Agco
Apresentação De Depoimento De Cio AgcoAghatha Maxi Consulting
 
Testes em métodos ágeis
Testes em métodos ágeisTestes em métodos ágeis
Testes em métodos ágeisQualister
 
[GUTS-RS] GUTS Universitário - UNISINOS Campus POA
[GUTS-RS] GUTS Universitário - UNISINOS Campus POA[GUTS-RS] GUTS Universitário - UNISINOS Campus POA
[GUTS-RS] GUTS Universitário - UNISINOS Campus POAGUTS-RS
 
Agile e Testes: Um Relato de Experiência da Indústria
Agile e Testes: Um Relato de Experiência da IndústriaAgile e Testes: Um Relato de Experiência da Indústria
Agile e Testes: Um Relato de Experiência da IndústriaAndré Abe Vicente
 

Semelhante a Fundamentos da Engenharia de Software (20)

Scrum na sua Empresa
Scrum na sua EmpresaScrum na sua Empresa
Scrum na sua Empresa
 
Qualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projetoQualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projeto
 
2PHP_Metodologia
2PHP_Metodologia2PHP_Metodologia
2PHP_Metodologia
 
Web aula: ágil x tradicional - projetos híbridos
Web aula: ágil x tradicional - projetos híbridosWeb aula: ágil x tradicional - projetos híbridos
Web aula: ágil x tradicional - projetos híbridos
 
4º SGTI UNA - Workshop de gerenciamento de projetos utilizando metodologias á...
4º SGTI UNA - Workshop de gerenciamento de projetos utilizando metodologias á...4º SGTI UNA - Workshop de gerenciamento de projetos utilizando metodologias á...
4º SGTI UNA - Workshop de gerenciamento de projetos utilizando metodologias á...
 
Entregando Software com Valor
Entregando Software com ValorEntregando Software com Valor
Entregando Software com Valor
 
Mini curso testes ágeis
Mini curso testes ágeisMini curso testes ágeis
Mini curso testes ágeis
 
Mini Curso Testes Ageis
Mini Curso Testes AgeisMini Curso Testes Ageis
Mini Curso Testes Ageis
 
RPA - Portfólio de Serviços iProcess com RPA uiPath
RPA - Portfólio de Serviços iProcess com RPA uiPathRPA - Portfólio de Serviços iProcess com RPA uiPath
RPA - Portfólio de Serviços iProcess com RPA uiPath
 
Introdução ao RUP
Introdução ao RUPIntrodução ao RUP
Introdução ao RUP
 
FB Consulting & Training
FB Consulting & TrainingFB Consulting & Training
FB Consulting & Training
 
RPA - Portfólio de Serviços iProcess
RPA - Portfólio de Serviços iProcessRPA - Portfólio de Serviços iProcess
RPA - Portfólio de Serviços iProcess
 
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
 
Sebrae Startup Day 2017 - Rio Sul Valley
Sebrae Startup Day 2017 - Rio Sul ValleySebrae Startup Day 2017 - Rio Sul Valley
Sebrae Startup Day 2017 - Rio Sul Valley
 
Apresentacao pmbok e pmi
Apresentacao pmbok e pmiApresentacao pmbok e pmi
Apresentacao pmbok e pmi
 
Apresentação De Depoimento De Cio Agco
Apresentação De Depoimento De Cio AgcoApresentação De Depoimento De Cio Agco
Apresentação De Depoimento De Cio Agco
 
Testes em métodos ágeis
Testes em métodos ágeisTestes em métodos ágeis
Testes em métodos ágeis
 
PDP FINAL.ppt
PDP  FINAL.pptPDP  FINAL.ppt
PDP FINAL.ppt
 
[GUTS-RS] GUTS Universitário - UNISINOS Campus POA
[GUTS-RS] GUTS Universitário - UNISINOS Campus POA[GUTS-RS] GUTS Universitário - UNISINOS Campus POA
[GUTS-RS] GUTS Universitário - UNISINOS Campus POA
 
Agile e Testes: Um Relato de Experiência da Indústria
Agile e Testes: Um Relato de Experiência da IndústriaAgile e Testes: Um Relato de Experiência da Indústria
Agile e Testes: Um Relato de Experiência da Indústria
 

Mais de Álvaro Farias Pinheiro

Introdução à Sistemas de Informação
Introdução à Sistemas de InformaçãoIntrodução à Sistemas de Informação
Introdução à Sistemas de InformaçãoÁlvaro Farias Pinheiro
 
Medida de Esforço de Software com Análise de Ponto de Função
Medida de Esforço de Software com Análise de Ponto de FunçãoMedida de Esforço de Software com Análise de Ponto de Função
Medida de Esforço de Software com Análise de Ponto de FunçãoÁlvaro Farias Pinheiro
 
Fundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de SoftwareFundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de SoftwareÁlvaro Farias Pinheiro
 
Fundamentos de Banco de Dados Relacionais
Fundamentos de Banco de Dados RelacionaisFundamentos de Banco de Dados Relacionais
Fundamentos de Banco de Dados RelacionaisÁlvaro Farias Pinheiro
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareÁlvaro Farias Pinheiro
 

Mais de Álvaro Farias Pinheiro (18)

Data science
Data scienceData science
Data science
 
IA
IAIA
IA
 
Autômatos
AutômatosAutômatos
Autômatos
 
Paradigma Orientado a Objetos
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
Paradigma Orientado a Objetos
 
Padrões de Projeto (GoF)
Padrões de Projeto (GoF)Padrões de Projeto (GoF)
Padrões de Projeto (GoF)
 
Linguagem de Modelagem Unificada (UML)
Linguagem de Modelagem Unificada (UML)Linguagem de Modelagem Unificada (UML)
Linguagem de Modelagem Unificada (UML)
 
Introdução a Tecnologias Web
Introdução a Tecnologias WebIntrodução a Tecnologias Web
Introdução a Tecnologias Web
 
Introdução ao HTML
Introdução ao HTMLIntrodução ao HTML
Introdução ao HTML
 
Introdução à Sistemas de Informação
Introdução à Sistemas de InformaçãoIntrodução à Sistemas de Informação
Introdução à Sistemas de Informação
 
Análise e Modelagem com UML
Análise e Modelagem com UMLAnálise e Modelagem com UML
Análise e Modelagem com UML
 
Eficiência Energética
Eficiência EnergéticaEficiência Energética
Eficiência Energética
 
Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
 
Medida de Esforço de Software com Análise de Ponto de Função
Medida de Esforço de Software com Análise de Ponto de FunçãoMedida de Esforço de Software com Análise de Ponto de Função
Medida de Esforço de Software com Análise de Ponto de Função
 
Fundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de SoftwareFundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de Software
 
Fundamentos de Banco de Dados Relacionais
Fundamentos de Banco de Dados RelacionaisFundamentos de Banco de Dados Relacionais
Fundamentos de Banco de Dados Relacionais
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
 
Redes Sociais
Redes SociaisRedes Sociais
Redes Sociais
 

Último

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 

Último (8)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Fundamentos da Engenharia de Software

  • 4. Projetos Origem dos erros nos softwares Análise 56% Programação 7% Desenho 27% Outros 10% www.alvarofpinheiro.eti.br
  • 5. Projetos Custo de correção dos erros Custo Incremento de 100 a 1000 vezes Etapas do ciclo de desenvolvimento www.alvarofpinheiro.eti.br
  • 6. Projetos Incremento do custo dos erros Captura de requisitos Análise e Desenho Codificação Teste Unitário Prova de Aceitação Manutenção 1 2,5 5 10 25 100 Boehm, 1988 www.alvarofpinheiro.eti.br
  • 7. Fatores de êxito dos projetos • Em 1998 o Standish Group levantou 365 companhias e 8000 projetos e apresentou os resultados em seu informe de 1999 • Melhora no êxito dos projetos: 16% en 1994 vs. 26% em 1998 além de redução de custos e tempos • Causas: participação dos usuários, suporte executivo, claro estabelecimento dos objetivos do negócio, administração de projetos, entregas permanentes, requisitos firmes, menor tamanho e duração do projeto, etc. www.alvarofpinheiro.eti.br
  • 8. Êxito do projeto segundo seu tamanho 60 50 40 30 20 10 0 até $750m $750m a $1.5M $1.5M a $3M $3M a $6M $6M a $10M + de $10M Porcentagem de êxito (%) Standish Group, 1999 Tamanho do projeto ($) www.alvarofpinheiro.eti.br
  • 9. 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
  • 38. Engenharia de Requisitos www.alvarofpinheiro.eti.br
  • 39.
  • 79. Metodologias Modelos Processos Técnicas www.alvarofpinheiro.eti.br
  • 81. Engenharia de Software Metodologias O termo Engenharia de Software surgiu em uma conferência no final da década de 60. A proposta inicial era a sistematização do desenvolvimento de software, que deveria ser tratado com engenharia e não como arte. www.alvarofpinheiro.eti.br
  • 82. Engenharia de Software Metodologias Desta forma, a idéia foi propor a utilização de métodos, ferramentas e técnicas para a produção de software confiável, correto e entregue respeitando os prazos e custos definidos. www.alvarofpinheiro.eti.br
  • 83. 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
  • 84. Metodologias Dentre os fatores responsáveis por alterações nos requisitos estão a dinâmica das organizações, as alterações nas leis e as mudanças pedidas pelos stakeholders, que geralmente têm dificuldades em definir o escopo do futuro software. www.alvarofpinheiro.eti.br
  • 85. Metodologias As metodologias ágeis incentivam a mudança nos requisitos, pois desta forma é possível realmente entregar ao cliente o produto que ele precisa. www.alvarofpinheiro.eti.br
  • 86. 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
  • 87. Metodologias Ágeis Conceito Para ser realmente considerada ágil a metodologia deve aceitar as mudanças ao invés de tentar prever o futuro. O problema é como receber, avaliar e responder às mudanças. www.alvarofpinheiro.eti.br
  • 88. 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
  • 89. Metodologias Ágeis Introdução Desta forma existem maiores possibilidades de atender aos requisitos do cliente, que muitas vezes são mutáveis. www.alvarofpinheiro.eti.br
  • 90. Metodologias Ágeis Modelos Dentre as várias metodologias ágeis existentes, as mais conhecidas são a eXtreme Programming e a Scrum. www.alvarofpinheiro.eti.br
  • 91. Metodologias Ágeis X Metodologias Tradicionais Um exemplo de uma metodologia tradicional ou pesada é o modelo em Cascata, que é composto basicamente por atividades seqüenciais de levantamento de requisitos, análise, projeto, implementação, teste, implantação e manutenção. www.alvarofpinheiro.eti.br
  • 92. Metodologias Manifesto Ágil O resultado foi a criação da Aliança Ágil e o estabelecimento do “Manifesto Ágil” (Agile Manifesto). www.alvarofpinheiro.eti.br
  • 93. Metodologias Manifesto Ágil Conceitos Indivíduos e interações ao invés de processos e ferramentas. Software executável ao invés de documentação. Colaboração do cliente ao invés de negociação de contratos. Respostas rápidas a mudanças ao invés de seguir planos. www.alvarofpinheiro.eti.br
  • 94. Metodologias É uma metodologia ágil para equipes pequenas e médias que desenvolvem software baseado em requisitos vagos e que se modificam rapidamente. www.alvarofpinheiro.eti.br
  • 95. Modelo Cascata O modelo em Cascata dominou a forma de desenvolvimento de software até o início da década de 90, apesar das advertências dos pesquisadores da área e dos desenvolvedores, que identificaram os problemas gerados ao se adotar esta visão seqüencial de tarefas. www.alvarofpinheiro.eti.br
  • 96. Modelo Cascata O pesquisador, Tom Gilb, desencoraja o uso do modelo em Cascata para grandes softwares, estimulando o desenvolvimento incremental como um modelo que apresenta menores riscos e maiores possibilidades de sucesso. www.alvarofpinheiro.eti.br
  • 98. O que é um processo • Um processo define quem faz o que, quando e como para se alcançar um objetivo www.alvarofpinheiro.eti.br
  • 99. Processo • Servir de guia para todos • Especificar quais artefatos devem ser gerados e quando devem ser gerados. • Direcionar as Atividades individuais e de equipes. • Oferecer critérios para o gerenciamento ISO9000-3 www.alvarofpinheiro.eti.br
  • 100. Processo de desenvolvimento de um software • Elicitação de requisitos • Definição da arquitetura • Análise • Projeto • Implementação • Testes • Implantação • Manutenção www.alvarofpinheiro.eti.br
  • 101. Controle dos Processos • Arquitetura • CMMI • Fases • Software Process Automation • Fabrica de Software www.alvarofpinheiro.eti.br
  • 103. Rational Unified Process (RUP) www.alvarofpinheiro.eti.br
  • 105. RUP RUP é um framework de processo centrado na arquitetura, baseado em UML, dirigido por casos de uso e como tal, precisa ser instanciado de acordo com variáveis de tamanho, complexidade e domínio do sistema, de acordo com a organização com seus níveis de processos e experiências e capacidade das pessoas www.alvarofpinheiro.eti.br
  • 180. Scrum Fases • Planejamento • Sprints – Ciclos • Encerramento www.alvarofpinheiro.eti.br
  • 181. Scrum Outra metodologia ágil que apresenta uma comunidade grande de usuários. www.alvarofpinheiro.eti.br
  • 182. Scrum Objetivo Seu objetivo é fornecer um processo conveniente para projeto e desenvolvimento orientado a objeto. www.alvarofpinheiro.eti.br
  • 183. Scrum Outros Objetivos  Garantir maior flexibilidade e habilidade para tratamento de sistemas complexos e simples;  Produzir um sistema susceptível a mudanças de requisitos iniciais e adicionais durante o projeto:  Requerimentos dos clientes;  Necessidades do negócio;  Pressão relativa ao tempo;  Competitividade do mercado;  Qualidade;  Recursos. www.alvarofpinheiro.eti.br
  • 184. Scrum Abordagem A Scrum apresenta uma abordagem empírica que aplica algumas idéias da teoria de controle de processos industriais para o desenvolvimento de softwares, reintroduzindo as idéias de flexibilidade, adaptabilidade e produtividade. www.alvarofpinheiro.eti.br
  • 185. 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
  • 186. Scrum Idéia A idéia principal da Scrum é que o desenvolvimento de softwares envolve muitas variáveis técnicas e do ambiente, como requisitos, recursos e tecnologia, que podem mudar durante o processo. Isto torna o processo de desenvolvimento imprevisível e complexo, requerendo flexibilidade para acompanhar as mudanças. www.alvarofpinheiro.eti.br
  • 187. 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
  • 188. Scrum A Scrum divide o desenvolvimento em iterações (sprints) de trinta dias. Equipes pequenas, de até dez pessoas, são formadas por projetistas, programadores, engenheiros e gerentes de qualidade. Estas equipes trabalham em cima de funcionalidades (os requisitos, em outras palavras) definidas no início de cada sprint. A equipe é responsável pelo desenvolvimento desta funcionalidade. www.alvarofpinheiro.eti.br
  • 189. Scrum Na Scrum existem reuniões de acompanhamento diárias. Nessas reuniões, que são preferencialmente de curta duração (aproximadamente quinze minutos), são discutidos pontos como o que foi feito desde a última reunião e o que precisa ser feito até a próxima. As dificuldades encontradas e os fatores de impedimento (bottlenecks) são identificados e resolvidos. www.alvarofpinheiro.eti.br
  • 190. Scrum Introdução ORIGEM: ADM (Advanced Development Methods) + VMARK Software METODOLOGIA: Gerenciamento, manutenção e desenvolvimento de softwares: simples e pequenos grandes e complexos PROCESSO: Ágil Empírico Incremental BASE P/ SCRUM: Técnicas e tools OO www.alvarofpinheiro.eti.br
  • 191. Scrum Características  Deliverable flexível;  Cronograma flexível;  Times de desenvolvimento pequenos (por volta de 6);  Revisões frequentes;  Colaboração;  Orientação a Objeto. www.alvarofpinheiro.eti.br
  • 192. Scrum Fases Planejamento • Processo definido • 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 Backlog www.alvarofpinheiro.eti.br
  • 193. 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 • Sempre apresentam um executável ao final Fonte: Mountain Goat Software www.alvarofpinheiro.eti.br
  • 194. 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
  • 195. Scrum Fases – Sprint Revisão • Deve obedecer à data de entrega – Permitida a diminuição de funcionalidades • Apresentação do produto à clientes e/ou diretores de marketing – Sugestões de mudanças são incorporadas ao backlog • Produto pode até ser lançado no mercado • Benefícios: – Apresentar resultados concretos ao cliente – Integrar e testar uma boa parte do software – Motivação da equipe www.alvarofpinheiro.eti.br
  • 196. 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
  • 197. Qualidade, Gerenciamento e Testes  Passos e papéis bem definidos  Gerenciamento de riscos  Revisões frequentes / diárias  Definição de padrões  Realização de testes  Elaboração de documentação  Grupo QA Controles Backlog Release/Melhoria Mudanças Problemas Soluções Issues Scrum www.alvarofpinheiro.eti.br
  • 198. Conclusões  Divisão de responsabilidades  papéis bem definidos  Processo ágil e flexível  inúmeras mudanças no decorrer do projeto  Foco em controle/gerenciamento  minimiza risco  maximiza qualidade  Times pequenos  Colaboração  Ausência de práticas de Engenharia de Software (técnicas e notações) e tools  Necessidade de associação com outras metodologias e tools (XP, GNATS)  Dificuldade na implementação de mudanças Scrum www.alvarofpinheiro.eti.br
  • 199. XP – eXtreme Programming www.alvarofpinheiro.eti.br
  • 201. Introdução Não se pode comparar XP com UML, já que UML se presta apenas como linguagem de modelagem, não define processos e XP define processo e não modelagem. Conclusão, se você quiser pode usar UML com XP. www.alvarofpinheiro.eti.br
  • 202. Introdução Entretanto, diferente dos processos tradicionais, em XP a modelagem tem duas utilidades: 1. O problema a ser tratado é complexo e precisa ser melhor entendido. 2. Uma parte do sistema ficou "estável" (sem muitas modificações), e pode ser documentada. www.alvarofpinheiro.eti.br
  • 203. Metodologia XP – eXtreme Programming Dentre as principais diferenças da XP em relação às outras metodologias estão: · Feedback constante; · Abordagem incremental; · A comunicação entre as pessoas é encorajada. www.alvarofpinheiro.eti.br
  • 205. XP – eXtreme Programming Conceito Em XP a modelagem não deve ser usada para definir o design do sistema. Em XP assume-se que o sistema está em constante mudança, ou seja, seu design vai mudar, e sua modelagem vai estar furada. www.alvarofpinheiro.eti.br
  • 206. 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
  • 207. XP – eXtreme Programming Vantagem Qual a vantagem em usar XP em relação às metodologias tradicionais? XP é baseado em sistemas que sofrem constante mudança de requisitos, para esse tipo de sistema, a vantagem é poder mudar os requisitos sem o impacto no desenvolvimento caso fosse utilizada uma metodologia tradicional. www.alvarofpinheiro.eti.br
  • 208. XP – eXtreme Programming Primeiro Projeto O primeiro projeto a usar XP foi o C3, da Chrysler. Após anos de fracasso utilizando metodologias tradicionais, com o uso da XP o projeto ficou pronto em pouco mais de um ano. www.alvarofpinheiro.eti.br
  • 209. XP – eXtreme Programming Paradigma A maioria das regras da XP causa polêmica à primeira vista e muitas não fazem sentido se aplicadas isoladamente. www.alvarofpinheiro.eti.br
  • 210. 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
  • 211. XP – eXtreme Programming Paradigma As regras, práticas e valores da XP proporcionam um agradável ambiente de desenvolvimento de software para os seus seguidores, que são conduzidos por quatro valores: comunicação, simplicidade, feedback e coragem. www.alvarofpinheiro.eti.br
  • 212. 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
  • 213. 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
  • 214. 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
  • 215. 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
  • 216. XP – eXtreme Programming Práticas A XP baseia-se nas 12 práticas. www.alvarofpinheiro.eti.br
  • 217. 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
  • 218. 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
  • 219. 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
  • 220. XP – eXtreme Programming Prática 3: Metáfora São as descrições de um software sem a utilização de termos técnicos, com o intuito de guiar o desenvolvimento do software. www.alvarofpinheiro.eti.br
  • 221. XP – eXtreme Programming Prática 4: Projeto Simples O programa desenvolvido pelo método XP deve ser o mais simples possível e satisfazer os requisitos atuais, sem a preocupação de requisitos futuros. Eventuais requisitos futuros devem ser adicionados assim que eles realmente existirem. Esta forma de raciocínio se opõe ao “implemente para hoje e projete para amanhã”. www.alvarofpinheiro.eti.br
  • 222. 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
  • 223. 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
  • 224. 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
  • 225. 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
  • 226. 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
  • 227. 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
  • 228. XP – eXtreme Programming Prática 11: Cliente Presente É fundamental a participação do cliente durante todo o desenvolvimento do projeto. O cliente deve estar sempre disponível para sanar todas as dúvidas de requisitos, evitando atrasos e até mesmo construções erradas. Uma idéia interessante é manter o cliente como parte integrante da equipe de desenvolvimento. www.alvarofpinheiro.eti.br
  • 229. 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
  • 239. Crystal Processo de Desenvolvimento de Software www.alvarofpinheiro.eti.br
  • 240. • 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
  • 241. • 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
  • 242. • 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
  • 243. • 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
  • 244. • 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
  • 245. • 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
  • 246. A família Crystal de Métodos • Criada por Alistair Cockburn • http://alistair.cockburn.us/crystal • Editor da série Agile Software Development da Addison-Wesley. www.alvarofpinheiro.eti.br
  • 247. Feature Driven Development Desenvolvimento orientado a funcionalidades www.alvarofpinheiro.eti.br
  • 248. FDD - Características  Método ágil e adaptativo;  Foco nas fases de desenho e construção  Interage com outras metodologias  Não exige nenhum processo específico de modelagem  Possui desenvolvimento iterativo  Enfatiza aspectos de qualidade durante o processo e inclui entregas freqüentes e tangíveis  Suporta desenvolvimento ágil com rápidas adaptações às mudanças de requisitos e necessidades do mercado www.alvarofpinheiro.eti.br
  • 249. FDD - Processos  O FDD consiste de 5 processos principais: www.alvarofpinheiro.eti.br
  • 250. FDD – Processos (Cont.)  Desenvolver um modelo compreensível (Develop an overall model)  Construir uma lista de funcionalidades (Build a features list)  Planejar por funcionalidade (Plan By Feature)  Projetar por funcionalidade (Design by feature)  Construir por funcionalidade (Build by feature) www.alvarofpinheiro.eti.br
  • 251. 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
  • 252. 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
  • 253. FDD - Boas Práticas  Modelagem de objetos de domínio (Domain Object Modeling)  Exploração e explicação do problema do domínio  Resulta em um arcabouço  Desenvolver por funcionalidade (Developing by feature)  Desenvolvimento e acompanhamento do progresso através de da lista de funcionalidades.  Proprietários de classes individuais (Individual class ownership)  Cada classe possui um único desenvolvedor responsável www.alvarofpinheiro.eti.br
  • 254. 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
  • 255. Dynamic Systems Development Method (DSDM) Método dinâmico de desenvolvimento de sistemas www.alvarofpinheiro.eti.br
  • 256. 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
  • 257. DSDM - Fases  O DSDM consiste de 5 fases: Feasibility Review Study www.alvarofpinheiro.eti.br
  • 258. DSDM – Fases (Cont.) Estudo das possibilidades (Feasibility study) Estudo dos negócios (Business study) Iteração do modelo funcional (Functional model iteration) Iteração de projeto e construção (Design and build iteration) Implementação final (Final implementation) www.alvarofpinheiro.eti.br
  • 259. 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
  • 260. DSDM - Práticas  Usuário sempre envolvido  Equipe do DSDM autorizada a tomar decisões  Foco na frequente entrega de produtos  Adaptação ao negócio é o critério para entregas “Construa o produto certo antes de você construí-lo corretamente”  Desenvolvimento iterativo e incremental  Mudanças são reversíveis utilizando pequenas iterações  Requisitos são acompanhados em alto nível  Testes integrados ao ciclo de vida www.alvarofpinheiro.eti.br
  • 261. Adaptive Software Development Desenvolvimento Adaptável de Software www.alvarofpinheiro.eti.br
  • 262. 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
  • 263. ASD - Fases  O ASD possui ciclos de 3 fases: www.alvarofpinheiro.eti.br
  • 264. 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
  • 265. ASD - Propriedades  Orientado a missões (Misson-driven)  Atividades são justificadas através de uma missão, que pode mudar ao longo do projeto  Baseado em componentes (Component-based)  Construir o sistema em pequenos pedaços  Iterativo (Iterative)  Desenvolvimento em cascata (Waterfall) só funciona em ambientes bem definidos e compreendidos. O ASD possui foco em refazer do que fazer corretamente já na primeira vez www.alvarofpinheiro.eti.br
  • 266. ASD – Propriedades (Cont.)  Prazos pré-fixados (Time-boxed)  Força os participantes do projeto a definir severamente decisões do projeto logo cedo.  Tolerância a mudanças (Change-tolerant)  As mudanças são freqüentes  É sempre melhor estar pronto a adaptá-las do que controlá-las  Constante avaliação de quais componentes podem mudar  Orientado a riscos (Risk driver)  Itens de alto risco são desenvolvidos primeiro www.alvarofpinheiro.eti.br
  • 267. 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
  • 268. Paradigma Orientada a Objetos www.alvarofpinheiro.eti.br
  • 269. Desenvolvimento de Software Programas Processos Dados www.alvarofpinheiro.eti.br
  • 270. Enfoque a Programas • Visão tradicional usa perspectiva de algoritmo • O principal bloco de construção é o procedimento ou função • Conduz o foco de atenção para questões referentes ao controle e a decomposição de algoritmos maiores em outros menores • Modelagem de dados quebrando os objetos em tabelas, e criando mecanismos para junção posterior www.alvarofpinheiro.eti.br
  • 271. Desenvolvimento de Software Objetos Visualiza e representa o mundo real como um conjunto de objetos que interagem entre si para que determinadas operações sejam realizadas. Motorista Carro Parar www.alvarofpinheiro.eti.br
  • 272. Enfoque a Objetos • Visão contemporânea adota perspectiva OO • Forma de construir software que difere bastante dos enfoques tradicionais • Programação orientada a objetos é freqüentemente referenciada como um “novo” paradigma de programação. • A palavra paradigma, neste contexto, significa um conjunto de teorias, padrões e métodos que juntos representam uma forma de organizar o conhecimento www.alvarofpinheiro.eti.br
  • 273. Enfoque a Objetos • Ela é definida, no mais puro senso, como a programação implementada pelo envio de mensagens. A solução de um problema consiste em identificar os objetos, mensagens e seqüências de mensagens para efetuar a solução • Um software desenvolvido com essa tecnologia guarda muita semelhança com os objetos do mundo real • Cada objeto do mundo real transforma-se em um “objeto” de software • Conduz o foco de atenção para a montagem de sistemas a partir de componentes www.alvarofpinheiro.eti.br
  • 274. Exemplo • Você resolve jantar numa pizzaria • Existem vários objetos na pizzaria: – Prédio – Mesa – Garçom, etc.... • Cada Objeto tem características que o descrevem – Mesa redonda ou quadrada – Mesa desocupada ou não www.alvarofpinheiro.eti.br
  • 275. Objetos (o domínio da aplicação) pilha de entrada pilha de saída chefe docs secretária doc doc arquivo docs www.alvarofpinheiro.eti.br
  • 276. Representando o mundo real • Temos a representação do mundo real • A aplicação de Entrada e Saída de documentos nas caixas de entrada e saída de uma secretária • Transformando em representação de objetos observamos que eles executam apenas trocas de mensagens para se comunicar entre si www.alvarofpinheiro.eti.br
  • 277. Objetos (o modelo de objetos) Chefe Pilha de saída Próximo Secretária Arquivo Pilha de entrada doc doc doc doc doc Cópia Anotação Edição Próximo Instrução Interrupção Instrução Empilhamento Registro/Status www.alvarofpinheiro.eti.br
  • 278. Abstração eliminação do irrelevante e amplificação do essencial www.alvarofpinheiro.eti.br
  • 279. 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
  • 280. Três abstrações de um carro Placa, conserto, pagamento, etc... Km/l, manutenção, etc... Identificação, impostos, placa, etc... Registros de oficina Registros em casa Registros Detran www.alvarofpinheiro.eti.br
  • 281. Extraindo o essencial... • Para processar algo do mundo real em computador, temos que extrair as características essenciais. Os dados que representam estas características são maneira como representam tal coisa em um sistema • Um mesmo objeto, por exemplo um carro pode dependendo do contexto ser visualizado de formas diferentes. Os dados relevantes do carro para uma oficina, são diferentes dos dados relevantes para o Detran, por exemplo www.alvarofpinheiro.eti.br
  • 282. Objetos Conta corrente deposito() saldo www.alvarofpinheiro.eti.br
  • 283. Objetos • Um objeto é qualquer coisa, real ou abstrata, sobre a qual armazenamos dados e operações que manipulam tais dados • Unidade básica de modularização do sistema na abordagem OO • Um objeto é um ente independente, composto por: – atributos, isto é, características ou propriedades que definem o objeto – comportamento, isto é, um conjunto de ações pré-definidas (denominada métodos), através das quais o objeto responderá à demanda de processamento por parte de outros objetos www.alvarofpinheiro.eti.br
  • 284. Objetos • Validação de um Objeto – É aplicável ao contexto ? – Existe independente de outros Objetos ? – Possui atributos e operações ? – Exemplos • Cor • Exercício: Defina um computador PC segundo os princípios de Orientação a Objetos www.alvarofpinheiro.eti.br
  • 285. 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 • Reflita alguns minutos como poderíamos montar este ambiente em termos de objetos!!!. • A seguir um exemplo de um controle de Pizzaria (imagine como seria modelar este ambiente em OO para calcular uma conta) www.alvarofpinheiro.eti.br
  • 286. Controle de Pizzarias • Sistema que informatiza os pedidos de pizza em um restaurante • Poderia ser modelado pelos objetos, Pedido, Cardápio, Pizza, Caixa, Cliente, Garçom, Cozinheiro, etc. • O Cardápio teria como responsabilidade, armazenar os preços, mantendo-os atualizados • Pedido seria responsável pelo processamento dos pedidos feitos pelos clientes www.alvarofpinheiro.eti.br
  • 287. Controle de Pizzarias • Caixa calcularia a conta a ser paga. • Caso houvesse alteração no sistema para atender a necessidade de atualização de preços, esta seria uma responsabilidade do Cardápio. Os demais Objetos não sofreriam qualquer espécie de alteração • Caso a forma de calcular a conta fosse modificada (por exemplo a gorjeta), o Caixa seria refeito. • Enfim cada Objeto com sua respectiva função www.alvarofpinheiro.eti.br
  • 288. Funcionário Cozinheiro Garçom Serviços Cardápio Tipo Prato Preço +AlteraPreço +GetPreço Caixa Comanda +CalculaConta Pedido Cliente www.alvarofpinheiro.eti.br
  • 289. Classes - Fabrica de Objetos Definição da classe Objetos www.alvarofpinheiro.eti.br
  • 290. Classes • Podemos fazer uma analogia dizendo que as classes são “fábricas” de objetos. • Exemplificando, temos que Pessoa é uma classe e João é um objeto (instância) da classe Pessoa • Um carro é uma classe; “meu carro” é um objeto • Objetos similares são agrupados em classes www.alvarofpinheiro.eti.br
  • 291. Desenvolvimento de Software Programas x Classes Programas Classes processos atributos dados operações www.alvarofpinheiro.eti.br
  • 292. Notação para Classes class Fruta { int gramas; int cals_por_gramas; int total_calorias () { return gramas * cals_por_grama; } } www.alvarofpinheiro.eti.br
  • 293. 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
  • 294. 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
  • 295. 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
  • 296. Encapsulamento separa os aspectos externos de um objeto dos detalhes de implementação www.alvarofpinheiro.eti.br
  • 297. 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
  • 298. Encapsulamento • Se a companhia telefônica mudar seus processos, você vai continuar usando o aparelho normalmente • A implementação de uma classe, pode ser alterada sem afetar a sua interface. Se um novo telefone for criado, como um telefone digital, a implementação foi alterada, mas a interface permanece a mesma • Reflita associando as idéias com um liquidificador www.alvarofpinheiro.eti.br
  • 299. 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
  • 300. 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
  • 301. 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 nc é o número da conta do cliente (do tipo Conta) e enxerga os métodos debite, mb2 e mb3. Um objeto do tipo Cliente não precisa saber detalhes de implementação do método debite para chamá-lo, ele só precisa saber que a operação faz um débito na Conta e conhecer a sua assinatura. www.alvarofpinheiro.eti.br
  • 302. class Conta { private double saldo; private long numero; public void credite(double val) { saldo = saldo + val; } public void debite(double val) { saldo = saldo - val; } public void imprimaSaldo() { System.Out.Println(“Conta:“+numero+“Saldo:R$“ + saldo); } } www.alvarofpinheiro.eti.br
  • 303. Generalização • Generalização identifica e define coisas comuns em uma coleção de objetos Moveis Cadeiras Mesas Biros Quadrada Redonda www.alvarofpinheiro.eti.br
  • 304. Generalização/Especialização • Generalização é um processo que ajuda a identificar as classes principais do sistema. Ao identificar as partes comuns dos objetos, a generalização ajuda a reduzir as redundâncias, e promove reutilização • O processo inverso a generalização, e a Especialização, que foca a criação de classes mais individuais www.alvarofpinheiro.eti.br
  • 305. Herança Conta ContaCorrente Poupança ContaEspecial Sobremesa Bolo Sorvete BoloDeChocolate www.alvarofpinheiro.eti.br
  • 306. 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
  • 307. Herança • A forma de validar herança é usar a frase “é um”. • Exemplo da bicicleta e o avião, que ambos tem rodas, assento, capacidade de bagagem. • Bicicleta é um avião • Avião é uma bicicleta. www.alvarofpinheiro.eti.br
  • 308. Herança Figura Polígono Círculo Cor posição central Num de lados vértices raio www.alvarofpinheiro.eti.br
  • 309. Herança (Java) class Fruta { int gramas; int cals_por_gramas; int total_calorias () { return gramas * cals_por_grama; } } class Citros extends Fruta { void espremer () {/*............*/} } Todas as cítricas são frutas www.alvarofpinheiro.eti.br
  • 310. Polimorfismo • Significa que a mesma operação pode ter implementações diferentes. • Uma subclasse pode sobrepor a implementação de uma operação que ela herda de uma superclasse. • Somente pode ser usado com a herança www.alvarofpinheiro.eti.br
  • 311. Polimorfismo de Sobreposição Fruta Descasca() Cítrica Não Cítrica Descasca() www.alvarofpinheiro.eti.br
  • 312. Polimorfismo • O polimorfismo de sobreposição é resolvido dinamicamente • Ocorre quando uma classe possui um método com o mesmo nome e assinatura (número, tipo e ordem dos parâmetros) de um método da superclasse. Quando isso acontece, dizemos que a subclasse sobrepõe (overrides) o método da superclasse www.alvarofpinheiro.eti.br
  • 313. Polimorfismo Ícone origem: Ponto exibir() Botão exibir() O tratamento do exibir() em Botão irá “overridar” o exibir() do Ícone, Apesar de herdar o método dele e poder reutilizá-lo, ele implementará de outra maneira este método www.alvarofpinheiro.eti.br
  • 314. Polimorfismo • No exemplo do Sistema de Controle de Pizzaria • Na pizzaria, a mensagem PRINT para Pedido produz a conta • Enviada para Cardápio, imprime a lista de preços www.alvarofpinheiro.eti.br
  • 315. 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); } } class Citros extends Fruta { void espremer () {/*............*/} void descascar () {System.Out.Println (descasca uma citro); } } www.alvarofpinheiro.eti.br
  • 316. Polimorfismo (Java) 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
  • 317. Associação e Composição • Objetos são associados quando um usa os serviços do outro, e eles existem independentemente – A pessoa usa o computador • A composição ocorre quando um objeto esta contido no outro (tem). – Lápis - grafite , receptáculo de madeira www.alvarofpinheiro.eti.br
  • 318. Associação – Agregação – Composição Associação – Agregação – Composição Notação: ------- <>------ <>--------- Empresa (todo) <> --------------- Depto. (parte) www.alvarofpinheiro.eti.br
  • 319. 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
  • 320. 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. • É uma coleção de operações usadas para especificar um serviço de uma classe ou componente. www.alvarofpinheiro.eti.br
  • 321. Interfaces – Características – Interfaces formalizam o polimorfismo – Aumentam o nível de reusabilidade – Viabilizam o uso de componentes – Reduzem o esforço de evolução da aplicação www.alvarofpinheiro.eti.br
  • 322. Interfaces – Características – Definem um tipo especificando apenas a assinatura de seus métodos – Não podem ser instanciadas – Não possuem atributos e seus métodos não tem corpo – Classes implementam interfaces, ou seja, provêem implementação para os métodos especificados em uma interface www.alvarofpinheiro.eti.br
  • 323. Interfaces – Utilidades e capacidades – Garantir independência entre componentes de software – Garantir substituição de um serviço sem necessidade de alterar quem está usando este serviço – Usada para generalizar conceitos – Em JAVA, interface tem uma conotação muito forte e poderosa e “emula”, de forma bastante eficiente, herança múltipla www.alvarofpinheiro.eti.br
  • 324. Herança Múltipla Máquina Voadora Máquina Flutuadora Hidroavião www.alvarofpinheiro.eti.br
  • 325. 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
  • 326. MaquinaFlutuadora Navio interface implementação Lancha Veleiro etc..... Windsurf www.alvarofpinheiro.eti.br
  • 327. interface MaquinaFlutuadora { int Navegar (ponto de, ponto para); void LancarAncora (); void LevantarAncora (double combustivel); } class Navio implements MaquinaFlutuadora class Veleiro implements MaquinaFlutuadora class Veleiro extends Navio www.alvarofpinheiro.eti.br
  • 328. class HidroAviao implements Navio, MaquinaVoadora { double Tanque_Combust; int Rotac_motor; int Cabo_ancora; void LancarAncora () { Cabo_ancora = 200; } void LevantarAncora () { Cabo_ancora = 0; } int Navegar (ponto de, ponto para) {/*................*/}; void Pousar () { for ( ; Rotac_motor > 0; Rotac_motor --); LancarAncora (); } void Decolar (double combustivel) { LevantarAncora (); Tanque_Combust + = combustivel; for ( ; Rotac_motor < 6000; Rotac_motor ++); } } www.alvarofpinheiro.eti.br
  • 329. Negócio Acesso GUI Interface Interface Dados CLIENTE BD www.alvarofpinheiro.eti.br
  • 330. Interfaces – Estudo de Caso – Arquitetura do software para Java Interface Gráfica Camada de Aplicação Camada de Acesso a Dados Comandos SQL insert delete update Interface Implementação BD www.alvarofpinheiro.eti.br
  • 331. Interface Gráfica Camada de Aplicação Camada de Acesso a Dados Chamada stored procedure insert delete update Interface mantida Implementação muda BD Interfaces – Estudo de Caso – Arquitetura do software para Java www.alvarofpinheiro.eti.br
  • 332. Abordagem Orientada a Objetos INTERFACE Dados + Operações INTERFACE Dados + Operações solicita serviço responde a solicitação www.alvarofpinheiro.eti.br
  • 333. Abordagem Orientada a Objetos • Analogia com o LEGO (montar os componentes) – Javabeans, EJB, ActiveX • Em Java temos poucos tipos primitivos (int, long, short, double, float, char, boolean) Tudo são classes. Exceções: Linhas de codigo, Guis, Strings, etc... • Pacotes de bibliotecas de classes da plataforma Java – java.lang - nucleo da linguagem – java.awt - interface gráfica – java.net - operações na rede – java.io - lidar com arquivos – java.util - utilitários www.alvarofpinheiro.eti.br
  • 334. Unified Modeling Language (UML) www.alvarofpinheiro.eti.br
  • 336. Esquema da evolução da análise de sistemas Métodos orientados a processos simples e notação simples Métodos orientados a dados simples e notação simples Métodos orientados a objetos Simples e notação complexa Processos de desenvolvimento 1994 Complexo (RUP) Notação complexa (UML) www.alvarofpinheiro.eti.br
  • 337. 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
  • 338. Evolução da Análise Orientada a Objetos 1980 1985 1990 1995 2000 Características UML Comportamentos www.alvarofpinheiro.eti.br
  • 339. O caminho até a unificação • Grady Booch manifiesta a necessidade de unificar critérios • James Rumbaugh se une a Booch em outubro de 1994 • Ambos elaboram a versão 0.8 do Unified Method • Em 1995 Ivar Jacobson completa o trio de “amigos” www.alvarofpinheiro.eti.br
  • 340. O caminho até o padrão • Se elabora a versão 0.9 do Unified Modeling Language • Durante 1996 se realizam sucessivas modificações na base e um acréscimo de novos participantes (versões 0.91 e 1.0) • Se realiza a versão 1.1 em conjunto com outras importantes empresas, que é apresentada a OMG (Object Management Group) • A OMG adota a UML versão 1.1 como standard no final de 1997 • Atualmente se encontra vigente a versão 1.4 e se está gerando as bases da versão 2.0, que se espera seja mais estável www.alvarofpinheiro.eti.br
  • 341. UML Web - June ´96 UML 0.9 OOPSLA ´95 Unified Method 0.8 Other methods Booch method OMT OOSE public feedback Final submission to OMG, Sep ‘97 First submission to OMG, Jan ´97 UML 1.1 OMG Acceptance, Nov 1997 UML 1.3 UML partners UML 1.0 UML 1.4 www.alvarofpinheiro.eti.br
  • 342. 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
  • 343. 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
  • 344. Modelos, Visões e Diagramas A model is a complete description of a system from a particular perspective Use Case DiUasgera Cmasse DiUagsera Cmasse Diagrams Use Case DiUasgera Cmasse DiSaegqraumensce Diagrams Scenario DiSagcreanmarsio CDoiallgarbaomrastion Diagrams State DiagSrtaamtes DCiaogmrpamonsent Diagrams Component DCiaogmrapmonsent DDeiapglroamyms ent Diagrams Scenario DiSagcreanmarsio DSiatgarteacmhsart Diagrams State DiagSrtaamtes DiagCrlaamsss Diagrams Models www.alvarofpinheiro.eti.br
  • 345. Desenvolvimento centrado em Modelos Necessidade dos Usuários Processo 1 Processo de Desenvolvimento de SW Modelo 1 Processo 2 Processo n Modelo 2 Desenvolver Software é transformar modelos SW Novo/ Modificado www.alvarofpinheiro.eti.br
  • 349. Uso de Modelos • Representações simplificadas de coisas reais • Usados há muitos anos em outros ramos da Engenharia,mais maduras que a nossa • Se constroem para melhorar o entendimento • Exemplos: Maquetes, Planos, Equações, Protótipos, Simulação por Computador, Gráficos informais www.alvarofpinheiro.eti.br
  • 350. Modelar não é um fim • É um meio para construir melhor • Se é mais barato construir e corrigir os erros sobre o produto, Modelar não tem sentido • É muito melhor ver o produto do software do que o modelo, porém terminar o SW e ver que ele não atende as Necessidades é muito mais caro • A Correção é muito mais eficiente nas etapas iniciais do Processo, e os modelos servirão de base para antecipá-los • É conveniente conhecer vários tipos de Modelos. Distintos problemas ou partes deles, requerem distintas técnicas de modelagem www.alvarofpinheiro.eti.br
  • 353. Estrutural: modela aspectos estáticos do software focando nas entidades participantes e seus relacionamentos. Os diagramas deste conjunto são: diagrama de classes, objetos, componentes e implementação. Comportamental: modela aspectos dinâmicos do software focando, na maioria das vezes, como as entidades interagem para prover uma determinada funcionalidade para o usuário. Os diagramas deste conjunto são: diagrama de casos de uso, seqüência, colaboração, estados e atividades. www.alvarofpinheiro.eti.br
  • 357. Arquitetura dos Modelos Visão de implementação Visão de Distribuição Visão de desenho Visão de processos Visão de casos de uso Estrutura (UC,Classes,Relações) Estrutura Componentes Física (Topologia, Implantação,comunicação) Escalabilidade (threads) www.alvarofpinheiro.eti.br
  • 359. Ferramentas da UML – O porquê das ferramentas da UML – Administração de requisitos com casos de uso – Modelos de interação – Modelos de comportamento – Modelos de desenhos www.alvarofpinheiro.eti.br
  • 360. Ferramentas da UML • Modelo de requisito • Modelo de estrutura • Modelo de interação • Modelo de comportamento • Ferramentas de desenho • Organização de modelo • Diagrama de casos de uso • Diagrama de clases • Diagrama de objetos • Diagrama de sequências • Diagrama de colaboracionais • Diagrama de estados • Diagrama de atividades • Diagrama de componentes • Diagrama de distribuição • Diagrama de pacotes www.alvarofpinheiro.eti.br
  • 361. O Porquê destas ferramentas Classe Classe Levantamento Modelo de casos de uso Modelo de classes Modelo de comportamento Modelo de interação www.alvarofpinheiro.eti.br
  • 362. Modelo de Requisitos • Nos primeiros estágios da programação praticamente se construía a aplicação dos requisitos em linguagem natural • Com o advento dos métodos de análise, se supunha que os requisitos estavam completamente definidos antes da modelagem • Com os métodos orientados a objetos começam a aparecer técnicas de modelagem de requerimentos, baseados na criação de “cenários” www.alvarofpinheiro.eti.br
  • 363. Construção dos Diagramas • Passos recomendados: • elaborar uma lista de atores e definir suas funções • eleger o ator mais representativo do sistema para começar o diagrama • esgotar todas necessidades funcionais do ator incorporando casos de uso da funcionalidade base • para cada caso de uso, buscar os atores que devam colaborar com ele • repetir os dois passos anteriores para cada ator • incorporar a funcionalidade necessária para exceções e erros • fatorizar os casos de uso • obter os atores abstratos mediante generalização • descrever cada caso de uso a medida que se inclue no modelo • validar e verificar o modelo junto com os usuarios www.alvarofpinheiro.eti.br
  • 364. Estratégia de Levantamento Erros Exceções Caminho Base Funcionalidade desejada Funcionalidade não desejada www.alvarofpinheiro.eti.br
  • 365. 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
  • 366. Casos de Uso • São empregados para capturar o comportamento que se espera do sistema, sem ter de especificar como este comportamento é implementado (caixa preta); • Possibilitam que desenvolvedores obtenham uma compreensão comum do sistema , junto aos usuários e especialistas do domínio www.alvarofpinheiro.eti.br
  • 367. Ainda sobre Casos de Uso • Cada caso de uso descreve uma forma possível de utilização do sistema por representar uma porção de sua funcionalidade; • Um caso de uso é uma descrição de um conjunto de seqüência de ações, incluindo variações que um sistema executa a partir das interações externas ao sistema www.alvarofpinheiro.eti.br
  • 370. Casos de Uso Usuário Emprestar título Devolver título Reservar título Ator www.alvarofpinheiro.eti.br
  • 375. Cadastrar anamnese Atendente de 1º nível <<extend>> <<extend>> Consultar base de conhecimento Cadastrar satisfação do solicitante Abrir o.s. Fechar o.s. Realizar atendimento de 1º nível <<uses>> Atendente de 1º nível Diagrama de Casos de Uso www.alvarofpinheiro.eti.br
  • 376. 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 1o 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. Fluxo de dados excepcional: 1. Se o solicitante não estiver cadastrado, o sistema não permite que o atendimento seja realizado. 2. Se após a abertura da O.S., o atendente de 1o nível encontrou a solução do problema, estende (fechar O.S). 3. Se o equipamento estiver em manutenção, o sistema não permite que o atendimento seja realizado. 4. Caso o equipamento esteja em garantia e o tipo da O.S. não for de software, o atendente de 1o nível registra data, hora, tipo, dados obrigatórios da O.S e número do contrato, encaminhando-a para o coordenador de 2o nível. www.alvarofpinheiro.eti.br
  • 377. Diagrama de Classes Aluno Curso Disciplina Professor 1 1..* 0..6 0..* 0..* 1 1..* 1..* matricula-se ensina pertence a Aspectos estáticos www.alvarofpinheiro.eti.br
  • 378. Diagrama de Classes • Diagrama utilizado para representar os aspectos estáticos do Sistema • Exibe um conjunto de classes e seus relacionamentos www.alvarofpinheiro.eti.br
  • 391. Diagrama de Seqüência : Atendente de 1º nível : Form AbrirOS : Solicitante Abrir( ) Informar Matrícula Usuário( ) Finalizar Validar Usuário( ) Usuário Não Cadastrado Aspectos Dinâmicos www.alvarofpinheiro.eti.br
  • 392. Diagrama de Seqüência • Usados para modelar os aspectos dinâmicos do Sistema • É um diagrama de interação que enfatiza a ordenação de mensagens com relação ao tempo www.alvarofpinheiro.eti.br
  • 397. Diagrama de Componentes Aplicação Específica Aplicação Geral MiddleWare System Software Software Gerencial Atendimento Contratos Equipamento Manutenção Preventiva Hardware MTS Windows NT OS Ambiente de Conhecimento Software Func_Help_Desk Defeito Oracle Relacionamento entre os Componentes www.alvarofpinheiro.eti.br
  • 398. Componentes  • Os componentes são um importante bloco de construção na modelagem dos aspectos físicos do sistema;  • Um componente é uma parte física e substituível do sistema que realiza uma interface ou usa os serviços da mesma;  • Um componente tipicamente representa o empacotamento físico dos elementos lógicos como classes, interfaces e colaborações www.alvarofpinheiro.eti.br
  • 399. Componentes  Uma interface é uma coleção de operações que são usadas para especificar um serviço de uma classe ou um componente;  O Diagrama de Componentes exibe as organizações e dependências entre componentes, com o propósito de modelar a visão de implementação dos módulos de software executáveis de um sistema; www.alvarofpinheiro.eti.br
  • 400. 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  • Componente são as “coisas” que participam na execução de um sistema; os nodos são as “coisas” que executam os componentes;  • Os componentes representam o empacotamento físico dos elementos lógicos; os nodos representam a distribuição física dos componentes. www.alvarofpinheiro.eti.br
  • 401. Diagrama de Distribuição SERVIDOR DE DADOS SERVIDOR DE OBJETOS Gerencial.DLL Contrato.DLL OS.DLL Manutenção Preventiva.DLL Defeito.DLL Software.DLL Atendimento.DLL Equipamento.DLL Ambiente de Conhecimento .DLL Func_Help_ Desk.DLL Hardware.DLL WINDOWS NT ORACLE Associação dos componentes ao Hardware Micros Atendimento 1º Nível HD.EXE Micros Coordenação HD.EXE Micros Atendimento 2º Nível HD.EXE Micros Gerência HD.EXE REDE www.alvarofpinheiro.eti.br
  • 403. Acabamento Instalações Estrutura Reboco Base Ambientação www.alvarofpinheiro.eti.br
  • 404. Definição de Arquitetura •A Arquitetura é uma série de abstrações que permitem lidar com a complexidade das soluções • A Arquitetura forma a espinha dorsal para se construir sistemas de software com sucesso www.alvarofpinheiro.eti.br
  • 405. 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
  • 406. O que é Arquitetura de SW? “Uma arquitetura é composta de: • Uma coleção de componentes,conexões e restrições • Uma coleção de declarações de stakeholders sobre suas necessidades • As razões que justifiquem que os componentes,suas conexões e restrições satisfaçam as necessidades dos stakeholders” Barry Boehm www.alvarofpinheiro.eti.br
  • 407. Relaciona-se com.....  A organização de sistemas em termos de componentes  Estruturas globais de controle  Protocolos de Comunicação  Sincronização e acesso a dados  Alocação de funcionalidades aos elementos de projeto  Composição dos elementos de Projeto  Distribuição Física  Escalabilidade e Desempenho  Evolução do Sistema  Seleção entre alternativas sobre decisões de projetos www.alvarofpinheiro.eti.br
  • 408. Definição de Arquitetura A atividade em Contexto: Requisitos de Qualidade Arquitetura de HW Modificações Arquitetura de SW Modificações Restrições Análise de Domínio Análise de Requisitos Análise de Riscos Desenho de Arquitetura de Software Desenho de Arquitetura de Hardware Desenho Detalhado, Codificação, Integração e Testes www.alvarofpinheiro.eti.br
  • 409. 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
  • 410. 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
  • 411. 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
  • 412. Modelos de Arquitetura • Estrutura, controle e decomposição modular podem ser baseados num modelo ou estilo de arquitetura particular • Como a maioria dos sistemas são heterogêneos, filosofias de vários modelos são utilizadas em um projeto real de arquitetura www.alvarofpinheiro.eti.br
  • 413. Modelos de Arquitetura • O modelo de arquitetura usado afeta – Desempenho – Robustez – Distributividade – Manutenibilidade • Alguns domínios de aplicação possuem modelos específicos –Compiladores –Sistemas de acesso a redes locais www.alvarofpinheiro.eti.br
  • 414. As 4 Visões Arquitetura de Software Visão Conceitual Visão de Módulo Visão de Código Visão de Execução Componentes Conectores Configuração Componentes Conectores Configuração Restrições de Execução Módulos Nova partição de módulos Módulos Subsistemas Camadas Construção de Código Arquitetura de Hardware Restrições de Módulos Nova partição de módulos Entidades de tempo de execução Mudanças nas entidades www.alvarofpinheiro.eti.br
  • 415. 4 Visões Visão Conceitual • A funcionalidade do sistema se mapeia através de componentes conceituais, e a coordenação (fluxo lógico de controle) e a comunicação se resolve com conectores • É uma visão mais abstrata do domínio da aplicação • Integração de Pacotes www.alvarofpinheiro.eti.br
  • 416. Arquitetura:Visão Conceitual -Perguntas • Os requisitos funcionais estão sendo atendidos? • Como se integram os COTS (pacotes)? • Como se incorporam SW/HW específico do domínio? • Como ela suportará a linha de produtos?. • Como minimizar as mudanças de requisitos ou domínio? www.alvarofpinheiro.eti.br
  • 417. 4 Visões Visão de Módulos • Aplicar abstração,encapsulamento e interfaces • Decomposição do sistema em módulos e divisão em camadas www.alvarofpinheiro.eti.br
  • 418. Arquitetura:Visão de Módulos - Perguntas • Como se mapeia o produto na plataforma de SW? • Que serviços suporta/usa o sistema e exatamente onde? • Como se pode testar? • Como minimizar dependências e maximizar reuso de módulos? • Como podemos isolar as mudanças nos COTS (commercial of the shelf), na plataforma de SW/HW? www.alvarofpinheiro.eti.br
  • 419. 4 Visões Visão de Execução • Distribuição de funcionalidades em entidades de tempo de execução • Resolução, Coordenação e Comunicação • Assinalar os Hardwares www.alvarofpinheiro.eti.br
  • 420. 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
  • 421. 4 Visões Visão de Código • O código está dividido em muitos arquivos de distintos tipos(bibliotecas, executáveis,etc.) • Organizado em estruturas de armazenamento • Depende da linguagem de programação • Em versão e com implementações complexas www.alvarofpinheiro.eti.br
  • 422. Arquitetura:Visão de Código -Perguntas • Como se mapeiam as entidades de execução em componentes de distribuição, como os módulos são mapeados em código origem? • Como se constroem os componentes de distribuição? • Como se pode administrar versões? • Como reduzir tempo e esforço na construção do produto e suas melhoras?. • Que ferramentas de desenvolvimenro seriam úteis e como se suportam a integração e os testes? www.alvarofpinheiro.eti.br
  • 423. Diferentes visões de uma Arquitetura • Cada Projeto vai possuir uma visão dominante  Por exemplo, frequentemente a visão de módulos é dominante  As demais visões são moldadas ou adaptadas para se enquadrarem na visão dominante www.alvarofpinheiro.eti.br
  • 424. Propriedades • Arquiteturas definem componentes, porém omitem seus detalhes privados( informações não arquiteturais) • Explicita informações de como um componente (USA, É USADO, SE RELACIONA COM, INTERAGE COM OUTRO COMPONENTE) • Comporta várias visões mais nenhuma visão isoladamente pode ser considerada uma arquitetura • Todo sistema tem Arquitetura • O comportamento dos componentes é parte da Arquitetura www.alvarofpinheiro.eti.br
  • 425. Propriedades Relembrando O papel dos componentes, relacionamentos e até mesmo o contexto mudam em cada visão Exemplos: Componentes podem ser : Módulos,Processos,etc. Relacionamentos : É-Sub-Módulo, Sincroniza-com,etc. Contexto: Em tempo de desenvolvimento, Em tempo de execução,etc. www.alvarofpinheiro.eti.br
  • 426. Importância do projeto de arquitetura –Um mau projeto de arquitetura não pode ser salvo por uma boa implementação – Existem modelos e estilos diferentes de arquitetura –Normalmente, vários modelos são utilizados em um mesmo projeto de software www.alvarofpinheiro.eti.br
  • 427. Importância da Arquitetura • A arquitetura abstrai informações detalhadas do sistema mas consegue prover informação suficiente para: – Análise do sistema como um todo – Tomada de Decisões (técnicas ou gerenciais) – Redução de Riscos • Se o projeto ainda não definiu a Arquitetura do Sistema, incluindo sua justificativa, ele não deve prosseguir com o desenvolvimento em larga escala www.alvarofpinheiro.eti.br
  • 428. 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 • Decisões iniciais de projeto – São críticas ( infra-estrutura, espinha dorsal do sistema) e com impacto em todo ciclo de vida • 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
  • 429. Recomendações(Arquitetura) • Trabalhar com grupo pequeno de liderados(+experientes) • Partir dos requisitos e da lista priorizada dos atributos de qualidade •Deixar tudo sempre documentado •Descrever como os requisitos são cumpridos •Revisada por usuários e analisada formalmente •Criar incrementalmente o sistema ao redor dela •Seguir princípios de desenho www.alvarofpinheiro.eti.br
  • 430. Arquitetura do Comércio Eletrônico Camada Apresentação (Cliente) HTML Browser Internet Explorer Netscape HotJava HTTP (web) Servidor Internet Windows 2000 Server JSERV Midware p/ interação com Servelets SERVLET Camada Aplicação Acesso Dados SGDB Oracle Servlet Interface Java Request e Response do Browser Formata HTML de Resposta SGBD Inteligência da Aplicação Infra-Estrutura www.alvarofpinheiro.eti.br
  • 431. Arquitetura de Software • Passos do projeto de arquitetura • Estruturação do sistema • Modelagem de controle • Decomposição modular www.alvarofpinheiro.eti.br
  • 432. 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
  • 433. 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
  • 434. Estruturação do sistema – Nesta fase, uma visão MACRO das partes componentes do sistema e suas respectivas interconexões são obtidas – Os requisitos do sistema têm que estar estabelecidos para que critérios de definição de arquitetura sejam aplicados www.alvarofpinheiro.eti.br
  • 435. Arquitetura de Software • Modelagem de controle • Um modelo do relacionamento de controle entre as diferentes partes do sistema é estabelecido • Controle Centralizado • Modelo de Retorno de Chamada • Modelo de Gerente • Controle baseado em Eventos • Modelo Broadcasting • Modelo de Interrupções www.alvarofpinheiro.eti.br
  • 436. Arquitetura de Software • Decomposição modular • Os subsistemas identificados são decompostos em módulos • Nesta fase, ocorre o detalhamento da visão macro estabelecida na fase de estruturação do sistema • Exemplos: • Subsistema Caixa • Modulo de Recebimento • Modulo de Abertura/Fechamento www.alvarofpinheiro.eti.br
  • 437. 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
  • 438. Decomposição modular • Diferença entre subsistemas e módulos • Não há uma definição clara • Nomenclatura normalmente usada indistintamente por projetistas e analistas • Engenharia de software moderna usa estes termos para designar elementos diferentes em um projeto de software www.alvarofpinheiro.eti.br
  • 439. Arquitetura de Software • Exemplo de Arquitetura Interface Gráfica Comunicação Processamento de Pedidos Cadastramento de Informações Acesso a Dados www.alvarofpinheiro.eti.br
  • 440. 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
  • 441. Arquitetura de Software • Modelo Cliente-Servidor Cliente 1 Cliente 2 Cliente N Rede (LAN, WAN ou Internet) Servidor 1 Servidor 2 Servidor N www.alvarofpinheiro.eti.br
  • 442. Arquitetura de Software –Exemplo: Sistema de Vendas de Livros –Sistema cliente-servidor 3 camadas –Manutenção de livros e autores –Processamento de pedidos de livros –Exportação de pedidos (automática) –Importação de cadastro de clientes (automática) www.alvarofpinheiro.eti.br
  • 443. Arquitetura de Software –Exemplo: Sistema de Vendas de Livros –Visão client-server da arquitetura (visão mais física dos componentes de software) Rede Local TCP/IP Servidor de Dados Servidor de Aplicação GUI www.alvarofpinheiro.eti.br