410 likes | 429 Views
Explore the concepts and purposes of software architecture, identifying critical components, and guiding software design while bridging design and implementation. Learn about decomposition, interaction interfaces, scalability, and major components/subsystems. Understand the relationship and interface among software components, like TCP/IP sockets and other communication interfaces. Discover how to decouple functional units and improve communication system design using architectural models. Dive into platform-neutral and network-transparent communication architectures. 8
E N D
Software Architecture & Design Pattern • Lecture 2 Concepts of Software Architecture • Purposes/Objectives • Major Elements of S/W Architecture • Architecture Framework • Architectural Models/Patterns • Architecture Case Study 1
Software Architecture & Design Pattern 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. 2
Software Architecture & Design Pattern Why need software architectural model? 3
Software Architecture & Design Pattern Better? en ... not quite yet 4
Software Architecture & Design Pattern Much better --- your boss would like to see Cluster Applications RTCS Application Framework API RTCS Classifier RTCS Dispatcher RTCS Scheduler RTCS Monitor RTCS Forwarder RTCS Event RTCS Queue Linux System Call performance-differentiated kernel scheduler Linux kernel Hardware Abstraction Layer
Software Architecture & Design Pattern • 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 6
Software Architecture & Design Pattern • Software Design Principles • Decomposition and decoupling • Architectural model • Component interface/relationship • Data/object abstraction • Communication/network interface • Concurrency: multiprocess vs. multithread • Scalability 7
Software Architecture & Design Pattern • 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 8
Software Architecture & Design Pattern • Major Components • upper application • RTCS Framework • - storage class • - service class • - utility class • O/S system call API Cluster Applications RTCS Application Framework API RTCS Classifier RTCS Dispatcher RTCS Scheduler RTCS Monitor RTCS Forwarder RTCS Event RTCS Queue Linux System Call performance-differentiated kernel scheduler Linux kernel • Major Functions • cluster resource management • real-time scheduling • responsive service Hardware Abstraction Layer RTCS Architectural Model
Software Architecture & Design Pattern • 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 10
Software Architecture & Design Pattern CORBA Architecture for Distributed System 11
Software Architecture & Design Pattern Interface between Components 12
Software Architecture & Design Pattern • 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 13
INTERNETWORKINGARCH MIDDLEWARE ARCH RTP TFTP FTP HTTP Middleware Applications DNS NET Middleware Services UDP TCP IP Middleware Fibre Channel Solaris VxWorks Ethernet ATM FDDI Win2K Linux LynxOS 20th Century 21st Century Software Architecture & Design Pattern Internet Protocol Design - use layered architectural model to show the design 14
Software Architecture & Design Pattern Decomposition of System - Decoupling an avionics system 15
Subscriber Filter consume filterEvent Event Structure Dynamics consume Publisher Event Channel : Publisher : Event Channel : Subscriber attachPublisher detachPublisher attachSubscriber detachSubscriber pushEvent produce attachSubscriber produce : Event pushEvent event pushEvent creates receives event * detachSubscriber Software Architecture & Design Pattern How to decouple functional units 16
Software Architecture & Design Pattern Use architectural model to improve communication system design 17
Software Architecture & Design Pattern Platform-neutral and network-transparent communication architecture : Client : Server : Object Adapter : Client Proxy : Broker register_service start_up connect operation (params) marshal assigned port send_request Dynamics unmarshal dispatch operation (params) result receive_reply 18 result marshal unmarshal
Software Architecture & Design Pattern 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 20
Software Architecture & Design Pattern 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 21
Software Architecture & Design Pattern 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. 22
Software Architecture & Design Pattern • 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 23
Software Architecture & Design Pattern Major elements – Topology The architectural topology captures architectural structure via graphs whose nodes representing components and connectors and edges representing interconnectivity. 24
Software Architecture & Design Pattern Interaction between Components 25
Software Architecture & Design Pattern • 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) 26
Software Architecture & Design Pattern • 4+1 View Model/Framework • Logic View • Process View • Deployment View • Physical View • Scenarios (Use Case) 27
Software Architecture & Design Pattern End user Logical View Development View Programmers & software managers Scenarios Process View Physical View System Engineer Integrator 28
Software Architecture & Design Pattern Logical View Viewer: End-user Considers: Functional requirements- What the system should provide in terms of services to its users. Notation: Class diagram Tool: CASE tool 29
Software Architecture & Design Pattern Logical View – class view 30
Software Architecture & Design Pattern Logical View – sequence diagram 31
Software Architecture & Design Pattern Logical View – communication diagram 32
Software Architecture & Design Pattern Logical View – state diagram 33
Software Architecture & Design Pattern Development View Viewer: programmers and managers Considers: software module organization Style: layered style Notation: UML 34
Software Architecture & Design Pattern Process View Viewer: integrator Considers: Non - functional requirements (concurrency, performance, scalability) Style: several styles 35
Software Architecture & Design Pattern Process View example 36
Software Architecture & Design Pattern Physical View Viewer: system engineer Considers: non-functional requirements regarding hardware (computing node, network) Notation: costumed 37
Software Architecture & Design Pattern Physical View example 38
Software Architecture & Design Pattern Scenarios Viewer: all users of other views and evaluators. Considers: system consistency, validity Notation: UML/Use Case Tool: CASE tool 39
Software Architecture & Design Pattern Scenarios – Use Case diagram 40
Software Architecture & Design Pattern Questions? 41