Tools Supporting the Use of Design Patterns in Frameworks

Application frameworks are probably the most effective method to promote reuse in software development oday. They support concrete architectural reuse by laying down the application logic and by letting the users to derive solutions for their specific needs. Many industrial strength frameworks have been available for quite some time. At the moment, frameworks are evolving towards compositional systems from which users can instantiate and parameterize their applications without any knowledge of the internals of the frameworks. This makes frameworks accessible for ever wider audience. Over the last three years also the reuse of abstract design solutions has gained success in the form of design patterns. They help in communicating the best practices in software design and serve as a solid basis for object-oriented software development. FRED (Framework Editor for Java — Support for Framework Development and Use), a joint project by the universities of Helsinki and Tampere, aims at developing methodologies and tools for framework design and reuse. Tools will be implemented in the Java language because it provides full portability, clean object-oriented abstractions, and a number of standard packages, e.g. for networking and graphical user interfaces. Design patterns form the foundation for these tools. Patterns provide an informal, but well-structured way to capture the knowledge of experienced software engineers. At the same time they reduce complexity and increase flexibility of designs. In this report we discuss the fundamental properties of application frameworks and design patterns. We also take a look at some existing pattern related CASE tools.

[1]  Ralph E. Johnson,et al.  A framework for run-time systems and its visual programming language , 1996, OOPSLA '96.

[2]  Jim Q. Ning,et al.  Knowledge-based program analysis , 1990, IEEE Software.

[3]  Ian M. Holland,et al.  Contracts: specifying behavioral compositions in object-oriented systems , 1990, OOPSLA/ECOOP '90.

[4]  Rudolf K. Keller,et al.  Design and Reuse in Object-Oriented Frameworks: Patterns, Contracts, and Motifs in Concert , 1994, COODBSE.

[5]  Walter R. Bischofberger,et al.  Evolution of Object Systems or How to tackle the Slippage Problem in object systems , 1996 .

[6]  Jeff Kotula Discovering Patterns: An Industry Report , 1996, Softw. Pract. Exp..

[7]  Roy H. Campbell,et al.  Monitoring compliance of a software system with its high-level design models , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[8]  Chamond Liu,et al.  New clients with old servers: a pattern language for client/server frameworks , 1995 .

[9]  Ralph Johnson,et al.  A framework for network protocol software , 1995, OOPSLA.

[10]  Mary Shaw,et al.  Some patterns for software architectures , 1996 .

[11]  Alexander Ran,et al.  MOODS: models for object-oriented design of state , 1996 .

[12]  Erich Gamma,et al.  ET++SwapsManager: using object technology in the financial engineering domain , 1992, OOPSLA '92.

[13]  Kyle G. Brown,et al.  Design reverse-engineering and automated design-pattern detection in Smalltalk , 1996 .

[14]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

[15]  Hanspeter Mössenböck,et al.  Active Text for Structuring and Understanding Source Code , 1996, Softw. Pract. Exp..

[16]  Roy H. Campbell,et al.  Architecture-oriented visualization , 1996, OOPSLA '96.

[17]  Phillip M. Yelland,et al.  Creating host compliance in a portable framework: a study in the reuse of design patterns , 1996, OOPSLA '96.

[18]  Hans Albrecht Schmid Creating the architecture of a manufacturing framework by design patterns , 1995, OOPSLA.

[19]  Panu Viljamaa,et al.  The patterns business: impressions from PLoP-94 , 1995, SOEN.

[20]  William F. Opdyke,et al.  Lifecycle and refactoring patterns that support evolution and reuse , 1995 .

[21]  Juhani Iivari,et al.  Why are CASE tools not used? , 1996, CACM.

[22]  Danny B. Lange,et al.  Interactive visualization of design patterns can help in framework understanding , 1995, OOPSLA.

[23]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[24]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[25]  Stephen Travis Pope,et al.  A cookbook for using the model-view controller user interface paradigm in Smalltalk-80 , 1988 .

[26]  Jiri Soukup,et al.  Implementing patterns , 1995 .

[27]  Antti Viljamaa Application Frameworks in the Java Environment , 1997 .

[28]  Christopher Alexander,et al.  The Timeless Way of Building , 1979 .

[29]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[30]  Yoelle Maarek,et al.  Integrating Information Retrieval and Domain Specific Approaches for Browsing and Retrieval in Object-Oriented Class Libraries , 1991, OOPSLA.

[31]  Dirk Riehle,et al.  Understanding and Using Patterns in Software Development , 1996, Theory Pract. Object Syst..

[32]  James O. Coplien,et al.  Pattern languages of program design , 1995 .

[33]  Wolfgang Pree,et al.  Design Patterns for Object-Oriented Software Development , 1994, Proceedings of the (19th) International Conference on Software Engineering.

[34]  Mark A. Linton,et al.  Unidraw: a framework for building domain-specific graphical editors , 1990, TOIS.

[35]  L. P. Deutsch,et al.  Design reuse and frameworks in the smalltalk-80 system , 1989 .

[36]  James O. Coplien,et al.  A generative development-process pattern language , 1995 .

[37]  Juha Hautamäki A SURVEY OF FRAMEWORKS , 1997 .

[38]  Doug Kimelman,et al.  Modeling Object-Oriented Program Execution , 1994, ECOOP.

[39]  Wolfgang Strunk,et al.  Using Design Patterns to Restructure the User Interface Part of an Application Framework , 1996, Theory Pract. Object Syst..

[40]  Peter Coad,et al.  Object-oriented patterns , 1992, CACM.

[41]  Dirk Riehle Describing and Composing Patterns Using Role Diagrams , 1996 .

[42]  Doug Lea,et al.  Concurrent programming in Java - design principles and patterns , 1996, Java series.

[43]  William E. Lorensen,et al.  Object-Oriented Modeling and Design , 1991, TOOLS.

[44]  Dirk Riehle,et al.  A pattern language for tool construction and integration based on the tools and materials metaphor , 1995 .

[45]  Victor R. Basili,et al.  How reuse influences productivity in object-oriented systems , 1996, CACM.

[46]  Walter Zimmer,et al.  Relationships between design patterns , 1995 .

[47]  Roy H. Campbell,et al.  Designing and implementing Choices: an object-oriented system in C++ , 1993, CACM.

[48]  Mary Beth Rosson,et al.  Ode: a self-guided, scenario-based learning environment for object-oriented design principles , 1994, OOPSLA '94.

[49]  Dirk Riehle,et al.  Pattern Languages of Program Design 3 , 1997 .

[50]  Oscar Nierstrasz,et al.  The Effect of Object-Oriented Frameworks on Developer Productivity , 1996, Computer.

[51]  Kevin Benner,et al.  An Experience Using Design Patterns: Lessons Learned and Tool Support , 1996, Theory Pract. Object Syst..

[52]  Douglas C. Schmidt,et al.  Experience Using Design Patterns to Develop Reuseable Object-Oriented Communication Software , 1998 .

[53]  Kevin Benner,et al.  Managing Object-Oriented Framework Reuse , 1996, Computer.

[54]  Karl J. Lieberherr,et al.  Adaptive object-oriented programming using graph-based customization , 1994, CACM.

[55]  Richard C. Waters,et al.  The Programmer's Apprentice: a research overview , 1988, Computer.

[56]  John M. Vlissides,et al.  Automatic Code Generation from Design Patterns , 1996, IBM Syst. J..

[57]  Ken Auer Reusability through self-encapsulation , 1995 .

[58]  Brandon Goldfedder,et al.  A training experience with patterns , 1996, CACM.

[59]  Mayer D. Schwartz,et al.  The Dexter Hypertext Reference Model , 1994, CACM.

[60]  James Coplien,et al.  Industrial experience with design patterns , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[61]  Tom Wilson The HTML sourcebook. A complete guide to HTML 3.0: Ian S Graham John Wiley New York (1996) 2nd edition 688 pp $29.95 ISBN 0471 142425 , 1997 .

[62]  Robert Martin Discovering patterns in existing applications , 1995 .

[63]  Norman L. Kerth,et al.  Caterpillar's Fate: a pattern language for the transformation from analysis to design , 1995 .

[64]  Ward Cunningham The CHECKS pattern language of information integrity , 1995 .

[65]  Jukka Paakki,et al.  Automated Hypertext Support for Software Maintenance , 1996, Comput. J..

[66]  Doug Lea,et al.  Christopher Alexander: an introduction for object-oriented designers , 1998, SOEN.

[67]  Hanspeter Mössenböck,et al.  Scene: using scenario diagrams and active text for illustrating object-oriented programs , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[68]  Hanspeter Mössenböck,et al.  Designing a Framework by Stepwise Generalization , 1995, ESEC.

[69]  Rajendra K. Raj,et al.  A Compositional Model for Software Reuse , 1989, Computer/law journal.

[70]  James O. Coplien,et al.  Patterns for Encapsulating Class Trees , 1995 .

[71]  Marshall Cline The pros and cons of adopting and applying design patterns in the real world , 1996, CACM.

[72]  James Coplien,et al.  Advanced C++ Programming Styles and Idioms , 1991, Proceedings. Technology of Object-Oriented Languages and Systems, TOOLS 25 (Cat. No.97TB100239).