- Pense na arquitetura de software desde o primeiro dia do projeto.
- Use os riscos identificados para orientar o design da arquitetura de software.
- Acompanhe a evolução dos riscos junto com o backlog do produto.
1. Globalcode – Open4education
Arquitetura de Software em Times Ágeis
Sérgio Giraldo
Scrum Master/Arquiteto de Software no HSBC
sergiorgiraldo@outlook.com
@sergiorgiraldo
2. Globalcode – Open4education
Arquitetura de Software
“The software architecture of a computing system
is the set of structure needed to reason about the
system, which comprise software elements,
relations among them, and properties of both.”
3. Globalcode – Open4education
Agile Manifesto,
Frameworks, Times
“Working software over comprehensive
documentation” {TOGAF, FEAF}
1 arquiteto de software X time auto-organizado
responsável pela arquitetura
5. Globalcode – Open4education
Arquitetura evolutiva/Design
emergente
Em times ágeis, o design do software emerge das
entregas feitas iterativamente e é resultado das
decisões e intenções do time
O design pode ser separado em 2 partes:
arquitetura de software e detalhes
6. Globalcode – Open4education
Dia 1
Se o design emerge dia após dia, a arquitetura do
software deve ser pensada desde o primeiro dia do
seu sistema
8. Globalcode – Open4education
Arquitetura o suficiente
Você pode ter sucesso ou falhar
Você pode ignorar, aceitar ou implementar
arquitetura de software
Faça apenas o necessário para seu sistema
alcançar os objetivos
14. Globalcode – Open4education
Agile e arq. orientada por
risco
Cada iteração deve reavaliar se há riscos novos e
se as ações mitigatórias continuam suficientes
Backlog de estórias e riscos
15. Globalcode – Open4education
Meus projetos
Sprint 0: workshop de riscos
Reuniões quinzenais de 30 minutos com o time
apenas sobre arquitetura de software
Spikes!!!
16. Globalcode – Open4education
3 bullets
Pense na arquitetura de software desde o 1º dia
Use riscos para orientar a arquitetura
Acompanhe os riscos junto com seu backlog
“A software architecture is an abstraction of the run-time elements of a software system during some phase of its operation. A system may be composed of many levels of abstraction and many phases of operation, each with its own software architecture.” FIELDING2
1: http://resources.sei.cmu.edu/asset_files/TechnicalReport/1996_005_001_16457.pdf
2: http://bit.ly/1fe7BXX