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:

Abstraction Process of Identifying the essential behavior, eliminating irrelevant details Coupling Low coupling is recommended for good design

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. Modularity System decomposed into a set of highly cohesive and loosely coupled modules Encapsulation Abstraction is mainly achieved through information hiding.Objects encapsulate data and implementation details Cohesion Modules with high cohesion is recommended because high cohesion is associated with characteristics such as robustness, reliability and reusability Sufficiency & Completeness 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: How to decompose the system into modules? How the system will be distributed? Which approach should be followed to define the system? Which platform to be used? 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

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.

Thanks for visiting !!

© 2016, Csharp Star. All rights reserved.