bartfilter – abordagem para mensurar qualidade de código java em ambiente de reuso

32
http://www.rise.com.br bartFilter – bartFilter – Abordagem para Mensurar Abordagem para Mensurar Qualidade de Código Java em Ambiente Qualidade de Código Java em Ambiente de Reuso de Reuso Mestranda: Aline Timóteo Mestranda: Aline Timóteo Orientador: Silvio Meira Orientador: Silvio Meira C.E.S.A.R. - Recife Center for Advanced Studies and Systems C.E.S.A.R. - Recife Center for Advanced Studies and Systems UFPE – Federal University of Pernambuco UFPE – Federal University of Pernambuco [email protected] [email protected]

Upload: alayna

Post on 04-Jan-2016

28 views

Category:

Documents


2 download

DESCRIPTION

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]. Sumário. Motivação - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

bartFilter – bartFilter – Abordagem para Mensurar Abordagem para Mensurar Qualidade de Código Java em Qualidade de Código Java em

Ambiente de ReusoAmbiente de Reuso

Mestranda: Aline TimóteoMestranda: Aline TimóteoOrientador: Silvio MeiraOrientador: Silvio Meira

C.E.S.A.R. - Recife Center for Advanced Studies and SystemsC.E.S.A.R. - Recife Center for Advanced Studies and SystemsUFPE – Federal University of PernambucoUFPE – Federal University of Pernambuco

[email protected]@cin.ufpe.br

Page 2: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

SumárioSumário

Motivação Proposta de Trabalho Atividades

Disciplinas Métricas de Código: Survey Analise de Ferramentas

Calendário

Page 3: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

MotivaçãoMotivação

Page 4: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

ReusoReuso

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.

Page 5: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Benefícios do Reuso [Basili, 1996]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!!!

Page 6: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Instalando um Programa de ReusoInstalando 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...

Page 7: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Ferramentas para Busca e Recuperação de Ferramentas para Busca e Recuperação de Assets Assets [Garcia, 2006][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

Page 8: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

O ProblemaO Problema

Possuir repositorio não garante reuso!

Not Invented Here (NIH) [Frakes, 1995]

Como analisar a qualidade dos artefatos armazenados no repositório?

Page 9: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Proposta de TrabalhoProposta de Trabalho

Page 10: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

PropostaProposta

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

Page 11: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

PropostaProposta

bartFilter

Qualidade de Código

Métricas + Atributos de Qualidade

Page 12: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

PropostaProposta

exemplobartFilter

Page 13: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

AtividadesAtividades

Page 14: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

DisciplinasDisciplinasReferencias 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

Page 15: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Software metrics is a method to quantify attributes in software processes, products and projects.

[Daskalantonakis, 1992]

Métricas de Código: SurveyMétricas de Código: Survey

Page 16: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Motivação para Metricas de Software 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.

Page 17: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Métricas de Código : Métricas de Código : SurveySurvey

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…

Page 18: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Antes 1991: Métricas Baseadas em ComplexidadeAntes 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].

Page 19: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Depois 1992: Metricas Baseadas em Conceitos de Depois 1992: Metricas Baseadas em Conceitos de Orientação a ObjetosOrientaçã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]

Page 20: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

TimelineTimelineMetrics Based on the Complexity Metrics Based on the Concepts

of Object Oriented

Page 21: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Analise de FerramentasAnalise 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

Page 22: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Passo 1:Passo 1: Selecionar métricas e atributos de Selecionar métricas e atributos de qualidadequalidade

Page 23: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Passo 2:Passo 2: Aplicar o GQM nas métricas e atributos de Aplicar o GQM nas métricas e atributos de qualidade selecionadosqualidade selecionados

Page 24: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Passo 3:Passo 3: Selecionar ferramentas para coleta das Selecionar ferramentas para coleta das métricasmétricas Metrics Jdepend Javancss Refactorit JHawk Metrics Coverlipse Burn

Page 25: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Passo 4:Passo 4: Coletar as métricas nos projetos Coletar as métricas nos projetos

WMC por Classe

23

26

7

31

18

1110

21

78

12

58

0

864

86

1716

22

60

31

6

15

46

15

46

10

7

39

36

2

14

0 0

6 6

22

4

1

19

3

24

2

23

7

35

2

877

14

19

5 55 5 5

17

37

8

20

10

0

10

20

30

40

50

60

70

1 2 3 4 5 6 7

asset.controller

asset.model

asset.view

communication.w ebservice.apicommunication.w ebservice.implnodeType.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.textf ilter

w orkspace.controller

w orkspace.model

w orkspace.view

3

6

0

1

0

1

2

0

3

4 4

0

7

15

20

4

8

18

6

25

2

1

0

6

16

00

5

10

15

20

25

1

AC por Pacote

asset.controllerasset.modelasset.viewcommunication.webservice.apicommunication.webservice.implnodeType.controllernodeType.modelorg.apache.jackrabbit.j2eerelationship.controllernodeType.modelrelationship.modelsystem.viewuser.controlleruser.modelutilutil.abstractionutil.abstraction.controllerutil.abstraction.modelutil.abstraction.viewutil.exceptionutil.propertyutil.securityutil.textfilterworkspace.controllerworkspace.modelworkspace.view

Page 26: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Passo 5:Passo 5: Analisar os resultados 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?

Page 27: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

CalendárioCalendário

Page 28: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Page 29: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

ReferênciasReferê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.

Page 30: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

ReferênciasReferê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.

Page 31: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

ReferênciasReferê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.

Page 32: bartFilter –  Abordagem para Mensurar Qualidade de Código Java em Ambiente de Reuso

http://www.rise.com.br

Dúvidas, comentários Dúvidas, comentários e sugestõese sugestões

Aline TimóteoAline Timóteo

C.E.S.A.R. - Recife Center for Advanced Studies and SystemsC.E.S.A.R. - Recife Center for Advanced Studies and Systems

UFPE – Federal University of PernambucoUFPE – Federal University of Pernambuco

[email protected]@cin.ufpe.br