Open In App

Software Design Process – Software Engineering

Last Updated : 15 Mar, 2024
Summarize
Comments
Improve
Suggest changes
Like Article
Like
Save
Share
Report
News Follow

The design phase of software development deals with transforming the customer requirements as described in the SRS documents into a form implementable using a programming language. The software design process can be divided into the following three levels or phases of design:

  1. Interface Design
  2. Architectural Design
  3. Detailed Design

Elements of a System

  1. Architecture: This is the conceptual model that defines the structure, behavior, and views of a system. We can use flowcharts to represent and illustrate the architecture.
  2. Modules: These are components that handle one specific task in a system. A combination of the modules makes up the system.
  3. Components: This provides a particular function or group of related functions. They are made up of modules.
  4. Interfaces: This is the shared boundary across which the components of a system exchange information and relate.
  5. Data: This is the management of the information and data flow.
software-disign-process

Software Design Process

Interface Design

Interface design is the specification of the interaction between a system and its environment. This phase proceeds at a high level of abstraction with respect to the inner workings of the system i.e, during interface design, the internal of the systems are completely ignored, and the system is treated as a black box. Attention is focused on the dialogue between the target system and the users, devices, and other systems with which it interacts. The design problem statement produced during the problem analysis step should identify the people, other systems, and devices which are collectively called agents.

Interface design should include the following details:

  1. Precise description of events in the environment, or messages from agents to which the system must respond.
  2. Precise description of the events or messages that the system must produce.
  3. Specification of the data, and the formats of the data coming into and going out of the system.
  4. Specification of the ordering and timing relationships between incoming events or messages, and outgoing events or outputs.

Architectural Design

Architectural design is the specification of the major components of a system, their responsibilities, properties, interfaces, and the relationships and interactions between them. In architectural design, the overall structure of the system is chosen, but the internal details of major components are ignored. Issues in architectural design includes:

  1. Gross decomposition of the systems into major components.
  2. Allocation of functional responsibilities to components.
  3. Component Interfaces.
  4. Component scaling and performance properties, resource consumption properties, reliability properties, and so forth.
  5. Communication and interaction between components.

The architectural design adds important details ignored during the interface design. Design of the internals of the major components is ignored until the last phase of the design.

Detailed Design

Detailed design is the specification of the internal elements of all major system components, their properties, relationships, processing, and often their algorithms and the data structures. The detailed design may include:

  1. Decomposition of major system components into program units.
  2. Allocation of functional responsibilities to units.
  3. User interfaces.
  4. Unit states and state changes.
  5. Data and control interaction between units.
  6. Data packaging and implementation, including issues of scope and visibility of program elements.
  7. Algorithms and data structures.

Previous Article
Next Article

Similar Reads

Difference between Software Engineering process and Conventional Engineering Process
Software Engineering Process and Conventional Engineering Process, both are processes related to computers and development. In this article, we will see the similarities as well as differences between both, that is Software Engineering Process and the Conventional Engineering Process. Table of Content Software Engineering ProcessConventional Engine
4 min read
Requirements Engineering Process in Software Engineering
Requirements Engineering is the process of identifying, eliciting, analyzing, specifying, validating, and managing the needs and expectations of stakeholders for a software system. Table of Content What is Requirements Engineering?Requirements Engineering ProcessTools Involved in Requirement EngineeringAdvantages of Requirements Engineering Process
13 min read
Difference between Good Design and Bad Design in Software Engineering
The term design is used in two ways. While used as verb, it means - the design process and used as noun, it means- the result of design process. Design is a meaningful engineering representation of something that is to be built. The result of a design process is called as design model or the design of the system. Design for computer software is as
2 min read
Difference Between Technical Design and Conceptual Design in Software Engineering
What is Software Design?Software design is a process to convert the user requirements into client requirements user interface form, that helps the software developer in coding and implementation. The software design deals with portraying the client's requirement which is described in Software Requirement Specification (SRS) document into a user int
3 min read
Software Process Framework - Software Engineering
A Software Process Framework is a structured approach that defines the steps, tasks, and activities involved in software development. This framework serves as a foundation for software engineering, guiding the development team through various stages to ensure a systematic and efficient process. A Software Process Framework helps in project planning
8 min read
Overview of Software Release Process in Software Engineering
The Software Release Process is a structured method used in software engineering to develop, test, and launch new versions of software. Think of it as a recipe that guides teams through the various steps needed to ensure that a software product is ready for users. Table of Content What is the Software Release Process?Phases of a Software Release Pr
10 min read
Reverse Engineering - Software Engineering
Software Reverse Engineering is a process of recovering the design, requirement specifications, and functions of a product from an analysis of its code. It builds a program database and generates information from this. This article focuses on discussing reverse engineering in detail. What is Reverse Engineering?Reverse engineering can extract desig
6 min read
Re-engineering - Software Engineering
Software Re-engineering is a process of software development that is done to improve the maintainability of a software system. Re-engineering is the examination and alteration of a system to reconstitute it in a new form. This process encompasses a combination of sub-processes like reverse engineering, forward engineering, reconstructing, etc.  Tab
8 min read
Difference between Software Engineering and Computer Engineering
Software engineering and Computer engineering are two distinct disciplines that focus on different aspects of computer systems. While both fields require a strong foundation in computer science and mathematics, software engineering is focused on software development processes, while computer engineering is focused on the physical components and sys
6 min read
Evolution of Software Engineering: From an Art To Engineering Discipline
Software Engineering is a systematic and cost-effective technique for software development. It is an engineering approach to developing software. For example: If someone wants to travel from Punjab to Delhi. There are two approaches one can follow to achieve the same result: The normal approach is to go out and catch the bus/train that is available
13 min read
Process Patterns in Software Engineering
As the software team moves through the software process they encounter problems. It would be very useful if solutions to these problems were readily available so that problems can be resolved quickly. Process-related problems which are encountered during software engineering work, it identifies the encountered problem and in which environment it is
4 min read
Difference Between Process and Methodology in Software Engineering
Software engineering is the process of designing, developing, testing, and maintaining software. In this article, we will understand what is the difference between a methodology and a process in software engineering but before understanding. What is Software Process?The software process is a set of steps or a set of activities that are used during
4 min read
Incremental Process Model - Software Engineering
The Incremental Process Model is also known as the Successive version model. This article focuses on discussing the Incremental Process Model in detail. Table of Content What is the Incremental Process Model?Phases of incremental modelRequirement Process ModelTypes of Incremental ModelWhen to use Incremental Process ModelCharacteristics of Incremen
4 min read
Process and Control Specification in Software Engineering
The process and control specifications help us to create mechanisms to show that the software developers can have a basic understanding of what they are going to develop for a particular company and understand the goals of a particular software more easily. Table of Content What is Process Specification in Software Engineering?What is Control Speci
7 min read
People Metrics and Process Metrics in Software Engineering
People Metrics and Process Metrics, both play important roles in software development. People Metrics helps in quantifying the useful attributes whereas Process Metrics creates the body of the software. People metrics focus on how well team members work together and their overall satisfaction, while process metrics measure how smoothly tasks are co
8 min read
Difference between Forward Engineering and Reverse Engineering
Forward engineering and reverse engineering are two approaches to software development, with different goals and processes. Forward engineering involves creating new software systems from scratch using given requirements and design specifications. It focuses on building new applications through a structured process of analysis, design, implementati
6 min read
Effective Modular Design in Software Engineering
The role of effective modular design in software engineering: Any software comprises of many systems which contains several sub-systems and those sub-systems further contains their sub-systems. So, designing a complete system in one go comprising of each and every required functionality is a hectic work and the process can have many errors because
3 min read
Design Documentation in Software Engineering
The design phase of software development deals with transforming the customer requirements as described in the SRS documents into a form implementable using a programming language. The software design process can be divided into the following three levels of phases design: Interface DesignArchitectural DesignDetailed DesignSoftware Design Document:
2 min read
Structured Analysis and Design with CASE Tools - Software Engineering
Several representation techniques are used for structured analysis and structured style. The subsequent support could be offered from CASE tools. A CASE tool ought to support one or a lot of structured analysis and style techniques. It ought to support effortlessly drawing analysis and style diagrams. What is the CASE Tool?The CASE tool ought to gi
2 min read
Function Oriented Design - Software Engineering
The design process for software systems often has two levels. At the first level, the focus is on deciding which modules are needed for the system based on SRS (Software Requirement Specification) and how the modules should be interconnected. Function Oriented Design is an approach to software design where the design is decomposed into a set of int
3 min read
Architectural Design - Software Engineering
The software needs an architectural design to represent the design of the software. IEEE defines architectural design as "the process of defining a collection of hardware and software components and their interfaces to establish the framework for the development of a computer system." The software that is built for computer-based systems can exhibi
4 min read
System Design Strategy - Software Engineering
A good system design is to organize the program modules in such a way that are easy to develop and change. Structured design techniques help developers to deal with the size and complexity of programs. Analysts create instructions for the developers about how code should be written and how pieces of code should fit together to form a program. Softw
6 min read
Introduction to Business Process Re-engineering
Business Process Re-engineering (BPR) is a management strategy aimed at improving organizational performance by re-designing and optimizing business processes. BPR is a systematic and radical approach to change, focused on transforming and streamlining core business processes to achieve dramatic improvements in quality, efficiency, and customer sat
8 min read
Introduction of Software Design Process - Set 2
Software Design is the process of transforming user requirements into a suitable form, which helps the programmer in software coding and implementation. During the software design phase, the design document is produced, based on the customer requirements as documented in the SRS document. Hence, this phase aims to transform the SRS document into a
6 min read
What is the relationship between software process, software project, and software product?
Nowadays, the production of software has become vital in business processes, technological progress, and our day-to-day activities. As the process of software development becomes intricate, there are organized frameworks that are commonly known as the software process. This article explores the components of the software process, software projects,
15+ min read
Process Improvement in Defect Management Process (DMP)
In Defect Management Process (DMP), identified defects are firstly prioritized according to their severity, and then further fixed. But it does not mean that defects that are less severe are not essential. Defect, whether highly severe or less severe, impact system. Process improvement is a process in which all defects are considered to be severe a
2 min read
Process states and Transitions in a UNIX Process
Process is an instance of a program in execution. A set of processes combined together make a complete program. There are two categories of processes in Unix, namely User processes : They are operated in user mode. Kernel processes : They are operated in kernel mode. Understanding the distinction between user and kernel processes is essential for c
4 min read
Software Engineering | Schick-Wolverton software reliability model
Prerequisite - Jelinski Moranda software reliability model The Schick-Wolverton (S-W) model is a modification to the J-M model. It is similar to the J-M model except that it further assumes that the failure rate at the ith time interval increases with time ti since the last debugging. In the model, the program failure rate function between the (i-1
4 min read
Software Engineering | Responsibilities of Software Project Manager
Software Project Management (SPM) is a sub-field of Project Management in which software projects are planned, implemented, monitored and controlled. It consists of three terms: Software, Project and Management. So, let us understand each term separately. Software includes a set of programs, documentation and user manual for a particular software p
3 min read
Software Engineering - Hardware Reliability vs Software Reliability
Reliability in software is software that has no failure and works in a special time period with a special environment. Hardware reliability is the probability of the absence of any hardware-related system malfunction for a given mission on the other hand software reliability is the probability that the software will provide a failure-free operation
3 min read
Article Tags :
three90RightbarBannerImg