Information Systems Analysis and Design CSC340. 2004 John Mylopoulos. Software Architectures -- 1. Information Systems Analysis and Design CSC340



Similar documents
Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

Client/server is a network architecture that divides functions into client and server

Software Architecture Document

Architecture Design For Web-based Application Systems. Instructor: Dr. Jerry Gao Class: CMPE296U

C/S Basic Concepts. The Gartner Model. Gartner Group Model. GM: distributed presentation. GM: distributed logic. GM: remote presentation

3-Tier Architecture. 3-Tier Architecture. Prepared By. Channu Kambalyal. Page 1 of 19

Software Engineering

Client/Server Computing Distributed Processing, Client/Server, and Clusters

Architecture. Reda Bendraou

Designing Real-Time and Embedded Systems with the COMET/UML method

Concepts of Database Management Seventh Edition. Chapter 9 Database Management Approaches

Building Java Servlets with Oracle JDeveloper

Software Life-Cycle Management

Stock Trader System. Architecture Description

Database System Architecture & System Catalog Instructor: Mourad Benchikh Text Books: Elmasri & Navathe Chap. 17 Silberschatz & Korth Chap.

Patterns in Software Engineering

Tutorial on Client-Server Architecture

Chapter 6 Essentials of Design and the Design Activities

Web Development. Owen Sacco. ICS2205/ICS2230 Web Intelligence

Software design (Cont.)

Service Oriented Architectures

Service-Oriented Architecture and Software Engineering

Client-Server Applications

COMP5426 Parallel and Distributed Computing. Distributed Systems: Client/Server and Clusters

S y s t e m A r c h i t e c t u r e

Object-oriented design methodologies

Extending Desktop Applications to the Web

AS/400 System Overview

FROM RELATIONAL TO OBJECT DATABASE MANAGEMENT SYSTEMS

Chapter 13 Computer Programs and Programming Languages. Discovering Computers Your Interactive Guide to the Digital World

Outline. TIM 50 - Business Information Systems. Lecture 10. Instructor: Terry Allen UC Santa Cruz 10/28/2011

Chapter 1 - Web Server Management and Cluster Topology

ICS 434 Advanced Database Systems

Software Architecture

How To Build A Connector On A Website (For A Nonprogrammer)

System Requirement Specifications (SRS)

How to Build an E-Commerce Application using J2EE. Carol McDonald Code Camp Engineer

EVALUATION OF SERVER-SIDE TECHNOLOGY FOR WEB DEPLOYMENT

Literature Review Service Frameworks and Architectural Design Patterns in Web Development

WEB DATABASE PUBLISHING

GUI and Web Programming

Developers Integration Lab (DIL) System Architecture, Version 1.0

A UML Introduction Tutorial

Client-Server Architecture & J2EE Platform Technologies Overview Ahmed K. Ezzat

Advanced Analysis and Design

Modeling Web Applications Using Java And XML Related Technologies

Architectural Patterns. Layers: Pattern. Architectural Pattern Examples. Layer 3. Component 3.1. Layer 2. Component 2.1 Component 2.2.

Chapter 3. Database Environment - Objectives. Multi-user DBMS Architectures. Teleprocessing. File-Server

Swirl. Multiplayer Gaming Simplified. CS4512 Systems Analysis and Design. Assignment Marque Browne Manuel Honegger

Chapter 2 TOPOLOGY SELECTION. SYS-ED/ Computer Education Techniques, Inc.

Distributed Database Design

Design and Functional Specification

BPMN by example. Bizagi Suite. Copyright 2014 Bizagi

Architecture Design & Sequence Diagram. Week 7

System types. Distributed systems

CHAPTER 2 MODELLING FOR DISTRIBUTED NETWORK SYSTEMS: THE CLIENT- SERVER MODEL

DB2 Connect for NT and the Microsoft Windows NT Load Balancing Service

UNIFACE Component-based. Development Methodology UNIFACE V Revision 0 Dec 2000 UMET

FF/EDM Intro Industry Goals/ Purpose Related GISB Standards (Common Codes, IETF) Definitions d 4 d 13 Principles p 6 p 13 p 14 Standards s 16 s 25

Understanding Client/Server Computing


IT Architecture Review. ISACA Conference Fall 2003

What Is the Java TM 2 Platform, Enterprise Edition?

Introduction to Cloud Computing. Lecture 02 History of Enterprise Computing Kaya Oğuz

Tier Architectures. Kathleen Durant CS 3200

SwiftScale: Technical Approach Document

A Process for ATLAS Software Development

SOFT 437. Software Performance Analysis. Ch 5:Web Applications and Other Distributed Systems

From Object Oriented Conceptual Modeling to Automated Programming in Java

Base One's Rich Client Architecture

Category: Business Process and Integration Solution for Small Business and the Enterprise

SAS Client-Server Development: Through Thick and Thin and Version 8

Web Development Frameworks

Engineering Design. Software. Theory and Practice. Carlos E. Otero. CRC Press. Taylor & Francis Croup. Taylor St Francis Croup, an Informa business

Lecture 2. Internet: who talks with whom?

Web Cloud Architecture

Oracle Communications WebRTC Session Controller: Basic Admin. Student Guide

Client-server 3-tier N-tier

CHAPTER 15: Operating Systems: An Overview

UML other structural. diagrams. (Implementation Diagrams UML 1.5) Università di Padova. Facoltà di Scienze MM.FF.NN. Informatica - anno

Information Systems Development Process (Software Development Life Cycle)

The Business Process Model

How To Understand Programming Languages And Programming Languages

Contents. Client-server and multi-tier architectures. The Java 2 Enterprise Edition (J2EE) platform

Monitoring Infrastructure (MIS) Software Architecture Document. Version 1.1

Objectives. Distributed Databases and Client/Server Architecture. Distributed Database. Data Fragmentation

2. Accessing Databases via the Web

EWD: Simplifying Web Application Architecture

New Web Application Development Tool and Its MDA-Based Support Methodology

Software Architecture Document

A Monitored Student Testing Application Using Cloud Computing

Fast Innovation requires Fast IT

Efficiency of Web Based SAX XML Distributed Processing

Application of UML in Real-Time Embedded Systems

Automating Rich Internet Application Development for Enterprise Web 2.0 and SOA

Transcription:

XIX. Software Architectures Software Architectures UML Packages Client- vs Peer-to-Peer Horizontal Layers and Vertical Partitions 3-Tier and 4-Tier Architectures The Model-View-Controller Architecture Broker Architectures for Distributed Systems Software Architectures A software architecture defines the components of a software system and their inter-dependencies. For example, the client-server architecture consists of servers that support services, clients that use services. With such an architecture, I/O is placed on clients, running on PCs and workstations; data storage is assigned to a server, implemented in terms of a DBMS (e.g., DB2) and placed on a mainframe or mini. Consistency checking is located with the server, applications run on clients. Thick servers offer a lot of functionality, thin ones little. Thick clients have their own services, thin ones get almost everything from servers. Software Architectures -- 1 Software Architectures -- 2 s A software subsystem is a component of a system or of another subsystem. s or components are atomic subsystems It s useful to subdivide software into subsystems For better-managed software development; For improved reuse (through components); For improved portability (platform-specific code isolated to particular subsystems.) For easier maintenance. Each subsystem has a well-defined interface with respect to the rest of the system. System............ componentof s/components Software Architectures -- 3 Software Architectures -- 4 Components and Connectors The architecture shown in the previous slide is one example of a software architecture where nodes represent subsystems/modules and the connectors represent componentof relationships. There are many others kinds of connectors that can be used, such as: Uses -- one component uses data defined in another component; Calls -- one component calls methods defined in another component; I/O -- the output of one component is fed as input to another; The Software Bookshelf Software Architectures -- 5 Software Architectures -- 6

Architectural Styles Packages It is useful to classify software architectures into classes of architectural styles. For example, the client-server architecture discussed earlier is an architectural style. There are many architectural styles, e.g., pipes and filters, object-orientation, event-based, layered, repository-based, client-server, three-tier,...others We discuss here some architectures that relate to object-oriented information systems. A package in UML is a grouping of elements which: May be packages (e.g., subsystems or modules); May be classes. Each element of a software architecture (subsystem, module or class) is owned by a single package. There are many criteria for decomposing a software system into packages: Ownership -- who is responsible for what; Application -- e.g., a university dept model may be partitioned into staff, courses, programmes, Clusters of classes used together, e.g., course, course description, instructor, student, Software Architectures -- 7 Software Architectures -- 8 Persons Meetings A Package Diagram Constraints dependency A dependency means that if you change a class in one package (Meetings), you may have to change something in the other (Constraints). The concept is similar to compilation dependencies. It s desirable to minimize dependency cycles, if at all possible. Decomposition into s A software system may be decomposed into horizontal layers, and/or vertical partitions. For a horizontal layer decomposition, each layer corresponds to one or more subsystems, and each layer uses services provided by the layers below it. Layered architectures have two forms: closed architecture - each layer only uses services of the layer immediatebelow; open architecture - a layer can use services from any lower layer. Software Architectures -- 9 Software Architectures -- 10 Closed vs Open Layered Architecture Closed vs Open Layered Architectures Closed layered architectures -- Minimize dependencies between layers and reduce the impact of a change to the interface of any one layer. Open layered architectures: Lead to more compact code, since the services of all lower layers can be accessed directly without the need for extra program code to pass messages through each intervening layer; Break the encapsulation of layers, increase dependencies between layers and increase the complexity of changes to the system. Software Architectures -- 11 Software Architectures -- 12

Client Architectures Protocols for Communication A client server architecture consists of service consumers (clients) and service providers (servers). Clients and servers may or may not be running on dedicated machines. Information exchange between clients and servers is done through messages. establishes connection with each client (possibly several), accepts messages from connected clients and responds to each. Service requests and responses are accomplished through one of the following standard protocols: Remote Procedure Call (RPC) -- invoke remote procedure, results sent; RPC is widely supported; Remote Data Access (RDA) -- invoked procedure is a database query; supported by DBMS vendors; Queued Message Processing -- requests queued. Software Architectures -- 13 Software Architectures -- 14 Three-Tier Architectures Example Three-Tier Architecture Used widely in industry An architecture for a meeting scheduling system (MSS) request Interface Application Data response client request response server Application layer may be placed with client (fat client) or the server (fat server), or split between them. For example, constraint checking may be done on the server side, other applications are run on the client side. MSS Client Panel Main Menu Initialization Panel Scheduling Facility Panels Mgt Panels Configuration User Mgt Panels Panels MSS Scheduling Facility Mgt User Mgt Logic Logic Logic Initialization DB Interface Logic Logic Conflict Res Payment Logic Logic Database User Processing (Business Logic) Data Software Architectures -- 15 Software Architectures -- 16 Many Possible Variations User Processing Data Web-Based Software Architectures These are client-server, based on WWW technologies. Elements of WWW technologies: HTTP -- HyperText Transfer Protocol, used to transfer hypertext documents over the internet; HTML -- HyperText Markup Language, used to define hypertext documents; CGI -- Common Gateway Interface is a program (e.g., a unix shell script, or a perl script) CGI scripts are programs that reside on a web server and are executed with a click to retrieve data, generate graphics etc. Software Architectures -- 17 Software Architectures -- 18

Static HTML-Based Architecture More Detailed Static Architecture Web Browser HTTP Web File access HTML Documents HTML Documents This architecture basically retrieves and displays HTML documents that reside on the web server site. Web client Presentation Cache Protocol UI Access Stream Web server HTTP Stream Arrows indicate data and/or control flow. Path Resolver HTML Documents Software Architectures -- 19 Software Architectures -- 20 Dynamic HTML-Based Architecture HTTP Stream Path Resolver CGI HTML Documents Applications Files + Databases System Architecture Example ANALYST, General Motors Dealer Review Advisor. Assists credit analysts in 230 GM Acceptance Corporation branch offices analyzing dealership operations in order to decide on credit applications. Offers many benefits, including faster reviews, reduced training of personnel and consistency in decision-making. Uses an expert system, integrated into a vast, conventional data processing architecture. The CGI gateway serves as demon which dispatches a request, dealt with by an application or a database server. Software Architectures -- 21 Software Architectures -- 22 ANALYST Local Architecture REMOTE HOST INTERFACE ANALYST Global Architecture GM DEALERSHIP FINANCIAL nightly feeds CLERICAL DATA ENTRY DEALERSHIP DATA MANAGEMENT DEALERSHIP DATABASE GMAC WHOLESALE GMAC RETAIL DEALER TIME SALES GMAC 400 CARD ANALYST SUPPORT EXPERT REVIEW ADVISOR online queries, updates online queries, updates online queries, updates online queries, updates nightly uploads, downloads SNA NETWORK CLERK CREDIT ANALYST Software Architectures -- 23 BRANCH BRANCH BRANCH Software Architectures -- 24

Four-Layer Architectures for Information Systems Vertical Partitioning Partition each layer into subsystems. Partitioning identifies weakly coupled subsystems within a layer. Each partition provides a self-contained service. This is a variation of the 3-tier architecture we discussed earlier Software Architectures -- 25 Software Architectures -- 26 Data Banker Architecture for the A-7E Aircraft Shared Services Physical Models Device Interfaces Function Drivers Application Data Types Filter Behaviours Extended Computer S/W Utilities Notes on the A-7E Architecture This is a uses architecture. s in different components of the architecture: Extended computer: virtual mem, parallelism, timer; Device interfaces: air data, audible signal device, Doppler radar set, ; Function driving: flight information display, panel, ground test, ; Application data types: numeric, state transition, ; Data banker: singular values, complex event, ; Physical model: aircraft motion, earth characteristics, human factors; Software utilities: powerup,... Software Architectures -- 27 Software Architectures -- 28 Styles of Communication: Client- vs Peer-to-Peer The Model View Controller (MVC) Architecture First used with Smalltalk but has since become widely used as an architecture for object-oriented software. Capable of supporting user requirements that are presented through differing interface styles. Aids modifiability and portability. In particular, allows one to change the functionality related to one class (e.g., Courses), without changing others (e.g., DegreeProgrammes.) Also, makes it easier to port a system to different I/O devices. This architecture is best suited for software systems where user interfaces play an important role. Software Architectures -- 29 Software Architectures -- 30

The MVC Architecture Consists of subsystems classified into one of: Model -- provides main functionality of application, is aware of dependent view and controller components. View -- supports a particular style and format of presentation (output) of information to the user: Retrieves data from model and updates its presentations when data has been changed in one of the other views; creates its own controller; Controller -- accepts user input in the form of events that trigger execution of operations within the model; these may cause model changes, and may trigger updates in all views to keep them up to date. Dependency Mechanism: informs each view that the model data has changed, view must update itself. View A Model View Controller (MVC) Controller A The dependency mechanism Model Message passing paths View B Controller B Software Architectures -- 31 Software Architectures -- 32 MVC as a Layered Architecture You can think of MVC architectures as a refinement of the presentation and application tiers of a 3-tier architecture. View1 Cont1 Model1 View2 Cont2 Model2 Database ViewN ContN ModelN Type (stereotype) of class Responsibilities of MVC Components Software Architectures -- 33 Software Architectures -- 34 Notes on MVC MVC Component Interaction The operation update() in AdvertView and AdvertController trigger these components to request data from CampaignModel, which has no knowledge of how this information will be used. The attach() and detach() operations allow views and controllers to be added to/removed from setofobservers. The notify() operation of a model causes all associated views and controllers to be updated. Software Architectures -- 35 Software Architectures -- 36

Broker Architectures for Distributed Systems A broker increases the flexibility of the system by decoupling the client and server components: Each client sends its requests to the broker rather than communicating directly with the server component; The broker then forwards the service request to an appropriate server. The client need not know where the server is locate (it may be in local or remote computer.) Only the broker needs to know the location of the servers that it handles. Simplified Broker Architecture Software Architectures -- 37 Software Architectures -- 38 Proxies Broker Architecture for Local Some classes (e.g., model classes like Advert and Customer) are heavy-weight in the sense that to create an instance, we need to access a database ( very expensive!). We would like to avoid creating instances of heavyweight classes for as long as possible. A proxy class is associated to a heavy-weight class and has the same interface (allowable operations.) Proxy objects are created as needed and act like placeholders. When someone tries to operate on one e.g., access one of its attributes), the corresponding heavy-weight object is created. Software Architectures -- 39 Software Architectures -- 40 Threading and Concurrency Each independent flow of control can be modelled as an active object that represents a process or thread that can initiate control activity. A process is a heavyweight flow (known to the operating systems itself) that can execute concurrently with other processes A thread is a lightweight flow that can execute concurrently with other threads within the same process. Dynamic design identifies concurrent system parts: Sequence diagrams imply sequential threads; State/activity diagrams model concurrent execution. Summary Architectural software design focuses on the main components of a software system and how they inter-relate. Architectural software design is an important phase of the software development process, and can -- literally -- make or break a development project. Software Architectures -- 41 Software Architectures -- 42

Additional Readings [Booch99] Booch, G. Rumbaugh, J., Jacobson, I., The Unified Modeling Language User Guide. Chapter 22. Addison-Wesley. [Rumbaugh91] Rumbaugh, J et al. Object-Oriented Modeling and Design. Chapter 9, Prentice-Hall. Software Architectures -- 43