51
ENGENHARIA DE SOFTWARE A PONTE PARA UM CÓDIGO SUSTENTÁVEL Fernando Pontes

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

ENGENHARIA DE SOFTWAREA PONTE PARA UM CÓDIGO SUSTENTÁVEL

Fernando Pontes

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

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

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

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

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

Sustentabilidade

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

Sustentabilidade

“Qualidade ou condição do que é sustentável."

Dicionário Aurélio

“Que tem condições para se manter ou conservar."

Sustentável

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

Engenharia de Software

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

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

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

• 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

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

O Objetivo da Engenharia de Software Moderna é o de

“elaborar metodologias baseadas na noção de evolução"

[Day99]

Page 10: Engenharia de Software: A ponte para um código sustentável
Page 11: Engenharia de Software: A ponte para um código sustentável
Page 12: Engenharia de Software: A ponte para um código sustentável

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.

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

“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]

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

Engenharia de Software

Ferramentas

Métodos

Processo

Foco na qualidade

[Roger Pressman]

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

Os 4 P’s da Engenharia de Software

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

1. Pessoas

2. Produto

3. Processo

4. Projeto

4 P’s da ES

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

Adote um Processo

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

"É um conjunto de atividades, ações e tarefas realizadas na criação de algum produto de

trabalho (work product)."

Processos

[Roger Pressman]

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

“Um processo define quem está fazendo o quê, quando e como para atingir determinado

objetivo.”

Processos

[Ivar Jacobson, Grady Booch e James Rumbaugh]

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

Processos

Metodologia de processo

Atividades estruturais

Atividades de apoio

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

Processos

• Comunicação

• Planejamento

• Modelagem

• Construção

• Emprego

Atividades estruturais

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

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

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

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]

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

Processos

Processos prescritivos

Desenvolvimento Ágil

• RUP (Rational Unified Process)

• OpenUP

• Manifesto para o Desenvolvimento Ágil de Software

• XP - EXTREME PROGRAMMING

• Scrum

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

Utilize Padrões de Projeto

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

“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]

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

“É 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]

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

Padrões de Projeto

• Criacionais

• Estruturais

• Comportamentais

[Gamma e seus amigos]

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

Preze pela Qualidade

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

Preze pela Qualidade

[David Garvin Harvad Business School]

• Transcendental

• Usuário

• Fabricante

• Produto

• Baseada em valor

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

Satisfação do usuário

=

produto compatível

+

boa qualidade

+

entrega dentro do orçamento e do prazo

Preze pela Qualidade

[Robert Glass]

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

"Chega de desperdiçar US$ 78 bilhões por ano"

Preze pela Qualidade

[CIO Magazine 2001]

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

“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]

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

De quem é a culpa?

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

"De ambos. Tanto do cliente, quanto de quem desenvolve o software.”

Preze pela Qualidade

[Roger Pressman]

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

Preze pela Qualidade

• ISO 9126

• ISO 9000

• Software Quality Assurance

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

Teste, teste e teste novamente

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

“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]

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

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.

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

Teste, teste e teste novamente

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

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?

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

“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]

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

Teste, teste e teste novamente

• Teste Caixa-Branca

• Teste de Estrutura de Controle

• Teste Caixa-Preta

• Teste Baseado em Modelos

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

Métricas

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

Métricas

“Não se pode controlar aquilo que não se consegue medir.”

[Tom DeMarco]

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

Métricas• Diretas

• Total de linhas de códigos

• Indiretas

• Pontos de função

• Base histórica

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

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

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

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]

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

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]

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

• Processo

• Padrões

• Qualidade

• Testes

• Métricas

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

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.