Abstract
Design patterns have been widely adopted by software industry to reuse the best practices and improve the quality of software systems. In order to enable software engineers to understand and re-engineer the software program, quite a few approaches have been developed to identify design patterns from source code. However, the existing approaches generally identify patterns sequentially. As a result, the computation time of these approaches is linearly dependent on the number of design patterns to be detected. In this paper, a new approach based on subgraph discovery is proposed to recoginze a set of design patterns at a time. The computational time of the novel algorithm is sublinearly dependent on the number of patterns. A state space graph is introduced to avoid the search space explosion and reduce the opportunity to detect subgraph isomorphism. We run detailed experiments on three open source systems to evaluate our approach. The results of our experiments confirm on the efficiency and effectiveness of the proposed approach.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Pfleeger, S.L.: Software Engineering: Theory and Practice, 2nd edn. Prentice Hall, Englewood Cliffs (2001)
Gamma, E., Helm, R., Johnson, R., et al.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)
Vokáč, M.: An Efficient Tool for Recovering Design Patterns from C++ Code. Journal of Object Technology 5(1), 139–157 (2006)
Krämer, C., Prechelt, L.: Design Recovery by Automated Search for Structural Design Patterns in Object-Oriented Software. In: Proceedings of the Third Working Conference on Reverse Engineering, Monterey, CA, pp. 208–215 (1996)
Ballis, D., Baruzzo, A., Comini, M.: A Rule-based Method to Match Software Patterns against UML Models. Electronic Notes in Theoretical Computer Science 219, 51–66 (2008)
Tsantalis, N., Chatzigeorgiou, A., Stephanides, G., et al.: Design Pattern Detection using Similarity Scoring. IEEE Transactions on Software Engineering 32(11), 896–909 (2006)
Dong, J., Sun, Y., Zhao, Y.: Design Pattern Detection by Template Matching. In: Proceedings of the 2008 ACM Symposium on Applied Computing, Fortaleza, Brazil, pp. 765–769 (2008)
Cook, D.J., Holder, L.B.: Graph-based Data Mining. IEEE Intelligent Systems and Their Applications 15(2), 32–41 (2000)
Cook, D.J., Holder, L.B.: Mining Graph Data. John Wiley & Sons, Chichester (2007)
Ullmann, J.R.: An Algorithm for Subgraph Isomorphism. Journal of the ACM 23(1), 31–42 (1976)
Cordella, L.P., Foggia, P., Sansone, C., et al.: A (Sub)Graph Isomorphism Algorithm for Matching Large Graphs. IEEE Transactions on Pattern Analysis and Machine Intelligence 26(10), 1367–1372 (2004)
Mckay, B.D.: Practical Graph Isomorphism. Congressus Numerantium 30, 45–87 (1981)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2010 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Qiu, M., Jiang, Q., Gao, A., Chen, E., Qiu, D., Chai, S. (2010). Detecting Design Pattern Using Subgraph Discovery. In: Nguyen, N.T., Le, M.T., Świątek, J. (eds) Intelligent Information and Database Systems. ACIIDS 2010. Lecture Notes in Computer Science(), vol 5990. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-12145-6_36
Download citation
DOI: https://doi.org/10.1007/978-3-642-12145-6_36
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-12144-9
Online ISBN: 978-3-642-12145-6
eBook Packages: Computer ScienceComputer Science (R0)