2. Fernando Pontes
• Diretor/desenvolvedor na websonic - Agência Interativa.
• Bacharel em Sistemas de Informação - FACIMP
• Pós-graduando em Engenharia de Software - PUC Minas
3. Agenda
• Conceitos
• Os 4 P’s da Engenharia de
Software
• Adote um processo
• Utilize padrões
• Preze pela qualidade
• Teste, teste e teste novamente
• Métricas
7. Engenharia de Software
"O estabelecimento e o emprego de sólidos
princípios de engenharia de modo a obter software
de maneira econômica, que seja confiável e
funcione de forma eficiente em máquinas reais."
Fritz Bauer
8. Software Legado
• Programas antigos.
• Sofrem contínua manutenção.
• Muitos dão suporte a funções vitais.
• Podem apresentar baixa qualidade.
• Documentação pobre ou inexistente.
• Testes e resultados não arquivados.
• Histórico de modificações mal administrado.
9. O Objetivo da Engenharia de Software Moderna é o de
“elaborar metodologias baseadas na
noção de evolução"
[Day99]
10.
11.
12. Dados
• Mais de 1 bilhão de usuários.
• Os usuários curtem 6 bilhões de coisas por dia.
• Compartilham 400 bilhões de fotos.
• 7 petabytes de armazenamento de fotos em 2012.
13. “Escrever um trecho de código
inteligente que funcione é uma coisa;
projetar algo que possa dar suporte a
negócios duradouros é outra totalmente
diferente."
[C. Ferguson]
18. Processos
"É um conjunto de atividades, ações e tarefas
realizadas na criação de algum produto de
trabalho (work product)."
[Roger Pressman]
19. “Um processo define quem está fazendo o quê,
quando e como para atingir determinado
objetivo.”
Processos
[Ivar Jacobson, Grady Booch e James Rumbaugh]
22. Processos
Atividades de apoio
• Controle e acompanhamento do projeto
• Administração de riscos
• Garantia da qualidade de software
• Revisões técnicas
• Medição
• Gerenciamento da configuração de software
• Gerenciamento da reusabilidade
• Preparo e produção de artefatos de software
23. Processos
1. Compreender o problema (comunicação e
análise)
2. Planejar uma solução (modelagem e projeto de
software)
3. Executar o plano (geração de código)
4. Examinar o resultado para ter precisão (testes e
garantia da qualidade)
[How to Solve It - George Polya]
24. Processos
Processos prescritivos
• RUP (Rational Unified Process)
Desenvolvimento Ágil
• OpenUP
• Manifesto para o Desenvolvimento Ágil de Software
• XP - EXTREME PROGRAMMING
• Scrum
26. Padrões de Projeto
“Cada padrão descreve um problema que
ocorre repetidamente em nosso ambiente e
então descreve o cerne de uma solução para
aquele problema para podermos usar a
solução repetidamente um milhão de vezes
sem jamais ter de fazer a mesma coisa duas
vezes.”
[Christopher Alexander]
27. Padrões de Projeto
“É uma regra de três partes que expressa uma
relação entre um contexto, um problema e
uma solução.”
[Christopher Alexander]
28. Padrões de Projeto
• Criacionais
• Estruturais
• Comportamentais
[Gamma e seus amigos]
30. Preze pela Qualidade
• Transcendental
• Usuário
• Fabricante
• Produto
• Baseada em valor
[David Garvin
Harvad Business School]
31. Preze pela Qualidade
Satisfação do usuário
=
produto compatível
+
boa qualidade
+
entrega dentro do orçamento e do prazo
[Robert Glass]
32. Preze pela Qualidade
"Chega de desperdiçar US$ 78 bilhões por ano"
[CIO Magazine 2001]
33. Preze pela Qualidade
“Software de má qualidade está em praticamente
todas as organizações que usam computadores,
provocando horas de trabalho perdidas durante o
tempo em que a máquina fica parada […] custos de
suporte e manutenção de TI elevados e baixa
satisfação do cliente.”
[ComputerWorld 2005]
38. Teste, teste e teste novamente
“O teste é uma parte inevitável de qualquer trabalho
responsável para o desenvolvimento de um sistema
de software."
[William Howden]
39. Teste, teste e teste novamente
• Para executar um teste eficaz, proceda com revisões
técnicas eficazes.
• O teste inicia no nível de componentes e progride em
direção à integração do sistema como um todo.
• Diferentes técnicas de teste são apropriadas para
diferentes abordagens de engenharia de software e em
diferentes pontos no tempo.
• O teste é feito pelo desenvolvedor do software e (para
grandes projetos) por um grupo independente de teste.
41. Teste, teste e teste novamente
Quando devo parar de testar?
• Primeira resposta: “O teste nunca termina; o
encargo simplesmente passa do engenheiro de
software para o usuário final”.
• Segunda resposta: “O teste acaba quando o tempo
ou o dinheiro acabam."
42. Teste, teste e teste novamente
“Teste que leva em conta somente os requisitos do
usuário final é como a inspeção de um edifício baseado
apenas no trabalho executado pelo projetista de
interiores, não considerando as fundações, vigas e
tubulações.”
[Boris Beizer]
43. Teste, teste e teste novamente
• Teste Caixa-Branca
• Teste de Estrutura de Controle
• Teste Caixa-Preta
• Teste Baseado em Modelos
45. Métricas
“Não se pode controlar aquilo que não se consegue
medir.”
[Tom DeMarco]
46. Métricas
• Diretas
• Total de linhas de códigos
• Indiretas
• Pontos de função
• Base histórica
47. Métricas
• Melhorar a previsibilidade e a chance de sucesso
de projetos
• Permitir melhor gerenciamento sobre o projeto
• Avaliar a produtividade e a qualidade de um
processo
• Avaliar o benefício de métodos e ferramentas
• Reduzir pressão sobre os cronogramas
48. Métricas
• Formulação: A criação de medidas e métricas de software
apropriadas.
• Coleção: O mecanismo usado para armazenar dados
necessários para criar as métricas formuladas.
• Análise: A computação das métricas.
• Interpretação: A avaliação de métricas que resultam e
informações.
• Feedback: Recomendações derivadas da interpretação de
métricas de produto transmitidas para a equipe de software.
[Roche]
49. Métricas
“A experiência indica que a métrica de um produto
será usada somente se ela for clara e fácil de
computar.”
[Roger Pressman]
51. Referências
• PRESSMAN, Roger S. Engenharia de Software -
Uma Abordagem Profissional. Porto Alegre. 7. ed.
Bookman, 2011.
• GAMMA, Erich; HELM, Richard; JOHNSON,
Ralph; VLISSIDES, John. Padrões de Projeto -
Soluções reutilizáveis de software orientado a
objetos. Porto Alegre. Bookman, 2000.