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

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: [tweet]Atividades relacionadas a arquitetura de software são sempre de design. Entretanto, nem todas atividades de design são sobre arquitetura.[/tweet] Há muitas decisões de design, menos relevantes, que são postergadas e delegadas para que sejam tomadas, potencialmente, com menos rigor.

[tweet]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.[/tweet] 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.

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
1 ano 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:

Arquivo

Pós-pandemia, trabalho remoto e a retenção dos profissionais de TI

CTO Consulting e Especialista em Execução em TI
EximiaCo 2024 - Todos os direitos reservados
1
0
Queremos saber a sua opinião, deixe seu comentáriox
()
x
Oferta de pré-venda!

Mentoria em
Arquitetura de Software

Práticas, padrões & técnicas para Arquitetura de Software, de maneira efetiva, com base em cenários reais para profissionais envolvidos no projeto e implantação de software.

Muito obrigado!

Deu tudo certo com seu envio!
Logo entraremos em contato

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

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

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?