DEV Community

ArthurBCarv
ArthurBCarv

Posted on

Polimorfismo Estrutural em Arquiteturas de Software

1. INTRODUÇÃO

A arquitetura de software é a espinha dorsal de um sistema, definindo seus componentes, relações e os princípios que guiam seu desenvolvimento. Essa escolha é uma decisão estratégica que afeta diretamente a escalabilidade, manutenção e segurança do projeto. Contudo, na prática, arquiteturas raramente são implementadas de forma pura ou dogmática. A complexidade das demandas atuais exige soluções que transcendem um único padrão arquitetural, o que leva ao conceito de Polimorfismo Estrutural.

Inspirado no polimorfismo da orientação a objetos, este conceito descreve a capacidade de combinar diferentes estilos arquiteturais para construir uma solução coesa. Este artigo analisa esse fenômeno através das arquiteturas tradicionais, Monolítica, Cliente-Servidor, MVC, REST e em Camadas, demonstrando como elas se integram na prática para formar sistemas híbridos. O objetivo é discutir os benefícios e desafios dessas integrações, defendendo que a estrutura ideal é aquela que combina os pontos fortes de múltiplos paradigmas de forma coerente.

2. FUNDAMENTAÇÃO TEÓRICA

2.1 Arquitetura Monolítica

A estrutura monolítica é um modelo de desenvolvimento acoplado, onde todas as abstrações do sistema compartilham os mesmos recursos, como bibliotecas e modelos de persistência. Embora seja de fácil compreensão, esse modelo pode se tornar um emaranhado complexo e de difícil manutenção com o tempo. (Mendes, 2021)

2.2 Arquitetura Cliente-Servidor

O modelo cliente-servidor se baseia em uma plataforma onde um ou mais clientes acessam servidores para executar uma aplicação. Nessa estrutura, o processamento é distribuído entre as partes, utilizando a rede e o sistema operacional como base de comunicação. (CRUZ, I. [199-?])

2.3 Arquitetura Model-View-Controller (MVC)

O padrão MVC, surgido nos anos 80, divide a aplicação em três componentes com responsabilidades bem definidas. As requisições são recebidas pelo Controller, que interage com o Model (lógica de negócio) para processá-las e, por fim, exibe o resultado na View (camada de apresentação), modularizando o fluxo da aplicação. (LUCIANO, J. Et. Al., 2011)

2.4 Arquitetura Representational State Transfer (REST)

REST é um estilo arquitetural proposto por Roy Fielding que utiliza o protocolo HTTP para promover interoperabilidade e escalabilidade em sistemas distribuídos. Ele se baseia em restrições como separação cliente-servidor, ausência de estado (stateless), e uma interface uniforme, que orientam a construção de APIs (RESTful) para uma comunicação padronizada e independente de plataforma. (NETO, J., 2020)

2.5 Arquitetura em Camadas / Três Camadas

Este padrão organiza o sistema em camadas horizontais com responsabilidades distintas, sendo o modelo de três camadas o mais comum. As camadas típicas são: Apresentação (interface do usuário), Lógica de Negócio (regras do sistema) e Dados (armazenamento). Uma regra fundamental é que uma camada só pode depender da camada imediatamente inferior, garantindo a separação de responsabilidades. (DNC, 2025)
3. DISCUSSÃO: POLIMORFISMO E HIBRIDAÇÃO

Arquiteturas tradicionais, quando analisadas isoladamente, mostram-se insuficientes para resolver os problemas complexos dos cenários modernos. O polimorfismo estrutural emerge como resposta, permitindo que diferentes estilos arquiteturais coexistam em uma mesma solução, alinhando-se à ideia de que a arquitetura de um sistema é composta por múltiplas estruturas e seus relacionamentos.

Na prática, cada arquitetura pode ser uma peça do quebra-cabeça. Um sistema pode iniciar como um monolito e, com o tempo, hibridizar-se com padrões mais complexos para atender a novas demandas. Essa combinação melhora a adaptabilidade, refletindo o que Fowler (2003) destacou sobre a importância de dividir o sistema em partes que evoluem de forma independente. Um exemplo comum é um sistema que nasce monolítico, adota MVC e camadas para se organizar, expõe funcionalidades via REST e, finalmente, usa o modelo cliente-servidor para distribuir a carga.
Contudo, essa abordagem exige cautela. O principal desafio é evitar a criação de um "Frankenstein" arquitetural, onde a falta de coerência compromete a manutenção e a escalabilidade. A arquitetura deve ser guiada por princípios de design consistentes, mesmo ao incorporar múltiplos padrões. Quando aplicado com critério, o polimorfismo estrutural permite criar sistemas resilientes e com capacidade de evoluir organicamente diante de novas demandas.

4. CONCLUSÃO

O estudo demonstra que a busca por uma arquitetura de software "pura" é mais um ideal acadêmico do que uma realidade prática. A análise das arquiteturas monolítica, cliente-servidor, MVC, REST e em camadas revela que seus pontos fortes são complementares. A verdadeira evolução arquitetural reside na habilidade de combinar diferentes padrões de forma coerente, em vez de adotar um único modelo de maneira dogmática.

O polimorfismo estrutural permite que a arquitetura evolua com o sistema, adotando uma postura pragmática. Um projeto pode, de forma coerente, nascer como um monolito, organizar-se com MVC e camadas, e expor serviços via REST.

O principal desafio é o risco de criar uma arquitetura incoerente, o que reforça a necessidade de amplo conhecimento em design e visão estratégica. Conclui-se que o valor das arquiteturas tradicionais está no seu potencial de combinação. O polimorfismo estrutural não é apenas uma opção, mas uma abordagem necessária para garantir a adaptabilidade e o sucesso dos projetos de software contemporâneos.

5. REFERÊNCIAS

BASS, L.; CLEMENTS, P.; KAZMAN, R. Software Architecture in Practice. 3rd ed. Addison-Wesley, 2012.

CLEMENTS, P. et al. Documenting Software Architectures: Views and Beyond.2nd ed. Addison-Wesley, 2010.

FOWLER, M. Patterns of Enterprise Application Architecture. Addison-Wesley, 2003.

RICHARDS, M. Software Architecture Patterns. O'Reilly Media, 2015.

MENDES, A. Arquitetura Monolítica vs Microsserviços: uma análise comparativa. Brasília. 2021. Disponível em: https://bdm.unb.br/bitstream/10483/30715/1/2021_IasminSantosMendes_tcc.pdf Acessado em: 28 de Set. de 2025

CRUZ, I. *Fundamentos da Arquitetura Cliente/Servidor. *[199-?]. Disponível em: https://www.academia.edu/8212738/Fundamentos_da_Arquitetura_Cliente_Servidor?source=swp_share Acessado em: 28 de Set. de 2025

DNC. O que é arquitetura em camadas e como funciona?. 2025. Disponível em: https://www.escoladnc.com.br/blog/arquitetura-em-camadas-fundamentos-e-aplicacoes-na-engenharia-de-software. Acessado em: 28 de Set. de 2025

NETO, J. Um mapeamento de práticas em projetos de APIs REST. Bebedouro, São Paulo, 2020. Disponível em: https://unifafibe.com.br/revistasonline/arquivos/revistaepeqfafibe/sumario/20/16112011142249.pdf Acessado em: 28 de Set. 2025

LUCIANO, J., ALVES, W. PADRÃO DE ARQUITETURA MVC: MODEL-VIEW-CONTROLLER. Epeq Fafibe, São Paulo n.3, v.1. 2011. p. [102-107] Disponível em: https://unifafibe.com.br/revistasonline/arquivos/revistaepeqfafibe/sumario/20/16112011142249.pdf Acesso em: 28 de Set. de 2025

Top comments (0)