# Structured analysis and design technique

Structured analysis and design technique (SADT) is a systems engineering and software engineering methodology for describing systems as a hierarchy of functions. SADT is a structured analysis modelling language, which uses two types of diagrams: activity models and data models. It was developed in the late 1960s by Douglas T. Ross, and was formalized and published as IDEF0 in 1981.

## Overview

Structured analysis and design technique (SADT) is a diagrammatic notation designed specifically to help people describe and understand systems. It offers building blocks to represent entities and activities, and a variety of arrows to relate boxes. These boxes and arrows have an associated informal semantics. SADT can be used as a functional analysis tool of a given process, using successive levels of details. The SADT method not only allows one to define user needs for IT developments, which is often used in the industrial Information Systems, but also to explain and present an activity's manufacturing processes and procedures.

## History

SADT was developed and field-tested during the period of 1969 to 1973 by Douglas T. Ross and SofTech, Inc. The methodology was used in the MIT Automatic Programming Tool (APT) project. It received extensive use starting in 1973 by the US Air Force Integrated Computer Aided Manufacturing program.
According to Levitt (2000) SADT is "part of a series of structured methods, that represent a collection of analysis, design, and programming techniques that were developed in response to the problems facing the software world from the 1960s to the 1980s. In this timeframe most commercial programming was done in COBOL and Fortran, then C and BASIC. There was little guidance on "good" design and programming techniques, and there were no standard techniques for documenting requirements and designs. Systems were getting larger and more complex, and the information system development became harder and harder to do so. As a way to help manage large and complex software.
SADT was among a series of similar structured methods, which had emerged since the 1960 such as:
* Structured programming in circa 1967 with Edsger W. Dijkstra.
* Structured design around 1975 with Larry Constantine and Ed Yourdon
* Structured analysis in circa 1978 with Tom DeMarco, Yourdon, Gane & Sarson, McMenamin & Palmer.
* Information technology engineering in circa 1990 with James Martin.
In 1981 the IDEF0 formalism was published, based on SADT.

## SADT topics
### Top-down approach

The structured analysis and design technique uses a decomposition with the top-down approach. This decomposition is conducted only in the physical domain from an axiomatic design viewpoint.

### Diagrams

SADT uses two types of diagrams: activity models and data models. It uses arrows to build these diagrams. The SADT's representation is the following:
* A main box where the name of the process or the action is specified
* On the left-hand side of this box, incoming arrows: inputs of the action.
* On the upper part, the incoming arrows: data necessary for the action.
* On the bottom of the box, incoming arrows: means used for the action.
* On the right-hand side of the box, outgoing arrows: outputs of the action.
The semantics of arrows for activities:
* Inputs enter from the left and represent data or consumables that are needed by the activity.
* Outputs exit to the right and represent data or products that are produced by the activity.
* Controls enter from the top and represent commands or conditions which influence the execution of an activity but are not consumed.
* Mechanisms identify the means, components or tools used to accomplish the activity. Represents allocation of activities.
The semantics of arrows for data:
* Inputs are activities that produce the data.
* Outputs consume the data.
* Controls influence the internal state of the data.

### Roles

According to Mylopoulos (2004) in the software development process multiple roles can or should be distinguished:
* Author or developer of the SADT models
* Commenters, who review the author's work
* Readers or users of the SADT models
* Experts, who can advise the authors
* Technical committee or reviewers of the SADT models in detail
* Project librarian, who govern the project documentation
* Project manager, who governs the system analysis and design.
* Monitor or chief analyst to assists SADT developers and users
* Instructor to train SADT developers and users

## Usage

SADT is used as diagrammatic notation in conceptual design of software engineering and systems engineering to sketch applications, for more detailed structured analysis, for requirements definition, and structured design.