Reference: Bhansali, S. & Nii, P. KASE: An Integrated Environment for Software Design. 1992.
Abstract: Software system design is a high-level organization of system components that meets a given problem specification. The design process consists primarily of decomposing problem specifications into functional modules or subsystems, defining the interfaces and the dependencies between the modules, allocating high-level tasks to computing agents, and determining representation schemes for data. A good software design should enable the implementation of the software to proceed in a modular and largely routine manner. Like all design activities, designing software systems is a knowledge- intensive task. Guindon et al. [Guindon, Krasner, & Curtis, 1987] found that the predominant cause of failures among system designers was lack of knowledge -- knowledge about the task domain, knowledge about design schemas, knowledge about design processes. Thus, an environment to help software designers must contain knowledge about software design and must have the ability to deliver relevant knowledge to the designer in the appropriate context.
Full paper available as hqx, ps.