A good system design is to organise the program modules in such a way that are easy to develop and change. Structured design techniques help developers to deal with the size and complexity of programs. Analysts create instructions for the developers about how code should be written and how pieces of code should fit together to form a program.
- If any pre-existing code needs to be understood, organised and pieced together.
- It is common for the project team to have to write some code and produce original programs that support the application logic of the system.
There are many strategies or techniques for performing system design. They are:
- Bottom-up approach:
The design starts with the lowest level components and subsystems. By using these components, the next immediate higher level components and subsystems are created or composed. The process is continued till all the components and subsystems are composed into a single component, which is considered as the complete system. The amount of abstraction grows high as the design moves to more high levels.
By using the basic information existing system, when a new system needs to be created, the bottom up strategy suits the purpose.
- The economics can result when general solutions can be reused.
- It can be used to hide the low-level details of implementation and be merged with top-down technique.
- It is not so closely related to the structure of the problem.
- High quality bottom-up solutions are very hard to construct.
- It leads to proliferation of ‘potentially useful’ functions rather than most approprite ones.
- Top-down approach:
Each system is divided into several subsystems and components. Each of the subsystem is further divided into set of subsystems and components. This process of division facilitates in forming a system hierarchy structure. The complete software system is considered as a single entity and in relation to the characteristics, the system is split into sub-system and component. The same is done with each of the sub-system.
This process is continued until the lowest level of the system is reached. The design is started initially by defining the system as a whole and then keeps on adding definitions of the subsystems and components. When all the definitions are combined together, it turns out to be a complete system.
For the solutions of the software need to be developed from the ground level, top-down design best suits the purpose.
- The main advantage of top down approach is that its strong focus on requirements helps to make a design responsive according to its requirements.
- Project and system boundries tends to be application specification oriented. Thus it is more likely that advantages of component reuse will be missed.
- The system is likely to miss, the benefits of a well-structured, simple architecture.
- Hybrid Design:
It is a combination of both the top – down and bottom – up design strategies. In this we can reuse the modules.
Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.
- Modern Principles Of Software Development
- Software Engineering | Project size estimation techniques
- Types of Software Testing
- Software Testing | Basics
- Software Engineering | Architectural Design
- Software Engineering | Halstead’s Software Metrics
- Beta Testing | Software Testing
- Software Engineering | Debugging Approaches
- Personal Software Process (PSP)
- Pairwise Software Testing
- Software Engineering | COCOMO Model
- Software Engineering | Classification of Software Requirements
- Software Engineering | Classical Waterfall Model
- Software Engineering | Iterative Waterfall Model
- Software Engineering | Spiral Model
- Software Engineering | Requirements Engineering Process
- Software Engineering | Requirements Elicitation
- Software Engineering | System configuration management
- Software Engineering | Challenges in eliciting requirements
- Software Engineering | Classification of Software
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.