Hostname: page-component-76fb5796d-9pm4c Total loading time: 0 Render date: 2024-04-25T10:20:12.924Z Has data issue: false hasContentIssue false

Augmenting design patterns with design rationale

Published online by Cambridge University Press:  27 February 2009

Feniosky Peña-Mora
Affiliation:
Intelligent Engineering Systems Laboratory, Department of Civil Environmental Engineering, Massachusetts Institute of Technology, 77 Massachusetts Avenue, Cambridge, MA 02139, U.S.A.
Sanjeev Vadhavkar
Affiliation:
Intelligent Engineering Systems Laboratory, Department of Civil Environmental Engineering, Massachusetts Institute of Technology, 77 Massachusetts Avenue, Cambridge, MA 02139, U.S.A.

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.

Type
Articles
Copyright
Copyright © Cambridge University Press 1997

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)

References

REFERENCES

Bradley, S., & Agogino, A. (1991). Design capture and information management for concurrent design. Int. J. Systems Automation: Res. and Appl. 1(2), pp. 117141.Google Scholar
Casotto, A., Newton, A., & Sangiovanni-Vincentelli, A. (1990). Design Management based on Design Traces. 27th ACM/IEEE Design Automation Conference, 136141.CrossRefGoogle Scholar
Conklin, J., & Begeman, M. (1988). gIBIS: A Hypertext tool for exploratory policy discussion. ACM Transactions on Office Inf. Syst. 6(4), 303331.CrossRefGoogle Scholar
Favela, J., Wong, A., & Chakravarthy, A. (1993). Supporting collaborative engineering design. Eng. Computers 9(4), 125132.CrossRefGoogle Scholar
Fischer, G., McCall, R., & Morch, A. (1989). Design environments for constructive and argumentative design. Proc. CHI ’89, pp. 269276. Austin, Texas.Google Scholar
Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design patterns. Addison-Wesley Publishing Company, Reading, MA.Google Scholar
Ganeshan, R., Finger, S., & Garrett, J. (1991). Representing and reasoning with design intent. In Artificial Intelligence in Design ’91 (Gero, J., Ed.). Kluwer, London, England.Google Scholar
Garcia, A., & Howard, H. (1992). Acquiring design knowledge through design decision justification. AI EDAM 6(1), 5971.Google Scholar
Gruber, T., Tenenbaum, J., & Webber, J. (1992). Toward a knowledge medium for collaborative product development. In Artificial Intelligence in Design ’92, (Gero, J., Ed.), pp. 413432. Kluwer Academic Publishers, London, England.Google Scholar
Isakowitz, T., & Kauffman, R. (1996). Supporting search for reusable software objects. IEEE Transactions on Software Engineering, 22(6), 407424.CrossRefGoogle Scholar
Kim, T. (1994). OODesigner FAQ. Pusan University of Foreign Studies, Pusan, Korea.Google Scholar
Kim, W., & Lochovsky, F. (1989). Object-oriented concepts, databases and applications. ACM and Addison-Wesley Publishing Company, Reading, MA.CrossRefGoogle Scholar
Klein, M. (1992). DRCS: An integrated system for capture of designs and their rationale. In Artificial Intelligence in Design ’92 (Gero, J., Ed.) pp. 393412. Kluwer, London, England.Google Scholar
Kolodner, J. (1993). Case based reasoning. Morgan-Kaufmann, Los Altos, CA.CrossRefGoogle Scholar
Kunz, W., & Rittel, H. (1970). Issues as Elements of Information Systems. Institute of Urban and Regional Development Working Paper 131, University of California, Berkeley, Berkeley, CA.Google Scholar
Lee, J. (1990). SIBYL: A qualitative decision management system. In Artificial Intelligence at MIT: Expanding Frontiers, (Winston, P., & Shellard, S., Eds.), Chap. 5, pp. 104133. MIT Press, Cambridge, MA.Google Scholar
Lu, S., Klein, M., & Baskin, A. (1990). Towards a theory of conflict resolution in cooperative design. Proc. Twenty-Third Ann. Int. Conf. On System Sciences, pp. 4150. IEEE Press, New York.Google Scholar
Lubars, M. (1991). The ROSE-2 strategies for supporting high-level software design reuse. In Automating Software Design, (Hahn, F., Ed.), pp. 184190. AAAI Press and The MIT Press, Cambridge, MA.Google Scholar
Luqi, , & Royce, W. (1992). Status Report: Computer-Aided Prototyping. IEEE Software 19(5), 7781.CrossRefGoogle Scholar
Nierstrasz, O. (1993). Composing active objects. In Research Directions in Concurrent Object-Oriented Programming, (Agha, G., Wegner, P., & Yonezawa, A., Eds.), pp. 151171. MIT Press, Cambridge, MA.CrossRefGoogle Scholar
Peña-Mora, F. (1994). Design rationale for computer supported conflict mitigation during the design-construction process of large-scale civil engineering systems. Ph.D. thesis, Massachusetts Institute of Technology, Cambridge, MA.Google Scholar
Peña-Mora, F., Sriram, D., & Logcher, R. (1995a). Conflict mitigation system for collaborative engineering. AI EDAM 9(2), 101124.Google Scholar
Peña-Mora, F., Sriram, D., & Logcher, R. (1995b). Design rationale for computer supported conflict mitigation. J. Comput. Civil Eng. 9(1), 5772.CrossRefGoogle Scholar
Peña-Mora, F., & Vadhavkar, S. (1996). Design rationale and design patterns in reusable software design. In Artificial Intelligence in Design ’96, (Gero, J., Ed.), (pp. 251268). Kluwer Academic Publishers, London, England.Google Scholar
Potts, C., & Bruns, G. (1988). Recording the reasons for design decisions. Proc. 10th Int. Conf. Software Eng., 418427.CrossRefGoogle Scholar
Rossignac, J., Borrel, P., & Nackman, L. (1988). Interactive design with sequences of parameterized transformations. In Intelligent CAD Systems 2: lmplementational Issues. (Akman, V., ten Hagen, P.J.W., & Veerkamp, V.), pp. 93125. Springer-Verlag, New York.Google Scholar
Rumbaugh, J., Blaha, M., Premerlani, W., Eddy, F., & Lorensen, W. (1991). Object-oriented modeling and design. Prentice-Hall, Inc., Englewood Cliffs, NJ.Google Scholar
Schmidt, D. (1995). Experience using design patterns to develop reusable object-oriented communication software. Communications of the ACM 38; 6574.CrossRefGoogle Scholar
Shaw, M. (1990). Towards higher level of abstractions for software systems. Data and Knowledge Eng. 5, 119128.CrossRefGoogle Scholar
Shum, S.B. (1996). Designing argumentation as design rationale. In The Encyclopedia of Computer Science and Technology, (Kent, A., & Williams, J.G., Eds.), pp. 28. Marcel Dekker Inc., New York.Google Scholar
Smith, D. (1990). KIDS: A semi-automatic program development system. IEEE Transactions on Software Eng. 16, 10241043.CrossRefGoogle Scholar
Toulmin, S. (1958). The uses of argument. Cambridge University Press, Cambridge, England.Google Scholar
Weide, B., Edwards, S., Heym, W., Long, T., & Ogden, W. (1996). Characterizing observability and controllability of software components. Proc. 4th Int. Conf. on Software Reuse, 6271.CrossRefGoogle Scholar