|M.Sc Student||Cohen Uriel|
|Subject||Object Relations and Syntactic Mechanisms in Design Patterns|
|Department||Department of Computer Science||Supervisor||Professor Joseph Gil|
One of the main problems of software engineering is to capture the knowledge of expert software designers and engineers in order to allow other less experienced practitioners to apply that knowledge in improving their designs. Design patterns were invented precisely for this purpose: to explain and record a recurring design in object-oriented programming. However, design patterns have several drawbacks when implemented in languages like SMALLTALK, C++ and JAVA.
The motivation of this research is the belief that incorporating design patterns into object-oriented languages like C++ or JAVA as language constructs will make an advance in the problems present with the current approach of design patterns. With this purpose in mind, we investigate the syntactic mechanisms that allow the implementation of design patterns and the relations between the objects that compose them, in order to reach a better understanding of the set of lingual features that would permit to easily implement them. This will lead to a new classification of design patterns according to criteria based on syntactics rather than semantics.
In order to investigate the mechanisms present in the implementation of design patterns, a taxonomy of patterns is compiled, and a data set of design patterns is selected from this taxonomy. We argue that this data set is comprised of good candidates of becoming object-oriented lingual features.
Composition is a syntactic technique used throughout our data set of design patterns. We claim that composition is the syntactical mechanism most used in our data set. Along with inheritance they allow flexible design that exploit existing components to their maximum. Several criteria to classify and implement composition are suggested, and studied on our data set of design patterns.
We postulate that the knowledge of design patterns should be incorporated into object-oriented languages using the analyzed syntactical mechanisms. We propose a new lingual construct, connectors, that helps to implement our data set of design patterns, and an implementation in JAVA for that construct.