Abstract
In the context of reverse engineering, the recognition of design patterns provides additional information related to the rationale behind the design. This paper presents our approach to the recognition of the behavioral design patterns based on dynamic analysis of Java software systems. The idea behind our solution is to identify a set of rules capturing information necessary to identify a design pattern instance. Rules are characterized by weights indicating their importance in the detection of a specific design pattern. The core behavior of each design pattern may be described through a subset of these rules forming a macrorule. Macrorules define the main traits of a pattern. JADEPT (JAva DEsign Pattern deTector) is our software for design pattern identification based on this idea. It captures static and dynamic aspects through a dynamic analysis of the software by exploiting the JPDA (Java Platform Debugger Architecture). The extracted information is stored in a database. Queries to the database implement the rules defined to recognize the design patterns. The tool has been validated with positive results on different implementations of design patterns and on systems such as JADEPT itself.
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
Abd-El-Hafiz, S.k., Shawky, D.M., El-Sedeek, A.-L.: Recovery of Object-Oriented Design Patterns Using Static and Dynamic Analyses. International Journal of Computers and Applications (2008)
Arcelli, F., Masiero, S., Raibulet, C., Tisato, F.: A Comparison of Reverse Engineering Tools based on Design Pattern Decomposition. In: 2005 IEEE Australian Software Engineering Conference, pp. 262–269. IEEE Press, Los Alamitos (2005)
Arcelli, F., Perin, F., Raibulet, C., Ravani, S.: JADEPT: Behavioural Design Pattern Detection through Dynamic Analysis. In: 4th International Conference on Evaluation of Novel Approaches to Software Engineering, pp. 95–106. INSTICC Press (2009)
Arcelli, F., Perin, F., Raibulet, C., Ravani, S.: Behavioural Design Pattern Detection through Dynamic Analysis. 4th International Workshop on Program Comprehension through Dynamic Analysis, Technical report TUD-SERG-2008-036, 11–16 (2008)
Bergenti, F., Poggi, A.: Improving UML Designs Using Automatic Design Pattern Detection. In: 12th International Conference on Software Engineering and Knowledge Engineering, pp. 336–343 (2000)
Birkner, M.: Object-Oriented Design Pattern Detection Using Static and Dynamic Analysis of Java Software. Master Thesis, University of Applied Sciences Bonn-Rhein-Sieg, Sankt Augustin, Germany (2007)
Byte-Code Engineering Library (BCEL), http://jakarta.apache.org/bcel
Cooper, J.W.: The Design Pattern Java Companion. Addison-Wesley, Reading (1998)
Demeyer, S., Mens, K., Wuyts, R., Guéhéneuc, Y.-G., Zaidman, A., Walkinshaw, N., Aguiar, A., Ducasse, S.: Workshop on Object-Oriented Reengineering (2005)
Fan, L., Qing-shan, L., Yang, S., Ping, C.: Detection of Design Patterns by Combining Static and Dynamic Analyses. Journal of Shanghai University (English Edition) 11(2), 156–162 (2007)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: elements of reusable object-oriented software. Addison Wesley, Reading (1994)
Guéhéneuc, Y.-G., Douence, R., Jussien, N.: No Java without Caffeine. A Tool for Dynamic Analysis of Java Programs. In: 17th IEEE International Conference on Automated Software Engineering, pp. 117–126. IEEE Press, Los Alamitos (2002)
Guéhéneuc, Y.G.: PTIDEJ: Promoting Patterns with Patterns. In: 1st ECOOP Workshop on Building Systems using Patterns, pp. 1–9. Springer, Heidelberg (2005)
Heuzeroth, D., Holl, T., Löwe, W.: Combining Static and Dynamic Analysis to Detect Interaction Patterns. In: 6th World Conference on Integrated Design and Process Technology (2002)
Hu, L., Sartipi, K.: Dynamic Analysis and Design Pattern Detection in Java Programs. In: 20th International Conference on Software Engineering & Knowledge Engineering, pp. 842–846 (2008)
Java documentation, http://java.sun.com/j2se/1.4.2/docs/api/java/util/Observer.html
Lee, H., Youn, H., Lee, E.: Automatic Detection of Design Pattern for Reverse Engineering. In: 5th ACIS International Conference on Software Engineering Research, Management & Applications, pp. 577–583 (2007)
Nickel, U., Niere, J., Zündorf, A.: The FUJABA Environment. In: 22nd International Conference on Software Engineering, pp. 742–745 (2000)
Niere, J., Schäfer, W., Wadsack, J.P., Wendehals, L., Welsh, J.: Towards Pattern-Based Design Recovery. In: 24th International Conference on Software Engineering, pp. 338–348 (2002)
Perin, F.: Dynamic analysis to detect the design patterns in Java: gathering information with JPDA. MSc Thesis, University of Milano-Bicocca, Milan (2007)
Ravani, S.: Dynamic analysis for Design Pattern detecting on Java code: information relationship modelling, MSc Thesis, University of Milano-Bicocca, Milan (2007)
Pettersson, N.: Measuring Precision for Static and Dynamic Design Pattern Recognition as a Function of Coverage. In: Workshop on Dynamic Analysis, ACM SIGSOFT Software Engineering Notes, vol. 30(4), pp. 1–7 (2005)
Shawky, D.M., Abd-El-Hafiz, S.K., El-Sedeek, A.-L.: A Dynamic Approach for the Identification of Object-oriented Design Patterns. In: IASTED Conference on Software Engineering, pp. 138–143 (2005)
Shi, N., Olsson, R.A.: Reverse Engineering of Design Patterns from Java Source Code. In: 21st Conference on Automated Software Engineering, pp. 123–134. IEEE Press, Los Alamitos (2006)
Smith, J.M.C., Stotts, D.: Elemental Design Patterns: A Formal Semantics for Composition of OO Software Architecture. In: 27th Annual NASA Goddard Software Engineering Workshop, pp. 183 (2002)
Smith, J.M.C., Stotts, D.: SPQR: Flexible Automated Design Pattern Extraction From Source Code. In: 2003 IEEE International Conference on Automated Software Engineering, pp. 215-224, IEEE Press (2003)
Tsantalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S.T.: Design Pattern Detection Using Similarity Scoring. IEEE Transactions on Software Engineering 32(11), 896–909 (2006)
Verkamo, A.I., Gustafsson, J., Nenonen, L., Paakki, J.: Design patterns in performance prediction. In: ACM 2nd Workshop on Software and Performance, pp. 143–144 (2000)
Wendehals, L.: Improving Design Pattern Instance Recognition by Dynamic Analysis. In: ICSE 2003 Workshop on Dynamic Analysis, pp. 29–32. IEEE Press, Los Alamitos (2003)
Wendehals, L., Orso, A.: Recognizing Behavioral Patterns at Runtime using Finite Automata. In: 4th International ICSE Workshop on Dynamic Analysis, pp. 33–39 (2006)
Zaidman, A., Hamou-Lhadj, A., Greevy, O.: Program Comprehension through Dynamic Analysis. In: 1st International Workshop on Program Comprehension through Dynamic Analysis, Technical report 2005-12 (2005)
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
Arcelli, F., Perin, F., Raibulet, C., Ravani, S. (2010). Design Pattern Detection in Java Systems: A Dynamic Analysis Based Approach. In: Maciaszek, L.A., González-Pérez, C., Jablonski, S. (eds) Evaluation of Novel Approaches to Software Engineering. ENASE ENASE 2009 2008. Communications in Computer and Information Science, vol 69. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-14819-4_12
Download citation
DOI: https://doi.org/10.1007/978-3-642-14819-4_12
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-14818-7
Online ISBN: 978-3-642-14819-4
eBook Packages: Computer ScienceComputer Science (R0)