A general methodology for specifying both the model and the process knowledge of an expert system at different abstraction levels is proposed. Specifications are acquired and organized around the general notion of a task. The model specification of a task describes a partial model of the application domain and a partial model of the problem solving states relevant to the task. The process specification of a task describes states before, during, and after the task as well as task state expression to describe the behavior. A piece of abstract specification can be refined to a more detailed specification. Specifications at different abstraction levels can be verified for their consistency and completeness.