The design and implementation of real-time embedded software requires different kinds of expertise: knowledge of the problems to be solved, the technologies available for implementing the software and the particular software engineering methods used to bridge the gap between problems and their software-based solutions.Most of this knowledge is at present not explicitly recorded.Therefore, it cannot be reused.We present a framework for acquiring software design knowledge and an interactive advisory system to reuse that knowledge.Our focus is on a particular type of design expertise, called navigation knowledge.Such knowledge is needed to guide the software design process.We address the technical issues of which design goals to achieve, what design operators to-apply next and how to perform design operations.We study what kinds of knowledge are needed to navigate, how this knowledge is acquired and what methods are effective for its reuse.We model navigation as the task of controlling search in the space of alternative designs and implementations for a given specification.We apply existing knowledge engineering and design tracking techniques to build a problem space for software design and to capture navigation knowledge for searching it.We present an organization for the design knowledge, centered around a set of generic software construction tasks.We use an object-oriented scheme to represent the software design space and navigation knowledge.We also present an architecture of a knowledge-based assistant system to reuse navigation knowledge.The architecture is demonstrated by the use of its prototype implementation, Spade, in the design of a real-life embedded system.
|Publication status||Published - 1990|
|MoE publication type||G5 Doctoral dissertation (article)|
- software engineering
- embedded computer systems
- software reusability
- knowledge based systems
- software navigation