[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
research-article

Detecting the Behavior of Design Patterns through Model Checking and Dynamic Analysis

Published: 12 February 2018 Publication History

Abstract

We present a method and tool (ePAD) for the detection of design pattern instances in source code. The approach combines static analysis, based on visual language parsing and model checking, and dynamic analysis, based on source code instrumentation. Visual language parsing and static source code analysis identify candidate instances satisfying the structural properties of design patterns. Successively, model checking statically verifies the behavioral aspects of the candidates recovered in the previous phase. We encode the sequence of messages characterizing the correct behaviour of a pattern as Linear Temporal Logic (LTL) formulae and the sequence diagram representing the possible interaction traces among the objects involved in the candidates as Promela specifications. The model checker SPIN verifies that candidates satisfy the LTL formulae. Dynamic analysis is then performed on the obtained candidates by instrumenting the source code and monitoring those instances at runtime through the execution of test cases automatically generated using a search-based approach. The effectiveness of ePAD has been evaluated by detecting instances of 12 creational and behavioral patterns from six publicly available systems. The results reveal that ePAD outperforms other approaches by recovering more actual instances. Furthermore, on average ePAD achieves better results in terms of correctness and completeness.

References

[1]
Awny Alnusair, Tian Zhao, and Gongjun Yan. 2014. Rule-based detection of design patterns in program code. Int. J. Softw. Tools Technol. Transf. 16, 3 (2014), 315--334.
[2]
Andrea Arcuri. 2010. It does matter how you normalise the branch distance in search based software testing. In Proceedings of the International Conference on Software Testing, Verification and Validation. IEEE Computer Society, 205--214.
[3]
Bahareh Bafandeh Mayvan and Abbas Rasoolzadegan. 2017. Design pattern detection based on the graph theory. Knowl.-Based Syst. 120 (2017), 211--225.
[4]
Zsolt Balanyi and Rudolf Ferenc. 2003. Mining design patterns from C++ source code. In Proceedings of the International Conference on Software Maintenance (ICSM). IEEE Computer Society, 305--314.
[5]
Victor R. Basili, Gianluigi Caldiera, and H. Dieter Rombach. 1994. Goal question metric paradigm. In Encyclopedia of Software Engineering Vol. 1. John Wiley 8 Sons, 528--532.
[6]
Kent Beck, Erich Gamma, David Saff, and Mike Clark. 2011. JUnit Cookbook. Retrieved March 23, 2017 from http://junit.org/.
[7]
Keith H. Bennett and Václav T. Rajlich. 2000. Software maintenance and evolution: A roadmap. In Proceedings of the Conference on the Future of Software Engineering (ICSE’00). ACM, New York, NY, 73--87.
[8]
Mario Luca Bernardi and others. 2014. Design Pattern Finder home. Retrieved March 23, 2017 from https://github.com/UnisannioSoftEng/DPF/wiki/Design-Pattern-Finder-Home.
[9]
Mario Luca Bernardi, Marta Cimitile, and Giuseppe A. Di Lucca. 2014. Design pattern detection using a DSL-driven graph matching approach. J. Softw.: Evol. Process 26, 12 (2014), 1233--1266.
[10]
M. L. Bernardi, M. Cimitile, G. De Ruvo, G. A. Di Lucca, and A. Santone. 2015. Model checking to improve precision of design pattern instances identification in OO systems. In International Joint Conference on Software Technologies (ICSOFT’15). SciTePress, 1--11.
[11]
Dirk Beyer and Claus Lewerentz. 2003. CrocoPat: Efficient pattern analysis in object-oriented programs. In Proceedings of the International Workshop on Program Comprehension (IWPC’03). IEEE Computer Society, 294--295.
[12]
Alexander Binun and Gunter Kniesel. 2012. DPJF - Design pattern detection with high accuracy. In Proceedings of the 16th European Conference on Software Maintenance and Reengineering (CSMR’12). IEEE Computer Society, 245--254.
[13]
Tevfik Bultan and Aysu Betin-Can. 2008. Scalable Software Model Checking Using Design for Verification. Springer, Berlin, 337--346.
[14]
Elliot Chikofsky and II James Cross. 1990. Reverse engineering and design recovery: A taxonomy. IEEE Softw. 7, 1 (1990), 13--17.
[15]
Helen G. Cobb and John J. Grefenstette. 1993. Genetic algorithms for tracking changing environments. In Proceedings of the 5th International Conference on Genetic Algorithms. Morgan Kaufmann, San Francisco, CA, 523--530.
[16]
William Conover. 2006. Practical Nonparametric Statistics (3rd ed.). Wiley India Pvt. Limited.
[17]
Gennaro Costagliola, Vincenzo Deufemia, Filomena Ferrucci, and Carmine Gravino. 2006. Constructing meta-CASE workbenches by exploiting visual language generators. IEEE Trans. Softw. Eng. 32, 3 (2006), 156--175.
[18]
Gennaro Costagliola, Vincenzo Deufemia, and Giuseppe Polese. 2004. A framework for modeling and implementing visual notations with applications to software engineering. ACM Trans. Softw. Eng. Methodol. 13, 4 (2004), 431--487.
[19]
Gennaro Costagliola, Vincenzo Deufemia, and Giuseppe Polese. 2007. Visual language implementation through standard compiler-compiler techniques. J. Vis. Lang. Comput. 18, 2 (2007), 165--226.
[20]
Eric Crahen, Carl Alphonce, and Phil Ventura. 2002. QuickUML: A beginner’s UML tool. In Proceedings of the Conference on Object-Oriented Programming, Systems Languages and Applications (OOPSLA’02). ACM Press, 62--63.
[21]
Andrea De Lucia, Vincenzo Deufemia, Carmine Gravino, and Michele Risi. 2009b. Behavioral pattern identification through visual language parsing and code instrumentation. In Proceedings of the European Conference on Software Maintenance and Reengineering (CSMR’09). IEEE Computer Society, 99--108.
[22]
Andrea De Lucia, Vincenzo Deufemia, Carmine Gravino, and Michele Risi. 2009a. Design pattern recovery through visual language parsing and source code analysis. J. Syst. Softw. 82, 7 (2009), 1177--1193.
[23]
Andrea De Lucia, Vincenzo Deufemia, Carmine Gravino, and Michele Risi. 2010b. An eclipse plug-in for the detection of design pattern instances through static and dynamic analysis. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM’10). IEEE Computer Society, 1--6.
[24]
Andrea De Lucia, Vincenzo Deufemia, Carmine Gravino, and Michele Risi. 2010a. Improving behavioral design pattern detection through model checking. In Proceedings of the European Conference on Software Maintenance and Reengineering (CSMR’10). IEEE Computer Society, 176--185.
[25]
Andrea De Lucia, Vincenzo Deufemia, Carmine Gravino, and Michele Risi. 2015. Towards automating dynamic analysis for behavioral design pattern detection. In Proceedings of the International Conference on Software Maintenance and Evolution (ICSME’15). IEEE Computer Society, 161--170.
[26]
Andrea De Lucia, Vincenzo Deufemia, Carmine Gravino, and Michele Risi. 2017. Web appendix. Retrieved March 23, 2017 from http://docenti.unisa.it/004724/risorse?categoria=335&risorsa=1126.
[27]
Andrea De Lucia, Vincenzo Deufemia, Carmine Gravino, Michele Risi, and Ciro Pirolli. 2015. ePadEvo: A tool for the detection of behavioral design patterns. In Proceedings of the International Conference on Software Maintenance and Evolution (ICSME’15). IEEE Computer Society, 327--329.
[28]
Beniamino Di Martino and Antonio Esposito. 2016. A rule-based procedure for automatic recognition of design patterns in UML diagrams. Softw.: Pract. Exper. 46, 7 (2016), 983--1007.
[29]
Jing Dong, Dushyant S. Lad, and Yajing Zhao. 2007. DP-miner: Design pattern discovery using matrix. In Proceedings of the International Conference and Workshops on the Engineering of Computer-Based Systems (ECBS’07). IEEE Computer Society, 371--380.
[30]
Jing Dong and Yajing Zhao. 2007. Experiments on design pattern discovery. In Proceedings of the International Workshop on Predictor Models in Software Engineering (PROMISE’07). IEEE Computer Society.
[31]
Eclipse Foundation. 2008. TPTP (Test 8 Performance Tools Platform). Retreived March 23, 2017 from https://projects.eclipse.org/projects/tptp.platform.
[32]
Eclipse Foundation. 2009. Eclipse JDT. Retrieved March 23, 2017 from http://www.eclipse.org/jdt/.
[33]
Andy Field and Graham J. Hole. 2003. How to Design and Report Experiments (1 ed.). Sage, Thousand Oaks, CA.
[34]
Martin Fowler. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley Longman, Boston, MA.
[35]
Gordon Fraser and Andrea Arcuri. 2011. EvoSuite: Automatic test suite generation for object-oriented software. In Proceedings of the ACM SIGSOFT Symposium and the European Conference on Foundations of Software Engineering (ESEC/FSE’11). ACM Press, 416--419.
[36]
Erich Gamma and Thomas Eggenschwiler. 1998. JHotDraw. Retrieved March 23, 2017 from http://www.jhotdraw.org.
[37]
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA.
[38]
Malcom Gethers, Rocco Oliveto, Denys Poshyvanyk, and Andrea De Lucia. 2011. On integrating orthogonal information retrieval methods to improve traceability recovery. In Proceedings of the International Conference on Software Maintenance (ICSM’11). IEEE Computer Society, 133--142.
[39]
David E. Goldberg. 1989. Genetic Algorithms in Search, Optimization and Machine Learning (1st ed.). Addison-Wesley Longman Publishing Co., Inc., Boston, MA.
[40]
Carmine Gravino, Michele Risi, Giuseppe Scanniello, and Genoveffa Tortora. 2011. Does the documentation of design pattern instances impact on source code comprehension? Results from two controlled experiments. In Proceedings of the Working Conference on Reverse Engineering (WCRE’11). IEEE Computer Society, 67--76.
[41]
Carmine Gravino, Michele Risi, Giuseppe Scanniello, and Genoveffa Tortora. 2012. Do professional developers benefit from design pattern documentation? A replication in the context of source code comprehension. In Model Driven Engineering Languages and Systems, Robert B. France, Jrgen Kazmeier, Ruth Breu, and Colin Atkinson (Eds.). Lecture Notes in Computer Science, Vol. 7590. Springer, Berlin, 185--201.
[42]
Yann-Gaël Guéhéneuc. 2000. P-MARt. Retrieved Mardh 23, 2017 from http://www.iro.umontreal.ca/labgelo/p-mart/index.php.
[43]
Yann-Gaël Guéhéneuc and Giuliano Antoniol. 2008. DeMIMA: A multilayered approach for design pattern identification. IEEE Trans. Softw. Eng. 34, 5 (2008), 667--684.
[44]
Yann-Gael Guéhéneuc, Remi Douence, and Narendra Jussien. 2002. No java without caffeine: A tool for dynamic analysis of java programs. In Proceedings of the International Conference on Automated Software Engi. (ASE’02). IEEE Computer Society, 117--126.
[45]
Mark Harman and Bryan F. Jones. 2001. Search-based software engineering. Inf. Softw. Technol. 43, 14 (2001), 833--839.
[46]
Dirk Heuzeroth, Thomas Holl, Gustav Högström, and Welf Löwe. 2003. Automatic design pattern detection. In Proceedings of International Workshop on Program Compreh. (IWPC’03). IEEE Computer Society, 94--103.
[47]
Gerard Holzmann. 2003. The Spin Model Checker: Primer and Reference Manual (1 ed.). Addison-Wesley Professional.
[48]
Heyuan Huang, Shensheng Zhang, Jian Cao, and Yonghong Duan. 2005. A practical pattern recovery approach based on both structural and behavioral analysis. J. Syst. Softw. 75, 1--2 (2005), 69--87.
[49]
Sebastien Jeanmart, Yann-Gaël Guéhéneuc, Houari Sahraoui, and Naji Habra. 2009. Impact of the visitor pattern on program comprehension and maintenance. In Proceedings of the International Symposium on Empirical Software Engineering and Measurement (ESEM’09). IEEE Computer Society, 69--78.
[50]
Ralph E. Johnson. 1992. Documenting frameworks using patterns. In Proceedings of the Conference on Object-Oriented Programming, Systems Languages and Applications (OOPSLA’92). ACM Press, 63--76.
[51]
Olivier Kaczor, Yann-Gael Guéhéneuc, and Sylvie Hamel. 2006. Efficient identification of design patterns with bit-vector algorithm. In Proceedings of the European Conference on Software Maintenance and Reengineering (CSMR’06). IEEE Computer Society, 173--182.
[52]
Vigdis Kampenes, Tore Dyba, Jo Hannay, and Dag Sjoberg. 2007. A systematic review of effect size in software engineering experiments. Inf. Softw. Technol. 4, 11--12 (2007), 1073--1086.
[53]
Rudolf K. Keller, Reinhard Schauer, Sébastien Robitaille, and Patrick Pagé. 1999. Pattern-based reverse-engineering of design components. In Proceedings of the International Conference on Software Engineering (ICSE’99). ACM Press, 226--235.
[54]
Barbara Kitchenham, Lesley Pickard, and Shari Lawrence Pfleeger. 1995. Case studies for method and tool evaluation. IEEE Softw. 12, 4 (1995), 52--62.
[55]
Rainer Koschke. 2008. Architecture reconstruction. In International Summer Schools on Software Engineering, ISSSE 2006-2008, Revised Tutorial Lectures, Andrea De Lucia and Filomena Ferrucci (Eds.), Lecture Notes in Computer Science, Vol. 5413. Springer, 140--173.
[56]
John R. Koza. 1992. Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press, Cambridge, MA.
[57]
Christian Kramer and Lutz Prechelt. 1996. Design recovery by automated search for structural design patterns in object-oriented software. In Proceedings of Working Conference on Reverse Engineering (WCRE’96). IEEE Computer Society, 208--215.
[58]
Jonathan L. Krein, Landon J. Pratt, Alan B. Swenson, Alexander C. MacLean, Charles D. Knutson, and Dennis L. Eggett. 2011. Design patterns in software maintenance: An experiment replication at Brigham Young University. In Proceedings of the International Workshop on Replication in Empirical Software Engineering Research. IEEE Computer Society, 25--34.
[59]
Kiran Lakhotia, Mark Harman, and Hamilton Gross. 2013. AUSTIN: An open source tool for search based software testing of C programs. Inf. Softw. Technol. 55, 1 (2013), 112--125.
[60]
Stefan Leue and Peter B. Ladkin. 1997. Implementing and verifying MSC specifications using PROMELA/XSPIN. In Proceedings of the 2nd International Workshop on SPIN Verification System (SPIN’97), Discrete Mathematics and Theoretical Computer Science, Vol. 32. American Mathematical Society, 65--89.
[61]
Phil McMinn. 2004. Search-based software test data generation: A survey: Research articles. Softw. Test. Verif. Reliab. 14, 2 (2004), 105--156.
[62]
Naouel Moha and Yann-Gaël Guéhéneuc. 2007. PTIDEJ and DECOR: Identification of design patterns and design defects. In OOPSLA Companion. ACM Press, 868--869.
[63]
Janice Ka-Yee Ng, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. 2010. Identification of behavioural and creational design motifs through dynamic analysis. J. Softw. Maint. Evol.: Res. Pract. 22, 8 (2010), 597--627.
[64]
Carlos Pacheco and Michael D. Ernst. 2007. Randoop: Feedback-directed random testing for java. In Companion to the 22nd ACM SIGPLAN Conference on Object-Oriented Programming Systems and Applications Companion (OOPSLA’07). ACM Press, 815--816.
[65]
Chanjin Park, Yoohoon Kang, Chisu Wu, and Kwangkeun Yi. 2004. A static reference flow analysis to understand design pattern behavior. In Proceedings of the Working Conference on Reverse Engineering (WCRE’04). IEEE Computer Society, 300--301.
[66]
Matthew Patrick. 2016. Metaheuristic optimisation and mutation-driven test data generation. In Computational Intelligence and Quantitative Software Engineering. Springer International, 89--115.
[67]
Tu Peng, Jing Dong, and Yajing Zhao. 2008. Verifying behavioral correctness of design pattern implementation. In Proceedings of the International Conference on Software Engineering and Knowledge Engineering (SEKE’08). Knowledge Systems Institute, 454--459.
[68]
Niklas Pettersson. 2005. Measuring precision for static and dynamic design pattern recognition as a function of coverage. SIGSOFT Softw. Eng. Notes 30, 4 (2005), 1--7.
[69]
Marty Phelan. 2000. MapperXML. Retrieved March 23, 2017 from http://mapper.sourceforge.net/mapperxml/.
[70]
Ilka Philippow, Detlef Streitferdt, Matthias Riebisch, and Sebastian Naumann. 2005. An approach for reverse engineering of design patterns. Softw. Syst. Model. 4, 1 (2005), 55--70.
[71]
Thomas M. Pigoski. 1996. Practical Software Maintenance: Best Practices for Managing Your Software Investment. John Wiley 8 Sons, Inc., New York, NY.
[72]
Lutz Prechelt, Barbara Unger-Lamprecht, Michael Philippsen, and Walter Tichy. 2002. Two controlled experiments assessing the usefulness of design pattern documentation in program maintenance. IEEE Trans. Softw. Eng. 28, 6 (2002), 595--606.
[73]
Ghulam Rasool and others. 2011. Software engineering research center. Retrieved march 23, 2017 from http://research.ciitlahore.edu.pk/Groups/SERC/DesignPatterns.aspx.
[74]
Ghulam Rasool and Patrick Mäder. 2011. Flexible design pattern detection based on feature types. In Proceedings of the International Conference on Automated Software Engineering (ASE’11). IEEE Computer Society, 243--252.
[75]
Chris Seguin. 2002. JRefactory. Retrieved March 23, 2017 from http://jrefactory.sourceforge.net.
[76]
Nija Shi and Ronald A. Olsson. 2006. Reverse engineering of design patterns from java source code. In Proceedings of the International Conference on Automated Software Engineering (ASE’06). IEEE Computer Society, 123--134.
[77]
Paolo Tonella and Alessandra Potrich. 2005. Reverse Engineering of Object Oriented Code. Springer-Verlag, New York, NY.
[78]
Nikolaos Tsantalis, Alexander Chatzigeorgiou, George Stephanides, and Spyros T. Halkidis. 2006a. Design Pattern Detection Using Similarity Scoring. IEEE Trans. Softw. Eng. 32, 11 (2006), 896--909.
[79]
Nikolaos Tsantalis, Alexander Chatzigeorgiou, George Stephanides, and Spyros T. Halkidis. 2006b. Design Pattern Detection Tool and Study. Retreived June 16, 2016 from http://users.encs.concordia.ca/ nikolaos/pattern_detection.html.
[80]
Marek Vokác, Walter F. Tichy, Dag I. K. Sjøberg, Erik Arisholm, and Magne Aldrin. 2004. A controlled experiment comparing the maintainability of programs designed with and without design patterns-A replication in a real programming environment. Empir. Softw. Eng. 9, 3 (2004), 149--195.
[81]
Lothar Wendehals. 2003. Improving design pattern instance recognition by dynamic analysis. In Proceedings of the ICSE Workshop on Dynamic Analysis (WODA’03). 29--32.
[82]
Lothar Wendehals and Alessandro Orso. 2006. Recognizing behavioral patterns at runtime using finite automata. In Proceedings of the International Workshop on Dynamic Systems Analysis (WODA’06). ACM Press, 33--40.
[83]
R. Wojszczyk and W. Khadzhynov. 2015. Data models in the verification of the singleton pattern. J. Theoret. Appl. Comput. Sci. 9, 3 (2015), 35--46.
[84]
Kai Xu and Donglin Liang. 2006. A Monitoring Profile for UML Sequence Diagrams. Technical Report 06-024. Department of Computer Science, University of Minnesota.
[85]
Robert K. Yin. 1984. Case Study Research: Design and Methods. Sage, Thousand Oaks, CA.
[86]
Dongjin Yu, Yanyan Zhang, and Zhenli Chen. 2015. A comprehensive approach to the recovery of design pattern instances based on sub-patterns and method signatures. J. Syst. Softw. 103 (2015), 1--16.
[87]
Marco Zanoni, Francesca Arcelli Fontana, and Fabio Stella. 2015. On applying machine learning techniques for design pattern detection. J. Syst. Softw. 103 (2015), 102--117.

Cited By

View all
  • (2024)A Blockchain Approach to Extract Design Patterns From Source CodesModelling and Simulation in Engineering10.1155/2024/49921692024Online publication date: 1-Jan-2024
  • (2024)A declarative approach to detecting design patterns from Java execution traces and source codeInformation and Software Technology10.1016/j.infsof.2024.107457171(107457)Online publication date: Jul-2024
  • (2022)Review-Based Comparison of Design Pattern Detection ToolsProceedings of the 29th Conference on Pattern Languages of Programs10.5555/3631672.3631693(1-16)Online publication date: 24-Oct-2022
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Transactions on Software Engineering and Methodology
ACM Transactions on Software Engineering and Methodology  Volume 26, Issue 4
October 2017
128 pages
ISSN:1049-331X
EISSN:1557-7392
DOI:10.1145/3177744
Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 12 February 2018
Accepted: 01 December 2017
Revised: 01 September 2017
Received: 01 April 2017
Published in TOSEM Volume 26, Issue 4

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Design pattern recovery
  2. reverse engineering
  3. software maintenance

Qualifiers

  • Research-article
  • Research
  • Refereed

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)23
  • Downloads (Last 6 weeks)4
Reflects downloads up to 07 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)A Blockchain Approach to Extract Design Patterns From Source CodesModelling and Simulation in Engineering10.1155/2024/49921692024Online publication date: 1-Jan-2024
  • (2024)A declarative approach to detecting design patterns from Java execution traces and source codeInformation and Software Technology10.1016/j.infsof.2024.107457171(107457)Online publication date: Jul-2024
  • (2022)Review-Based Comparison of Design Pattern Detection ToolsProceedings of the 29th Conference on Pattern Languages of Programs10.5555/3631672.3631693(1-16)Online publication date: 24-Oct-2022
  • (2022)A Feature-Based Method for Detecting Design Patterns in Source CodeSymmetry10.3390/sym1407149114:7(1491)Online publication date: 21-Jul-2022
  • (2022)Mining microservice design patternsProceedings of the 13th Symposium on Cloud Computing10.1145/3542929.3563472(190-195)Online publication date: 7-Nov-2022
  • (2022)Design patterns mining using neural sub-graph matchingProceedings of the 37th ACM/SIGAPP Symposium on Applied Computing10.1145/3477314.3507073(1545-1553)Online publication date: 25-Apr-2022
  • (2022)DPWord2Vec: Better Representation of Design Patterns in SemanticsIEEE Transactions on Software Engineering10.1109/TSE.2020.301733648:4(1228-1248)Online publication date: 1-Apr-2022
  • (2022)A new method for detecting various variants of GoF design patterns using conceptual signaturesSoftware Quality Journal10.1007/s11219-021-09576-930:3(651-686)Online publication date: 1-Sep-2022
  • (2022)Comprehension of Computer Programs Through Reverse Engineering Approaches and Techniques: A Systematic Mapping StudyNew Perspectives in Software Engineering10.1007/978-3-031-20322-0_9(126-140)Online publication date: 30-Oct-2022
  • (2021)An Extensible Compiler for Implementing Software Design Patterns as Concise Language ConstructsInternational Journal of Software Engineering and Knowledge Engineering10.1142/S021819402150032731:07(1043-1067)Online publication date: 23-Jul-2021
  • Show More Cited By

View Options

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media