The Pervasiveness of Global Data in Evolving Software Systems

  • Fraser P. Ruffell
  • Jason W. A. Selby
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3922)


In this research, we investigate the role of common coupling in evolving software systems. It can be argued that most software developers understand that the use of global data has many harmful side-effects, and thus should be avoided. We are therefore interested in the answer to the following question: if global data does exist within a software project, how does global data usage evolve over a software project’s lifetime? Perhaps the constant refactoring and perfective maintenance eliminates global data usage, or conversely, perhaps the constant addition of features and rapid development introduce an increasing reliance on global data? We are also interested in identifying if global data usage patterns are useful as a software metric that is indicative of an interesting or significant event in the software’s lifetime.

The focus of this research is twofold: first to develop an effective and automatic technique for studying global data usage over the lifetime of large software systems and secondly, to leverage this technique in a case-study of global data usage for several large and evolving software systems in an effort to reach answers to these questions.


Global Variable Software Project Global Data Open Source Software Project Chronological Data 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Vim, F.A.Q.: Available at:
  2. 2.
    Briand, L.C., Daly, J., Porter, V., Wüst, J.: A comprehensive empirical validation of design measures for object-oriented systems. In: METRICS 1998: Proceedings of the 5th International Symposium on Software Metrics, Washington, DC, USA, p. 246. IEEE Computer Society, Los Alamitos (1998)Google Scholar
  3. 3.
    2Brooks Jr., F.P.: No silver bullet - essence and accidents of software engineering. IEEE Computer 20(4), 10–19 (1987)CrossRefGoogle Scholar
  4. 4.
    Fischer, M., Oberleitner, J., Ratzinger, J., Gall, H.: Mininig evolution data of a product family. In: MSR 2005: Proceedings of the International Workshop on Mining Software Repositories (May 2005)Google Scholar
  5. 5.
    Guckes, S.: Vim history - release dates of user versions and developer versions. Available at:
  6. 6.
    Hunt, A., Thomas, D.: The pragmatic programmer: from journeyman to master. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA (1999)Google Scholar
  7. 7.
    Kernighan, B.W., Ritchie, D.M.: The C Programming Language. Prentice-Hall, Englewood Cliffs, New Jersey (1978)MATHGoogle Scholar
  8. 8.
  9. 9.
    McConnell, S.: Code complete: a practical handbook of software construction, 2nd edn. Microsoft Press, Redmond, WA, USA (2004)Google Scholar
  10. 10.
    Nakakoji, K., Yamamoto, Y., Nishinaka, Y., Kishida, K., Ye, Y.: Evolution patterns of open-source software systems and communities. In: IWPSE 2002: Proceedings of the International Workshop on Principles of Software Evolution, pp. 76–85. ACM Press, New York (2002)Google Scholar
  11. 11.
    Offutt, A.J., Harrold, M.J., Kolte, P.: A software metric system for module coupling. J. Syst. Softw. 20(3), 295–308 (1993)CrossRefGoogle Scholar
  12. 12.
    Parnas, D.L.: Software aging. In: ICSE 1994: Proceedings of the 16th International Conference on Software Engineering, pp. 279–287. IEEE Computer Society Press, Los Alamitos (1994)Google Scholar
  13. 13.
    Pinzger, M., Fischer, M., Gall, H.: Towards an integrated view on architecture and its evolution. Electronic Notes in Theoretical Computer Science 127(3), 183–196 (2005)CrossRefGoogle Scholar
  14. 14.
    PostgreSQL Global Development Group. PostgreSQL 8.0.0 Documentation (2005)Google Scholar
  15. 15.
    Presser, L., White, J.R.: Linkers and loaders. ACM Comput. Surv. 4(3), 149–167 (1972)CrossRefGoogle Scholar
  16. 16.
    Schach, S.R., Jin, B., Wright, D.R., Heller, G.Z., Offutt, J.: Quality impacts of clandestine common coupling. Software Quality Control 11(3), 211–218 (2003)CrossRefGoogle Scholar
  17. 17.
    Schach, S.R., Offutt, A.J.: On the nonmaintainability of open-source software position paper. In: 2nd Workshop on Open Source Software Engineering (May 2002)Google Scholar
  18. 18.
    Stevens, W.P., Myers, G.J., Constantine, L.L.: Structured design. IBM Systems J. 13(2), 115–139 (1974)CrossRefGoogle Scholar
  19. 19.
    Stroustrup, B.: The C++ Programming Language. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA (2000)MATHGoogle Scholar
  20. 20.
    Yu, L., Schach, S.R., Chen, K., Offutt, J.: Categorization of common coupling and its application to the maintainability of the linux kernel. IEEE Trans. Software Eng. 30(10), 694–706 (2004)CrossRefGoogle Scholar
  21. 21.
    Zimmermann, T., Weissgerber, P., Diehl, S., Zeller, A.: Mining version histories to guide software changes. In: ICSE 2004: Proceedings of the 26th International Conference on Software Engineering, Washington, DC, USA, pp. 563–572. IEEE Computer Society, Los Alamitos (2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Fraser P. Ruffell
    • 1
  • Jason W. A. Selby
    • 1
  1. 1.School of Computer ScienceUniversity of WaterlooWaterlooCanada

Personalised recommendations