Design patterns: a survey on their micro‐structures. Issue 1 (10th June 2011) - Fontana, Francesca Arcelli; Maggioni, Stefano; Raibulet, Claudia
SUMMARY: Design patterns play a significant role in reverse engineering by providing information not only on how but also on why a solution has been implemented in a specific way because of their semantics. The application of design patterns leads to their personalization to a specific context, hence to the generation of variants. This makes their recognition a challenging task, which may be addressed through the understanding and detection of the micro‐structures design patterns are made of. This is very useful for the detection as well as for the application of design patterns. The principal aim of this paper is to present a survey on these micro‐structures and a comparison among them in the perspective of reverse engineering. Because of their less complex structure and behavior, as well as closer link to the source code, the recognition of these micro‐structures may be automated, which can be considered a step towards the automatic recognition of the more complex design patterns. In this paper, we consider four of the most significant types of micro‐structures: elemental design patterns, clues, sub‐patterns, and micro patterns. To analyze the role of the micro‐structures in the design pattern detection process, we make a comparison among these four types of micro‐structures and among the micro‐structures of various types in order to identify the relations among them. Copyright © 2011 John Wiley & Sons, Ltd. Abstract : The application of design patterns leads to their personalization to a specific context. This makes their recognition a challenging task, which may be addressed through the understanding and detection of the micro‐structures design patterns are made of. This paper presents a survey on four types of micro‐structures (elemental design patterns, design pattern clues, sub‐patterns, and micro patterns) and a comparison among them in the perspective of reverse engineering.