Design
Authors: Shumate Ken 
Published: February 2015

Software design is the devising and documenting of the overall architecture for a software system. Design consists of identifying the major components of the system, specifying what they are to accomplish, and establishing the interfaces among the components. Design is the first step of transforming the requirements (a statement ofwhatis to be done) into the functioning software (howthe requirements are accomplished). Design also includes lower level work such as detailed specification of data structures and algorithms within the identified components, but this article primarily deals with overall architecture.

The general strategy for this overview of software design is to establish the framework for design in the context of overall system development, discuss how theprocessof development embodies and influences the design approach, address general approaches to design with some extra detail on the lesser known topic of concurrent and real‐time systems, and finally, emphasize the importance of requirements analysis and specification, and the transition to design. The “transition to design” is logically part of the topic “approaches to design” but is best deferred until after the discussion of requirements. Along the way some design methods that have become sufficiently well known that they have a name will be discussed. The specific topics are

Design and the overall system development process.

Approaches to process.

Approaches to design.

Concurrent and real‐time systems.

Requirements analysis.

Requirements‐to‐design transition.

Present and future.

Software design is the devising and documenting of the overall architecture for a software system. Design consists of identifying the major components of the system, specifying what they are to accomplish, and establishing the interfaces among the components. Design is the first step of transforming the requirements (a statement ofwhatis to be done) into the functioning software (howthe requirements are accomplished). Design also includes lower level work such as detailed specification of data structures and algorithms within the identified components, but this article primarily deals with overall architecture.

The general strategy for this overview of software design is to establish the framework for design in the context of overall system development, discuss how theprocessof development embodies and influences the design approach, address general approaches to design with some extra detail on the lesser known topic of concurrent and real‐time systems, and finally, emphasize the importance of requirements analysis and specification, and the transition to design. The “transition to design” is logically part of the topic “approaches to design” but is best deferred until after the discussion of requirements. Along the way some design methods that have become sufficiently well known that they have a name will be discussed. The specific topics are

Design and the overall system development process.

Approaches to process.

Approaches to design.

Concurrent and real‐time systems.

Requirements analysis.

Requirements‐to‐design transition.

Present and future.