BUILDING APPLICATION FRAMEWORKS: OBJECT-ORIENTED FOUNDATIONS OF FRAMEWORK DESIGN


Annotated References

This appendix lists selected annotated references, but the list is not exhaustive. The majority of the annotated references were contributed by the authors of this volume. This list is organized into five different categories: 1) Books, 2) Theme Issues, 3) Magazine/Journal Articles, 4) Thesis, and 5) Conferences/Chapters/Technical Reports.

1) Books

[Ackermann96] Ackermann, P. Developing Object-Oriented Multimedia Software. dpunkt Publishing, Heidelberg, 1996.

This book details the design of MET++, a framework for multimedia systems, that was built upon ET++. The introductory chapters explain the design principles for object-oriented frameworks in C++, while the later chapters address the design of the various subsystems for 3D modeling and visualization, audio, and animation.

[Anderson92] Anderson, Bruce. Task and Reflection in Learning to Learn. Empowerment through Experiential Learning. Kogan Page, London, 1992.

Bruce shows a way to direct people to become autonomous learners. He indicates that the key to learning-to-learn is an emphasis on engagement and reflection.

[Bass88] Bass, L., P. Clemens, and R. Kazman. Software Architectures in Practice. Addison Wesley Longman, 1988.

This book introduces the concepts and practices of software architecture--what a software system is designed to do and how that system's components are meant to interact with each other. The authors cover the essential technical topics for specifying and validating a system. They also emphasize the importance of the business context in which large systems are designed. Their aim is to present software architecture in a real-world setting, reflecting both the constraints and the opportunities that companies encounter. Key points of both technical and organizational discussions are illustrated by a selection of "industrial-strength" case studies.

[Brealey-Myers96] Brealey, R. and S. Myers. Principles of Corporate Finance. McGraw-Hill, New York, NY, 1996.

The standard text on corporate finance. Includes readable introductions to all aspects of valuation, from present value concepts to real options. Presents the fundamental principle of economic value maximization as the governing objective of a modern enterprise.

[Brooks95] Brooks, F. P., The Mythical Man-Month, Anniversary Edition, Reading, Addison Wesley Longman, 1995.

Although it describes the development of a long obsolete IBM mainframe operating system, OS/360, this 20th anniversary edition of Brooks' 1975 book is as worthwhile to read today as it was when it was first published. The software industry's short history and its relentless advancement make the added retrospective essays a real boon to understanding software management. Most of the original information has worn well, but the added commentaries illuminate how the best understanding of that time has yielded to new understanding. An extra bonus in the book is the inclusion of his classic essay, "No Silver Bullet" and a ten-year retrospective commentary on that as well.

[Buhr96] R.J.A. Buhr, Use Case Maps for Object-Oriented Systems, Prentice Hall, 1996.

This book was a first attempt at a comprehensive description of the Use Case Map technique. That the book was at least partially successful in getting the message across is indicated by the fact that the book was identified as one of the three best OO books of the year in JOOP. However, the book seems to have been swamped in a sea of UML and Java books, and also, perhaps, to have seen by many as only providing an alternative use-case notation to UML (thus missing the point that UCMs actually fill a large gap in UML between prose use cases and UML-style behavior descriptions). It must also be said that the book clouds the message by not presenting the essence of the approach tersely enough.

[Cotter-Potel95] Cotter, S. and M. Potel. Inside Taligent Technology, Addison Wesley Longman, Reading, Mass., 1995.

The book from Taligent presents a background and motivation for the Commonpoint framework product. The paradigms used to design the Commonpoint framework are presented as well Taligents view on the market development for their product. Part two of the book is a description of the Taligent Commonpoint product architecture, with descriptions of subsystems and their construction.

[Dixit-Pindyck94] Dixit, A. and R. Pindyck. Investment under Uncertainty. Princeton University Press, Princeton, NJ, 1994.

This book provides a thorough treatment of the real options approach to capital investment. It develops the underlying mathematical theory presents it in the evaluation of many kinds of investment scenarios.

[D'Souza-Wills98] D. D'Souza and A. C. Wills, Catalysis: Component and Framework-Based Development, Addison Wesley Longman, October 1998

This is the book containing all the main ideas of Catalysis. It provides a clear meaning for the constructs of UML, and shows how they can be used to describe components and their interfaces.

[Fayad-Laitinen98] Fayad, M.E. and M. Laitinen. Transition to Object-Oriented Software Development. John Wiley & Sons, 1998.

This book contains numerous case studies, and identifies technical, management, and cultural challenges. An object-oriented transition process is presented and examined with respect to two central themes: "What makes the transition to OOSD a mission fraught with problems?" and "How can the transition to OOSD be accomplished with minimum impact on costs and the schedule?" The transition plan presented is based upon lessons-learned from real-world experience. Several effective practices that managers can implement are suggested.

This book provides guidelines on how to transition from traditional software development to object-oriented software development. It presents guidelines on selecting the best method for the project and development environment. The book includes sections on: object-oriented software metrics, the development process, quality issues, and documentation. You may agree that such a book makes a significant contribution to the overall understanding of how to effectively manage object-oriented projects.

This book is intended for a broad community of computer and software professionals involved in the management and development of software projects. Software process group, contract administrators, customers, technologists, and software methodologists. Software engineers, programmers, managers as well as system engineers, and application program developers will greatly benefit from this book.

The authors of the book have more than 50 years of experience and research in advancing the technology of managing software development projects, and gained this experience on a broad range of application fronts. They have faced the full gamut of software project management problems and survived to tell others how they too can be effective in managing object-oriented projects.

[Fenton97] Fenton, N.E. and S.L. Pfleeger. Software Metrics: A Rigorous and Practical Approach. PWS Publishing Company, 1997.

This reference is structured as a primary textbook for an academic or industrial course on software metrics and quality assurance. It is also a useful supplement for any course in software engineering. Because of its breadth, the book is a major reference book for academics and practitioners, as it makes accessible important and interesting results that have appeared only in research-oriented publications. Researchers in software metrics find special interest in the material reporting new results, and in the extensive annotated bibliography of measurement-related information. Finally, the book offers help to software managers and developers who seek guidance on establishing or expanding a measurement program; they can focus on the practical guidelines for selecting metrics and planning their use.

[Fowler7] Fowler, M. UML Distilled. Addison Wesley Longman, 1997.

This book is a concise overview on UML: it highlights the key elements of its notation, semantics, and processes. This book presents a brief explanation of UML's history, development, and rationale, as well as discussions on how UML can be integrated into the object-oriented development process. In addition, the book profiles various modeling techniques associated with UML-use cases, CRC cards, design by contract, dynamic classification, interfaces, and abstract classes-along with concise descriptions of notation and semantics and numerous insightful tips for effective use. In addition, the authors offer the first look at the emerging Objectory Software Development Process.

[Gamma95] Gamma, E., R. Helm, R. E. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley Longman, 1995.

This book describes a set of design patterns that have been proven useful in object-oriented software development. Each design pattern describes an example of a problem and a solution to the problem. An example of a document editor that is built using several patterns is presented. The book also presents a classification of the patterns where a pattern can primarily be concerned with object creation, object structures, or object behavior.

[Goldberg-Rubin95] Goldberg A. and K. Rubin. Succeeding with Objects Decision Frameworks for Project Management. Reading, Massachusetts: Addison Wesley Longman, 1995.

The book offers a fresh look at object-oriented process models. It does not try to present one process model that fits all. Instead, it provides detailed recommendations for managing object-oriented projects that depend on various project- and company-specific contexts.

[Hull93] Hull, J. Options, Futures, and Other Derivative Securities. Prentice Hall, Englewood Cliffs, NJ, 1993.

A relatively recent book covering all aspects of option and derivative pricing theory.

[Jacobson92] Jacobson, I., et al. Object-Oriented Software Engineering: A Use Case Driven Approach, Reading, M.A.: Addison Wesley Longman, 1992.

This book provides a useful approach to object-oriented development, based on use cases. A use case is a description of a single complete user interaction with a system. By identifying all the major use cases for a system, the analysis can be completed. A technique is given for moving from use cases to object definition and continuing through implementation. While use cases have drawbacks that are not described in this book, the book provides a useful view of OO development.

[Jacobson97] Jacobson, I., M. Griss, and P. Jonsson. Software Reuse. Architecture Process and Organization for Business Success. Addison Wesley Longman, 1997.

This book presents an authoritative textbook-style treatment on how to apply Unified Modeling Language (UML) techniques to enhance software reuse in organizations. Opening with some interesting examples of successful software reuse from different companies, the text takes the reader through the software engineering process, from analysis and design (using the latest UML notation) to implementation and testing. The last section of Software Reuse returns to organization and management issues and stresses an incremental development approach, metrics for providing feedback to management, and an overview of the pitfalls of promoting software reuse.

[Karlsson95] Karlsson, E-A. Editor, Software Reuse--a Holistic Approach, John Wiley & Sons, 1995.

The book is the result from a large European ESPRIT project called REBOOT. The book presents a holistic view on how and why to introduce software reuse into an organization. Also the book introduces the much used distinction, for and with reuse. Several models and techniques are presented.

[Lakos96] Lakos, J. Large-scale C++ Software Design, Addison Wesley Longman, 1996.

An excellent book describing how to approach a large project to be written in C++ (although many of the principles apply to other languages as well). The book is filled with suggested approaches and guidelines for development, including some similar to those in the "Effective C++" book.

[Lewis95] Lewis T., L. Rosenstein, W. Pree, A. Weinand, E. Gamma, P. Calder, G. Andert, J. Vlissides, and K. Schmucker. Object-Oriented Application Frameworks. Manning Publications/Prentice Hall, 1995.

The book covers real-world commercial and public-domain frameworks, mainly focusing on the GUI domain and visual programming. The book discusses the design and implementation of ET++, MacApp, the Microsoft Foundation Classes, ProGraph, UniDraw and some other frameworks. An introductory part explains the basic terminology and concepts.

[Lorenz94] Lorenz M, and J. Kid. Object-Oriented Software Metrics - A practical guide. Englewood Cliffs : Prentice Hall. 1984

This reference is a short book on practicing object-oriented software metrics. The book selects a suite of object-oriented design metrics and several object-oriented projects developed in Smalltalk and C++. Metrics data for the projects is collected and analyzed. The book follows a template pattern to describe the evaluation and analysis of all metrics. An automated tool is used to collect the metrics data. This reference was one of the earliest books showing application of object-oriented metrics from practitioners' perspective.

[McConnell96] McConnell, Steve, Rapid Development, Redmond, Microsoft Press, 1996.

McConnell's book has already become a classic in software management. It is probably the most comprehensive collection of practical software management advice available today. It covers a variety of development methodologies, although its treatment of object oriented issues is sparse. It stands in contrast to books like Humphrey's Managing the Software Process in that it does not assume its readers are part of a large defense contracting organization. This is essential reading for software developers and managers.

[McTaggart94] McTaggart, J., P. Kontes, and M. Mankins. The Value Imperative. The Free Press, New York, NY, 1994.

This book provides a complete exposition of the value based approach to business strategy. A presentation of the governing objective of economic value maximization for a corporation is made, and a complete strategic framework is developed to assist corporate management in the pursuit of this governing objective.

[Meyers92] Meyers, S. Effective C++, Addison Wesley Longman, 1992.

Known as the "50 ways" book, this slim Scott Meyers volume and it's second edition have become a standard reference for C++ programmers. These simple guidelines call out the most frequent mistakes in C++ design and implementation, mistakes which weaken the execution and maintainability of C++ programs. Each of the 50 mistakes are defined, the resulting problems discussed and solutions explained. This is the book which inspired me to write my article on guidelines for framework interface usability. Highly recommended.

[Pree95] Pree, W. Design Patterns for Object-Oriented Software Development. Addison Wesley Longman, ACM Press, 1995.

The book describes in detail the few essential (framework) design patterns of the Gang-of-Four (GoF) pattern catalog. It first builds a conceptual and terminological base and goes on to discuss how design patterns constitute a minimal yet sufficient means to meet the goal of capturing and communicating the design of complex object-oriented systems. Numerous examples, an overview of the roots of design pattern approaches, and an in-depth case study illustrate how design patterns meet that goal.

This book describes the concept of metapatterns. Metapatterns are envisioned as means for describing design patterns and framework designs. The book describes how to apply object-oriented programming and various pattern approaches to the task of developing frameworks. Metapatterns are considered advanced abstractions that actively support the design of frameworks. Two basic metapatterns describes the fundamental principles: narrow inheritance hierarchies and the template-hook metaphor. On this basis seven compositional metapatterns are described. Each metapattern describes a configuration of one or two classes with a template and a hook method. The classes are related differently using inheritance and reference. A vision of how metapatterns can be applied together with object-oriented analysis and design, as well as a vision of how metapatterns can be supported by programming tools are described.

[Pree96] Pree W. Framework Patterns. New York, NY: SIGS Books, 1996.

The book first discusses several object-oriented and conventional ways to produce flexible software, focusing on the concepts underlying frameworks. A case study and examples in Java demonstrate how hot spot cards and hot-spot-driven design help to reduce the number of framework design iterations. Overall, the book sketches how to fill the gap between the early activities in the development process and the design/implementation activities.

[Prins96] Prins, R. Developing Business Objects. McGraw Hill, 1996.

This is an important book due to its treatment of Object-Oriented Software Engineering from a purely business-oriented perspective. Prins work provides a pragmatic look at the pitfalls where theory has failed to address the real issues of solving business problems with objects. That reuse, polymorphism, and inheritance are useful, but these concepts are abstract and that for business objects to be adopted widely, there needs to be a more comprehensive science of the type of objects used in business applications. His treatment of business rules and workflow is particularly useful, and he provides clarification of many other characteristics of systems that utilize business objects.

[Rumbaugh91] Rumbaugh J., M. Blaha, W. Premerlani, F. Eddy and W. Lorensen. Object-Oriented Modeling and Design, Englewood Cliffs, N.J.: Prentice Hall, 1991.

Rumbaugh's book is a classic in object modeling and design. It introduces the widely used OMT modeling notation. It includes detailed sections on static, dynamic, and functional object models. It pays attention to the areas of analysis, system design, and special considerations for object design. It also covers various aspects of implementation, including interfaces with non-object-oriented languages and databases.

[Schäfer94] Schäfer, W., R. Prieto-Diaz, M. Matsumoto, Software Reusability, Ellis-Horwood Ltd., 1994.

The book presents a number of chapters about different software reuse topics. Especially, it provides a comprehensive overview of existing domain analysis techniques.

[Shaw-Garlan96] Shaw, M. and D. Garlan, Software Architecture - Perspectives on an Emerging Discipline, Prentice-Hall, Upper Saddle River, NJ, 1996.

This book introduces a set of architectural styles and relates them to the burgeoning design patterns movement. The authors identify a variety of architectural patterns that can be used to describe the design and construction of very different software systems. These patterns provide guidance to the initial and ongoing development of a system as they help explain how forces can be resolved among the interaction of the system's various components.

[Trigeorgis96] Trigeorgis, L. Real Options. The MIT Press, Cambridge, MA, 1996.

One of the best and most complete recent books on the application of option pricing theory to real investments. The book covers every important topic in real options: history, derivation of major results in option pricing theory, continuous and discrete approaches, applications, integration with strategic principles, computational problems in option evaluation, conceptual issues in the application of option pricing theory to real investments.

2) Theme Issues

[Fayad95] Fayad, M. E. and W.T. Tsai, "Object-Oriented Experiences and Future Trends." Communications of the ACM, (October, 1995).

This theme issue discusses real-life experiences in object-oriented applications. Guest editors Mohamed Fayad, and Wei-Tek Tsai have assembled a group of authors who share the lessons they have learned from transitioning to object-oriented technology in their work environments. Their stories offer a stark look at the benefits and perils of shifting to object-oriented software development as reflected in some very ambitious projects. These articles should be most enlightening to mangers facing similar commitments.

The object-oriented experiences explored in this theme issue focus on lessons learned and applications gained from transitioning and applying object-oriented technology. These lessons are presented from two distinct perspectives:

Managerial. Describes the lessons learned during the transition of a sizable team of 150 developers to object-oriented technology.

Technical. Douglas Schmidt describes the lessons learned from applying a design pattern-based reuse strategy to develop OO software frameworks for several distributed systems in Ericsson and Motorola's IRIDIUM project and Kodak's Health Imaging Systems. David Kung contributes the lessons learned from developing an OO testing and maintenance environment. Charles Norton describes their experiences with FORTRAN 90 and C++ in developing OO Parallel Computation for Plasma PIC Simulation.

The theme issue contains four articles:

    1. Berg, William, Marshall Cline, and Mike Girou, "Lessons Learned from the OS/400 OO project." 54-64.
    2. Schmidt, Douglas C., "Using Patterns to Develop Reusable Object-Oriented Communication Software." 65-74.
    3. Kung, David, Jerry Gao, Pei Hsia, Yasufumi Toyoshima, Chris Chen, Young-Si Kim, and Young-Kee Song, "Developing an Object-Oriented Software Testing and Maintenance Environment." 75-87.
    4. Norton Charles D., Boleslaw K. Szymanski, and Viktor K. Decyk, "Object-Oriented Parallel Computation for Plasma Simulation." 88-100

[Fayad96] Fayad, M.E. and M. Cline, "Managing Object-Oriented Software Development." IEEE Computer, (September 1996), 26-31.

This issue provides object-oriented education for both managers and developers. The authors have distilled management practices and techniques from experiences in more than 100 object-oriented projects and explored new practices. The theme issue covers many ways that object-oriented complicates the project manager's role in such areas as planning, staffing, training, scheduling, cost estimation, documentation, development, legacy systems, and metrics. Theme features six articles:

    1. Sadr Babak, and Patricia J. Dousette, "An OO Project Management Strategy." 33-38.
    2. Williams, John D., " Managing Iteration in OO Projects." 39-43.
    3. Moser, Simon, "The Effect of Object-Oriented Frameworks on developer Productivity." 45-51.
    4. Sparks, Steve, Kevin Benner, and Chris Faris "Managing Object-Oriented Framework Reuse" 52-61.
    5. Corriveau, Jean-Pierre, "Traceability Process for OO Projects." 63-68.
    6. Shaw, Kevin, Maria Cobb, Miyi Chung, and David Arctur, "Managing the US Navy's First OO Digital Mapping Project." 69-74.

The theme issue has three side bars:

    1. Cockburn, Alistair, "Toward a Risk Management Catalog." 28-29.
    2. Kerth, Norman L., "The Two Prime Reasons OO Project Fail." 30.
    3. Schumacher, Macro, and Doug Layman, "Object Factory: Systematic Management of Object-Oriented Projects." 56-57.

[Fayad97] Fayad, M.E. and D. Schmidt, "Object-Oriented Application Frameworks." Communications of the ACM, (October 1997).

The articles in this theme issue describe how object-oriented application frameworks provide a powerful vehicle for reuse, as well as a way to capture the essence of successful patterns, architectures, components, policies, services, and programming mechanisms. The lead article, "Object-Oriented Application Frameworks" provides an extensive overview to the topic and future trends. The feature articles leads off with "Framework Development for Large Systems'' by Dirk Baumer, Guido Gryczan, Rolf Knoll, Carola Lilienthal, Dirk Riehle, and Heinz Zullighoven. These authors draw on their experience developing large-scale industrial banking projects to present concepts and techniques for domain partitioning, framework layering and framework construction. The second feature article, "Evolving Custom-Made Applications into Domain-Specific Frameworks" by Wim Codenie, Koen DeHondt, Patrick Steyaert, Arlette Vercammen discusses solutions to common framework development challenges such as avoiding the proliferation of versions, estimating effort, and alleviating the tendency towards architectural drift.

The theme section also contains several short articles, starting with "Patterns, Frameworks, and Components" by Ralph Johnson, which compares and contrasts frameworks with other object-oriented reuse techniques such as patterns and components. The second short article is "An Adaptive Framework for Developing Multimedia Software Components" by Edward Posnak, Greg Lavender, and Harrick Vin and describes a framework that simplifies the development of dynamically adaptive multimedia software components by promoting the reuse of code, design patterns, and domain expertise. The next short article is "Frameworks Design by Systematic Generalization with Hot Spots and Patterns" by Hans Albrecht Schmid, which presents a systematic method for designing frameworks based on identifying hot spots, which capture key sources of variation in an application domain. Serge Demeyer, Theo Meijler, Oscar Nierstrasz, and Patrick Steyaert also focus on hot spots in their article, "Design Guidelines for Tailorable Frameworks," which presents design guidelines to develop frameworks for open systems.

Several case studies are also covered in the theme issues, including "The Framework Life Span: a Case Study for Flexible Manufacturing Systems" by A. Aarsten, Davide Brugali, and G. Menga, which highlights the relationships between application frameworks, patterns, and pattern languages in the domain of manufacturing systems. Likewise, the SEMATECH CIM Framework, by David Doscher and Robert Hodges describes the structure of a framework for computer integrated manufacturing of semiconductors. In addition, Adele Goldberg, Steve Abell, and David Leibs describe LearningWorks, which is a framework for exploring ideas about computing and software system construction.

Finally, the theme section contains one sidebar: "Lessons Learned Building Reusable OO Frameworks for Distributed Software" by Schmidt and Fayad.

The articles in this theme issue reinforce the guest editors' belief that object-oriented application frameworks will be at the core of leading-edge software technology in the twenty-first century. As software systems become increasingly complex, object-oriented application frameworks are becoming increasingly important for industry and academia. The extensive focus on application frameworks in the object-oriented community offers software developers an important vehicle for reuse and a means to capture the essence of successful patterns, architectures, components, and programming mechanisms.

The good news is that frameworks are becoming mainstream and developers at all levels are increasingly adopting and succeeding with framework technologies. However, OO application frameworks are ultimately only as good as the people who build and use them. Creating robust, efficient, and reusable application frameworks requires development teams with a wide range of skills. We need expert analysts and designers who have mastered patterns, software architectures, and protocols in order to alleviate the inherent and accidental complexities of complex software. Likewise, we need expert middleware developers who can implement these patterns, architectures, and protocols within reusable frameworks. In addition, we need application programmers who have the motivation, skills, and training to learn how to use these frameworks effectively. We encourage you to get involved with others working on frameworks by attending conferences, participating in online mailing lists and newsgroups, and contributing your insights and experience. The theme issue contains the following articles:

    • Johnson, Ralph E., "Framework = Component + Patterns." 39-42.
    • Posnak, E.J., R. Greg Lavender, and Harrick M. Vin, "An Adaptive Framework for: Developing Multimedia Software Components." 43-47.
    • Schmid, Hans Albrecht, " Systematic Framework Design by Generalization." 48-51.
    • Baumer, D., Guido Gryczan, Rolf Knoll, Carola Lilenthal, Dirk Riehle, and Heinz Zullighoven, "Framework Development for Large Systems." 52-59.
    • Demeyer, S., Theo Dirk Meijler, Oscar Nierstrasz, and Patrick Steyaert, "Design Guidelines for: Tailorable Frameworks." 60-64.
    • Brugali, D., Giuseppe Menga, and Amund Aarsten, "The Framework Life Span." 65-68.

[Fayad99] Fayad, M.E. "Application Frameworks." ACM Computing Surveys, (March, 1999).

This symposium is similar to the Communication of the ACM's theme issue on "Object Oriented Application Framework." October 1997, and it contains 35+ short articles.

[Schmidt96] Schmidt, D., M.E. Fayad and R. Johnson, "Software Patterns." Communications of the ACM, (October 1996).

The concept of software patterns has garnered a great deal of industry attention as it systematically resolves difficult dilemmas that frequently occur in the analysis, design, and programming of software systems. It is particularly relevant today as software becomes increasingly complex. The reuse factor offers obvious benefits. But identifying and reapplying software patterns can introduce additional pitfalls as well. The challenge is to document those patterns used by successful developers.

This theme issue features some of those success stories. Guest editors Douglas Schmidt, Mohamed Fayad, and Ralph Johnson have secured some of the leaders in the field to present the latest trends in software patterns. The comprehensive articles in this theme issue present pattern plots focusing on efficient, reliable, scalable, concurrent, parallel, and distributed programming.

This theme issue is geared toward the broad-based community of software professionals involved in the research and development of complex systems. The guest editors contend the concepts presented here will affect the development of new software systems in the next five years.

The theme of this issue is "Software Patterns" and describes some successful solutions to common software design and management problems. The long term goal is to develop handbooks for software engineers. Though we are a long way from that goal, patterns have proven useful in the short term to help people reuse successful practices. Not only do patterns teach useful techniques, they help people communicate better, and they help people reason about what they do and why. Theme features five articles:

    1. Cockburn, Alistair, "The Interaction of Social Issues and Software Architecture." 40-46.
    2. Aarsten, Amund, David Brugali, and Giuseppe Menga, "Designing Concurrent and Distributed Control System." 50-58.
    3. Goldfedder, Brandon, and Linda Rising, "A Training Experience with Patterns." 60-64.
    4. Islam, Nayeem, and Murthy Devarakonda, "An Essential Design Pattern for Fault-Tolerant Distributed State Sharing." 65-74.
    5. McKenney, Paul E., "Selecting Locking Primitives for Parallel Programming." 75-82.

and two side bars:

    1. Cline, P. Marshall, "The Pros and Cons of Adopting and Applying Design Patterns in the Real World." 47-49.
    2. Fayad, M.E., and Marshall P. Cline, "Aspects of Software Adaptability." 58-59.

3) Magazine/Journal Articles

[Alencar98] P.S.C. Alencar, D.D. Cowan and C.J.P. Lucena, "A Logical Theory Of Interfaces And Objects.'' revised for IEEE Transactions on Software Engineering, 1998.

This paper motivates and describes a logic-based approach to specifying and reasoning about interfaces and objects, that focuses on separation of concerns issues. The approach is based on the Abstract Design View (ADV), a software design model for object-oriented systems. The model was originally introduced to characterize in an informal and practical setting a clear separation between objects, called Abstract Design Objects (ADOs), and their interfaces (ADVs). The objects capture the basic concern (the fundamental computation algorithm and basic functionality as it is relevant to an application domain), while the interfaces capture special concerns such as user interface, control, timing, and distribution. First, the paper analyzes the ADV design model in order to characterize precisely the interfaces, their associated objects, and the relationship between them. This relationship, called views-a, is formally characterized through its semantic properties. Then, the authors present one possible approach to formalizing interfaces, objects, and the views-a' relationship. The central mathematical tools used for this purpose are temporal logic, and some tools from category theory.

The formal approach is illustrated by examples that show how the interface and related objects, and the views-a relationship can be used in object-oriented specifications. Once the designer identifies the concerns, the theory provides a formal means to define, separate, and use interfaces to capture the specific concerns in object-oriented design. Further, the theory provides a formal means to combine the interfaces that capture the concerns.

The paper also shows how the theory promotes understandability, provides design guidance, and enables the designer to perform relevant analysis activities while modeling with separation of concerns in mind. The authors also show how the theory can be used to derive dynamic and structural properties of the interface objects and the views-a relationship. In particular, you can use the theory to derive global properties of interfaces that capture special concerns from the local properties of their related objects.

[Al-Shaer99] Al-Shaer E., M.E. Fayad, H. Abdel-Wahab, and K. Maly. "Adaptive Object-Oriented Filtering Framework for Event Management Applications." ACM Computing Surveys, March 1999.

The goal of this paper is to describe the object-oriented design and implementation of an adaptive event filtering framework which can be integrated and reused efficiently to develop event management applications for various domain environments. In the authors' approach, the event filtering framework captures the common components and design patterns of event management in different domains. The major contribution of this work is to provide a flexible event filtering framework that can be efficiently adapted to different domain-specific requirements and with minimal development effort. This paper also presents examples of using the event filtering framework for developing event management applications in different domains.

[Bansiya 97b] Bansiya, J. and C. Davis. "Using Automated Metrics to Track Object-Oriented Development." Dr. Dobb's Journal, 272 (December 1997).

This paper describes the design and development of an automated tool, QMOOD++ (Quality Metrics for Object-Oriented Development represented in C++), that supports the assessment and analysis of 30 plus object-oriented design metrics. The tool has been developed to make it easy to collect metrics data in real world projects and has a repository in which metric data of analyzed projects can be stored and retrieved later for comparisons. QMOOD++ is a comprehensive, multi-user, multi-threaded, integrated MS Windows 95 and NT-based tool for object-oriented metrics data collection, analysis, and comparisons. The paper also discusses the results and analysis from its use on two large commercial products.

[Bansiya98] Bansiya, J. and C. Davis. "A Quality Assessment Model For Object-Oriented Designs." IEEE Transactions on Software Engineering, 1998.

This paper describes a model for assessing high-level external quality attributes such as reusability, functionality, and flexibility of object-oriented designs based on the internal properties of design components. In this model, tangible design properties (both structural and functional) of object-oriented design components such as classes, are used to generate object-oriented design metrics, which evaluate the extents of the tangible properties in the design components. The tangible design properties of components and their manifestation in a product contribute to design characteristics, which are high-level software properties (not directly tangible) such as abstraction, encapsulation, coupling, and cohesion. The model relates object-oriented design characteristics to a set of high-level external quality attributes using empirical and anecdotal information. The relationship, or links, from design characteristics to external quality attributes are weighted based on the importance of their contribution to a particular quality attribute. The model is validated by using empirical and expert opinion to compare with the model results from several large commercial object-oriented systems. A key feature of the model is its flexibility. The model can be easily modified to include different suites of design metrics, design properties, linking relationships, and quality attributes, thus providing a practical object-oriented design quality assessment model adaptable to a variety of demands.

[Basili96] Basili, B., L. Briand, and W.L. Melo. "A Validation Of Object-Oriented Metrics As Quality Indicators." IEEE Transactions on Software Engineering, 22, no. 10: 751-761, (October 1996).

This paper presents the results of a study in which the authors empirically investigated the suite of object-oriented design metrics introduced by Chidamber and Kemerer. More specifically, the authors assess the metrics as predictors of fault-prone classes and determine whether the metrics can be used as early quality indicators. This study was complementary to the work described of Li and Heney, where the same suite of metrics had been used to assess frequencies of maintenance changes to classes. To perform the validation, data was collected from the development of eight medium-sized information management systems based on identical requirements. All eight projects were developed using a sequential life cycle model, a well-known OO analysis/design method and the C++ programming language. Based on empirical and quantitative analysis, the advantages and drawbacks of the object-oriented metrics are discussed.

[Bäumer97b] Bäumer, D., G. Gryczan, R. Knoll, C. Lilienthal, D. Riehle, and H. Züllighoven. "Framework Development for Large Systems." Communications of the ACM Theme Issue on Object-Oriented Application Frameworks, Mohamed E. Fayad and Douglas Schmidt, eds. 40, no. 10: 52-59 (October 1997).

Drawing on experience with large-scale industrial banking projects, this paper presents concepts and techniques for domain partitioning, framework layering, and framework construction. In particular, it discusses how domain aspects relate to framework structure, how frameworks are layered to accommodate domain needs, and how the resulting framework layers are integrated without tight coupling.

[Bergmans 96] Bergmans L. and M. Aksit, "Composing Real-Time and Synchronization Constraints." Journal of Parallel and Distributed Computing 36, 32-52, 1996.

In the past years, a considerable number of concurrent and real-time object-oriented languages have been introduced. However, composing and reusing object-oriented programs with both synchronization and real-time constraints has not been addressed, even though most real-world systems are concurrent and have some real-time aspects. In short, they fail to provide composable synchronization and real-time constraints results in so-called synchronization and real-time inheritance anomalies. This implies that the reuse and composition of real-time and concurrent objects is unnecessarily limited.

To analyze these inheritance anomalies, this paper presents generic object-oriented models for synchronization and real-time constraint specifications. From these models a set of requirements that are necessary to avoid the inheritance anomaly problem are identified. The paper then presents an extension to the object-oriented model with composition filters. This modular and orthogonal extension allow for overcoming both synchronization and real-time constraint inheritance anomalies.

[Booch94] Booch, G. "Designing an Application Framework." Dr. Dobb's Journal 19, no. 2: (February 1994).

In this article Booch presents his strategies for building flexible, general-purpose foundation-class libraries that enable you to make the most of code reuse.

[Brooks87] Brooks, Fredrick P. "No Silver Bullet: Essence and Accidents of Software Engineering." IEEE Computer, April 1987.

This article expresses what experienced practitioners understand: developing software is inherently difficult, and there are no magic ways to make software simple to produce. He predicted that there would be no technology in the coming decade that would give an order-of-magnitude improvement in software development. Although written over a decade ago, Brooks' thesis is as hotly discussed and debated today as it was when it was published. The article and a retrospective commentary on it are included in the 20th anniversary reissue of his classic book, The Mythical Man-Month. His conclusion is that he was right about his prediction. This is one of the foundational articles of software engineering.

[Campbell-Islam93] Campbell, R., and Islam, N. "A Technique For Documenting The Framework Of An Object-Oriented System." Computing Systems, 6:363-389, 1993.

This paper discusses the various aspects of an object-oriented framework that need to be documented and considers possible ways that could be used for each. Its focus is on issues that arise in distributed systems such as synchronization problems.

[Chidamber94] Chidamber, S.R. and C.F. Kemerer. "A Metrics Suite For Object-Oriented Design." IEEE Transactions on Software Engineering. v. 20, no. 6: 476-493 (June 1994).

This paper is one of the most frequently referred to works in object-oriented design measurement. The work presented addresses the need for metrics use in the object-oriented approach through the development and implementation of a new suite of metrics for object-oriented design. Six design metrics are developed, and then analytically evaluated against Weyuker's proposed set of measurement principles. An automated data collection tool was then developed and implemented to collect and empirical sample of these metrics at two field sites in order to demonstrate their feasibility and suggest ways in which managers may use these metrics for process improvement.

[Clemons91] Clemons, E.K. "Evaluation of Strategic Investments in Information Technology." Communications of the ACM 34, no. 1 (January 1991): 22-36.

One of the first articles on strategic IT investment to appear in the mainstream computer science literature, and one of the first to discuss the difficulties of evaluating the economic benefits of information technology. The author presents a series of case studies illustrating a set of lessons learned that have helped in the construction of a business case for strategic systems: ranking of alternatives; working with quantitative data; balancing different forms of risk; active risk management; central role of critical resources; seeking a sustainable cooperative advantage; adequate consideration of downside risks. The decision tree technique of valuation is presented (a precursor to modern contingent claims analysis) and is still very useful.

[Cowan-Lucena95] D.D. Cowan and C.J.P. Lucena, "Abstract Data Views: An Interface Specification Concept to Enhance Design.'' IEEE Transactions on Software Engineering, 21(3), March 1995.

The Abstract data view (ADV) design model was originally created to specify clearly and formally the separation of the user interface from the application component of a software system, and to provide a systematic design method that is independent of specific application environments. Such a method should lead to a high degree of reuse of designs for both interface and application components. The material in this paper extends the concept of ADVs to encompass the general specification of interfaces between applications components in the same or different computing environments. This approach to specifying interfaces clearly separates the application components from each other, since they do not need to know how they are used, or how they obtain services from other application components. Thus, application components called abstract data objects (ADOs) in this paper, are designed to minimize knowledge of the environment in which they are used and should be more amenable to reuse.

[Demeyer97] Demeyer, S., T. D. Meijler, O. Nierstrasz, and P. Steyaert. "Design Guidelines for Tailorable Frameworks." Communications of the ACM, Theme Issue on Object-Oriented Application Frameworks, Mohamed E. Fayad and Douglas Schmidt, eds., 40, no.10, October 1997.This article describes how a framework's hot spots represent axes of variability that span a multidimensional space in which all application programs are arranged. Provided that all hot spots are independent of each other, application programs can differ in as many respects as there are dimensions. However, if certain hot spots are not independent, the number of axes of variability is smaller, and dependencies occur between the classes involved. The framework must manage these class dependencies.

[Fayad96] Fayad, M.E., W.T. Tsai, and M.L. Fulghum, "Transition to Object-Oriented Software Development." Communications of The ACM, 39, no. 2, (February 1996), 108-121.

This article addresses several managerial topics critical to the success of OO software development projects. The OO transition process includes three stages: (1) planning and pre-project (2) technology insertion (3) project management The planning and pre-project stage includes activities which condition the development environment for project start-up. The technology insertion stage includes activities which identify and plan for the required OO resources. The project management stage includes activities which monitor and provide direction to the project.

[Fayad-Cline96] Fayad, M.E. and M. Cline. "Aspects of Software Adaptability." Communications of the ACM, Vol. 39, No. 10, October 1996, 58-59.

This article provides guidelines for engineering adaptability in software systems and discusses three primary requirements for building good software.

[Fayad-Hamu98] Fayad, M. E. and D. Hamu. "Achieve Bottom-Line Improvement with Enterprise Frameworks." Communications of the ACM, August 1998.

This paper discusses the strategic budgetary, marketing, technical, and managerial advantages that impact an organization's bottom-line and its ability to support and adapt to changes in the marketplace. It also describes the economic impact of the enterprise frameworks.

[Fayad-Hamu99] Fayad, M.E. and D. Hamu. "Object-Oriented Enterprise Frameworks." will appear in IEEE Computer, 1999, to appear.

This article examines framework selection guidelines. First, the authors identify some of the factors that contribute to the complexity and cost of enterprise systems. Then the article identifies the important characteristics of these frameworks and provides detailed guidelines for the selection of frameworks and framework vendors. Finally, the article demonstrates that frameworks reflect the next stage in the evolution of software tools and application environments. As such, it is argued, in general, that enterprise frameworks should be purchased rather than developed.

[Garzotto93] Garzotto, F., Paolini, P., Schwabe, D. "HDM: A Model-Based Approach to Hypermedia Application Design." ACM Trans. Info. Syst. 11 (1), 1993, 1-26.

The authors present HDM (the Hypermedia Design Method), a systematic approach to describe hypermedia applications in an implementation-independent way; they use an extension of the well-known entity relationships approach. HDM has been the first hypertext design method widely used by the community.

[Johnson-Foote88] Johnson, R. E. and B. Foote. "Designing Reusable Classes." Journal of Object-Oriented Programming, v2, no 1, (January-February 1988).

This is one of the earliest papers clearly explaining the basic concept of object-oriented frameworks, and was at least partly responsible for the enormous increase in interest in OO frameworks. This paper describes the concept of an object-oriented framework as a set of reusable classes. It provides examples of the basic design principles and implementation mechanisms that are utilized in the design and application of frameworks. Implementation mechanisms from the object-oriented programming paradigm are described in a reuse context: data abstraction, inheritance, and polymorphism. Important design principles in the context of reusable software are presented: abstract designs, domains of related problems, reuse of larger structures than classes, and whitebox and blackbox design. The paper also addresses methodological issues such as the software life cycle. Finally the paper provides concrete guidance for the development of reusable systems as a set of rules.

[Krasner-Pope88] Krasner, G.E. and S.T. Pope. "A Cookbook for Using the Model-View-Controller User Interface Paradigm in Smalltalk-80." Journal of Object-Oriented Programming v1, v3 (August-September 1988): 26-49.

Krasner and Pope provide a general description of the Smalltalk Model-View-Controller (MVC) framework. The major components of the framework are discussed, along with their roles within the framework. Their tutorial approach also consists of a number of examples that show how the framework can be used.

[Li95] Li, W., S. Henry, D. Kafury, and R. Schulman. "Measuring Object-Oriented Design." Journal of Object-Oriented Programming, 48-55 (July/August 1995).

Li and Henry used and extended the suite of object-oriented design metrics proposed by Chidamber and Kemerer to study maintainability. They define several additional metrics for class coupling and class interface size. They also provide different interpretation and computation for the lack of cohesion metric. The suite of metrics proposed is validated on two commercial products implemented in Classic-Ada.

[Liskov-Wing94] Liskov, B., and Wing, J., "A Behavioral Notion of Subtyping." ACM Trans. on Prog. Languages and Sys., 16:1811-1841, 1994.

This is the classic paper that defines the well known idea of behavioral subtyping (often called the Liskov Substitution Principle). It allows us to inherit the specification of a base class into a derived class, but doesn't allow us to arrive at the richer behavior exhibited by template methods (in the base class) calling hook methods that are defined only in the derived class.

[Magee94] Magee, J., Dulay, N. and J. Kramer. "Regis: A Constructive Development Environment for Distributed Programs." IEE/IOP/BCS Distributed Systems Engineering Journal 1(5), 1994: 304-312.

Regis is a programming environment aimed at supporting the development and execution of distributed programs. It embodies a constructive approach to the development of programs based on separating program structure from communication and computation. The emphasis is on constructing programs from multiple parallel computational components which cooperate to achieve the overall goal. The environment is designed to easily accommodate multiple communication mechanisms and primitives. Both the computational and communication elements of Regis programs are programmed in the object-oriented programming language C++. The elements are combined into distributed programs using the configuration language Darwin. The paper describes programming in Regis through a set of small example programs drawn from the implementation of an Active Badge system.

[Manns98] Manns, Mary Lynn; Sharp, Helen; McLaughlin, Phil and Prieto, Maximo. "Capturing Successful Practices in OT Education and Training. " In Journal of Object Oriented Programming 11, No. 1, March/April 1998, 29-34.

This article is a summary about the pedagogical patterns project, which collects contributions from academic and industry educators. These contributions are analyzed in a pattern format to document teaching strategies.

[Martin96] Martin, R. "The Open Closed Principle." C++ Report (January1996).

This article presents a basic principle of good software design, that a class or system should be designed in such a way that it be open for extension and closed for modification. Heeding this advice might lead designers to prefer inheritance or modification by overriding existing behavior in derived classes over changing the implementation of an existing class when designing for extensibility and maintainability.

[Mattsson99] Mattsson, M., J. Bosch, and M.E. Fayad. "Framework Integration Problems, Causes, and Solutions." The Communications of the ACM, 1998.

This paper provides a significant collection of common framework composition problems encountered in application development together with an analytical discussion of the underlying causes for the problems. Based on the composition problems and the identified primary causes the paper describes and analyzes existing solution approaches and their limitations.

[Mili90] Hafedh Mili, John Sibert, and Yaov Intrator, "An Object-Oriented Model Based on Relations.'' Journal of Systems and Software, vol. 12, May 1990, 139-155.

This paper present a model of constraints as special objects whose purpose is to define and enforce behavioral constraints between interacting objects. Constraints are shown as the building blocs for composite objects.

[Mili95] Hafedh Mili, Fatma Mili, and Ali Mili, "Reusing Software: Issues and Research Directions." IEEE Transactions on SE, vol. 21, No. 6, June 1995, 528-562.

This paper is an extensive (150+ references) survey on software reuse, touching all aspects of software reuse, from the managerial, to the economic, to the technical (search, adaptation, and integration). It includes, among other things, a mini-tutorial on object-orientation, and on reuse issues in object-orientation.

[Mili96] Hafedh Mili, "On Behavioral Descriptions in OO Modeling.'' Journal of Systems and Software, May 1996, vol. 34, 105-121.

This paper looks at various kinds of behavioral compositions mechanisms, and shows that constraints may be used to implement all kinds of behavioral compositions, provided that the proper message handling protocol is used. It also shows the conditions under which behaviors that compute values AND modify the state of an object may be serialized into behaviors that do either/or, and that, individually, leave the object in a valid state. This is one way of defining canonical behaviors as the set of methods that are an object's minimal services. This provides an after-the-fact rationalization of the constraints model described in [Mili90].

[Pfleeger97] Pfleeger, S.L., R. Jeffery, B. Curtis, and B. Kitchenham. "Status report on software measurement." IEEE Software, 14, no. 2: (March 1997).

This reference reflects the discussions at the Second International Software Metrics Symposium, which the authors organized. The purpose of the symposium is to encourage researchers and practitioners to share their views, problems, and needs, and to work together to define future activities that will address common goals. Discussion at the symposium revealed that participants had different and sometimes conflicting motivation for software measurement. The authors explore the gaps between measurement research and measurement practice. This status report describes the state of research, the state of art, and the state of practice of software measurement. Topics covered include measurement uses and abuses, theory, models, process, and products.

[Schmid96a] Schmid, H.A. "Design Patterns for Constructing the Hot Spots of a Manufacturing Framework." Journal of Object-Oriented Programming, l9, no. 3 (June 96): 25-37

This paper generalizes from the experience with the design of a manufacturing framework for automated control of a subdomain of manufacturing systems, and shows why and how design patterns are, in particular, useful for framework design. It presents a design approach that proceeds as follows:

    1. The variable aspects, called hot spots, of the manufacturing (sub)domain are collected by a domain analysis.
    2. An application-specific class model is derived by an object-oriented analysis of a particular manufacturing cell.
    3. A sequence of transformation steps is performed on this class model, one per hot spot. Each transformation step creates a hot spot subsystem. The detail structure of it is determined by the design pattern that covers in a transparent way the particular kind of variability and flexibility required by the hot spot. For each hot spot, the paper describes the variable aspect of the hot spot, the problems related to the variability, the requirements to be met by the solution, and the design pattern, the base class and of the derived classes, and the cooperation with other classes of the hot spot subsystem

The resulting class structure allows a transparent exchange of each hot spot alternative against one of the other ones. Thus, each application of the considered manufacturing subdomain may be created by selecting, configuring, and parameterizing of the framework classes.

[Schmid96b] Schmid, H.A. "Creating Applications from Components: A Manufacturing Framework Design." IEEE Software, 13, no.6, (November 1996): 67-75.

The paper presents the structure of the DSBB-framework OSEFA for automated part-processing manufacturing. In the given application domain, the manufacturing processing logic is executed in a variety of configurations. A main difficulty in constructing a manufacturing framework is that even when the abstract manufacturing logic is identical for different configurations the concrete manufacturing logic differs strongly for them. An object-oriented analysis of a particular manufacturing configuration delivers a class model that provides for a very limited degree of reusability. A domain analysis identifies three main variable aspects of the manufacturing subdomain. For each aspect, the class model is generalized by a transformation, until it provides the reusability, respectively flexibility required for a framework.

The presented transformations include: device generalization, respectively, standardization; device independence; and manufacturing logic abstraction create a layered architecture for the framework with the layers: specific machines and devices, generalized machines and devices, device-independent domain-specific entities, and manufacturing processing logic. The resulting configurable and parameterizable framework architecture allows to map a uniform manufacturing processing logic to the variety of configurations of the subdomain. The described transformations are applicable to a wide range of domains with similar variability characteristics, same as the resulting layer structure for domain-specific frameworks.

[Schmidt-Fayad97] Schmidt, D. and M.E. Fayad. "Lessons Learned Building Reusable OO Frameworks for Distributed Software." Communications of the ACM, Vol. 40, No. 10, October 1997, 85-87.

This paper discusses briefly lessons learned from the authors varied experiences building and adapting of several reusable object-oriented application frameworks to real-world business applications in the complex distributed application domains.

[Sparks 96] S. Sparks, K. Benner and C. Faris, "Managing Object-Oriented Framework Reuse." IEEE Computer, In Theme Issue on Managing Object-Oriented Software Development, Mohamed E. Fayad and Marshall Cline, 29, no. 9, September 1996, 53-61.

This article describes a number of practical guidelines for a technical manager about problems that may occur in a framework-based software development project, as well as differences between a framework-based and a traditional development project.

[Wang99] Wang Y., G. King, M.E. Fayad, D. Patel, I. Court, G. Staples, and M. Ross. "On Built-in Test Reuse in OO Framework Design." ACM Computing Surveys, March 1999.

This paper extends software reusability from code and architecture to built-in tests (BITs) in object-oriented application framework development. Methods for embedding BITs at object and object-oriented framework levels are addressed. Behaviors of objects and object-oriented frameworks with BITs in the normal and test modes are analyzed. Systematic reuse methods of BITs in object-oriented framework development are provided. The most interesting development in the paper is that the BITs in object-oriented frameworks can be inherited and reused as that of code. Therefore testability and maintainability of the test-built-in object-oriented frameworks can be improved by the BIT approach. The BIT method can be used in analysis, design and coding of object-oriented application frameworks.

4) Thesis

[Bansiya 97a] Bansiya, J. "An Object-Oriented Design Quality Assessment Model." Ph.D. Thesis. The University of Alabama in Huntsville, 1997.

This dissertation describes a new hierarchical model for assessment of high-level design quality attributes in object-oriented designs. In this model, structural and behavioral design properties of classes, objects, and their relationships are evaluated using a suite of object-oriented design metrics. Design properties such as encapsulation, modularity, coupling, and cohesion, are shown to influence high-level quality attributes such as reusability, flexibility, and complexity. Empirical and anecdotal information is presented in defining relationships between design properties and individual quality attributes. The relationship or links from design properties to quality attributes are weighted in accordance with their influence and importance. Equations for the computation of quality attributes based on weighted design properties have been developed for the model. The model has been validated by using expert opinion to compare with the model results.

[Mattsson96] Mattsson, M. "Object-Oriented Frameworks--A Survey of Methodological Issues." Licentiate Thesis, LU-CS-TR: 96-167, Department of Computer Science, Lund University, 1996.

The licentiate thesis discusses the concept of object-oriented frameworks and surveys methodological issues related to frameworks, particularly framework development , framework usage and documentation of frameworks. The framework concept is discussed and compared to related concepts such as design patterns. Advantages and disadvantages together with different characterizations of frameworks as well as the framework development process, guidelines and important design elements for the development thereof are described. The maintenance aspect of frameworks is also addressed. Using frameworks is, from a methodological perspective, rarely investigated and the author proposes a method for framework-based application development. In addition existing approaches for framework Documentation, One of the most crucial aspects for successful reuse, are surveyed and discussed.

[Opdyke92] Opdyke, W.F. "Refactoring Object-Oriented Frameworks." Ph.D. thesis, University of Illinois at Urbana-Champaign, 1992

In the thesis Opdyke presents eight different refactorings, that is, ways of reorganizing software, and investigates the possibility of automating the task of refactoring. Three major refactorings are identified; refactoring to generalize, to specialize, and to capture aggregation and components.

5) Conferences/Chapters/Technical Reports

[Aksit 92b] Aksit M. and L. Bergmans. "Obstacles in Object-Oriented Software Development." Proceedings OOPSLA '92 Conference Proceedings, ACM SIGPLAN Notices, Vol. 27, No. 10, October 1992, 341-358.

This paper was one of the first publications to address a whole range of obstacles in the application of object-oriented software technology. Based on observations during the development of a large number of pilot applications a number of important obstacles were identified that were not addressed by methods and models at that time. The paper summarizes these obstacles and evaluates them with respect to the pilot applications. The obstacles are due partly to characteristics of analysis & design methods, and partly to the characteristics of the object-oriented model. Because both the object-oriented methods and (programming) models that are used in practice have not undergone significant evolution since, this paper is still relevant for both researchers and practitioners. Awareness of these obstacles can help software engineers to distinguish incidental modeling problems from inherent problems in the development approach.

[Alencar97] P.S.C. Alencar, D.D. Cowan, C.J.P. Lucena and M.A.V. Nelson, "An Approach to Hypermap-Based Applications.'' Proceedings of the Second International Symposium on Environmental Software Systems (ISESS'97), Whistler, British Columbia, 244-251, 1997.

Recent advances in interactive user interfaces and database technology are leading to a significant change in the role of maps in GIS systems. Maps are to become the start point for both spatial analysis and data recovery processes. In this paper the authors present an architecture for map-centered (or hypermap) applications that reflects this shift, assumes a direct and interactive interface to geographical and other (multimedia) data, and offers a stronger link between GIS and application-based models. Our proposed architecture is currently realized by a tool called Map Engine. Our approach is flexible enough to allow the existing system to be instantiated to a whole class of hypermap-based applications.

The approach and the tool have been validated on many real-world applications, including two that have also been developed using the system and are described in the paper: a heritage information application about the town of Blair, and an environmental application about the shore of Lake Ontario in the vicinity of East Toronto.

[Alencar97] P.S.C. Alencar, D.D. Cowan, C.J.P. Lucena and T. Nelson, "Viewpoints as an Evolutionary Approach to Software System Maintenance.'' Proceedings of the International Conference on Software Maintenance, Bari, Italy, 1997.

In this paper the authors describe a blackbox approach to software system evolution where viewpoints are used to alter a design without modifying the original system. A viewpoint is a model, possibly incomplete, of a domain from a given perspective. The authors discuss the views--an operator and its semantics, and then apply the concepts to the NACHOS file system as a substantial case study. The authors believe the approach can be applied to existing object-oriented software systems, and serve as an guide for developing systems which are more easily maintained. This case study is an example of an application of a more general transformational approach to software design and implementation.

[Andert94] Andert, G. "Object Frameworks in the Taligent OS." Proceedings of Compcon 94, IEEE CS Press, Los Alamitos, California, 1994.

The paper presents a brief overview of the TaligentOS and goes in detail on IO system, especially the SCSI interface design. In the paper the notion of Client, Framework and Ensemble is presented. Client being the code using the framework and the ensemble being an set of related components that plug into a framework to add a specific functionality. The Taligent OS is built on several interacting frameworks, instead of one monolithical framework.

[Arango93a] Arango, G. "Domain Analysis Methods." in Software Reusability, edited by W. Schaeffer, R. Prieto-Diaz and M. Matsumoto. Ellis Horwood, New York, 1993.

This paper describes and discusses the different approaches to domain analysis proposed by many authors. The author defines the key points for the comparison and discusses the main characteristics of a series of domain analysis methods. The author presents a common domain analysis process and the related activities resulting from the comparison of the methods outlined in the article.

[Arango93b] Arango, G., Schoen, E., and Pettengill, R. "A Process for Consolidating and Reusing Design Knowledge." In Proceedings of 15th International Conference on Software Engineering. IEEE Computer Press, Los Alamitos, CA, 1993, 231--242.

The authors introduce design notebooks that are hypermedia documents recording the design rationale of a system, and technical notebooks that record the necessary background knowledge about the environment of a system. For example, a technical notebook describing a device's physical characteristics is necessary for the design of a device driver.

[Bäumer97a] Bäumer, D. and D. Riehle. "Product Trader." Chapter 3 in Pattern Languages of Program Design 3. Reading, MA: Addison Wesley Longman, 1997.

This paper describes a new design pattern. It's purpose is to let clients create objects by naming an abstract superclass and by providing a specification. A Product Trader decouples the client from the product and thereby eases the adaptation, configuration and evolution of class hierarchies, frameworks and applications.

[Bäumer97c] Bäumer, D., D. Riehle, W. Siberski, and M. Wulf. "Role Object." In Proceedings of the 1997 Conference on Pattern Languages of Programs (PLoP '97). Technical Report WUCS-97-34. Washington University Dept. Of Computer Science. Paper 2.1, 1997.

This paper describes a new design pattern. It's purpose is to adapt an object to different clients' needs through transparently attached role objects, each one representing a role the object has to play in that client's context. The object manages its role set dynamically. By representing roles as individual objects, different contexts are kept separate and system configuration is simplified.

[Bäumer96] Bäumer, D., Knoll, R., Gryczan, G., Züllighoven, H. 1996. "Large Scale Object-Oriented Software-Development in a Banking Environment--An Experience Report." ECOOP'96--Object-Oriented Programming, 10th European Conference, ed. Pierre Cointe. Linz, Austria: Springer Verlag, 73-90: 1996.

This paper claims that combining object-oriented development with an evolutionary strategy which is called an application-oriented approach, will yield synergetic effects leading to a higher level of software quality, usability, and system acceptance. It describes the various ingredients of the approach which are unified under a common leitmotif with matching design metaphors. A series of major industrial software projects serves as an example and practical proof of the approach.

[Bosch97] Bosch, J. "Composition through Superimposition." in Object-Oriented Technology--ECOOP'97 Workshop Reader, J. Bosch, S. Mitchell (eds.), LNCS 1357, Springer-Verlag, 1997.

This paper discusses the various traditional techniques available for component adaptation, that is, copy-paste, inheritance, aggregation and wrapping, and analyses their weaknesses, that is, lack of reusability, efficiency, self problem and implementation overhead. Subsequently, the paper defines requirements for component adaptation techniques, that is, transparent, black-box, composable, configurable and reusable. Finally, the notion of superimposition is introduced as an approach to component adaptation that meets the requirements.

[Bowser95] Bowser, John, Granville Miller, and Thomas Pangborn. "Building Quality into Switching Software." In International Switching Software (ISS) :173-179, 1995.

This article presents a high level overview of the prototyping process used in BNR and Northern Telecom to develop switching software. Smalltalk was used as a prototyping language while Protel, a proprietary language, was used for development. The dual language approach ensured that the cross over from the prototype to development remained at the conceptual level. Prototypes used to develop switching software were classified as exploratory, interface, and validation prototypes.

[Buhr98] R.J.A. Buhr, D. Amyot, D. Quesnel, T. Gray, S. Mankovski. "High Level, Multi-Agent Prototypes from a Scenario-Path Notation: A Feature Interaction Example." Proceedings of the International Conference on the Practical Application of Agents and Multi-Agent Technology (PAAM), London, April 1998.

This paper provides an example of the use of UCMs to explain highly dynamic situations in agent systems, something that is very difficult with UML-style techniques without becoming bogged down in a lot of detail. The industrial co-authors (Gray, Mankovski) are enthusiastic about the approach.

[Diefenbruch-Meyer96] Diefenbruch, M. and T. Meyer. "On Formal Modeling and Verifying Performance Requirements of Distributed Systems." In Proceedings of the Second World Conference on Integrated Design and Process Technology, Austin, 1996.

In addition to functional requirements, also non-functional requirements (for example, response time, throughput, and so on.) have essential impact on the design of distributed systems. In this paper, the authors identify important bi-directional relations between the requirements stage and the design stage according to these performance related system properties. The authors present their framework for formalizing non-functional requirements and systematically transform them into a formal and consistent design model. Knowledge about the performance of the distributed system gained by simulation based performance analysis may then feedback to new insights in the requirements stage.

[Fayad-Hu98] Fayad, M.E. and Jinkun Hu. "Development of Object-Oriented Filtering Framework for Event Management Applications." TRCS-013, Computer Science, University of Nevada, June 1998.

This paper describes the development of object-oriented filtering framework for event management applications, and illustrates an e-mail application as a sample application built on top of the framework. This paper also discusses lessons learned during the development and adaptation of the filtering framework.

[Gangopadhyay95] Gangopadhyay, D. and S. Mitra. "Understanding Frameworks by Exploration of Exemplars." In Proceedings of 7th International Workshop on Computer Aided Software Engineering (CASE-95) (Toronto, Canada): 90-99, 1995.

Gangopadhyay and Mitra define a technique for gaining an understanding of the architecture and behavior of a framework through exemplars. Exemplars consist of a concrete implementation provided for all of the abstract classes in the framework along with their interactions. A technique for using exemplars to aid in understanding and using frameworks to construct applications is given, along with a description of a tool that supports the technique.

[Goedicke-Meyer98a] Goedicke, M. and T. Meyer. "Formal Design and Performance Evaluation of Parallel and Distributed Software Systems." In Proceedings International Symposium on Software Engineering for Parallel and Distributed Systems (in conjunction with 20th International Conference on Software Engineering, Kyoto, Japan).

The advantages of parallel and distributed software systems in terms of additional reliability, redundancy, work load balancing, and so on, are easily outweighed by the additional complexity parallelism and distribution introduce into a software architecture. In this paper the authors consider an approach to describe the architecture of parallel and distributed software systems. This approach is based on a component model of software which contains special constructs for concurrency control and additional information about distribution. Rather than describing the distribution properties within a component, most of these properties are stated with the use relation between components which may be local or remote. The authors describe how this design approach can be implemented on top of CORBA and how performance-related properties of remote use relations are used to quantitatively assess the software architecture. Thus the design of complex, hierarchically structured distributed software systems making full use of parallelism can be assessed wrt. response time of remote operation invocations, for example.

[Goedicke-Meyer98b] Goedicke, M. and Meyer, T. 1998. "WWW-Based Software Architecture Design Support for Cooperative Representation and Checking." Proceedings 3rd International Software Architecture Workshop (in conjunction with SIGSOFT'98/FSE-6, Orlando, USA, 1998), ACM Press.

In this contribution the authors consider a light weight approach to support software architecture design over the Web. The authors outline the architecture description language the authors use for this purpose which is based on the concept of a self contained software component. Based on this concept a loosely coupled approach to combine remote repositories is supported. A number of analysis tools are sketched which are available as back end services within this approach. These tools not only allow to check syntactic and semantic properties but also allow to assess a given architecture wrt. quantitative properties like performance.

[Kiczales 97] G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J.-M. Loingtier & J. Irwin, "Aspect-Oriented Programming." ECOOP '97 Conference Proceedings, LNCS 1241, Springer-Verlag, 1997, 220-242.

This paper is one of the first official publications describing the increasingly popular notion of Aspect-Oriented Programming (AOP). Aspect Oriented Programming emphasizes the separation of concerns by allowing global program properties to be specified in a single place. Global program properties that used to be tangled throughout the program can be expressed separately as aspects. Each application domain may have a different set of aspects, such as synchronization and distribution aspects for client/server applications or matrix representation aspects for scientific applications. Aspects are to be combined automatically into an executable program image by a so-called aspect weaver. Although there are still many unresolved issues, the work on aspect-oriented programming has brought additional awareness and focus on the problems of composing software from independent aspects.

[Lim96] Lim, W. "Reuse Economics: A Comparison of Seventeen Models and Directions for Future Research." In Proceedings of the 4th International Conference on Software Reuse (Orlando, FL): 41-50, 1996.

This paper surveyed and compared all of the best known reuse economic models to date, finding a great deal of commonality among them. The author conjectured that although the commonality might have indicated that researchers were arriving at the same results independently, it may also have indicated that new directions for future research were needed. He went on to suggest five areas for future research: better data collection methods; data collection to identify the cost drivers associated with reuse; data collection to identify the cost savings associated with reuse; practical application of economic models; linking cost prediction to cost return on investment models.

[Major-McGregor97] Major, Melissa L. and John D. McGregor. "A Qualitative Analysis of Two Requirements Capturing Techniques for Estimating the Size of Object-Oriented Software Projects." Technical Report Number, Clemson University, 1997.

Research into Function Point Analysis [Albrecht, Gaffney 83] showed areas where the methodology could fail when applied to the object-oriented paradigm. Two requirements capturing techniques currently used for object-oriented software development, Task Modeling [Graham 95] and Use Case Modeling [Jacobson et al. 92], were examined using a case study approach. A qualitative analysis of two case studies is presented that compares the effectiveness of each technique and the applicability of each technique for project estimation. Based on the findings of this research, a hybrid approach to project estimation during the requirements capturing stage is offered.

[Mili97] Hafedh Mili, Estelle Ah-Ki, Robert Godin, and Hamid Mcheick, "Another Nail to the Coffin of Multifaceted Component Classification and Retrieval.'' Proceedings of the 1997 Symposium on Software Reuse, May 97, Boston-MA, 89-98.

This paper reports on an experiment with a tool set for storing and retrieval reusable object-oriented components (classes and methods). The authors implemented two combinations of indexing and retrieval strategies: 1) natural (free) language indexing, with simple string search (modulo minimal lexical pre-processing), and 2) multi-faceted indexing, paired with multi-faceted Boolean retrieval. Results went a step further in the direction of proving the unworthiness (or lack of cost-effectiveness) of multi-faceted classification.

[Mili94a] Ali Mili, Rym Mili, and Roland Mittermeir, "Storing and Retrieving Software Components: a Refinement-Based Approach.'' Proceedings of the 6th International Conference On Software Engineering, Sorrento, Italy, May 1994

This paper proposes relational specifications as a means of specifying reusable components. The authors define a more-defined relationship between specifications, and use it to: 1) build a lattice of specifications, and 2) provide an interpretation of the corresponding relationship between corresponding implementations. They argue that by organizing reusable components according to the lattice of their specifications, they can perform sound approximate retrieval.

[Mili94b] Hafedh Mili, Odile Marcotte, and Anas Kabbaj, "Intelligent Component Retrieval for Software Reuse.'' Proceedings of the 3rd Maghrebian Conference on SE and AI, Rabat- Morocco, April 94, 101-114.

This paper describes a number of representation methods and retrieval algorithms for reusable components. The two major representation methods are: 1) a multi-faceted classification of reusable components 2) an interface signature representation method. The multi-faceted representation method supports a number of intelligent matching algorithms, provided that the values used in the facets are taken from a conceptual graph/semantic net. The interface signature representation is used to explore reusable component synthesis by constructing component flow graphs that realize an overall component signature. The paper looks at the mathematical properties of realization, and does not report on an actual implementation.

[Molin 96] P. Molin and L. Ohlsson, "Points & Deviations--A Pattern Language for Fire Alarm Systems." Proceedings of the 3rd International Conference on Pattern Languages for Programming, Paper 6.6, Monticello IL, USA, September 1996.

This paper provides a very good description, using the pattern language style, of a successful industrial framework effort in the domain of fire-alarm systems.

[Poulin94] Poulin, Jeff. "Measuring Software Reusability." Proceedings from the International Conference on Software Reuse, November 1994.

The paper surveys an extensive body of work on reusability metrics. A taxonomy for reuse is given and the set of reusability metrics categorized into groups (empirical, qualitative, module oriented, component-oriented) and analyzed using metric theory are compared and analyzed. The conclusion is that none of the metrics is a good candidate for a reusability metric.

[Riehle95] Riehle, D., and H. Züllighoven. "A Pattern Language for Tool Construction and Integration." Chapter 2 in Pattern Languages of Program Design. Reading, MA: Addison Wesley Longman, 1995.

Why do people prefer to use certain software systems and why do they have problems using others? What is the quality within certain software that makes people soon feel familiar using it and lets them work efficiently? The paper claims that the key to this quality is found in systems that allow people to work according to their qualifications and needs while using their skills and competence. The authors have put together many of the things which have proved useful in software engineering over the last decades and have integrated these methods and techniques into a unifying approach--the tools and materials metaphor. It can guide developers during analysis and design and has helped to envision and finally build systems of quality.

[Rossi96] Rossi, G., Garrido, A. and Carvalho, S. "Design Patterns for Object-Oriented Hypermedia Applications." Vlissides, Coplien and Kerth Eds. Pattern Languages of Program Design 2. Addison Wesley Longman, 1996, 177-191.

The author shows some interesting patterns they found while building object-oriented hypermedia applications. Patterns like the navigation strategy or navigation observer allow decoupling the navigation process from other computations (such as computing the end of a link or designing orientation tools)

[Schmid95] Schmid, H.A. "Creating the Architecture of a Manufacturing Framework by Design Patterns." Proceedings OOPSLA'95, ACM SIGPLAN Notices, 30, no. 10 (October 1995): 370-384.

The paper presents the design process of a manufacturing black-box framework as a sequence of transformation steps each one applying a generative design patterns. The framework allows to create applications for the automated control of manufacturing systems from a domain which is described.

The design process starts out from an class model of a specific application from the domain, which does not provide a degree of reusability sufficiently high for a framework. To obtain a reusable class model, a series of transformation steps is applied, each of which increases the reusability.

Each transformation step is guided by a generative design pattern. By the successive application of transformation steps, the architecture of the framework is created. The architecture allows to create an application by selecting, configuring and parameterizing framework classes.

[Schwabe96] Schwabe, D., Rossi, G. and Barbosa, S. "Systematic Hypermedia Design with OOHDM." In Proceedings of the ACM International Conference on Hypertext, Hypertext'96, (Washington, March 1996).

The Object-Oriented Hypermedia Design Method (OOHDM) is presented in this paper. OOHDM divides the design process in four activities that are performed in an iterative way: conceptual modeling, navigational design, abstract interface design and implementation. The authors show how to design hypermedia applications as navigational views of conceptual object-oriented models. OOHDM is widely used to build single-user hypermedia applications, Web sites and Web information systems.

[SEAF Project] SEAF Project

The Size Engineering Application Frameworks project is a joint effort between Teledyne Fluid Systems--Farris Engineering and the Software Engineering Research Group at the University of Alberta. It is focused in part on the re-engineering and re-development of the Size Master-Plus engineering software package for sizing and selecting pressure relief valves. Two frameworks, one providing support for the user interface and persistence, and another providing support for complex engineering calculations, together form the basis for developing future engineering packages.

[Woolf95] Woolf, B. "Understanding and Using the ValueModel Framework in VisualWorks Smalltalk." Pattern Languages of Program Design 1, Addison Wesley Longman, 1995, 467-494.

This paper presents a pattern language for the comprehension and efficient use of the ValueModel framework in VisualWorks, a Smalltalk development environment. The ValueModel is a very powerful tool when used correctly, and it provides a wide range of alternatives. This paper is the best documentation available for ValueModels.

[Woolf97] Woolf, B. "Null Object." In Pattern Languages of Program Design 3 (Software Pattern Series) Addison Wesley Longman, Reading, MA, 1997.

In this paper the author highlights the advantages of including an empty strategy implementation in the use of the popular Strategy design pattern. The Null Object represents an empty but useful implementation of the generic algorithm represented in the flexible Strategy configuration. The Null Object is one of several extensions to the powerful Strategy design pattern used in constructing frameworks.

[Wills95] A.C. Wills "Frameworks." in Sun, Patel, & Sun, Proceedings of Object-Oriented Information Systems. Dec 1995. Springer.

This paper describes the notion of template models and how they are used to define collaborations.