Overview of Software Design
(from Drexel –SERG)
• Definition
• Views
• Properties
1
What is Design?
• Requirements specification -WHAT the
system will do
• Design is about the HOW the system will
perform its functions
– provides the overall decomposition of the system
– allows to split the work among a team of developers
– lays down the groundwork for achieving nonfunctional
requirements (performance, security, availability, etc.)
– takes target technology into account (e.g., kind of
middleware, database design, etc.)
2
Role of Design
Requirements Design Models Code
Design should play a pivotal role:
• Clarify and refine requirements
• Early defect detection and elimination
•Basis for implementation 3
The Nature of Design
• A creative process involving:
– Multiple perspectives (models)
– Multiple layers of abstraction (models)
• An evolutionary process involving:
– Incremental developments
– Backtracking over designs
– Requirements reformulation, elaboration
and volatility
4
Process
• Architectural design: deciding on the subsystems
and their relationships
• Subsystem design: provide an abstract
specification for each subsystem
• Interface design: define the interface for each
subsystem
• Component design: decomposition of subsystems
into components
• Data structure design: data structuring decisions
• Algorithm design: algorithmic decisions
5
Strategies
• Two broad strategies for tackling software design
• Function-oriented design:
– Software is structured around a centralized system state
– System state is shared between a collection of functions (subroutines)
• Object-oriented design:
– Software is structured around a collection of objects, where each object is
responsible for it own state
– Object organized into a class hierarchy, exploiting inheritance
6
Levels of Design
• Architectural design (high-level design)
– architecture - the overall structure: main sub-systems
and their connections
– design that covers the main use-cases of the system
– addresses the main non-functional requirements (e.g.,
throughput, reliability)
• Detailed design (low-level design)
– the inner structure of the sub-systems
– may take the target programming language into account
– detailed enough to be implemented in the programming
language
7
Software Design Perspectives
8
Software Design…Challenges
– Complexity
• The problem domain is complex (difficult)
– Conformity
• Often expected to conform to other software (e.g., legacy,
standards, etc.)
– Changeability
• Needs to support change due to changing requirements,
constraints, etc.
– Flexibility
• Software offers extreme flexibility
– Invisibility
• No visible link between design plans and product
9
Software Design…
Dealing with Complexity – three ways
1. Abstraction
2. Decomposition
3. Hierarchy
10
Modeling as a Design Technique
11
Modeling as a Design Technique
12
Modeling as a Design Technique
13
Modeling Designs
14
Modeling Design using UML
15
Viewpoints in Software Design
• Structural - the static properties of the
software
• Behavioral - cause and effect
• Functional - what tasks the software
performs
16
Good Design Properties
17
Good Design Properties
18
Good Design Properties
19
Summary
20