System Design Strategy – Software Engineering
A good system design is to organize 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.
Software Engineering is the process of designing, building, testing, and
maintaining software. The goal of software engineering is to create
software that is reliable, efficient, and easy to maintain. System design is
a critical component of software engineering and involves making
decisions about the architecture, components, modules, interfaces, and
data for a software system.
System Design Strategy refers to the approach that is taken to
design a software system. There are several strategies that can
be used to design software systems, including the following:
1. Top-Down Design: This strategy starts with a high-level view of the
system and gradually breaks it down into smaller, more manageable
components.
2. Bottom-Up Design: This strategy starts with individual components and
builds the system up, piece by piece.
3. Iterative Design: This strategy involves designing and implementing
the system in stages, with each stage building on the results of the
previous stage.
4. Incremental Design: This strategy involves designing and implementing
a small part of the system at a time, adding more functionality with
each iteration.
5. Agile Design: This strategy involves a flexible, iterative approach to
design, where requirements and design evolve through collaboration
between self-organizing and cross-functional teams.
The design of a system is essentially a blueprint or a plan for a solution
for the system. The design process for software systems often has two
levels. At the first level the focus is on deciding which modules are
needed for the system, the specifications of these modules and how the
modules should be interconnected. The design of a system is correct if a
system built precisely according to the design satisfies the requirements
of that system. The goal of the design process is not simply to produce a
design for the system. Instead, the goal is to find the best possible design
within the limitations imposed by the requirements and the physical and
social environment in which the system will operate.
The choice of system design strategy will depend on the particular
requirements of the software system, the size and complexity of the
system, and the development methodology being used. A well-designed
system can simplify the development process, improve the quality of the
software, and make the software easier to maintain.
Importance of System Design Strategy:
1. If any pre-existing code needs to be understood, organized, and pieced
together.
2. 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.
Bottom-up approach
Advantages of Bottom-up approach:
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 the top-down technique.
Disadvantages of Bottom-up approach:
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 the proliferation of ‘potentially useful’ functions rather than
the most appropriate ones.
Top-down approach:
Each system is divided into several subsystems and components. Each of
the subsystems is further divided into a set of subsystems and
components. This process of division facilitates forming a system
hierarchy structure. The complete software system is considered a single
entity and in relation to the characteristics, the system is split into sub-
systems and components. The same is done with each of the sub-
systems.
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, it turns out to be a complete system.
For the solutions of the software that need to be developed from the
ground level, a top-down design best suits the purpose.
Top-down approach
Advantages of Top-down approach:
The main advantage of the top-down approach is that its strong focus
on requirements helps to make a design responsive according to its
requirements.
Disadvantages of Top-down approach:
Project and system boundaries tend to be application specification-
oriented. Thus, it is more likely that the 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 top-down and bottom-up design strategies.
In this, we can reuse the modules.
Advantages of using a System Design Strategy:
1. Improved quality: A well-designed system can improve the overall
quality of the software, as it provides a clear and organized structure
for the software.
2. Ease of maintenance: A well-designed system can make it easier to
maintain and update the software, as the design provides a clear and
organized structure for the software.
3. Improved efficiency: A well-designed system can make the software
more efficient, as it provides a clear and organized structure for the
software that reduces the complexity of the code.
4. Better communication: A well-designed system can improve
communication between stakeholders, as it provides a clear and
organized structure for the software that makes it easier for
stakeholders to understand and agree on the design of the software.
5. Faster development: A well-designed system can speed up the
development process, as it provides a clear and organized structure for
the software that makes it easier for developers to understand the
requirements and implement the software.
Disadvantages of using a System Design
Strategy:
1. Time-consuming: Designing a system can be time-consuming,
especially for large and complex systems, as it requires a significant
amount of documentation and analysis.
2. Inflexibility: Once a system has been designed, it can be difficult to
make changes to the design, as the process is often highly structured
and documentation-intensive.