Demystifying Architectural Styles
Nikunj Mehta
Architectural Styles
• Characterize
– Structure, i.e. external appearance
– Supported interactions, i.e. software connectors
– Topological constraints
• Various categories
–
–
–
–
–
3/11/02
Motion of data, e.g. batch sequential, data flow
Order of computation, e.g. subroutines, objects
Communication centric, e.g. client/server, events
Data centric, e.g. databases, blackboard, hypertext
Layered, e.g. interpreter
Demystifying Architectural Styles
2
Why Research Architectural Styles?
• Design patterns are not enough
– Styles support higher level reuse
• Component based software engineering
– Avoiding COTS mismatches
• Model based software engineering
– Avoiding model clashes
• Little is known about
–
–
–
–
3/11/02
Style similarities
Style primitives
Architectural primitives
Connector composition
Demystifying Architectural Styles
3
Mystical Nature of Styles
• Stem from principles of encapsulation, and
information hiding
• Invisible software connectors are key
• Origin of styles - a mystery
– How is a style created?
– How is a connector created?
• Codification of successful approaches
• One size fits all?
• How do we which styles is appropriate?
3/11/02
Demystifying Architectural Styles
4
We Need…
•
•
•
•
•
•
•
•
Style and architectural primitives
Architectural composition techniques
Tool-supported formal model
Separation of behavioral, structural, compositional
and interaction concerns
Architectural prototyping framework
Connector composition
Architectural assembly language
Welcome Alfa!
3/11/02
Demystifying Architectural Styles
5
The Alfa Project
• Alfa – a bottom-up approach
– Architecture needs composition
• Assembly language
–
–
–
–
–
Constructs and primitives for composition
Fine grain control over semantics
General but simple
Small set for analyzability and conceptual integrity
Style neutral and implementation agnostic
• Memories revived?
– Assembly mnemonics and machine code
– Start small, and then create languages and tools
3/11/02
Demystifying Architectural Styles
6
Composition primitives
• Particles
Transport
– Simplest architectural
elements
• Portals
– Entry/exit points for
particles
• Jumpers
Output
Portal
– Interaction ducts
– Softwire
Jumper
Input
Portal
• Links
– Interaction path between
particles
3/11/02
Fragment
Demystifying Architectural Styles
7
Behavioral primitives
• Fragment Controller
Transport
– Locus of functional
computation
• Transport Controller
Output
Portal
Jumper
Input
Portal
– Locus of interaction
• Portal Controller
– Locus of message
filtering/tagging
Fragment
3/11/02
Demystifying Architectural Styles
8
Interaction primitives
• Message
• Thread
– Communication
container
• Call
• Queue
– Procedural invocation
primitive
• Dispatcher
– Dispatch messages and
calls to controllers
3/11/02
– Schedule and control
execution
– Buffer for holding
messages and calls
• Semaphore, Monitor,
Rendezvous
– Synchronization
Demystifying Architectural Styles
9
Architectural framework
Compositional Aspects
3/11/02
Demystifying Architectural Styles
Behavioral Aspects
10
Server
Co
nn
Protocol
Co
nn
Composing
Client Server
Style
Protocol
Protocol
Connection
Protocol
Protocol
Client
Server
Protocol
Co
nn
Protocol
3/11/02
Protocol
Co
nn
Protocol
Client
Server
Protocol
Co
nn
Protocol
Co
nn
Co
nn
Protocol
Co
nn
Protocol
Client
Demystifying Architectural Styles
11
Lessons learned
• Architecture approaches should be composable
• Provide simple primitives that map consistently to
implementation
• Data centric styles differ at fundamental level
from communication centric styles
• Choose an architectural style that makes sense
– Know which style is good for your context
– Know the software connectors required
• Create architectural implementation framework
3/11/02
Demystifying Architectural Styles
12
Descargar

Demystifying Architectural Style