Preview

Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS)

Advanced search

Measuring Software Complexity using Indirect Coupling

https://doi.org/10.15514/ISPRAS-2023-35(6)-3

Abstract

Software development can be a time-consuming and costly process that requires a significant amount of effort. Developers are often tasked with completing programming tasks or making modifications to existing code without increasing overall complexity. It is essential for them to understand the dependencies between the program components before implementing any changes. However, as code evolves, it becomes increasingly challenging for project managers to detect indirect coupling links between components. These hidden links can complicate the system, cause inaccurate effort estimates, and compromise the quality of the code. To address these challenges, this study aims to provide a set of measures that leverage measurement theory and hidden links between software components to expand the scope, effectiveness, and utility of accepted software metrics. The research focuses on two primary topics: (1) how indirect coupling measurements can aid developers with maintenance tasks and (2) how indirect coupling metrics can quantify software complexity and size, leveraging weighted differences across techniques. The study presents a comprehensive set of measures designed to assist developers and project managers with project management and maintenance activities. Using the power of indirect coupling measurements, these measures can enhance the quality and efficiency of software development and maintenance processes.

About the Authors

Jose NAVAS-SU
Costa Rica Institute of Technology
Costa Rica

An Instructor at the Department of Computer Science of the Costa Rica Institute of Technology. He is a candidate for Ph.D. in Engineering at the Costa Rica Institute of Technology under the supervision of Dr. Antonio González Torres, he obtained a master’s degree in Computer Science (2017) from the Costa Rica Institute of Technology with the Magna Cum Laude distinction, and obtained a bachelor’s degree in Computer Science (1994) from the Costa Rica Institute of Technology. José has worked as Software Engineer for three decades, including working for multinational companies, such as Accenture and GFT.



Antonio GONZALEZ-TORRES
Costa Rica Institute of Technology
Costa Rica

An Assistant Professor at the Department of Computer Engineering of the Costa Rica Institute of Technology. He obtained a Ph.D. in Computer Science and Automation with the Summa Cum Laude and the International Doctorate (2015) distinctions, and a master’s degree in Intelligent Systems (2014) from the University of Salamanca (Spain). As part of his doctorate, he made a research stay at the Open University of the United Kingdom. In addition, he received a master’s degree in Computer Science (2001) and a bachelor’s degree in Computer Science (1999) from the University of Costa Rica. Dr. González has more than 20 years of professional experience, during which he has worked for several multinational companies, including Walmart, Intel, Equifax, Global Exchange group (Eurodivisas) and Sykes. In parallel with his professional work, he has worked as a Cisco instructor and university professor and has participated in several research projects. His area of expertise is software engineering, the design of visual analytics methods and techniques, and cybersecurity.



References

1. M. M. Lehman, J. F. Ramil, P. D. Wernick, D. E. Perry, and W. M. Turski, “Metrics and laws of software evolution-the nineties view”, Proceedings Fourth International Software Metrics Symposium (1997) pp. 20–32.

2. Almeyda and A. Dávila, “Process improvement in software requirements engineering: A systematic mapping study”, Programming and Computer Software 48, 513–533 (2022).

3. ISO/IEC 14764, Software Engineering – Software Life Cycle Processes – Maintenance, Standard (International Organization for Standardization, 2006(E)).

4. Priyadarshi Tripathy Naik and Kshirasagar, Software Evolution and Maintenance: A Practioner’s Approach (John Wiley & Sons, Inc, 2015) p. 393.

5. Shyam R. Chidamber and Chris F. Kemerer, “Towards a Metrics Suite for Object Oriented Design”, in OOPSLA ’91 Conference proceedings on Object-oriented programming systems, languages, and applications (ACM Digital Library, Phoenix, Arizona, USA, 1991) pp. 197–211.

6. Wei Li and Sallie Henry, “Object-Oriented Metrics that Predict Maintainability”, Journal of Systems and Software 23, 111–122 (1993).

7. Shyam R. Chidamber and Chris F. Kemerer, “A Metrics Suite for Object Oriented Design”, IEEE Transactions on Software Engineering 20, 476–493 (1994).

8. Lionel Briand, Prem Devanbu, and Walcelio Melo, “An investigation into coupling measures for C++”, in ICSE ’97 Proceedings of the 19th international conference on Software (ACM Digital Library, 1997) pp. 412–421.

9. Thomas Zimmermann, Peter Weisgerber, Stephan Diehl, and Andreas Zeller, “Mining Version Histories to Guide Software Changes”, in Proceedings of the 26th International Conference on Software Engineering (IEEE Computer Society, 2004) pp. 563–572.

10. Ewan Tempero and Paul Ralph, “A Framework for Defining Coupling Metrics”, Science of Computer Programming, 1–17 (2018).

11. Timothy C. Lethbridge and R. Lagani`ere, Object-Oriented Software Engineering: Practical Software Development Using UML and Java, 2nd ed. (McGraw-Hill, 2005) p. 561.

12. Hong Yul Yang, Measuring Indirect Coupling, Ph.D. thesis, University of Auckland (2010).

13. Shari Lawrence Pfleeger and Shawn Bohner, “A Framework for Software Maintenance Metrics”, in Proceedings of the Conference on Software Maintenance (1990) pp. 320–327.

14. Denys Poshyvanyk, Andrian Marcus, Rudolf Ferenc, and Tibor Gyimóthy, “Using information retrieval based coupling measures for impact analysis”, Empirical Software Engineering 14, 5–32 (2009).

15. Gabriele Bavota, Bogdan Dit, Rocco Oliveto, Massimilano Di Penta, Denys Poshyvanyk, and Andrea De Lucia, “An empirical study on the developers’ perception of software coupling”, in Proceedings of the International Conference on Software Engineering (ICSE ’13) (IEEE, 2013) pp. 692–701.

16. A. M. Frolov, “A hybrid approach to enhancing the reliability of software”, Programming and Computer Software 30, 18–24 (2004).

17. Johann Eder, Gerti Kappel, and Michael Schrefl, Coupling and Cohesion in Object-Oriented Systems, Tech. Rep. 1 (University of Klagenfurt, Austria, 1992).

18. M Hitz and B Montazeri, “Measuring coupling and cohesion in object-oriented systems”, Proceedings of the International Symposium on Applied Corporate Computing 50, 75–76 (1995).

19. Thomas Zimmermann and Nachiappan Nagappan, “Predicting defects using network analysis on dependency graphs”, Proceedings of the 30th International Conference on Software Engineering, 531 (2008).

20. Nasib S. Gill and Balkishan, “Dependency and interaction oriented complexity metrics of component-based systems”, ACM SIGSOFT Software Engineering Notes 33, 1 (2008).

21. V. N. Kasyanov, “Graph applications in programming”, Programming and Computer Software 27, 146–164 (2001).

22. L.C. Briand, J. Wust, and H. Lounis, “Using coupling measurement for impact analysis in object-oriented systems”, in Proceedings IEEE International Conference on Software Maintenance (ICSM ’99) (IEEE Xplore, Oxford, England, UK, 1999) pp. 475–482.

23. Alan MacCormack, John Rusnak, and Carliss Baldwin, “Exploring the duality between product and organizational architectures: A test of the "mirroring" hypothesis”, Research Policy 41, 1309–1324 (2012).

24. M. Durán, R. Juárez-Ramírez, S. Jiménez, and C. Tona, “User story estimation based on the complexity decomposition using Bayesian networks”, Programming and Computer Software 46, 569–583 (2020).

25. F. Valdés-Souto and Lizbeth Naranjo-Albarrán, “Improving the software estimation models based on functional size through validation of the assumptions behind the linear regression and the use of the confidence intervals when the reference database presents a wedge-shape form”, Programming and Computer Software 47, 673–693 (2021).

26. Huan Li and Bing Li, “A pair of coupling metrics for software networks”, Journal of Systems Science and Complexity 24, 51–60 (2011).

27. Ran Mo, Yuanfang Cai, Rick Kazman, Lu Xiao, and Qiong Feng, “Decoupling level: A New Metric for Architectural Maintenance Complexity”, Proceedings of the 38th International Conference on Software Engineering - ICSE ’16, 499–510 (2016).

28. Saleh Almugrin, Waleed Albattah, and Austin Melton, “Using indirect coupling metrics to predict package maintainability and testability”, Journal of Systems and Software 121, 298–310 (2016).

29. Robert Lagerstr¨om, Carliss Baldwin, Alan MacCormack, Dan Sturtevant, and Lee Doolan, Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), Vol. 10379 LNCS (2017) pp. 53–69.

30. N. I. V’yukova, V. A. Galatenko, and S. V. Samborskii, “Dynamic program analysis tools in gcc and clang compilers”, Programming and Computer Software 46, 281–296 (2020).

31. A. A. Timakov, “Information flow control in software db units based on formal verification”, Programming and Computer Software 48, 265–285 (2022).

32. Robert C. Martin, Agile Software Development: Principles, Patterns, and Practices (Pearson Education, Inc., New Jersey, USA, 2003) p. 557.

33. Norman Fenton, “Software Measurement: A Necesary Scientific Basis”, IEEE Transactions on Software Engineering 20, 199–206 (1994).

34. Elaine J Weyuker, “Evaluating Software Complexity Measures”, IEEE Transactions on Software Engineering 14, 1357–1365 (1988).

35. Sriram Pemmaraju and Steven Skiena, Computational discrete mathematics: combinatorics and graph theory with Mathematica (Caambridge University Press, 2003) p. 497.

36. Thomas J. McCabe, “A Complexity Measur”, IEEE Transactions on Software Engineering SE-2, 308–320 (1976).

37. Harold N. Gabow, “Path-based depth-first search for strong and biconnected components”, Information Processing Letters 74, 107–114 (2000).

38. MongoDB, “.NET Driver for MongoDB” (2019).

39. Newtonsoft, “Json.NET: Popular high-performance JSON Framework for .NET” (2019).

40. NETMF, “.NET Micro Framework Interpreter” (2019).

41. Microsoft, “Node.js tools for Visual Studio” (2019).

42. Neo4j, “Neo4j .NET Driver” (2019).

43. Maurice G. Kendall, Rank Correlation Methods, 4th ed. (Griffin London, London, England, 1970) p. 202.

44. All density functions in the Figures use log10 scale to avoid the graphics from squashing.

45. Except those methods whose difference between FNOM and FAN-OUT is the MFD (this applies to all other line plots as well).

46. M. V. Ksenzov, “Architectural refactoring of corporate program systems”, Programming and Computer Software 32, 31–43 (2006).

47. M. H. Halstead, “Toward a theoretical basis for estimating programming effort”, in ACM 1975 Annual Conference (ACM Digital Library, 1975) pp. 222–224.


Review

For citations:


NAVAS-SU J., GONZALEZ-TORRES A. Measuring Software Complexity using Indirect Coupling. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2023;35(6):43-74. (In Russ.) https://doi.org/10.15514/ISPRAS-2023-35(6)-3



Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)