|
05 de fevereiro de 2010, por Denis Ferrari em Metodologias Nossa área de desenvolvimento de software é muito nova, e como consequência disso, ainda estamos aprendendo quais são as técnicas que funcionam e quais só atrapalham o dia-a-dia dos nossos projetos. É dever de todo profissional da área buscar meios para melhorar o nosso objetivo principal: Construir softwares que atendam aos clientes, aos usuários e às equipes de desenvolvimento. Práticas ágeis são um meio e não um fim, não deve-se utilizar as técnias se não é evidente quais problemas elas tentam resolver, usar por usar não melhora em nada o resultado final do seu projeto. Você só deve usar essas práticas se realmente entender porquê elas são necessárias, e não porquê estão na moda.
Vamos observar os benefícios de algumas técnicas utilizadas no meio ágil: Com TDD o programador cria o hábito de planejar suas tarefas antes de executá-las, isso se deve ao fato de que nessa técnica você começa pela elaboração de uma lista de testes para o artefato que será desenvolvido, e só depois começa a codificá-lo. Outro benefício do TDD é que o programador deve usar o seu código antes de implementá-lo, apesar de parecer estranho é uma quebra de paradigma excelente começar a codificação pelo teste e tomar as decisões de design do código antes de implementá-lo, isso reduz o retrabalho pois o programador percebe no início da codificação como ficará seu código ao final dela. Muitos gestores ainda não acreditam nos benefícios da programação em par, sendo um dos motivos a sensação de perda de produtividade quando dois programadores são alocados para a mesma tarefa, essa sensação é falsa, pois existem uma série de fatores que devem ser levados em consideração quando falamos de produtividade. O ritmo de desenvolvimento da dupla é garantido pela falta de distrações que um programador sozinho teria, dificilmente durante o desenvolvimento em par o “piloto” irá desviar do foco. Outro benefício da programação em par é a revisão que o “co-piloto” faz observando a codificação do piloto, muitos problemas podem ser identificados em tempo de codificação. A comunicação constante entre os programadores faz com que cada decisão seja mais bem pensada, e ainda traz um grande benefício: Dois membros da equipe vão conhecer aquele trecho do código, isso é essencial para contornar problemas de comunicação e troca de membros da equipe durante o desenvolvimento dos projetos. A programação em par protege o investimento do projeto pois reduz a taxa de retrabalho da equipe e gera um código de qualidade superior, afinal, duas cabeças pensam melhor do que uma. Desenvolver um software de forma iterativa e incremental traz uma série de benefícios, porém, também traz uma série de problemas. Desenvolver software em ciclos de tempo fechados faz com que cada minuto seja precioso, por isso, vários impedimentos são identificados ao longo do desenvolvimento e resolvidos a medida que as entregas são realizadas no final de cada ciclo. Como o desenvolvimento acontece em ciclos, a equipe de desenvolvimento pode aprender com os problemas enfrentados no ciclo anterior, isso permite que o processo de cada equipe possa ser melhorado continuamente, e essas melhorias sempre atacam um grande impedimento do clico anterior, ou seja, não são apenas melhorias por melhorias. Processos iterativos e incrementais também auxiliam a contornar o grande vilão dos projetos de software que é a mudânça de escopo, caso o cliente descubra uma nova necessidade a mesma poderá ser implementada no próximo ciclo, já que o ciclo em desenvolvimento não deve ter seu objetivo alterado. Caso a necessidade do cliente mude (ou melhor, quando a necessidade do cliente mudar) e o ciclo desenvolvido não for mais necessário, o cliente só “perde” aquele ciclo, ou seja, o custo da alteração de escopo fica sendo o custo do desenvolvimento do novo ciclo. Outra característica interessante é que nessa forma de desenvolvimento os feedbacks dos usuários chegam muito mais cedo do que no modelo tradicional, já que no final do ciclo a equipe entrega um parte funcional do software, e já que o software entra em produção mais cedo o cliente também começa a usufruir dos benefícios do sistema mais cedo. As técnicas ágeis são um meio para solucionar alguns dos problemas mais comuns dos ambientes de desenvolvimento como conhecemos (falta de comunicação, retrabalho, escopos rígidos, custos altos, falta de testes, etc.), elas propõem uma nova forma de trabalho, que tem se mostrado muito eficiente para equipes com o perfil adequado. Essas técnicas influenciam positivamente em todas as vertentes de avaliação da qualidade de um software desde que sejam aplicadas de forma correta. Quer saber mais sobre as técnicas citadas? Seguem algumas referências: Sobre TDD:
Sobre Programação em Par:
Sobre desenvolvimento iterativo e incremental:
Qual a sua experiência sobre as técnicas ágeis? Você acha que elas são o caminho para aumentarmos a qualidade dos softwares que desenvolvemos? Aguardo feedbacks! ![]()
Comentários:
8 Comentários postados em "Práticas ágeis são o caminho para a qualidade de software?"
Fabricio Matos on fevereiro 5th, 2010 at 18:14 #
Muito bom. >Práticas ágeis são um meio e não um fim >Você só deve usar essas práticas se realmente entender porquê elas são necessárias. Eu poderia abrir um coco com um canivete, mas nem por isso o canivete seria a ferramenta mais adequada para esse trabalho. Porém, se eu fosse o Ninja do Canivete Vermelho, provavelmente iria fazer questão de utilizá-lo até para derrubar árvores, afinal, eu sou Ninja! Tem também aqueles que possuem um canivete, mas nunca viram um facão, nem muito menos uma motosserra. Para esses também pode ser um tanto natural abrir o coco com o canivete ou mesmo tentar usá-lo para derrubar árvores. Fazer o quê, né? Abraços,
Geraldo Neves on fevereiro 9th, 2010 at 12:23 #
Muito bom. Está de parabéns. Acessei este site pela lista do grup de Engenharia de Software de Alagoas, colocarei-o nos meus favoritos
Gabriel on fevereiro 11th, 2010 at 1:23 #
Muito bom o artigo.
Marcelo F Andrade on fevereiro 11th, 2010 at 2:04 #
Gostei muito do post, parabéns!
Alessandro on fevereiro 12th, 2010 at 15:57 #
O artigo ficou muito genérico e falou apenas o que todos já sabem. Afinal, quem não sabe que o escopo de um projeto de desenvolvimento de software não deve ser fechado? E que software, deve ser desenvolvido de forma iterativa e incremental? E que isso pouco tem a ver com métodos ágeis? Desculpe, mas me o uso da palavra “agile” foi utilizada apenas para chamar atenção ao texto.
Denis Ferrari on fevereiro 12th, 2010 at 16:35 #
Oi Alessandro, O objetivo do artigo realmente não era aprofundar em nenhuma das técnicas, mas sim apresentar uma visão geral de como elas auxiliam na obtenção da qualidade. Por outro lado, não concordo que todos saibam como trabalhar escopo e iterações, pelo menos não é essa a visão que tenho do mercado. Concordo que no meio ágil essas práticas são conhecidas, mas esse blog não se restringe à agilistas e sim a todos os envolvidos com desenvolvimento de software. Abraços!
André Faria Gomes on setembro 2nd, 2011 at 16:39 #
Excelente artigo Denis. Acabei de postar sobre as principais práticas ágeis. A idéia é reunir uma lista com tudo lá. Se você puder colaborar… http://blog.andrefaria.com/lista-com-todas-as-praticas-ageis
Denis Ferrari on setembro 22nd, 2011 at 12:11 #
Oi André, Muito bacana a idéia, vou contribuir assim que puder. Abraços! Deixe um comentário
|
|