SlideShare une entreprise Scribd logo
1  sur  49
UsingUML,Patterns,andJava
Object-OrientedSoftwareEngineering
Chapter 6
System Design:
Addressing Design
Goals
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2
System Design
2. Subsystem Decomposition
Layers vs Partitions
Coherence/Coupling
4. Hardware/
Software Mapping
Special Purpose
Buy vs Build
Allocation of Resources
Connectivity
5. Data
Management
Persistent Objects
File system vs Database
Access Control List
vs Capabilities
Security
6. Global Resource
Handlung
8. Boundary
Conditions
Initialization
Termination
Failure
3. Concurrency
Identification of
Threads
7. Software
Control
Monolithic
Event-Driven
Conc. Processes
1. Design Goals
Definition
Trade-offs
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3
Concurrency
• Nonfunctional Requirements to be addressed:
Performance, Response time, latency,
availability.
• Two objects are inherently concurrent if they
can receive events at the same time without
interacting
• Source for identification: Objects in a sequence
diagram that can simultaneously receive events
• Unrelated events, instances of the same event
• Inherently concurrent objects can be assigned to
different threads of control
• Objects with mutual exclusive activity could be
folded into a single thread of control
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4
Thread of Control
• A thread of control is a path through a set of
state diagrams on which a single object is active
at a time
• A thread remains within a state diagram until an object
sends an event to different object and waits for
another event
• Thread splitting: Object does a non-blocking send of an
event to another object.
• Concurrent threads can lead to race conditions.
• A race condition (also race hazard) is a design
flaw where the output of a process is depends
on the specific sequence of other events.
• The name originated in digital circuit design: Two
signals racing each other to influence the output.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5
Example: Problem with threads
:BankAccount
c1:Customer c2:Customer
:WithdrawCtrl :WithdrawCtrl
getBalance()
200
withdraw(50)
setBalance(150)
getBalance()
200
withdraw(50)
setBalance(150)
computeNewBalance(200,50)
computeNewBalance(200,50)
Assume: Initial
balance = 200
Final
balance = 150 ??!
Thread 1
Thread 2
Should BankAccount
be another Thread ?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6
Solution: Synchronization of Threads
c1:Customer c2:Customer
:BankAccount:WithdrawCtrl
getBalance()
200
withdraw(50)
setBalance(150)
computeNewBalance(200,50)
Initial
balance = 200
withdraw(50)
Single WithdrawCtrl
Instance
Synchronized method
End
balance = 100
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7
Concurrency Questions
• To identify threads for concurrency we ask the
following questions:
• Does the system provide access to multiple users?
• Which entity objects of the object model can be
executed independently from each other?
• What kinds of control objects are identifiable?
• Can a single request to the system be decomposed into
multiple requests? Can these requests and handled in
parallel? (Example: a distributed query)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8
Implementing Concurrency
• Concurrent systems can be implemented on any
system that provides
• Physical concurrency: Threads are provided by hardware
or
• Logical concurrency: Threads are provided by software
• Physical concurrency is provided by
multiprocessors and computer networks
• Logical concurrency is provided by threads
packages.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9
Implementing Concurrency (2)
• In both cases, - physical concurrency as well as
logical concurrency - we have to solve the
scheduling of these threads:
• Which thread runs when?
• Today’s operating systems provide a variety of
scheduling mechanisms:
• Round robin, time slicing, collaborating processes,
interrupt handling
• General question addresses starvation,
deadlocks, fairness -> Topic for researchers in
operating systems
• Sometimes we have to solve the scheduling
problem ourselves
• Topic addressed by software control (system design
topic 7).
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10
System Design
2. Subsystem Decomposition
Layers vs Partitions
Coherence/Coupling
 4. Hardware/
Software Mapping
Special Purpose
Buy vs Build
Allocation of Resources
Connectivity
5. Data
Management
Persistent Objects
Filesystem vs Database
Access Control List
vs Capabilities
Security
6. Global Resource
Handlung
8. Boundary
Conditions
Initialization
Termination
Failure
3. Concurrency
Identification of
Threads
7. Software
Control
Monolithic
Event-Driven
Conc. Processes
1. Design Goals
Definition
Trade-offs
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
4. Hardware Software Mapping
• This system design activity addresses two
questions:
• How shall we realize the subsystems: With hardware or
with software?
• How do we map the object model onto the chosen
hardware and/or software?
• Mapping the Objects:
• Processor, Memory, Input/Output
• Mapping the Associations:
• Network connections
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
Mapping Objects onto Hardware
• Control Objects -> Processor
• Is the computation rate too demanding for a single
processor?
• Can we get a speedup by distributing objects across
several processors?
• How many processors are required to maintain a
steady state load?
• Entity Objects -> Memory
• Is there enough memory to buffer bursts of requests?
• Boundary Objects -> Input/Output Devices
• Do we need an extra piece of hardware to handle the
data generation rates?
• Can the desired response time be realized with the
available communication bandwidth between
subsystems?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Mapping the Associations: Connectivity
• Describe the physical connectivity
• (“physical layer in the OSI Reference Model”)
• Describes which associations in the object model
are mapped to physical connections.
• Describe the logical connectivity (subsystem
associations)
• Associations that do not directly map into physical
connections.
• In which layer should these associations be
implemented?
• Informal connectivity drawings often contain
both types of connectivity
• Practiced by many developers, sometimes confusing.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
DistributedDatabaseArchitecture Tue, Oct 13, 1992 12:53 AM
Application
Client
Application
Client
Application
Client
Communication
Agent for
Application Clients
Communication
Agent for
Application Clients
Communication
Agent for Data
Server
Communication
Agent for Data
Server
Local Data
Server
Global Data
Server
Global
Data
Server
Global
Data
Server
OODBMS
RDBMS
Backbone Network
LAN
LAN
LAN
TCP/IP
Ethernet Cat 5
Physical
Connectivity
Logical
Connectivity
Example: Informal Connectivity Drawing
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
Logical vs Physical Connectivity and the
relationship to Subsystem Layering
Application LayerApplication Layer
Presentation Layer
Session Layer
Transport Layer
Network Layer
Data Link Layer
Physical Layer
Bidirectional associa-
tions for each layer
Presentation Layer
Session Layer
Transport Layer
Network Layer
Data Link Layer
Physical Layer
Processor 1 Processor 2
Logical
Connectivity
Physical
Connectivity
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
Hardware-Software Mapping Difficulties
• Much of the difficulty of designing a system
comes from addressing externally-imposed
hardware and software constraints
• Certain tasks have to be at specific locations
• Example: Withdrawing money from an ATM
machine
• Some hardware components have to be used from a
specific manufacturer
• Example: To send DVB-T signals, the system has to
use components from a company that provides
DVB-T transmitters.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17
Hardware/Software Mappings in UML
• A UML component is a building block of the system.
It is represented as a rectangle with a tabbed
rectangle symbol inside
• Components have different lifetimes:
• Some exist only at design time
• Classes, associations
• Others exist until compile time
• Source code, pointers
• Some exist at link or only at runtime
• Linkable libraries, executables, addresses
• The Hardware/Software Mapping addresses
dependencies and distribution issues of UML
components during system design.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18
Two New UML Diagram Types
• Deployment Diagram:
• Illustrates the distribution of components at run-time.
• Deployment diagrams use nodes and connections to
depict the physical resources in the system.
• Component Diagram:
• Illustrates dependencies between components at
design time, compilation time and runtime
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19
• Deployment diagrams are useful for showing a
system design after these system design
decisions have been made:
• Subsystem decomposition
• Concurrency
• Hardware/Software Mapping
• A deployment diagram is a graph of nodes and
connections (“communication associations”)
• Nodes are shown as 3-D boxes
• Connections between nodes are shown as solid lines
• Nodes may contain components
• Components can be connected by “lollipops” and
“grabbers”
• Components may contain objects (indicating that
the object is part of the component).
:PC
Deployment Diagram
:Server
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20
UML Component Diagram
• Used to model the top-level view of the system
design in terms of components and dependencies
among the components. Components can be
• source code, linkable libraries, executables
• The dependencies (edges in the graph) are shown
as dashed lines with arrows from the client
component to the supplier component:
• The lines are often also called connectors
• The types of dependencies are implementation language
specific
• Informally also called “software wiring diagram“
because it show how the software components are
wired together in the overall application.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21
UML Interfaces: Lollipops and Sockets
• A UML interface describes a group of operations
used or created by UML components.
• There are two types of interfaces: provided and
required interfaces.
• A provided interface is modeled using the lollipop
notation
• A required interface is modeled using the socket
notation.
• A port specifies a distinct interaction point
between the component and its environment.
• Ports are depicted as small squares on the sides of
classifiers.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
Component Diagram Example
UML Interface
UML
Component
reservations
update
Dependency.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23
Deployment Diagram Example
Dependency
(between nodes)
Dependency
(in a node)UML Node
UML
Interface
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
ARENA Deployment Diagram
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25
Another ARENA Deployment Diagram
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26
5. Data Management
• Some objects in the system model need to be
persistent:
• Values for their attributes have a lifetime longer than a
single execution
• A persistent object can be realized with one of
the following mechanisms:
• Filesystem:
• If the data are used by multiple readers but a
single writer
• Database:
• If the data are used by concurrent writers and
readers.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27
Data Management Questions
• How often is the database accessed?
• What is the expected request (query) rate? The worst
case?
• What is the size of typical and worst case requests?
• Do the data need to be archived?
• Should the data be distributed?
• Does the system design try to hide the location of the
databases (location transparency)?
• Is there a need for a single interface to access
the data?
• What is the query format?
• Should the data format be extensible?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28
Mapping Object Models
• UML object models can be mapped to relational
databases
• The mapping:
• Each class is mapped to its own table
• Each class attribute is mapped to a column in the table
• An instance of a class represents a row in the table
• One-to-many associations are implemented with a
buried foreign key
• Many-to-many associations are mapped to their own
tables
• Methods are not mapped
• More details in Lecture: Mapping Models to
Relational Schema
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29
6. Global Resource Handling
• Discusses access control
• Describes access rights for different classes of
actors
• Describes how object guard against
unauthorized access.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30
Defining Access Control
• In multi-user systems different actors usually
have different access rights to different
functionality and data
• How do we model these accesses?
• During analysis we model them by associating different
use cases with different actors
• During system design we model them determining
which objects are shared among actors.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31
Access Matrix
• We model access on classes with an access
matrix:
• The rows of the matrix represents the actors of the
system
• The column represent classes whose access we want to
control
• Access Right: An entry in the access matrix. It
lists the operations that can be executed on
instances of the class by the actor.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32
Access Matrix Example
Arena League
Operator
LeagueOwner
Player
Spectator
Tournament
<<create>>
archive()
schedule()
view()
applyFor()
view()
view()
<<create>>
createUser()
view ()
view ()
view()
applyForPlayer()
view()
applyForOwner()
<<create>>
archive()
view()
subscribe()
view()
subscribe()
edit ()
Match
<<create>>
end()
play()
forfeit()
view()
replay()
Actors
Classes Access Rights
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33
Access Matrix Implementations
• Global access table: Represents explicitly every
cell in the matrix as a triple (actor,class,
operation)
LeagueOwner, Arena, view()
LeagueOwner, League, edit()
LeagueOwner, Tournament, <<create>>
LeagueOwner, Tournament, view()
LeagueOwner, Tournament, schedule()
LeagueOwner, Tournament, archive()
LeagueOwner, Match, <<create>>
LeagueOwner, Match, end()
.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34
Better Access Matrix Implementations
• Access control list
• Associates a list of (actor,operation) pairs with each
class to be accessed.
• Every time an instance of this class is accessed, the
access list is checked for the corresponding actor and
operation.
• Capability
• Associates a (class,operation) pair with an actor.
• A capability provides an actor to gain control access to
an object of the class described in the capability.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35
Arena League
Operator
LeagueOwner
Player
Spectator
Tournament
<<create>>
archive()
schedule()
view()
applyFor()
view()
view()
<<create>>
createUser()
view ()
view ()
view()
applyForPlayer()
view()
applyForOwner()
<<create>>
archive()
view()
subscribe()
view()
subscribe()
edit ()
Match
<<create>>
end()
play()
forfeit()
view()
replay()
Access Matrix Example
Player
Match
play()
forfeit()
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36
Player
Match
play()
forfeit()
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37
Access Control List Realization
joe:Player
m1:Match
joe may play
alice may play
I am joe,
I want to play
in match m1
Gatekeeper checks
identification against
list and allows access.
Access Control
List for m1
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38
Capability Realization
joe:Player
m1:Match
Capability
Here’s my ticket, I’d
like to play in
match m1
Gatekeeper checks if
ticket is valid and
allows access.
Ticket for
match “m1”
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39
Global Resource Questions
• Does the system need authentication?
• If yes, what is the authentication scheme?
• User name and password? Access control list
• Tickets? Capability-based
• What is the user interface for authentication?
• Does the system need a network-wide name
server?
• How is a service known to the rest of the
system?
• At runtime? At compile time?
• By Port?
• By Name?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40
7. Decide on Software Control
Two major design choices:
1. Choose implicit control
2. Choose explicit control
• Centralized or decentralized
• Centralized control:
• Procedure-driven: Control resides within program code.
• Event-driven: Control resides within a dispatcher calling
functions via callbacks.
• Decentralized control
• Control resides in several independent objects.
• Examples: Message based system, RMI
• Possible speedup by mapping the objects on different
processors, increased communication overhead.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 41
Software Control
Explicit Control Implicit Control
Rule-based
Control
Logic Programming
Event-based
Control
Procedural
Control.
Centralized
Control
Decentralized
Control
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 42
Centralized vs. Decentralized Designs
• Centralized Design
• One control object or subsystem ("spider") controls
everything
• Pro: Change in the control structure is very easy
• Con: The single control object is a possible
performance bottleneck
• Decentralized Design
• Not a single object is in control, control is distributed;
That means, there is more than one control object
• Con: The responsibility is spread out
• Pro: Fits nicely into object-oriented development
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 43
Centralized vs. Decentralized Designs (2)
• Should you use a centralized or decentralized
design?
• Take the sequence diagrams and control objects
from the analysis model
• Check the participation of the control objects in
the sequence diagrams
• If the sequence diagram looks like a fork =>
Centralized design
• If the sequence diagram looks like a stair =>
Decentralized design.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44
8. Boundary Conditions
• Initialization
• The system is brought from a non-initialized state to
steady-state
• Termination
• Resources are cleaned up and other systems are
notified upon termination
• Failure
• Possible failures: Bugs, errors, external problems
• Good system design foresees fatal failures and
provides mechanisms to deal with them.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 45
Boundary Condition Questions
• Initialization
• What data need to be accessed at startup time?
• What services have to registered?
• What does the user interface do at start up time?
• Termination
• Are single subsystems allowed to terminate?
• Are subsystems notified if a single subsystem
terminates?
• How are updates communicated to the database?
• Failure
• How does the system behave when a node or
communication link fails?
• How does the system recover from failure?.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 46
Modeling Boundary Conditions
• Boundary conditions are best modeled as use
cases with actors and objects
• We call them boundary use cases or
administrative use cases
• Actor: often the system administrator
• Interesting use cases:
• Start up of a subsystem
• Start up of the full system
• Termination of a subsystem
• Error in a subsystem or component, failure of a
subsystem or component.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 47
Example: Boundary Use Case for ARENA
• Let us assume, we identified the subsystem
AdvertisementServer during system design
• This server takes a big load during the holiday
season
• During hardware software mapping we decide to
dedicate a special node for this server
• For this node we define a new boundary use
case ManageServer
• ManageServer includes all the functions
necessary to start up and shutdown the
AdvertisementServer.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 48
ManageServer Boundary Use Case
Server
Administrator
ManageServer
StartServer
ShutdownServer
ConfigureServer
<<include>>
<<include>>
<<include>>
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 49
Summary
• System design activities:
• Concurrency identification
• Hardware/Software mapping
• Persistent data management
• Global resource handling
• Software control selection
• Boundary conditions
• Each of these activities may affect the
subsystem decomposition
• Two new UML Notations
• UML Component Diagram: Showing compile time and
runtime dependencies between subsystems
• UML Deployment Diagram: Drawing the runtime
configuration of the system.

Contenu connexe

Tendances

Tendances (20)

Ch08lect3 ud
Ch08lect3 udCh08lect3 ud
Ch08lect3 ud
 
Ch09lect2 ud
Ch09lect2 udCh09lect2 ud
Ch09lect2 ud
 
Ch10lect2 ud
Ch10lect2 udCh10lect2 ud
Ch10lect2 ud
 
Ch03lect2 ud
Ch03lect2 udCh03lect2 ud
Ch03lect2 ud
 
Ch01lect1 ud
Ch01lect1 udCh01lect1 ud
Ch01lect1 ud
 
Ch08lect1 ud
Ch08lect1 udCh08lect1 ud
Ch08lect1 ud
 
Ch02lect1 ud
Ch02lect1 udCh02lect1 ud
Ch02lect1 ud
 
Ch05lect2 ud
Ch05lect2 udCh05lect2 ud
Ch05lect2 ud
 
08 component level_design
08 component level_design08 component level_design
08 component level_design
 
Software Design Patterns
Software Design PatternsSoftware Design Patterns
Software Design Patterns
 
Design patterns structuralpatterns(theadapterpattern)
Design patterns structuralpatterns(theadapterpattern)Design patterns structuralpatterns(theadapterpattern)
Design patterns structuralpatterns(theadapterpattern)
 
Design Pattern For C# Part 1
Design Pattern For C# Part 1Design Pattern For C# Part 1
Design Pattern For C# Part 1
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Design pattern
Design patternDesign pattern
Design pattern
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
JAVA design patterns and Basic OOp concepts
JAVA design patterns and Basic OOp conceptsJAVA design patterns and Basic OOp concepts
JAVA design patterns and Basic OOp concepts
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Software design
Software designSoftware design
Software design
 
Generative Software Development. Overview and Examples
Generative Software Development. Overview and ExamplesGenerative Software Development. Overview and Examples
Generative Software Development. Overview and Examples
 
Software design patterns ppt
Software design patterns pptSoftware design patterns ppt
Software design patterns ppt
 

En vedette

ASP.NET System design 2
ASP.NET System design 2ASP.NET System design 2
ASP.NET System design 2Sisir Ghosh
 
Abbott's Textual Analysis : Software Engineering 2
Abbott's Textual Analysis : Software Engineering 2Abbott's Textual Analysis : Software Engineering 2
Abbott's Textual Analysis : Software Engineering 2wahab13
 
Object Modeling with UML: Behavioral Modeling
Object Modeling with UML: Behavioral ModelingObject Modeling with UML: Behavioral Modeling
Object Modeling with UML: Behavioral Modelingelliando dias
 
Unified Modeling Language (UML), Object-Oriented Programming Concepts & Desig...
Unified Modeling Language (UML), Object-Oriented Programming Concepts & Desig...Unified Modeling Language (UML), Object-Oriented Programming Concepts & Desig...
Unified Modeling Language (UML), Object-Oriented Programming Concepts & Desig...Isuru Perera
 
Texture mapping
Texture mapping Texture mapping
Texture mapping wahab13
 
Object Oriented Software Engineering
Object Oriented Software EngineeringObject Oriented Software Engineering
Object Oriented Software EngineeringAli Haider
 
2-Software Design (Object Oriented Software Engineering - BNU Spring 2017)
2-Software Design (Object Oriented Software Engineering - BNU Spring 2017)2-Software Design (Object Oriented Software Engineering - BNU Spring 2017)
2-Software Design (Object Oriented Software Engineering - BNU Spring 2017)Hafiz Ammar Siddiqui
 
3-Software Anti Design Patterns (Object Oriented Software Engineering - BNU S...
3-Software Anti Design Patterns (Object Oriented Software Engineering - BNU S...3-Software Anti Design Patterns (Object Oriented Software Engineering - BNU S...
3-Software Anti Design Patterns (Object Oriented Software Engineering - BNU S...Hafiz Ammar Siddiqui
 
Object oriented software engineering concepts
Object oriented software engineering conceptsObject oriented software engineering concepts
Object oriented software engineering conceptsKomal Singh
 

En vedette (10)

ASP.NET System design 2
ASP.NET System design 2ASP.NET System design 2
ASP.NET System design 2
 
Abbott's Textual Analysis : Software Engineering 2
Abbott's Textual Analysis : Software Engineering 2Abbott's Textual Analysis : Software Engineering 2
Abbott's Textual Analysis : Software Engineering 2
 
organization charts....rules
organization charts....rulesorganization charts....rules
organization charts....rules
 
Object Modeling with UML: Behavioral Modeling
Object Modeling with UML: Behavioral ModelingObject Modeling with UML: Behavioral Modeling
Object Modeling with UML: Behavioral Modeling
 
Unified Modeling Language (UML), Object-Oriented Programming Concepts & Desig...
Unified Modeling Language (UML), Object-Oriented Programming Concepts & Desig...Unified Modeling Language (UML), Object-Oriented Programming Concepts & Desig...
Unified Modeling Language (UML), Object-Oriented Programming Concepts & Desig...
 
Texture mapping
Texture mapping Texture mapping
Texture mapping
 
Object Oriented Software Engineering
Object Oriented Software EngineeringObject Oriented Software Engineering
Object Oriented Software Engineering
 
2-Software Design (Object Oriented Software Engineering - BNU Spring 2017)
2-Software Design (Object Oriented Software Engineering - BNU Spring 2017)2-Software Design (Object Oriented Software Engineering - BNU Spring 2017)
2-Software Design (Object Oriented Software Engineering - BNU Spring 2017)
 
3-Software Anti Design Patterns (Object Oriented Software Engineering - BNU S...
3-Software Anti Design Patterns (Object Oriented Software Engineering - BNU S...3-Software Anti Design Patterns (Object Oriented Software Engineering - BNU S...
3-Software Anti Design Patterns (Object Oriented Software Engineering - BNU S...
 
Object oriented software engineering concepts
Object oriented software engineering conceptsObject oriented software engineering concepts
Object oriented software engineering concepts
 

Similaire à Ch07lect1 ud

L14_DesignGoalsSubsystemDecompositionc_ch06lect1.ppt
L14_DesignGoalsSubsystemDecompositionc_ch06lect1.pptL14_DesignGoalsSubsystemDecompositionc_ch06lect1.ppt
L14_DesignGoalsSubsystemDecompositionc_ch06lect1.pptAronBalais1
 
L14_DesignGoalsSubsystemDecompositionc_ch06lect1.ppt
L14_DesignGoalsSubsystemDecompositionc_ch06lect1.pptL14_DesignGoalsSubsystemDecompositionc_ch06lect1.ppt
L14_DesignGoalsSubsystemDecompositionc_ch06lect1.pptAxmedMaxamuud6
 
Unit-III(Design).pptx
Unit-III(Design).pptxUnit-III(Design).pptx
Unit-III(Design).pptxFajar Baskoro
 
OOSE Ch1 Introduction
OOSE Ch1 IntroductionOOSE Ch1 Introduction
OOSE Ch1 IntroductionBenny Chen
 
Software Engineering Lec 2
Software Engineering Lec 2Software Engineering Lec 2
Software Engineering Lec 2Taymoor Nazmy
 
Lecture 1 uml with java implementation
Lecture 1 uml with java implementationLecture 1 uml with java implementation
Lecture 1 uml with java implementationthe_wumberlog
 
Crafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectCrafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectColdFusionConference
 
【Unite 2018 Tokyo】C# Job SystemとECS(Entity Component System)解説
【Unite 2018 Tokyo】C# Job SystemとECS(Entity Component System)解説【Unite 2018 Tokyo】C# Job SystemとECS(Entity Component System)解説
【Unite 2018 Tokyo】C# Job SystemとECS(Entity Component System)解説Unity Technologies Japan K.K.
 
Chapter 7 Design Architecture and Methodology1.docx
Chapter 7 Design Architecture and Methodology1.docxChapter 7 Design Architecture and Methodology1.docx
Chapter 7 Design Architecture and Methodology1.docxmccormicknadine86
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part iBisrat Girma
 
Software Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptxSoftware Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptxgauriVarshney8
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableComsysto Reply GmbH
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyComsysto Reply GmbH
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyComsysto Reply GmbH
 
Ch1Ch2Sept10.pdf
Ch1Ch2Sept10.pdfCh1Ch2Sept10.pdf
Ch1Ch2Sept10.pdfSamSami69
 
Reengineering including reverse & forward Engineering
Reengineering including reverse & forward EngineeringReengineering including reverse & forward Engineering
Reengineering including reverse & forward EngineeringMuhammad Chaudhry
 

Similaire à Ch07lect1 ud (20)

L14_DesignGoalsSubsystemDecompositionc_ch06lect1.ppt
L14_DesignGoalsSubsystemDecompositionc_ch06lect1.pptL14_DesignGoalsSubsystemDecompositionc_ch06lect1.ppt
L14_DesignGoalsSubsystemDecompositionc_ch06lect1.ppt
 
L14_DesignGoalsSubsystemDecompositionc_ch06lect1.ppt
L14_DesignGoalsSubsystemDecompositionc_ch06lect1.pptL14_DesignGoalsSubsystemDecompositionc_ch06lect1.ppt
L14_DesignGoalsSubsystemDecompositionc_ch06lect1.ppt
 
ch01lect1.ppt
ch01lect1.pptch01lect1.ppt
ch01lect1.ppt
 
Unit-III(Design).pptx
Unit-III(Design).pptxUnit-III(Design).pptx
Unit-III(Design).pptx
 
Lo 11
Lo 11Lo 11
Lo 11
 
OOSE Ch1 Introduction
OOSE Ch1 IntroductionOOSE Ch1 Introduction
OOSE Ch1 Introduction
 
Software Engineering Lec 2
Software Engineering Lec 2Software Engineering Lec 2
Software Engineering Lec 2
 
Lecture 1 uml with java implementation
Lecture 1 uml with java implementationLecture 1 uml with java implementation
Lecture 1 uml with java implementation
 
Crafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectCrafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an Architect
 
【Unite 2018 Tokyo】C# Job SystemとECS(Entity Component System)解説
【Unite 2018 Tokyo】C# Job SystemとECS(Entity Component System)解説【Unite 2018 Tokyo】C# Job SystemとECS(Entity Component System)解説
【Unite 2018 Tokyo】C# Job SystemとECS(Entity Component System)解説
 
Chapter 7 Design Architecture and Methodology1.docx
Chapter 7 Design Architecture and Methodology1.docxChapter 7 Design Architecture and Methodology1.docx
Chapter 7 Design Architecture and Methodology1.docx
 
Clean sw 3_architecture
Clean sw 3_architectureClean sw 3_architecture
Clean sw 3_architecture
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part i
 
Software Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptxSoftware Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptx
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuable
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and Consistently
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and Consistently
 
Ch1Ch2Sept10.pdf
Ch1Ch2Sept10.pdfCh1Ch2Sept10.pdf
Ch1Ch2Sept10.pdf
 
Reengineering including reverse & forward Engineering
Reengineering including reverse & forward EngineeringReengineering including reverse & forward Engineering
Reengineering including reverse & forward Engineering
 
AUTODESK 2017
AUTODESK 2017 AUTODESK 2017
AUTODESK 2017
 

Ch07lect1 ud

  • 2. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2 System Design 2. Subsystem Decomposition Layers vs Partitions Coherence/Coupling 4. Hardware/ Software Mapping Special Purpose Buy vs Build Allocation of Resources Connectivity 5. Data Management Persistent Objects File system vs Database Access Control List vs Capabilities Security 6. Global Resource Handlung 8. Boundary Conditions Initialization Termination Failure 3. Concurrency Identification of Threads 7. Software Control Monolithic Event-Driven Conc. Processes 1. Design Goals Definition Trade-offs
  • 3. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3 Concurrency • Nonfunctional Requirements to be addressed: Performance, Response time, latency, availability. • Two objects are inherently concurrent if they can receive events at the same time without interacting • Source for identification: Objects in a sequence diagram that can simultaneously receive events • Unrelated events, instances of the same event • Inherently concurrent objects can be assigned to different threads of control • Objects with mutual exclusive activity could be folded into a single thread of control
  • 4. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4 Thread of Control • A thread of control is a path through a set of state diagrams on which a single object is active at a time • A thread remains within a state diagram until an object sends an event to different object and waits for another event • Thread splitting: Object does a non-blocking send of an event to another object. • Concurrent threads can lead to race conditions. • A race condition (also race hazard) is a design flaw where the output of a process is depends on the specific sequence of other events. • The name originated in digital circuit design: Two signals racing each other to influence the output.
  • 5. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5 Example: Problem with threads :BankAccount c1:Customer c2:Customer :WithdrawCtrl :WithdrawCtrl getBalance() 200 withdraw(50) setBalance(150) getBalance() 200 withdraw(50) setBalance(150) computeNewBalance(200,50) computeNewBalance(200,50) Assume: Initial balance = 200 Final balance = 150 ??! Thread 1 Thread 2 Should BankAccount be another Thread ?
  • 6. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6 Solution: Synchronization of Threads c1:Customer c2:Customer :BankAccount:WithdrawCtrl getBalance() 200 withdraw(50) setBalance(150) computeNewBalance(200,50) Initial balance = 200 withdraw(50) Single WithdrawCtrl Instance Synchronized method End balance = 100
  • 7. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7 Concurrency Questions • To identify threads for concurrency we ask the following questions: • Does the system provide access to multiple users? • Which entity objects of the object model can be executed independently from each other? • What kinds of control objects are identifiable? • Can a single request to the system be decomposed into multiple requests? Can these requests and handled in parallel? (Example: a distributed query)
  • 8. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8 Implementing Concurrency • Concurrent systems can be implemented on any system that provides • Physical concurrency: Threads are provided by hardware or • Logical concurrency: Threads are provided by software • Physical concurrency is provided by multiprocessors and computer networks • Logical concurrency is provided by threads packages.
  • 9. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9 Implementing Concurrency (2) • In both cases, - physical concurrency as well as logical concurrency - we have to solve the scheduling of these threads: • Which thread runs when? • Today’s operating systems provide a variety of scheduling mechanisms: • Round robin, time slicing, collaborating processes, interrupt handling • General question addresses starvation, deadlocks, fairness -> Topic for researchers in operating systems • Sometimes we have to solve the scheduling problem ourselves • Topic addressed by software control (system design topic 7).
  • 10. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10 System Design 2. Subsystem Decomposition Layers vs Partitions Coherence/Coupling  4. Hardware/ Software Mapping Special Purpose Buy vs Build Allocation of Resources Connectivity 5. Data Management Persistent Objects Filesystem vs Database Access Control List vs Capabilities Security 6. Global Resource Handlung 8. Boundary Conditions Initialization Termination Failure 3. Concurrency Identification of Threads 7. Software Control Monolithic Event-Driven Conc. Processes 1. Design Goals Definition Trade-offs
  • 11. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11 4. Hardware Software Mapping • This system design activity addresses two questions: • How shall we realize the subsystems: With hardware or with software? • How do we map the object model onto the chosen hardware and/or software? • Mapping the Objects: • Processor, Memory, Input/Output • Mapping the Associations: • Network connections
  • 12. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12 Mapping Objects onto Hardware • Control Objects -> Processor • Is the computation rate too demanding for a single processor? • Can we get a speedup by distributing objects across several processors? • How many processors are required to maintain a steady state load? • Entity Objects -> Memory • Is there enough memory to buffer bursts of requests? • Boundary Objects -> Input/Output Devices • Do we need an extra piece of hardware to handle the data generation rates? • Can the desired response time be realized with the available communication bandwidth between subsystems?
  • 13. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13 Mapping the Associations: Connectivity • Describe the physical connectivity • (“physical layer in the OSI Reference Model”) • Describes which associations in the object model are mapped to physical connections. • Describe the logical connectivity (subsystem associations) • Associations that do not directly map into physical connections. • In which layer should these associations be implemented? • Informal connectivity drawings often contain both types of connectivity • Practiced by many developers, sometimes confusing.
  • 14. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14 DistributedDatabaseArchitecture Tue, Oct 13, 1992 12:53 AM Application Client Application Client Application Client Communication Agent for Application Clients Communication Agent for Application Clients Communication Agent for Data Server Communication Agent for Data Server Local Data Server Global Data Server Global Data Server Global Data Server OODBMS RDBMS Backbone Network LAN LAN LAN TCP/IP Ethernet Cat 5 Physical Connectivity Logical Connectivity Example: Informal Connectivity Drawing
  • 15. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15 Logical vs Physical Connectivity and the relationship to Subsystem Layering Application LayerApplication Layer Presentation Layer Session Layer Transport Layer Network Layer Data Link Layer Physical Layer Bidirectional associa- tions for each layer Presentation Layer Session Layer Transport Layer Network Layer Data Link Layer Physical Layer Processor 1 Processor 2 Logical Connectivity Physical Connectivity
  • 16. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16 Hardware-Software Mapping Difficulties • Much of the difficulty of designing a system comes from addressing externally-imposed hardware and software constraints • Certain tasks have to be at specific locations • Example: Withdrawing money from an ATM machine • Some hardware components have to be used from a specific manufacturer • Example: To send DVB-T signals, the system has to use components from a company that provides DVB-T transmitters.
  • 17. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17 Hardware/Software Mappings in UML • A UML component is a building block of the system. It is represented as a rectangle with a tabbed rectangle symbol inside • Components have different lifetimes: • Some exist only at design time • Classes, associations • Others exist until compile time • Source code, pointers • Some exist at link or only at runtime • Linkable libraries, executables, addresses • The Hardware/Software Mapping addresses dependencies and distribution issues of UML components during system design.
  • 18. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18 Two New UML Diagram Types • Deployment Diagram: • Illustrates the distribution of components at run-time. • Deployment diagrams use nodes and connections to depict the physical resources in the system. • Component Diagram: • Illustrates dependencies between components at design time, compilation time and runtime
  • 19. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19 • Deployment diagrams are useful for showing a system design after these system design decisions have been made: • Subsystem decomposition • Concurrency • Hardware/Software Mapping • A deployment diagram is a graph of nodes and connections (“communication associations”) • Nodes are shown as 3-D boxes • Connections between nodes are shown as solid lines • Nodes may contain components • Components can be connected by “lollipops” and “grabbers” • Components may contain objects (indicating that the object is part of the component). :PC Deployment Diagram :Server
  • 20. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20 UML Component Diagram • Used to model the top-level view of the system design in terms of components and dependencies among the components. Components can be • source code, linkable libraries, executables • The dependencies (edges in the graph) are shown as dashed lines with arrows from the client component to the supplier component: • The lines are often also called connectors • The types of dependencies are implementation language specific • Informally also called “software wiring diagram“ because it show how the software components are wired together in the overall application.
  • 21. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21 UML Interfaces: Lollipops and Sockets • A UML interface describes a group of operations used or created by UML components. • There are two types of interfaces: provided and required interfaces. • A provided interface is modeled using the lollipop notation • A required interface is modeled using the socket notation. • A port specifies a distinct interaction point between the component and its environment. • Ports are depicted as small squares on the sides of classifiers.
  • 22. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22 Component Diagram Example UML Interface UML Component reservations update Dependency.
  • 23. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23 Deployment Diagram Example Dependency (between nodes) Dependency (in a node)UML Node UML Interface
  • 24. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24 ARENA Deployment Diagram
  • 25. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25 Another ARENA Deployment Diagram
  • 26. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26 5. Data Management • Some objects in the system model need to be persistent: • Values for their attributes have a lifetime longer than a single execution • A persistent object can be realized with one of the following mechanisms: • Filesystem: • If the data are used by multiple readers but a single writer • Database: • If the data are used by concurrent writers and readers.
  • 27. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27 Data Management Questions • How often is the database accessed? • What is the expected request (query) rate? The worst case? • What is the size of typical and worst case requests? • Do the data need to be archived? • Should the data be distributed? • Does the system design try to hide the location of the databases (location transparency)? • Is there a need for a single interface to access the data? • What is the query format? • Should the data format be extensible?
  • 28. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28 Mapping Object Models • UML object models can be mapped to relational databases • The mapping: • Each class is mapped to its own table • Each class attribute is mapped to a column in the table • An instance of a class represents a row in the table • One-to-many associations are implemented with a buried foreign key • Many-to-many associations are mapped to their own tables • Methods are not mapped • More details in Lecture: Mapping Models to Relational Schema
  • 29. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29 6. Global Resource Handling • Discusses access control • Describes access rights for different classes of actors • Describes how object guard against unauthorized access.
  • 30. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30 Defining Access Control • In multi-user systems different actors usually have different access rights to different functionality and data • How do we model these accesses? • During analysis we model them by associating different use cases with different actors • During system design we model them determining which objects are shared among actors.
  • 31. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31 Access Matrix • We model access on classes with an access matrix: • The rows of the matrix represents the actors of the system • The column represent classes whose access we want to control • Access Right: An entry in the access matrix. It lists the operations that can be executed on instances of the class by the actor.
  • 32. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32 Access Matrix Example Arena League Operator LeagueOwner Player Spectator Tournament <<create>> archive() schedule() view() applyFor() view() view() <<create>> createUser() view () view () view() applyForPlayer() view() applyForOwner() <<create>> archive() view() subscribe() view() subscribe() edit () Match <<create>> end() play() forfeit() view() replay() Actors Classes Access Rights
  • 33. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33 Access Matrix Implementations • Global access table: Represents explicitly every cell in the matrix as a triple (actor,class, operation) LeagueOwner, Arena, view() LeagueOwner, League, edit() LeagueOwner, Tournament, <<create>> LeagueOwner, Tournament, view() LeagueOwner, Tournament, schedule() LeagueOwner, Tournament, archive() LeagueOwner, Match, <<create>> LeagueOwner, Match, end() .
  • 34. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34 Better Access Matrix Implementations • Access control list • Associates a list of (actor,operation) pairs with each class to be accessed. • Every time an instance of this class is accessed, the access list is checked for the corresponding actor and operation. • Capability • Associates a (class,operation) pair with an actor. • A capability provides an actor to gain control access to an object of the class described in the capability.
  • 35. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35 Arena League Operator LeagueOwner Player Spectator Tournament <<create>> archive() schedule() view() applyFor() view() view() <<create>> createUser() view () view () view() applyForPlayer() view() applyForOwner() <<create>> archive() view() subscribe() view() subscribe() edit () Match <<create>> end() play() forfeit() view() replay() Access Matrix Example Player Match play() forfeit()
  • 36. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36 Player Match play() forfeit()
  • 37. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37 Access Control List Realization joe:Player m1:Match joe may play alice may play I am joe, I want to play in match m1 Gatekeeper checks identification against list and allows access. Access Control List for m1
  • 38. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38 Capability Realization joe:Player m1:Match Capability Here’s my ticket, I’d like to play in match m1 Gatekeeper checks if ticket is valid and allows access. Ticket for match “m1”
  • 39. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39 Global Resource Questions • Does the system need authentication? • If yes, what is the authentication scheme? • User name and password? Access control list • Tickets? Capability-based • What is the user interface for authentication? • Does the system need a network-wide name server? • How is a service known to the rest of the system? • At runtime? At compile time? • By Port? • By Name?
  • 40. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40 7. Decide on Software Control Two major design choices: 1. Choose implicit control 2. Choose explicit control • Centralized or decentralized • Centralized control: • Procedure-driven: Control resides within program code. • Event-driven: Control resides within a dispatcher calling functions via callbacks. • Decentralized control • Control resides in several independent objects. • Examples: Message based system, RMI • Possible speedup by mapping the objects on different processors, increased communication overhead.
  • 41. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 41 Software Control Explicit Control Implicit Control Rule-based Control Logic Programming Event-based Control Procedural Control. Centralized Control Decentralized Control
  • 42. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 42 Centralized vs. Decentralized Designs • Centralized Design • One control object or subsystem ("spider") controls everything • Pro: Change in the control structure is very easy • Con: The single control object is a possible performance bottleneck • Decentralized Design • Not a single object is in control, control is distributed; That means, there is more than one control object • Con: The responsibility is spread out • Pro: Fits nicely into object-oriented development
  • 43. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 43 Centralized vs. Decentralized Designs (2) • Should you use a centralized or decentralized design? • Take the sequence diagrams and control objects from the analysis model • Check the participation of the control objects in the sequence diagrams • If the sequence diagram looks like a fork => Centralized design • If the sequence diagram looks like a stair => Decentralized design.
  • 44. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44 8. Boundary Conditions • Initialization • The system is brought from a non-initialized state to steady-state • Termination • Resources are cleaned up and other systems are notified upon termination • Failure • Possible failures: Bugs, errors, external problems • Good system design foresees fatal failures and provides mechanisms to deal with them.
  • 45. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 45 Boundary Condition Questions • Initialization • What data need to be accessed at startup time? • What services have to registered? • What does the user interface do at start up time? • Termination • Are single subsystems allowed to terminate? • Are subsystems notified if a single subsystem terminates? • How are updates communicated to the database? • Failure • How does the system behave when a node or communication link fails? • How does the system recover from failure?.
  • 46. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 46 Modeling Boundary Conditions • Boundary conditions are best modeled as use cases with actors and objects • We call them boundary use cases or administrative use cases • Actor: often the system administrator • Interesting use cases: • Start up of a subsystem • Start up of the full system • Termination of a subsystem • Error in a subsystem or component, failure of a subsystem or component.
  • 47. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 47 Example: Boundary Use Case for ARENA • Let us assume, we identified the subsystem AdvertisementServer during system design • This server takes a big load during the holiday season • During hardware software mapping we decide to dedicate a special node for this server • For this node we define a new boundary use case ManageServer • ManageServer includes all the functions necessary to start up and shutdown the AdvertisementServer.
  • 48. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 48 ManageServer Boundary Use Case Server Administrator ManageServer StartServer ShutdownServer ConfigureServer <<include>> <<include>> <<include>>
  • 49. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 49 Summary • System design activities: • Concurrency identification • Hardware/Software mapping • Persistent data management • Global resource handling • Software control selection • Boundary conditions • Each of these activities may affect the subsystem decomposition • Two new UML Notations • UML Component Diagram: Showing compile time and runtime dependencies between subsystems • UML Deployment Diagram: Drawing the runtime configuration of the system.

Notes de l'éditeur

  1. Objects with mutual exclusive activity could be folded into a single thread of control (Why?) Should client and server of a client/server architecture be folded on the same thread? If there are multiple clients? If there is only a single client and the server?.
  2. Example: An instance of a client/server architectural style consists of at least two threads A race condition or race hazard is a flaw in a system or process whereby the output and/or result of the process is unexpectedly and critically dependent on the sequence or timing of other events. The term originates with the idea of two signals racing each other to influence the output first.
  3. When you introduce the second customer, say that he interacts with his own control object of type WithdrawCtrl Ask this question at the end of the animation: Can thread 1 or 2 be folded with thread 3?
  4. Examples for requests: Examples: Sorting request Searching request in a distributed data base Image recognition by decomposing the image into stripes Matrix multiplication with a systolic array algorithm
  5. Logical concurrency is provided by threads packages : Java, for example, has a thread abstraction
  6. Round robin, time slicing, collaborating processes, interrupt handling Topics in operating systems!!!
  7. A first heuristic would be Control objects need a processor, Entity objects need memory Boundary objects should be mapped to input/output devices. These abstractions are available in hardware as well as in software.
  8. Does the response time exceed the available bandwith for a task and a piece of hardware?
  9. Describe the physical connectivity of the hardware This is usually the physical layer in the OSI Reference Model Which associations in the object model are mapped to physical connections? Which of the client-supplier relationships in the analysis/design model correspond to physical connections? Describe the logical connectivity (subsystem associations) Identify associations that do not directly map into physical connections: How should these associations be implemented?
  10. Some objects in the system model need to be persistent Provide clean separation points between subsystems with well-defined interfaces. Data structure If the data can be volatile Files If the data has a lifetime longer than a single execution Cheap, simple, permanent storage Low level (Read, Write) Applications must add code to provide suitable level of abstraction Database Powerful, easy to port Supports multiple writers and readers
  11. Should the database be relational or object-oriented?
  12. UML object models can be mapped to relational databases Some degradation occurs because all UML constructs must be mapped to a single relational database construct - the table UML mappings (Chapter 10, p 414ff)
  13. During system design we model them by examining the object model by determining which objects are shared among actors. Depending on the security requirements of the system, we also define how actors are authenticated to the system and how selected data in the system should be encrypted.
  14. Global access table: Represents explicitly every cell in the matrix as a triple (actor,class, operation) Determining if an actor has access to a specific object requires looking up the corresponding tuple. If no such tuple is found, access is denied.
  15. Access control list associates a list of (actor,operation) pairs with each class to be accessed. Every time an object is accessed, its access list is checked for the corresponding actor and operation. Example: guest list for a party. A capability associates a (class,operation) pair with an actor. A capability provides an actor to gain control access to an object of the class described in the capability. Example: An invitation card for a party. Which is the right implementation?
  16. Two major design choices: 1. Choose implicit control (non-procedural, declarative languages) Rule-based systems Logic programming 2. Choose explicit control (procedural languages): Centralized or decentralized In the case of centralized control we have another choice: Procedure-driven or event-driven? Procedure-driven control Control resides within program code. Example: Main program calling procedures of subsystems. Simple, easy to build, hard to maintain (high recompilation costs) Event-driven control Control resides within a dispatcher calling functions via callbacks. Very flexible, good for the design of graphical user interfaces, easy to extend
  17. Most of the system design effort is concerned with the steady-state behavior described in the analysis phase. However, the system design phase must also address the initiation and finalization of the system. This is done with a set of new uses cases called administration use cases Initialization Describes how the system is brought from an non initialized state to steady-state (&amp;quot;startup use cases”) Termination Describes what resources are cleaned up and which systems are notified upon termination (&amp;quot;termination use cases&amp;quot;) Failure Describes possible failures: Bugs, errors, external problems (power supply). Good system design foresees fatal failures (“failure use cases”)
  18. 8.1 Initialization How does the system start up? What data need to be accessed at startup time? What services have to registered? What does the user interface do at start up time? How does it present itself to the user? 8.2 Termination Are single subsystems allowed to terminate? Are other subsystems notified if a single subsystem terminates? How are local updates communicated to the database? 8.3 Failure How does the system behave when a node or communication link fails? Are there backup communication links? How does the system recover from failure? Is this different from initialization?
  19. Administration use cases for MyTrip (UML use case diagram).
  20. In this lecture, we reviewed the activities of system design: …. Each of these activities may affects the subsystem decomposition to address a specific issue Once these activities are completed, the interface of the subsystems can be defined. This leads us to Object Design