1 1 lecture 2 concepts of software architecture purposes/objectives major elements of s/w...
TRANSCRIPT
11
Lecture 2 Concepts of Software Architecture
• Purposes/Objectives• Major Elements of S/W Architecture• Architecture Framework• Architectural Models/Patterns• Architecture Case Study
Software Architecture & Design Pattern
22
Software Architecture
A high level abstraction and description to the structure and organization of software system, also a blueprint for software development and evolution.
Software Architectural Model
An expression of the viewpoint of software architecture, which is a rich, rigorous, and structural description on the software system’s elements, functions and interface.
Software Architecture & Design Pattern
33
Why need software architectural model?
Software Architecture & Design Pattern
44
Better? en ... not quite yet
Segment(from ssi)
AttributeDescription(from serializati...
ResourceDescription(from serializati...
HttpCredential(from ht...
PlainRemoteResource(from adm...
HtmlHead(from ht...
SampleMuxHandler(from m...
Stresser(from tes...
JigsawHttpSessionContext(from servl...
HtmlStyle(from ht...
AdminContext(from admin)
AuthUserPrincipal(from a...
IPMatcherNode(from au...
HttpBag(from ht...
HtmlGenerator(from ht...
DirectoryResource(from resourc...
FileResource(from resourc...
HttpEntityTag(from ht...
HttpManager(from ht...
CGIHeaderHolder(from fram...
Shuffler(from ht...
IndexersCatalog(from index...
ResourceIndexer(from index...
MuxClientFactory(from m...
ResourceContext(from resourc...
EventManager(from time...
ResourceStoreManager(from sto...
PropertySet(from conf...
FramedResource(from resourc...
ServerHandlerManager(from daem...
AdminWriter(from adm...
Serializer(from serializati...
RequestTimeout(from ht...
MimeType(from mime)
IPMatcher(from auth)
ExternalContainer(from resourc...
PICS(from pi...
SSIFrame(from s...
SSIStream(from s...
ArrayDictionary(from ut...
CommandRegistry(from comman...
VariantState(from NegotiatedFra...
SampleResourceIndexer(from index...
ProtocolFrame(from frames)
MimeClientFactory(from ht...
MimeParser(from mi...
DAVMimeClientFactory(from webd...
ResourceException(from resourc...
SocketOutputBuffer(from sock...
DebugThread(from sock...
ThreadCache(from ut...
SocketClientFactoryStats(from sock...
httpd(from http)
MuxSession(from m...
ResourceFilter(from resources)
HttpMimeType(from ht...
HttpTokenList(from ht...
ResourceReference(from resources)
HTTPPrincipal(from a...
ProxyRequestObserver(from pro...
ProfileRef(from cc...
HttpExtList(from ht...
Client(from http)
CCPPRequest(from cc...
Software Architecture & Design Pattern
5
Much better --- your boss
would like to see
Hardware Abstraction Layer
Linux kernelperformance-differentiatedkernel scheduler
Cluster Applications
RTCS Application Framework API
Linux System Call
RTCSQueue
RTCSDispatcher
RTCSScheduler
RTCSMonitor
RTCSForwarder
RTCSEvent
RTCSClassifier
Software Architecture & Design Pattern
66
Purposes/Objectives
• Identify critical components/subsystems of software system
• Describe relationship/interaction/interface of the components• Guide software design and bridge design and implementation• Identify key techniques/tools to implement software system
Software Architecture & Design Pattern
77
Software Design Principles
• Decomposition and decoupling• Architectural model• Component interface/relationship• Data/object abstraction• Communication/network interface• Concurrency: multiprocess vs. multithread• Scalability
Software Architecture & Design Pattern
88
Identify Major Components/Subsystems
• Component/Subsystem: a group of software units collectively providing certain function or service (module in C++ or package in Java)
• Organize or lay out functional units of a software system --- various architectural models
• Identify core modules/components or common features
Software Architecture & Design Pattern
9
RTCS Architectural Model
Hardware Abstraction Layer
Linux kernelperformance-differentiatedkernel scheduler
Cluster Applications
RTCS Application Framework API
Linux System Call
RTCSQueue
RTCSDispatcher
RTCSScheduler
RTCSMonitor
RTCSForwarder
RTCSEvent
RTCSClassifier
Major Components
• upper application
• RTCS Framework
- storage class
- service class
- utility class
• O/S system call API
Major Functions• cluster resource management
• real-time scheduling
• responsive service
Software Architecture & Design Pattern
1010
Relationship/Interface among Components
• Structural relationship
• Functional relationship
• Abstract class vs. Interface class
• Communication interface
- TCP/IP sockets
- RPC (Remote Procedure Call),
RMI (Remote Method Innovation)
- message passing
Software Architecture & Design Pattern
1111
CORBA Architecture for Distributed System
Software Architecture & Design Pattern
1212
Interface between Components
Software Architecture & Design Pattern
1313
Guidance of Software Design
• Deposition of System - decoupling of data and presentation - spread functions among components - multiprocess or multithread
• Interface Design - external interface vs. internal interface - interface definition language/schema
• Interaction in Components/Subsystems - service consumer vs. service provider - synchronous call vs. asynchronous call - interaction protocols
Software Architecture & Design Pattern
1414
Internet Protocol Design
- use layered architectural model to show the design
Win2K Linux LynxOS
Solaris VxWorks
Middleware
MiddlewareServices
MiddlewareApplications
MIDDLEWARE ARCH
21st Century
RTP
DNS
HTTP
UDP TCP
IP
NET
Ethernet ATM FDDI
Fibre Channel
FTP
INTERNETWORKING ARCH
TFTP
20th Century
Software Architecture & Design Pattern
1515
Decomposition of System
- Decoupling an avionics system
Context Problems Solution
• I/O driven DRE application
•Complex dependencies
•Real-time constraints
•Tightly coupled components
•Hard to schedule
•Expensive to evolve
•Apply the Publisher-Subscriber architectural pattern to distribute periodic, I/O-drivendata from a single point of source to a collection of consumers
Software Architecture & Design Pattern
1616
How to decouple functional units
Event
*
Subscriber
consume
creates receives
Event Channel
attachPublisher detachPublisherattachSubscriberdetachSubscriberpushEvent
Filter
filterEvent
Publisher
produce
Structure
attachSubscriberproduce
pushEventevent
eventpushEvent
consume
detachSubscriber
: Event
: Subscriber: Event Channel: Publisher
Dynamics
Software Architecture & Design Pattern
1717
Context Problems Solution
•Mission computing requires remote IPC
•Stringent DRE requirements
•Applications need capabilities to:•Support remote communication•Provide location transparency•Handle faults•Manage end-to-end QoS•Encapsulate low-level system details
•Apply the Broker architectural pattern to provide platform-neutral communication between mission computing boards
Use architectural model to improve communication system design
Software Architecture & Design Pattern
18
18
Platform-neutral and network-transparent communication architecture
operation (params)connect
send_request
marshal
unmarshaldispatch
operation (params)
result
marshal
receive_replyunmarshal
result
start_upregister_service
assigned port
Dynamics
: Broker: Client Proxy : Object Adapter: Client : Server
Software Architecture & Design Pattern
1919
Software Architecture & Design Pattern
2020
Identify key techniques and development tools
• OOAD / CASE tool• Distributed System / Communication Protocols• Component-based / Interface• Concurrency / Multithreading• SOA / J2EE• 3-D / Graphics Toolkit• Real-Time / RTOS
Software Architecture & Design Pattern
2121
Major Elements of Architectural Model
• Elements/Connectors/Data - components (simple vs.
composite) - subsystems - layers
• Architectural Topology (diagrams) - configuration/layout
• Interaction/Association - component interface - communication interface - relationship
Software Architecture & Design Pattern
2222
Major elements – Component
A software component is an architectural building block that encapsulates a subset of functions and data, and restricts access to them via an explicitly defined interface.
Software Architecture & Design Pattern
2323
Major elements – Connector
A software connector is an architectural building block tasked with regulating interactions among components.
connector examples
- Procedure call connectors
- Shared memory connectors
- Message passing connectors
- Streaming connectors
- Distribution connectors
- Wrapper/adaptor connectors
Software Architecture & Design Pattern
2424
Major elements – Topology
The architectural topology captures architectural structure via graphs whose nodes representing components and connectors and edges representing interconnectivity.
Projectrepository
Designtranslator
Programeditor
Designeditor
Codegenerator
Designanalyser
Reportgenerator
Software Architecture & Design Pattern
2525
Interaction between Components
Software Architecture & Design Pattern
2626
Architecture Framework
A set of architectural views, design patterns, and methodology based on a certain type of architectural model
• 4+1 Views
• Zachman Framework
• DODAF (Dept. of Defense Architectural Framework)
• TOGAF (The Open Group Architecture Framework)
• RM-ODP (Reference Model of Open Distributed Processing)
Software Architecture & Design Pattern
2727
4+1 View Model/Framework
• Logic View
• Process View
• Deployment View
• Physical View
• Scenarios (Use Case)
Software Architecture & Design Pattern
2828
Logical View
Physical ViewProcess View
Development View
End user
System EngineerIntegrator
Programmers& software managers
Scenarios
Software Architecture & Design Pattern
2929
Logical View
Viewer: End-userConsiders: Functional requirements- What the system should provide in terms of services to its users. Notation: Class diagramTool: CASE tool
Software Architecture & Design Pattern
3030
Logical View – class view
Software Architecture & Design Pattern
3131
Logical View – sequence diagram
Software Architecture & Design Pattern
3232
Logical View – communication diagram
Software Architecture & Design Pattern
3333
Logical View – state diagram
Software Architecture & Design Pattern
3434
Development View
Viewer: programmers and managers
Considers: software module organization
Style: layered style
Notation: UML
Software Architecture & Design Pattern
3535
Process View
Viewer: integrator
Considers: Non - functional requirements
(concurrency, performance, scalability)
Style: several styles
Software Architecture & Design Pattern
3636
Process View example
Software Architecture & Design Pattern
3737
Physical View
Viewer: system engineer
Considers: non-functional requirements regarding
hardware (computing node, network)
Notation: costumed
Software Architecture & Design Pattern
3838
Physical View example
Software Architecture & Design Pattern
3939
Scenarios
Viewer: all users of other views and evaluators.Considers: system consistency, validityNotation: UML/Use CaseTool: CASE tool
Software Architecture & Design Pattern
4040
Scenarios – Use Case diagram
Software Architecture & Design Pattern
4141
Questions?
Software Architecture & Design Pattern