Preview

Труды Института системного программирования РАН

Расширенный поиск

Оценки сложности программного обеспечения на основе косвенных связей

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

Аннотация

Разработка программного обеспечения может быть длительным и дорогостоящим процессом, требующим значительных усилий. Перед разработчиками часто ставят задачи по программированию или внесению изменений в существующие программы так, чтобы общая сложность не увеличилась. Понятно, что прежде, чем вносить какие-либо изменения, важно понять зависимости между компонентами программы. Однако по мере роста размеров программ менеджерам проектов становится все сложнее обнаруживать косвенные связи между компонентами. Эти скрытые связи могут усложнять систему, приводить к неточной оценке необходимых затрат и ставить под угрозу качество получающихся программ. Чтобы решить эти проблемы, данное исследование направлено на выработку набора мер, которые дополняют теорию измерений и выявляют скрытые связи между компонентами программного обеспечения, расширяя сферу применения, увеличивая эффективность и полезность общепризнанных метрик программного обеспечения. Исследование велось в двух главных направлениях: (1) как измерения косвенных зависимостей могут помочь разработчикам при сопровождении программ и (2) как метрики косвенных связей могут количественно оценивать сложность и размер программного обеспечения, используя взвешенные различия между методами. В исследовании представлен комплекс мер, призванных помочь менеджерам проектов и разработчикам в управлении проектами и их сопровождении. Используя возможности измерений косвенных связей, эти меры могут повысить качество и эффективность процессов разработки и поддержки программного обеспечения.

Об авторах

Хосе НАВАС-СУ
Коста-Риканский технологический институт
Коста-Рика

Бакалавр в области компьютерных наук Технологического института Коста-Рики (1994), магистр в области компьютерных наук из Технологического института Коста-Рики с отличием Magna Cum Laude (2017), кандидат наук в области инженерии в Технологическом институте Коста-Рики под руководством доктора Антонио Гонсалеса Торреса. Работал инженером-программистом в течение трех десятилетий, включая работу в многонациональных компаниях, таких как Accenture и GFT. Преподаватель кафедры компьютерных наук Коста-Риканского технологического института.



Антонио ГОНСАЛЕС-ТОРРЕС
Коста-Риканский технологический институт
Коста-Рика

Бакалавр в области компьютерных наук (1999), магистр в области компьютерных наук (2001) в Университете Коста-Рики, магистр в области интеллектуальных систем (2014) в Университете Саламанки (Испания), доктор философии в области компьютерных наук и автоматизации с отличием Summa Cum Laude, международная докторская степень (2015). В рамках подготовки докторской диссертации выполнял исследования в Открытом университете Великобритании. Доцент кафедры вычислительной техники Коста-Риканского технологического института. Имеет более чем 20-летний профессиональный опыт, в течение которого он работал в нескольких многонациональных компаниях, включая Walmart, Intel, Equifax, Global Exchange group (Eurodivisas) и Sykes. Параллельно с профессиональной работой работал инструктором Cisco и профессором университета, участвовал в нескольких исследовательских проектах. Сфера научных интересов: программная инженерия, разработка методов и инструментов визуальной аналитики и кибербезопасность.



Список литературы

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.


Рецензия

Для цитирования:


НАВАС-СУ Х., ГОНСАЛЕС-ТОРРЕС А. Оценки сложности программного обеспечения на основе косвенных связей. Труды Института системного программирования РАН. 2023;35(6):43-74. https://doi.org/10.15514/ISPRAS-2023-35(6)-3

For citation:


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
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


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