Results 1 - 10
of
17
Design Pattern Detection Using Similarity Scoring
- IEEE TRANSACTIONS ON SOFTWARE ENGINEERING
, 2006
"... The identification of design patterns as part of the reengineering process can convey important information to the designer. However, existing pattern detection methodologies generally have problems in dealing with one or more of the following issues: Identification of modified pattern versions, se ..."
Abstract
-
Cited by 39 (0 self)
- Add to MetaCart
The identification of design patterns as part of the reengineering process can convey important information to the designer. However, existing pattern detection methodologies generally have problems in dealing with one or more of the following issues: Identification of modified pattern versions, search space explosion for large systems and extensibility to novel patterns. In this paper, a design pattern detection methodology is proposed that is based on similarity scoring between graph vertices. Due to the nature of the underlying graph algorithm, this approach has the ability to also recognize patterns that are modified from their standard representation. Moreover, the approach exploits the fact that patterns reside in one or more inheritance hierarchies, reducing the size of the graphs to which the algorithm is applied. Finally, the algorithm does not rely on any pattern-specific heuristic, facilitating the extension to novel design structures. Evaluation on three open-source projects demonstrated the accuracy and the efficiency of the proposed method.
Design pattern mining enhanced by machine learning
- In Proceedings International Conference on Software Maintenance (ICSM 2005). IEEE Computer Society, Los Alamitos
, 2005
"... Design patterns present good solutions to frequently occurring problems in object-oriented software design. Thus their correct application in a system’s design may significantly improve its internal quality attributes such as reusability and maintainability. In software maintenance the existence of ..."
Abstract
-
Cited by 9 (1 self)
- Add to MetaCart
Design patterns present good solutions to frequently occurring problems in object-oriented software design. Thus their correct application in a system’s design may significantly improve its internal quality attributes such as reusability and maintainability. In software maintenance the existence of up-to-date documentation is crucial, so the discovery of as yet unknown design pattern instances can help improve the documentation. Hence a reliable design pattern recognition system is very desirable. However, simpler methods (based on pattern matching) may give imprecise results due to the vague nature of the patterns ’ structural description. In previous work we presented a pattern matching-based system using the Columbus framework with which we were able to find pattern instances from the source code by considering the patterns ’ structural descriptions only, and therefore we could not identify false hits and distinguish similar design patterns such as State and Strategy. In the present work we use machine learning to enhance pattern mining by filtering out as many false hits as possible. To do so we distinguish true and false pattern instances with the help of a learning database created by manually tagging a large C++ system.
Software Architecture Reconstruction: a Process-Oriented Taxonomy
, 2009
"... To maintain and understand large applications, it is important to know their architecture. The first problem is that unlike classes and packages, architecture is not explicitly represented in the code. The second problem is that successful applications evolve over time, so their architecture inevita ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
To maintain and understand large applications, it is important to know their architecture. The first problem is that unlike classes and packages, architecture is not explicitly represented in the code. The second problem is that successful applications evolve over time, so their architecture inevitably drifts. Reconstructing the architecture and checking whether it is still valid is therefore an important aid. While there is a plethora of approaches and techniques supporting architecture reconstruction, there is no comprehensive software architecture reconstruction state of the art and it is often difficult to compare the approaches. This article presents a state of the art in software architecture reconstruction approaches.
A comparison of reverse engineering tools based on design pattern decomposition
- In Proceedings of the Australian Software Engineering Conference
, 2005
"... The usefulness of design patterns in forward engineering is already well-known and several tools provide support for their application in the development of software systems. While the role of design patterns in reverse engineering is still argued primarily due to their informal definition which lea ..."
Abstract
-
Cited by 6 (3 self)
- Add to MetaCart
The usefulness of design patterns in forward engineering is already well-known and several tools provide support for their application in the development of software systems. While the role of design patterns in reverse engineering is still argued primarily due to their informal definition which leads to various possible implementations of each pattern. One of the most discussed aspects related to design patterns is about the need of their formalization according to the drawbacks this can represent. Formalization leads to the identification of the socalled sub-patterns, which are the recurring fundamental elements design patterns are composed of. In this paper we analyze the role sub-patterns play in two reverse engineering tools: FUJABA and SPQR. Attention is focused on how sub-patterns are exploited to define and to detect design patterns. To emphasize the similarities and differences between the two approaches, the Composite Design Pattern is considered as example. 1.
Architecture and Design Pattern Discovery Techniques – A Review
"... Architecture and design patterns, as demonstrated solutions to recurring problems, have proved practically important and useful in the process of software development. They have been extensively applied in industry. Discovering the instances of architecture and design patterns from the source code o ..."
Abstract
-
Cited by 3 (3 self)
- Add to MetaCart
Architecture and design patterns, as demonstrated solutions to recurring problems, have proved practically important and useful in the process of software development. They have been extensively applied in industry. Discovering the instances of architecture and design patterns from the source code of software systems can assist the understanding of the systems and the process of re-engineering. More importantly, it also helps to trace back to the original architecture and design decisions, which are typically missing for legacy systems. This paper presents a review on current techniques and tools for discovering architecture and design patterns from object-oriented systems. We classify different approaches and analyze their results. We also discuss the disparity of the discovery results from different approaches and analyze possible reasons with some insight. 1.
Reverse Engineering of Design Patterns for High Performance Computing
- Department of Computer Science, University of California, Davis
, 2005
"... A design pattern abstracts a reusable object-oriented design that solves a common recurring design problem in a particular context [14]. An object-oriented design describes the roles, responsibilities, and collaboration of participating classes and instances. Every design pattern has its own unique ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
A design pattern abstracts a reusable object-oriented design that solves a common recurring design problem in a particular context [14]. An object-oriented design describes the roles, responsibilities, and collaboration of participating classes and instances. Every design pattern has its own unique intent. By finding design patterns from source, we can bring program understanding to a higher level by revealing the architectural design of a system.
A Framework for Automatically Detecting and Assessing Performance Antipatterns in Component Based Systems Using Run-Time Analysis
- The 9th International Workshop on Component Oriented Programming, part of ECOOP
, 2004
"... assessing the impact of poor performance design (performance antipatterns) in component based systems using run time analysis. The framework consists of three modules, a monitoring module, a detection module, and a visualization module. Our framework borrows techniques from the field of Knowledge Di ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
assessing the impact of poor performance design (performance antipatterns) in component based systems using run time analysis. The framework consists of three modules, a monitoring module, a detection module, and a visualization module. Our framework borrows techniques from the field of Knowledge Discovery in Databases. We intend to instantiate the framework for the Enterprise Java Beans platform.
Detecting Performance Antipatterns in Component Based Enterprise Systems
"... We introduce an approach for automatic detection of performance antipatterns. The approach is based on a number of advanced monitoring and analysis techniques. The advanced analysis is used to identify relationships and patterns in the monitored data. This information is subsequently used to reconst ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
We introduce an approach for automatic detection of performance antipatterns. The approach is based on a number of advanced monitoring and analysis techniques. The advanced analysis is used to identify relationships and patterns in the monitored data. This information is subsequently used to reconstruct a design model of the underlying system, which is loaded into a rule engine in order to identify predefined antipatterns. We give results of applying this approach to identify a number of antipatterns in two JEE applications. Finally, this work also categorises JEE antipatterns into categories based on the data needed to detect them. 1
Research Identification of Behavioral and Creational Design Motifs through Dynamic Analysis
"... Design patterns offer design motifs, solutions to object-oriented design problems. Design motifs lead to well-structured designs and thus are believed to ease software maintenance. However, after use, they are often “lost ” and are consequently of little help during program comprehension and other m ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
Design patterns offer design motifs, solutions to object-oriented design problems. Design motifs lead to well-structured designs and thus are believed to ease software maintenance. However, after use, they are often “lost ” and are consequently of little help during program comprehension and other maintenance activities. Therefore, several works proposed design pattern identification approaches to recover occurrences of the motifs. These approaches mainly used the structure and organisation of classes as input. Consequently, they have a low precision when considering behavioural and creational motifs, which pertain to the assignment of responsibilities and the collaborations among objects at runtime. We propose MoDeC, an approach to describe behavioral and creational motifs as collaborations among objects in the form of scenario diagrams. We identify these motifs using dynamic analysis and constraint programming. Using a proof-of-concept implementation of MoDeC and different scenarios for five other Java programs and Builder, Command, and Visitor, we show that MoDeC has a better precision than a state-of-the-art static approaches.
ABSTRACT Recognizing Behavioral Patterns at Runtime using Finite Automata
"... During reverse engineering, developers often need to understand the undocumented design of a software. In particular, recognizing design patterns in the software can provide reverse engineers with considerable insight on the software structure and its internal characteristics. Researchers have there ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
During reverse engineering, developers often need to understand the undocumented design of a software. In particular, recognizing design patterns in the software can provide reverse engineers with considerable insight on the software structure and its internal characteristics. Researchers have therefore proposed techniques based on static analysis to automatically recover design patterns in a program. Unfortunately, most design patterns comprise not only structural, but also significant behavioral aspects. Although static analysis is well suited for the recognition of structural aspects, it is typically limited and imprecise in analyzing behavior. To address this limitation, we present a new technique that complements our existing static analysis with a dynamic analysis, so as to perform a more accurate designpattern recognition. The dynamic analysis is based on (1) transforming behavioral aspects of design patterns into finite automata, (2) identifying and instrumenting relevant method calls, and (3) monitoring relevant calls at runtime and matching them against the automata. The results of the dynamic analysis are then used to compute the likelihood of a pattern to be in the code. This paper describes our technique and presents a preliminary empirical study performed to assess the technique.

