{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,8,2]],"date-time":"2024-08-02T14:38:52Z","timestamp":1722609532272},"reference-count":38,"publisher":"World Scientific Pub Co Pte Ltd","issue":"01","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Int. J. Soft. Eng. Knowl. Eng."],"published-print":{"date-parts":[[2021,1]]},"abstract":"Design pattern detection can provide useful insights to support software comprehension. Accurate and complete detection of pattern instances are extremely important to enable software usability improvements. However, existing design pattern detection approaches and tools suffer from the following problems: incomplete description of design pattern instances, inaccurate behavioral constraint checking, and inability to support novel design patterns. This paper presents a general framework to detect design patterns while solving these issues by combining static and dynamic analysis techniques. The framework has been instantiated for typical behavioral and creational patterns, such as the observer pattern, state pattern, strategy pattern, and singleton pattern to demonstrate the applicability. Based on the open-source process mining toolkit ProM, we have developed an integrated tool that supports the whole detection process for these patterns. We applied and evaluated the framework using software execution data containing around 1,000,000 method calls generated from eight synthetic software systems and three open-source software systems. The evaluation results show that our approach can guarantee a higher precision and recall than existing approaches and can distinguish state and strategy patterns that are indistinguishable by the state-of-the-art.<\/jats:p>","DOI":"10.1142\/s0218194021400027","type":"journal-article","created":{"date-parts":[[2021,2,7]],"date-time":"2021-02-07T02:29:54Z","timestamp":1612664994000},"page":"21-54","source":"Crossref","is-referenced-by-count":4,"title":["A General Framework to Detect Design Patterns by Combining Static and Dynamic Analysis Techniques"],"prefix":"10.1142","volume":"31","author":[{"given":"Cong","family":"Liu","sequence":"first","affiliation":[{"name":"School of Computer Science and Technology, Shandong University of Technology, Zibo, 255000, P.\u00a0R.\u00a0China"}]}],"member":"219","published-online":{"date-parts":[[2021,2,4]]},"reference":[{"key":"S0218194021400027BIB001","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"Gamma E.","year":"1995"},{"issue":"11","key":"S0218194021400027BIB002","doi-asserted-by":"crossref","first-page":"896","DOI":"10.1109\/TSE.2006.112","volume":"32","author":"Tsantalis N.","year":"2006","journal-title":"IEEE Trans. Softw. Eng."},{"key":"S0218194021400027BIB003","doi-asserted-by":"crossref","first-page":"234","DOI":"10.1145\/3183440.3194947","volume-title":"Proc. 40th Int. Conf. Software Engineering: Companion Proceeedings","author":"Liu C.","year":"2018"},{"issue":"5","key":"S0218194021400027BIB004","doi-asserted-by":"crossref","first-page":"667","DOI":"10.1109\/TSE.2008.48","volume":"34","author":"Gu\u00e9h\u00e9neuc Y.-G.","year":"2008","journal-title":"IEEE Trans. Softw. Eng."},{"key":"S0218194021400027BIB005","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1016\/j.jss.2015.01.019","volume":"103","author":"Yu D.","year":"2015","journal-title":"J. Syst. Softw."},{"key":"S0218194021400027BIB006","doi-asserted-by":"crossref","first-page":"357","DOI":"10.1016\/j.asoc.2014.10.027","volume":"26","author":"Chihada A.","year":"2015","journal-title":"Appl. Soft Comput."},{"key":"S0218194021400027BIB007","doi-asserted-by":"crossref","first-page":"211","DOI":"10.1016\/j.knosys.2017.01.007","volume":"120","author":"Mayvan B. B.","year":"2017","journal-title":"Knowl.-Based Syst."},{"issue":"8","key":"S0218194021400027BIB008","doi-asserted-by":"crossref","first-page":"597","DOI":"10.1002\/smr.421","volume":"22","author":"Ng J. K.-Y.","year":"2010","journal-title":"J. Softw. Maintenance Evolut.: Res. Prac."},{"key":"S0218194021400027BIB009","first-page":"338","volume-title":"Proc. 24th Int. Conf. on Software Engineering","author":"Niere J.","year":"2002"},{"key":"S0218194021400027BIB010","doi-asserted-by":"crossref","first-page":"123","DOI":"10.1109\/ASE.2006.57","volume-title":"21st IEEE\/ACM Int. Conf. Automated Software Engineering","author":"Shi N.","year":"2006"},{"issue":"6","key":"S0218194021400027BIB011","doi-asserted-by":"crossref","first-page":"1271","DOI":"10.1109\/TSMCA.2009.2028012","volume":"39","author":"Dong J.","year":"2009","journal-title":"IEEE Trans. Syst. Man Cybern.-Part A: Syst. Humans"},{"issue":"7","key":"S0218194021400027BIB012","doi-asserted-by":"crossref","first-page":"1177","DOI":"10.1016\/j.jss.2009.02.012","volume":"82","author":"De Lucia A.","year":"2009","journal-title":"J. Syst. Softw."},{"issue":"7","key":"S0218194021400027BIB013","doi-asserted-by":"crossref","first-page":"1306","DOI":"10.1016\/j.ins.2010.12.002","volume":"181","author":"Fontana F. A.","year":"2011","journal-title":"Inform. Sci."},{"issue":"12","key":"S0218194021400027BIB014","first-page":"1233","volume":"26","author":"Bernardi M. L.","year":"2014","journal-title":"J. Softw.: Evolut. Process."},{"key":"S0218194021400027BIB015","doi-asserted-by":"crossref","first-page":"1586","DOI":"10.1145\/2695664.2695900","volume-title":"Proc. 30th Annual ACM Symp. Applied Computing","author":"Dabain H.","year":"2015"},{"key":"S0218194021400027BIB016","first-page":"1","volume-title":"10th Int. Joint Conf. Software Technologies","author":"Bernardi M. L.","year":"2015"},{"key":"S0218194021400027BIB017","doi-asserted-by":"crossref","first-page":"163","DOI":"10.1007\/978-3-642-14819-4_12","volume-title":"Int. Conf. Evaluation of Novel Approaches to Software Engineering","author":"Arcelli F.","year":"2010"},{"key":"S0218194021400027BIB018","first-page":"95","volume-title":"4th Int. Conf. Evaluation of Novel Approaches to Software Engineering","author":"Arcelli F.","year":"2009"},{"key":"S0218194021400027BIB019","first-page":"65","volume-title":"13th Int. Conf. on Evaluation of Novel Approaches to Software Engineering","author":"Liu C.","year":"2018"},{"key":"S0218194021400027BIB020","first-page":"94","volume-title":"11th IEEE Int. Workshop on Program Comprehension","author":"Heuzeroth D.","year":"2003"},{"key":"S0218194021400027BIB021","doi-asserted-by":"crossref","first-page":"33","DOI":"10.1145\/1138912.1138920","volume-title":"Proc. 2006 Int. Workshop Dynamic Systems Analysis","author":"Wendehals L.","year":"2006"},{"key":"S0218194021400027BIB022","first-page":"299","volume-title":"ACM\/IEEE 32nd Int. Conf. Software Engineering","author":"Von Detten M.","year":"2010"},{"key":"S0218194021400027BIB023","first-page":"99","volume-title":"13th European Conf. Software Maintenance and Reengineering","author":"De Lucia A.","year":"2009"},{"issue":"4","key":"S0218194021400027BIB024","doi-asserted-by":"crossref","first-page":"575","DOI":"10.1109\/TSE.2009.92","volume":"36","author":"Pettersson N.","year":"2010","journal-title":"IEEE Trans. Softw. Eng."},{"key":"S0218194021400027BIB025","first-page":"1","volume-title":"IEEE Int. Conf. Software Maintenance","author":"De Lucia A.","year":"2010"},{"issue":"4","key":"S0218194021400027BIB026","doi-asserted-by":"crossref","first-page":"1897","DOI":"10.1109\/TASE.2018.2844725","volume":"15","author":"Liu C.","year":"2018","journal-title":"IEEE Trans. Autom. Sci. Eng."},{"issue":"11","key":"S0218194021400027BIB027","doi-asserted-by":"crossref","first-page":"1624","DOI":"10.1002\/tee.22727","volume":"13","author":"Liu C.","year":"2018","journal-title":"IEEJ Trans. Electr. Electron. Eng."},{"key":"S0218194021400027BIB028","doi-asserted-by":"crossref","first-page":"234","DOI":"10.5220\/0007655902340241","volume-title":"Proc. 14th Int. Conf. Evaluation of Novel Approaches to Software Engineering","author":"Liu C.","year":"2019"},{"issue":"8","key":"S0218194021400027BIB029","doi-asserted-by":"crossref","first-page":"2005","DOI":"10.1587\/transinf.2017EDP7027","volume":"101","author":"Liu C.","year":"2018","journal-title":"IEICE Trans. Inform. Syst."},{"key":"S0218194021400027BIB030","first-page":"1","volume-title":"Int. Conf. Computational Intelligence and Data Mining","author":"Liu C.","year":"2016"},{"key":"S0218194021400027BIB031","first-page":"97","volume-title":"26th Int. Conf. Program Comprehension","author":"Liu C.","year":"2018"},{"key":"S0218194021400027BIB032","first-page":"1","volume-title":"XES Working Group","author":"Leemans M.","year":"2017"},{"key":"S0218194021400027BIB033","first-page":"1","volume-title":"Technische Universiteit Eindhoven","author":"Liu C.","year":"2019"},{"key":"S0218194021400027BIB034","first-page":"444","volume-title":"Proc. 26th Int. Conf. Applications and Theory of Petri Nets","author":"van Dongen B. F.","year":"2005"},{"key":"S0218194021400027BIB035","doi-asserted-by":"crossref","first-page":"415","DOI":"10.1007\/978-3-319-99365-2_36","volume-title":"Int. Conf. Knowledge Science, Engineering and Management","author":"Liu C.","year":"2018"},{"key":"S0218194021400027BIB036","doi-asserted-by":"crossref","first-page":"323","DOI":"10.1016\/j.engappai.2019.03.002","volume":"81","author":"Duan Y.","year":"2019","journal-title":"Eng. Appl. Artifi. Intelli."},{"key":"S0218194021400027BIB037","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1109\/TASE.2020.2964101","author":"Liu C.","year":"2020","journal-title":"IEEE Trans. Autom. Sci. Eng."},{"key":"S0218194021400027BIB038","doi-asserted-by":"crossref","first-page":"68883","DOI":"10.1109\/ACCESS.2020.2987108","volume":"8","author":"Lu T.","year":"2020","journal-title":"IEEE Access"}],"container-title":["International Journal of Software Engineering and Knowledge Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.worldscientific.com\/doi\/pdf\/10.1142\/S0218194021400027","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,15]],"date-time":"2022-12-15T05:47:37Z","timestamp":1671083257000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.worldscientific.com\/doi\/abs\/10.1142\/S0218194021400027"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,1]]},"references-count":38,"journal-issue":{"issue":"01","published-print":{"date-parts":[[2021,1]]}},"alternative-id":["10.1142\/S0218194021400027"],"URL":"https:\/\/doi.org\/10.1142\/s0218194021400027","relation":{},"ISSN":["0218-1940","1793-6403"],"issn-type":[{"value":"0218-1940","type":"print"},{"value":"1793-6403","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,1]]}}}