Structuring Design Decisions for Evolution

Software system has to face many changes during its life cycle. Some of these changes can be anticipated some come as surprises. Software systems can be designed to be flexible in terms of anticipated changes. Flexibility is achieved by structuring the system utilizing abstraction, indirection, late binding or some other variance mechanism. Surprising changes are still a problem. Partially this problem can be alleviated by proper management of design knowledge. We propose a mechanism to organize design decision so that this organization can be used to analyze change requests and determine their impact on system architecture. We demonstrate this using an industrial example.

[1]  Alexander Ran,et al.  Configuring Designs for Reuse , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[2]  Ruben Prieto-Diaz,et al.  Domain analysis for reusability , 1988 .

[3]  Bertrand Meyer,et al.  Reusability: The Case for Object-Oriented Design , 1987, IEEE Software.

[4]  David Lorge Parnas,et al.  On the Design and Development of Program Families , 2001, IEEE Transactions on Software Engineering.

[5]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

[6]  Alexander Ran,et al.  Design decision trees , 1996, Proceedings of the 8th International Workshop on Software Specification and Design.