Ferramentas de análise estática para detectar padrões de arquitetura

5

Atualmente, para a escola, estamos trabalhando em um projeto de pesquisa. A questão central deste projeto é: Quais padrões de arquitetura podem ser detectados usando análise de código estático? Com padrão arquitetural, entende-se os padrões de arquitetura do livro: Padrões de Arquitetura de Aplicativos Corporativos, escritos por Martin Fowler.

Durante nossa pesquisa bibliográfica, não encontramos estudos / artigos / periódicos que abordassem esse problema. Então, para a nossa abordagem para este projeto, nós pensamos em criar um protótipo desse tipo de ferramenta. Mas primeiro precisamos saber se há alguma ferramenta (de código aberto) com a mesma funcionalidade (detectar padrões de arquitetura com uma análise de código estática)

Então, minha pergunta é: você conhece uma ferramenta que detecta padrões de arquitetura? Sabemos da existência de ferramentas que podem detectar padrões de design da Gang of Four. E você tem alguma sugestão para a nossa abordagem?

Obrigado antecipadamente

    
por mrtentje 15.02.2012 / 18:32
fonte

2 respostas

4

Qualquer coisa que seja um padrão mensurável e bem definido pode ser analisado.

Uma questão mais profunda é por que isso seria importante (e importante o suficiente para medir e avaliar com uma ferramenta)? Como você significativamente "pontuaria" ou quantificaria os resultados, e como você usaria essas pontuações? A resposta a essas perguntas lhe dirá por que não há muitas ferramentas com esse tipo de capacidade, e as que estão por aí com um conjunto de recursos que anunciam esse tipo de capacidade são limitadas: caras, frágeis ou algumas mescladas combinação dos dois.

No passado, pelo menos seis ou oito anos atrás, eu via esses recursos nas edições superiores das ferramentas UML, como Rational e Sparx Systems (edições orientadas a arquiteto / empresa de cada versão respectiva). Pelo que me lembro, esses produtos podem às vezes 'ver' padrões de EAA em modelos de fonte importada / analisada. Eles sugeririam complementar padrões e nomear outras facetas que estavam participando de alguma forma. Ou eles permitem que você 'escale-nos' skelatons destes padrões (um pouco útil, mas contrariar um grau em como os padrões são supostamente para mais frequentemente, surgem organicamente).

Identificar padrões de qualquer tipo era um conceito muito novo na época e em um dos primeiros conjuntos de ferramentas que incorporariam esse tipo de recurso interno, encontrando padrões de qualquer tipo, mas também incluindo padrões de EAA. Eu não olhei para eles desde então, então talvez eles estejam mais refinados, estáveis e economicamente viáveis.

Talvez eles também estejam disponíveis em alguém onde as ferramentas operam diretamente na origem (em vez de um modelo), mas eu não estou ciente disso.

    
por 16.02.2012 / 00:51
fonte
2

Algumas pesquisas rápidas no Google revelaram um artigo intitulado Um plug-in do Eclipse para a detecção de padrões de design instâncias através de análises estáticas e dinâmicas apresentadas na Conferência Internacional IEEE 2010 sobre Manutenção de Software. Infelizmente, não tenho acesso a esta publicação específica com a minha assinatura atual do IEEE. No entanto, o resumo menciona o nome do projeto como ePAD . Essa ferramenta usa tanto a análise estática quanto o monitoramento dinâmico de um aplicativo em execução para detectar padrões de design. O plugin está disponível e aparentemente roda no Eclipse 3.6.0 e melhor, mas eu não tentei. Pode ser um começo interessante, no entanto, e há informações de contato para os criadores disponíveis.

A pesquisa no Eclipse Marketplace também gerou uma ferramenta chamada Reconhecimento de Padrões de Design , que identifica apenas um punhado de Gangue de quatro padrões. Sua hompage indica que o projeto não está mais ativo, mas você pode ver como eles abordaram o problema outro ponto de partida possível.

Algo a ter em mente, porém, é que a maioria dos padrões definidos no livro PoEAA de Fowler não são realmente padrões de arquitetura. Em vez disso, são padrões de design frequentemente encontrados em aplicativos "corporativos" orientados por dados. Já faz um tempo, mas os únicos dois que me lembro como estando no nível de arquitetura são Camada de serviço e < href="http://www.martinfowler.com/eaaCatalog/modelViewController.html"> Model-View-Controller . Os outros padrões são definidos no nível de classe e método - o nível de design detalhado - não no nível de arquitetura do sistema de software que lida com módulos ou pacotes e nós mais abstratos.

    
por 16.02.2012 / 14:20
fonte