Design patterns have been used successfully to build well-organized, flexible software systems. In the reverse engineering field, detecting design patterns can simplify program comprehension by providing clues about the rationale behind the system's design. However, the precision and recall of existing approaches to design pattern detection leave room for improvement. In this paper, we introduce a novel technique called FiG that complements existing detection methods by utilizing fine-grained static information contained in the software system. Our approach filters a large number of false positives by utilizing fine-grained rules that describe the static structure of a design pattern. We have implemented our approach in the context of the Eiffel programming language. Several experiments were performed to determine the effectiveness of the proposed approach.
展开▼