Software Design Principles
CS 240: Advanced Software Construction
Introduction
Goals of Software Design
3
Principle #1: Design is Inherently Iterative
Design is Inherently Iterative
5
Principle #2: Abstraction
Abstraction
7
Abstraction
8
Abstraction
9
Abstraction
10
Principle #3: �Good Naming
Naming
12
Principle #4:�Single-Responsibility Principle
Single Responsibility / Cohesion
14
Principle #5:�Decomposition
Decomposition
16
Decomposition
17
Decomposition
18
Principle #6: Good Algorithm & Data Structure Selection
Algorithm & Data Structure Selection
20
Principle #7:�Low Coupling
Low Coupling
Encapsulation / Information Hiding
23
Encapsulation / Information Hiding
24
Separation of Interface and Implementation
25
Principle #8:�Avoid Code Duplication
Code Duplication
27