Camila Nunes, Fernanda d'Amorim, Márcio Ribeiro, Paulo Borba, Rodrigo Bonifácio, Uirá Kulesza
* Escrita de paper?
* Quais são os próximos passos?
* Quais os resultados que pretendemos obter?
Métrica Original |
Nova Métrica |
Justificativas |
CDLOC = 2 |
CVDLOC(176x205) = 2; CVDLOC(128x160) = 2; CVDLOC(132x176) = 2; CVDLOC(TOTAL) = 6 |
Considerar somente CDLOC pode esconder alguma complexidade sobre as variantes. Por outro lado, considerar o CVDLOC total pode ser interessante pois teremos indicativos da quantidade de variantes, por exemplo. |
CLOC = 6 |
CVLOC(176x205) = 2; CVLOC(128x160) = 2; CVLOC(132x176) = 2; CVLOC(TOTAL) = 6 |
CVLOC pode ser importante pra determinar a complexidade de cada variante... por exemplo, podemos ter CVLOC(X) = 50 e CVLOC(Y) = 4. CLOC = 54 poderia esconder detalhes de cada variante. |
UIC(TravelEvent) = 0; UIC(AcademicEvent) = 0 |
UICV(TravelEvent) = 1; UICV(AcademicEvent) = 1 |
Para a métrica UIC o valor é 0 pois nós utilizamos o concern de eventos nas subclasses. Para o caso da métrica UICV o valor é 1, pois não utilizamos o concern já especificado na superclasse, nós sobrescrevemos o método e o redefinimos de acordo com a nova variante. O concern é o mesmo, mas a variação é outra. |
Para elaboração de um estudo de caso representativo, que satisfaça todos os conceitos presentes em uma LPS, são necessárias as seguintes características:
Quais são as técnicas de design a serem comparadas no projeto PROCAD? A dúvida é, essas técnicas se fundamentam em quais notações? Lembro que o pessoal de Natal tem uma extensão UML para weaving the modelos. Um grupo de São Paulo usa DSLs; enquanto Camila apresentou algo na linha de UML mesmo. O objetivo é comparar essas técnicas?
Possíveis atributos de qualidade (alguns podem ser úteis para código)
Atributos de Qualidade definidos em Quality Modeling for Software Product Lines (QAOOSE 2003)
Atualmente, mecanismos como bad smells (Fowler et al, 1999) e estratégias de detecção (Marinescu, 2002) têm sido propostas para avaliar a qualidade de design OO. Lanza & Marinescu (2006) definiram algumas estratégias para detecção no código dos problemas de design:
Trabalho |
Conferência/Journal/Ferramenta |
Métricas |
Bansiya 1997 |
Modelo de Qualidade QMOOD |
DSC, NOH, ANA, DAM, DCC, CAM, MOA, MFA, NOP, CIS, NOM |
Tese - Baiano |
ECSA 2008 |
Concern Diffusion over Architectural Components (CDAC), Concern Diffusion over Architectural Interfaces (CDAI), Concern Diffusion over Architectural Operations (CDAO), Component-level Interlacing Between Concerns (CIBC), Interface-level Interlacing Between Concerns (IIBC), Operation-level Overlapping Between Concerns (OOBC), Lack of Concern-based Cohesion (LCC), Concern-Sensitive Coupling (CSC), Architectural Fan-in (AFI), Architectural Fan-out (AFO), Number of Concern Interfaces (NCI), Number of Interfaces (NI), Number of Operations (NO) |
(Genero e Piattini, 2001; Genero et al 2002) |
Métricas para diagramas de classes |
Quantidade de relações por Associação (NAssoc), Quantidade de relações por Agregação (NAgg), Quantidade de Dependências (NDep), Quantidade de Generalizações (NGen), Quantidade de relações por Agregação entre Hierarquias (NAggH), Maior profundidade na árvore de herança (MaxDIT), Quantidade de Classes (NC), Quantidade de Atributos (NA), Quantidade de Métodos (NM), NAssocVC, NAggVC, NGenVC |
Trabalho |
Conferência/Journal/Ferramenta |
Métricas |
On the Assessment of Aspectual Design: A Concern-Driven Heuristics Suite |
Submetido ao ICSM 2007 |
CBC, DIT, IUR, LCOO, VS, NOO, NOA, LOC, CDC, NCC, CA, CO, UIC, CLOC, CDLOC |
Tese - Pedro |
SAC 2008 |
VS, LOC, NOA, NOO, WOC, CBC, LCOO, CDC, DoS, NCC, BS, NOEDA, NOEDO, CVDC, NCVC |
Tese - Márcio |
SAC 2008, CSMR 2009 |
CDC, CLOC, CDLOC, NCC, LOC, VS, CBC, DIT |
Métricas do Lattix |
Lattix |
Average Impact, System Stability, Atom Count, Instability, Abstractness, Distance, Outgoing/Incoming dependencies, Abstract atom count, Violation count |
Identifying, Assigning, and Quantifying Crosscutting Concerns |
ACoM/ICSE 2007 |
DOS, DOF, CDO |
Métricas do Plugin Metrics |
Metrics |
Number of Classes, Number of Children, Total number of direct subclasses of a class, Number of Interfaces, Depth of Inheritance Tree (DIT), Number of Overridden Methods (NORM), Number of Methods (NOM), Number of Fields, Lines of Code: TLOC/ MLOC, Specialization Index, McCabe Cyclomatic Complexity, Weighted Methods per Class (WMC), Lack of Cohesion of Methods (LCOM*), Afferent Coupling (Ca), Efferent Coupling (Ce), Instability (I), Abstractness (A), Normalized Distance from Main Sequence (Dn) |
Métricas do Plugin State Of Flow Eclipse Metrics |
State Of Flow Eclipse Metrics |
Cyclomatic Complexity, Lines of Code in Method, Number of Locals in Scope, Number of Levels, Number of Parameters, Number of Statements, Efferent Couplings, Lack of Cohesion in Methods (Chidamber & Kemerer), Lack of Cohesion in Methods (Henderson-Sellers), Lack of Cohesion in Methods (Pairwise Field Irrelation), Lack of Cohesion in Methods (Total Correlation), Number of Fields, Weighted Methods Per Class |
Métricas do AOP Metrics |
AOP Metrics |
Lines of Class Code (LOCC), CK metrics suite for AOP: Weighted Operations in Module (WOM), Depth of Inheritance Tree (DIT), Number Of Children (NOC), Crosscutting Degree of an Aspect (CDA), Coupling on Intercepted Modules (CIM), Coupling on Advice Execution (CAE),, Coupling on Method Call (CMC), Coupling on Field Access (CFA), Coupling between Modules (CBM), Respone For a Module (RFM), Lack of Cohesion in Operations (LCO). Package dependecies: Number of Types (NOT), Abstractness (A), Afferent Couplings (Ca), Efferent Couplings (Ce), Modified Efferent Couplings (Ce), Instability (I) |