Minha abordagem ao desenvolvimento ágil é criar "fatias verticais". Pego uma história da interface do usuário para armazená-la e implementá-la. Eu tenho algumas ferramentas leves que eu uso para ajudar nesse processo (como uma estrutura simples IRepository / UnitOfWork que possui adaptadores para In Memory (geralmente para teste), Entity Framework e NHibernate. argumento de se deve-se usar um O / RM, mas qual usar.E para mim depende do ambiente.
Descobri que essa abordagem supera os pessimistas em relação ao desenvolvimento ágil porque eles conseguem ver o software em funcionamento mais rapidamente do que se eu gastasse muito tempo na frente criando um núcleo. Combinado com o Design Orientado a Domínio e algumas outras técnicas que eu uso, geralmente sou capaz de obter muitas funcionalidades de trabalho na frente dos usuários muito rapidamente.
O teste de unidade TDD ou mesmo post-hoc é importante porque parte da manutenção da velocidade à medida que seu aplicativo cresce é ter a rede de segurança fornecida por um conjunto abrangente de testes de unidade. "Eu preciso fazer uma alteração nesta aula, como garantir que não quebrei nada?" Com um bom conjunto de testes de unidade, é tão simples quanto executar esse conjunto de testes. Sem, torna-se uma questão de executar manualmente o aplicativo para verificar. Não é nada divertido.