Engenharia de Software: A ponte para um código sustentável
-
Upload
fernando-pontes -
Category
Software
-
view
136 -
download
0
description
Transcript of Engenharia de Software: A ponte para um código sustentável
ENGENHARIA DE SOFTWAREA PONTE PARA UM CÓDIGO SUSTENTÁVEL
Fernando Pontes
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
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
Sustentabilidade
Sustentabilidade
“Qualidade ou condição do que é sustentável."
Dicionário Aurélio
“Que tem condições para se manter ou conservar."
Sustentável
Engenharia de Software
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
• 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.
Software Legado
O Objetivo da Engenharia de Software Moderna é o de
“elaborar metodologias baseadas na noção de evolução"
[Day99]
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.
“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]
Engenharia de Software
Ferramentas
Métodos
Processo
Foco na qualidade
[Roger Pressman]
Os 4 P’s da Engenharia de Software
1. Pessoas
2. Produto
3. Processo
4. Projeto
4 P’s da ES
Adote um Processo
"É um conjunto de atividades, ações e tarefas realizadas na criação de algum produto de
trabalho (work product)."
Processos
[Roger Pressman]
“Um processo define quem está fazendo o quê, quando e como para atingir determinado
objetivo.”
Processos
[Ivar Jacobson, Grady Booch e James Rumbaugh]
Processos
Metodologia de processo
Atividades estruturais
Atividades de apoio
Processos
• Comunicação
• Planejamento
• Modelagem
• Construção
• Emprego
Atividades estruturais
Processos
• 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
Atividades de apoio
Processos1. 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]
Processos
Processos prescritivos
Desenvolvimento Ágil
• RUP (Rational Unified Process)
• OpenUP
• Manifesto para o Desenvolvimento Ágil de Software
• XP - EXTREME PROGRAMMING
• Scrum
Utilize 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.”
Padrões de Projeto
[Christopher Alexander]
“É uma regra de três partes que expressa uma relação entre um contexto, um problema e
uma solução.”
Padrões de Projeto
[Christopher Alexander]
Padrões de Projeto
• Criacionais
• Estruturais
• Comportamentais
[Gamma e seus amigos]
Preze pela Qualidade
Preze pela Qualidade
[David Garvin Harvad Business School]
• Transcendental
• Usuário
• Fabricante
• Produto
• Baseada em valor
Satisfação do usuário
=
produto compatível
+
boa qualidade
+
entrega dentro do orçamento e do prazo
Preze pela Qualidade
[Robert Glass]
"Chega de desperdiçar US$ 78 bilhões por ano"
Preze pela Qualidade
[CIO Magazine 2001]
“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.”
Preze pela Qualidade
[ComputerWorld 2005]
De quem é a culpa?
"De ambos. Tanto do cliente, quanto de quem desenvolve o software.”
Preze pela Qualidade
[Roger Pressman]
Preze pela Qualidade
• ISO 9126
• ISO 9000
• Software Quality Assurance
Teste, teste e teste novamente
“O teste é uma parte inevitável de qualquer trabalho responsável para o desenvolvimento de um sistema
de software."
Teste, teste e teste novamente
[William Howden]
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.
Teste, teste e teste novamente
Teste, teste e teste novamente
• 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."
Quando devo parar de testar?
“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.”
Teste, teste e teste novamente
[Boris Beizer]
Teste, teste e teste novamente
• Teste Caixa-Branca
• Teste de Estrutura de Controle
• Teste Caixa-Preta
• Teste Baseado em Modelos
Métricas
Métricas
“Não se pode controlar aquilo que não se consegue medir.”
[Tom DeMarco]
Métricas• Diretas
• Total de linhas de códigos
• Indiretas
• Pontos de função
• Base histórica
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
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]
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]
• Processo
• Padrões
• Qualidade
• Testes
• Métricas
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.