A arquitetura de software é geralmente definida como um conjunto de decisões de projeto que tem impacto em cada aspecto da construção e evolução do sistema de software. Isso implica em definições de diversos padrões e boas práticas que devem ser seguidas. No entanto, no decorrer do projeto, esses padrões tendem a se degradar fazendo com que benefícios proporcionados por um projeto arquitetural (e.g., manutenibilidade, escalabilidade, portabilidade) sejam anulados. Esse problema é ainda mais severo em sistemas desenvolvidos em linguagens dinâmicas, onde recursos como invocação dinâmica, construções dinâmicas, eval, etc., tornam os desenvolvedores mais propícios a quebrar a arquitetura planejada.
Diante disso, este artigo demonstra que a preservação de padrões e boas práticas arquiteturais – o que contribui para o processo de manutenção do sistema – pode ser facilmente realizado em sistemas desenvolvidos em linguagens dinâmicas. Para isso, é utilizado um sistema motivador, desenvolvido com a linguagem Ruby, cuja arquitetura contempla diversos padrões e boas práticas arquiteturais comumente encontrados no desenvolvimento de sistemas. Assim, é demonstrado como preservar tais padrões utilizando ArchRuby, onde arquitetos de software definem regras arquiteturais para controlar as dependências que podem ou não ser estabelecidas em um dado sistema. Mais especificamente, ArchRuby é uma ferramenta que provê conformidade e visualização arquitetural baseada em técnicas de análise estática de código e uma heurística de inferência de tipos para sistemas Ruby.
O restante desse artigo está organizado conforme descrito a seguir. A seção Arquitetura de Software faz uma breve introdução a projetos arquiteturais de sistemas de software e a seção Conformidade e Visualização Arquitetural descreve as principais técnicas existentes. A seção Ferramenta ArchRuby apresenta a solução de conformidade e visualização arquitetural proposta. A seção Sistema Motivador descreve o sistema utilizado para ilustrar os padrões e boas práticas arquiteturais. A seção Regras Arquiteturas e Benefícios para Manutenibilidade demonstra como traduzir tais padrões em regras arquiteturais e os benefícios associados a tais regras. A seção Processo de Conformidade Arquitetural aplica o processo de conformidade arquitetural no sistema motivador e a seção Visualização da Arquitetura apresenta visualizações que facilitam o raciocínio arquitetural.
Arquitetura de software
A arquitetura de software tem como responsabilidade entender e projetar a melhor maneira que as diversas partes que compõem um software devem ser estruturadas entre si. Ou seja, é uma ligação crítica existente entre a descrição (e.g., requisitos do software) e o projeto de software. Dessa maneira, o projeto arquitetural é um artefato importante, pois as definições presentes nesse artefato afeta o desempenho, a robustez, a portabilidade, a manutenibilidade, etc. do sistema de software.
Contudo, no decorrer do projeto – devido à falta de conhecimento, prazos curtos, etc. – os padrões definidos pela arquitetura tendem a se degradar. Isso faz com que os benefícios proporcionados por um projeto arquitetural sejam anulados. Esse fenômeno é conhecido como erosão arquitetural e deve ser controlado para não afetar o projeto arquitetural.
Conformidade e visualização arquitetural
Conforme demonstrada anteriormente, a arquitetura é um artefato crucial que precisa ser monitorado e seguido pelos desenvolvedores de software. Conformidade arquitetural é o processo que verifica o grau de consistência entre a arquitetura concreta (i.e., implementação concreta do código fonte) e a planejada. O processo de conformidade arquitetural pode ser estático (i.e., sem executar o sistema alvo) ou dinâmico (i.e., executando o sistema alvo). Esta seção apresenta algumas técnicas de conformidade arquitetural e visualização:
-
Modelos de Reflexão: ...
Quer ler esse conteúdo completo? Tenha acesso completo