Towards a Model-driven Approach for Reverse Engineering Design Patterns

The size and complexity of software systems is rapidly increasing. Meanwhile, the ability to understand and maintain such systems is decreasing almost as fast. Model Driven Engineering (MDE) promotes the notion of modeling to cope with software complexity; in this paper we report on our research that utilizes ontological modeling for understanding complex software systems. We focus the discussion on recovering design pattern information from source code. We thus argue that an effective recovery approach needs to utilize semantic reasoning to properly match an ontological representation of both: conceptual source code knowledge and design pattern descriptions. Since design patterns can take different forms when implemented in code, we argue that hardcoding their descriptions limits the flexibility and usability of a detection mechanism.

[1]  James A. Hendler,et al.  The Semantic Web" in Scientific American , 2001 .

[2]  Danko Basch,et al.  Ontology-Based Design Pattern Recognition , 2008, KES.

[3]  Michele Risi,et al.  Behavioral Pattern Identification through Visual Language Parsing and Code Instrumentation , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

[4]  Jens Dietrich,et al.  A formal description of design patterns using OWL , 2005, 2005 Australian Software Engineering Conference.

[5]  Huajun Chen,et al.  The Semantic Web , 2011, Lecture Notes in Computer Science.

[6]  Yarden Katz,et al.  Pellet: A practical OWL-DL reasoner , 2007, J. Web Semant..

[7]  Holger Knublauch,et al.  The Protégé OWL Plugin: An Open Development Environment for Semantic Web Applications , 2004, SEMWEB.

[8]  Ronald A. Olsson,et al.  Reverse Engineering of Design Patterns from Java Source Code , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[9]  Lutz Prechelt,et al.  Design recovery by automated search for structural design patterns in object-oriented software , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[10]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[11]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[12]  Roel Wuyts,et al.  Declarative reasoning about the structure of object-oriented systems , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[13]  Boris Motik,et al.  Structured objects in owl: representation and reasoning , 2008, WWW.

[14]  Alexander Chatzigeorgiou,et al.  Design Pattern Detection Using Similarity Scoring , 2006, IEEE Transactions on Software Engineering.

[15]  Brian McBride,et al.  Jena: A Semantic Web Toolkit , 2002, IEEE Internet Comput..