Design Process in Software Engineering: Steps, Attributes & Changes

Instructor: Shadi Aljendi

Shadi has a Ph.D. in Computer Science and more than 20 years experience in industry and higher education.

Software development is a fascinating journey that starts with the design phase. In this lesson, we will learn about the design process as part of software development and look at some modern approaches to software design.

From Art to Engineering

In the early days of software development, building software was more of an individual artistic process. This explains why one of the most famous and most widespread books among software developers was The Art of Computer Programming by Donald Knuth. While explaining in detail the computer programming process at that time, the title of the book indicates that programming was a creative artistic activity. However, with software projects becoming bigger and more complex, they had to be approached differently and more engineering techniques were employed.

Software is a predominant product in our lives that carries out highly critical tasks in our everyday life. Take, for example, the management of an airport or a hospital or a healthcare IoT monitoring system. All these are critical tasks that need engineering methodologies in order to be built and implemented.

Design in Software Engineering

In all engineering domains, design is a very important step that precedes building or implementing the product. For example, consider constructing a building. It is unimaginable that builders go straight to the field and start the construction before detailed designs are established by engineers. In fact, constructing a building without designing it beforehand would be dangerous and the building may have serious issues that could put people's lives in danger.

In software engineering, design is one phase of the software development methodology. In fact, it can be claimed that it is the most important phase of the whole process. This is because the entire product will be built upon decisions made in this phase.

Software design is the first step of the software development process. It can be defined as a high-level, technology independent abstraction which describes a system that will be able to accomplish the tasks that were identified in the requirement analysis phase. During this phase, designers will need to make compromises between suggested solutions and available resources. For example, they may have to adopt less efficient solutions due to lack of material or financial resources. Decisions related to the following aspects are made during the design process:

System Architecture

The system architecture defines the relationship between the different pieces (or modules) of the system. Usually, this is presented as a diagram that depicts the relationships and dependencies between the system components. These components are obtained from breaking down the abstract solution (that came from the requirement analysis) into realizable pieces.

Effort Estimation

In this step, designers will estimate the amount of work required to finish the work on the design problem. Usually, this is expressed using 'person/hour' which allows the designers to map the required effort with the deadlines as well as the financial resources.

Design Workflows

Here designers will use the dependency diagram from the system architecture to decide the order of the different steps to be taken for the development and deployment of the system.

Tools and Platforms

In the design phase, designers should make decisions on the tools and platforms to be used to develop and use the software product. For example, they can decide to use MVC.NET to develop a web application or use LAMP (Linux, Apache, MySQL, PHP).


User interfaces should also be designed. These are the screens that the end user will interact with.

Iterative Nature of the Design Process

There are different methodologies of software development. Figure 1 shows one of the most commonly adopted methodologies known as the Waterfall model.

Figure 1: The Waterfall software development approach
waterfall design approach

In today's complicated software development environments, it is claimed that the Waterfall model needs to be adapted to the quickly changing market and client requirements. Thus, increasingly, more software development companies are adopting what is called the spiral or incremental development model, shown in Figure 2.

Figure 2: Incremental software development approach
spiral software development model

To unlock this lesson you must be a Member.
Create your account

Register to view this lesson

Are you a student or a teacher?

Unlock Your Education

See for yourself why 30 million people use

Become a member and start learning now.
Become a Member  Back
What teachers are saying about
Try it risk-free for 30 days

Earning College Credit

Did you know… We have over 200 college courses that prepare you to earn credit by exam that is accepted by over 1,500 colleges and universities. You can test out of the first two years of college and save thousands off your degree. Anyone can earn credit-by-exam regardless of age or education level.

To learn more, visit our Earning Credit Page

Transferring credit to the school of your choice

Not sure what college you want to attend yet? has thousands of articles about every imaginable degree, area of study and career path that can help you find the school that's right for you.

Create an account to start this course today
Try it risk-free for 30 days!
Create an account