Qualidade Interna vs Qualidade Externa

{ September 17th, 2009 }


cmilfont

Autor: cmilfont

Processos de desenvolvimento de software são quase todos iguais em termos de práticas e todos podem assumir práticas novas de outros processos, até cascata pode aplicar qualquer prática de XP e Scrum em seu modelo naturalmente.

O que diferencia esses processos não são as práticas, são os valores. O problema é que entender, compreender e adotar valores é algo subjetivo que varia de pessoa para pessoa por mais que se tenha princípios bem definidos que conectem as práticas a esses valores.

Diante disso, nenhum processo garante que seu projeto ser√° um sucesso por estar o seguindo, mesmo que seja “By The Book”.

Há uma preocupação com o chamado Scrumbut, mas eu já vejo e vi projetos Scrum que não são Scrumbut e mesmo assim o software produzido, por mais ágil que seja, não tem qualidade e no primeiro refactoring você já entra no prejuízo similar a um software desenvolvido em Cascata.

Fato é que esses valores e princípios não garantem software com código coeso, desacoplado, limpo, claro e facilmente lido, ou seja, com qualidade interna.

Hoje minha preocupa√ß√£o em todos os projetos √© a qualidade interna do software, n√£o importa que metodologia seja adotada. Qualidade interna garante que o software tem boa sa√ļde e √© f√°cil de ser medida.

Sa√ļde do software √© o qu√£o r√°pido e efetivo ele se recupera de mudan√ßas e o qu√£o limpo ele est√° de defeitos. Para se recuperar de mudan√ßas o software precisa ser limpo e claro, ser facilmente entend√≠vel e lido.

Livre de defeitos é ter uma cobertura de testes que explorem e machuquem o código até descobrir falhas que passam despercebidas.

A grande maioria dos processos se preocupa mais com a qualidade externa do que a interna. N√£o importa se voc√™ faz reuni√Ķes em p√©, tenha o cliente presente ou fa√ßa Scrumban ou at√© mesmo que voc√™ esteja entregando software r√°pido, nada disso vai garantir qualidade e que n√£o v√° ter preju√≠zo no futuro.

Vender qualidade externa tem um apelo comercial fácil porque você não precisa comprovar a qualidade do software e sim do processo, o discurso é sempre mais elegante do que falar em código, principalmente para alta gerência e burocratas, tanto é que todos os modelos de qualidade reconhecidos avaliam o processo e não o produto.

CMMi, ISO ou seja l√° que for, n√£o garantem que o produto ser√° de qualidade e sim que o processo seja e se pararmos para pensar um momento, o processo realmente √© de qualidade, temos um conjunto de m√©todos eficazes para produzir… processo e n√£o produto.

Um exemplo de qualidade interna de um software são os testes automáticos em suas diversas nuances como unitários, aceitação, integração e funcional, mas não apenas isso, métricas de coesão, cobertura, LOC, complexidade e tantas outras.

No Maré de Agilidade eu fiz questão de enfatizar:

“N√£o importa que processo voc√™ siga, se √© √°gil ou n√£o, se voc√™ n√£o faz testes de Software voc√™s est√° errado em todos.”

Não existe um software sem bateria de testes automáticos com qualidade, isso é lenda. Em mais de 10 anos de profissão o que tenho notado é que a grande maioria, senão todos, são fortemente acoplados e de baixa coesão como consequência da falta de testes. Aplicar testes nesses softwares é uma tarefa quase impossível e proibitiva em relação a custos, sai mais barato fazer um software novo.

Outra coisa que falei no Maré de Agilidade foi:

“N√£o seja √°gil, seja o melhor poss√≠vel, porque ao procurar ser o melhor voc√™ invariavelmente vai se deparar com pr√°ticas que o tornam melhor e a√≠ voc√™ se tornar√° √°gil”.

Assim como o lema da Rossi: “Armas n√£o matam pessoas, pessoas matam pessoas” podemos induzir que: Processos n√£o desenvolvem software, pessoas desenvolvem software!

Ao trabalhar com pessoas, precisamos entender que modelos de negócios como software são de terceira onda [Alvin Toffler aqui] e não da segunda onda [industrialismo]. Qualquer analogia com modelos de segunda onda provocará insuficiência no trabalho dessas pessoas [por isso Lean faz tanto sucesso hoje] e elas precisam estarem motivadas para produzir qualidade interna, coisa que o trabalho sobre qualidade externa não produz.

Esse tema sobre pessoas e processos [como homem/hora] ser√° escrito em outro artigo.

Resumo desse artigo é: Pessoas são responsáveis por produzirem qualidade interna ao produto e não processo, invista nelas.

Categories: Behaviour Driven Development, Engenharia de Software, Melhores pr√°ticas, Metodologia, M√©todos √Āgeis, Scrum, Test Driven, teste, XP ~ ~ Trackback


Assine os coment√°rios deste artigo.


7 Responses to “Qualidade Interna vs Qualidade Externa”

  1. 1
    Tweets that mention Milfont.org Ultrapassando os limites da WEB -- Topsy.com

    […] This post was mentioned on Twitter by rodrigogalba. rodrigogalba said: Otimo post sobre qualidade interna e externa de softtware http://bit.ly/kkbln […]

  2. 2
    Bruno Pereira

    Perfeitamente colocado meu caro Milfont.

    A verdade √© que se voc√™ tem as pessoas certas para construir o produto, a √ļltima coisa que voc√™ vai ter que se preocupar √© em validar a cartilha de algum processo.

    Discuss√Ķes sobre processos s√≥ ocorrem com tanta freq√ľ√™ncia porque s√£o muito raros os times genuinamente auto-gerenciados.

  3. 3
    Marcel Maurício

    Excelente post e dei valor a parte onde voc√™ faz uma analogia a uma propaganda e diz: “Processos n√£o desenvolvem software, pessoas desenvolvem software”.

  4. 4
    Marcos Sousa

    Grande post Milfont!

    Geralmente, testes automatizados não é uma tarefa muito fácil, exige pensar muito, principalmente quando a estrutura do código não favorece. Aí nestes casos prevalece a lei do menor esforço, validar telinhas. E como você disse não existe prática ágil, processo, certificação que garanta a qualidade.

  5. 5
    Calango

    Ser√°?
    http://alankelon.posterous.com/cmmi-testes-automaticos-pessoas-processo-e-qu

  6. 6
    Carlos √Ātila

    √ďtimo post Milfont.

    O Cliente est√° mais preocupado com a “Qualidade do Processo” do que a qualidade da codifica√ß√£o, acredito que uma das raz√Ķes da qualidade do processo vencer a qualidade interna, √© que atulamente a qualidade do processo possui uma “PROPAGANDA MUITO MELHOR”, o que faz que muitas empresas s√≥ enxergam “CMMI”, “RUP”, n√£o atentando para a qualidade interna que √© essencial para o projeto.

  7. 7
    Palestra Agilidade no Mundo Real - Milfont Consulting

    […] Software Funcionando http://www.milfont.org/tech/2009/09/17/qualidade-interna-vs-qualidade-externa/ […]

Leave a Reply