A avaliação da qualidade dos modelos desenvolvidos no estudo de casos do Capítulo 6 é realizada de duas maneiras: i) comparando o modelo de classes OO com o modelo de classes OA obtido a partir da aplicação das refatorações desenvolvidas neste trabalho; e ii) comparando o modelo de classes OA obtido a partir da aplicação das refatorações com outra versão desse modelo de classes OA obtido a partir da engenharia reversa do código OA desenvolvido por terceiros e disponibilizados na literatura. Neste trabalho, realizou-se a engenharia reversa da versão OA das aplicações Health Watcher (Greenwood et al., 2007), JSpider (2011) e JAccounting (2011) com objetivo de obter seu diagrama de classes e depois compará-lo com os diagramas obtidos a partir da aplicação das refatorações.
A comparação entre os modelos é realizada subjetivamente por meio da avaliação conceitual entre esses modelos e objetivamente por meio da utilização de métricas OA adaptadas ao contexto de modelos de classes anotados. As métricas utilizadas para comparação objetiva são apresentadas na Tabela 7.1 e Tabela 7.2.
A Tabela 7.1 apresenta um conjunto de métricas OA extraído da literatura (Figueiredo et al., 2008; Sant’anna et al., 2007; Ceccato e Tonella, 2004; Ducasse et
al., 2006) e adaptado ao contexto dos modelos de classes anotados. Isso foi feito,
pois tais métricas foram elaboradas para serem aplicadas em códigos fonte OO e OA e com essa adaptação puderam ser obtidas diretamente a partir do modelo de classes anotado. Na primeira e segunda colunas da Tabela 7.1 são apresentados o nome da métrica e seu significado original. Na terceira coluna é apresentada a adaptação do significado dessa métrica para o contexto dos modelos de classes anotados. Caso o significado adaptado seja idêntico ao significado original, o símbolo “-” é colocado.
Tabela 7.1 – Métricas OA Adaptadas para Comparação entre Modelos de Classes OO Anotados e Modelos de Classes OA.
Métrica Significado Original dada pelo Autor da Métrica Modelos de Classe Anotados Adaptação ao Contexto de
NOA (Numbers
of Attributes)
Conta o número de variáveis e atributos de classes,
interfaces ou aspectos.
Conta o número de atributos de classes, interfaces ou aspectos, pois no modelo de classes não é possível identificar variáveis existente no corpo de um método.
Além disso, como são utilizados modelos de classes da UML, relacionamentos de associação, agregação e composição entre classes são contadas como atributos.
NOO (Number
of Operations)
Conta o número de métodos construtores e adendos de classes, interfaces e aspectos. - CA (Concern Attributes)
Conta o número de atributos que contribuem para
implementação de um determinado interesse.
Conta o número de atributos que são afetados por interesses classificados como Secundários no componente (classe,
interface ou aspecto) ao qual ele pertence.
CO (Concern
Operations)
Conta o número de
operações que participam da implementação de um
interesse.
Conta o número de operações que são afetadas por interesses classificados como Secundários no componente (classe,
interface ou aspecto) ao qual ele pertence.
CA% ((CA/NOA)*100)
Porcentagem entre o número de atributos relacionados à implementação de um
interesse e todos os atributos existentes em um módulo.
Porcentagem entre o número de atributos que são afetados por interesses classificados como Secundários e todos os atributos existentes em um componente.
CO% ((CO/NOO)*100)
Porcentagem entre o número de operações relacionadas à implementação de um
interesse e todas as
operações existentes em um módulo.
Porcentagem entre o número de operações que são afetadas por interesses classificados como Secundários e todas as operações existentes em um componente. VS (Vocabulary Size) Conta o número de componentes do software. -
Na Tabela 7.2 o conjunto de métricas elaborado neste trabalho é apresentado, sendo que na primeira coluna tem-se o nome da métrica e na segunda, a sua descrição.
Tabela 7.2 – Métricas OA Elaboradas para Comparação entre Modelos de Classes OO Anotados e Modelos de Classes OA.
Métrica Descrição da Métrica
NOSC (Number of
Secundary Concerns)
Conta o número de Interesses Secundários que afetam um determinado componente (classe, interface ou aspecto). NOP (Number of
Pointcuts)
Conta o número de conjuntos de junção existentes em um aspecto.
NOAP (Number of
Anonymous Pointcuts)
Conta o número de conjuntos de junção anônimos existentes em um aspecto.
NOAP%
((NOAP/NOP)*100) Porcentagem entre o número de conjuntos de junção anônimos e todos os conjuntos de junção existentes em um aspecto.
NORP (Number of
Operations Related with the Pointcut)
Conta o número de operações relacionadas a um determinado conjunto de junção.
NORP/ (NORP/NOP)
Proporção entre o número de operações relacionadas aos conjuntos de junção de um aspecto e o total de conjuntos de junção existentes neste aspecto.
NOAC (Number of
Affected Components)
Conta o número de componentes (classes, interfaces e aspectos) que são afetados por Interesses Secundários. NOAC%
((NOAC/VS)*100)
Porcentagem entre o número de componentes que são afetados por Interesses Secundários e todos os
componentes do sistema.
Esse conjunto de métricas é classificado em dois grupos:
• Métricas de Modularização: são as utilizadas para comparação entre as duas versões OO do modelo de classes de um software: o modelo original da aplicação, ou seja, antes da modularização dos interesses transversais existentes no software e o outro corresponde ao modelo OO após a modularização dos interesses transversais. O objetivo é determinar o grau de modularização dos interesses existentes em um software. Para isso são utilizadas as métricas NOA, NOO, CA, CO, CA%, CO%, NOAC, NOAC%, VS e NOSC.
• Métricas de Adequação às Boas Práticas de Projeto OA: são utilizadas para comparação entre as duas versões OA do modelo de classes de um software: o modelo obtido com o auxílio das refatorações elaboradas neste
trabalho e o outro corresponde a uma solução criada por outro pesquisador, sem utilizar as refatorações. O objetivo é determinar a correspondência desses modelos de classes OA às práticas de projeto OA preconizadas pela comunidade científica. As métricas NOC, NOP, NOAP, NOAP%, NORP e NORP/ são utilizadas.
A métrica NOC é classificada no grupo de métricas de adequação às boas práticas de projeto OA, pois pode indicar a existência de aspectos responsáveis pela modularização de mais de um tipo de interesse, o que corresponde a uma má prática de projeto OA e pode levar à implementação de bad smells como o God
Aspect (Piveta et al., 2007).