Arquitetura de Software

O que é arquitetura?

Arquitetura é um termo que admite múltiplas definições. Existem duas definições comumente encontradas:uma separação de alto nível do sistema em suas partes decisões que são difíceis de modificar. Assim, definiremos como: “Um conjunto de decisões de projeto que tem impacto em cada aspecto da construção e evolução de sistemas. Isso inclui como sistemas são estruturados em componentes e restrições sobre como tais componentes devem interagir.”

Qual o papel de um arquiteto de software?

Muitos acreditam se tratar de um desenvolvedor Sênior, contudo conhecimento técnico é só uma de suas habilidades. Um bom arquiteto de software deve:
1. Limitar as escolhas durante o desenvolvimento:

  • escolher um padrão de como desenvolver aplicações.
  • definir/criar um framework para ser utilizado na aplicação.

2. Indicar pontos potenciais de reutilização:

  • possuir uma visão abrangente do sistema e de seu contexto.
  • adotar um design de componentização.
  • ter conhecimento de outras aplicações na empresa.

Dentre suas atribuições, a necessidade de considerar  a aplicação por um ângulo de visão mais abrangente contempla:

  • Quebrar a complexidade do desenvolvimento de aplicações em pedaços menores e mais gerenciáveis.
  • Definir as funções de cada componente.
  • Definir as interações e dependências entre os componentes.
  • Comunicar esses pontos aos desenvolvedores.

Tipos de Arquitetura

  • Arquitetura Concreta – Também conhecida como Arquitetura Implementada. É a arquitetura que está representada no código fonte.
  • Arquitetura Planejada – Também conhecida como Arquitetura Documentada. É a arquitetura definida nos modelos e documentos arquiteturais do sistema, conforme definições do arquiteto.

Erosão Arquitetural

Apesar de sua inquestionável importância, a arquitetura documentada de um sistema – se disponível – geralmente não reflete a sua implementação atual. Isso indica que existem decisões implementadas no código fonte que violam a arquitetura planejada. A isso denomina-se desvio arquitetural. Desvios arquiteturais são comuns devido ao desconhecimento por parte dos desenvolvedores, requisitos conflitantes, dificuldades técnicas etc. Geralmente, não são capturados e resolvidos. Isso levanta ao fenômeno conhecido como erosão arquitetural.

Erosão arquitetural indica que o sistema está se degenerando. Isso faz com que os benefícios proporcionados por um bom projeto arquitetural sejam anulados: Manutenibilidade, Reusabilidade, Escalabilidade, Portabilidade etc

Recuperação Arquitetural

Consiste de um conjunto de métodos para extração de informações arquiteturais a partir de representações de baixo nível de um sistema desoftware, como o código fonte.

Conformação Arquitetural

Consiste no processo de verificar se uma representação de baixo nível de um sistema desoftware – como o código fonte ou algo similar – está emconformidade com sua arquitetura planejada.

Ricardo Terra e Marcos Tulio Valente – I Congresso Brasileiro de Software: Teoria e Prática 2010.

“Então, ele me disse: A minha graça te basta, porque o poder se aperfeiçoa na fraqueza. De boa vontade, pois, mais me gloriarei nas fraquezas, para que sobre mim repouse o poder de Cristo”. 2 Coríntios 12:9

Anúncios