Nowadays, system design interviews have become a part of almost every top-notch tech company around the block, leading to many people being afraid of system design interviews as there’s no particular pattern to prepare. A Structured Analysis and Structured Design (SA/SD) methodology is one such abstract but crucial component of System Design. This article will go through steps to understand Structured Analysis and Structured Design (SA/SD) in design problems.
This guideline may help you to design a system. For this, we will first start with taking a brief look at its history, philosophy/idea behind it then we will move on to understanding what the Structured Analysis and Structured Design (SA/SD) approaches are, their requirements, and their significance in system design. Then we will see how you can implement it through various phases and diagrammatic tools: data flow diagram, data dictionary, state transition diagram, an entity-relationship diagram.
The origins of using a Structured Analysis and Structured Design (SA/SD) approach
Structured Analysis and Structured Design (SA/SD) has a history from way back in the late 1970s modeled by DeMarco, Yourdon, and Constantine after the emergence of the well-known paradigm of modern structured programming. IBM was the first to incorporate Structured Analysis and Structured Design (SA/SD) into its development cycle in the late 1970s and early 1980s.
In contrast, people modified the classical Structured Analysis and Structured Design (SA/SD) due to their inability to represent real-time systems. In 1989, Yourdon came up with another published version of the methodology with a graphical approach known as “Modern Structured Analysis”.
The availability of CASE tools in the 1990s enabled many analysts to develop and modify the graphical Structured Analysis and Structured Design (SA/SD) models. Using this model, analysts attempted to divide a significant, complex problem into smaller, more easily handled ones using a “Divide and Conquer”, “Top-Down approach” (Classical SA), or “Middle-Out” (Modern SA).
Analysts used leverage graphics to illustrate their ideas whenever possible to depict a functional view of the problem and maintain relevant written records.
So, what’s all the fuss about Structured Analysis and Structured Design (SA/SD) anyway?
Structured Analysis and Structured Design (SA/SD) is a top-down decomposition technique system design methodology. In software engineering, SA/SD are methods used for analyzing business requirements while developing specifications for converting practices into computer programs, hardware configurations, and related manual procedures.
Structured Analysis is a set of techniques and graphical tools that allow the analyst to develop a new system specification that is easily understandable to the user and a functional, high-quality information system that meets their needs.
Structured Analysis and Structured Design (SA/SD) methodology consist of two significant chunks of different activities, viz. :
- Structured Analysis (SA)
- During which a functional decomposition takes place.
- Structured Design (SD)
- During which module structure is formalized.
Here, Functional decomposition is where each function is analyzed, hierarchically decomposed into more detailed processes and simultaneously decomposed from high-level data into more complex data.
Structured Analysis is based on principles of the “Top-down decomposition” approach and the “Divide and Conquer” principle, where each function is considered individually (i.e. isolated from other parts). Here, too relatively, a decomposition of different functions occurs, disregarding what happens in other processes (reducing their cohesiveness and increasing independence).
Phases and Graphical approaches to Structured Analysis and Structured Design (SA/SD)
Structured Analysis and Structured Design (SA/SD) is a diagrammatic notation system design technique designed to help people better understand it. One of Structured Analysis and Structured Design (SA/SD) is to improve quality and reduce the risk of system failure. It establishes concrete management specifications and documentation. It focuses on the reliability, flexibility and maintainability of the system.
Structured Analysis and Structured Design (SA/SD) comprises the following 2 phases.
Analysis Phase: The phase uses diagrammatic system representations using DFDs, Data Dictionary, State Transition and ER diagrams.
- Data Flow Diagram: In a DFD model, describe how the data flows through the system. It is a hierarchical graphical model that mainly shows the system’s different functions (or processes) and the data interchange among the methods.
It is helpful to consider each function as a processing station such that each function consumes some input data and produces some output data.
The Data Flow diagram Symbols used here, hold the following meaning ->
A directed arc or line here represents data flow in the direction of the
arrow where data flow symbols are annotated with names of the data that they carry.
The Data Store Symbol here represents a logical file that can either be a data structure or a physical file on a disk. Each data store is connected to a process with the help of a data flow symbol.
The direction of the data flow arrow shows whether data is being read from
or written into it. An arrow into or out of a data store implicitly represents the entire data where the arrows connecting to a data store need not be annotated with any data name.
- Data Dictionary: A DFD is always accompanied by a data dictionary. A data dictionary lists all data items appearing in a DFD defining datastores and their relevant meaning.
- The State Transition Diagram is similar to the Dynamic model. It specifies how much time the function will take to execute and data access triggered by the various events involved.
The State Transition diagram Symbols used here, hold the following meaning ->
- ER Diagram: This is a graphical representation of the data layout of a system at a high level of abstraction that defines data elements and their inter-relationships in the design and the relationship between datastores.
The Entity-Relationship diagram Symbols used here, hold the following meaning ->
Design Phase: Involves the use of Structure Chart and Pseudo Code to model a system.
Structure Chart: It is created and defined by the DFD. Structure Chart specifies how a DFD’s processes are grouped into tasks and allocated to CPU’s or other such relative systems.
The Structure Chart Symbols used here, hold the following meaning ->
Pseudo Code: It is the actual implementation of the system showing the process specifications and implied details but not shown in a DFD.
Frequently Asked Questions
Structured Analysis and Structured Design SD is a set of system design techniques and graphical tools that help develop a new kind of system specification that is easily understandable and needful to the user.
It uses Data Flow Diagram, Context Diagrams (0 Level DFDs).
In software engineering, Structured Analysis and Structured Design (SA/SD) are methods for analyzing business requirements and developing specifications for converting practices into computer programs, hardware configurations, and related manual procedures.
Initially represent the software at the most abstract level called the context diagram. Here, the entire system is defined as a single bubble; this bubble is labelled according to the system’s primary function.
Benefits of structured analysis are:
1. Improves the quality and reduces the risk of system failure
2. Establishes specifications and complete requirements documentations.
3. Also, it focuses on reliability, flexibility, reusability, robustness, maintainability of the system.
This blog highlighted the following set of critical takeaways:
- Structured Analysis and Structured Design (SA/SD) is a process-driven software analysis technique that uses DFD’s and other relevant diagrams to record the requirements analysis in 2 phases, viz. Analysis and Design Phase.
- SASD has a long history in the industry, and it is a mature system design approach that provides good documentation for requirements.
- In recent years, it has been widely used for designing and developing complex real-time embedded system’s software.
Practising more problems on system design can help you to stand out from the crowd during interviews. There are many questions to practice for designing systems in discussions to get into top product-based companies.
This article discusses the Structured Analysis and Structured Design (SA/SD) methodology, a way to design systems efficiently. To solve more questions for interviews, you can check out CodeStudio, a platform developed by experts. You can find all previous interview questions on System Design, Data Structures and Algorithms etc.
Keep practising, keep hustling. The goal is near.
By: Dhruv Sharma