Arquitetura de Software vs Arquitetura de Solução - Full Cycle FullCycle

Voltar

Wesley Willians

Arquitetura de Software vs Arquitetura de Solução

15 min de leitura

Embora sejam áreas complementares e exerçam as suas funções por um objetivo em comum, as práticas dos profissionais de Arquitetura de Software e de Soluções são fundamentalmente diferentes.

  • Arquitetura de Soluções: É uma área totalmente técnica que cria o esboço do software considerando os detalhes e especificações do cliente durante o projeto. O projeto se refere ao desenho do software, sendo adaptado de acordo com as necessidades do negócio e as suas relações comerciais.
  • Arquitetura de Software: Cuida diretamente dos processos de desenvolvimento, colocando em prática os detalhes destacados no projeto e as suas restrições. Trata a integração de componentes necessários para garantir a evolução e lucratividade do software. Lida com a parte de desenvolvimento e dos códigos, desde a criação até a entrega efetiva do software. Essa arquitetura também cuida da documentação.

— Arquitetura de Solução

O arquiteto de soluções adapta as necessidades do negócio e projeta as requisições do cliente num modelo de software adequado para a empresa. Então, com base na infraestrutura e comunicação da empresa, ele desenha um esboço arquitetural com todo o planejamento necessário para a criação do software.

Normalmente os esboços são diagramas Modelo C4 e UML, mas isso também envolve o mapeamento dos processos de solução para entender com mais clareza as necessidades do negócio.

Relações Comerciais

A área de soluções analisa os impactos comerciais em relação às escolhas tecnológicas utilizadas durante o projeto. Tais como: Oracle, MySQL, Java, PHP e até mesmo a escolha do provedor de nuvem.

Esses profissionais também frequentam reuniões comerciais de venda e pré-venda. Eles observam as relações entre as empresas e o cliente final com um olhar mais técnico para adaptarem as suas interfaces com base nessas experiências. Normalmente a área comercial precisa do apoio técnico de quem entenda e saiba demonstrar como o sistema funciona.

Entre todos esses aspectos, também são analisados os custos que as soluções causam ao negócio, mostrando que esse tipo de arquitetura é relacionada às áreas técnicas e comerciais.

— Arquitetura de Software

A arquitetura de software é uma área que cuida de processos, desde a criação até a entrega de um software.

O próprio termo ‘arquitetura de software’ pode parecer redundante se comparado ao desenvolvimento, mas diferente da área de soluções, esse arquiteto considera as partes de código, assim como os componentes integrados e outros detalhes importantes.

Impacto Organizacional

Frequentemente esses detalhes impactam a estrutura organizacional de uma empresa, trabalhando a relação entre os times durante a criação dos componentes interligados ao software. Essa atividade requer diversas especialidades entre os times com o objetivo de criar o software baseado em determinadas estruturas que, consequentemente, mudam a organização de uma empresa.

Se uma empresa tem um DBA que conta com dois desenvolvedores Back End e mais dois  Front End, provavelmente os softwares desenvolvidos nesses contextos terão uma divisão muito clara no banco de dados para cada um deles. Mas se uma empresa possui uma organização mista, com diferentes áreas em relação ao exemplo anterior, o software é desenvolvido de acordo com o modelo dessas competências específicas.

Clareza nos objetivos de negócio

A divisão de funções na organização de uma empresa define as partes que cada time irá cuidar exclusivamente. Seja uma equipe exclusiva de design, outra equipe para cuidar de UX e UI e mais uma para cuidar da documentação, por exemplo.

É por isso que a arquitetura de software reconhece os objetivos do negócio as restrições de seus componentes, que também são criados de acordo com cada responsabilidade para atingirem os seus objetivos. O objetivo em si é criar um software sustentável para que, durante o seu funcionamento, ele agregue valor à organização. A ISO define a arquitetura de software como uma organização fundamental de um sistema e seus componentes em meio às relações com o ambiente junto aos princípios que orientam o seu design e evolução.

Isso mostra que esse tipo de arquitetura se refere ao processo de estabelecer o desenvolvimento como parte de um conjunto maior. E assim, durante a criação de um software, é considerada a interação entre os componentes para gerarem resultados satisfatórios.

Responsabilidades

Em sua rotina, o arquiteto de software busca transformar os requisitos do negócio em padrões de arquitetura, de como o software é desenvolvido e quais serão os seus componentes.

Normalmente esse profissional se responsabiliza pela organização de pessoas que entendem de software, como desenvolvedores e experts de domínio. Então ele aplica o planejamento entre os times adequados para criar ou transformar o projeto num código que vai cumprir o seu objetivo final.

Como tudo isso deve ser feito da forma mais componentizada possível, práticas adequadas são necessárias para que o software atenda às necessidades do cliente final. Porém, também deve ser sustentável com o passar do tempo. E por isso esses arquitetos devem entender com profundidade os principais conceitos e modelos arquitetônicos para escolherem os modelos mais vantajosos para cada tipo de solução.

Quando surgem complicações e os desenvolvedores não conseguem entrar em consenso sobre qual modelo devem utilizar e como irão organizar o log, as camadas ou mesmo quando o software peca em qualidade, essa mediação normalmente é feita por um arquiteto de software.

Experiência & Rotina

Na arquitetura de software, os profissionais devem reforçar boas práticas de desenvolvimento como fatores cruciais para que eles se tornem desenvolvedores mais experientes em lidar com falhas. Não é raro encontrar arquitetos fazendo Code Review para medirem a qualidade de um software. Assim como checagens regulares dos padrões que os times estão desenvolvendo. Reconhecendo que nem todas as organizações possuem um arquiteto de software, muitas vezes encontramos desenvolvedores seniores e tech leads cumprindo esse papel.

— Semelhanças

No geral, ambas as arquiteturas se complementam, mas normalmente a arquitetura de solução vem antes da arquitetura de software. Finalizando, a arquitetura de solução está mais ligada à área comercial e em fazer esboços para entender melhor o contexto do negócio. Visa lucro, os custos e também em auxilia a consultoria da empresa. Isso pode facilitar fechamentos de negócios, além de permitir que o cliente consiga visualizar as soluções. Após o processo de solução, o arquiteto de software pega as informações dos esboços para entender o que está acontecendo. Então, tenta ajudar a equipe a transformar o desenho num software de qualidade.

Se você curtiu esse post e quer aprender mais sobre Arquitetura de Software e Arquitetura de Solução, solicite contato clicando aqui e nós te ajudamos.

Assista ao vídeo completo clicando aqui, ou voltando para o começo da matéria caso ainda tenha ficado alguma dúvida.

Veja também: SOLID e Design de Software na prática