bartFilter – Abordagem para Mensurar
Qualidade de Código Java em
Ambiente de Reuso
Mestranda: Aline Timóteo
Orientador: Silvio Meira
C.E.S.A.R. - Recife Center for Advanced Studies and Systems
UFPE – Federal University of Pernambuco
[email protected]
http://www.rise.com.br
Sumário



Motivação
Proposta de Trabalho
Atividades




Disciplinas
Métricas de Código: Survey
Analise de Ferramentas
Calendário
http://www.rise.com.br
Motivação
http://www.rise.com.br
Reuso

O que é reuso?

[Basili, 1991; Frakes, 1994]
Reuse is a process of creating software
systems from existing software rather
than building software system from
scratch.
[Kruger, 1992]
http://www.rise.com.br
Benefícios do Reuso [Basili, 1996]




Qualidade
Produtividade
Confiabilidade
Redução de Esforço





Trabalho redundante e tempo de desenvolvimento
Time-to-market
Documentação
Custo de manutenção
Tamanho da equipe
Reuse é uma vantagem competitiva!!!
http://www.rise.com.br
Instalando um Programa de Reuso

Modelo de Griss [Griss, 1994]


Modelo de Sametinger [Sametinger, 1997]


Níveis de reuso
Análise de domínio, projeto piloto,
Institucionalização
Pontos comuns:

Ambiente de suporte a reuso

Repositórios para assets, ferramentas de busca e
recuperação, ferramentas para o controle de versão...
http://www.rise.com.br
Ferramentas para Busca e Recuperação de Assets
[Garcia, 2006]

CodeFinder, Agora, CLARiFi, InteliZap, Strathcona,
Bart ...

Eficiência na busca e recuperação de assets



Busca por palavras, contexto, semântica
Comunicação com diferentes tipos de repositório
Deve estar preparada para dar suporte nas diversas fases
do desenvolvimento

Código, documentos, modelos
http://www.rise.com.br
O Problema

Possuir repositorio não garante reuso!

Not Invented Here (NIH) [Frakes, 1995]

Como analisar a qualidade dos artefatos
armazenados no repositório?
http://www.rise.com.br
Proposta de Trabalho
http://www.rise.com.br
Proposta

Basic Asset Retrieval Tool (B.A.R.T.) [Santos, 2006]


Ferramenta para busca e recuperação de ativos em
sistemas de controle de versão de software
O objetivo do B.A.R.T. é auxiliar o processo de
desenvolvimento de software

Diminuindo o tempo de análise e implementação,
aumentando a qualidade, através do acesso facilitado a
artefatos reutilizáveis
http://www.rise.com.br
Proposta
bartFilter
Qualidade de Código
Métricas + Atributos de Qualidade
http://www.rise.com.br
Proposta
bartFilter
exemplo
http://www.rise.com.br
Atividades
http://www.rise.com.br
Disciplinas
Referencias
Disciplinas
IN0953
Engenharia de Software
IN0979
Tópicos Avançados em
Engenharia de Software
IN1007
Paradigmas de Linguagens
de Programação
IN1095
Realidade Virtual e
Multimídia
IN1038
Tópicos Avançados em
Adm. E Integração de
Sistemas
IN1067
Trabalho Individual
http://www.rise.com.br
Métricas de Código: Survey
Software metrics is a method to
quantify attributes in software
processes, products and projects.
[Daskalantonakis, 1992]
http://www.rise.com.br
Motivação para Metricas de Software

Segundo [Sommerville, 2003]



Encontrar um valor numérico para quantificar atributos de
produtos ou processos de software.
Comparar estes valores entre eles ou com valores obtidos
em outros projetos da organização.
A partir destes dados obter conclusões sobre a qualidade de
produtos e processos.
http://www.rise.com.br
Métricas de Código : Survey

Antes 1991: Métricas Baseadas em Complexidade


Produtividade, esforço, manutenabilidade…
Depois 1992: Metricas Baseadas em Conceitos de
Orientação a Objetos

Maturidade das tecnicas de Engenharia de Software

Uso efetivo do paradigma OO

Produtividade, esforço, manutenabilidade, acoplamento, coesão,
herança…
http://www.rise.com.br
Antes 1991: Métricas Baseadas em Complexidade

Cyclomatic Complexity [McCabe, 1976]

Halstead Metric [Halstead, 1977]

Outras métricas de complexidade [Yin, 1978; McClure,
1978;Woodfield, 1980; Henry, 1981]

Relação entre métricas de complexidade e manutenção
[Kafura, 1987].

Relação entre métricas de complexidade e esforço de
desenvolvimento [Lind, 1989].

Relação entre a métrica de McCabe e a produtividade durante a
manutenção do software [Gill, 1991].
http://www.rise.com.br
Depois 1992: Metricas Baseadas em Conceitos de
Orientação a Objetos

Chidamber and Kemerer Metrics [Chidamber, 1994]

Lorenz and Kidd Metrics [Lorenz, 1994]



Algumas outras métricas criadas [Brito, 1994; Briand, 1997;
Harrison, 1998, Chatzigeorgiou, 2003]
Alguns trabalhos analizando as métricas foram publicados
[Mayer, 1999; Schneidewind, 1999; Aalshayeb, 2003;
Subramanyam, 2003]
Alguns trabalhos sobre validação de métricas foram publicados
[Basili, 1996; Briand 1999; Emam, 2001]
http://www.rise.com.br
Timeline
Metrics Based on the Complexity
Metrics Based on the Concepts
of Object Oriented
http://www.rise.com.br
Analise de Ferramentas

Metodologia


Passo 1: Selecionar métricas e atributos de qualidade
Passo 2: Aplicar o GQM [GQM, 1994] (Goal, Question,
Metrics) nas métricas e atributos de qualidade selecionados

Passo 3: Selecionar ferramentas para coleta das métricas

Passo 4: Coletar as métricas nos projetos

Passo 5: Analisar os resultados
http://www.rise.com.br
Passo 1: Selecionar métricas e atributos de
qualidade
http://www.rise.com.br
Passo 2: Aplicar o GQM nas métricas e atributos de
qualidade selecionados
http://www.rise.com.br
Passo 3: Selecionar ferramentas para coleta das
métricas







Metrics
Jdepend
Javancss
Refactorit
JHawk Metrics
Coverlipse
Burn
http://www.rise.com.br
Passo 4: Coletar as métricas nos projetos
asset.controller
AC por Pacote
WMC por Classe
asset.model
25
25
asset.controller
asset.model
asset.view
communication.webservice.api
communication.webservice.impl
nodeType.controller
nodeType.model
org.apache.jackrabbit.j2ee
relationship.controller
nodeType.model
relationship.model
system.view
user.controller
user.model
util
util.abstraction
util.abstraction.controller
util.abstraction.model
util.abstraction.view
util.exception
util.property
util.security
util.textfilter
workspace.controller
workspace.model
workspace.view
20
20
18
16
15
15
10
8
7
6
6
6
5
4
4 4
3
3
0
0
60
nodeType.model
org.apache.jackrabbit.j2ee
50
relationship.controller
nodeType.model
relationship.model
40
39
37
36
0
0
1
system.view
35
user.controller
31
30
31
user.model
26
util
24
23
20
23
22
20
19
17
15
14
12
10
8
7
6
5
4
2
1
0
1
0
communication.w ebservice.ap
i
communication.w ebservice.im
pl
nodeType.controller
58
2
1
0
60
10
2
1
asset.view
70
0
0
1
22
21
util.abstraction
19
18
16
util.abstraction.controller
util.abstraction.model
14
11
10
8
7
5
4
3
2
0
2
util.abstraction.view
10
7
6
5
7
6
5
8
7
util.exception
util.property
util.security
3
4
5
6
7
util.textfilter
w orkspace.controller
w orkspace.model
w orkspace.view
http://www.rise.com.br
Passo 5: Analisar os resultados

Definir guia para análise das métricas

Rever relacionamento de atributos e métricas


n para m e não 1 para n.
Representação das métricas

Qual a melhor forma de representar os resultados? Quais os
tipos de gráficos possíveis?
http://www.rise.com.br
Calendário
http://www.rise.com.br
http://www.rise.com.br
Referências










[Alshayeb, 2003] Alshayeb, M., Li, M.; (2003), "An Empirical Validation of Object-Oriented Metrics in Two
Different Iterative Software Processes", IEEETransactions on Software Engineering archive, Volume 29,
page(s): 1043 - 1049.
[Basili, 1991] Basili, V.R., Rombach, H. D.; (1991), “Support for Comprehensive Reuse”, Software
Engineering Journal, Special issue on software process and its support, Volume 06, page(s): 306-316.
[Basili, 1996] Basili, V. R., Briand, L. C., Melo, W. L.; (1996), “A Validation of Object-Oriented Design
Metrics as Quality Indicators”, IEEE Transactions on Software Engineering, Volume 22, page(s): 751-761,
Piscataway, NJ, USA.
[Briand, 1997] Briand, L., Devanbu, W., Melo W.; (1997), "An investigation into coupling measures for
C++", 19th International Conference on Software Engineering, page(s): 412-421, Boston, USA.
[Bauer, 1993] D. Bauer, A Reusable Parts Center , IBM Systems Journal, Vol. 32, No. 04, June, 1993, pp.
620-624.
[Briand, 1999] Briand, L.C., Morasca, S., Basili, V.R.; (1999), "Defining and validating measures for
object-based high-level design", Software Engineering, IEEE Transactions, Volume 25, page(s): 722-743.
[Brito, 1994] Brito, Abreu, F., Carapuça, R.; (1994), "Object-Oriented Software Engineering: Measuring
and controlling the development process", 4th Interntional Conference on Software Quality, Mc Lean, VA,
USA.
[Chatzigeorgiou, 2003] Chatzigeorgiou, A.; (2003), "Mathematical Assessment of Object-Oriented Design
Quality", IEEE Transactions on Software Engineering, Volume 29, page(s): 1050-1053.
[Chidamber, 1994] Chidamber, S. R., Kemerer, C. F.; (1994), "A Metrics Suite for Object Oriented
Design", IEEE Transactions on Software Engineering, Volume 20, page(s): 476-493, Piscataway, USA.
[Daskalantonakis, 1992] Daskalantonakis, M. K.; (1992), “A Pratical View of Software Measurement and
Implementation Experiences Within Motorola”, IEEE Transactions on Software Engineering, Volume 18,
page(s): 998 – 1010.
http://www.rise.com.br
Referências













[Emam, 2001] Emam, K. E., Benlarbi, S., Goel, N., Rai, S. N.; (2001), "The Confounding Effect of Class Size on the Validity of
Object-Oriented Metrics", IEEE Transaction on Software Engineering, Volume 27, page(s): 630-650.
[Frakes, 1994] Frakes, W. B., Isoda, S.; (1994), “Success Factors of Systematic Reuse”, IEEE Software, Volume 11, page(s):
14-19.
[Garcia, 2006] Garcia, V. C., Lucrédio, D., Durão, F. A., Almeida, E. S. d., Fortes, R. P. d., Meira, S. R. d. L.; (2006), "From
Specification to Experimentation: A Software Component Search Engine Architecture", the 9th International Symposium on
Component-Based Software Engineering (CBSE), Lecture Notes in Computer Science, Springer-Verlag, Sweden.
[Gill, 1991] Gill, G. K., Kemerer, C. F.; (1991), "Cyclomatic Complexity Density and Software Maintenance Productivity", IEEE
Transactions on Software Engineering, page(s):1284-1288.
[GQM, 1994] accessible in: https://www.goldpractices.com/practices/gqm/
[Griss, 1994] Griss, M. L.; (1994), “Software reuse experience at Hewlett-Packard”, Proceedings of the 16th international
conference on Software engineering, page(s): 270, Sorrento, Italy.
[Halstead, 1977] Halstead, M.H.; (1977), “Elements of Software Science”, page(s): 128, New York, USA.
[Harrison, 1998] Harrison, R., Counsell, S., Nithi, R.; (1998), "Coupling Metrics for Object-Oriented Design", 5th International
Software Metrics Symposium Metrics, page(s): 150-156.
[Henry, 1981] Henry, S., Kafura, D.; (1981), "Software Structure Metrics Based on Information Flow", Software Engineering,
IEEE Transactions, page(s): 510-518.
[Lind, 1989] Lind, R. K., Vairavan, K.; (1989), "An Experimental Investigation of Software Metrics and Their Relationship to
Software Development Effort", IEEE Transactions on Software Engineering, page(s): 649-653, Piscataway, NJ, USA.
[Lorenz, 1994] Lorenz M. and Kidd J.; (1994), "Object-Oriented Software Metrics: A Practical Guide", Prentice Hall, Englewood
Cliffs, New Jersey, USA.
[Mayer, 1999] Mayer, T., Hall, T.; (1999), "A Critical Analysis of Current OO Design Metrics", Software Quality Journal, Volume
8, page(s): 97-110.
[McCabe, 1976] McCabe, T. J.; (1976) “A Complexity Measure”. IEEE Transactions of Software Engineering, Volume SE-2,
page(s): 308-320.
http://www.rise.com.br
Referências












[McClure, 1978] McClure, C. L.; (1978), "A Model for Program Complexity Analysis", 3rd International Conference on Software
Engineering, page(s): 149-157, Piscataway, NJ, USA.
[Pressman, 1997] Pressman, R. S.; (1997), "Software engineering a practitioner's approach", 4th.ed, McGraw-Hill, page(s):
852, New York, USA.
[Kafura, 1987] Kafura, D., Reddy, G.; (1987), "The Use of Software Complexity Metrics in Software Maintenance", IEEE
Transactions on Software Engineering archive, Volume 13 , page(s): 335-343, Piscataway, NJ, USA.
[Krueguer, 1992] Krueger, C. W.; (1992), “Software Reuse” , ACM Computing Surveys, Volume 24, page(s): 131-183.
[Sametinger, 1997] Sametinger, J.; (1997), “Software Engineering with Reusable Components”, Springer Verlag, page(s):
275.
[Santos, 2006] Santos, E. C. R.; Durão, F.A.; Martins, A. C.; Mendes, R.; Melo, C. A.; Melo, B. J. M.; Garcia, V. C.; Almeida,
E. S.; Meira, S. R. L.; (2006), “Towards an Effective Context-Aware Proactive Asset Search and Retrieval Tool”, in the Sixth
Workshop on Component-Based Development (WDBC), Recife, Brazil.
[Schneidewind, 1999] Schneidewind, N.F.; (1999), "Measuring and evaluating maintenance process using reliability, risk, and
test metrics", Software Engineering, IEEE Transactions, Volume 25, page(s):769-781.
[Sommerville, 2004] Sommerville, I.; (2004), “Engenharia de Software”, Editora Addison Wesley, 6º Edição, São Paulo – SP.
[Subramanya, 2003] Subramanya, R., Krishnan, M. S.; (2003), "Empirical Analysis of CK Metrics for Object-Oriented Design
Complexity: Implication for Software Defects", IEEE Transactions on Software Engineering, Volume 29, page(s): 297-310.
[VanDoren, 1997] VanDoren, E., Sciences, k., Springs, C.; (1997), "Cyclomatic Complexity", Web Publication, access in:
http://www.sei.cmu.edu/str/descriptions/cyclomatic_body.html
[Woodfield, 1980] Woodfield, N.; (1980), "Enhanced effort estimation by extending basic programming models to include
modularity factors", ACM publication.
[Yin, 1978] Yin, B. H., Winchester, J. W.; (1978), "The establishment and use of measures to evaluate the quality of software
designs", Software quality assurance workshop on Functional and performance, page(s): 45-52, New York, NY, USA.
http://www.rise.com.br
Dúvidas, comentários
e sugestões
Aline Timóteo
C.E.S.A.R. - Recife Center for Advanced Studies and Systems
UFPE – Federal University of Pernambuco
[email protected]
http://www.rise.com.br
Download

B.A.R.T. Basic Asset Retrieval Tool