320 likes | 420 Views
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 alt@cin.ufpe.br. Sumário. Motivação
E N D
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 alt@cin.ufpe.br 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] [Kruger, 1992] Reuse is a process of creating software systems from existing software rather than building software system from scratch. 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] • Níveis de reuso • Modelo de Sametinger [Sametinger, 1997] • 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 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 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 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
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 alt@cin.ufpe.br http://www.rise.com.br