Arquitetura limpa. Parte I - Introdução

Esta é uma recontagem gratuita e muito breve do novo livro de Robert Martin (Tio Bob) “Arquitetura Limpa”, lançado em 2018.

1. Introdução


A arquitetura de software é um pouco como construir arquitetura. Os edifícios também têm uma estrutura fractal: edifícios consistem em compartimentos, compartimentos consistem em quartos, quartos consistem em paredes, paredes são feitas de tijolos. Os programas, por outro lado, consistem em módulos, que consistem em pacotes, que consistem em classes, que consistem em funções, etc. No entanto, a diversidade de estruturas de programas é muito maior que a de edifícios, então o tio Bob considera a arquitetura de software "mais arquitetônica" do que a arquitetura de edifícios.

Além disso, a arquitetura de construção é mais fácil de visualizar na cabeça do que o software, porque vemos construções todos os dias, e a arquitetura dos programas está oculta dentro do código-fonte. Arquitetura de software não é como nada.

Por outro lado, a arquitetura do software também deve se lembrar das limitações físicas, porque os programas são executados em hardware real com desempenho, memória, largura de banda de rede limitados etc.

O que é boa arquitetura? Essa é uma arquitetura que atende às necessidades de usuários, empresários e programadores, não apenas no momento atual, mas também ao longo do tempo .

"Se você acha que uma boa arquitetura é cara, tente algo ruim."

"A única maneira de ir rápido é ir bem."

Prefácio


O tio Bob escreve códigos há mais de 50 anos. Ele escreveu uma grande variedade de programas: grandes, pequenos, GUI, console, web etc. E cheguei à conclusão de que as regras da arquitetura são as mesmas em todos os lugares! E mesmo depois de 50 anos, eles não mudaram, apesar do aumento gigantesco na produtividade do ferro.

As linguagens de programação também se tornaram muito melhores, mas as construções básicas permaneceram as mesmas: se, atribuição, loops, etc. Se você colocar um programador de meados do século passado para um MacBook moderno, primeiro ele ficará mal, mas será normal escrever código Java no Idea.

Mas mais de meio século ganhou muita experiência, o que ainda não era há 50 anos. As regras foram formuladas, às quais este livro é dedicado.

1. Introdução


Escrever um programa de trabalho é fácil. É difícil escrever o programa corretamente . Isso requer conhecimento, experiência e habilidades, cujo desenvolvimento requer muito tempo e disciplina.
Quando o programa é executado corretamente, é fácil manter e fazer alterações nele. Há uma porcentagem muito baixa de defeitos. Não precisa de hordas de programadores, toneladas de documentos com requisitos e rastreadores sofisticados.

Parece utópico, mas o tio Bob conseguiu trabalhar nesses projetos. Mas, infelizmente, na maioria dos casos, temos que trabalhar com um design terrível.

O que é design e arquitetura?


Vamos supor que design e arquitetura sejam a mesma coisa.

A arquitetura não é apenas o nível superior, mas os detalhes de nível superior e inferior como um todo. Um sem o outro não existe.

O objetivo da arquitetura de software é minimizar os recursos humanos necessários para criar e manter o sistema necessário.

Se os esforços forem pequenos e permanecerem assim por toda a vida , o design será bom. Se os esforços aumentarem a cada versão, o design será ruim.

Como exemplo, o tio Bob mostra um gráfico de um projeto real, no qual o número de funcionários aumentou 50 vezes, mas o número de linhas de código aumentou apenas 2,3 vezes (3M -> 7M). Um gráfico mais assustador é um aumento no custo de uma única linha de código em ~ 40 vezes. I.e. a produtividade caiu de 100% para quase zero. Os programadores trabalham arduamente da melhor maneira possível, mas basicamente nada pode ser feito. E agora a pior coisa: se no primeiro lançamento tivemos que pagar aos funcionários centenas de milhares de dólares por mês, então, no final, esse número chegou a 20 milhões de dólares por mês!

Em seguida, o tio Bob relembra a parábola da lebre e da tartaruga. Nele, a tartaruga venceu a corrida porque a lebre era muito autoconfiante, foi para a cama e dormiu durante toda a corrida.

A mesma coisa com o desenvolvimento: o programador se diverte com a confiança de que será capaz de lançar rapidamente o produto e restaurar a ordem posteriormente. No entanto, o problema é que, após o lançamento, ele precisa executar o próximo recurso, caso contrário, ficará para trás dos concorrentes no mercado. No final, em alguns meses sua produtividade simplesmente cairá para zero e ele perderá.

Ele então dá um exemplo de um experimento conduzido por um certo Jason Gorman, onde ele escreve um programa simples várias vezes. E acontece que, com o TDD, a primeira vez é mais rápida do que a terceira vez sem o TDD. Ou seja, se você escrever corretamente, o resultado será mais rápido.

O desenvolvedor deve ser responsável pela bagunça que ele introduz no projeto. A qualidade da arquitetura deve ser levada a sério. Mas, para isso, você precisa saber o que é uma boa arquitetura.

Uma história sobre dois valores


Existem dois valores - comportamento e arquitetura.

Comportamento significa que o programa atende aos requisitos funcionais e, portanto, gera dinheiro para os empresários. O problema é que muitos programadores acreditam que esse é o trabalho deles.

O segundo valor é a qualidade com a qual o programa permanece em um estado mantido. Ou seja, é fácil mudar. A complexidade das mudanças deve ser proporcional à escala dessas mudanças, mas não à sua forma. A arquitetura não deve fazer preferências de algumas formas sobre outras, caso contrário, as solicitações dos proprietários serão cada vez mais difíceis de implementar a cada vez.

O que é mais importante - comportamento ou arquitetura? Os gerentes acreditam que é mais importante que o sistema funcione. Mas os programadores devem considerar o oposto: a arquitetura é mais importante.
A matriz de Eisenhower diz que importante e não urgente tem uma prioridade mais alta que urgente e sem importância. E a arquitetura é sempre importante em contraste com o comportamento, por isso é mais prioritária.

O programador deve lutar pela arquitetura. Um programador também é um membro do negócio. Arquitetura é sua responsabilidade.

Para continuar ...

Source: https://habr.com/ru/post/pt443058/


All Articles