Rumo a uma arquitectura Agile
A arquitectura de software é o esqueleto de qualquer sistema. É a arquitectura que define o comportamento do sistema no que toca aos requisitos, tanto funcionais como não-funcionais. Ao passo que o modelo em cascata é rígido, o modelo ágil é mais flexível às alterações dos requisitos e essas alterações podem implicar a própria arquitectura. Uma arquitectura Agile permite a expansão sustentável do sistema de forma gradual, simples e actualizável à medida que o projecto se torna mais complexo.
Enquanto que a arquitectura é uma actividade que ocorre uma vez no modelo em cascata com datas de início e fim bem definidas, numa abordagem ágil a arquitectura é um processo contínuo sem uma data de fim estipulada. Portanto, em Agile a arquitectura pode ser regularmente sujeita a alterações.
As alterações a um projecto são aplicadas através do desenvolvimento iterativo e incremental. No Scrum estas iterações são os chamados sprints (duram entre duas a quatro semanas). Qualquer alteração é celeremente discutida e, dada a focalização da framework na colaboração entre a equipa, toda a questão é imediatamente resolvida entre os seus membros. Uma vez que a arquitectura é o esqueleto, é muito sensível à mudança. A alteração à plataforma terá impacto em várias iterações e, no limite, levará à reengenharia do projecto.
Principais responsabilidades do arquitecto tradicional
Focar-se no todo
Deve considerar como é que o sistema vai ficar dentro de alguns meses (ou anos) e também deve considerar os sistemas envolvidos e a comunicação entre eles.Ser orienteado à compliance
Deve ter em consideração as questões de compliance como sejam leis, licenças ou standards.Produzir blueprints
Documentos e diagramas que descrevem a arquitectura sob várias perspectivas. Estes são os entregáveis usados para a implementação do sistema.Não precisa de muita experiência prática
O que o arquitecto tem de fazer é produzir os entregáveis para a equipa de desenvolvimento. Ainda que tenha experiência como developer, o seu papel está mais focado na orientação da equipa na construção do sistema desenhado.Principais responsabilidades do arquitecto Agile
Ponderar o equilíbrio entre o agora e a visão global
Tem de pensar no que está a acontecer durante o desenvolvimento e enquadrá-lo com a visão global de todo o sistema.Experiência prática
É também developer e trabalha na implementação do sistema, o que lhe permite avaliar os resultados das decisões de arquitectura de forma directa.Produzir protótipos para tomar decisões informadas
Um protótipo ou uma prova de conceito podem revelar se uma decisão é ou não fazível e como afecta o sistema. É um trabalho colaborativo de comunicação com a equipa e não uma tarefa isolada.Focar-se na sustentabilidade
As decisões são feitas para conseguir uma arquitectura sustentável, uma que suporta o sistema a longo prazo. Competências pessoais essenciais são o sentido de responsabilidade e a empatia. Enquanto membro da equipa, experimenta em primeira mão os resultados das suas decisões, o que aumenta a sua responsabilidade face à abordagem em cascata, na qual as decisões transitam para a equipa que as implementa.Duração de uma arquitectura de software Agile
O importante da arquitectura é saber quando é que tem que começar, porque no modelo Agile não há um momento pré-determinado para se começar uma fase. Tipicamente usa-se o sprint #0, um sprint especial para configuração do ambiente de desenvolvimento e tomada de decisões fundamentais como linguagens de programação, plataforma, base de dados, etc. Para evitar deslizes no período de tempo destinado a estas actividades é previamente acordada uma data de fim (iteração de duração idêntica às iterações regulares) para então se dar início aos sprints normais.Dificilmente a arquitectura estará pronta quando os sprints seguintes começarem, mas a definição de uma arquitectura ágil é um processo contínuo. Não é possível por de pé um sistema sem garantir que a arquitectura o suporta.
Agile teams don't necessarily create agile software architectures.~Simon Brown
But a good architecture enables agility.
Princípios Determinantes
Para não complicar demasiado as coisas na elaboração da arquitectura (que podem custar caro ao desenvolvimento), há dois princípios a seguir na tomada de decisões:- Keep It Simple, Stupid (KISS)
- You Aren’t Gonna Need It (YAGNI)
we should take decisions not in the last possible moment,
but rather in the most responsible one.
Ao preparar uma decisão relativa à arquitectura, é aconselhável fazer pequenas preparações que não levem muito tempo se o grau de certeza é elevado e, claro, discutir com os colegas de equipa, não fosse a comunicação directa um dos pilares da framework.
Documentação
Numa abordagem ágil do processo de desenvolvimento de software, assim como são usadas iterações para fazer o código, também podem ser usadas iterações para gerir e manter a documentação. Começa-se pelos aspectos mais importantes do sistema e vai-se adicionando mais informação de forma contínua ao longo das iterações. Não existem ferramentas específicas para produzir documentação no mundo Agile. Podem ser desenhos num quadro branco, post-it, documentos de texto ou wikis por exemplo. Para manter os diagramas é preferível uma ferramenta como o Microsoft Visio ou o draw.io, mas existem outras ferramentas.Relacionado: Metodologias ágeis e documentação
fonte: infoQ.com
Licença CC BY-SA 4.0
Silvia Pinhão Lopes, 2.2.16
Sem comentários: