In order to evaluate the quality of a design (representation) the criteria for a good design should be established. Such a design should:
exhibit good architectural structure
be modular
contain distinct representations of data, architecture, interfaces, and components (modules)
lead to data structures that are appropriate for the objects to be implemented and be drawn from recognizable design patterns
lead to components that exhibit independent functional characteristics
lead to interfaces that reduce the complexity of connections between modules and with the external environment
be derived using a reputable method that is driven by information obtained during software requirements analysis
These criteria are not achieved by chance. The software design process encourages good design through the application of fundamental design principles, systematic methodology and through review.