Andreas Wierda, Eric Dortmans, Lou Somers



Pattern detection methods discover recurring solutions in a system’s implementation, for example design patterns in object-oriented source code. Usually this is done with a pattern library. This has the disadvantage that the precise implementation of the patterns must be known in advance. The method used in our case study does not have this disadvantage. It uses a mathematical technique called Formal Concept Analysis and is applied to find structural patterns in two subsystems of a printer controller. The case study shows that it is possible to detect frequently used structural design constructs without upfront knowledge. However, even the detection of relatively simple patterns in relatively small pieces of software takes a lot of computing time. Since this is due to the complexity of the applied algorithms, applying the method to large software systems like the complete controller is not practical. They can be applied to its subsystems though, which are about five to ten percent of its size.


  1. Antoniol, G., R. Fiutem, L. Cristoforetti (1998). Design Pattern Recovery in Object-Oriented Software. Proc. 6th International Workshop on Program Comprehension, pp. 153-160.
  2. Arévalo, G., S. Ducasse, O. Nierstrasz (2003). Understanding classes using X-Ray views. Proc. of 2nd International Workshop on MASPEGHI 2003 (ASE 2003), pp. 9-18.
  3. Ball, T. The concept of Dynamic Analysis (1999). Foundations of Software Engineering, Proc. 7th European Software Engineering Conference / 7th ACM SIGSOFT Symposium on Foundations of Software Engineering, pp. 216-234.
  4. Bassil, S., R.K. Keller (2001). Software Visualization Tools: Survey and Analysis. Proc. 9th International Workshop on Program Comprehension (IWPC'01), pp. 7-17.
  5. Beck, K., J.O. Coplien, R. Crocker, L. Dominick, G. Meszaros, F. Paulisch, J. Vlissides (1996). Industrial Experience with Design Patterns. Proc. 18th International Conference on Software Engineering (ICSE-18), pp. 103-114.
  6. Bordat, J.P. (1986). Calcul pratique du treillis de Galois d'une correspondance. Math. Sci. Hum., 96, pp. 31-47.
  7. Buschmann, F., R. Meunier, H. Rohnert, P. Sommerlad, M. Stal (1999). Pattern-Oriented Software Architecture: A System of Patterns. John Wiley and Sons Ltd, Chichester, England.
  8. Chikovsky, E.J., J.H. Cross (1990). Reverse Engineering and Design Recovery: A taxonomy. IEEE Software, 7(1), pp. 13-17.
  9. Columbus/CAN (2003). Setup and User's Guide to Columbus/CAN, Academic Version 3.5. FrontEndART Ltd.
  10. Deursen, A. van (2002). Software Architecture Recovery and Modelling [WCRE 2001 Discussion Forum Report]. ACM SIGAPP Applied Computing Review, 10(1).
  11. Gamma, E., R. Helm, R. Johnson, J. Vlissides (1995). Design Patterns: elements of reusable object-oriented software, fifth edition. Addison-Wesley.
  12. Ganther, B., R. Wille (1998). Applied lattice theory: formal concept analysis. In: General Lattice Theory, G. Grätzer editor, Birkhäuser Verlag.
  13. Hahsler, M. (2003). A Quantitative Study of the Application of Design Patterns in Java. Technical report 1/2003, University of Wien.
  14. Hassan, A.E., R. Holt (2004). The Small World of Software Reverse Engineering. Proc. 2004 Working Conference on Reverse Engineering (WCRE'04), pp. 278-283.
  15. Jonyer, I., D.J. Cook, L.B. Holder (2001), Graph-Based Hierarchical Conceptual Clustering. Journal of Machine Learning Research, 2, pp. 19-43.
  16. Keller, R.K., R. Schauer, S. Robitaille, P. Pagé (1999). Pattern-Based Reverse-Engineering of Design Components. Proc. 21st International Conference on Software Engineering (ICSE'99), pp. 226-235.
  17. Kersemakers, R., E. Dortmans, L. Somers (2005). Architectural Pattern Detection - A Case Study. Proc. Ninth International Conference on Software Engineering and Applications (SEA 2005), Phoenix, November 14-16, pp. 125-133.
  18. Kuznetsov, S.O., S.A. Obëdkov (2001). Comparing performance of algorithms for generating concept lattices. Proc. 9th IEEE International Conference on Conceptual Structures (ICCS 7801), pp. 35-47.
  19. O'Brien, L., C. Stoermer, C. Verhoef (2002). Software Architecture Reconstruction: Practice Needs and Current Approaches. SEI Technical Report CMU/SEI2002-TR-024, Software Engineering Institute, Carnegie Mellon University.
  20. Prechtelt, L., B. Unger, W.F. Tichy, P. Brössler, L.G. Votta (2001). A Controlled Experiment in Maintenance Comparing Design Patterns to Simpler Solutions. IEEE Transactions on Software Engineering, 27(12), pp. 1134-1144.
  21. Prechtelt, L., B. Unger-Lamprecht, M. Philippsen, W.F. Tichy (2002). Two Controlled Experiments Assessing the Usefulness of Design Pattern Documentation in Program Maintenance. IEEE Transactions on Software Engineering, pp. 595-606.
  22. Sartipi, K., K. Kontogiannis (2003). Pattern-based Software Architecture Recovery. Proc. Second ASERC Workshop on Software Architecture.
  23. Siff, M., T. Reps (1997). Identifying Modules via Concept Analysis. Proc. International Conference on Software Maintenance (ICSM 7897), pp. 170-179.
  24. Siff, M., T. Reps (1998). Identifying Modules via Concept Analysis. Technical Report TR-1337, Computer Sciences Department, University of Wisconsin, Madison, WI, USA.
  25. Sim, S.E., R. Koschke (2001). WoSEF: Workshop on Standard Exchange Format. ACM SIGSOFT Software Engineering Notes, 26, pp. 44-49.
  26. Snelting, G. (1996). Reengineering of Configurations Based on Mathematical Concept Analysis. ACM Transactions on Software Engineering and Methodology, 5(2), pp. 146-189.
  27. Snelting, G. (2000). Software Reengineering Based on Concept Lattices. Proc. European Conference on Software Maintenance and Reengineering (CSMR 2000), pp. 1-8.
  28. Tilley, T., R. Cole, P. Becker , P. Eklund (2003). A Survey of Formal Concept Analysis Support for Software Engineering Activities. Proc. First International Conference on Formal Concept Analysis - ICFCA'03, G. Stumme, Springer-Verlag.
  29. Tonella, P., G. Antoniol (1999). Object Oriented Design Pattern Inference. Proc. International Conference on Software Maintenance (ICSM'99), pp. 230-238.
  30. Tonella, P., G. Antoniol (2001). Inference of Object Oriented Design Patterns. Journal of Software Maintenance and Evolution: Research and Practice, 13(5), published online Oct., pp. 309-330.
  31. Valtchev, P., D. Grosser, C. Roume, M.R. Hacene (2003). Galicia: an open platform for lattices. In: Using Conceptual Structures: Contributions to the 11th Intl. Conference on Conceptual Structures (ICCS'03), pp. 241-254, Shaker Verlag.
  32. Wille, R. (1981). Restructuring lattice theory: An approach based on hierarchies of concepts. In: I. Rival, editor, Ordered Sets, pp. 445-470. NATO Advanced Study Institute.

Paper Citation

in Harvard Style

Wierda A., Dortmans E. and Somers L. (2007). DETECTING PATTERNS IN OBJECT-ORIENTED SOURCE CODE – A CASE STUDY . In Proceedings of the Second International Conference on Software and Data Technologies - Volume 2: ICSOFT, ISBN 978-989-8111-06-7, pages 13-24. DOI: 10.5220/0001332300130024

in Bibtex Style

author={Andreas Wierda and Eric Dortmans and Lou Somers},
booktitle={Proceedings of the Second International Conference on Software and Data Technologies - Volume 2: ICSOFT,},

in EndNote Style

JO - Proceedings of the Second International Conference on Software and Data Technologies - Volume 2: ICSOFT,
SN - 978-989-8111-06-7
AU - Wierda A.
AU - Dortmans E.
AU - Somers L.
PY - 2007
SP - 13
EP - 24
DO - 10.5220/0001332300130024