Software Design Deriving A Solution Which Satisfies Software Requirements
Software Design Deriving A Solution Which Satisfies Software Requirements
Slide 1
Stages of Design
Problem understanding
Slide 2
Slide 3
Abstract
specificatio
n
Interface
design
Component
design
Data
structur
e
design
Algorithm
design
System
architectur
e
Software
specification
Interface
specifica
tion
Component
specification
Data
structur
e
specification
Algorithm
specifica
tion
Design pr
oducts
Slide 4
Design Phases
Slide 5
Slide 6
Top-down Design
Slide 7
Design Methods
Slide 8
Method Components
Slide 9
Method Deficiencies
Slide 10
Design Description
Slide 11
Design Strategies
Functional design
Object-oriented design
Slide 12
Tokens
Scan
source
Syntax
tree
Tokens
Build
symbol
table
Symbols
Analyse
Symbols
Symbol
table
Object
code
Generate
code
Error
indicator
Output
errors
Error
messages
Slide 13
Scan
Add
Token
stream
Symbol
table
Check
Syntax
tree
Get
Gr ammar
Build
Err or
messages
Generate
Object
code
Abstract
code
Generate
Slide 14
Mixed-strategy Design
Slide 15
Design Quality
Slide 16
Cohesion
Slide 17
Cohesion Levels
Slide 18
Cohesion Levels
The output for one part of a component is the input to another part.
Slide 19
Slide 20
Coupling
Slide 21
Tight Coupling
Module A
Module B
Module C
Module D
Shared data
area
Slide 22
Loose Coupling
Module A
As data
Module B
Bs data
Module C
Cs data
Module D
Ds data
Slide 23
Slide 24
Understandability
32
Slide 25
Adaptability
33
Slide 26
Design Traceability
C
F
B
Object interaction
level
D
P
Object decomposition
level
Slide 27
35
Slide 28
Architectural Design
Slide 29
Architectural Parallels
Slide 30
Slide 31
Architectural Models
Slide 32
System Structuring
Slide 33
Slide 34
Design
translator
Code
generator
Project
repository
Design
analyser
Program
editor
Report
generator
Slide 35
Advantages:
Disadvantages:
Slide 36
Client-server Architecture
Slide 37
Client 2
Client 3
Client 4
Wide-bandwidth network
Catalogue
server
Video
server
Picture
server
Hypertext
server
Catalogue
Film clip
files
Digitiz ed
photographs
Hypertext
web
Slide 38
Client-server Characteristics
Advantages:
Disadvantages:
Slide 39
Slide 40
Slide 41
Broadcast Model
Slide 42
Selective Broadcasting
Sub-system
1
Sub-system
2
Sub-system
3
Sub-system
4
Slide 43
Object Models
Slide 44
Payment
invoice #
date
amount
customer #
Receipt
Invoice
invoice #
date
amount
customer
invoice #
date
amount
customer #
Issue
Send reminder
Accept payment
Send receipt
Slide 45
Slide 46
Read issued
invoices
Invoices
Issue
receipts
Receipts
Find
payments
due
Issue
payment
reminder
Identify
payments
Reminders
Payments
Slide 47
Domain-specific Architectures
Slide 48
Generic Models
Lexical analyzer
Symbol table
Syntax analyzer
Syntax tree
Semantic analyzer
Code generator
Slide 49
Compiler Model
Symbol
table
Lexical
analysis
Syntactic
analysis
Semantic
analysis
Code
generation
Slide 50
Syntax
analyser
Semantic
analyser
Prettyprinter
Abstract
syntax tree
Grammar
definition
Optimizer
Editor
Symbol
table
Output
definition
Code
generator
Repository
Slide 51
Reference Architectures
Slide 52
Application
Application
Presentation
Presentation
Session
Session
Transport
Transport
Network
Network
Network
Data link
Data link
Data link
Physical
Physical
Physical
Slide 53
Slide 54
Distributed systems
Slide 55
System types
Slide 56
Resource sharing
Openness
Concurrency
Scalability
Fault tolerance
Transparency
Slide 57
Complexity
Security
Manageability
Unpredictability
Slide 58
Designissue
Resource
identification
Communications
Qualityofservice
Software
architectures
Description
Theresourcesinadistributedsystemarespreadacrossdifferent
computersandanamingschemehastobedevisedsothatuserscan
discoverandrefertotheresourcesthattheyneed.Anexampleof
suchanamingschemeistheURL(UniformResourceLocator)that
isusedtoidentifyWWWpages.Ifameaningfulanduniversally
understoodidentificationschemeisnotusedthenmanyofthese
resourceswillbeinaccessibletosystemusers.
TheuniversalavailabilityoftheInternetandtheefficient
implementationofInternetTCP/IPcommunicationprotocolsmeans
that,formostdistributedsystems,thesearethemosteffectiveway
forthecomputerstocommunicate.However,wherethereare
specificrequirementsforperformance,reliabilityetc.alternative
approachestocommunicationsmaybeused.
Thequalityofserviceofferedbyasystemreflectsitsperformance,
availabilityandreliability.Itisaffectedbyanumberoffactorssuch
astheallocationofprocessestoprocessesinthesystem,the
distributionofresourcesacrossthesystem,thenetworkandthe
systemhardwareandtheadaptabilityofthesystem.
Thesoftwarearchitecturedescribeshowtheapplication
functionalityisdistributedoveranumberoflogicalcomponentsand
howthesecomponentsaredistributedacrossprocessors.Choosing
therightarchitectureforanapplicationisessentialtoachievethe
desiredqualityofservice.
Client-server architectures
Slide 60
Middleware
Slide 61
Multiprocessor architectures
Slide 62
Sensor
processor
Sensor
control
process
Trafficflowsensors
andcameras
Trafficflow
processor
Display
process
Trafficlightcontrol
processor
Light
control
process
Trafficlights
Operatorconsoles
Slide 63
Client-server architectures
Slide 64
A client-server system
c3
c2
c4
c12
c11
c1
s1
Serverprocess
s4
c10
c5
s2
c6
c7
Clientprocess
s3
c9
c8
Slide 65
c1
CC2
c2
CC3
Network
s1,s2
s3,s4
Server
computer
SC1
SC2
c5,c6,c7
c3,c4
CC4
c8,c9
CC5
c10,c11,c12
Client
computer
CC6
Slide 66
Presentation layer
Slide 67
Application layers
Presentationlayer
Applicationprocessing
layer
Datamanagement
layer
Slide 68
Thin-client model
Fat-client model
Slide 69
Server
Datamanagement
Application
processing
Client
Presentation
Applicationprocessing
Fatclient
model
Client
Server
Data
management
Slide 70
Slide 71
Slide 72
Accountserver
Tele
Customer
processing account
monitor
database
ATM
ATM
Slide 73
Three-tier architectures
Slide 74
Presentation
Client
Server
Server
Application
processing
Data
management
Slide 75
HTTPinteraction
Webserver
Client
Accountservice
provision
SQLquery
Datab aseserver
SQL
Customer
account
database
Client
Client
Slide 76
TwotierC/S
architecturewith
fatclients
Threetieror
multitierC/S
architecture
Applications
Legacysystemapplicationswhereseparatingapplication
processinganddatamanagementisimpractical
Computationallyintensiveapplicationssuchascompilerswith
littleornodatamanagement
Dataintensiveapplications(browsingandquerying)withlittle
ornoapplicationprocessing.
Applicationswhereapplicationprocessingisprovidedby
COTS(e.g.MicrosoftExcel)ontheclient
Applicationswherecomputationallyintensiveprocessingof
data(e.g.datavisualisation)isrequired.
Applicationswithrelativelystableenduserfunctionalityused
inanenvironmentwithwellestablishedsystemmanagement
Largescaleapplicationswithhundredsorthousandsofclients
Applicationswhereboththedataandtheapplicationare
volatile.
Applicationswheredatafrommultiplesourcesareintegrated
Slide 77
Slide 78
o2
o3
o4
S(o1)
S(o2)
S(o3)
S(o4)
Softwarebus
o5
o6
S(o5)
S(o6)
Slide 79
Slide 80
Slide 81
Integrator1
Database2
Reportgen.
Visualiser
Integrator2
Database3
Display
Slide 82
Slide 83
CORBA
Slide 84
Application structure
Application objects
Standard objects, defined by the OMG, for a
specific domain e.g. insurance
Fundamental CORBA services such as directories
and security management
Horizontal (i.e. cutting across applications)
facilities such as user interface facilities
Slide 85
Domain
facilities
Horizontal
CORBAfacilities
Objectrequestbroker
CORBAservices
Slide 86
CORBA standards
A CORBA object is an encapsulation of state with a welldefined, language-neutral interface defined in an IDL (interface
definition language)
Slide 87
CORBA objects
Slide 88
Slide 89
o2
S(o1)
S(o2)
IDL
stub
IDL
skeleton
ObjectRequestBroker
Slide 90
Inter-ORB communications
Slide 91
Inter-ORB communications
o1
o2
o3
o4
S(o1)
S(o2)
S(o3)
S(o4)
IDL
IDL
IDL
IDL
ObjectRequestBroker
ObjectRequestBroker
Network
Slide 92
CORBA services
Notification services
Transaction services
Slide 93
Example of a Simple
CORBA Application
Written in Java
Slide 94
Slide 95
Slide 96
Slide 97
} catch (Exception e) {
System.out.println("ERROR : " + e) ;
e.printStackTrace(System.out);
}
Slide 98
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
class HelloServant extends _HelloImplBase
{
public String sayHello()
{
return "\nHello world !!\n";
}
}
Slide 99
Slide 100
} catch (Exception e) {
System.err.println("ERROR: " + e);
e.printStackTrace(System.out);
}
Slide 101