Augmenting design patterns with design rationale
Open Access
- 1 April 1997
- journal article
- research article
- Published by Cambridge University Press (CUP) in Artificial Intelligence for Engineering Design, Analysis and Manufacturing
- Vol. 11 (2) , 93-108
- https://doi.org/10.1017/s089006040000189x
Abstract
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.Keywords
This publication has 18 references indexed in Scilit:
- Recording the reasons for design decisionsPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2003
- Characterizing observability and controllability of software componentsPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2002
- Supporting search for reusable software objectsIEEE Transactions on Software Engineering, 1996
- Design Rationale and Design Patterns in Reusable Software DesignPublished by Springer Nature ,1996
- Using design patterns to develop reusable object-oriented communication softwareCommunications of the ACM, 1995
- What Is Case-Based Reasoning?Published by Elsevier ,1993
- Acquiring design knowledge through design decision justificationArtificial Intelligence for Engineering Design, Analysis and Manufacturing, 1992
- Toward higher-level abstractions for software systemsData & Knowledge Engineering, 1990
- KIDS: a semiautomatic program development systemIEEE Transactions on Software Engineering, 1990
- Object-oriented concepts, databases, and applicationsPublished by Association for Computing Machinery (ACM) ,1989