A model of software design

Abstract
In this article we present a preliminary cognitive model of the process of software design. Our goal was to develop a model of expert problem-solving skills for a task in which domain knowledge played an extensive role. In our model the process of design is captured via goals-and-operators interacting with a knowledge base. We have defined the goals and operators as ones which are general to design, rather than specific to the current task. In addition, we have structured the atomic level operators so that they are able to access domain specific knowledge acquired through experience. This structure enables both general processes and domain specific knowledge to play critical roles in producing any particular design artifact. From our protocol analysis we have built a model which unites several recurring behaviors into an interpretable whole. the behaviors we account for include the building of mental models, mental simulation, and balanced development.