Combining fuzzy logic and behavioral similarity for non-strict program validation

The quality of an application's implementation can be assured by validating the presence or absence of a set of user-prescribed software patterns such as software engineering best practices, programming conventions and indications of poor programming. Most of the existing pattern detection techniques, however, interpret pattern descriptions in an inflexible manner, leaving the quality assurance tool to approve only the most strictly adhering pattern implementations. In order to detect various concrete pattern implementations using a single pattern description, we have combined logic meta programming ---wherein patterns can be expressed as constraints over facts representing a program's source code---, fuzzy logic and static program analysis in a way that is completely transparent to the end-user. We have achieved this by having the conditions in a logic rule interpreted as constraints over the run-time behavior source code constructs give rise to instead of as constraints over the literal source code constructs themselves. This way, a pattern's abstract description often suffices to recognize various concrete implementation variants with an indication of the similarity between the recognized implementation and the abstract pattern description

[1]  Jörg Niere,et al.  Handling large search space in pattern-based reverse engineering , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[2]  Yann-Gaël Guéhéneuc,et al.  Using design patterns and constraints to automate the detection and correction of inter-class design defects , 2001, Proceedings 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems. TOOLS 39.

[3]  Michael Hind,et al.  Pointer analysis: haven't we solved this problem yet? , 2001, PASTE '01.

[4]  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.

[5]  Yann-Gaël Guéhéneuc Un cadre pour la traçabilité des motifs de conception , 2003 .

[6]  Tom Mens,et al.  Language-independent detection of object-oriented design patterns , 2004, Comput. Lang. Syst. Struct..

[7]  Deyi Li,et al.  A Fuzzy Prolog Database System , 1990 .

[8]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[9]  Roel Wuyts,et al.  A Logic Meta-Programming Approach to Support the Co-Evolution of Object-Oriented Design and Implementation , 2001 .

[10]  Richard C. T. Lee Fuzzy Logic and the Resolution Principle , 1971, JACM.

[11]  Jens H. Weber Cognitive support in software reengineering based on generic fuzzy reasoning nets , 2004, Fuzzy Sets Syst..

[12]  Maria I. Sessa,et al.  Approximate reasoning by similarity-based SLD resolution , 2002, Theor. Comput. Sci..

[13]  Andrew Walenstein,et al.  Reverse engineering tools as media for imperfect knowledge , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[14]  Roger F. Crew ASTLOG: A Language for Examining Abstract Syntax Trees , 1997, DSL.

[15]  Tom Mens,et al.  Identifying refactoring opportunities using logic meta programming , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[16]  Francesca Arcelli Fontana,et al.  Likelog: a logic programming language for flexible data retrieval , 1999, SAC '99.

[17]  Jörg Niere Fuzzy logic based interactive recovery of software design , 2002, ICSE '02.

[18]  Barbara G. Ryder Dimensions of Precision in Reference Analysis of Object-Oriented Programming Languages , 2003, CC.

[19]  Tom Mens,et al.  A declarative evolution framework for object-oriented design patterns , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[20]  Kent L. Beck Smalltalk best practice patterns , 1996 .

[21]  O. Lhoták Spark: A flexible points-to analysis framework for Java , 2002 .

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

[23]  Kim Mens,et al.  Supporting software development through declaratively codified programming patterns , 2002, Expert Syst. Appl..