Introdução a Arquitetura de Software

Thiago S. Adriano
4 min readMay 5, 2024

--

Veja neste artigo algumas dicas que podem ajudar no momento de desenvolver o seu software

Arquitetura de Software

Eu já tive a oportunidade de trabalhar em muitos sistemas, alguns como desenvolvedor, outros em consultoria e alguns como arquiteto. Em todas as interações que tive, sempre observei as mesmas dúvidas como:

  • Quais são os primeiros passos para desenvolver um sistema do zero?
  • Qual linguagem de programação escolher?
  • Qual arquitetura adotar?
  • Como saber se estamos no caminho certo?

Sabemos que não existe a chamada bala de prata que resolve todos os nossos problemas, mas minha ideia para este artigo e de demonstrar alguns dos pontos que me ajudaram na minha carreira e que eu acredito que podem te ajudar de alguma forma.

Vamos lá!

Sabemos que uma boa arquitetura de software é essencial para atender aos requisitos funcionais e não funcionais do sistema, incluindo desempenho, escalabilidade, confiabilidade e segurança. Além disso, ela é fundamental para garantir que o sistema seja fácil de manter e evoluir ao longo do tempo.

Mas vamos dar um passo atrás e responder às principais duvidas que mencionei anteriormente:

Quais são os primeiros passos para desenvolver um sistema do zero?

Hoje com base na minha experiência na área, eu considero os seguintes passos essenciais:

  • Definição dos requisitos: Esse eu considero como o pilar central, pois é crucial a definição clara dos requisitos do sistema. Isso inclui entender as necessidades do usuário final, os objetivos do negócio, e os requisitos funcionais e não funcionais. Nesse momento eu vejo como crucial as entrevistas com os responsáveis pelo sistema, para levantar todos as necessidades dos clientes + os motivos do sistema existir.
  • Análise de viabilidade: Sabemos que todo sistema tem um custo, seja ele com o desenvolvimento ou com a sua publicação e manutenção dele a curto, médio e longo prazo. Por esse motivo precisamos sempre analisar o orçamento disponível, os recursos tecnológicos necessários, e o tempo estimado para a conclusão do projeto.
  • Planejamento do projeto: Nesse passo entramos junto com os PMs ou POs em algumas empresas, nós precisamos desenvolver um plano de projeto que detalhe o escopo, os marcos, os prazos e os recursos necessários.

Depois destes passos, nós podemos avançar com a parte de tecnologia.

Qual linguagem de programação escolher?

No passado eu responderia C# com certeza, essa foi a primeira linguagem de programação que eu aprendi e a que eu utilizo na maioria dos meus projetos, sejam eles pessoais ou em freelas. Mas pensando em empresa ou no papel de Arquiteto de Software ou Consultor eu faço as seguintes perguntas:

  • Os membros da equipe já estão familiarizados com alguma linguagem ou será necessário um período de capacitação?
  • Já temos um esboço inicial para compreender a visão macro do projeto?

Esta etapa é crucial, dado o que hoje temos muitas tecnologias disponíveis, e nem sempre a tecnologia A pode ser utilizada para tudo, este ponto casa com a primeira pergunta referente as skills do time, junto com o período de capacitação.

Qual arquitetura adotar?

Essa é uma pergunta chave que “na minha opnião“, devemos sempre considerar os seguinte pontos:

  • Quais são os requisitos do sistema: Neste momento nós precisamos compreender as necessidades do sistema, incluindo requisitos de desempenho, escalabilidade, confiabilidade, e segurança.
  • Complexidade do projeto: Este é um ponto que quando ignorado, pode gerar complexidade de um projeto e levar ao desenvolvimento de sistemas desnecessariamente complicados. Eu já vi situações em que sistemas extensos, com muitas linhas de código e várias camadas, foram implementados para funções simples, como um cadastro básico, onde uma arquitetura em camadas seria mais do que suficiente.

E para que possamos fechar estes pontos básicos, uma outra dúvida que eu vejo muito nas minhas consultorias, você sabe a diferença entre: Arquitetura de Software e Design de Software?

Caso a sua resposta seja não, segue um breve resumo que eu acredito que podem te ajudar na próxima vez que te perguntem isso em uma entrevista :)

Bom, quando pensamos em arquitetura de software, devemos focar na estratégia de como os componentes de um sistema interagem entre si, quais princípios ou elementos que o projeto deve obedecer quando o time apresentar duas ou mais soluções para o mesmo problema.

Por exemplo, a utilização do padrão MicroService ou microsserviços, no português, ou Serveless, sem servidores.

Já o design de software é a parte que todos nos desenvolvedores amamos, ele é responsável pelo baixo nível do código, como a escolha de quais padrões de projetos, o que cada módulo está fazendo, o escopo das classes e os objetivos dos métodos.

Nesse momento nós devemos pensar no acrônimo do SOLID, DRY (Don’t repeat yourself) que no português ficaria não se repita etc.

Bom é isso pessoal, espero que tenham gostado e até um próximo artigo :)

--

--

No responses yet