Summary Design is the method kernel of software engineering. In the duration of design, progressive refinements of program architecture, data structure, interfaces and procedural detail are reviewed, developed and documented. The Design results in representations of software which can be assessed for quality. The number of fundamental software design concepts and principles has been proposed over the past 3 decades. Design principles instruct the software engineer as the design procedure proceeds. The Design concepts give basic criteria for design quality.