Skip to main content
Log in

GUI-based software modularization through module clustering in edge computing based IoT environments

  • Original Research
  • Published:
Journal of Ambient Intelligence and Humanized Computing Aims and scope Submit manuscript

Abstract

With edge computing-based Internet-of-Things environments widely recognized, major software technologies are rapidly integrated. Among the various areas of such technologies, software evolution and maintenance are essential yet challenging tasks both for research and in practice. In particular, for large-scale software, the maintenance costs are often much more than the development cost. In order to help to resolve this issue, software module clustering approaches have been studied to build adequate modules with high cohesion and low coupling; such modular structures can help the comprehension and maintenance of complex systems. The existing studies apply either structural, semantic, or historic-based factors as clustering criteria; however, to the best of our knowledge, no previous study considers Graphical User Interface (GUI) as a factor for software module clustering. Because GUI is linked to the functionalities of a software system, it can be a useful source to find cohesive modules and generate well-defined modular structures. Thus, in this study, we propose a GUI-based approach for software module clustering to improve the quality of software modularization. Quantitative and qualitative experiments are performed to evaluate the performance of the proposed approach and comparing it with three existing approaches; using two open source software systems. The evaluation results show that our proposed approach generates feasible software modules and provides closer estimates to actual modularization than those of the existing approaches.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8

Similar content being viewed by others

References

  • Allier S, Sahraoui HA, Sadou S (2009) Identifying components in object-oriented programs using dynamic analysis and clustering. In: Proc. the 2009 conference of the center for advanced studies on collaborative research, pp 136–148

  • Amarjeet P, Chhabra JK (2017) Improving modular structure of software system using structural and lexical dependency. Inf Softw Technol 82:96–120

    Google Scholar 

  • Andritsos P, Tzerpos V (2005) Information-theoretic software clustering. IEEE Trans Softw Eng 31(2):150–165

    Google Scholar 

  • Bae G, Rothermel G, Bae DH (2012) On the relative strengths of model-based and dynamic event extraction-based GUI testing techniques: an empirical study. In: Proc. IEEE 23th international symposium on software reliability engineering, pp 181–190

  • Bae G, Rothermel G, Bae DH (2014) Comparing model-based and dynamic event-extraction based GUI testing techniques: an empirical study. J Syst Softw 97:15–46

    Google Scholar 

  • Ball T (1999) The concept of dynamic analysis. ACM SIGSOFT Softw Eng Notes 24(6):216–234

    Google Scholar 

  • Ball T, Rajamani SK (2002) The slam project: debugging system software via static analysis. ACM SIGPLAN Not 37(1):1–3

    Google Scholar 

  • Bavota G, Carnevale F, Lucia AD, Penta MD, Oliveto R (2012) Putting the developer in-the-loop: an interactive GA for software remodularization. In: Proc. international symposium on search based software engineering, pp 75–89

  • Bavota G, Lucia A, Marcus A, Oliveto R (2013) Using structural and semantic measures to improve software modularization. Empir Softw Eng 18(5):901–932

    Google Scholar 

  • Bavota G, Gethers M, Oliveto R, Poshyvanyk D, Lucia AD (2014) Improving software modularization via automated analysis of latent topics and dependencies. ACM Trans Softw Eng Methodol 23(1):4

    Google Scholar 

  • Beyer D, Noack A (2005) Clustering software artifacts based on frequent common changes. In: Proc. 13th international workshop on program comprehension, pp 259–268

  • Bowman IT, Holt RC (1999) Reconstructing ownership architectures to help understand software systems. In: Proc. seventh international workshop on program comprehension, pp 28–37

  • Corazza A, Martino SD, Scanniello G (2010) A probabilistic based approach towards software system clustering. In: Proc. the 14th European conference on software maintenance and reengineering, pp 88–96

  • Corazza A, Martino SD, Maggio V, Scanniello G (2011) Investigating the use of lexical information for software system clustering. In: Proc. the 15th European conference on software maintenance and reengineering, pp 35–44

  • Corazza A, Martino SD, Maggio V, Scanniello G (2016) Weighing lexical information for software clustering in the context of architecture recovery. Empir Softw Eng 21(1):72–103

    Google Scholar 

  • Cornelissen B, Zaidman A, Van Deursen A, Moonen L, Koschke R (2009) A systematic survey of program comprehension through dynamic analysis. IEEE Trans Softw Eng 35(5):684–702

    Google Scholar 

  • Doval D, Mancoridis S, Mitchell B (1999) Automatic clustering of software systems using a genetic algorithm. In: Proc. ninth international workshop software technology and engineering practice, pp 73–81

  • Erdemir U, Buzluca F (2014) A learning-based module extraction method for object-oriented systems. J Syst Softw 92:156–177

    Google Scholar 

  • Fan Q, Ansari N (2018) Application aware workload allocation for edge computing-based IoT. IEEE Internet Things J 5(3):2146–2153

    Google Scholar 

  • Galitz WO (2007) The essential guide to user interface design, 3rd edn. Wiley Publishing Inc., Amsterdam

    Google Scholar 

  • Ghezzi C, Jazayeri M, Mandrioli D (2002) Fundamentals of software engineering, 2nd edn. Prentice Hall PTR, Upper Saddle River

    MATH  Google Scholar 

  • Gong HS, Weon S, Huh JH (2018) A study on the design of humane animal care system and Java implementation. J Inf Process Syst 14(5):1225–1236

    Google Scholar 

  • Huang J, Liu J (2016) A similarity-based modularization quality measure for software module clustering problems. Inf Sci 342:96–110

    Google Scholar 

  • Isazadeh A, Izadkhah H, Elgedawy I (2017) Source code modularization: theory and techniques. Springer International Publishing AG, Cham

    Google Scholar 

  • Jeong SS, Seo YS (2019) Improving response capability of chatbot using twitter. J Ambient Intell Humaniz Comput. https://doi.org/10.1007/s12652-019-01347-6

    Article  Google Scholar 

  • Johnson J (2014) Designing with the mind in mind: simple guide to understanding user interface design guidelines, 2nd edn. Morgan Kaufmann, Burlington

    Google Scholar 

  • Khan W, Ullah H, Ahmad A, Sultan K, Alzahrani AJ, Khan SD, Alhumaid M, Abdulaziz S (2018) CrashSafe: a formal model for proving crash-safety of Android applications. Hum Centric Comput Inf Sci 8(21):1–24

    Google Scholar 

  • Kim HH, Bae DH (2008) Object-oriented concept analysis for software modularisation. IET Softw 2(2):134–148

    Google Scholar 

  • Kuhn A, Ducasse S, Girba T (2007) Semantic clustering: Identifying topics in source code. Inf Softw Technol 49(3):230–243

    Google Scholar 

  • Link D, Behnamghader P, Moazeni R, Boehm B (2019) The value of software architecture recovery for maintenance. In: Proc. the 12th innovations on software engineering conference, pp 1–10

  • Maarek YS, Berry DM, Kaiser GE (1991) An information retrieval approach for automatically constructing software libraries. IEEE Trans Softw Eng 17(8):800–813

    Google Scholar 

  • Mancoridis S, Mitchell B, Rorres C, Chen YF, Gansner E (1998) Using automatic clustering to produce high-level system organizations of source code. In: Proc. 6th international workshop on program comprehension, pp 45–52

  • Mancoridis S, Mitchell B, Chen Y, Gansner E (1999) Bunch: a clustering tool for the recovery and maintenance of software system structures. In: Proc. IEEE international conference on software maintenance, pp 50–59

  • Maqbool O, Babri HA (2004) The weighted combined algorithm: a linkage algorithm for software clustering. In: Proc. the 8th european conference on software maintenance and reengineering, pp 15–24

  • Maqbool O, Babri HA (2006) Automated software clustering: An insight using cluster labels. J Syst Softw 79(11):1632–1648

    Google Scholar 

  • Maqbool O, Babri HA (2007) Hierarchical clustering for software architecture recovery. IEEE Trans Softw Eng 33(11):759–780

    Google Scholar 

  • Memon A, Banerjee I, Nagarajan A (2003) GUI ripping: reverse engineering of graphical user interfaces for testing. In: Proc. 10th working conference on reverse engineering, pp 260–269

  • Mitchell BS, Mancoridis S (2006) On the automatic modularization of software systems using the bunch tool. IEEE Trans Softw Eng 32(3):193–208

    Google Scholar 

  • Mitchell BS, Mancoridis S (2008) On the evaluation of the bunch search-based software modularization algorithm. Softw Comput 12(1):77–93

    Google Scholar 

  • Mkaouer W, Kessentini M, Shaout A, Koligheu P, Bechikh S, Deb K, Ouni A (2015) Many-objective software remodularization using NSGA-III. ACM Trans Softw Eng Methodol 24(3):1–45

    Google Scholar 

  • Modular structures of Weka (2013) All Classes. http://weka.sourceforge.net/doc.dev/. Accessed 1 Jul 2019

  • Mohammadi S, Izadkhah H (2019) A new algorithm for software clustering considering the knowledge of dependency between artifacts in the source code. Inf Softw Technol 105:252–256

    Google Scholar 

  • Mohammadi V, Rahmani AM, Darwesh AM, Sahafi A (2019) Trust-based recommendation systems in Internet of Things: a systematic literature review. Hum Centric Comput Inf Sci 9(21):1–61

    Google Scholar 

  • Muhammad S, Maqbool O, Abbasi A (2012) Evaluating relationship categories for clustering object-oriented software systems. IET Softw 6(3):260–274

    Google Scholar 

  • Naseem R, Maqbool O, Muhammad S (2013) Cooperative clustering for software modularization. J Syst Softw 86(8):2045–2062

    Google Scholar 

  • Park S, Huh JH (2018) Effect of cooperation on manufacturing IT project development and test bed for successful industry 4.0 project: safety management for security. Processes 6(7):88

    Google Scholar 

  • Patel C, Hamou-Lhadj A, Rilling J (2009) Software clustering using dynamic analysis and static dependencies. In: Proc. 2009 13th European conference on software maintenance and reengineering, pp 27–36

  • Pedersen T, Johansen C, Jøsang A (2018) Behavioural Computer Science: an agenda for combining modelling of human and system behaviours. Hum Centric Comput Inf Sci 8(7):1–20

    Google Scholar 

  • Praditwong K, Harman M, Yao X (2011) Software module clustering as a multi-objective search problem. IEEE Trans Software Eng 37(2):264–282

    Google Scholar 

  • Prajapati A, Chhabra JK (2018) Many-objective artificial bee colony algorithm for large-scale software module clustering problem. Soft Comput 22(19):6341–6361

    Google Scholar 

  • Prajapati A, Chhabra JK (2019) Information-theoretic remodularization of object-oriented software systems. Inf Syst Front. https://doi.org/10.1007/s10796-019-09897-y

    Article  Google Scholar 

  • Rathee A, Chhabra JK (2018) Clustering for software remodularization by using structural, conceptual and evolutionary features. J Univers Comput Sci 24(12):1731–1757

    Google Scholar 

  • Ren J, Guo H, Xu C, Zhang Y (2017) Serving at the edge: A scalable IoT architecture based on transparent computing. IEEE Netw 31(5):96–105

    Google Scholar 

  • Ren J, Pan Y, Goscinski A, Beyah RA (2018) Edge computing for the Internet of Things. IEEE Netw 32(1):6–7

    Google Scholar 

  • Risi M, Scanniello G, Tortora G (2012) Using fold-in and fold-out in the architecture recovery of software systems. Formal Asp Comput 24(3):307–330

    Google Scholar 

  • Salah M, Mancoridis S (2004) A hierarchy of dynamic software views: from object-interactions to feature-interactions. In: Proc. 20th IEEE international conference on software maintenance, pp 72–81

  • Salah M, Mancoridis S, Antoniol G, Di Penta M (2006) Scenario-driven dynamic analysis for comprehending large software systems. In: Proc. the conference on software maintenance and reengineering, pp 71–80

  • Santos G, Valente M, Anquetil N (2014) Remodularization analysis using semantic clustering. In: Proc. IEEE conference on software maintenance, reengineering and reverse engineering, pp 224–233

  • Sarkar S, Rama G, Kak A (2007) API-based and information-theoretic metrics for measuring the quality of software modularization. IEEE Trans Softw Eng 33(1):14–32

    Google Scholar 

  • Seo YS, Bae DH (2013) On the value of outlier elimination on software effort estimation research. Empir Softw Eng 18(4):659–698

    Google Scholar 

  • Serban G, Czibula IG (2007) Restructuring software systems using clustering. In: Proc. the 22nd international symposium on computer and information sciences, pp 1–6

  • Siddique F, Maqbool O (2012) Enhancing comprehensibility of software clustering results. IET Softw 6(4):283–295

    Google Scholar 

  • Siff M, Reps T (1999) Identifying modules via concept analysis. IEEE Trans Softw Eng 25(6):749–768

    Google Scholar 

  • Song W, Feng N, Tian Y, Fong S, Cho K (2018) A deep belief network for electricity utilisation feature analysis of air conditioners using a smart IoT platform. J Inf Process Syst 14(1):162–175

    Google Scholar 

  • Tabrizi AHF, Izadkhah H (2019) Software modularization by combining genetic and hierarchical algorithms. In: Proc. the 5th conference on knowledge based engineering and innovation, pp 454–459

  • Takagi H (2001) Interactive evolutionary computation: fusion of the capabilities of EC optimization and human evaluation. Proc IEEE 89(9):1275–1296

    Google Scholar 

  • TerpPaint (2008) Application under test. http://www.cs.umd.edu/~atif/Benchmarks/UMD2007a.html. Accessed 1 Jul 2019

  • Tzerpos V, Holt RC (2000) ACDC: an algorithm for comprehension-driven clustering. In: Proc. seventh working conference on reverse engineering, pp 258–267

  • Weka (2013) Weka 3: data mining software in Java. http://www.cs.waikato.ac.nz/ml/weka/index.html. Accessed 1 Jul 2019

  • Wen Z, Tzerpos V (2004a) An effectiveness measure for software clustering algorithms. In: Proc. 12th IEEE international workshop on program comprehension, pp 194–203

  • Wen Z, Tzerpos V (2004b) Evaluating similarity measures for software decompositions. In: Proc. 20th IEEE international conference on software maintenance, pp 368–377

  • Xie Q, Memon AM (2006) Studying the characteristics of a “Good” GUI test suite. In: Proc. 17th international symposium on software reliability engineering, pp 159–168

  • Xie Q, Memon AM (2008) Using a pilot study to derive a GUI model for automated testing. ACM Trans Softw Eng Methodol 18(2):7

    Google Scholar 

  • Zhang L, Luo J, Li H, Sun J, Mei H (2010) A biting-down approach to hierarchical decomposition of object-oriented systems based on structure analysis. J Softw Maintenance Evolution: Res Pract 22(8):567–596

    Google Scholar 

Download references

Acknowledgements

This work was supported by the National Research Foundation of Korea(NRF) grant funded by the Korea government(MSIT) (No. NRF-2017R1C1B5018295). Also, this work was supported by the 2017 Yeungnam University Research Grant.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jun-Ho Huh.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Seo, YS., Huh, JH. GUI-based software modularization through module clustering in edge computing based IoT environments. J Ambient Intell Human Comput 13, 1625–1639 (2022). https://doi.org/10.1007/s12652-019-01455-3

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s12652-019-01455-3

Keywords

Navigation