Skip to main content

Automatically Assessing Complexity of Contributions to Git Repositories

  • Conference paper
  • First Online:
  • 1233 Accesses

Part of the book series: Communications in Computer and Information Science ((CCIS,volume 1439))

Abstract

Lehman’s second law of software evolution suggests that under certain conditions software “becomes more difficult to evolve”. Similarly, Technical Debt (TD) is often considered as technical compromises that render future changes of software more costly. But how does one actually assess if modifying software becomes more difficult or costly? So far research studied this question indirectly by assessing internal structural complexity of successive software versions arguing that increasing internal complexity renders evolution tasks more difficult and costly too. Our goal is to assess complexity of evolution tasks directly. Therefore, we present an algorithm and tool that allows to automatically assess Contribution Complexity (CC), which is the complexity of a contribution respecting difficulty of integration work. Our initial evaluation suggests that our proposed algorithm and readily available tool are suitable to automatically assess complexity of contributions to software in Git repositories and the results of applying it on 8 686 contributions to two open-source systems indicate that evolution tasks actually become slightly more difficult.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   99.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   129.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

References

  1. IEEE Standard for a Software Quality Metrics Methodology. Technical report (1998)

    Google Scholar 

  2. Amanatidis, T., Chatzigeorgiou, A.: Studying the evolution of PHP web applications. Inf. Softw. Technol. 72, 48–67 (2016)

    Article  Google Scholar 

  3. Avgeriou, P., Kruchten, P., Ozkaya, I., Seaman, C.: Managing technical debt in software engineering (dagstuhl seminar 16162). In: Dagstuhl Reports, vol. 6. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik (2016)

    Google Scholar 

  4. Basili, V.R.: Qualitative software complexity models: a summary. Tutorial on models and methods for software management and engineering (1980)

    Google Scholar 

  5. di Biase, M., Rastogi, A., Bruntink, M., van Deursen, A.: The delta maintainability model: measuring maintainability of fine-grained code changes. In: 2019 IEEE/ACM International Conference on Technical Debt (TechDebt), pp. 113–122. IEEE (2019)

    Google Scholar 

  6. Dörner, D.: The Logic of Failure: Recognizing and Avoiding Error in Complex Situations. Merloyd Lawrence Book, Basic Books (1997)

    Google Scholar 

  7. Hassan, A.E.: Predicting faults using the complexity of code changes. In: 2009 IEEE 31st International Conference on Software Engineering, pp. 78–88. IEEE (2009)

    Google Scholar 

  8. Heitlager, I., Kuipers, T., Visser, J.: A practical model for measuring maintainability. In: 6th International Conference on the Quality of Information and Communications Technology (QUATIC 2007), pp. 30–39. IEEE (2007)

    Google Scholar 

  9. Herraiz, I., Hassan, A.E.: Beyond lines of code: do we need more complexity metrics? Making Software: What Really Works, and Why We Believe It, pp. 125–141 (2010)

    Google Scholar 

  10. Herraiz, I., Rodriguez, D., Robles, G., Gonzalez-Barahona, J.M.: The evolution of the laws of software evolution: a discussion based on a systematic literature review. ACM Comput. Surv. (CSUR) 46(2), 1–28 (2013)

    Article  Google Scholar 

  11. Hindle, A., Godfrey, M.W., Holt, R.C.: Reading beside the lines: indentation as a proxy for complexity metric. In: 2008 16th IEEE International Conference on Program Comprehension, pp. 133–142. IEEE (2008)

    Google Scholar 

  12. Hitz, M., Montazeri, B.: Measuring coupling and cohesion in object-oriented systems. Citeseer (1995)

    Google Scholar 

  13. Lakshman, A., Malik, P.: Cassandra: a decentralized structured storage system. ACM SIGOPS Oper. Syst. Rev. 44(2), 35–40 (2010)

    Article  Google Scholar 

  14. Lehman, M.M., Fernández-Ramil, J.C.: Rules and tools for software evolution planning and management. Softw. Evol. Feedback 539–560 (2006)

    Google Scholar 

  15. Loftus, G.R.: Evaluating forgetting curves. J. Exp. Psychol. Learn. Mem. Cogn. 11(2), 397 (1985)

    Article  Google Scholar 

  16. McCabe, T.J.: A complexity measure. IEEE Trans. Softw. Eng. 4, 308–320 (1976)

    Article  MathSciNet  Google Scholar 

  17. Miller, G.A.: The magical number seven, plus or minus two: some limits on our capacity for processing information. Psychol. Rev. 63(2), 81 (1956)

    Article  Google Scholar 

  18. Rios, N., de Mendonça Neto, M.G., Spínola, R.O.: A tertiary study on technical debt: types, management strategies, research trends, and base information for practitioners. Inf. Softw. Technol. 102, 117–145 (2018)

    Article  Google Scholar 

  19. Shao, J., Wang, Y.: A new measure of software complexity based on cognitive weights. Can. J. Electr. Comput. Eng. 28(2), 69–74 (2003)

    Article  Google Scholar 

  20. Spadini, D., Aniche, M., Bacchelli, A.: Pydriller: python framework for mining software repositories. In: Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, pp. 908–911 (2018)

    Google Scholar 

  21. Tamrakar, R., Jørgensen, M.: Does the use of Fibonacci numbers in planning poker affect effort estimates? (2012)

    Google Scholar 

  22. Visser, J., Rigal, S., van der Leek, R., van Eck, P., Wijnholds, G.: Building Maintainable Software, Java Edition: Ten Guidelines for Future-Proof Code. 1st edn. O’Reilly Media Inc. (2016)

    Google Scholar 

  23. Zuse, H.: Software Complexity: Measures and Methods, vol. 4. Walter de Gruyter GmbH & Co KG (1991)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Rolf-Helge Pfeiffer .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2021 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Pfeiffer, RH. (2021). Automatically Assessing Complexity of Contributions to Git Repositories. In: Paiva, A.C.R., Cavalli, A.R., Ventura Martins, P., Pérez-Castillo, R. (eds) Quality of Information and Communications Technology. QUATIC 2021. Communications in Computer and Information Science, vol 1439. Springer, Cham. https://doi.org/10.1007/978-3-030-85347-1_9

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-85347-1_9

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-85346-4

  • Online ISBN: 978-3-030-85347-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics