Antecipando o Sucesso de uma
Arquitetura de Software Emergente
em Times Ágeis Sérgio GiraldoBelém - 2016
Sérgio Giraldo
Físico de formação, engenheiro de software por paixão, ágil por convicção.
Itaú e HSBC durante 10 anos , arquiteto de software e transformador ágil.
Globant desde 2015, arquiteto de software e agile coach.
“Quality in a service or product is not what you put
into it. It is what the client or customer
gets out of it.”
Peter Drucker
The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.
Indivíduos e interaçõesmais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano
Indivíduos e interaçõesmais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano
Arquitetura emergente
Instabilidade nos requisitosRisco técnicoValor rapidamenteCulturaExperiência em arquitetura
Responder a mudanças Mitigar riscos Arquitetura emergente Bduf Frameworks e modelos
Instabilidade nos requisitos
Efeito causado por requisitos incompletos ou em mudança
Risco técnico
Arquitetura muito complexa leva a risco técnico.
Causas Requisitos arquiteturalmente significativos; Integrações com outros sistemas; Envolvimento com sistemas legados.
Valor Rapidamente
Receber valor o mais rápido possível.O seu cliente precisa receber algo significativo do sistema antes de todas as funcionalidades estarem prontas, e.g., um MVP
Cultura do seu time
Se o seu time tem uma mentalidade ágil, isto auxilia a responder a mudanças rapidamente.
Fatores chave: Colaboração; Confiança; Tamanho do time; Experiência com Ágil
Cultura da empresa
Qual o ambiente em que acontece o desenvolvimento? Uma empresa que é simpática aos princípios da agilidade auxilia um time a ser ágil
Experiência em arquitetura
Arquitetura em times ágeis é uma disciplina compartilhada. Um time experiente é capaz de tomar decisões baseadas em conhecimentos prévios; caso contrário, as decisões necessitam ser mais explicitadas.
Instabilidade nos requisitosRisco técnicoValor rapidamenteCulturaExperiência em arquitetura
Responder a mudanças
Sua arquitetura deve estar aberta a modificações e representa continuamente a melhor solução para o problema.
Mitigar riscos
O time faz a o design de arquitetura o suficiente para reduzir o risco a um nível satisfatório (aqui temos o nível em que não há riscos capazes de inviabilizar o projeto).
Arquitetura emergente
O time faz apenas o necessário no início (define a tecnologia e os padrões elementares de arquitetura) e relega as outras decisões para a implementação.
Design completo antecipado (BDUF)
Aqui o time faz o design completo da arquitetura antes do início de qualquer atividade de implementação
Utilização de frameworks e modelos
Uso de modelos e componentes existentes às expensas de restrições adicionais aplicadas ao sistema.
Responder a mudançasMitigar riscosArquitetura emergenteBdufFrameworks e modelos
Adaptado de Michael Waterman