In this paper, engineering design is viewed as a multi-domain problem in which each domain has a distinct set of requirements. An integrated solution to such a problem therefore involves the simultaneous satisfaction of the requirements of two or more separate knowledge sources. In some cases, the requirements of one source may be in conflict with those of another. This paper presents a methodology for solving such problems. It highlights the role of design criticism which is central to this problem solving methodology. The paper also attempts to establish the generic nature of the criticism task. An architecture for a generic tool for design criticism is proposed. The paper also shows how this tool can be used as a generic evaluator.