1 of 29

Gabriel S. Kohlrausch

Consultor/Technical Advisor at EximiaCo

gabriel@eximia.co

Arquiteturas que

Evoluem

2 of 29

PÁGINA 2

SOFTWARE MUDA

‘‘Há muito tempo acreditamos que, quando a taxa de mudança dentro de uma instituição se torna mais lenta do que a taxa de mudança externa, o fim está à vista. A única questão é quando.’’

Jack Welch

3 of 29

PÁGINA 3

A primeira diz que, ao longo do tempo, um sistema de software precisa ser continuamente adaptado, recebendo novas “adaptações”, para se manter relevante e satisfatório.

LEIS DE LEHMAN

4 of 29

PÁGINA 4

A segunda aponta que, enquanto essas “adaptações” são feitas, o software se torna mais complexo, exceto quando existam esforços explicitamente direcionados para mitigar essa complexidade.

LEIS DE LEHMAN

5 of 29

PÁGINA 5

Percebemos valor de um software através de suas funcionalidades e pela sua arquitetura.

QUAL O VALOR DE SOFTWARE ?

6 of 29

PÁGINA 6

O ritmo das mudanças, tecnológicas e de negócios, está acelerado e está ficando cada vez mais acelerado. Aliás, essa é a característica que melhor justifica as atividades de arquitetura.

BOAS ARQUITETURAS SUPORTAM MUDANÇA

7 of 29

PÁGINA 7

ARQUITETURA DE SOFTWARE

COMPONENTES

RESPONSABILIDADES

RELACIONAMENTOS

+

ESTRATÉGIA

(Objetivos de negócio, restrições e atributos de qualidade)

BUSCANDO O MENOR RISCO/CUSTO

8 of 29

PERFORMANCE

PÁGINA 8

TRADE-OFFS

SECURITY

AVAILABILITY

DATA

SCALABILITY

FUNCIONALIDADES

TEMPO

9 of 29

PERFORMANCE

PÁGINA 9

EVOLVABILITY COMO ATRIBUTO DE QUALIDADE

SECURITY

AVAILABILITY

DATA

SCALABILITY

FUNCIONALIDADES

TEMPO

EVOLVABILITY

10 of 29

PÁGINA 10

Atributo de qualidade relacionado à capacidade de um sistema “evoluir”, tanto para atender demandas de negócio como para “acomodar” novidades tecnológicas, sem comprometer objetivos do negócio, desrespeitar restrições ou romper os demais atributos, minimizando custo ou risco.

EVOLVABILITY

11 of 29

PÁGINA 11

Capacidade de suportar mudanças incrementais, preservando a eficiência no decorrer do tempo, sendo guiada por fitness functions, que comprovam continuamente adequação a parâmetros de qualidade bem-definidos em múltiplas dimensões.

ARQUITETURA EVOLUCIONÁRIA

12 of 29

PÁGINA 12

O “represamento” das iniciativas para modernização tecnológica é uma das maiores causas para a “morte” dos sistemas de software. Mesmo quando tecnologias não agregam “algo novo”, o afastamento da trajetória evolutiva das ferramentas, técnicas e práticas por um tempo prolongado aumenta de maneira exponencial o custo e risco para a mudança, apesar dos custos de oportunidade.

MUDANÇAS INCREMENTAIS

13 of 29

PÁGINA 13

MUDANÇAS TECNOLÓGICAS

Não conseguimos predizer quando mudanças impactantes do contexto de desenvolvimento irão ocorrer. Nem mesmo conseguimos antecipar quais serão “persistentes” (se é que essa palavra é aplicável), entretanto, sabemos que mudanças acontecem e o ritmo parece ser cada vez mais acelerado.

14 of 29

PÁGINA 14

SOFTWARE LEGADO

‘‘Um sistema se torna legado quando nossa capacidade de pagar dívidas técnicas é menor que a necessidade de contrair novas.’’

Fernando�Paiva

15 of 29

PÁGINA 15

MUDANÇAS INCREMENTAIS

16 of 29

PÁGINA 16

Architecture fitness functions são um tipo de função objetivo que é usada para resumir o quão perto uma determinada solução de arquitetura de software está de atingir os objetivos definidos.

GUIADA POR FITNESS FUNCTIONS

17 of 29

PÁGINA 17

FITNESS FUNCTION DEPENDENCY CYCLES

18 of 29

DETERMINANDO O VOLUME

IDEAL” DE ABSTRAÇÕES

PÁGINA 18

COMPONENTES MUITO ABSTRATOS E INSTÁVEIS

COMPONENTES CONCRETOS E ESTÁVEIS

Domain.Core�A = 0.13�I = 0.48

Projeto: Application.Schedule�A = 0.08�I = 0.93

Project: Application.Authentication�A = 0.5�I = 0.84

https://dateo-software.de/blog/get-started-with-ndepend

19 of 29

PÁGINA 19

FITNESS FUNCTION PARA ACOPLAMENTO

20 of 29

PERFORMANCE

PÁGINA 20

MÚLTIPLAS DIMENSÕES

SECURITY

AVAILABILITY

DATA

SCALABILITY

FUNCIONALIDADES

TEMPO

FITNESS FUNCTIONS

Load Testing

21 of 29

LOAD TESTING COMO FITNESS FUNCTIONS

PÁGINA 21

22 of 29

PÁGINA 22

O estabelecimento de governança arquitetural passa pela definição de guidelines e guard rails que determinam um “jeito” de fazer as coisas e limites claros dentro dos quais há autonomia de atuação.

EVOLVABILITY DEMANDA “GOVERNANÇA ARQUITETURAL”

23 of 29

PÁGINA 23

GUIDELINES E GUARDRAILS

https://github.com/TNG/ArchUnitNET

24 of 29

PÁGINA 24

GUIDELINES E GUARDRAILS

https://github.blog/2016-02-03-scientist/

https://github.com/github/scientist

https://github.com/MisterSpex/misterspex-scientist

25 of 29

PÁGINA 25

GUIDELINES E GUARDRAILS

https://github.blog/2016-02-03-scientist/

https://github.com/github/scientist

https://github.com/MisterSpex/misterspex-scientist

26 of 29

PÁGINA 26

‘‘Entretanto, não ignoramos o fato que toda escolha implica em uma renúncia. Sempre haverão trade-offs. Nada é bom para tudo!’’

Elemar Jr.

TRADE-OFFS

27 of 29

O QUE FAZER AMANHÃ?

PÁGINA 27

OBJETIVOS DE NEGÓCIO, RESTRIÇÕES E ATRIBUTOS DE QUALIDADE ESTÃO EVIDENTES?

No início dos projetos, a principal preocupação dos arquitetos é explicitar a estratégia – padrões coerentes para tomada de decisão – que deve ser observada nas decisões arquiteturais.

CONSEGUIMOS EXPRESSAR NOSSA ESTRATÉGIA ATRAVÉS DE FITNESS FUNCTIONS?

“Estratégia” precisa ser objetiva e observável, expressa em architectural fitness functions. A arquitetura evolucionária não é emergente, nem baseada em palpites.

QUAL A OBSOLESCÊNCIA TECNOLÓGICA MÁXIMA ADMITIDA?

O “represamento” das iniciativas para modernização tecnológica é uma das maiores causas para a “morte” dos sistemas de software. Mesmo quando tecnologias não agregam “algo novo”, o afastamento da trajetória evolutiva das ferramentas, técnicas e práticas por um tempo prolongado aumenta de maneira exponencial o custo e risco para a mudança, apesar dos custos de oportunidade.

QUAIS ARTEFATOS ESTÃO NA “ZONA DE DOR”? E NA “ZONA DE DESUSO”?

Como já foi dito, transferir acoplamento aferente de algumas implementações concretas para abstrações pode simplificar a manutenabilidade dos sistemas, aprimorando o evolvability. Entretanto, abstrações em demasia, ou para artefatos errados, tornam sistemas mais difíceis de entender e caros para manter.

28 of 29

MANUAL DO ARQUITETO

PÁGINA 28

29 of 29

FEITO COM 🤍 POR EXIMIACO