You are on page 1of 8

Software Design Overview

In this article, we will discuss:


Introduction to Software Design
Software Design Principles
Software Design Considerations
Software Design Process
Software Design Strategies and Methodologies

In this article, we will understand what is software design in real IT world and
why is it important ?

What is Software Design?

Software design is the process of implementing software solutions to one or


more set of problems. One of the important parts of software design is the
software requirements analysis (SRA). It is a part of the software development
process that lists specifications used in software engineering. ~Wiki
Software Design describes how software is decomposed and organized into
components and the interfaces between those components. It also describes
the component at a level of detail that enable their construction. ~IEEE
Definition
In my own words:
Software Design is the process of Analysing system requirements to enable
building components and interfaces between those components.

Software Design Principles:

1. Abstraction

o Process of Identifying the essential behavior, eliminating irrelevant details

2. Coupling
o Low coupling is recommended for good design
o Advantages of loosely coupled system is changes in one module does not
cause changes in other modules but in tightly coupled system, changes to
one module causes changes in other modules.

3. Modularity
o System decomposed into a set of highly cohesive and loosely coupled
modules

4. Encapsulation
o Abstraction is mainly achieved through information hiding.Objects
encapsulate data and implementation details

5. Cohesion
o Modules with high cohesion is recommended because high cohesion is
associated with characteristics such as robustness, reliability and reusability

6. Sufficiency & Completeness


o Ensuring the completeness and sufficiency of software with respect to given
requirements
Also we need to follow SOLID principles. You can read more on SOLID principles here.

Software Design Considerations:

Software Design Process:

Architectural Design Decisions:

This is the stage between requirement specification and actual designs where we
decide:
o How to decompose the system into modules?
o How the system will be distributed?
o Which approach should be followed to define the system?
o Which platform to be used?
o WHat would be the communication topology etc..

Logical and Physical Design Decisions:

In this stage the more detailed description for the component and sub component is
provided

Logical design is more theoreetical and abstract than physical design

Software Design Strategies and Methodologies:


There are 2 major design methodologies.

Structured or functional decomposition

Object oriented approach

Structured Design Methodologies:

This is a systems approach to the analysis and design of information systems

There are multiple stages involved in it

Stage 1: Feasibility study


This is required to determine whether or not a given project is feasible.
Technical is the project technically possible?
Financial can the business afford to carry out the project?
Organizational will the new system be compatible with existing practices?
Ethical is the impact of the new system socially acceptable?
Stage 2: Analysis on the Current environment
This is required to validate if the current environment can support the expected changes.
Stage 3: Reuirement Specifications
In this stage, The requirement needs to be specified to build the new system
Stage 4: Technical System Options

the hardware architectures

the software to use

the cost of the implementation

the staffing required

the physical limitations such as a space occupied by the system

the distribution including any networks which that may require

the overall format of the interface

Stage 5: Logical Design


The product of this stage is the logical design which is made up of:

Data catalogue

Required logical data structure

Logical process model includes dialogues and model for the update and inquiry
processes

Design document at component and sub component level

Stage 6: Physical Design


This is the final stage where all the logical specifications of the system are converted to
descriptions of the system in terms of real hardware and software

Object Oriented Design Methodologies:


The five basic concepts of object-oriented design are the implementation level features that
are built into the programming language.
These features are often referred to by these common names:
1. Object/Class: A tight coupling or association of data structures with the methods or
functions that act on the data. This is called a class, or object (an object is created based on
a class). Each object serves a separate function. It is defined by its properties, what it is and
what it can do. An object can be part of a class, which is a set of objects that are similar.
2. Information hiding: The ability to protect some components of the object from external
entities.
3. Inheritance: The ability for a class to extend or override functionality of another class.
The subclass has a whole section that is derived (inherited) from the superclass and then it

has its own set of functions and data.


4. Interface: The ability to defer the implementation of a method. The ability to define the
functions or methods signatures without implementing them.
5. Polymorphism : The ability to replace an object with its subobjects. The ability of an
object-variable to contain, not only that object, but also all of its subobjects.

The input artifacts for object oriented designs are:

Conceptual model

Use case

System Sequence diagram

Relational data model etc..

We will look at each of the software design methodologies/strategies in detail in next


articles.

You might also like