A software design description (a.k.a. software design document or SDD; just design document; also
Software Design Specification
Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work.
At the lowest programming level, executable code consists ...
) is a representation of a software design that is to be used for recording design information, addressing various design concerns, and communicating that information to the design’s stakeholders. An SDD usually accompanies an architecture diagram with pointers to detailed feature specifications of smaller pieces of the design. Practically, the description is required to coordinate a large team under a single vision, needs to be a stable reference, and outline all parts of the software and how they will work.
Composition
The SDD usually contains the following information:
#The ''Data-driven design'' describes structures that reside within the software. Attributes and relationships between
data object
In computer science, an object can be a variable, a data structure, a function, or a method. As regions of memory, they contain value and are referenced by identifiers.
In the object-oriented programming paradigm, ''object'' can be a combinatio ...
s dictate the choice of
data structures
In computer science, a data structure is a data organization, management, and storage format that is usually chosen for efficient access to data. More precisely, a data structure is a collection of data values, the relationships among them, a ...
.
#The ''
architecture design'' uses information flowing characteristics, and maps them into the program structure. The transformation mapping method is applied to exhibit distinct boundaries between incoming and outgoing data. The data flow diagrams allocate control input, processing and output along three separate modules.
#The ''
interface design
User interface (UI) design or user interface engineering is the design of user interfaces for machines and software, such as computers, home appliances, mobile devices, and other electronic devices, with the focus on maximizing usability and the ...
'' describes internal and external program interfaces, as well as the design of the
human interface
In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fr ...
. Internal and external interface designs are based on the information obtained from the analysis model.
#The ''
procedural design
In software design, Procedural Design (SPD) converts and translates structural elements into procedural explanations. SPD starts straight after data design and architectural design. This has now been mostly abandoned mostly due to the rise in pr ...
'' describes structured programming concepts using graphical, tabular and textual notations.
These design mediums enable the designer to represent procedural detail, that facilitates translation to code. This blueprint for implementation forms the basis for all subsequent software engineering work.
IEEE 1016
IEEE 1016-2009, titled ''IEEE Standard for Information Technology—Systems Design—Software Design Descriptions'',
is an
IEEE
The Institute of Electrical and Electronics Engineers (IEEE) is a 501(c)(3) professional association for electronic engineering and electrical engineering (and associated disciplines) with its corporate office in New York City and its operation ...
standard that specifies "the required information content and organization" for an SDD. IEEE 1016 does not specify the medium of an SDD; it is "applicable to automated databases and design description languages but can be used for paper documents and other means of descriptions."
The 2009 edition was a major revision to IEEE 1016-1998, elevating it from recommended practice to full standard. This revision was modeled after
IEEE Std 1471-2000, ''Recommended Practice for Architectural Description of Software-intensive Systems'', extending the concepts of
view, viewpoint, stakeholder, and concern from architecture description to support documentation of high-level and detailed design and construction of software.
EEE 1016, ''Introduction''
Following the IEEE 1016 conceptual model, an SDD is organized into one or more design views. Each design view follows the conventions of its design viewpoint. IEEE 1016 defines the following design viewpoints for use:
*Context viewpoint
*Composition viewpoint
*Logical viewpoint
*Dependency viewpoint
*Information viewpoint
*Patterns use viewpoint
*Interface viewpoint
*Structure viewpoint
*Interaction viewpoint
*State dynamics viewpoint
*Algorithm viewpoint
*Resource viewpoint
In addition, users of the standard are not limited to these viewpoints but may define their own.
IEEE Status
IEEE 1016-2009 is currently listed as 'Inactive - Reserved'.
See also
*
Game design document
A game design document (often abbreviated GDD) is a highly descriptive living software design document of the design for a video game. Oxland 2004, p. 240 Brathwaite, Schreiber 2009, p. 14 A GDD is created and edited by the development team and ...
*
High-level design
High-level design (HLD) explains the architecture that would be used to develop a system. The architecture diagram provides an overview of an entire system, identifying the main components that would be developed for the product and their interf ...
*
Low-level design
Low-level design (LLD) is a component-level design process that follows a step-by-step refinement process. This process can be used for designing data structures, required software architecture, source code and ultimately, performance algorithms ...
References
External links
IEEE 1016 website
{{IEEE standards
Software design
Software documentation
IEEE standards