Designing Object-Oriented Frameworks

Most software reuse has focused on code reuse, such as reusing parts of existing applications, reusing library functions or reusing pre-built components. With the recent interest in design patterns [Gamma et al., 1995] and object-oriented frameworks, the focus is shifting away from just reusing code to reusing existing designs as well. Design patterns provide a reusable piece of a design which solves a recurring design problem in software construction. An object-oriented framework, which is the focus of this chapter, is the reusable design and implementation of a system or subsystem [Beck and Johnson, 1994]. It is typically implemented as a set of abstract classes which de ne the core functionality of the framework along with concrete classes for speci c applications included for completeness. Users of the framework complete or extend the framework by adding custom application speci c components or functions to produce and application. Designing a framework di ers from designing a single application in at least two respects. First, the level of abstraction is di erent. Frameworks are meant to provide a generic solution for a set of similar or related problems or an entire domain, while applications provide a concrete solution for a particular problem. Second, frameworks are by their nature incomplete. Whereas an application design has all of the components it needs to execute and perform its task, a framework design will have places within it that need to be instantiated by adding concrete solutions to a speci c application problem. A framework does not cover all of the functionality required by a particular domain, but instead abstracts the common functionality required by many applications, incorporating it into the common design, and leaving the variable functionality to be lled in by the framework user. Due to these di erences, framework design focuses on providing exible abstractions that cover the functionality required by applications within a domain and making the framework easy to use. These abstractions in turn provide ways in which application developers can customize the framework. Object-

[1]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[2]  Paul G. Sorenson,et al.  Hooking into Object-Oriented Application Frameworks , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[3]  Andreas Birrer,et al.  Frameworks in the Financial Engineering Domain - An Experience Report , 1993, ECOOP.

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

[5]  Sean Cotter,et al.  Inside Taligent Technology , 1995 .

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

[7]  Ralph Johnson Documenting frameworks using patterns , 1992, OOPSLA 1992.

[8]  Ralph Johnson How to Design Frameworks , 1993, OOPSLA 1993.

[9]  Cristina V. Lopes,et al.  Open Implementation Design Guidelines , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[10]  Kyo Chul Kang,et al.  Feature-Oriented Domain Analysis (FODA) Feasibility Study , 1990 .

[11]  James P. O'Connor,et al.  Reuse in Command-and-Control Systems , 1994, IEEE Software.

[12]  Joseph Eugene Hollingsworth Software component design-for-reuse: a language-independent discipline applied to ADA , 1992 .

[13]  D. Gangopadhyay,et al.  Understanding frameworks by exploration of exemplars , 1995, Proceedings Seventh International Workshop on Computer-Aided Software Engineering.

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

[15]  E. Gamma,et al.  ET++SwapsManager: using object technology in the financial engineering domain , 1992, OOPSLA.

[16]  Gregor Kiczales,et al.  Open implementation analysis and design , 1997, SSR '97.

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

[18]  Bertrand Meyer,et al.  Reusable Software: The Base Object-Oriented Component Libraries , 1994 .

[19]  Sarah Collier Building object-oriented frameworks , 1994 .

[20]  Ivar Jacobson,et al.  Object-oriented software engineering - a use case driven approach , 1993, TOOLS.

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

[22]  Will Tracz,et al.  Domain-specific software architecture (DSSA) frequently asked questions (FAQ) , 1994, SOEN.

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

[24]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[25]  Ralph E. Johnson,et al.  Patterns Generate Architectures , 1994, ECOOP.

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

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

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

[29]  Alexander L. Wolf,et al.  Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture , 2022 .