Agilidade de Ponta-a-Ponta com Arquiteturas Evolucionárias
Agilidade de Ponta-a-Ponta com Arquiteturas Evolucionárias View more presentations from Breno Barros
Agilidade de Ponta-a-Ponta com Arquiteturas Evolucionárias View more presentations from Breno Barros
Palestra do Guy Kawasaki sobre como se começar um negócio. Vale a pena conferir.
Esse start-up vai mudar o mundo.
(Source: mylifeisgreen.com)
Essa é para aqueles que acham que Java é lento. tcs…tcs…
Minha motivação para escrever post, partiu da percepção que até hoje muitos caíram e outros continuam caíndo na armadilha da palavra “Test” ao adotar a prática Test-Driven Development (TDD). Por que armadilha? Pois a palavra “Test”, em engenharia de software, sempre nos faz pensar no primeiro momento, em atividades para garantir a qualidade (Quality Assurance) do software que estamos produzindo ou mantendo.
Para quem entendeu bem o conceito da TDD, perceberá que o mesmo não tem nada a ver com a disciplina de testes. O próprio Kent Beck, criador da TDD, uma vez falou: “TDD encoraja designs de código simples e inspira confiança”.
Na verdade, os testes unitários criados em TDD tem uma parcela de garantia de qualidade funcional, mas não é seu principal objetivo. O principal objetivo da TDD é ajudar no design dos seus códigos, promovendo a refatoração.
Nota: Vale destacar que por refatoração entende-se: “Mudar a implementação interna de um artefato de software, sem mudar seu comportamento desejado”.
Além disso, se você é um estudioso da prática TDD, já deve ter lido no site do Scott W. Ambler (caso contrário clique aqui) a seguinte frase: “What is the primary goal of TDD? Onde view is the goal of TDD is specification and not validation (Martin, Newkirk, and Kess 2003). In other words, it’s one way to think through your design before your write your functional code.”.
Percebeu? Mais uma vez: A TDD é sobre Design e não sobre Testes.
Se você ainda não está completamente convencido, dê uma olhada no próprio processo do TDD:
Repare que fiz questão de destacar em negrito/itálico o que devemos focar no final do processo TDD. É impressão minha ou não foi comentado nada sobre: “Verifique com seu especialista de domínio, analista de negócio, product owner, analista de teste ou QA, se o comportamento obtido está conforme desejado.”? É, não tem nada disso.
Com isto fica claro perceber, o porque que quando adotamos somente TDD as seguintes situações emergem durante o projeto:
Uma vez, em 2002, um professor meu de Engenharia de Software da UFPA falou: “Softwares sem constantes refatorações, virarão hardwares com passar do tempo”. E isto ficou na minha cabeça até hoje, como premissa em qualquer projeto que participei.
Em suma, vejo a prática TDD como uma das que compõe o alicerce para atendimento do princípio:“Contínua atenção à excelência técnica e bom design, aumenta a agilidade”, presente no Manifesto Ágil. Ou seja, use-a para promover melhorias nos seus códigos e para identificar padrões arquiteturais emergentes na sua arquitetura. Não a adote em substituição às outras práticas de garantia de qualidade, pois isto será tão negativo quanto não ter nenhum controle de qualidade em seu projeto.
Bons designs…
Rework: O livro de cabeceira para qualquer empreendedor.
-
Este post é dedicado a um dos melhores livros que li nos últimos anos, o REWORK da 37Signals. Sim! A 37Signals é a empresa criadora do Ruby on Rails e de uma série de pequenas aplicações web-based de grande sucesso. O REWORK reune pensamentos, experiências, lições aprendidas e dicas para criar/manter/renovar uma empresa enxuta, pragmática e eficiente. Vale a pena conferir.
Os Innovation Games são práticas alternativas, simples, objetivas e divertidas, para colaborar tanto com clientes e usuários quanto com equipes de desenvolvimento para garantir a entrega de softwares de sucesso.
Confira esse artigo na Edição 45 da Revisto MundoJ e veja como algumas dessas práticas podem ser utilizadas em um desenvolvimento ágil, de forma a melhorar o planejamento, motivação e comunicação de todos os envolvidos.
O Design Emergente é uma prática ágil para identificar padrões comuns que são identificados, emergidos, ao longo de um desenvolvimento ágil.
Confira esse artigo na Edição 43 da Revista MundoJ e veja como podemos identificar esses padrões a partir do monitoramento contínuo da qualidade dos códigos-fonte de projetos com os indicadores e informações providas pela ferramenta Sonar.
Até a próxima e boas arquiteturas.