Design Strategies in Software Engineering
Overview
System design is crucial for outlining the product's architecture. The interfaces, designs, data, and modules must all meet the system requirements. Therefore, a sound system design strategy is essential for enabling the best possible product development. In addition, the right design ideas and methods provide the necessary road map for addressing programme complexity and scalability. A sound system design strategy necessitates foresight and a deeper comprehension of the software product's present and future needs.
Introduction
The process of conceptualizing software requirements into actual software execution is known as software design. The user needs are viewed as tasks in software design, and the best solution is sought after. A strategy is laid out to determine the optimum design for achieving the required solution while the software is conceptualized. The software design process can be viewed as a series of well-defined steps.
System Design Strategies
There are many strategies or techniques for performing system design.
Structured Design
Structured design is primarily about breaking problems down into several well-organised components. The benefit of utilizing this design technique is that it simplifies difficulties. This allows for the minor pieces to be problem-solved so they can fit into the larger image. The solution components are organized hierarchically.
Structured design is primarily based on the divide and conquer technique, in which a large problem is divided into smaller ones, each of which is tackled independently until the larger problem is solved. Solution modules are used to address the individual problems. The structured design stresses the importance of these modules' organization to produce exact results. A good structured design has high cohesion and low coupling arrangements.
Function Oriented Design
Function-oriented design is related to structured design in that it splits the entire system into subsystems known as functions. The system is viewed as a map or top-down perspective of all the bundled functions. However, when compared to structured design, there is more information travelling between the functions, whilst the smaller functions promote abstraction. The software can also work on input rather than state thanks to the function-oriented design.
Object Oriented Design
This design approach differs from the other two in that it focuses on objects and classes. This technique is centred on the system's objects and their attributes. Furthermore, the characteristics of all these objects' attributes are encapsulated together, and the data involved is constrained so that polymorphism can be enabled. Object-oriented design is centered on recognizing objects and categorizing them based on their attributes. The class hierarchy is then established, and the relationships between these classes are defined.
The object-oriented design technique is considered superior to the function-oriented design approach because real-world entities may be easily incorporated in the computer world. This method also allows for the implementation of several very basic object behaviors like as polymorphism, inheritance, abstraction, and encapsulation.
Software Design Approaches
Top Down Approach
This design technique is entirely focused on first subdividing the system into subsystems and components. Rather to constructing from the bottom up, the top-down approach conceptualizes the entire system first and then divides it into multiple subsystems. These subsystems are then designed and separated into smaller subsystems and sets of components that meet the larger system's requirements. Instead of defining these subsystems as discrete entities, this method considers the entire system to be a single entity. When the system is finally defined and divided based on its features, the subsystems are considered separate entities. The components are then organised in a hierarchical framework until the system's lowest level is designed.
Bottom-Up Approach
This system design technique prioritises the design of subsystems and the lowest-level components (even sub-components). Higher-level subsystems and larger components can be produced more readily and efficiently if these components are designed beforehand. This reduces the amount of time spent on recon and troubleshooting. The process of assembling lower-level components into larger sets is repeated until the entire system is composed of a single component. This design technique also makes generic solutions and low-level implementations more reusable.
Conclusion
- Structured design is primarily based on the 'divide and conquer' technique, in which an issue is divided into multiple tiny problems, and each small problem is solved separately until the entire problem is solved.
- The system in function-oriented design is made up of numerous smaller subsystems known as functions. These functions are capable of carrying out important tasks in the system. The system is regarded as the overall picture of all functions.
- Object oriented design revolves around entities and their attributes rather than the functions of the software system.
- Bottom-up design begins with the most basic components and subsystems. These components are used to generate or compose the next higher-level components and subsystems. The procedure is repeated until all of the components and subsystems have been combined into a single component, which is referred to as the full system.
- In top-down approach, the entire software system is seen as a single entity, and the system is divided into sub-systems and components based on their features. The same is true for each sub-system. This practise is repeated until the system's lowest level is attained.
Empower yourself with Instagram System Design expertise through our comprehensive course, shaping you into a design virtuoso.