Section A
Software Design(软件设计)
Design is defined in [IEEE610.12-90] as both “the process of defining the architecture,
components, interfaces, and other characteristics of a system or component” and “the result of that process.” Viewed as a process, software design is the software engineering life cycle activity in which software requirements are analyzed in order to produce a description of the software’s internal structure that will serve as the basis for its
construction. More precisely, a software design (the result) must describe the software architecture -- that is how software is decomposed and organized into components -- and the interfaces between those components. It must also describe the components at a level of detail that enable their construction. Software design plays an important role in
developing software: it allows software engineers to produce various models that form a kind of blueprint of the solution to be implemented. We can analyze and evaluate these models to determine whether or not they will allow us to fulfill the various
requirements. We can also examine and evaluate various alternative solutions and trade-offs. Finally, we can use the resulting models to plan the
subsequent development activities, in addition to using them as input and the starting point of construction and testing.
In a standard listing of software life cycle
processed such as IEEE/EIA 12207 Software Life Cycle Processes [IEEE 12207.0-96], software design consists of two activities that fit between software requirements analysis and software construction:
Software architectural design (sometimes called top level design): describing software’s top-level structure and organization and identifying the various components.
Software detailed design: describing each
component sufficiently to allow for its construction.