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