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

Post on 08-Jul-2015

136 views 0 download

description

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

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.