{"id":764,"date":"2009-09-17T06:07:21","date_gmt":"2009-09-17T13:07:21","guid":{"rendered":"http:\/\/www.milfont.org\/tech\/?p=764"},"modified":"2021-12-15T17:28:14","modified_gmt":"2021-12-15T20:28:14","slug":"qualidade-interna-vs-qualidade-externa","status":"publish","type":"post","link":"https:\/\/www.milfont.org\/tech\/2009\/09\/17\/qualidade-interna-vs-qualidade-externa\/","title":{"rendered":"Qualidade Interna vs Qualidade Externa"},"content":{"rendered":"<p>Processos de desenvolvimento de software s\u00e3o quase todos iguais em termos de pr\u00e1ticas e todos podem assumir pr\u00e1ticas novas de outros processos, at\u00e9 cascata pode aplicar qualquer pr\u00e1tica de XP e Scrum em seu modelo naturalmente.<\/p>\n<p>O que diferencia esses processos n\u00e3o s\u00e3o as pr\u00e1ticas, s\u00e3o os valores. O problema \u00e9 que entender, compreender e adotar valores \u00e9 algo subjetivo que varia de pessoa para pessoa por mais que se tenha princ\u00edpios bem definidos que conectem as pr\u00e1ticas a esses valores.<\/p>\n<p>Diante disso, nenhum processo garante que seu projeto ser\u00e1 um sucesso por estar o seguindo, mesmo que seja &#8220;By The Book&#8221;.<\/p>\n<p>H\u00e1 uma preocupa\u00e7\u00e3o com o chamado Scrumbut, mas eu j\u00e1 vejo e vi projetos Scrum que n\u00e3o s\u00e3o Scrumbut e mesmo assim o software produzido, por mais \u00e1gil que seja, n\u00e3o tem qualidade e no primeiro refactoring voc\u00ea j\u00e1 entra no preju\u00edzo similar a um software desenvolvido em Cascata.<\/p>\n<p>Fato \u00e9 que esses valores e princ\u00edpios n\u00e3o garantem software com c\u00f3digo coeso, desacoplado, limpo, claro e facilmente lido, ou seja, com qualidade interna.<\/p>\n<p>Hoje minha preocupa\u00e7\u00e3o em todos os projetos \u00e9 a qualidade interna do software, n\u00e3o importa que metodologia seja adotada. Qualidade interna garante que o software tem boa sa\u00fade e \u00e9 f\u00e1cil de ser medida.<\/p>\n<p>Sa\u00fade do software \u00e9 o qu\u00e3o r\u00e1pido e efetivo ele se recupera de mudan\u00e7as e o qu\u00e3o limpo ele est\u00e1 de defeitos. Para se recuperar de mudan\u00e7as o software precisa ser limpo e claro, ser facilmente entend\u00edvel e lido.<\/p>\n<p>Livre de defeitos \u00e9 ter uma cobertura de testes que explorem e machuquem o c\u00f3digo at\u00e9 descobrir falhas que passam despercebidas.<\/p>\n<p>A grande maioria dos processos se preocupa mais com a qualidade externa do que a interna. N\u00e3o importa se voc\u00ea faz reuni\u00f5es em p\u00e9, tenha o cliente presente ou fa\u00e7a Scrumban ou at\u00e9 mesmo que voc\u00ea esteja entregando software r\u00e1pido, nada disso vai garantir qualidade e que n\u00e3o v\u00e1 ter preju\u00edzo no futuro.<\/p>\n<p>Vender qualidade externa tem um apelo comercial f\u00e1cil porque voc\u00ea n\u00e3o precisa comprovar a qualidade do software e sim do processo, o discurso \u00e9 sempre mais elegante do que falar em c\u00f3digo, principalmente para alta ger\u00eancia e burocratas, tanto \u00e9 que todos os modelos de qualidade reconhecidos avaliam o processo e n\u00e3o o produto.<\/p>\n<p>CMMi, ISO ou seja l\u00e1 que for, n\u00e3o garantem que o produto ser\u00e1 de qualidade e sim que o processo seja e se pararmos para pensar um momento, o processo realmente \u00e9 de qualidade, temos um conjunto de m\u00e9todos eficazes para produzir&#8230; processo e n\u00e3o produto.<\/p>\n<p>Um exemplo de qualidade interna de um software s\u00e3o os testes autom\u00e1ticos em suas diversas nuances como unit\u00e1rios, aceita\u00e7\u00e3o, integra\u00e7\u00e3o e funcional, mas n\u00e3o apenas isso, m\u00e9tricas de coes\u00e3o, cobertura, LOC, complexidade e tantas outras.<\/p>\n<p>No Mar\u00e9 de Agilidade eu fiz quest\u00e3o de enfatizar:<\/p>\n<blockquote><p>&#8220;N\u00e3o importa que processo voc\u00ea siga, se \u00e9 \u00e1gil ou n\u00e3o, se voc\u00ea n\u00e3o faz testes de Software voc\u00eas est\u00e1 errado em todos.&#8221;<\/p><\/blockquote>\n<p>N\u00e3o existe um software sem bateria de testes autom\u00e1ticos com qualidade, isso \u00e9 lenda. Em mais de 10 anos de profiss\u00e3o o que tenho notado \u00e9 que a grande maioria, sen\u00e3o todos, s\u00e3o fortemente acoplados e de baixa coes\u00e3o como consequ\u00eancia da falta de testes. Aplicar testes nesses softwares \u00e9 uma tarefa quase imposs\u00edvel e proibitiva em rela\u00e7\u00e3o a custos, sai mais barato fazer um software novo.<\/p>\n<p>Outra coisa que falei no Mar\u00e9 de Agilidade foi:<\/p>\n<blockquote><p>&#8220;N\u00e3o seja \u00e1gil, seja o melhor poss\u00edvel, porque ao procurar ser o melhor voc\u00ea invariavelmente vai se deparar com pr\u00e1ticas que o tornam melhor e a\u00ed voc\u00ea se tornar\u00e1 \u00e1gil&#8221;.<\/p><\/blockquote>\n<p>Assim como o lema da Rossi: &#8220;Armas n\u00e3o matam pessoas, pessoas matam pessoas&#8221; podemos induzir que: Processos n\u00e3o desenvolvem software, pessoas desenvolvem software!<\/p>\n<p>Ao trabalhar com pessoas, precisamos entender que modelos de neg\u00f3cios como software s\u00e3o de terceira onda [Alvin Toffler aqui] e n\u00e3o da segunda onda [industrialismo]. Qualquer analogia com modelos de segunda onda provocar\u00e1 insufici\u00eancia 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\u00e3o produz.<\/p>\n<p>Esse tema sobre pessoas e processos [como homem\/hora] ser\u00e1 escrito em outro artigo.<\/p>\n<p>Resumo desse artigo \u00e9: Pessoas s\u00e3o respons\u00e1veis por produzirem qualidade interna ao produto e n\u00e3o processo, invista nelas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Processos de desenvolvimento de software s\u00e3o quase todos iguais em termos de pr\u00e1ticas e todos podem assumir pr\u00e1ticas novas de outros processos, at\u00e9 cascata pode aplicar qualquer pr\u00e1tica de XP e Scrum em seu modelo naturalmente. O que diferencia esses processos n\u00e3o s\u00e3o as pr\u00e1ticas, s\u00e3o os valores. O problema \u00e9 que entender, compreender e [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[267,11,27,12,17,14,18,34,13],"tags":[231,366,271,251,370,253,381,279,365,411],"_links":{"self":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts\/764"}],"collection":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/comments?post=764"}],"version-history":[{"count":9,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts\/764\/revisions"}],"predecessor-version":[{"id":1910,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts\/764\/revisions\/1910"}],"wp:attachment":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/media?parent=764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/categories?post=764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/tags?post=764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}