A Design Pattern Detection Technique that Aids Reverse Engineering
If software design-patterns could be captured and reused then this would be very helpful to reverse-engineering often practiced by those who develop and who maintain software. The ad-hoc nature and informality of this reverse-engineering process however, makes the discovery of these patterns not straightforward. Moreover, a high false positive rate results from trying to detect these design-patterns. Although several static and dynamic analysis approaches have been proposed to overcome these difficulties, each technique cannot be used separately because of different reasons. And, even if this were possible, each technique in isolation cannot address detection of all of the important patterns. We propose a new taxonomy of GoF design patterns that can guide the reverse-engineering process. This new approach not only combines static analysis with dynamic analysis but also adds what we call the implementation-specific analysis. Using it we demonstrate that the reverse engineering process is faster and more accurate.
…
The need for software maintenance has never been as high as lately, particularly for discovering bug, adding function, and so on. The lack of documentation leads to high costs of software maintenance. This has prompted numerous research efforts at the reverse engineering of software [1][3][6][7]. A design-pattern [2], generally speaking, is a reusable solution to a commonly occurring problem in software design. The term has become common parlance to software designers, requirement engineers, and software coders alike. The language of design patterns is now necessary for an understanding and manipulation of software as it helps us to understand the design-intent of the pre-developed software. Hence, of reverse engineering and of the reengineering of software [1][3][4][5][6][7][11].
The aim of static analysis [4] is to elucidate the structural aspects of software without the program execution such as the relationship between the many software elements that construct a software module. Dynamic analysis, on the other hand, elucidates dynamical aspects of software during the program execution such as the passing of messages between objects in a configured software module. Many attempts have been made to detect objects by the reverse engineering technique using both methods. Usually, this follows a two-step approach. Static analysis is used in the first step to obtain candidate patterns and dynamic analysis as a second step to discover which of these candidates is the relevant pattern. This two-step approach assists in discovering what the intention of the software module is. Never the less, this approach suffers from serious drawbacks to its practical implementation: phenomenal time, search space complexity, and inaccurate detection (false alarms).
…
Through following this detection process for each design-pattern, software maintainers can understand the program much better than previously. In addition, it assists in later software re-engineering work. According to the above detection process, we adapt our pattern detection algorithms. To address these algorithms, we examine the detection of the Builder pattern, which is one of the dynamic behavioral patterns and the Prototype pattern, which is one of the implementationspecific patterns. As mentioned before, the dynamic behavioral pattern can be detected by combining both static and dynamic analysis algorithms. And the implementation-specific pattern can be detected by parsing source code. Fig 2 shows the general structure of the Builder pattern and Fig 3 shows the behavior of the pattern.
…
Website: www.sersc.org | Filesize: 246kb
No of Page(s): 12
Click here to download A Design Pattern Detection Technique that Aids Reverse Engineering.
Related Copyrighted Books
Head First Design Patterns
Designing Interfaces: Patterns for Effective Interaction Design
Head First Object-Oriented Analysis and Design
Patterns of Enterprise Application Architecture (Addison-Wesley Signature Series)
Head First Software Development (Brain-Friendly Guides)
Related Tutorial
Tags: design pattern, object oriented design
Comments
Leave a Reply