Estética e Arquitetura de Sistemas

Por vezes nos sentimos tentados a fazer arquiteturas reais baseadas em fatores estéticos. A estética sempre nos serve como heurística, mas não nos garante o melhor resultado.

Alguns exemplos de estética que encontrei na minha vida profissional foram:

· o minimalista, que é um estilo que segue o princípio do “quanto menos, melhor” (algo semelhante à Navalha de Occam que diz que uma explicação de um fenômeno deve ter apenas as suposições necessárias, excluindo todas as demais – ou “as entidades não devem ser multiplicadas além do necessário”);

· o barroco, que explora o excesso como virtude;

O minimalismo é muito bem visto na universidade, ou, pelo menos, na que me formei: a PUC-RJ. A elegância e corretude da matemática e o mínimo de código são seu Santo Graal.

Por outro lado, na vida fora da universidade, observo com mais freqüência o barroco. Hoje é comum o uso excessivo de patterns em projetos de software, o que já gerou pelo menos um livro interessante: Refactoring to Patterns. Outro sintoma é o excesso de layers e módulos.

O primeiro sistema que implementei foi baseado numa arquitetura proposta em um artigo. O artigo propunha uma arquitetura para a implementação do protocolo X25 em duas camadas onde cada camada teria 3 processos: um para transmissão, um para recepção e um terceiro para controle dos pacotes (enumeração, acks, etc.).

Implementei desta forma e, um vez feito, tive que jogar o código fora, pois era difícil de implementar, pior ainda para testar e com desempenho sofrível. Valorizar mais a simetria do que o custo de intercomunicação foi a principal falha desta arquitetura.

Na segunda implementação deste protocolo, uni os 3 processos em um único e me concentrei em estruturas de dados e sincronização que garantissem o mínimo de concorrência. Sucesso.

Desde então descobri o meu estilo preferido: o pragmático.

Hoje quando olho um projeto, busco entender tanto o problema quanto a competência da minha equipe, a data em que deve ser lançado, o desempenho requerido, a robustez necessária e outros fatores. Com isto, defino tecnologia, módulos e algoritmos, e sou capaz de usar técnicas e estilos bem diferentes para partes diferentes do projeto. Nesta não-estética, fim e os meios estão intrincados. Sem um não teremos (realisticamente )o outro.

Na condição ideal (equipe excelente, tempo, etc.) confesso: procuro o minimalismo.