Evaluating Lehman’s Laws of Software Evolution within Software Product Lines: A Preliminary Empirical Study

  • Raphael Pereira de Oliveira
  • Eduardo Santana de Almeida
  • Gecynalda Soares da Silva Gomes
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8919)

Abstract

The evolution of a single system is a task where we deal with the modification of a single product. Lehman’s laws of software evolution were broadly evaluated within this type of systems and the results shown that these single systems evolve according to his stated laws over time. However, when dealing with Software Product Lines (SPL), we need to deal with the modification of several products which include common, variable and product specific assets. Because of the several assets within SPL, each stated law may have a different behavior for each asset kind. Nonetheless, we do not know if the stated laws are still valid for SPL since they were not yet evaluated in this context. Thus, this paper details an empirical investigation where four of the Lehman’s Laws (LL) of Software Evolution were used in an SPL industrial project to understand how the SPL assets evolve over time. This project relates to an application in the medical domain developed in a medium-size company in Brazil. It contains 45 modules and a total of 70.652 bug requests in the tracking system, gathered along the past 10 years. We employed two techniques - the KPSS Test and linear regression analysis, to assess the relationship between LL and SPL assets. Finally, results showed that three laws were supported based on the data employed (continuous change, increasing complexity, and declining quality). The other law (continuing growth) was partly supported, depending on the SPL evaluated asset (common, variable or product-specific).

Keywords

Software Product Lines Software Evolution Lehman’s Laws of Software Evolution Empirical Study 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Mens, T., Demeyer, S.: Software Evolution. Springer (2008)Google Scholar
  2. 2.
    Lehman, M.: Programs, life cycles, and laws of software evolution. Journal Proceedings of the IEEE 68, 1060–1076 (1980)CrossRefGoogle Scholar
  3. 3.
    Barry, E.J., Kemerer, C.F., Slaughter, S.A.: How software process automation affects software evolution: A longitudinal empirical analysis: Research articles. Journal of Software Maintenance and Evolution: Research and Practice 19, 1–31 (2007)CrossRefGoogle Scholar
  4. 4.
    Cook, S., Harrison, R., Lehman, M.M., Wernick, P.: Evolution in software systems: foundations of the SPE classification scheme. Journal of Software Maintenance 18, 1–35 (2006)CrossRefGoogle Scholar
  5. 5.
    Clements, P.C., Northrop, L.: Software Product Lines: Practices and Patterns. In: SEI Series in Software Engineering. Addison-Wesley (2001)Google Scholar
  6. 6.
    Schmid, K.: A comprehensive product line scoping approach and its validation. In: Proceedings of the 24th International Conference on Software Engineering (ICSE), pp. 593–603. ACM, New York (2002)Google Scholar
  7. 7.
    Ajila, S., Kaba, A.: Using traceability mechanisms to support software product line evolution. In: Proceedings of the IEEE International Conference on Information Reuse and Integration (IRI), pp. 157–162. IEEE (2004)Google Scholar
  8. 8.
    Bailetti, A., Ajila, S., Dumitrescu, R.: Experience report on the effect of market reposition on product line evolution. In: Proceedings of the IEEE International Conference on Information Reuse and Integration (IRI), pp. 151–156. IEEE (2004)Google Scholar
  9. 9.
    Svahnberg, M., Bosch, J.: Evolution in software product lines: Two cases. Journal of Software Maintenance and Evolution: Research and Practice 11, 391–422 (1999)CrossRefGoogle Scholar
  10. 10.
    Israeli, A., Feitelson, D.G.: The linux kernel as a case study in software evolution. Journal of Systems and Software 83, 485–501 (2010)CrossRefGoogle Scholar
  11. 11.
    Lotufo, R., She, S., Berger, T., Czarnecki, K., Wąsowski, A.: Evolution of the linux kernel variability model. In: Bosch, J., Lee, J. (eds.) SPLC 2010. LNCS, vol. 6287, pp. 136–150. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  12. 12.
    Godfrey, M.W., Tu, Q.: Evolution in open source software: A case study. In: IEEE International Conference on Software Maintenance (ICSM), pp. 131–142. IEEE Computer Society, Washington (2000)Google Scholar
  13. 13.
    Xie, G., Chen, J., Neamtiu, I.: Towards a better understanding of software evolution: An empirical study on open source software. In: IEEE International Conference on Software Maintenance (ICSM), pp. 51–60. IEEE (2009)Google Scholar
  14. 14.
    Jedlitschka, A., Ciolkowski, M., Pfahl, D.: Reporting experiments in software engineering. In: Shull, F., Singer, J., Sjboerg, D.I.K. (eds.) Guide to Advanced Empirical Software Engineering, pp. 201–228. Springer, London (2008)CrossRefGoogle Scholar
  15. 15.
    Marciniak, J.J.: Encyclopedia of Software Engineering. In: Basili, V.R., Caldiera, G., Rombach, H.D. (eds.) Goal Question Metric Approach 2, pp. 528–532. Wiley-Interscience, Hoboken (1994)Google Scholar
  16. 16.
    Kemerer, C., Slaughter, S.: An empirical approach to studying software evolution. Journal IEEE Transactions on Software Engineering (TSE) 25, 493–509 (1999)CrossRefGoogle Scholar
  17. 17.
    Lehman, M.M., Ramil, J.F., Wernick, P.D., Perry, D.E., Turski, W.M.: Metrics and laws of software evolution - the nineties view. In: Proceedings of the 4th International Symposium on Software Metrics, pp. 20–32. IEEE Computer Society, Washington (1997)CrossRefGoogle Scholar
  18. 18.
    McCabe, T.J.: A complexity measure. IEEE Transactions on Software Engineering (TSE) 2, 308–320 (1976)CrossRefMATHMathSciNetGoogle Scholar
  19. 19.
    Kan, S.H.: Metrics and Models in Software Quality Engineering. Addison-Wesley, Boston (2002)Google Scholar
  20. 20.
    Gupta, A., Cruzes, D., Shull, F., Conradi, R., Rønneberg, H., Landre, E.: An examination of change profiles in reusable and non-reusable software systems. Journal of Software Maintenance and Evolution: Research and Practice 22, 359–380 (2010)Google Scholar
  21. 21.
    Lientz, B.P., Swanson, B.E.: Software Maintenance Management: A Study of the Maintenance of Computer Application Software in 487 Data Processing Organizations. Addison-Wesley (1980)Google Scholar
  22. 22.
    Kwiatkowski, D., Phillips, P.C.B., Schmidt, P., Shin, Y.: Testing the null hypothesis of stationarity against the alternative of a unit root: How sure are we that economic time series have a unit root? Journal of Econometrics 54, 159–178 (1992)CrossRefMATHGoogle Scholar
  23. 23.
    Yan, X., Su, X.G.: Linear Regression Analysis: Theory and Computing. World Scientific Publishing, River Edge (2009)CrossRefGoogle Scholar
  24. 24.
    Deelstra, S., Sinnema, M., Nijhuis, J., Bosch, J.: Cosvam: a technique for assessing software variability in software product families. In: 20th IEEE International Conference on Software Maintenance (ICSM), pp. 458–462. IEEE (2004)Google Scholar
  25. 25.
    Mende, T., Beckwermert, F., Koschke, R., Meier, G.: Supporting the grow-and-prune model in software product lines evolution using clone detection. In: 12th European Conference on Software Maintenance and Reengineering (CSMR), pp. 163–172. IEEE (2008)Google Scholar
  26. 26.
    McGregor, J.D.: The evolution of product line assets. Technical Report, Software Engineering Institute, CMU/SEI-2003-TR-005 (2003)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2014

Authors and Affiliations

  • Raphael Pereira de Oliveira
    • 1
    • 2
  • Eduardo Santana de Almeida
    • 1
  • Gecynalda Soares da Silva Gomes
    • 1
  1. 1.Federal University of Bahia, Campus OndinaSalvadorBrazil
  2. 2.Federal Institute of Sergipe, Campus EstânciaSergipeBrazil

Personalised recommendations