Design
Design
July, 2024
Chapter 5 Outline
Software Design
01 Software design principles
02 Business modeling
03 Process modeling
05 Architectural design
Design is ……..
o A form of problem solving
o Developing Satisficing Artifacts
o Fitting Form to Context
o Tailoring Artifacts to Users’ Needs
o Problem Setting & Problem Solving
o Understanding & Developing
o Making choices in search of quality
Therefore,
Software design is the blueprint for building software. It translates
the broad ideas and functionalities (requirements) of a software
project into a clear roadmap for programmers to follow.
Process of breaking down the system into components, defining
interfaces and defining components to a level of detail that enables
their construction.
Divide the problem into smaller pieces so that each piece can be captured
separately.
For software design, the goal is to divide the problem into manageable
pieces.
Benefits of Problem Partitioning
Software is easy to understand
Advantages
Reduce system complexity.
Enable division of work for a team and individuals.
Allow subsystem to be replaced/modified with out affecting the other
subsystem
Coupling Cohesion
• Coupling is also called Inter-Module • Cohesion is also called Intra-Module Binding.
Binding.
• Coupling shows the relationships between • Cohesion shows the relationship within the module.
modules.
• Coupling shows the relative independence • Cohesion shows the module’s
between the modules. relative functional strength.
• While creating, you should aim for low • While creating you should aim for high cohesion, i.e.,
coupling, i.e., dependency among modules a cohesive component/ module focuses on a single
should be less. function (i.e., single-mindedness) with little
interaction with other modules of the system.
• In coupling, modules are linked to the other • In cohesion, the module focuses on a single thing.
modules.
bottom-up top-down
It focuses on:
o Decisions: Key choices about technologies, data management
strategies, and communication protocols.
o System Organization: How the system is broken down into major
subsystems like user interface, data storage, and business logic.
o Modular Decomposition: Decomposing subsystems into smaller,
well-defined modules with clear interfaces.
o Flow and Control: Defining how data flows through the system
and how control is transferred between modules.
Compiled by : Biniam Behailu & Yimer Amedie Introduction to Software Engineering 38
Architectural Design
There are many architectural styles. Here are some common ones
that can be used as a basis for the architecture of some systems
Model/View/Controller (MVC)
Client/Server (2-tier, 3-tier)
Microservices architecture
Serverless Architecture (Cloud environments)
Service-Oriented Architecture (SOA) etc…
Performance Backward-compatibility
Security Cost-effectiveness
Safety Robustness
Availability High-performance
Maintainability Reuse of components
It specifies:
Data Entities: The types of data the system needs to manage (e.g.,
customers, products, orders). rectangle