SlideShare a Scribd company logo
Chapter 11
Component-Level Design
Software Engineering: A Practitioner’s Approach, 6th edition
by Roger S. Pressman
What is Comp. Level Design?
 A complete set of software components is
defined during architectural design
 But the internal data structures and processing
details of each component are not represented at
a level of abstraction that is close to code
 Component-level design defines the data
structures, algorithms, interface characteristics,
and communication mechanisms allocated to
each component

2
What is a component?
 “A modular, deployable, and
replaceable part of a system that
encapsulates implementation and
exposes a set of interfaces.”
— OMG UML Specification

3
Component Views
 OO View – A component is a set of
collaborating classes.
 Conventional View – A component is a
functional element of a program that
incorporates processing logic, the internal
data structures required to implement the
processing logic, and an interface that
enables the component to be invoked and
data to be passed to it.
4
Class Elaboration

5
Basic Design Principles





The Open-Closed Principle (OCP)
The Liskov Substitution Principle (LSP)
Dependency Inversion Principle (DIP)
The Interface Segregation Principle
(ISP)

6
Open-Closed Principle
 A module (component) should be open for extension
but closed for modification.

7
Substitutability
 Subclasses should be substitutable for their base
classes

8
Dependency Inversion
 Depend on abstractions. Do not depend on
concretions.
 That is in other words we can say that, the more a
component depends on other concrete components
(rather than on abstractions such as an interface),
the more difficult it will be to extend.

9
Interface Segregation
 Many client-specific interfaces are better than one
general purpose interface.

10
Additional Packaging Principles applied to
component level design
 The Release Reuse Equivalency Principle (REP) :
The granule of reuse is the granule of release.
Here it is often advisable to group reusable classes into
packages that can be managed and controlled as
newer versions evolve.
 The Common Closure Principle (CCP) : Classes that
change together belong together.
 The Common Reuse Principle (CRP) : Classes that
aren’t reused together should not be grouped
together.
11
Component Level Design Guidelines
 Components : Naming conventions should be
established for components
 Interfaces : should flow from the left-hand side of the
component box, only those interfaces that are
relevant to the component should be shown
 Dependencies and Inheritance : for improved
readability , model dependencies from left to right
and inheritance from bottom (derived classes) to top
(base classes)

12
Cohesion
 The “single-mindedness” of a module
 cohesion implies that a single component or class encapsulates
only attributes and operations that are closely related to one
another and to the class or component itself.

 Examples of cohesion
 Functional
 Layer
 Communicational
 Sequential
 Procedural
 Temporal
 Utility
13
Functional Cohesion
 Typically applies to operations. Occurs when a
module performs one and only one computation and
then returns a result.

14
Layer Cohesion
 Applies to packages,
components, and
classes. Occurs when a
higher layer can access
a lower layer, but lower
layers do not access
higher layers.

15
Communicational Cohesion
 All operations that access the same data are
defined within one class.
 In general, such classes focus solely on the
data in question, accessing and storing it.
 Example: A StudentRecord class that adds,
removes, updates, and accesses various
fields of a student record for client
components.
16
Coupling
 A qualitative measure of the degree to which classes
or components are connected to each other.
 Categories of Coupling:
• Content coupling
• Common Coupling
• Control coupling
• Stamp coupling
• Data Coupling

17
Coupling
•
•
•
•


Routine Call coupling
Type use Coupling
Inclusion or import coupling
External coupling
Avoid
 Content coupling

 Use caution
 Common coupling

 Be aware
 Routine call coupling
 Type use coupling
 Inclusion or import coupling

18
Content Coupling
 Occurs when one
component “surreptitiously
modifies data that is
internal to another
component”
 Violates information hiding
 What’s wrong here? →

public class StudentRecord {
private String name;
private int[ ] quizScores;
public String getName() {
return name;
}
public int getQuizScore(int n) {
return quizScores[n];
}
public int[ ] getAllQuizScores() {
return quizScores;
}
….

19
Common Coupling
 Occurs when a number of components all make use
of a global variable.
 Common coupling can lead to uncontrolled error
propagation and unforeseen side effects when
changes are made.

20
Routine Coupling
 Certain types of coupling occur routinely in objectoriented programming.

21
Component-Level Design
1.
2.
3.
4.
5.
6.
7.

Identify design classes in problem domain
Identify infrastructure design classes
Elaborate design classes
Describe persistent data sources
Elaborate behavioral representations
Elaborate deployment diagrams
Refactor design and consider alternatives

22
Steps 1 & 2 – Identify Classes
1. Most classes from the problem
domain are analysis classes created
as part of the analysis model
2. The infrastructure design classes are
introduced as components during
architectural design

23
Step 3 – Class Elaboration
a) Specify message details when classes
or components collaborate
b) Identify appropriate interfaces for each
component
c) Elaborate attributes and define data
structures required to implement them
d) Describe processing flow within each
operation in detail
24
3a. Collaboration Details
 Messages can be elaborated by expanding their
syntax in the following manner:
 [guard condition] sequence expression (return value) :=
message name (argument list)

25
3b. Appropriate Interfaces
 Pressman argues that the PrintJob interface
“initiateJob” in slide 5 does not exhibit sufficient
cohesion because it performs three different
subfunctions. He suggests this refactoring.

26
3c. Elaborate Attributes
 Analysis classes will typically only list names of
general attributes (ex. paperType).
 List all attributes during component design.
 UML syntax:
 name : type-expression = initial-value { property string }

 For example, paperType can be broken into weight,
size, and color. The weight attribute would be:
 paperType-weight: string =
“A” { contains 1 of 4 values – A, B, C, or D }

27
3d. Describe Processing Flow
 Activity diagram for
computePaperCost( )

28
Step 4 – Persistent Data
 Describe persistent
data sources
(databases and files)
and identify the
classes required to
manage them.

29
Step 5 – Elaborate Behavior
 It is sometimes
necessary to model
the behavior of a
design class.
 Transitions from
state to state have
the form:
 Event-name
(parameter-list)
[guard-condition] /
action expression

30
Step 6 – Elab. Deployment
 Deployment diagrams are elaborated to represent the
location of key packages or components.

31
Step 7 – Redesign/Reconsider
 The first component-level model you create
will not be as complete, consistent, or
accurate as the nth iteration you apply to the
model.
 The best designers will consider many
alternative design solutions before settling on
the final design model.

32

More Related Content

What's hot

Simple Obfuscation Tool for Software Protection
Simple Obfuscation Tool for Software ProtectionSimple Obfuscation Tool for Software Protection
Simple Obfuscation Tool for Software Protection
QUESTJOURNAL
 
Query Processing, Query Optimization and Transaction
Query Processing, Query Optimization and TransactionQuery Processing, Query Optimization and Transaction
Query Processing, Query Optimization and Transaction
Prabu U
 
8 drived horizontal fragmentation
8  drived horizontal fragmentation8  drived horizontal fragmentation
8 drived horizontal fragmentation
Mohsan Ijaz
 
The Database Environment Chapter 4
The Database Environment Chapter 4The Database Environment Chapter 4
The Database Environment Chapter 4
Jeanie Arnoco
 
Efficient & Lock-Free Modified Skip List in Concurrent Environment
Efficient & Lock-Free Modified Skip List in Concurrent EnvironmentEfficient & Lock-Free Modified Skip List in Concurrent Environment
Efficient & Lock-Free Modified Skip List in Concurrent Environment
Editor IJCATR
 
Database Design and the ER Model, Indexing and Hashing
Database Design and the ER Model, Indexing and HashingDatabase Design and the ER Model, Indexing and Hashing
Database Design and the ER Model, Indexing and Hashing
Prabu U
 
Unit 2
Unit 2Unit 2
C# Unit 1 notes
C# Unit 1 notesC# Unit 1 notes
C# Unit 1 notes
Sudarshan Dhondaley
 
Fragmentation and types of fragmentation in Distributed Database
Fragmentation and types of fragmentation in Distributed DatabaseFragmentation and types of fragmentation in Distributed Database
Fragmentation and types of fragmentation in Distributed Database
Abhilasha Lahigude
 
Abap object-oriented-programming-tutorials
Abap object-oriented-programming-tutorialsAbap object-oriented-programming-tutorials
Abap object-oriented-programming-tutorials
cesarmendez78
 
I012255862
I012255862I012255862
I012255862
IOSR Journals
 
Couplingand cohesion student
Couplingand cohesion studentCouplingand cohesion student
Couplingand cohesion student
saurabh kumar
 
Deployment Diagram
Deployment DiagramDeployment Diagram
Deployment Diagram
University of Texas at Dallas
 
4.o o design tools=uml -_lecture 4
4.o o design tools=uml -_lecture 44.o o design tools=uml -_lecture 4
4.o o design tools=uml -_lecture 4
Warui Maina
 
C# Unit 2 notes
C# Unit 2 notesC# Unit 2 notes
C# Unit 2 notes
Sudarshan Dhondaley
 
Advanced Structural Modeling
Advanced Structural ModelingAdvanced Structural Modeling
Advanced Structural Modeling
AMITJain879
 
Uml package diagram
Uml package  diagramUml package  diagram
Uml package diagram
Vedaraj M
 
Muleexpressiontransformer by nagarjuanreddy
Muleexpressiontransformer by nagarjuanreddyMuleexpressiontransformer by nagarjuanreddy
Muleexpressiontransformer by nagarjuanreddy
Nagarjuna reddy
 
Scope - Static and Dynamic
Scope - Static and DynamicScope - Static and Dynamic
Scope - Static and Dynamic
Sneh Pahilwani
 

What's hot (20)

Simple Obfuscation Tool for Software Protection
Simple Obfuscation Tool for Software ProtectionSimple Obfuscation Tool for Software Protection
Simple Obfuscation Tool for Software Protection
 
Query Processing, Query Optimization and Transaction
Query Processing, Query Optimization and TransactionQuery Processing, Query Optimization and Transaction
Query Processing, Query Optimization and Transaction
 
8 drived horizontal fragmentation
8  drived horizontal fragmentation8  drived horizontal fragmentation
8 drived horizontal fragmentation
 
The Database Environment Chapter 4
The Database Environment Chapter 4The Database Environment Chapter 4
The Database Environment Chapter 4
 
Efficient & Lock-Free Modified Skip List in Concurrent Environment
Efficient & Lock-Free Modified Skip List in Concurrent EnvironmentEfficient & Lock-Free Modified Skip List in Concurrent Environment
Efficient & Lock-Free Modified Skip List in Concurrent Environment
 
Database Design and the ER Model, Indexing and Hashing
Database Design and the ER Model, Indexing and HashingDatabase Design and the ER Model, Indexing and Hashing
Database Design and the ER Model, Indexing and Hashing
 
Unit 2
Unit 2Unit 2
Unit 2
 
C# Unit 1 notes
C# Unit 1 notesC# Unit 1 notes
C# Unit 1 notes
 
Fragmentation and types of fragmentation in Distributed Database
Fragmentation and types of fragmentation in Distributed DatabaseFragmentation and types of fragmentation in Distributed Database
Fragmentation and types of fragmentation in Distributed Database
 
Abap object-oriented-programming-tutorials
Abap object-oriented-programming-tutorialsAbap object-oriented-programming-tutorials
Abap object-oriented-programming-tutorials
 
I012255862
I012255862I012255862
I012255862
 
Couplingand cohesion student
Couplingand cohesion studentCouplingand cohesion student
Couplingand cohesion student
 
Deployment Diagram
Deployment DiagramDeployment Diagram
Deployment Diagram
 
4.o o design tools=uml -_lecture 4
4.o o design tools=uml -_lecture 44.o o design tools=uml -_lecture 4
4.o o design tools=uml -_lecture 4
 
C# Unit 2 notes
C# Unit 2 notesC# Unit 2 notes
C# Unit 2 notes
 
Advanced Structural Modeling
Advanced Structural ModelingAdvanced Structural Modeling
Advanced Structural Modeling
 
Uml package diagram
Uml package  diagramUml package  diagram
Uml package diagram
 
Training 8051Report
Training 8051ReportTraining 8051Report
Training 8051Report
 
Muleexpressiontransformer by nagarjuanreddy
Muleexpressiontransformer by nagarjuanreddyMuleexpressiontransformer by nagarjuanreddy
Muleexpressiontransformer by nagarjuanreddy
 
Scope - Static and Dynamic
Scope - Static and DynamicScope - Static and Dynamic
Scope - Static and Dynamic
 

Similar to Software engg. pressman_ch-11

Slides chapter 11
Slides chapter 11Slides chapter 11
Slides chapter 11
Priyanka Shetty
 
SE2018_Lec 15_ Software Design
SE2018_Lec 15_ Software DesignSE2018_Lec 15_ Software Design
SE2018_Lec 15_ Software Design
Amr E. Mohamed
 
Object Interconnections
Object InterconnectionsObject Interconnections
Object Interconnections
adil raja
 
Architecture and design
Architecture and designArchitecture and design
Architecture and design
himanshu_airon
 
Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-designOliver Cheng
 
Software Engineering - SOFTWARE DESIGN Process
Software Engineering - SOFTWARE DESIGN ProcessSoftware Engineering - SOFTWARE DESIGN Process
Software Engineering - SOFTWARE DESIGN Process
Dr Anuranjan Misra
 
CS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPT
CS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPTCS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPT
CS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPT
leela rani
 
SE UNIT-3.pdf
SE UNIT-3.pdfSE UNIT-3.pdf
SE UNIT-3.pdf
Dr. Radhey Shyam
 
Third AssignmentDescribe in 100 – 200 words an application with .docx
Third AssignmentDescribe in 100 – 200 words an application with .docxThird AssignmentDescribe in 100 – 200 words an application with .docx
Third AssignmentDescribe in 100 – 200 words an application with .docx
randymartin91030
 
Unit-III(Design).pptx
Unit-III(Design).pptxUnit-III(Design).pptx
Unit-III(Design).pptx
Fajar Baskoro
 
UNIT II STATIC UML DIAGRAMS.pptx
UNIT II STATIC UML DIAGRAMS.pptxUNIT II STATIC UML DIAGRAMS.pptx
UNIT II STATIC UML DIAGRAMS.pptx
anguraju1
 
4 pillars of OOPS CONCEPT
4 pillars of OOPS CONCEPT4 pillars of OOPS CONCEPT
4 pillars of OOPS CONCEPT
Ajay Chimmani
 
Object oriented sad-5 part ii
Object oriented sad-5 part iiObject oriented sad-5 part ii
Object oriented sad-5 part ii
Bisrat Girma
 
Seii unit7 component-level-design
Seii unit7 component-level-designSeii unit7 component-level-design
Seii unit7 component-level-design
Ahmad sohail Kakar
 
BARRACUDA, AN OPEN SOURCE FRAMEWORK FOR PARALLELIZING DIVIDE AND CONQUER ALGO...
BARRACUDA, AN OPEN SOURCE FRAMEWORK FOR PARALLELIZING DIVIDE AND CONQUER ALGO...BARRACUDA, AN OPEN SOURCE FRAMEWORK FOR PARALLELIZING DIVIDE AND CONQUER ALGO...
BARRACUDA, AN OPEN SOURCE FRAMEWORK FOR PARALLELIZING DIVIDE AND CONQUER ALGO...
IJCI JOURNAL
 
Component based models and technology
Component based models and technologyComponent based models and technology
Component based models and technology
Mayukh Maitra
 
Requirements modeling
Requirements modelingRequirements modeling
Requirements modeling
AnanthiP8
 
Component based models and technology
Component based models and technologyComponent based models and technology
Component based models and technologySaransh Garg
 
Design pattern (week 2)
Design pattern (week 2)Design pattern (week 2)
Design pattern (week 2)stanbridge
 

Similar to Software engg. pressman_ch-11 (20)

Slides chapter 11
Slides chapter 11Slides chapter 11
Slides chapter 11
 
SE2018_Lec 15_ Software Design
SE2018_Lec 15_ Software DesignSE2018_Lec 15_ Software Design
SE2018_Lec 15_ Software Design
 
Object Interconnections
Object InterconnectionsObject Interconnections
Object Interconnections
 
Architecture and design
Architecture and designArchitecture and design
Architecture and design
 
Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-design
 
Software Engineering - SOFTWARE DESIGN Process
Software Engineering - SOFTWARE DESIGN ProcessSoftware Engineering - SOFTWARE DESIGN Process
Software Engineering - SOFTWARE DESIGN Process
 
CS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPT
CS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPTCS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPT
CS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPT
 
SE UNIT-3.pdf
SE UNIT-3.pdfSE UNIT-3.pdf
SE UNIT-3.pdf
 
Third AssignmentDescribe in 100 – 200 words an application with .docx
Third AssignmentDescribe in 100 – 200 words an application with .docxThird AssignmentDescribe in 100 – 200 words an application with .docx
Third AssignmentDescribe in 100 – 200 words an application with .docx
 
Unit-III(Design).pptx
Unit-III(Design).pptxUnit-III(Design).pptx
Unit-III(Design).pptx
 
UNIT II STATIC UML DIAGRAMS.pptx
UNIT II STATIC UML DIAGRAMS.pptxUNIT II STATIC UML DIAGRAMS.pptx
UNIT II STATIC UML DIAGRAMS.pptx
 
4 pillars of OOPS CONCEPT
4 pillars of OOPS CONCEPT4 pillars of OOPS CONCEPT
4 pillars of OOPS CONCEPT
 
Encapsulation
EncapsulationEncapsulation
Encapsulation
 
Object oriented sad-5 part ii
Object oriented sad-5 part iiObject oriented sad-5 part ii
Object oriented sad-5 part ii
 
Seii unit7 component-level-design
Seii unit7 component-level-designSeii unit7 component-level-design
Seii unit7 component-level-design
 
BARRACUDA, AN OPEN SOURCE FRAMEWORK FOR PARALLELIZING DIVIDE AND CONQUER ALGO...
BARRACUDA, AN OPEN SOURCE FRAMEWORK FOR PARALLELIZING DIVIDE AND CONQUER ALGO...BARRACUDA, AN OPEN SOURCE FRAMEWORK FOR PARALLELIZING DIVIDE AND CONQUER ALGO...
BARRACUDA, AN OPEN SOURCE FRAMEWORK FOR PARALLELIZING DIVIDE AND CONQUER ALGO...
 
Component based models and technology
Component based models and technologyComponent based models and technology
Component based models and technology
 
Requirements modeling
Requirements modelingRequirements modeling
Requirements modeling
 
Component based models and technology
Component based models and technologyComponent based models and technology
Component based models and technology
 
Design pattern (week 2)
Design pattern (week 2)Design pattern (week 2)
Design pattern (week 2)
 

Recently uploaded

GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 

Recently uploaded (20)

GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 

Software engg. pressman_ch-11

  • 1. Chapter 11 Component-Level Design Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman
  • 2. What is Comp. Level Design?  A complete set of software components is defined during architectural design  But the internal data structures and processing details of each component are not represented at a level of abstraction that is close to code  Component-level design defines the data structures, algorithms, interface characteristics, and communication mechanisms allocated to each component 2
  • 3. What is a component?  “A modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of interfaces.” — OMG UML Specification 3
  • 4. Component Views  OO View – A component is a set of collaborating classes.  Conventional View – A component is a functional element of a program that incorporates processing logic, the internal data structures required to implement the processing logic, and an interface that enables the component to be invoked and data to be passed to it. 4
  • 6. Basic Design Principles     The Open-Closed Principle (OCP) The Liskov Substitution Principle (LSP) Dependency Inversion Principle (DIP) The Interface Segregation Principle (ISP) 6
  • 7. Open-Closed Principle  A module (component) should be open for extension but closed for modification. 7
  • 8. Substitutability  Subclasses should be substitutable for their base classes 8
  • 9. Dependency Inversion  Depend on abstractions. Do not depend on concretions.  That is in other words we can say that, the more a component depends on other concrete components (rather than on abstractions such as an interface), the more difficult it will be to extend. 9
  • 10. Interface Segregation  Many client-specific interfaces are better than one general purpose interface. 10
  • 11. Additional Packaging Principles applied to component level design  The Release Reuse Equivalency Principle (REP) : The granule of reuse is the granule of release. Here it is often advisable to group reusable classes into packages that can be managed and controlled as newer versions evolve.  The Common Closure Principle (CCP) : Classes that change together belong together.  The Common Reuse Principle (CRP) : Classes that aren’t reused together should not be grouped together. 11
  • 12. Component Level Design Guidelines  Components : Naming conventions should be established for components  Interfaces : should flow from the left-hand side of the component box, only those interfaces that are relevant to the component should be shown  Dependencies and Inheritance : for improved readability , model dependencies from left to right and inheritance from bottom (derived classes) to top (base classes)  12
  • 13. Cohesion  The “single-mindedness” of a module  cohesion implies that a single component or class encapsulates only attributes and operations that are closely related to one another and to the class or component itself.  Examples of cohesion  Functional  Layer  Communicational  Sequential  Procedural  Temporal  Utility 13
  • 14. Functional Cohesion  Typically applies to operations. Occurs when a module performs one and only one computation and then returns a result. 14
  • 15. Layer Cohesion  Applies to packages, components, and classes. Occurs when a higher layer can access a lower layer, but lower layers do not access higher layers. 15
  • 16. Communicational Cohesion  All operations that access the same data are defined within one class.  In general, such classes focus solely on the data in question, accessing and storing it.  Example: A StudentRecord class that adds, removes, updates, and accesses various fields of a student record for client components. 16
  • 17. Coupling  A qualitative measure of the degree to which classes or components are connected to each other.  Categories of Coupling: • Content coupling • Common Coupling • Control coupling • Stamp coupling • Data Coupling 17
  • 18. Coupling • • • •  Routine Call coupling Type use Coupling Inclusion or import coupling External coupling Avoid  Content coupling  Use caution  Common coupling  Be aware  Routine call coupling  Type use coupling  Inclusion or import coupling 18
  • 19. Content Coupling  Occurs when one component “surreptitiously modifies data that is internal to another component”  Violates information hiding  What’s wrong here? → public class StudentRecord { private String name; private int[ ] quizScores; public String getName() { return name; } public int getQuizScore(int n) { return quizScores[n]; } public int[ ] getAllQuizScores() { return quizScores; } …. 19
  • 20. Common Coupling  Occurs when a number of components all make use of a global variable.  Common coupling can lead to uncontrolled error propagation and unforeseen side effects when changes are made. 20
  • 21. Routine Coupling  Certain types of coupling occur routinely in objectoriented programming. 21
  • 22. Component-Level Design 1. 2. 3. 4. 5. 6. 7. Identify design classes in problem domain Identify infrastructure design classes Elaborate design classes Describe persistent data sources Elaborate behavioral representations Elaborate deployment diagrams Refactor design and consider alternatives 22
  • 23. Steps 1 & 2 – Identify Classes 1. Most classes from the problem domain are analysis classes created as part of the analysis model 2. The infrastructure design classes are introduced as components during architectural design 23
  • 24. Step 3 – Class Elaboration a) Specify message details when classes or components collaborate b) Identify appropriate interfaces for each component c) Elaborate attributes and define data structures required to implement them d) Describe processing flow within each operation in detail 24
  • 25. 3a. Collaboration Details  Messages can be elaborated by expanding their syntax in the following manner:  [guard condition] sequence expression (return value) := message name (argument list) 25
  • 26. 3b. Appropriate Interfaces  Pressman argues that the PrintJob interface “initiateJob” in slide 5 does not exhibit sufficient cohesion because it performs three different subfunctions. He suggests this refactoring. 26
  • 27. 3c. Elaborate Attributes  Analysis classes will typically only list names of general attributes (ex. paperType).  List all attributes during component design.  UML syntax:  name : type-expression = initial-value { property string }  For example, paperType can be broken into weight, size, and color. The weight attribute would be:  paperType-weight: string = “A” { contains 1 of 4 values – A, B, C, or D } 27
  • 28. 3d. Describe Processing Flow  Activity diagram for computePaperCost( ) 28
  • 29. Step 4 – Persistent Data  Describe persistent data sources (databases and files) and identify the classes required to manage them. 29
  • 30. Step 5 – Elaborate Behavior  It is sometimes necessary to model the behavior of a design class.  Transitions from state to state have the form:  Event-name (parameter-list) [guard-condition] / action expression 30
  • 31. Step 6 – Elab. Deployment  Deployment diagrams are elaborated to represent the location of key packages or components. 31
  • 32. Step 7 – Redesign/Reconsider  The first component-level model you create will not be as complete, consistent, or accurate as the nth iteration you apply to the model.  The best designers will consider many alternative design solutions before settling on the final design model. 32