Software Evolution Characterization - A Complex Network Approach

  • Kecia A. M. Ferreira CEFET-MG
  • Mariza A. S. Bigonha UFMG
  • Roberto S. Bigonha UFMG
  • Bárbara M. Gomes CEFET-MG

Resumo


A evolução do software tem sido objeto de pesquisas nas últimos décadas, revelando que um sistema de software tem crescimento contínuo, continuando mudanças, aumentando a complexidade e diminuindo a qualidade. No entanto, o conhecimento sobre como esse processo ocorre ainda não está consolidado. Este artigo apresenta o resultados de um estudo sobre caracterização da evolução de software com base em conceitos de Redes Complexas. Analisamos 16 sistemas de software de código aberto e um aplicação comercial, num total de 129 versões. Os resultados deste estudo mostram que: a densidade de uma rede de software diminui à medida que o sistema de software cresce; o diâmetro dessas redes é curto; as classes com grau superior manter esse status; tais classes são instáveis ​​e sua coesão interna se degrada. Nossas investigações também revelaram um quadro interessante que modela a estrutura macroscópica das redes de software. Nós a chamávamos de casinha.
Palavras-chave: Software, Evolução, Caracterização

Referências

Abreu, F. B. and Carapua, R. (1994). Object-oriented software engineering: Measuring and controlling the development process. In Proceedings of 4th Int. Conf. of Software Quality, McLean, USA.

Baxter, G., Frean, M., Noble, J., Rickerby, M., Smith, H., Visser, M., Melton, H., and Tempero, E. (2006). Understanding the shape of java software. In OOPSLA ’06, pages 397–412, Portland, USA. ACM.

Broder, A., Kumar, R., Maghoul, F., Raghavan, P., Rajagopalan, S., Stata, R., Tomkins, A., and Wiener, J. (2000). Graph structure in the web. In WWW9 Conference, pages 309–320.

Ferreira, K. A. M. (2006). Avaliao de Conectividade em Sistemas Orientados por Objetos. Master Thesis - DCC/UFMG., Belo Horizonte, Brazil.

Ferreira, K. A. M. (2011). Um Modelo de Predio de Amplitude da Propagao de Modificaes Contratuais em Software Orientado por Objetos. PhD Dissertation - DCC/UFMG., Belo Horizonte, Brasil.

Fowler, M. (1999). Refactoring - Improving the Design of Existing Code. Addison Wesley.

Godfrey, M. and Tu, Q. (2001). Growth, evolution, and structural change in open source software. In Proc. of the IWPSE, pages 103–106, Vienna, Austria.

Herraiz, I., Robles, G., and Gonzalez-Barahon, J. M. (2006). Comparison between slocs and number of files as size metrics for software evolution analysis. In CSMR ’06, pages 206–213, Washington, DC, USA. IEEE Computer Society.

Hitz, M. and Montazeri, B. (1995). Measuring coupling and cohesion in object-oriented systems. In Int. Symposium on Applied Corporate Computing, Monterrey, Mxico.

Israeli, A. and Feitelson, D. G. (2010). The linux kernel as a case study in software evolution. The Journal of Systems and Software, 83(3):485–501.

Jenkins, S. and Kirk, S. R. (2007). Software architecture graphs as complex networks: A novel partitioning scheme to measure stability and evolution. Information Sciences: an International Journal, 177(12):2587–2601.

Jing, L., Keqing, H., Yutao, M., and Rong, P. (2006). Scale free in software metrics. In COMPSAC ’06, pages 229–235, Washington, USA.

Koch, S. (2007). Software evolution in open source projects - a large-scale investigation. J. Softw. Maint. Evol., 19(6):361–382.

Lee, Y., Yang, J., and Chang, K. H. (2007). Metrics and evolution in open source software. In QSIC ’07, pages 191–197, Washington, USA.

Lehman, M. M., Ramil, J. F., Wernick, P. D., Perry, D. E., and Turski, W. M. (1997). Metrics and laws of software evolution - the nineties view. In Metrics’97.

Leskovec, J., Kleinberg, J., and Faloutsos, C. (2007). Graph evolution: Densification and shrinking diameters. ACM Trans. Knowl. Discov. Data, 1.

Louridas, P., Spinellis, D., and Vlachos, V. (2008). Power laws in software. ACM Trans. Softw. Eng. Methodol., 18:2:1–2:26.

Mens, T., Fernndez-Ramil, J., and Degrandsart, S. (2008). The evolution of eclipse. In Proc. 24th Int’l Conf. on Software Maintenance, pages 386–395.

Meyer, B. (1997). Object-oriented software construction. Prentice Hall International Series, Estados Unidos, 2 edition.

Newman, M. E. J. (2003). The structure and function of complex networks. In SIAM Reviews, volume 45, pages 167–256.

PAJEK (2010). Networks / Pajek Program for Large Network Analysis - for Windows. http://vlado.fmf.uni-lj.si/pub/networks/pajek/.

Puppin, D. and Silvestri, F. (2006). The social network of java classes. In SAC ’06, pages 1409–1413, New York, NY, Estados Unidos. ACM.

Wheelson, R. and Counsell, S. (2003). Power law distributions in class relationships. In SCAM’03, Amsterd, Holanda.

Xie, G., Chen, J., and Neamtiu, I. (2009). Towards a better understanding of software evolution: An empirical study on open source software. In ICSM’09.

Zimmermann, T. and Nagappan, N. (2008). Predicting defects using network analysis on dependency graphs. In ICSE ’08, pages 531–540, Leipzig, Alemanha. ACM.
Publicado
06/06/2011
FERREIRA, Kecia A. M.; BIGONHA, Mariza A. S.; BIGONHA, Roberto S.; GOMES, Bárbara M.. Software Evolution Characterization - A Complex Network Approach. In: SIMPÓSIO BRASILEIRO DE QUALIDADE DE SOFTWARE (SBQS), 10. , 2011, Curitiba. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2011 . p. 41-55. DOI: https://doi.org/10.5753/sbqs.2011.15386.