PatternGuru: An Educational System for Software Patterns Marko Bošković 1 University of Oldenburg Germany boskovic_marko@yahoo.com Dragan Gašević Simon Fraser University Surrey, Canada dgasevic@acm.org Vladan Devedžić University of Belgrade Serbia and Montenegro devedzic@fon.bg.ac.yu Abstract In this paper we present PatternGuru an educational system for learning software patterns. Software patterns capture proven solutions of common problems in software development. Those solutions are general, but again they solve a problem in a particular context. PatternGuru is designed with the goal to be used for teaching software patterns within both undergraduate and graduate software engineering courses. The basic idea of PatternGuru is to provide learning of software patterns in collaborative manner and to present them as an integral part of software development. The tool is developed by extending ArgoUML, an open source project, so it can be used for both software engineering and education. 1. Introduction Software pattern is a piece of literature that describes a design problem and a general solution for the problem in a particular context [1]. Software patters are widely accepted in the software engineering community for the last 10 years. The popularity of software patterns affected the education of software engineering, so that the current software engineering education regards teaching software pattern fundamentals. Generally speaking software patterns capture proven solutions of the common problems in software engineering. However, they are not only descriptions. At the same, they are guidelines for recognizing context in which a specific software pattern can be used and applied to creating a solution. Usually, experienced developers discover software patterns. When they find a good solution to a problem under consideration they use it again and again. Designers, who are familiar with software patterns, save time and energy because they do not need to discover them again. Some of software pattern researchers report that the best way of learning software patterns is to learn them as an integral part of software development [1]. Designers realize tradeoffs between forces which cause pattern only when they struggle with in real problems of software development. Beside the fact that software patterns are very important for software development, there are yet not any developed educational systems for learning them. Current software modeling tools like Rational Rose, Rational XDE Developer and Together do not enable effective learning of software patterns. Their descriptions of software patterns only consist of a few sentences and sketch, which is not enough to understand the meaning of software patterns. Furthermore, their support is only focused on a separate class of software patterns – design patterns. From the literature, we are only aware of one intelligent tutoring system (ITS) for learning design patterns, which is being developed at the University of Belgrade [4]. The main idea of this work is to overcome current shortcomings in software patterns education at both undergraduate and graduate levels. We developed an educational software system, named PatternGuru, which enables learning software patterns as a part of software development, in a collaborative manner. We regard the collaborative learning of software patterns as a constant sharing of ideas and solutions between the teacher and all his/her students. In PatternGuru various types of patterns can be described, but not only design patterns. The tool support Unified Modeling Language (UML) for describing software patterns, as a well-known industrial standard for software modeling. The system is developed by extending ArgoUML, an open source UML tool (http://argouml.tigiris.org). Accordingly, the user interface is well-known to most of software engineers as well as software engineering students. PatternGuru inherits ArgoUML’s support for sharing UML models using XML Metadata Interchange (XMI; http://www.omg.org/cgi-bin/apps/doc?formal/02- 01-01.pdf). In order to provide interoperable metadata of software patters we defined our own XML format in PatternGuru that complements XMI. 2. What are software patterns Let us try to explain what are software patterns and why do we need them. Generally, software patterns are attempts to describe successful solutions to common