Augmenting design patterns with design rationale

Present-day software applications are increasingly required to be reuse-conscious in terms of the operating platforms, topology, and evolutionary requirements. Traditionally, there has been much difficulty in communicating specialized knowledge like design intents, design recommendations, and design justifications in the discipline of software engineering. This paper presents a methodology based on the combination of design rationale and design patterns to design reusable software systems. Design rationale is the representation of the reasoning behind the design of an artifact. Design patterns are descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context. The paper details the use of an explicit software development process to capture and disseminate the specialized knowledge (i.e., intents, recommendations, and justifications) that augments the description of the cases in a library (i.e., design patterns) during the development of software applications by heterogeneous groups. The importance of preserving and using this specialized knowledge has become apparent with the growing trend of combining the software development process with the product (i.e., software code). The importance of codifying corporate memory in this regard is also important considering the changing nature of the workplace, where more people are on contract. The information on how and why a software code was developed becomes essential for efficient and smooth continuity of the present software project as well as for reusing the code in future projects. It has become essential to capture the design rationale to develop and design software systems efficiently and reliably. The software prototype developed using the combined methodology will be used as a part of an integrated design environment for reusable software design. This environment supports collaborative development of software applications by a group of software specialists from a library of building block cases represented by design patterns.

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

[2]  Thomas R. Gruber,et al.  Toward a Knowledge Medium for Collaborative Product Development , 1992 .

[3]  Feniosky Peña-Mora,et al.  Design Rationale and Design Patterns in Reusable Software Design , 1996 .

[4]  Larry Wall,et al.  Programming Perl , 1991 .

[5]  Janet L. Kolodner,et al.  Case-Based Reasoning , 1989, IJCAI 1989.

[6]  Guillermo Arango,et al.  Domain Analysis and Software Systems Modeling , 1991 .

[7]  Douglas R. Smith,et al.  KIDS: A Semiautomatic Program Development System , 1990, IEEE Trans. Software Eng..

[8]  Oscar Nierstrasz,et al.  Composing active objects , 1993 .

[9]  Walter F. Tichy,et al.  Rcs — a system for version control , 1985, Softw. Pract. Exp..

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

[11]  Michael L. Begeman,et al.  gIBIS: a hypertext tool for exploratory policy discussion , 1988, CSCW '88.

[12]  Douglas C. Schmidt,et al.  Using design patterns to develop reusable object-oriented communication software , 1995, CACM.

[13]  Colin Potts,et al.  Recording the reasons for design decisions , 1988, Proceedings. [1989] 11th International Conference on Software Engineering.

[14]  Won Kim,et al.  Object-Oriented Concepts, Databases, and Applications , 1989 .

[15]  Alberto L. Sangiovanni-Vincentelli,et al.  Design management based on design traces , 1991, DAC '90.

[16]  Robert J. Kauffman,et al.  Supporting Search for Reusable Software Objects , 1996, IEEE Trans. Software Eng..

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

[18]  Feniosky Peña-Mora,et al.  Design rationale for computer-supported conflict mitigation , 1995 .

[19]  Feniosky A. Peña Design rationale for computer supported conflict mitigation during the design-construction process of large-scale civil engineering systems , 1994 .

[20]  Trucy Levine Reusable software components , 1997, ALET.

[21]  P. Borrel,et al.  Interactive design with sequences of parameterized transformations , 1989 .

[22]  Kuntz Werner,et al.  Issues as Elements of Information Systems , 1970 .

[23]  H. Craig Howard,et al.  Acquiring design knowledge through design decision justification , 1992, Artificial Intelligence for Engineering Design, Analysis and Manufacturing.

[24]  Peter Freeman,et al.  Tutorial, software reusability , 1987 .

[25]  Stephen H. Edwards,et al.  Characterizing observability and controllability of software components , 1996, Proceedings of Fourth IEEE International Conference on Software Reuse.

[26]  Mark Klein,et al.  DRCS: An Integrated System for Capture of Designs and Their Rationale , 1992 .

[27]  Simon Buckingham Shum,et al.  Design Argumentation as Design Rationale , 1996 .

[28]  Mary Shaw Toward Higher-Level Abstractions for Software Systems , 1990, Data Knowl. Eng..

[29]  Ram D. Sriram,et al.  Conflict mitigation system for collaborative engineering , 1995, Artificial Intelligence for Engineering Design, Analysis and Manufacturing.

[30]  Luqi,et al.  Status report: computer-aided prototyping , 1992, IEEE Software.

[31]  Rodney J. Douglas KIDS: A Semi-Automatic Program Development System , 1990 .