software design strategies in software engineering

software design strategy

Software design strategies in software engineering

Software design is the pivotal activity of software engineering. It has been claimed that design is also the integrative activity at the core of software engineering or all the other skills can be seen as feeding into the design. The effects of a bad design are hard to overcome, so we should embrace proven methods of good design that suit our application. The design methods used today fall into several categories. So many methods and design models are used to design and develop the software.

software design methodology or strategies

Software design is the first of three technical activities - design, code generation, and testing that are required to build and verify the software.
Here, are mainly two strategies used for software design:
  • Top-down design
  • Bottom-up design

Top-down design strategy

Top-down is an informal design strategy for breaking problems into smaller problems. The design activity must begin with the analysis of the requirements definition and should not consider implementation details at first.

Top-design has the following objectives:
  • To systematize the design process.
  • To produce a modular program design.
  • To provide a framework in which problem-solving can more effectively proceed.

 A software project is decomposed into subprojects, and this procedure is repeated until the subtasks have become too simple that an algorithm can be formulated as a solution. 

top-down design is a successive concretization of abstractly described ideas for a solution. Abstraction proves to be the best medium to render complex systems comprehensible; the designer is involved only with those aspects of the system that are necessary for understanding before the next step or during the search for a solution.

In top-down design, system components are derived from project specifications.


  • The main advantage of a top-down approach is that its strong focus on specific requirements helps to make a design responsive to its requirement.


  • Its disadvantage is that project and system boundaries tend to be application or specification oriented. Thus it is more likely that the advantages of component reuse will miss.
  • The system is likely to miss the benefits of a well structured, simple architecture.

Bottom-up design strategy

Bottom-up design is becoming more important as software grows in complexity. Programs today may have to meet specifications that are extremely or even open-ended. Under such circumstances, the traditional top-down method sometimes breaks down.

In its place, there has evolved a style of programming quite different from the earlier; a bottom-up style in which a program is written as a series of layers, each one acting as an art of programming language for the one above. X window is an example of programs written in this style.

In bottom-up design, the approach is to start "at the bottom", with problems that you already know how to solve. From there, you can work upwards towards a solution to the overall problems.

Some software engineers claim that a bottom-up design produces code that is more maintainable than code produced from a top-down approach. Many programmers, however, find it easier to design their work top-down before decomposing it into bottom-up elements.

In bottom-up design, the emphasis is on applying general solutions to a wide range of problems.


  • The advantage of the bottom-up design is the economies that result when general solutions can be reused.
  • It can be used to hide the low-level details of implementation and be merged with a top-down technique.


  • It is not closely related to the structure of the program.
  • It's the focus not on specific requirements and thus its results may not fit a given need.
  • High-quality bottom-up solutions prove very hard to construct and thus most frameworks are to some substantial degree under-designed.
  • It leads to the proliferation of 'potentially useful' functions rather than the most appropriate ones.

The bottom-up design begins with the given of concrete machine and successively develops one abstract machine after the other by adding needed attributes until a machine has been achieved that provides the functionality that the user requires.

An abstract machine is a set of basic operations that permits the modeling of a system.

See Also:-

Post a comment