Engenharia de Software: A ponte para um código sustentável

440 visualizações

Publicada em

Dicas para o desenvolvimento de software com qualidade, que seja sustentável, entregue no prazo e dentro do orçamento.

Publicada em: Software
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Engenharia de Software: A ponte para um código sustentável

  1. 1. ENGENHARIA DE SOFTWARE A PONTE PARA UM CÓDIGO SUSTENTÁVEL Fernando Pontes
  2. 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. 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
  4. 4. Sustentabilidade
  5. 5. Sustentabilidade “Qualidade ou condição do que é sustentável." “Que tem condições para se manter ou conservar." Dicionário Aurélio Sustentável
  6. 6. Engenharia de Software
  7. 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. 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. 9. O Objetivo da Engenharia de Software Moderna é o de “elaborar metodologias baseadas na noção de evolução" [Day99]
  10. 10. 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.
  11. 11. “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]
  12. 12. Engenharia de Software Ferramentas Métodos Processo Foco na qualidade [Roger Pressman]
  13. 13. Os 4 P’s da Engenharia de Software
  14. 14. 4 P’s da ES 1. Pessoas 2. Produto 3. Processo 4. Projeto
  15. 15. Adote um Processo
  16. 16. Processos "É um conjunto de atividades, ações e tarefas realizadas na criação de algum produto de trabalho (work product)." [Roger Pressman]
  17. 17. “Um processo define quem está fazendo o quê, quando e como para atingir determinado objetivo.” Processos [Ivar Jacobson, Grady Booch e James Rumbaugh]
  18. 18. Processos Metodologia de processo Atividades estruturais Atividades de apoio
  19. 19. Processos • Comunicação • Planejamento • Modelagem • Construção • Emprego Atividades estruturais
  20. 20. 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
  21. 21. 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]
  22. 22. Processos Processos prescritivos • RUP (Rational Unified Process) Desenvolvimento Ágil • OpenUP • Manifesto para o Desenvolvimento Ágil de Software • XP - EXTREME PROGRAMMING • Scrum
  23. 23. Utilize Padrões de Projeto
  24. 24. 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]
  25. 25. 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]
  26. 26. Padrões de Projeto • Criacionais • Estruturais • Comportamentais [Gamma e seus amigos]
  27. 27. Preze pela Qualidade
  28. 28. Preze pela Qualidade • Transcendental • Usuário • Fabricante • Produto • Baseada em valor [David Garvin Harvad Business School]
  29. 29. Preze pela Qualidade Satisfação do usuário = produto compatível + boa qualidade + entrega dentro do orçamento e do prazo [Robert Glass]
  30. 30. Preze pela Qualidade "Chega de desperdiçar US$ 78 bilhões por ano" [CIO Magazine 2001]
  31. 31. 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]
  32. 32. De quem é a culpa?
  33. 33. Preze pela Qualidade "De ambos. Tanto do cliente, quanto de quem desenvolve o software.” [Roger Pressman]
  34. 34. Preze pela Qualidade • ISO 9126 • ISO 9000 • Software Quality Assurance
  35. 35. Teste, teste e teste novamente
  36. 36. 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]
  37. 37. 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.
  38. 38. Teste, teste e teste novamente
  39. 39. 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."
  40. 40. 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]
  41. 41. Teste, teste e teste novamente • Teste Caixa-Branca • Teste de Estrutura de Controle • Teste Caixa-Preta • Teste Baseado em Modelos
  42. 42. Métricas
  43. 43. Métricas “Não se pode controlar aquilo que não se consegue medir.” [Tom DeMarco]
  44. 44. Métricas • Diretas • Total de linhas de códigos • Indiretas • Pontos de função • Base histórica
  45. 45. 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
  46. 46. 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]
  47. 47. 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]
  48. 48. • Processo • Padrões • Qualidade • Testes • Métricas
  49. 49. 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.

×