The purpose of analysis is to transform the requirements of the system into a form that maps well to the software designer's area of concern ”that is, to a set of classes and subsystems. This transformation is driven by the use cases and is shaped further by the system's nonfunctional requirements. Analysis focuses on ensuring that the system's functional requirements are handled. For simplicity's sake, it ignores many of the nonfunctional requirements of the system and also the constraints of the implementation environment. As a result, analysis expresses a nearly ideal picture of the system. The purpose of design, on the other hand, is to adapt the results of analysis to the constraints imposed by nonfunctional requirements, the implementation environment, performance requirements, and so forth. Design is a refinement of analysis. It focuses on optimizing the system's design while ensuring complete requirements coverage. |