This day is organized by Uppsala University and ASTEC (Advanced Software Technology) as an introduction to the discipline of Design patterns, and with presentation of research work. It is intended for anyone with any level of interest in the topic. Everyone is most welcome to attend!!!
Beginning with a short historical review of the young discipline, the presentation serves as an overview of the most widely effective application of patterns in software: design patterns. I give an essential description of two distinct design patterns, and conclude with a discussion of the definitions, characteristics, and variety of pattern papers.
The aim is to discuss the notion of design patterns from two perspectives, i.e. software architecture and language support. Software architecture research is concerned with the top-level structure of a software system and aims at guaranteeing the fulfillment of especially the non-functional requirements of the system. Design patterns represent structures that improve one or more NFRs while maintaining the same functionality. The relation between architectural styles and design patterns is that the former exists on the macro level, whereas design patters provide structures at the micro level. With respect to language support, the implementation of design patterns in conventional object oriented languages suffers from problems such as traceability, the self problem, reusability and implementation overhead. Three levels of support can be identified, i.e. visualization, code generation and integrated language support. The presentation will discuss these approaches and their associated advantages and disadvantages. Especially our work representing design patterns in the layered object model, our high-level research language, will be addressed.
Precise specification of the solution indicated by a design pattern can greatly promote our understanding of the laws that govern the application (implementation) of each design pattern. Resolution of other issues, such as efficient indexing of patterns, and possible juxtapositions of different patterns, also appear to depend on having their accurate formulation.
This talk focuses on formulating the specification of the solution dictated by design patterns ("lattice") and approaches to the specification language, such as the metaprogramming approach. I demonstrate how the solutions prescribed by design patterns are precisely formulated by this approach; and a prototype of a tool we have built, the "patterns wizard", that supports the specification of design patterns and their application according to the metaprogramming approach.
I will demonstrate the use of this tool in the context of the GoF's patterns and Eiffel programs.
I conclude with a declarative approach at the specification of design patterns. A formal specification language will be defined, and the specification of design patterns by this approach will be discussed.