in Misc

The levels of software design

This is the process of transforming all user requirements into a useful suitable form that will help professional programmers in implementation and software development. Right from assessing the user requirements, the software requirement specification is developed; on the other hand, implementation and coding, in software terms, it needs detailed and specific requirements. For the entire process, the output can directly be used in any programming language.

When we talk about the software design life cycle, software design becomes the first step in the entire process which moves all attention right from problem domain all through solution domains. The whole process tries to get through requirements that have been stated in SRS.


What levels does software design yield?


Architectural design

This is the topmost system abstract version. It helps identify different software as a system that is composed of various components that interacts with one another. Designers get the right proposed solution domain right at this level.


High-level design

At this level, the one entity multiple software architectural design component is broken into something of a less abstracted view of different modules and subsystems, and their entire interaction is depicted with each other. This design level focuses the way the system, together with the components it can be implemented with, in different module forms. The high-level design recognizes each modular sub-system structure along with their interaction and relations that exist among each other at large.


Detailed design

This level deals with the part of implementing everything that is seen as a system together with their different subsystems in the first two designs. This design level is more detailed towards different modules with their implementations at large. The level designs the logical structure of every module, together with their interfaces that bring about communication with other existing modules.



This technique entails dividing a software system into various independent and discrete modules that are likely to carry out various tasks independently. They can work as basic constructs entirely for the software. Designers usually design modules to compile separately.

The strategy of solving a problem known as divide and conquer’ rule is followed here by unintentionally by the modular design because it is accompanied by many benefits that emerge from the modular design software.



Previously, all software programs were supposed to be executed in a sequence. Sequential execution means one executes the coded instruction one by one, so at a particular time, you are supposed to have one program activated. Even if the software has many modules, you will activate only one module during the execution time.

Concurrency gets implementation in software design by dividing the software into several units of execution independently and doing parallel execution. This means that it can allow the software to execute more parts of code that are parallel to each other.

Designers are advised to take note of those modules that can be made parallel execution.


Design Verification

The following are the outputs of the software design process, pseudo-codes, process diagrams, design documentation, logic programs that are detailed as well as a description of no-functional and functional requirements in detail.

What follows now is a software implementation phase which depends solely on the outputs stated above.

Verification of the output is necessary before moving to the next phase. This reduces the risk of having any mistakes in the late stages. Once the outputs of the design are in a formal notation form, verification, and validation tools that are to you will use should be associated with them or else you verify by doing a thorough design review.

Employing a structured verification approach can assist those reviewing in detecting the defects that may arise due to an overlook of certain conditions. It is recommended that you should have a good design review if you want a good, accurate, and quality software design. Through and download paint, you will get more information on this topic.


Coupling and Cohesion

Modularising a software program means dividing its tasks into multiple modules based on certain features. A set of instructions that are put together for purposes of achieving some tasks is what is known as modules. We have some measures of measuring the interaction among modules and the quality of the design of the module. They are known as cohesion and coupling


This is a measure meant to define the level of intra-dependability within the module elements. Program design gets better when the cohesion gets greater.


This measure is used to define the degree of inter-dependability among a program’s modules. It is capable of showing the extent to which modules interact and interfere with each other. The program gets better if the coupling gets lower.


Bogdan is the founder of Top Design Magazine. You can find him in Bucharest-Romania so next time you want to drink a beer there and talk about web and stuff, give him a message.