Testando sua arquitetura... antes ou depois da implementação?!

Preview:

Citation preview

Testando sua arquitetura… Antes ou depois da implementação?!

Antônio Carlos

Segundo o padrão ISO/IEEE 1471-2000,

“Arquitetura é a organização fundamental de um sistema incorporada em seus componentes, seus relacionamentos com o ambiente, e os princípios que conduzem seu design e evolução.”

O que é arquitetura de software?

● Segurança● Confiabilidade ● Tolerância a falhas● Portabilidade● Desempenho● Manutenibilidade● Usabilidade● Dependências externas

Principais aspectos arquiteturais

Propriedade Métrica

Desempenho Transações por segundoTempo de resposta por requisiçãoTempo de carregamento da tela

Usabilidade Tempo de treinamento necessárioTempo de execução de uma rotina

Confiabilidade Tempo médio para falhasProbabilidade de falhasDisponibilidade

Segurança Número de vulnerabilidades conhecidasNúmero de ameaças conhecidasProbabilidade de ataques

● Verificação○ Estamos construindo “certo” o produto?

● Validação○ Estamos construindo o produto “certo”?

V & V

Antes

● Visa descobrir defeitos o mais cedo possível;● Visa a melhoria da qualidade dos artefatos;● Evitar retrabalho;

Revisões técnicas

Segundo McGraw Hill (1998)● Cada seção de inspeção remove de 60 a 65% dos

defeitos● Quando combinados com práticas de testes esse

número pode subir para 90%

Revisões técnicas

● Reuniões informais para avaliação de artefatos● Não existem restrições quanto à discussão sobre

validação dos defeitos e/ou solução● Apresentação dos artefatos e avaliação prática

Walkthroughs

● Checklist de avaliação preparados por pessoas com conhecimento técnico

● Reuniões são realizadas para identificar os artefatos

Checklists

● Um especialista na área valida o artefato● O processo de desenvolvimento deve considerar a

validação● Especialista interno ou externo

Parecer do especialista

Depois

● Teste de segurança○ SQLInjection○ DDoS○ Teste de penetração

● Ferramentas ○ SQLMap○ Nikto2○ Wapiti○ Brutos

Segurança

● Teste de instalação● Teste operacional

Portabilidade

Desempenho

● Teste de performance

● Ferramentas○ JMeter○ LoadUI

● Complexidade Ciclomática● Coesão e acoplamento● hints

● Ferramentas○ Sonar○ PlatoJS

Manutenibilidade

● Teste de integração

● Ferramentas○ JUnit○ NUnit○ PHPUnit

Dependências externas

Então, antes ou depois?

Custo de manutenção de software

Segundo Martin & McClure (1984):● Manutenção contabiliza quase 67% dos custos totais;● 20% do orçamento de manutenção é para corrigir

defeitos;● 25% é gasto para adaptar a um novo ambiente;● 6% é gasto para corrigir documentação;● 4% é gasto com problemas de performance; e● 42% é gasto com solicitação de usuário.

Custo de manutenção de software

Obrigado!

acarlossw@gmail.com