Design patterns are actively used by developers expecting that they provide the design with good quality such as flexibility and reusability. However, according to industrial reports on the use of design patterns, the expectation is not always realized . Especially, points out two causes of inappropriately applied patterns from a case study on a large commercial project: developers inexperienced in design patterns and no connection with project requirement. Wrong decisions on the use of design patterns make the program difficult to understand, and refactoring the program to improve the underlying structure, especially without documentation, can be very tricky. To eliminate wrongly applied patterns or document important decisions automatically, design pattern recovery is important for not only the development phase but also the maintenance phase. Many design pattern recovery approaches focus on structural characteristics and do not touch set-up behavior that configures links between participants and precedes pattern behavior. To detect design patterns implemented in program code more precisely and to show their behavior, we analyze program at expression level. Our approach is based on statically approximating run time behavior among pattern participants. For this, a static program analysis technique is used. Many static analysis techniques for object-oriented languages exist mainly for optimizing compiler in program analysis area.
[1]
Ulrik Pagh Schultz,et al.
Specialization patterns
,
2000,
Proceedings ASE 2000. Fifteenth IEEE International Conference on Automated Software Engineering.
[2]
Alexander E. Quilici,et al.
Proceedings on the 5th working conference on reverse engineering
,
1998
.
[3]
Jim Welsh,et al.
Towards pattern-based design recovery
,
2002,
ICSE '02.
[4]
Jens Palsberg,et al.
Scalable propagation-based call graph construction algorithms
,
2000,
OOPSLA '00.
[5]
David Grove,et al.
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
,
1995,
ECOOP.
[6]
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.
[7]
Peter Wendorff.
Assessment of Design Patterns during Software Reengineering: Lessons Learned from a Large Commercial Project
,
2001,
CSMR.
[8]
Ralph Johnson,et al.
design patterns elements of reusable object oriented software
,
2019
.
[9]
James M. Bieman,et al.
OO design patterns, design structure, and program changes: an industrial case study
,
2001,
Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.