Desenvolvimento

Ξ Deixe um comentário

Como fica a arquitetura de software em um projeto ágil?

publicado por Anderson Diniz Hummel

Como fica a arquitetura de software em um projeto ágil?Existem algumas respostas prontas para essa pergunta, todavia atacar o cerne da questão nem sempre é fácil, pois envolvem a transição e a reeducação de profissionais acostumados à forma antiga de trabalhar.

Antes de mais nada, as respostas prontas a essa pergunta são: os textos de Arquitetura Evolucionária do Neal Ford, ou as técnicas de Arquitetura Ágil do J. D. Meyer, ou os textos de Arquitetura Lean do James O. Coplien.

Já para uma resposta mais completa precisamos entender o peopleware envolvido.

Nossos técnicos foram ensinados a pensar na arquitetura de um software antes do início do projeto e as metodologias ágeis exigem que a equipe técnica refine a arquitetura a cada iteração.

Isso ocorre porque as metodologias ágeis em sua maioria abraçam o escopo flexível, que por consequência trazem requisitos não funcionais e atributos de qualidade flexíveis no mesmo grau.

Figura 1 - Visão tradicional e oposta a da arquitetura de software em um projeto ágil

Figura 1 – Visão Tradicional

Outro contraponto é que ao focar em entregas parciais do software funcionando, nem sempre se tem o tempo necessário para implementar ou comprar toda a arquitetura supostamente necessária para todo o projeto logo na primeira interação.

De certa forma estes dois pontos fazem com desenvolvedores e arquitetos desistam de pensar fora da caixa e abraçar a causa do desenvolvimento ágil pois acreditam que isso gera retrabalho e que suas soluções vão estar sempre incompletas.

Esses profissionais estão acostumados com a “forma normal”, na qual se planeja, se implementa e se executa toda a arquitetura no início do projeto. Essa concepção está mostrada na figura 1, os itens em cinza são itens relacionados a arquitetura do software e os itens em vermelho relacionados ao design.

Arquitetura de Software em um Projeto Ágil

Em contra partida a arquitetura de software em um projeto ágil vai exigir que a arquitetura seja incrementada durante as interações do seu projeto, pois o detalhamento dos requisitos não funcionais do projeto ocorre o tempo todo. Estes itens são representados no incremento de caixas na figura 2 entre as iterações

Figura 2 - Visão da Arquitetura de Software em um projeto ágil

Figura 2 – Visão Ágil

A prática tem mostrado que as premissas iniciais de um projeto dificilmente são todas corretas, e a adição de novos componentes na arquitetura de um software podem ocorrer por diversos motivos, como: seu cliente mudou de ideia e quer uma integração com o Facebook; o mercado mudou e o projeto precisa ser melhor que o do concorrente; ou o projeto teve mais sucesso que o esperado e você precisa de um ambiente clusterizado. Estes itens arquiteturais descobertos durante a execução do projeto são representados pelos itens em azul na figura 2.

Quando se trabalha planejando toda a arquitetura antes do início do projeto, também é comum que sejam adicionados componentes arquiteturais completamente desnecessários. Isso pode ter como causa o complexo de Nostradamus ou o complexo do café da manhã no hotel.

No complexo de Nostradamus existe uma previsão que algo catastrófico vai acontecer e que se a arquitetura não for robusta, abstrata ou maleável o suficiente o mundo vai acabar… Mas no fim a catástrofe não ocorre e muito dinheiro foi jogado fora.

O complexo do café da manhã do hotel ataca a todos os clientes que exigem que no café da manhã do hotel existam frutas de todas as regiões do brasil, rosquinhas e pães de todos os lugares do mundo mas no fim precisavam apenas de um copo de café com leite e um pão na chapa.

Itens relacionados a estes dois complexos são mostrados na figura 1 e não na figura 2, pois por não possuírem retorno do investimento tangível dificilmente serão adicionados a uma arquitetura que evolui de acordo com o projeto.

Não é que as práticas tradicionais não sejam adequadas para o mundo ágil, na realidade, existe uma necessidade de adaptação de alguns dos conceitos e técnicas clássicas de desenvolvimento de software assim como dos profissionais envolvidos.

Dessa forma voltamos as respostas prontas, que é a aplicação de  conceitos e técnicas de Arquitetura Evolucionária, Arquitetura Ágil, ou Arquitetura Lean, os quais serão abordados em outros textos.

Referências

http://www.ibm.com/developerworks/br/java/library/j-eaed10/

http://www.amazon.com/Lean-Architecture-Agile-Software-Development/dp/0470684208

http://apparch.codeplex.com/wikipage?title=How%20To%20-%20Design%20Using%20Agile%20Architecture&referringTitle=How%20Tos

[Crédito da Imagem – Desenvolvimento de Software – ShutterStock]

Autor

Na Adaptworks sou Agile Coach. Na Universidade Presbiteriana Mackenzie sou professor dos cursos da FCI das disciplinas que envolvem Java nos mais diversos sabores. Na Faculdade Impacta Técnologia sou professor de Arquitetura de Software do curso de Pós Graduação em Engenharia de Software.

Anderson Diniz Hummel

Comentários

You must be logged in to post a comment.

Busca

Patrocínio

Publicidade



Siga-nos!

Newsletter: Inscreva-se

Para se inscrever em nossa newsletter preencha o formulário.

Artigos Recentes