Software Architecture: An Introduction

Slides:



Advertisements
Similar presentations
Software Architecture Lecture 3
Advertisements

Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Basic Concepts Software Architecture Lecture 3.
Software Architecture Lecture 2
Design Concepts and Principles
Software Connectors Software Architecture. Importance of Connectors Complex, distributed, multilingual, modern software system functionality and managing.
Mastering Object-Oriented Analysis and Design with UML Module 4: Analysis and Design Overview.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors.
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.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors Software Architecture Lecture 7.
Introduction to Software Architecture. Software Architecture Definition  Definition. A software system’s architecture is the set of principal design.
Software Architecture in Practice
Chapter 9: Moving to Design
Institute for Software Research©2001, University of California, Irvine Product-Line Architectures André van der Hoek Institute for Software Research University.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors Software Architecture Lecture 7.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
What is Software Architecture?
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Chapter 7: Architecture Design Omar Meqdadi SE 273 Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 10 Architectural Design.
An Introduction to Software Architecture
Architecture-Based Runtime Software Evolution Peyman Oreizy, Nenad Medvidovic & Richard N. Taylor.
Why Architecture? The architecture is not the operational software. Rather, it is a representation that enables a software engineer to: (1) analyze the.
Assessing the Suitability of UML for Modeling Software Architectures Nenad Medvidovic Computer Science Department University of Southern California Los.
Architecting Web Services Unit – II – PART - III.
By Xiangzhe Li Thanh Nguyen.  Introduction  Terminology  Architecture  Component  Connector  Configuration  Architectural Style  Architectural.
Odyssey A Reuse Environment based on Domain Models Prepared By: Mahmud Gabareen Eliad Cohen.
SOFTWARE DESIGN.
Slide 1 Introduction to Software Architecture TV Prabhakar.
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Architectural Design lecture 10. Topics covered Architectural design decisions System organisation Control styles Reference architectures.
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Slide 1 Software Architecture SSE. Slide 2 Typical description of software architectures l Descriptions of software systems often include a section on.
Software Connectors Acknowledgement: slides mostly from Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic,
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors in Practice Software Architecture.
Basic Concepts and Definitions
Foundations, Theory, and Practice Software Architecture Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Basic.
1 IBM Software Group ® Mastering Object-Oriented Analysis and Design with UML 2.0 Module 4: Analysis and Design Overview.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
+ Informatics 122 Software Design II Lecture 13 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Software Connectors. What is a Software Connector? 2 What is Connector? – Architectural element that models Interactions among components Rules that govern.
Basic Concepts of Software Architecture. What is Software Architecture? Definition: – A software system’s architecture is the set of principal design.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Software Architecture Lecture 3
Software Architecture
Software Connectors.
Software Design and Architecture
Software Architecture Lecture 3
Software Architecture Lecture 2
Software Connectors – A Taxonomy Approach
Software Architecture Lecture 3
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Software Architecture Lecture 3
Software Connectors.
An Introduction to Software Architecture
Software Architecture Lecture 3
Software Architecture Lecture 7
Software Architecture Lecture 7
Software Architecture Lecture 3
Software Architecture Lecture 7
Software Architecture Lecture 6
Presentation transcript:

Software Architecture: An Introduction Dr. Nenad Medvidovic Assistant Professor Center for Software Engineering Computer Science Department University of Southern California D-XXXXX Title of Workshop [Presenters, leave this alone.]

Topics to be Covered Motivation Introduction to Software Architectures Overview of Architectural Building Blocks Scope of Software Architectures Sources of Software Architectures “Architecting” Software Systems Summary Additional Resources

Motivation Software systems are rapidly and continously growing in size and complexity Techniques and tools for developing and maintaining such systems typically play catch-up To deal with this problem, many approaches exploit abstraction Ignore all but the details of the system most relevant to a task (e.g., developing the user interface or system-level testing This greatly simplifies the model of the system Apply techniques and tools on the simplified model Incrementally reintroduce information to complete the “picture” Software architecture is such an approach Applicable to the task of software design

What is Architecture? A high-level model of a thing Describes critical aspects of the thing Understandable to many stakeholders architects, engineers, workers, managers, customers Allows evaluation of the thing’s properties before it is built Provides well understood tools and techniques for constructing the thing from its blueprint Which aspects of a software system are architecturally relevant? How should they be represented most effectively to enable stakeholders to understand, reason, and communicate about a system before it is built? What tools and techniques are useful for implementing an architecture in a manner that preserves its properties?

What is Software Architecture? A software system’s blueprint Its components Their interactions Their interconnections Informal descriptions Boxes and lines Informal prose A shared, semantically rich vocabulary Remote procedure calls (RPCs) Client-Server Pipe and Filer Layered Distributed Object-Oriented

From Requirements to Architecture From problem definition to requirements specification Determine exactly what the customer and user want Specifies what the software product is to do From requirements specification to architecture Decompose software into modules with interfaces Specify high-level behavior, interactions, and non-functional properties Consider key tradeoffs Schedule vs. Budget Cost vs. Robustness Fault Tolerance vs. Size Security vs. Speed Maintain a record of design decisions and traceability Specifies how the software product is to do its tasks

Focus of Software Architectures Two primary foci System Structure Correspondence between requirements and implementation A framework for understanding system-level concerns Global rates of flow Communication patterns Execution Control Structure Scalability Paths of System Evolution Capacity Throughput Consistency Component Compatibility

Why Software Architecture? A key to reducing development costs Component-based development philosophy Explicit system structure A natural evolution of design abstractions Structure and interaction details overshadow the choice of algorithms and data structures in large/complex systems Benefits of explicit architectures A framework for satisfying requirements Technical basis for design Managerial basis for cost estimation & process management Effective basis for reuse Basis for consistency, dependency, and tradeoff analysis Avoidance of architectural erosion

Even Simple Software is Complex Source code level view of an application

Achitecture Alleviates the Complexity Architecture level view of the application

Definitions of Software Architecture Perry and Wolf Software Architecture = {Elements, Form, Rationale} Shaw and Garlan Software architecture involves the description of elements from which systems are built, interactions among those elements, patterns that guide their composition, and constraints on those patterns Kruchten Architecture deals with abstraction, decomposition, composition, style and aesthetics. Canonical Building Blocks Components, Connectors, Configurations What How Why

Components A component is a unit of computation or a data store. Components are loci of computation and state. Clients Servers Databases Filters Layers Abstract Data Types (ADTs) A component may be simple or composite. Composite components describe a system.

Connectors A connector is an architectural element that models: Interactions among components Rules that govern those interactions Simple interactions Procedure calls Shared variable access Complex and semantically rich interactions Client-Server Protocols Database Access Protocols Asynchronous Event Multicast Piped Data Streams

Configurations/Topologies An architectural configuration or topology is a connected graph of components and connectors which describes architectural structure. Proper connectivity Concurrent and distributed properties Adherence to design heuristics and style rules Composite components are configurations.

Scope of Software Architectures Every system has an architecture. Details of the architecture are a reflection of system requirements and trade-offs made to satisfy them Possible decision factors Performance Compatibility with legacy software Planning for reuse Distribution profile Current and Future Safety, Security, Fault tolerance requirements Evolvability Needs Changes to processing algorithms Changes to data representation Modifications to the structure/functionality

Compiler Architecture Sequential Parallel

Compiler Architecture Pros and Cons Sequential + Conceptual Simplicity + Architecture reflects control flow - Performance Parallel + Performance + Adaptability - Synchronization - Coordination Analysis and testing + = Pro, - = Con

Sources of Architecture (1) Architecture comes from “black magic, people having ‘architectural visions’” 3 + 1 main sources of architecture Intuition Method Theft (i.e., reuse) Blind luck Their ratio varies according to: Architect’s experience System’s novelty

Sources of Architecture (2) Theft From previous similar systems From literature Method Systematic and conscious Possibly documented Architecture is derived from requirements via transformations and heuristics Intuition “The ability to conceive without conscious reasoning.” Increased reliance on intuition increases the risk

Routine Design Method is critical “An architecture built with 50% theft and 50% intuition is doomed to fail.” Standardized methods Similarity to previous solutions Theft Cheaper, but not optimal Can be done by merely “good” designers Potential pitfall Over-reusing

Innovative Design Raw invention Intuition Derivation from abstract principles More optimal More expensive Must be done by “great” designers Potential pitfall Reinventing the wheel Single point of failure in staffing

Software “Architecting” The “architecting” problem lies in: Decomposition of a system into constituent elements Composition of (existing) elements into a system Two idealized approaches Top-Down Decompose the large problem into sub-problems Implement or reuse components that solve the sub-problems Bottom-Up Implement new or reuse existing stand-alone components Compose (a subset of) the components into a system A realistic approach will require both.

Issues in Decomposition (1) How do we arrive at: Components? Connectors? Their Configuration? What is the adequate component granularity level? What constraints on components are imposed by: Functional requirements Non-functional requirements Envisioned evolution patterns System Scale Computing Environment Customers/Users What assumptions can components make about one another?

Issues in Decomposition (2) How do components interact? What are the connectors in the system? What is the role of the connectors? Mediation Coordination Communication What is the nature of the connectors? Type of interaction Degree of concurrency Degree of information exchange

Issues in Composition Where does one locate existing: Components? Connectors? Configurations? How do we determine which elements are needed? Both at development time and at reuse time What is the adequate element granularity level? How do we ensure effective composition of heterogeneous elements? How do we know that we have the needed system?

Summary (1) Software architecture has proven to be a key to: Controlling system development costs Ensuring critical system properties Highlighting major tradeoffs in development Enabling effective deployment, operation, and evolution Several architectural concepts are part of mainstream development Components Complex interactions (connectors) Styles and patterns

Summary (2) To effectively leverage architecture, know your: Requirements Constraints Domain Components Connectors Legacy and “off-the-shelf” Customers/Users Management Developers