SlideShare a Scribd company logo
1 of 43
Download to read offline
SOFTWARE DESIGN PRINCIPLES
CRISTAL NGO
ICT2106 – SOFTWARE DESIGN – WEEK 2
PREVIOUSLY IN ICT2106
–What is software design?
–Importance of software design
–Software design process
–What is a good design/software/process
2
READING
– Software engineering design, Carlos Otero,
Chapter 1 (Software Design Fundamentals)
4
GENERAL DESIGN PRINCIPLES
1. Modularization
2. Abstraction
3. Encapsulation
4. Coupling
5. Cohesion
6. Separation of interface and implementation
7. Sufficiency
8. Completeness
5
PRINCIPLE #1: MODULARIZATION
Modularization is the process of continuous decomposition
of the software system until fine-grained components are
created.
When you modularize a design, you are also modularizing the
requirements, programming and test cases. 6
PRINCIPLE #2: ABSTRACTION
Abstraction is “a view of an object
that focuses on the information
relevant to a particular purpose and
ignores the remainder of the
information”
7
ABSTRACTION
Abstraction can be employed to extract essential
characteristics of:
Procedures or
behavior
Data
8
PROCEDURAL ABSTRACTION
SEND(client, server, message)
1. Client retrieves the serverʼs information,
2. opens a TCP/IP connection,
3. sends the message, waits for response, and
4. closes the connection
Simplifies reasoning about behavioural
operations containing a sequence of
steps
9
DATA ABSTRACTION
MESSAGE is an example of the data abstraction; the details of a
MESSAGE can be deferred to later stages of the design phase.
SEND(client, server, message)
Simplifies reasoning
about structural
composition of data
objects
10
PRINCIPLE #3: ENCAPSULATION
Encapsulation deals with providing access to services of
abstracted entities by exposing only the information that is
essential to carry out such services while hiding details of how the
services are carried out.
Information hiding: Internal details (state,
structure, behavior) become the objectʼs
secret
11
ENCAPSULATION & INFORMATION HIDING
– One can think of information hiding as the
principle and encapsulation as the technique
– Encapsulation is the public interface that
defines how an object can be used, and how
its data is derived.
– Information Hiding prevents an external object
from using the derived data altogether
13
ENCAPSULATION & INFORMATION HIDING
class Automobile extends Vehicle {
public final static int EMPTY = 0;
public final static int FULL = 1;
public int tank = EMPTY;
}
Neither Encapsulation nor Information Hiding
14
ENCAPSULATION & INFORMATION HIDING
class Automobile extends Vehicle {
public final static int EMPTY = 0;
public final static int FULL = 1;
private int tank = EMPTY;
public int getTankStatus() {
return this.tank;
}
public void setTankStatus( int status ){
this.tank = status;
}
}
The status of the
tank is now
encapsulated, but
NOT HIDDEN from the
rest of the system.
15
class Automobile extends Vehicle {
private final static int EMPTY = 0;
private final static int FULL = 1;
private int tank = EMPTY;
private int tank() {…}
private void tank( int status ) {…}
public void fillUp() {
tank( FULL );
}
public void depleteOzone() throws GasExhaustedException {
if( tank() == FULL ) {
tank( EMPTY );
}
else {
throw new GasExhaustedException();
}
}
}
A simple interface fully
Encapsulates and Hides
Information: fillUp() and
depleteOzone().
No other object in the
system can use, or know
the state of, the gas
tank.
16
MODULARIZATION, ABSTRACTION & ENCAPSULATION
Focus on essential
characteristics of entities
Enforce that we only expose
essential information
17
PRINCIPLE #4: COUPLING
The higher
the coupling
The higher
the
dependency
Refers to the manner and degree of
interdependence between software modules.
Measurement of dependency between units.
18
COUPLING:
DEGREE OF DEPENDENCE AMONG COMPONENTS
No dependencies Loosely coupled-
some dependencies
Highly coupled-
many
dependencies
High coupling makes modifying parts of the system difficult, e.g., modifying a
component affects all the components to which the component is connected
19
Content
Common
Control
Stamp
Data
TIGHT COUPLING LOOSE COUPLING
More interdependency
More coordination
More information flow
Less interdependency
Less coordination
Less information flow
21
CONTENT COUPLING
Definition: A module directly references the
content of another module
1. Module p modifies a statement of module q
2. Module p refers to local data of module q (in terms of a
numerical displacement)
3. Module p branches to a local label of module q
22
COMMON COUPLING
– Using global variables (i.e., global coupling)
– All modules have read/write access to a global
data block
– Modules exchange data using the global data
block (instead of arguments)
Single module with write access where all other modules have
read access is not common coupling 23
COMMON COUPLING -
EXAMPLE
while( global_variable > 0 ){ 
switch( global_variable ){ 
case 1: function_a(); break;
case 2: function_b(); break;
...
case n: ...
}
global_variable++;
}
If function_a(),
function_b(), etc
can modify the
value of global
variable, then it
can be
extremely
difficult to
track the
execution of
this loop
24
STAMP COUPING
Occurs when too much information is passed to
a function.
typedef struct rectangle
{
int length;
int width; 
int area;
int perimeter;
int color;
double diagonal;
char symbol;
} RECTANGLE;
RECTANGLE CalcArea (RECTANGLE r)
{
r.area = r.width * r.length;
return r;
}
We are passing an entire RECTANGLE to this function,
even though the function really does not need to see or
modify all of the members.
25
DATA COUPLING
Process
Results
Calculate
Grade
mark grade
Two modules are data coupled if they
communicate by passing parameters
and no extra data are passed.
Data coupling exhibits the properties
that all parameters to a module are
either simple data types, or in the case
of a record being passed as a parameter, all
data members of that record are
used/required by the module.
26
DATA COUPLING – MORE EXAMPLE
typedef struct rectangle
{
int length;
int width; 
int area;
int perimeter;
int color;
double diagonal;
char symbol;
} RECTANGLE;
int CalcArea(int width, int length)
{
int area;
area = width * length;
return area;
}
This is a better way to write the previous program. Here
we will be passing and returning only primitive data types.
They are all that is really needed by the functions and
now the functions are more general, too.
27
PRINCIPLE #5: COHESION
– The manner and degree to which the tasks
performed by a single software module are
related to one another.
– Measures how well design units are put
together for achieving a particular tasks.
28
COUPLING AND COHESION
–Cohesion is defined as the degree to which all elements
of a module, class, or component work together as a
functional unit. High cohesion is good, and low cohesion is
bad.
–Coupling is defined as the degree of interdependence
between two or more classes, modules, or
components. Tight coupling is bad, and loose coupling is
good.
29
LOOSE COUPLING - HIGH COHESION
30
In essence, high cohesion means keeping parts of a code base that are
related to each other in a single place. Low coupling, at the same
time, is about separating unrelated parts of the code base as much
as possible.
DEGREE OF
COHESION
High Cohesion
Low Cohesion
31
COINCIDENTAL COHESION
This is the weakest form of cohesion. Its
element have no meaningful relationship.
32
PROCEDURAL COHESION
– A module has procedural cohesion if all the
operations it performs are related to a sequence of
steps performed in the program.
– For example, if one of the sequence of operations in
the program was “read input from the keyboard,
validate it, and store the answers in global variables”,
that would be procedural cohesion.
33
operationA(){
readData(data,filename1);
processAData(data);
storeData(data,filename2);
}
readData(data,filename){ 
f = openfile(filename);
readrecords(f, data);
closefile(f);
}
storeData(data,filename)
{...}
processAData(data)
{...}
Module A
PROCEDURAL
COHESION EXAMPLE
34
INFORMATIONAL COHESION
– Information cohesion describe a module performing
a number of operations, each with a unique entry
point and independent code, and all operations are
performed on the same data.
– In information cohesion, each function in a module
must perform exactly one action
35
INFORMATIONAL COHESION
The Object-oriented approach naturally produce
designs with informational cohesion
– Each object in general has its own source code/file
– Each object operates on its own data which are
defined within the object.
– Each member function of the object should perform
one unique action/operation/function.
36
INFORMATIONAL COHESION EXAMPLE
class Airplane{
private double speed, altitude;
public void takeoff() {…}
public void fly() {…}
public void land() {…}
}
class Airplane
37
TYPES OF CODE
FROM A COHESION
AND COUPLING
PERSPECTIVE
38
http://enterprisecraftsmanship.co
m/2015/09/02/cohesion-
coupling-difference/
POORLY SELECT BOUNDARIES
as the result of High Coupling Low Cohesion
39
The problem here is that they
are selected improperly and
often do not reflect the actual
semantics of the domain.
DESTRUCTIVE DECOUPLING
as the result of low coupling, low cohesion
40
It sometimes occurs when a
programmer tries to decouple
a code base so much that the
code completely loses its
focus:
SEPARATION OF INTERFACE AND IMPLEMENTATION
This principle involves
defining a component
by specifying a public
interface (known to the
client of the
component) that is
separate from the details
of how the component
is realized.
Interface
Implementation
42
SEPARATION VS. ENCAPSULATION
How is this principle different from Encapsulation?
43
SEPARATION VS. ENCAPSULATION
“During encapsulation, interfaces are created to provide
public access to services provided by the design unit while
hiding unnecessary details, which include implementation.
While encapsulation dictates hiding the details of
implementation, the principle of separation dictates their
separation, so that different implementation of the same
interface can be swapped to provide modified or new
behavior.”
44
PRINCIPLE #7,8:
COMPLETENESS AND
SUFFICIENCY
– Completeness
measures how well
designed units provide
the required services to
achieve the intent (no
less).
– Sufficiency measures
how well the designed
units are at providing
only the services that
are sufficient for
achieving the intent
(no more).
45
Apple has really come up with lots of smart ideas
to improve simple app like photo editing which
reduces the number of clicks required and still get
the work done.
Completenessandsufficiency
46
PRACTICAL DESIGN CONSIDERATIONS
Design for minimizing complexity
Design for change
49

More Related Content

What's hot

Software Process Models
Software Process ModelsSoftware Process Models
Software Process ModelsHassan A-j
 
Unit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.pptUnit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.pptDrTThendralCompSci
 
extreme Programming
extreme Programmingextreme Programming
extreme ProgrammingBilal Shah
 
Software engineering : Layered Architecture
Software engineering : Layered ArchitectureSoftware engineering : Layered Architecture
Software engineering : Layered ArchitectureMuhammed Afsal Villan
 
Fundamental design concepts
Fundamental design conceptsFundamental design concepts
Fundamental design conceptssrijavel
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming Fatemeh Karimi
 
Chapter 01 software engineering pressman
Chapter 01  software engineering pressmanChapter 01  software engineering pressman
Chapter 01 software engineering pressmanRohitGoyal183
 
Address Binding Scheme
Address Binding SchemeAddress Binding Scheme
Address Binding SchemeRajesh Piryani
 
Use Case Diagram
Use Case DiagramUse Case Diagram
Use Case DiagramKumar
 
Design Pattern in Software Engineering
Design Pattern in Software EngineeringDesign Pattern in Software Engineering
Design Pattern in Software EngineeringManish Kumar
 
Architecture of operating system
Architecture of operating systemArchitecture of operating system
Architecture of operating systemSupriya Kumari
 
Line Of Code(LOC) In Software Engineering By NADEEM AHMED FROM DEPALPUR
Line Of Code(LOC) In Software Engineering By NADEEM AHMED FROM DEPALPURLine Of Code(LOC) In Software Engineering By NADEEM AHMED FROM DEPALPUR
Line Of Code(LOC) In Software Engineering By NADEEM AHMED FROM DEPALPURNA000000
 
Formal Specification in Software Engineering SE9
Formal Specification in Software Engineering SE9Formal Specification in Software Engineering SE9
Formal Specification in Software Engineering SE9koolkampus
 

What's hot (20)

Software design
Software designSoftware design
Software design
 
Software Process Models
Software Process ModelsSoftware Process Models
Software Process Models
 
Unit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.pptUnit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.ppt
 
extreme Programming
extreme Programmingextreme Programming
extreme Programming
 
Software engineering : Layered Architecture
Software engineering : Layered ArchitectureSoftware engineering : Layered Architecture
Software engineering : Layered Architecture
 
Rad model
Rad modelRad model
Rad model
 
PROTOTYPE MODEL
PROTOTYPE MODELPROTOTYPE MODEL
PROTOTYPE MODEL
 
Fundamental design concepts
Fundamental design conceptsFundamental design concepts
Fundamental design concepts
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming
 
Chapter 01 software engineering pressman
Chapter 01  software engineering pressmanChapter 01  software engineering pressman
Chapter 01 software engineering pressman
 
Address Binding Scheme
Address Binding SchemeAddress Binding Scheme
Address Binding Scheme
 
Waterfall model
Waterfall modelWaterfall model
Waterfall model
 
System testing
System testingSystem testing
System testing
 
unit testing and debugging
unit testing and debuggingunit testing and debugging
unit testing and debugging
 
Use Case Diagram
Use Case DiagramUse Case Diagram
Use Case Diagram
 
Design Pattern in Software Engineering
Design Pattern in Software EngineeringDesign Pattern in Software Engineering
Design Pattern in Software Engineering
 
Architecture of operating system
Architecture of operating systemArchitecture of operating system
Architecture of operating system
 
Line Of Code(LOC) In Software Engineering By NADEEM AHMED FROM DEPALPUR
Line Of Code(LOC) In Software Engineering By NADEEM AHMED FROM DEPALPURLine Of Code(LOC) In Software Engineering By NADEEM AHMED FROM DEPALPUR
Line Of Code(LOC) In Software Engineering By NADEEM AHMED FROM DEPALPUR
 
Software Engineering Practice
Software Engineering PracticeSoftware Engineering Practice
Software Engineering Practice
 
Formal Specification in Software Engineering SE9
Formal Specification in Software Engineering SE9Formal Specification in Software Engineering SE9
Formal Specification in Software Engineering SE9
 

Similar to software design principles

Similar to software design principles (20)

Oracle RI ETL process overview.
Oracle RI ETL process overview.Oracle RI ETL process overview.
Oracle RI ETL process overview.
 
DSD
DSDDSD
DSD
 
Chapter 1- IT.pptx
Chapter 1- IT.pptxChapter 1- IT.pptx
Chapter 1- IT.pptx
 
Readme
ReadmeReadme
Readme
 
Linux Assignment 3
Linux Assignment 3Linux Assignment 3
Linux Assignment 3
 
UDP Report
UDP ReportUDP Report
UDP Report
 
Principal of objected oriented programming
Principal of objected oriented programming Principal of objected oriented programming
Principal of objected oriented programming
 
Unit-III(Design).pptx
Unit-III(Design).pptxUnit-III(Design).pptx
Unit-III(Design).pptx
 
Java programming concept
Java programming conceptJava programming concept
Java programming concept
 
Introduction to problem solving in C
Introduction to problem solving in CIntroduction to problem solving in C
Introduction to problem solving in C
 
Go Faster With Native Compilation
Go Faster With Native CompilationGo Faster With Native Compilation
Go Faster With Native Compilation
 
Go faster with_native_compilation Part-2
Go faster with_native_compilation Part-2Go faster with_native_compilation Part-2
Go faster with_native_compilation Part-2
 
Algorithm
AlgorithmAlgorithm
Algorithm
 
Design concepts and principles
Design concepts and principlesDesign concepts and principles
Design concepts and principles
 
Lec1
Lec1Lec1
Lec1
 
Unit 4 final
Unit 4 finalUnit 4 final
Unit 4 final
 
Innoslate 4.5 and Sopatra
Innoslate 4.5 and SopatraInnoslate 4.5 and Sopatra
Innoslate 4.5 and Sopatra
 
System verilog important
System verilog importantSystem verilog important
System verilog important
 
Lecture 1.pptx
Lecture 1.pptxLecture 1.pptx
Lecture 1.pptx
 
Go Faster With Native Compilation
Go Faster With Native CompilationGo Faster With Native Compilation
Go Faster With Native Compilation
 

Recently uploaded

ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxAreebaZafar22
 
Single or Multiple melodic lines structure
Single or Multiple melodic lines structureSingle or Multiple melodic lines structure
Single or Multiple melodic lines structuredhanjurrannsibayan2
 
Plant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.pptxPlant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.pptxUmeshTimilsina1
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the ClassroomPooky Knightsmith
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...Nguyen Thanh Tu Collection
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfagholdier
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jisc
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibitjbellavia9
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17Celine George
 
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxCOMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxannathomasp01
 
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...Nguyen Thanh Tu Collection
 
How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17Celine George
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...Poonam Aher Patil
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024Elizabeth Walsh
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...ZurliaSoop
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSCeline George
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxJisc
 
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxExploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxPooja Bhuva
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxJisc
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxDenish Jangid
 

Recently uploaded (20)

ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
Single or Multiple melodic lines structure
Single or Multiple melodic lines structureSingle or Multiple melodic lines structure
Single or Multiple melodic lines structure
 
Plant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.pptxPlant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.pptx
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxCOMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
 
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
 
How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptx
 
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxExploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 

software design principles

  • 1. SOFTWARE DESIGN PRINCIPLES CRISTAL NGO ICT2106 – SOFTWARE DESIGN – WEEK 2
  • 2. PREVIOUSLY IN ICT2106 –What is software design? –Importance of software design –Software design process –What is a good design/software/process 2
  • 3. READING – Software engineering design, Carlos Otero, Chapter 1 (Software Design Fundamentals) 4
  • 4. GENERAL DESIGN PRINCIPLES 1. Modularization 2. Abstraction 3. Encapsulation 4. Coupling 5. Cohesion 6. Separation of interface and implementation 7. Sufficiency 8. Completeness 5
  • 5. PRINCIPLE #1: MODULARIZATION Modularization is the process of continuous decomposition of the software system until fine-grained components are created. When you modularize a design, you are also modularizing the requirements, programming and test cases. 6
  • 6. PRINCIPLE #2: ABSTRACTION Abstraction is “a view of an object that focuses on the information relevant to a particular purpose and ignores the remainder of the information” 7
  • 7. ABSTRACTION Abstraction can be employed to extract essential characteristics of: Procedures or behavior Data 8
  • 8. PROCEDURAL ABSTRACTION SEND(client, server, message) 1. Client retrieves the serverʼs information, 2. opens a TCP/IP connection, 3. sends the message, waits for response, and 4. closes the connection Simplifies reasoning about behavioural operations containing a sequence of steps 9
  • 9. DATA ABSTRACTION MESSAGE is an example of the data abstraction; the details of a MESSAGE can be deferred to later stages of the design phase. SEND(client, server, message) Simplifies reasoning about structural composition of data objects 10
  • 10. PRINCIPLE #3: ENCAPSULATION Encapsulation deals with providing access to services of abstracted entities by exposing only the information that is essential to carry out such services while hiding details of how the services are carried out. Information hiding: Internal details (state, structure, behavior) become the objectʼs secret 11
  • 11. ENCAPSULATION & INFORMATION HIDING – One can think of information hiding as the principle and encapsulation as the technique – Encapsulation is the public interface that defines how an object can be used, and how its data is derived. – Information Hiding prevents an external object from using the derived data altogether 13
  • 12. ENCAPSULATION & INFORMATION HIDING class Automobile extends Vehicle { public final static int EMPTY = 0; public final static int FULL = 1; public int tank = EMPTY; } Neither Encapsulation nor Information Hiding 14
  • 13. ENCAPSULATION & INFORMATION HIDING class Automobile extends Vehicle { public final static int EMPTY = 0; public final static int FULL = 1; private int tank = EMPTY; public int getTankStatus() { return this.tank; } public void setTankStatus( int status ){ this.tank = status; } } The status of the tank is now encapsulated, but NOT HIDDEN from the rest of the system. 15
  • 14. class Automobile extends Vehicle { private final static int EMPTY = 0; private final static int FULL = 1; private int tank = EMPTY; private int tank() {…} private void tank( int status ) {…} public void fillUp() { tank( FULL ); } public void depleteOzone() throws GasExhaustedException { if( tank() == FULL ) { tank( EMPTY ); } else { throw new GasExhaustedException(); } } } A simple interface fully Encapsulates and Hides Information: fillUp() and depleteOzone(). No other object in the system can use, or know the state of, the gas tank. 16
  • 15. MODULARIZATION, ABSTRACTION & ENCAPSULATION Focus on essential characteristics of entities Enforce that we only expose essential information 17
  • 16. PRINCIPLE #4: COUPLING The higher the coupling The higher the dependency Refers to the manner and degree of interdependence between software modules. Measurement of dependency between units. 18
  • 17. COUPLING: DEGREE OF DEPENDENCE AMONG COMPONENTS No dependencies Loosely coupled- some dependencies Highly coupled- many dependencies High coupling makes modifying parts of the system difficult, e.g., modifying a component affects all the components to which the component is connected 19
  • 18. Content Common Control Stamp Data TIGHT COUPLING LOOSE COUPLING More interdependency More coordination More information flow Less interdependency Less coordination Less information flow 21
  • 19. CONTENT COUPLING Definition: A module directly references the content of another module 1. Module p modifies a statement of module q 2. Module p refers to local data of module q (in terms of a numerical displacement) 3. Module p branches to a local label of module q 22
  • 20. COMMON COUPLING – Using global variables (i.e., global coupling) – All modules have read/write access to a global data block – Modules exchange data using the global data block (instead of arguments) Single module with write access where all other modules have read access is not common coupling 23
  • 21. COMMON COUPLING - EXAMPLE while( global_variable > 0 ){  switch( global_variable ){  case 1: function_a(); break; case 2: function_b(); break; ... case n: ... } global_variable++; } If function_a(), function_b(), etc can modify the value of global variable, then it can be extremely difficult to track the execution of this loop 24
  • 22. STAMP COUPING Occurs when too much information is passed to a function. typedef struct rectangle { int length; int width;  int area; int perimeter; int color; double diagonal; char symbol; } RECTANGLE; RECTANGLE CalcArea (RECTANGLE r) { r.area = r.width * r.length; return r; } We are passing an entire RECTANGLE to this function, even though the function really does not need to see or modify all of the members. 25
  • 23. DATA COUPLING Process Results Calculate Grade mark grade Two modules are data coupled if they communicate by passing parameters and no extra data are passed. Data coupling exhibits the properties that all parameters to a module are either simple data types, or in the case of a record being passed as a parameter, all data members of that record are used/required by the module. 26
  • 24. DATA COUPLING – MORE EXAMPLE typedef struct rectangle { int length; int width;  int area; int perimeter; int color; double diagonal; char symbol; } RECTANGLE; int CalcArea(int width, int length) { int area; area = width * length; return area; } This is a better way to write the previous program. Here we will be passing and returning only primitive data types. They are all that is really needed by the functions and now the functions are more general, too. 27
  • 25. PRINCIPLE #5: COHESION – The manner and degree to which the tasks performed by a single software module are related to one another. – Measures how well design units are put together for achieving a particular tasks. 28
  • 26. COUPLING AND COHESION –Cohesion is defined as the degree to which all elements of a module, class, or component work together as a functional unit. High cohesion is good, and low cohesion is bad. –Coupling is defined as the degree of interdependence between two or more classes, modules, or components. Tight coupling is bad, and loose coupling is good. 29
  • 27. LOOSE COUPLING - HIGH COHESION 30 In essence, high cohesion means keeping parts of a code base that are related to each other in a single place. Low coupling, at the same time, is about separating unrelated parts of the code base as much as possible.
  • 29. COINCIDENTAL COHESION This is the weakest form of cohesion. Its element have no meaningful relationship. 32
  • 30. PROCEDURAL COHESION – A module has procedural cohesion if all the operations it performs are related to a sequence of steps performed in the program. – For example, if one of the sequence of operations in the program was “read input from the keyboard, validate it, and store the answers in global variables”, that would be procedural cohesion. 33
  • 32. INFORMATIONAL COHESION – Information cohesion describe a module performing a number of operations, each with a unique entry point and independent code, and all operations are performed on the same data. – In information cohesion, each function in a module must perform exactly one action 35
  • 33. INFORMATIONAL COHESION The Object-oriented approach naturally produce designs with informational cohesion – Each object in general has its own source code/file – Each object operates on its own data which are defined within the object. – Each member function of the object should perform one unique action/operation/function. 36
  • 35. TYPES OF CODE FROM A COHESION AND COUPLING PERSPECTIVE 38 http://enterprisecraftsmanship.co m/2015/09/02/cohesion- coupling-difference/
  • 36. POORLY SELECT BOUNDARIES as the result of High Coupling Low Cohesion 39 The problem here is that they are selected improperly and often do not reflect the actual semantics of the domain.
  • 37. DESTRUCTIVE DECOUPLING as the result of low coupling, low cohesion 40 It sometimes occurs when a programmer tries to decouple a code base so much that the code completely loses its focus:
  • 38. SEPARATION OF INTERFACE AND IMPLEMENTATION This principle involves defining a component by specifying a public interface (known to the client of the component) that is separate from the details of how the component is realized. Interface Implementation 42
  • 39. SEPARATION VS. ENCAPSULATION How is this principle different from Encapsulation? 43
  • 40. SEPARATION VS. ENCAPSULATION “During encapsulation, interfaces are created to provide public access to services provided by the design unit while hiding unnecessary details, which include implementation. While encapsulation dictates hiding the details of implementation, the principle of separation dictates their separation, so that different implementation of the same interface can be swapped to provide modified or new behavior.” 44
  • 41. PRINCIPLE #7,8: COMPLETENESS AND SUFFICIENCY – Completeness measures how well designed units provide the required services to achieve the intent (no less). – Sufficiency measures how well the designed units are at providing only the services that are sufficient for achieving the intent (no more). 45
  • 42. Apple has really come up with lots of smart ideas to improve simple app like photo editing which reduces the number of clicks required and still get the work done. Completenessandsufficiency 46
  • 43. PRACTICAL DESIGN CONSIDERATIONS Design for minimizing complexity Design for change 49