0% found this document useful (0 votes)
9 views20 pages

Overview - Software Design

The document provides an overview of software design, defining its role in transforming requirements into functional systems while addressing non-functional aspects. It discusses the nature of design as a creative and evolutionary process, outlining various design strategies, levels, and challenges. Key concepts include architectural and detailed design, modeling techniques, and the importance of abstraction, decomposition, and hierarchy in managing complexity.

Uploaded by

Kgotso Ntshilane
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views20 pages

Overview - Software Design

The document provides an overview of software design, defining its role in transforming requirements into functional systems while addressing non-functional aspects. It discusses the nature of design as a creative and evolutionary process, outlining various design strategies, levels, and challenges. Key concepts include architectural and detailed design, modeling techniques, and the importance of abstraction, decomposition, and hierarchy in managing complexity.

Uploaded by

Kgotso Ntshilane
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

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

You might also like