Heuristics for Automatic Detection of Design Patterns in Object-Oriented Software

  • André Luis Castro de Freitas CEFET-Pelotas / UCPel
  • Ana Maria de Alencar Price UFRGS

Resumo


Design patterns summarize the experience of expert designers. Patterns are not invented, rather they are extracted from existing systems. The extracting process of patterns had involved the observation of a number of systems designs, looking for patterns across those systems. A design pattern is a reusable implementation model or architecture that can be applied to solve a particular recurring class of problem. In general, it is hard to recognize a pattern use in real-world software systems, unless you know what you are looking for and go carefully and methodically searching for a particular pattern. This paper is about the problem of detecting the essence of design patterns. By pattern essence we mean those collaborations between classes that characterize each one of the patterns. Heuristics have been created to identify and apply design patterns to object-oriented programs. The rules are based on the structural realtionship between classes and objects. It is implemented a tool in Smalltalk that automatizes detection and identification of design patterns in object-oriented applications. The tool intendes to be a validation prototype for the buit in heuristics. The development of the examples allows patterns comparison, showing advantages and tendencies in using one or another type of collaboration between classes and objects. Patterns studies stimulate facilities during the building of object-oriented programs. The patterns also help in the definition of good designs. We understand that a good design is a software that follows the fundamental concepts of the object-oriented paradigm including those rules stated by recognized.

Palavras-chave: Software Engineering, Object-Oriented Design, Design Patterns, Smalltalk

Referências

AGARWAL R.; LAGO, P. PATHOS A Paradigmatic Approach to High-level Object-oriented Sofftware Development. ACM SIGSOFT Software Engineering Notes, New York, v.20, n. 2, p.36-41, Apr. 1995.

ALPERT, S. et al. The Design Patterns Smalltalk Companion. Reading: Addison-Wesley, 1998.

APPLETON, B. Patterns and Software: Essential Concepts and Terminology Disponível por WWW em http://www.enteract.com/~bradapp/ (jun 2000).

ARANGO, G. et al. A Process for Consolidating and Reusing Design Knowledge. In: IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, 13., 1993, Baltimore. Proceeding... California: IEEE Press, 1993.

BANSIYA, J. Automating Design-Pattern Identification. Dr.Dobb's Journal. New York, v.23, n. 6, p.20-26, Jun. 1998.

CHIKOFSKY, E.; CROSS, J. Reverse Engineering and Design Recovery: A Taxonomy. IEEE Software, New York, v. 7, n.1, p. 13-17, 1990.

ELMASRI, N; NAVATHE, S.B. Fundamentals of Database Systems. Redwood City: Benjamin Cummings, 1989.

GAMMA, E. et al. Design Patterns: Reusable Elements of Object Oriented Design. Reading: Addison-Wesley, 1994.

JIAZHONG, Z.; ZHIJIAN W. NDHORM: An OO Approach to Requirements Modeling. ACM SIGSOFT Software Engineering Notes, New York, v.21, n. 5, p.65-69, Sept. 1996.

JOHNSON, R. Design Patterns. Departament of Computer Science at University of Illinois in Urbana Champaign. Disponível por WWW em [link] (dez. 1999).

SEEMANN, R.; WOLFF JÜRGEN. Pattern-Based Design Recovery of Java Software. In: SYMPOSIUM ON FOUNDATIONS OF SOFTWARE ENGINEERING, 6., 1998, Orlando, FL USA. Proceedings... New York: ACM Press, 1998.
Publicado
04/10/2000
FREITAS, André Luis Castro de; PRICE, Ana Maria de Alencar. Heuristics for Automatic Detection of Design Patterns in Object-Oriented Software. In: WORKSHOP DE TESES E DISSERTAÇÕES EM ENGENHARIA DE SOFTWARE - SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE (SBES), 14. , 2000, João Pessoa/PB. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2000 . p. 7-12. DOI: https://doi.org/10.5753/sbes_estendido.2000.24196.