The Community for Technology Leaders
RSS Icon
Issue No.05 - Sept.-Oct. (2008 vol.34)
pp: 667-684
Yann-Gaël Guéhéneuc , University Montreal, Montreal
Giuliano Antoniol , Ecole Polytechnique de Montreal, Montreal
Design patterns are important in object-oriented programming because they offer design motifs, elegant solutions to recurrent design problems, which improve the quality of software systems. Design motifs facilitate system maintenance by helping to understand design and implementation. However, after implementation, design motifs are spread throughout the source code and are thus not directly available to maintainers. We present DeMIMA, an approach to identify semi-automatically micro-architectures that are similar to design motifs in source code and to ensure the traceability of these micro-architectures between implementation and design. DeMIMA consists of three layers: two layers to recover an abstract model of the source code, including binary class relationships, and a third layer to identify design patterns in the abstract model. We apply DeMIMA to five open-source systems and, on average, we observe 34% precision for the considered 12 design motifs. Through the use of explanation-based constraint programming, DeMIMA ensures 100% recall on the five systems. We also apply DeMIMA on 33 industrial components.
Object-Oriented Programming, Patterns
Yann-Gaël Guéhéneuc, Giuliano Antoniol, "DeMIMA: A Multilayered Approach for Design Pattern Identification", IEEE Transactions on Software Engineering, vol.34, no. 5, pp. 667-684, Sept.-Oct. 2008, doi:10.1109/TSE.2008.48
[1] Merriam-Webster, Merriam-Webster Online Dictionary,, Mar. 2003.
[2] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns—Elements of Reusable Object-Oriented Software, first ed. Addison-Wesley, 1994.
[3] K. Beck and R.E. Johnson, “Patterns Generate Architectures,” Proc. Eighth European Conf. for Object-Oriented Programming, M. Tokoro and R. Pareschi, eds., pp. 139-149,, July 1994.
[4] C. Rich and R.C. Waters, The Programmer's Apprentice, first ed. ACM Press Frontier Series and Addison-Wesley, Jan. 1990.
[5] R. Wuyts, “Declarative Reasoning About the Structure of Object-Oriented Systems,” Proc. 26th Conf. Technology of Object-Oriented Languages and Systems, J. Gil, ed., pp. 112-124, , Aug. 1998.
[6] Y.-G. Guéhéneuc and H. Albin-Amiot, “Recovering Binary Class Relationships: Putting Icing on the UML Cake,” Proc. 19th Conf. Object-Oriented Programming, Systems, Languages, and Applications, D.C. Schmidt, ed., pp. 301-314, http://www.iam. / Publications/DocumentsOOPSLA04.doc.pdf , Oct. 2004.
[7] Y.-G. Guéhéneuc, R. Douence, and N. Jussien, “No Java without Caffeine—A Tool for Dynamic Analysis of Java Programs,” Proc. 17th Conf. Automated Software Eng., W. Emmerich and D. Wile, eds., pp. 117-126, , Sept. 2002.
[8] Y.-G. Guéhéneuc and N. Jussien, “Using Explanations for Design-Patterns Identification,” Proc. First IJCAI Workshop Modeling and Solving Problems with Constraints, C. Bessière, ed., pp. 57-64, Documents/ASE02.doc.pdfhttp:// DocumentsIJCAI01MSPC.doc.pdf, Aug. 2001.
[9] J. Bansiya, “Automating Design-Pattern Identification,” Dr. Dobb'sJ., 9806a.htm?topic=patterns, June 1998.
[10] T. Richner and S. Ducasse, “Recovering High-Level Views of Object-Oriented Applications from Static and Dynamic Information,” Proc. Seventh Int'l Conf. Software Maintenance, H. Yang and L.White, eds., pp. 13-22, , Aug. 1999.
[11] D. Jackson and M.C. Rinard, “Software Analysis: A Roadmap,” Proc. 22nd Int'l Conf. Software Eng., Future of Software Eng. Track, M.Jazayeri and A. Wolf, eds., pp. 133-145, 0016/00160013abs.htm edu/ %20dnj/talksroadmap/, June 2000.
[12] P. Tonella and A. Potrich, “Reverse Engineering of the UML Class Diagram from C++ Code in Presence of Weakly Typed Containers,” Proc. Int'l Conf. Software Maintenance, G. Canfora and A.A.A.-V. Maryhauser, eds., pp. 376-385, , Nov. 2001.
[13] D. Thomas, “Reflective Software Engineering—From MOPS to AOSD,” J. Object Technology, vol. 1, no. 4, pp. 17-26, org/proceedings/icsm/ 1189/11890376abs.htm jot/issues/issue_2002_09/column1index.html , Sept. 2002.
[14] T. Gyimóthy, R. Ferenc, and I. Siket, “Empirical Validation of Object Oriented Metrics on Open Source Software for Fault Prediction,” IEEE Trans. Software Eng., vol. 31, no. 10, pp. 897-910, , Oct. 2005.
[15] J.H. Jahnke, W. Schäfer, and A. Zündorf, “Generic Fuzzy Reasoning Nets as a Basis for Reverse Engineering Relational Database Applications,” Proc. Sixth European Software Eng. Conf., M. Jazayeri, ed., pp. 193-210, 10/e0897.pdf cs/varletdocs.html, Sept. 1997.
[16] J. Niere, J.P. Wadsack, and A. Zündorf, “Recovering UML Diagrams from Java Code Using Patterns,” Proc. Second Workshop Soft Computing Applied to Software Eng., J.H. Jahnke and C. Ryan, eds., pp. 89-97, Proceedings.pdf, Feb. 2001.
[17] J. Niere, J.P. Wadsack, and L. Wendehals, “Handling Large Search Space in Pattern-Based Reverse Engineering,” Proc. 11th Int'l Workshop Program Comprehension, K. Wong and R. Koschke, eds., pp. 274-280, , May 2003.
[18] D. Jackson and A. Waingold, “Lightweight Extraction of Object Models from Bytecode,” Proc. 21st Int'l Conf. Software Eng., D.Garlan and J. Kramer, eds., pp. 194-202, , May 1999.
[19] Object Management Group, UML v1.5 Specification, / edu/ dnj/http:/ / , Mar. 2003.
[20] J. Noble and J. Grundy, “Explicit Relationships in Object-Oriented Development,” Proc. 18th Conf. Technology of Object-Oriented Languages and Systems, B. Meyer, ed., pp. 211-226, , Nov. 1995.
[21] F. Civello, “Roles for Composite Objects in Object-Oriented Analysis and Design,” Proc. Eighth Conf. Object-Oriented Programming, Systems, Languages, and Applications, A. Paepcke, ed., pp.376-393, , Sept. 1993.
[22] S. Ducasse, M. Blay-Fornarino, and A.-M. Pinna-Dery, “A Reflective Model for First Class Dependencies,” Proc. 10th Conf. Object-Oriented Programming, Systems, Languages, and Applications, F. Manola, ed., pp. 265-280, aboops93.html ~ducasse/WebPagesPublications.html, Oct. 1995.
[23] L. Wills, “Automated Program Recognition by Graph Parsing,” PhD dissertation, Massachusetts Inst. of Tech nology, 1992.
[24] J. Niere, W. Schäfer, J.P. Wadsack, L. Wendehals, and J. Welsh, “Towards Pattern-Based Design Recovery,” Proc. 24th Int'l Conf. Software Eng., M. Young and J. Magee, eds., pp. 338-348, , May 2002.
[25] C. Krämer and L. Prechelt, “Design Recovery by Automated Search for Structural Design Patterns in Object-Oriented Software,” Proc. Third Working Conf. Reverse Eng., L.M. Wills and I.Baxter, eds., pp. 208-215, , Nov. 1996.
[26] B. Kullbach and A. Winter, “Querying as an Enabling Technology in Software Reengineering,” Proc. Third Conf. Software Maintenance and Reengineering, P. Nesi and C. Verhoef, eds., pp. 42-50, , Mar. 1999.
[27] R.K. Keller, R. Schauer, S. Robitaille, and P. Pagé, “Pattern-Based Reverse-Engineering of Design Components,” Proc. 21st Int'l Conf. Software Eng., D. Garlan and J. Kramer, eds., pp. 226-235, , May 1999.
[28] J.H. Jahnke and A. Zündorf, “Rewriting Poor Design Patterns by Good Design Patterns,” Proc. First ESEC/FSE Workshop Object-Oriented Reengineering, S. Demeyer and H.C. Gall, eds., / wcre/7674/76740208abs.htm proceedings/csmr/0090/00900042abs.htmhttp:/ / Private/Publications/icse1999/icse1999.htmlhttp:/ / ESEC97/, Distributed Systems Group, Technical Univ. of Vienna, UV-1841-97-10, Sept. 1997.
[29] G. Antoniol, R. Fiutem, and L. Cristoforetti, “Design Pattern Recovery in Object-Oriented Software,” Proc. Sixth Int'l Workshop Program Comprehension, S. Tilley and G. Visaggio, eds., pp. 153-160, , June 1998.
[30] J. Seemann and J.W. von Gudenberg, “Pattern-Based Design Recovery of Java Software,” Proc. Fifth Int'l Symp. Foundations of Software Eng., B. Scherlis, ed., pp. 10-16, /www.informatik. ~ley/db/indices/a-tree/sSeemann:Jochen.html , Nov. 1998.
[31] D. Eppstein, “Subgraph Isomorphism in Planar Graphs and Related Problems,” Proc. Sixth Ann. Symp. Discrete Algorithms, K.Clarkson, ed., pp. 632-640, , Jan. 1995.
[32] N. Pettersson and W. Löwe, “Efficient and Accurate Software Pattern Detection,” Proc. 13th Asia Pacific Software Eng. Conf., P.Jalote, ed., pp. 317-326, , Dec. 2006.
[33] N. Tsantalis, A. Chatzigeorgiou, G. Stephanides, and S. Halkidis, “Design Pattern Detection Using Similarity Scoring,” IEEE Trans. Software Eng., vol. 32, no. 11, Nov. 2006.
[34] K. Brown, “Design Reverse-Engineering and Automated Design Pattern Detection in Smalltalk,” Technical Report TR-96-07, Dept. of Computer Science, Univ. of Illinois at Urbana-Champaign, 65&index=43http:/ / context/7342110, July 1996.
[35] G. Hedin, “Language Support for Design Patterns Using Attribute Extension,” Proc. First ECOOP Workshop Language Support for Design Patterns and Frameworks), J. Bosch and S. Mitchell, eds., Springer, pp. 137-140, , June 1997.
[36] H. Albin-Amiot and Y.-G. Guéhéneuc, “Meta-Modeling Design Patterns: Application to Pattern Detection and Code Synthesis,” Proc. First ECOOP Workshop Automating Object-Oriented Software Development Methods, P. van den Broek, P. Hruby, M. Saeki, G.Sunyé, and B. Tekinerdogan, eds., http://www.iro.umontreal. ca/~ptidej/Publications/ DocumentsECOOP01AOOSDM. doc.pdf , Centre for Telematics and Information Technology, Univ. of Twente, tR-CTIT-01-35, Oct. 2001.
[37] I. Philippow, D. Streitferdt, M. Riebisch, and S. Naumann, “An Approach for Reverse Engineering of Design Patterns,” Software and System Modeling, vol. 4, no. 1, pp. 55-70, , Feb. 2005.
[38] D. Heuzeroth, T. Holl, and W. Löwe, “Combining Static and Dynamic Analyses to Detect Interaction Patterns,” Proc. Sixth World Conf. Integrated Design and Process Technology, H. Ehrig, B.J.Krämer, and A. Ertas, eds., http://www.springer de/ publications.phpbib=281, June 2002.
[39] Y.-G. Guéhéneuc, “A Systematic Study of UML Class Diagram Constituents for Their Abstract and Precise Recovery,” Proc. 11th Asia-Pacific Software Eng. Conf., D.-H. Bae and W.C. Chu, eds., pp.265-274, , Nov.-Dec. 2004.
[40] A. Donovan, A. Kiezun, M.S. Tschantz, and M.D. Ernst, “Converting Java Programs to Use Generic Libraries,” Proc. 19th Conf. Object-Oriented Programming Systems, Languages, and Applications, D.Schmidt, ed., pp. 15-34, Documents/APSEC04.doc.pdfhttp:/ /portal.acm.orgcitation.cfm?id =1035292.1028979 , Oct. 2004.
[41] N. Jussien and V. Barichard, “The PaLM System: Explanation-Based Constraint Programming,” Proc. Techniques for Implementing Constraint Programming Systems), N. Beldiceanu, W. Harvey, M.Henz, F. Laburthe, E. Monfroy, T. Müller, L. Perron, and C.Schulte, eds., pp. 118-133, Sept. 2000, School of Computing, Nat'l Univ. of Singapore, tRA9/00.
[42] N. Jussien, “e-Constraints: Explanation-Based Constraint Programming,” Proc. First CP Workshop User-Interaction in Constraint Satisfaction, B. O'Sullivan and E. Freuder, eds., , Dec. 2001.
[43] E. Gamma and T. Eggenschwiler, “JHotDraw,” http://members. , 1998.
[44] W.B. Frakes and R. Baeza-Yates, Information Retrieval: Data Structures and Algorithms. Prentice Hall, 1992.
[45] J. Bieman, G. Straw, H. Wang, P.W. Munger, and R.T. Alexander, “Design Patterns and Change Proneness: An Examination of Five Evolving Systems,” Proc. Ninth Int'l Software Metrics Symp., M.Berry and W. Harrison, eds., pp. 40-49, , Sept. 2003.
[46] G. Antoniol, G. Casazza, M. di Penta, and R. Fiutem, “Object-Oriented Design Patterns Recovery,” J. Systems and Software, vol. 59, pp. 181-196, , Nov. 2001.
[47] Y.-G. Guéhéneuc, H. Sahraoui, and F. Zaidi, “Fingerprinting Design Patterns,” Proc. 11th Working Conf. Reverse Eng., E. Stroulia and A. de Lucia, eds., pp. 172-181, metrics/2003/1987/00/19870040abs.htmhttp:/ / publications/index.htmlhttp://www.iro.umontreal. ca/ ~ptidej/Publications/Documents WCRE04.doc.pdf, Nov. 2004.
[48] M. Fowler, Patterns of Enterprise Application Architecture, first ed. Addison-Wesley Professional, dp0321127420 , Nov. 2002.
31 ms
(Ver 2.0)

Marketing Automation Platform Marketing Automation Tool