Software Architecture

Slides:



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

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.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Architectures in Context Software Architecture Lecture 2.
The Architecture Design Process
1 Origins of Software Architecture. The Origins  Software Engineers have always employed software architectures –Very often without realizing it!  Address.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Architectures in Context Software Architecture Lecture 2.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
COMPUTER TERMS PART 1. COOKIE A cookie is a small amount of data generated by a website and saved by your web browser. Its purpose is to remember information.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
An Introduction to Software Architecture
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Architectures in Context Software Architecture Lecture 2.
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
University of Southern California Center for Systems and Software Engineering Model-Based Software Engineering Supannika Koolmanojwong Spring 2013.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
Acknowledgement: some slides from Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. Software Architecture EECE417 Lecture 3.
Design Concepts By Deepika Chaudhary.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
1 What is OO Design? OO Design is a process of invention, where developers create the abstractions necessary to meet the system’s requirements OO Design.
Acknowledgement: some slides from Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. Software Architecture EECE417 Lecture 2.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. The Big Idea Software Architecture Lecture 1.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. The Big Idea Software Architecture Lecture 1.
Basic Concepts and Definitions
CS223: Software Engineering Lecture 13: Software Architecture.
OBJECT-ORIENTED TESTING. TESTING OOA AND OOD MODELS Analysis and design models cannot be tested in the conventional sense. However, formal technical reviews.
CSCE 240 – Intro to Software Engineering Lecture 3.
Basic Concepts of Software Architecture. What is Software Architecture? Definition: – A software system’s architecture is the set of principal design.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. The Big Idea Software Architecture Lecture 1.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Software Development Module Code: CST 240 Chapter 6: Software Maintenance Al Khawarizmi International College, AL AIN, U.A.E Lecturer: Karamath Ateeq.
12. DISTRIBUTED WEB-BASED SYSTEMS Nov SUSMITHA KOTA KRANTHI KOYA LIANG YI.
Database Principles: Fundamentals of Design, Implementation, and Management Chapter 1 The Database Approach.
Software Architecture Lecture 3
Software Architecture
WEB SERVICES From Chapter 19 of Distributed Systems Concepts and Design,4th Edition, By G. Coulouris, J. Dollimore and T. Kindberg Published by Addison.
The Systems Engineering Context
Software Design and Architecture
Advance Software Engineering
Distributed web based systems
Classical Waterfall Model
Representational State Transfer
Software Architecture Lecture 3
Software Engineering (CSI 321)
Software Architecture Lecture 2
Lecture 2 – The Context of Software Architecture
Software Architecture Lecture 3
Database Systems Chapter 1
Chapter 20 Object-Oriented Analysis and Design
Implementing Architectures
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
DESIGNING YOUR SYSTEM.
Architecture Description Languages
Software Architecture Lecture 3
An Introduction to Software Architecture
CS310 Software Engineering Lecturer Dr.Doaa Sami
Architectures in Context
Software Architecture Lecture 3
Department of Computer Science Abdul Wali Khan University Mardan
Architectures in Context
WEB SERVICES From Chapter 19, Distributed Systems
Software Architecture Lecture 7
Software Architecture Lecture 7
Software Architecture Lecture 1
Chapter 5 Architectural Design.
Software Architecture Lecture 3
Software Architecture Lecture 7
Software Architecture Lecture 6
Presentation transcript:

Software Architecture Introduction Software Architecture

Every engineered artifact has an architecture

Sometimes refereed to as the system’s blueprint

Importance of architecture in engineering disciplines An architecture may be elegant and effective, or clumsy and dysfunctional Architectural models provide the means to represent and communicate the engineered artifact’s properties Facilitates communication among the stakeholders

Examples of software architecture

More examples

More examples

More examples

More examples

More examples

More examples

Description of a system’s architecture The Architecture of This System Next Section usually informal prose plus box-and-line diagram lots of appeal to intuition rarely formal, little precision

Unlike buildings and cars, software is intangible architectures produced by different people looking at the same code

The challenge Develop systems “architecturally” apply codified architectural design expertise build systems by assembling existing parts use standards for integration assure that the system has the desired properties reduce development and evolution costs Turn Software Architecture into an engineering discipline from ad hoc definition to codified principles

What is the nature of software construction? [somewhat conflicting] quotes: Software engineering is, in fact, a form of engineering David Parnas (modules, hiding, & OO) Programming is an art and a science Donald Knuth (computational complexity, analysis of algorithms)

Creating cost-effective solutions ... ... to practical problems ... what is engineering? definitions abound. They have in common: Creating cost-effective solutions ... ... to practical problems ... ... by applying scientific knowledge ... ... building things ... ... in the service of mankind engineering enables ordinary people to do things that formerly required virtuosos engineering entails making decisions under the constraints of limited time, knowledge, and resources

SA & programming address different issues Architecture Programs interactions among parts implementations of parts system-wide views local views declarative operational more stable components dynamic allocation system-level performance algorithmic performance software engineering is, in fact, a form of engineering David Parnas programming is an art and a science Donald Knuth

SA makes a difference: AT&T Design Reviews at AT&T Architecture Review Board created 1988 facilitates architectural reviews for projects Results reviewed over 350 projects from 1989-95 “a correct architecture has the largest single impact on cost and quality of the product” (Maranzano 1995) “based on experience … we found an average savings of at least one-half staff year per project reviewed, and substantially larger savings on several projects reviewed.” estimated cumulative savings: approx 175 staff years 18

SA makes a difference: WWW The Web is a collection of resources, each of which has a unique name known as a uniform resource locator, or “URL”. Each resource denotes, informally, some information. URI’s can be used to determine the identity of a machine on the Internet, known as an origin server, where the value of the resource may be ascertained. Communication is initiated by clients, known as user agents, who make requests of servers. Web browsers are common instances of user agents.

SA makes a difference: WWW Resources can be manipulated through their representations. HTML is a very common representation language used on the Web. All communication between user agents and origin servers must be performed by a simple, generic protocol (HTTP), which offers the command methods GET, POST, etc. All communication between user agents and origin servers must be fully self-contained. (So-called “stateless interactions”)

SA makes a difference: WWW Architecture of the Web is wholly separate from the code There is no single piece of code that implements the architecture. There are multiple pieces of code that implement the various components of the architecture. E.g., different Web browsers

SA makes a difference: WWW Stylistic constraints of the Web’s architectural style are not apparent in the code The effects of the constraints are evident in the Web One of the world’s most successful applications is only understood adequately from an architectural vantage point.

SA makes a difference: Unix Remember pipes and filters in Unix? ls invoices | grep –e august | sort Application architecture can be understood based on very few rules Applications can be composed by non-programmers Akin to Lego blocks A simple architectural concept that can be comprehended and applied by a broad audience

Fundamental Understanding Architecture is a set of principal design decisions about a software system Three fundamental understandings of software architecture Every application has an architecture Every application has at least one architect Architecture is not a phase of development

Wrong View: Architecture as a Phase Treating architecture as a phase denies its foundational role in software development More than “high-level design” Architecture is also represented, e.g., by object code, source code, …

Context of Software Architecture Requirements Design Implementation Analysis and Testing Evolution Development Process Let’s look at a few of these… see the book for more details

Context of Software Architecture Requirements Design Implementation Analysis and Testing Evolution Development Process

The Twin Peaks Model

Context of Software Architecture Requirements Design Implementation Analysis and Testing Evolution Development Process

Implementation The objective is to create machine-executable source code That code should be faithful to the architecture Alternatively, it may adapt the architecture How much adaptation is allowed? Architecturally-relevant vs. -unimportant adaptations It must fully develop all outstanding details of the application

Faithful Implementation All of the structural elements found in the architecture are implemented in the source code Source code must not utilize major new computational elements that have no corresponding elements in the architecture Source code must not contain new connections between architectural elements that are not found in the architecture Is this realistic? Overly constraining? What if we deviate from this?

Unfaithful Implementation The implementation does have an architecture It is latent, as opposed to what is documented. Failure to recognize the distinction between planned and implemented architecture robs one of the ability to reason about the application’s architecture in the future misleads all stakeholders regarding what they believe they have as opposed to what they really have makes any development or evolution strategy that is based on the documented (but inaccurate) architecture doomed to failure

Context of Software Architecture Requirements Design Implementation Analysis and Testing Evolution Development Process

Analysis and Testing Analysis and testing are activities undertaken to assess the qualities of an artifact The earlier an error is detected and corrected the lower the aggregate cost Rigorous representations are required for analysis, so precise questions can be asked and answered

Analysis of Architectural Models Formal architectural model can be examined for internal consistency and correctness An analysis on a formal model can reveal Component mismatch Incomplete specifications Undesired communication patterns Deadlocks Security flaws It can be used for size and development time estimations

Analysis of Architectural Models (cont’d) may be examined for consistency with requirements may be used in determining analysis and testing strategies for source code may be used to check if an implementation is faithful

Context of Software Architecture Requirements Design Implementation Analysis and Testing Evolution Development Process

Evolution and Maintenance All activities that chronologically follow the release of an application Software will evolve Regardless of whether one is using an architecture-centric development process or not The traditional software engineering approach to maintenance is largely ad hoc Risk of architectural decay and overall quality degradation Architecture-centric approach Sustained focus on an explicit, substantive, modifiable, faithful architectural model

Why study software architecture. http://money. cnn