Desenvolvimento

21 ago, 2015

Arquitetura de software: o caminho para o estado da arte

Publicidade

Lembro, no começo da minha carreira de desenvolvedor, de minhas tentativas de definir o que era arquitetura de software. Eu sempre ficava tentando relacionar a profissão de arquiteto de construção civil com um arquiteto de software.

Apesar da definição de arquiteto em construção civil e desenvolvimento de software ser parecida, o que ficava na minha mente eram somente os prédios, pontes e outras grandes construções e nunca chegava a uma conclusão. Até que eu desisti e por um bom tempo me esqueci disso. Com o passar dos anos, depois de alguns livros lidos e softwares desenvolvidos, me veio novamente essa questão. Só que hoje isso é mais claro para mim.

1. O que é arquitetura de software?

artigo 2

É a definição dos elementos usados para se criar uma estrutura e também qual a relação entre eles.

Para mim, existem vários níveis de estrutura. Alguns exemplos seriam:

  • Classe;
  • Componente;
  • Framework;
  • Módulos;
  • Sistema.

Em um nível de classe emprega-se a arquitetura definindo melhor seus métodos/atributos e a relação entre eles.

No nível de componente e framework, seria trabalhar na definição das classes e a relação entre elas. Os famosos design patterns ajudam muito aqui.

Módulos já são, nesse caso, um software (um módulo de um ERP, por exemplo), e aqui definimos nossas classes, componentes e frameworks utilizados em nosso módulo.

Sistema é o mais amplo e ele abrange vários módulos e até mesmo outros sistemas (um sistema de sistemas). Na prática são as integrações. Veja, por exemplo, o caso dos sistemas de ERP. Eles geralmente possuem vários módulos que podem atuar independentes e integrados com outros módulos.

2. Quando poderei me considerar um arquiteto?

Como você viu na definição, provavelmente você já é um (nem que seja simplesmente um arquiteto de classes).

Agora, imagino que você esteja pensando: “Quando que as outras pessoas me consideraram um arquiteto de software?”

Primeiro, é importante dizer que você deve ser notado como arquiteto desde o primeiro nível: classes. Ninguém irá olhar para você como um arquiteto se suas classes são ruins (classes sem coesão e um alto acoplamento).

E se o seu objetivo é ser considerado um arquiteto de software, você deve buscar o nível de Sistema. Quando você começar a dar os primeiros palpites, que serão aceitos ou, pelo menos relevados, esse será o seu marco de início.

2.1. O que eu tenho que saber para ser um arquiteto?

Tente, primeiramente, ser reconhecido por algo em específico. Você pode ser reconhecido, por exemplo, como um bom programador de alguma linguagem. Saiba organizar seus métodos, classes e componentes da melhor maneira possível.

Busque o que existe no mundo de software e para o que serve (isso vai ajudar na construção dos módulos). Não estou falando para você se aprofundar em tudo (que seria impossível) e sim, somente saber para o que serve (e também, se for possível, das barreiras para se por em prática). E claro, se der para se especializar, então, se especialize!

Você pode buscar conhecimento em fontes que já publiquem sobre assuntos nos quais tenha um interesse natural. Busque em revistas, livros pequenos, através de blogs. Tenho certeza que você já conhece algumas, pois, até está em uma delas.

2.2. Outras características de um arquiteto

Além de conhecimento técnico, é importante que o arquiteto tenha algumas características interpessoais:

• Comunicação;
• Liderança;
• Planejamento.

Isso facilitará, e muito, a implementação de sua arquitetura. Não adianta muito você ter conhecimento técnico, mas não saber capturar os requisitos de um sistema ou conseguir delegar eficientemente a construção dos elementos da sua arquitetura.

3. O estado da arte

Eu acredito que quanto melhor definirmos os elementos que precisam estar presentes no software e, principalmente, a relação entre eles, então será mais rápido, fácil e intuitivo o nosso desenvolvimento.

Depois de definirmos uma arquitetura, podemos trabalhar elemento por elemento. Você se preocupa com uma parte de cada vez. Isso facilita o uso de uma das armas mais poderosas do ser humano: o foco.

A final de contas, uma das melhores coisas é poder evoluir o software com a segurança de que, ao alterar o que precisamos, o resto continue funcionando.

Conclusão

Vimos uma definição de arquitetura e como conseguir pistas de que está no caminho certo.

Com certeza é preciso esforço, mas nada que seja assim tão sacrificante. Talvez estudar a mesma quantidade de tempo que passa no Facebook já seja suficiente.

Pensa diferente? Então deixe um comentário aí e vamos conversar.

Até um próximo. Abraço!