×

Design pattern detection in Java systems: A dynamic analysis based approach. (English) Zbl 1211.68045

Maciaszek, Leszek A. (ed.) et al., Evaluation of novel approaches to software engineering. 3rd and 4th international conference, ENASE 2008/2009, Funchal, Madeira, Portugal, May 4–7, 2008, Milan, Italy, May 9–10, 2009. Revised selected papers. Berlin: Springer (ISBN 978-3-642-14818-7/pbk). Communications in Computer and Information Science 69, 163-179 (2010).
Summary: 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.
For the entire collection see [Zbl 1201.68007].

MSC:

68N15 Theory of programming languages
68N99 Theory of software

Software:

JADEPT; BCEL; Fujaba
PDFBibTeX XMLCite
Full Text: DOI

References:

[1] 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)
[2] 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) · doi:10.1109/ASWEC.2005.5
[3] 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)
[4] 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)
[5] 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)
[6] 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)
[7] Byte-Code Engineering Library (BCEL), http://jakarta.apache.org/bcel
[8] Cooper, J.W.: The Design Pattern Java Companion. Addison-Wesley, Reading (1998)
[9] 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)
[10] 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) · doi:10.1007/s11741-007-0213-z
[11] Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: elements of reusable object-oriented software. Addison Wesley, Reading (1994) · Zbl 0887.68013
[12] 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) · doi:10.1109/ASE.2002.1115000
[13] 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)
[14] 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)
[15] 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)
[16] Java documentation, http://java.sun.com/j2se/1.4.2/docs/api/java/util/Observer.html
[17] 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) · doi:10.1109/SERA.2007.58
[18] Nickel, U., Niere, J., Zündorf, A.: The FUJABA Environment. In: 22nd International Conference on Software Engineering, pp. 742–745 (2000) · doi:10.1145/337180.337620
[19] 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) · doi:10.1145/581380.581382
[20] Perin, F.: Dynamic analysis to detect the design patterns in Java: gathering information with JPDA. MSc Thesis, University of Milano-Bicocca, Milan (2007)
[21] Ravani, S.: Dynamic analysis for Design Pattern detecting on Java code: information relationship modelling, MSc Thesis, University of Milano-Bicocca, Milan (2007)
[22] 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) · doi:10.1145/1082983.1083253
[23] 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)
[24] 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)
[25] 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)
[26] 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) · doi:10.1109/ASE.2003.1240309
[27] 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) · Zbl 05341989 · doi:10.1109/TSE.2006.112
[28] 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) · doi:10.1145/350391.350422
[29] 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)
[30] Wendehals, L., Orso, A.: Recognizing Behavioral Patterns at Runtime using Finite Automata. In: 4th International ICSE Workshop on Dynamic Analysis, pp. 33–39 (2006)
[31] 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)
This reference list is based on information provided by the publisher or from digital mathematics libraries. Its items are heuristically matched to zbMATH identifiers and may contain data conversion errors. In some cases that data have been complemented/enhanced by data from zbMATH Open. This attempts to reflect the references listed in the original paper as accurately as possible without claiming completeness or a perfect matching.