Síntese sobre Aquitetura de Software e Design de Software

Rafael Neves
3 min readMay 3, 2023

--

Hey folks,

Neste artigo irei falar a respeito do que venho estudando sobre Arquitetura de Software e Design de Software. Desde que comecei a estudar programação muito ouvi falar a respeito, mas nada era muito concreto ou que fornecesse um contexto no qual eu conseguira enxergar de fato do que se tratava. Este artigo é para aqueles que assim como eu, ou que estão começando na área ou não e que batam nesses termos mas não saibam seu real proprósito.

Imagem 1

Vamos falar de forma descontraída esses conceitos e mostrar como estes podem transformar e mudar sua visão de trabalho para algo mais sólido e de forma que tenha sentido. Tudo em busca de nos tornarmos melhores devs.

Começando por Arquitetura de Software

É feita de decisões difíceis de mudar como a escolha de uma linguagem, biblioteca, framework, banco de dados para persistência das
informações e etc. Define e estabelece padrões, estruturas e regras que orientam o desenvolvimento e a integração dos componentes.

Alguns aspectos da Arquitetura de Software:

Qualidade

Algumas qualidades arquiteturais importantes incluem:
- Escalável → Capaz de expandir as mudanças e novas regras do sistema;
- Flexível → Fácil de alterar e de se adaptar;
- Segura → Protege informações e recursos do sistema;
- Eficiente → Otimiza uso de recursos e performance;

Exemplos de ferramentas para qualidade:
- Análise Estática do Código → ESLint, Pylint, Checkstyle …
- Teste e Cobertura de Código → Mocha, JUnit, pytest…
- CI/ CD → Jenkins, GitLab CI/CD, Circle CI…

Componentes e Conectores
A arquitetura é composta por componentes, que são as partes individuais e independentes do sistema, e conectores, que são os mecanismos de interação e comunicação entre esses componentes.

Exemplos de ferramentas para qualidade:
Não existem ferramentas específicas para conectar componentes, mas temos alguns exemplo que cobrem este ponto.
- Frameworks e Bibliotecas → Angular, React, Vue…
- Sistemas de Mensageria e Comunicação entre componentes → RabbitMQ, gRPC, RESTful APIs …
- Componentes de UI → MaterialUI, Bootstrap, Tailwind, POUI

Padrões e Estilos Arquiteturais
Há diferentes padrões e estilos arquiteturais que podem ser aplicados ao desenvolvimento de software, dependendo das necessidades do projeto. Alguns exemplos populares são a arquitetura em camadas, a arquitetura orientada a serviços (SOA) e a arquitetura de microserviços. Cada estilo possui seus próprios benefícios e desafios e deve ser escolhido com base nos objetivos e requisitos específicos do projeto.

O Domínio da Arquitetura é crucial na criação de sistemas robustos e performáticos, que atendam as necessidades e sejam escaláveis. Entender e adotar boas práticas no desenvolvimento irá garantir com toda certeza qualidade e confiabilidade do seu software.

Design de Software

Design de software é o processo de planejamento e organização da estrutura do seu projeto e como interagem entre si. Em suma é o padrão de responsabilidade difinindo o que cada coisa deve fazer.

Um bom design deve ser:
Coeso → Cada componente/ Classe deve ter uma única responsabilidade;
Desacoplado → Componentes devem ter baixa dependência entre si, facilitando a manutenção e escalabilidade;
Príncipios SOLID: Adotar tais paradigmas promovem a criação de um software de qualidade

Em resumo o código é uma mera sequência de instruções de seleção e iteração, design é relacionamento e responsabilidade. — Branas

E é isso pessoal, como eu disse se trata de uma síntese do meu entendimento sobre o assunto, o qual venho aprendendo de forma muito produtiva com o Rodrigo Branas em seu curso.

--

--

Rafael Neves

Desenvolvedor de sistemas, apaixonado por tecnologia e novos aprendizados. Compartilhando insights no Medium.