O documento discute uma abordagem ágil para arquitetura empresarial, definindo arquitetura ágil como aquela que permite alterações rápidas, é verificável a qualquer momento, suporta desenvolvimento rápido e mantém o sistema sempre funcionando. Também apresenta princípios e práticas da arquitetura ágil, como valor nas pessoas, comunicação, foco no MVP e como o arquiteto deve atuar dentro de times ágeis.
Introdução, instalação e configuração do SonarQube
Arquitetura Ágil 2.0
1. Uma abordagem sobre Arquitetura Ágil em
uma estrutura Enterprise
junho/2017
Denis Santos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2. Arquitetura 2.0
<!-- Uma nova estrutura para gerar mais agilidade -->
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
}
<pre>
Uma abordagem prática sobre a Arquitetura Enterprise Tradicional VS
Arquitetura 2.0, para discutirmos sobre um novo formato de trabalho e
evoluirmos juntos no tema Agilidade.
</pre>
3. Definição de Arquitetura (Wikipedia)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
}
/* A arquitetura de software refere-se às estruturas fundamentais e de
alto nível de um sistema, à disciplina de criação e à documentação
dessas estruturas. Essas estruturas são necessárias para argumentar
sobre o sistema. Cada estrutura compreende elementos de software,
relações entre eles e propriedades de ambos os elementos e relações,
juntamente com o raciocínio para a introdução e configuração de cada
elemento.
A arquitetura de software é sobre fazer escolhas estruturais
fundamentais que são caras para mudar uma vez implementado.
Source: https://en.wikipedia.org/wiki/Software_architecture */
4. Definição de Arquitetura
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
}
// "Tudo o que é caro para mudar", Martin Fowler
// "Pau que nasce torto, nunca se endireita", Cumpadi Washington
/* A arquitetura define as partes de um sistema que são difíceis e
onerosos de mudar. Portanto, a arquitetura deve ser limpa (clean
architecture), simples, flexível, evolutiva e ágil para poder acompanhar
todas as mudanças que nos rodeiam. No mundo do desenvolvimento de
software de hoje, a mudança de requisitos, a mudança de ambientes, a
mudança de membros da equipe, a mudança de tecnologias, assim como a
arquitetura de nossos sistemas. */
5. O que é Arquitetura Ágil
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
}
// Arquitetura ágil permite
// substituir detalhes e é
// fácil de verificar.
// Deve suportar desenvolvimento
// de software ágil ao permitir
// os princípios do Manifesto
// Agil.
// Source: http://www.manifestoagil.com.br/
Permite alterações
rápidamente
Verificável a
qualquer momento
Suporta
desenvolvimento
rápido
Sistema sempre
funcionando
6. Por que precisamos de uma arquitetura Ágil
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
}
<h1>A Arquitetura tradicional permite:</h1>
<ul>
<li>... foco em definir regras, guidelines, padrões e com isso limitando as
implementações e inovação</li>
<!-- Abordagem em que o projeto deve ser concluído e aperfeiçoado antes da implementação ser iniciada -->
<li>... suporte ao BDUF (Big Design Up Front)</li>
<li>... e dificulta mudanças (pelo menos não sem dor)</li>
</ul>
7. Princípios da Arquitetura Ágil
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
}
<h1>Valor nas pessoas</h1>
<ul>
<li>Comunicação</li>
<li>Menos é Mais</li>
<li>Planeje e gerencie</li>
<li>Escolher a solução certa para a empresa</li>
<li>Qualidade na entrega</li>
<li>Modelagem e Documentação a moda ágil (Swagger, API Management, Confluence+Plugins</li>
</ul>
8. Práticas da Arquitetura Ágil
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
}
<ul>
<li>Ser parte do time (Scrum)</li>
<li>Manter o ritmo do desenvolvimento do projeto dentro dos times</li>
<li>Comunique-se com frequência e antecedência</li>
<li>Manter o foco no MVP</li>
<li>Arquitetura é importante, assim como testar também é!</li>
<li>Garantir que as boas práticas e padrões já definidos não sejam abandonados</li>
</ul>
9. Como deve atuar o arquiteto de sistemas dentro dos times ágeis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
}
<ul>
<li>Ser parte do time (Scrum)</li>
<li>Pensar no design da solução</li>
<li>Propagar a arquitetura dentro dos times</li>
<li>Suportar os desenvolvedores e DevOps</li>
<li>Verificar a implementação</li>
<li>Compartilhar as dúvidas e problemas dos times na comunidade de arquitetura</li>
<li>Evoluir os times para que sejam auto-gerenciáveis e desenvolvam a capacidade
técnica para a evolução e criação de novos produtos sem a dependência de um
arquiteto em cada etapa do desenvolvimento</li>
</ul>
10. Como deve se comportar a liderança da arquitetura
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
}
<h1>A liderança de arquitetura deve ser responsável pelas seguintes definições e atitudes:</h1>
<ul>
<li>Compreender os stakeholders</li>
<li>Pessoas Hands-on para realizar PoC, testar ferramentas e tomar decisões técnicas</li>
<li>Entender o hoje e estar ligado com o futuro</li>
<li>Ter uma visão "Big Picture"</li>
<li>Direcionar os times ágeis, criar lideranças técnicas</li>
<li>Organizar, liderar e disseminar temas arquiteturais nos times</li>
<li>Incentivar inovação</li>
</ul>
11. SAFe - Enterprise to Lean
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
}
// Arquitetura é uma colaboração
// Quanto mais monolítico, maior será o "Runway"
// Construa uma arquitetura simples que funcione
e seja verificável rápidamente
// Em caso de dúvida, faça uma PoC (codifique ou modele)
// Quem construiu, é quem deve testar
// Não monopolize a inovação
13. (Arquitetos/Principal Developers) X Disciplined Agile Delivery
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Reduzir os riscos de trabalhos
iniciais de arquitetura
Visão preliminar arquitetural
Visão arquitetural
Orienta os esforços de
desenvolvimento
Os proprietários da arquitetura
facilitam decisões
arquiteturais
ao longo da construção Spikes para
explorar uma
questão técnica
Documentação
arquitetural e
modelagens sempre
atualizados conforme
necessário
Source: http://www.disciplinedagiledelivery.com/introduction-to-dad/
14. Visão de um Arquiteto Enterprise Tradicional
O Arquiteto
Time A Time B
Time C
Time DTime E
Time F
Manager
Manager
Manager
ManagerCoordenador
PO's
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Analista de Infra
Analista de Infra
Analista de Infra
Analista de Infra
Coordenador
Coordenador Coordenador
Coordenador
15. upgrade(-hierarquias, +hand-on, +comunicação)
Devs + QAs
Heads
Arquiteto de Sistema DevOps
Arquiteto(s) e/ou
Principal Developer(s)
Product Owner Scrum Master
Full Stack Team
Product Owner Scrum Master
Strategic Team
Agile Team 1.0 Agile Team 2.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
OU