Quais são as diferenças entre Arquitetura e Design de Software?

Elemar Júnior

Há tempos, participamos e acompanhamos discussões acaloradas sobre quais seriam as diferenças entre as práticas de arquitetura e design de software. Consequentemente, sobre o nível de autonomia e liberdade dos membros do times de desenvolvimento para a tomada de decisões envolvendo aspectos estruturantes.

De forma categórica: Atividades relacionadas a arquitetura de software são sempre de design. Entretanto, nem todas atividades de design são sobre arquitetura. Há muitas decisões de design, menos relevantes, que são postergadas e delegadas para que sejam tomadas, potencialmente, com menos rigor.

O objetivo primário da arquitetura de software é garantir que os atributos de qualidade, restrições de alto nível e os objetivos do negócio, sejam atendidos pelo sistema. Assim, compete a aqueles que elaboram a arquitetura tomar as decisões de design necessárias para que esse objetivo seja atingido.

Decisões arquiteturais estabelecem os limites que devem ser observados durante todas as demais atividades de design. Aliás, estas atividades devem sempre produzir artefatos – sobretudo código – em conformidade com esses limites.

Todas as decisões de design que não tenham relação direta com o atendimento de um atributo de qualidade, restrição, ou objetivo do negócio são não-arquitetônicas. Além disso, todas as decisões de design tomadas na implementação de um componente específico que não sejam “visíveis” fora dele – ou seja, que não façam diferença fora dos limites deste componente – também não são, geralmente, arquiteturais.

Muitas decisões de design relacionadas a arquitetura de software não passam, muitas vezes, de descrições abrangentes indicando o que deve ser evitado. Ou seja, as decisões relacionadas a arquitetura nem sempre indicam implicações concretas, apenas restringindo como novos padrões e interfaces, não arquiteturais, devem ser especificados e implementados.

Algumas vezes, definições arquiteturais são tão abstratas como, por exemplo: “Todos os endpoints da API X devem realizar consultas, em execuções concorrentes, utilizando,  primariamente, um cache de dados compartilhado, retornando resultados em não mais do que 40 ms.”

Há cenários, entretanto, onde as decisões de design relacionadas a arquitetura de software podem ser extremamente “detalhadas” – apontando, inclusive, formatos, protocolos e outros padrões de tecnologia. Se as escolhas de estruturas de dados ou de algoritmos forem fundamentais para que uma sistema atenda seus atributos de qualidade, restrições ou necessidades de negócio, então, essas escolhas são arquiteturais.

O nível de detalhamento das decisões arquitetônicas é, desta forma, sensível ao contexto e ao nível de risco tolerado. Quanto maiores os riscos para o atendimento dos atributos de qualidade e dos objetivos do negócio, mais rigorosas, profundas e detalhadas serão as decisões arquiteturais.

Em resumo

O problema
Debates recorrentes tentam estabelecer, de forma categórica, quais são as diferenças entre as atividades de design e arquitetura de software. Dessa forma, também há muita discussão sobre o nível de autonomia e liberdade de cada um para a tomadas de decisões de design que sejam estruturantes.
O fato
Atividades relacionadas a arquitetura de software são sempre de design. Entretanto, nem todas atividade de design são sobre arquitetura. O objetivo primário da arquitetura de software é garantir que os atributos de qualidade, restrições de alto nível e os objetivos do negócio, sejam atendidos pelo sistema. Qualquer decisão de design que não tenha relação com este objetivo não é arquitetural. Todas as decisões de design para um componente que não sejam “visíveis” fora dele, geralmente, também não são.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
1 Comentário
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Ortiz David
Ortiz David
8 meses atrás

Excelente artigo!
Mestre Elemar.

AUTOR

Elemar Júnior
Fundador e CEO da EximiaCo atua como tech trusted advisor ajudando empresas e profissionais a gerar mais resultados através da tecnologia.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Engenharia de Software

Três vantagens reais de utilizar orquestradores BPM para serviços

Arquiteto de software e solução com larga experiência corporativa
Desenvolvimento de Software

Os principais desafios ao adotar testes

Especialista em Testes e Arquitetura de Software
Arquitetura de Dados

Insights de um DBA na análise de um plano de execução

Especialista em performance de Bancos de Dados de larga escala

Acesse nossos canais

Simplificamos, potencializamos e aceleramos resultados usando a tecnologia do jeito certo

EximiaCo 2022 – Todos os direitos reservados

1
0
Queremos saber a sua opinião, deixe seu comentáriox
()
x

Quais são as diferenças entre Arquitetura e Design de Software?

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?