Quality assurance has been in existence for a long time in many fields of engineering, but in software engineering the idea is still fairly new. In this paper we describe the current state of Software Quality Assurance (SQA), and propose a classification of techniques. The paper consists of three parts: Firstly, the fundamental terms are defined, and the state of the art identified. This includes a survey of standards and proven techniques, as published in journals and textbooks. Secondly, practical experiences with SQA techniques used at Brown Boveri are presented, and their successes and failures discussed. lt is difficult to obtain reliable data for the benefits of SQA, therefore only some general conclusions can be reached regarding its impact on quality and productivity. Thirdly, SQA consists of many different components which are difficult to order according to their relative importance. With the aim of establishing common understanding and terminology we have defined several levels of SQA which may serve as a general framework