CS4311 Spring 2011 Software Architecture Dr. Guoqiang Hu Department of Computer Science UTEP.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

A component- and message-based architectural style for GUI software
Architecture Representation
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Basic Concepts Software Architecture Lecture 3.
Software Architecture Lecture 2
By Xiangzhe Li Thanh Nguyen.  Components and connectors are composed in a specific way in a given system’s architecture to accomplish that system’s objective.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
Basic Concepts in Component-Based Software Engineering
Technical Architectures
Architectural Styles. Definitions of Architectural Style  Definition. An architectural style is a named collection of architectural design decisions.
Software Connectors. Attach adapter to A Maintain multiple versions of A or B Make B multilingual Role and Challenge of Software Connectors Change A’s.
Software Architecture Design Instructor: Dr. Jerry Gao.
Introduction to Software Engineering Lecture 6 André van der Hoek.
Software Architecture Lecture 5
Satzinger, Jackson, and Burd Object-Orieneted Analysis & Design
Establishing the overall structure of a software system
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Design Patterns.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
System Design & Software Architecture
Introduction to Databases Transparencies 1. ©Pearson Education 2009 Objectives Common uses of database systems. Meaning of the term database. Meaning.
What is Software Architecture?
The Design Discipline.
© Drexel University Software Engineering Research Group (SERG) 1 Based on the paper by Philippe Kruchten from Rational Software.
Chapter 7: Architecture Design Omar Meqdadi SE 273 Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Software Architecture
1 CMPT 275 High Level Design Phase Architecture. Janice Regan, Objectives of Design  The design phase takes the results of the requirements analysis.
Traditional Language- influenced styles.
An Introduction to Software Architecture
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
Architectural Design To explain the advantages and disadvantages of different distributed systems architectures To discuss client-server and distributed.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Architectural Styles.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Architectural Styles Part I Software Architecture Lecture 5.
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
Architectures of distributed systems Fundamental Models
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
CSC 480 Software Engineering Lecture 18 Nov 6, 2002.
Unit 2 Architectural Styles and Case Studies | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS 1.
1 CMPT 275 High Level Design Phase Modularization.
CSC480 Software Engineering Lecture 10 September 25, 2002.
Software Architecture
University of Southern California Center for Systems and Software Engineering Architecture and Design Patterns CSCI577A Fall2015 Kan Qi, Bo Wang.
Foundations of Information Systems in Business. System ® System  A system is an interrelated set of business procedures used within one business unit.
CSC 480 Software Engineering High Level Design. Topics Architectural Design Overview of Distributed Architectures User Interface Design Guidelines.
Slide 1 Lecture 15 Enterprise Systems Development ( CSC447 ) COMSATS Islamabad Muhammad Usman, Assistant Professor.
Basic Concepts and Definitions
Chapter : 9 Architectural Design
OOD OO Design. OOD-2 OO Development Requirements Use case analysis OO Analysis –Models from the domain and application OO Design –Mapping of model.
Foundations, Theory, and Practice Software Architecture Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Basic.
Basic Concepts of Software Architecture. What is Software Architecture? Definition: – A software system’s architecture is the set of principal design.
System Architecture CS 560. Project Design The requirements describe the function of a system as seen by the client. The software team must design a system.
Software Architecture Lecture 3
Design Patterns-1 7 Hours.
Software Architecture
CS 325: Software Engineering
Software Design and Architecture
CHAPTER 3 Architectures for Distributed Systems
Software Architecture Lecture 3
Software Architecture Lecture 2
Software Architecture Lecture 3
Model-View-Controller Patterns and Frameworks
Patterns.
Software models - Software Architecture Design Patterns
Software Architecture Lecture 3
An Introduction to Software Architecture
Software Architecture Lecture 3
Software Architecture Lecture 3
Chapter 6: Architectural Design
Presentation transcript:

CS4311 Spring 2011 Software Architecture Dr. Guoqiang Hu Department of Computer Science UTEP

What Is Architecture? Dictionary definitions Examples: archangel, archenemy, archduke, archbishop matriarch, patriarch, monarch Arch as prefix or suffix: main, chief, principal, most important, highest, fundamental, basic, extreme or most characteristic, ruler, leader Architecture: The art and science of designing and erecting buildings Fundamental underlying design of buildings Style and method of design and construction of buildings Buildings and other structures

Everything has its architecture

Software architectures

What is software architecture? Framework Mechanism Way Shape Form Means Organization Arrangement The Big Picture !

Where Come the Software Architectures? Problem domains New problem domains can be invented! (WWW, Internet)

Software Architecture Definition Software architecture is the set of principle design decisions made about a software system. What design decisions? System structure Functional behavior Interaction Nonfunctional properties Implementation System goals, Stakeholders, Nontechnical considerations

Component Elements that encapsulate processing and data in a system’s architecture are referred to as software components. An architectural entity that (1)encapsulates a subset of the system’s functionality and/or data, (2)restricts access to that subset via an explicitly defined interface, and (3)had explicitly defined dependencies on its required execution context. Connector Elements that are tasked with effecting and regulating interactions among components. Application independent.

Configuration (Topology) A set of specific associations between the components and connectors of a software system’s architecture. Models An artifact that captures some or all of the design decisions that comprise a system’s architecture. Architectural modeling is the reification and documentation of those design decisions. Different models: structural vs. behavioral; static vs. dynamic; scope; etc.

Architectural style A named collection of architectural design decisions that (1)are applicable in a given development context, (2)constrain architectural design decisions that are specific to a particular system with that context, and (3)elicit beneficial qualities in each resulting system. Not about: specific systems; specific components; specific interaction mechanisms; specific configurations.

The Repertoire of Architecture Styles Client-Server architecture style Application context: Clients request services from a server Centralization of computation and data at the server Separation of user interface tasks from computation and data management and storage For examples: Websites, etc.

Components: Clients and server Connectors: Remote procedure call, network protocols Data elements: Parameters and return values are sent by the connectors Topology: Two-level, with multi-clients Qualities yielded: Centralization of computation and data at the server, with the information made available to remote clients. A single powerful server can service many clients. Cautions: Network bandwidth.

Three tier or n-tier architecture style Application context: Client-Server architecture style Multi-level services are needed For examples: Online banking systems, etc.

Dataflow architecture style Application context: Sequential data transformations are needed For examples: Data processing systems, etc. Pipe-and-Filter.

Components: Separate components, executing in order Connectors: (Remote) Procedure call, network protocols Data elements: Parameters and return values are sent by the connectors Topology: Linear Qualities yielded: Modularity, simplicity. Cautions: Concurrency.

Model-View-Controller architecture style Model: manages the behavior and data of the application domain, responds to requests for information about its state (usually from the view), and responds to instructions to change state (usually from the controller). View: manages the display of information. Controller: interprets inputs from the user, informing the model and/or the view to change as appropriate.

Application context: User interface changes more frequently than business logic Separate user interface design from complex business logic The application displays the same data in different ways User interface needs to support different physical devices (browser-based, PDAs, cell phones), whereas the business logic remains the same. A clean separation of these two parts accelerates the migration and minimizes the risk of introducing errors into the business logic For examples: Data visualization systems, etc.

Components: Model, View, and Controller Connectors: (Remote) Procedure call, network protocols Data elements: Parameters and return values are sent by the connectors Topology: Triangular Qualities yielded: Flexibility, separation of concern, multiple views. Cautions: New levels of indirection.

Layered architecture style (virtual machines) Application context: Ordered layered services are necessary Insulate upper layer from lower layer For examples: Network protocols, Java, operating systems, etc.

Components: Layers, offering a set of services to other layers, typically comprising several programs (subcomponents) Connectors: Procedure call Data elements: Parameters and return values are sent by the connectors Topology: Linear, for strict virtual machine; a directed acyclic graph in looser interpretations Qualities yielded: Clear dependence structure; Software at upper levels immune to changes of implementation within lower levels as long as the service specification are invariant; Software at lower levels fully independent of upper levels. Cautions: Efficiency

Shared state architecture style Application context: Collaborate and communicate through a shared repository For examples: Wikipedia, etc.

Components: Independent programs, blackboard Connectors: Direct memory access; procedure call; database query Data elements: Data stored in the blackboard Topology: Star topology, with the blackboard at the center Qualities yielded: Complete solution do not have to be planned; shared evolving views; collaboration made simple. Cautions: Data consistency

Rule-based architecture style Application context: Rule-based expert system (Rules and Inference engine) The problems can be solved by repeated resolving a set of predicates. For examples: Expert systems, etc. Components: User interface, inference engine, knowledge base Connectors: Procedure call; shared data access Data elements: Facts and queries Topology: Tightly coupled three-tier Qualities yielded: Rules can be dynamically modified. Cautions: The number of rules, order of rules

Interpreter architecture style Application context: Interactive command interpretation For examples: “Basic”, DOS or UNIX command shells, etc. Components: User interface, command interpreter Connectors: Procedure call; shared data access Data elements: Commands Topology: Tightly coupled three-tier Qualities yielded: Highly dynamical behavior. Cautions: Efficiency

Mobile code architecture style Application context: Moving code is more efficient than moving data Dynamically customizing local processing through inclusion of external code. For examples: JavaScript, ActiveX controls, Grid computing, etc. Components: Execution dock, code compiler/interpreter Connectors: Procedure call, packaging tool Data elements: Code Topology: Network Qualities yielded: Dynamic adaptability. Cautions: Security

Publisher-Subscriber architecture style Application context: Producers and Consumers of information Dynamically publishing and registering for information. For examples: News dissemination, etc. Components: Publishers, subscribers, proxies for managing distribution Connectors: Procedure call, network protocols Data elements: Subscriptions, notifications, published information Topology: Network Qualities yielded: High efficient one-way dissemination.

Event-based architecture style Application context: Independent components communicating solely by sending and receiving events These is no classification of components into publishers and subscribers. For examples: User interface, Markets-monitoring system, etc. Components: Event generator/consumer Connectors: Event-bus Data elements: Events Topology: Event-bus Qualities yielded: Highly scalable, easy to evolve, effective for highly distributed, heterogeneous applications. Cautions: No guarantee if or when a particular event will be processed

Peer-to-Peer architecture style Application context: A network of loosely coupled autonomous peers Each peer acting both as a client and a server Both information and control are decentralized and distributed For examples: File sharing systems, etc. Components: Independent Peers (clients and servers) Connectors: Custom network protocol Data elements: Network messages Topology: Network Qualities yielded: Decentralized computing with flow of control and resources distributed among peers. Highly robust in the face of failure. Scalable in terms of access to resources and computing power. Cautions: When information retrieval is time critical; security

Constraints Imposing Discussion of Styles Cons: Save time and energy to focus on essentials Feeling of certainty Providing baseline knowledge and languages for communication Promote understanding design decisions Pros: Combination, modification, and creation of styles

Design pattern A design pattern is a named and well-known problem/solution pair that can be applied in new contexts, with advice on how to apply it in novel situations and discussion of its trade-offs, implementations, variations, and so forth. It attempts to codify existing tried-and-true knowledge and principles. A design pattern names, abstracts, and identifies the key aspects of a common design structure that can make it useful for creating a reusable design. The design pattern identifies the participating classes and instances, their roles and collaborations, and the distribution of responsibilities.

The pattern of the presentation of design patterns (1)Name of the design pattern: the vocabulary (2)Applying context: the situation giving rise to the design problem (3)Problem: a recurring problem arising in that situation (4)Solution: a proven solution to that problem (5)Discussion: any relevant information/knowledge of the design pattern The categories of design patterns (1)Creational patterns: deal with object creation mechanisms (2)Structural patterns: identifying the way to realize relationships (3)Behavioral patterns: identify common communication patterns between objects and realize these patterns (4)Concurrency patterns: deal with multi-threaded programming paradigm