It involves the building of models of the application domain, e.g., domain-specific privatives in the form of specifications and application domain algorithms, and models of the problem-solving processes, e.g., what techniques are available for using the models to help address the problems.