Software Architecture “Good software architecture makes the rest of the project easy.” Steve McConnell, Survival Guide “There are two ways of constructing.

Slides:



Advertisements
Similar presentations
Lecture 6: Software Design (Part I)
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Architecture Representation
Architectural Mismatch: Why Reuse Is So Hard David Garlan, Robert Allen, and John Ockerbloom Presented by Hoang Bao CSC 509 – Winter 2005.
Architectural Styles. Definitions of Architectural Style  Definition. An architectural style is a named collection of architectural design decisions.
Architecture-driven Modeling and Analysis By David Garlan and Bradley Schmerl Presented by Charita Feldman.
The Architecture Design Process
1 Software Architecture: a Roadmap David Garlen Roshanak Roshandel Yulong Liu.
Unified Modeling (Part I) Overview of UML & Modeling
1 CS115 Class 7: Architecture Due today –Requirements –Read Architecture paper pages 1-15 Next Tuesday –Read Practical UML.
Demystifying Architectural Styles Nikunj Mehta 3/11/02Demystifying Architectural Styles2 Architectural Styles Characterize –Structure, i.e. external.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
SE-565 Software System Requirements More UML Diagrams.
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?
Architectural Mismatch or Why it’s hard to build systems out of existing parts.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Architectural Design.
What is Software Architecture?
Chapter 5CSA 217 Design in Construction Chapter 5 1.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
CSE 303 – Software Design and Architecture
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Architectural Design portions ©Ian Sommerville 1995 Establishing the overall structure of a software system.
1 5/18/2007ã 2007, Spencer Rugaber Software Architecture (Informal Definition) The organization of a system into component subsystems or modules Box and.
Link on the Calendar page of the class website: /11wi/weekly-status.html
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Architecture styles Pipes and filters Object-oriented design Implicit invocation Layering Repositories.
CSE 403, Spring 2007, Alverson Software Architecture “Good software architecture makes the rest of the project easy.” McConnell, Survival Guide.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Architectural Styles.
SOFTWARE DESIGN.
Intent Specification Intent Specification is used in SpecTRM
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
GRASP: Designing Objects with Responsibilities
Documenting Software Architectures 1.Uses and Audiences for Architecture Documentation Architecture documentation serves as a means of education Architecture.
CSE 403, Spring 2008, Alverson Software Design “There are two ways of constructing a software design: one way is to make it so simple that there are obviously.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
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.
Unit 2 Architectural Styles and Case Studies | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS 1.
John D. McGregor Class 4 – Initial decomposition
1 CMPT 275 High Level Design Phase Modularization.
CPSC 871 John D. McGregor Module 3 Session 1 Architecture.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Engineering B.Tech IT/II Sem-II Term: Unit-4 PPT SLIDES Text Books:1.Software Engineering, A practitioner’s approach Roger s. Pressman.
Lecture VIII: Software Architecture
CS223: Software Engineering Lecture 13: Software Architecture.
CS223: Software Engineering Lecture 14: Architectural Patterns.
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.
Architectural Mismatch: Why reuse is so hard? Garlan, Allen, Ockerbloom; 1994.
Basic Characteristics of Object-Oriented Systems
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.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Architecture CSE 403 Fallingwater by Frank Lloyd Wright
Unified Modeling Language
OO Methodology OO Architecture.
Part 3 Design What does design mean in different fields?
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
John D. McGregor Module 6 Session 1 More Design
Chapter 5 Architectural Design.
Chapter 6: Architectural Design
Architectural Mismatch: Why reuse is so hard?
Presentation transcript:

Software Architecture “Good software architecture makes the rest of the project easy.” Steve McConnell, Survival Guide “There are two ways of constructing a software design: one way is to make it so simple that there are obviously no deficiencies; the other is to make it so complicated that there are no obvious deficiencies.” C.A.R. Hoare (1985)

The basic problem Requirements Code ????? How do you bridge the gap between requirements and code?

One answer Requirements Code A miracle happens!

A better answer Requirements Code Software Architecture Provide a high level framework to build and evolve the system

Box-and-arrow diagrams Very common, hugely valuable. But, what does a box represent? an arrow? a layer? adjacent boxes? SW architecture gives these meaning

An architecture is expressed by components and connectors Components define the basic computations comprising the system, and their behaviors – abstract data types, filters, etc. Connectors define the interconnections between components – procedure call, event announcement, asynchronous message sends, etc. The line between them may be fuzzy at times – Ex: A connector might (de)serialize data, but can it perform other, richer computations? An architecture bridges the gap between requirements and code

7 A good architecture Satisfies functional and performance requirements Manages complexity Accommodates future change Also: reliability, safety, understandability, compatibility, robustness, …

Divide and conquer Benefits of decomposition: – Decrease size of tasks – Support independent testing and analysis – Separate work assignments – Ease understanding Use of abstraction leads to modularity – Implementation techniques: information hiding, interfaces To achieve modularity, you need: – Strong cohesion within a component – Loose coupling between components – And these properties should be true at each level

9 Qualities of modular software decomposable – can be broken down into pieces composable – pieces are useful and can be combined understandable – one piece can be examined in isolation has continuity – reqs. change affects few modules protected / safe – an error affects few other modules

10 Interface and implementation public interface: data and behavior of the object that can be seen and executed externally by "client" code private implementation: internal data and methods in the object, used to help implement the public interface, but cannot be directly accessed client: code that uses your class/subsystem – Example: radio public interface is the speaker, volume buttons, station dial private implementation is the guts of the radio; the transistors, capacitors, voltage readings, frequencies, etc. that user should not see

UML module diagrams Express – Subclassing – Use (dependence)

Loose coupling coupling assesses the kind and quantity of interconnections among modules Modules that are loosely coupled (or uncoupled) are better than those that are tightly coupled The more tightly coupled are two modules, the harder it is to work with them separately, and thus the benefits become more limited

Tightly or loosely coupled?

Strong cohesion cohesion refers to how closely the operations in a module are related Tight relationships improve clarity and understanding Classes with good abstraction usually have strong cohension No schizophrenic classes!

Strong or weak cohesion? class Employee { public: … FullName GetName() const; Address GetAddress() const; PhoneNumber GetWorkPhone() const; … bool IsJobClassificationValid(JobClassification jobClass); bool IsZipCodeValid (Address address); bool IsPhoneNumberValid (PhoneNumber phoneNumber); … SqlQuery GetQueryToCreateNewEmployee() const; SqlQuery GetQueryToModifyEmployee() const; SqlQuery GetQueryToRetrieveEmployee() const; … }

An architecture helps with System understanding – describes the interactions between modules Reuse – by defining the high level components, we can see if there is opportunity for reuse Construction – breaks development down into work items; provides a path from requirements to code Evolution – see reuse Management – helps understand the work to do, and the work done; track progress Communication – gives you a vocabulary; pictures say 1000 words

Architectural style Defines the vocabulary of components and connectors for a family (style) Constraints on the elements and their combination – Topological constraints (no cycles, register/announce relationships, etc.) – Execution constraints (timing, etc.) By choosing a style, one gets all the known properties of that style (for any architecture in that style) – Ex: performance, lack of deadlock, ease of making particular classes of changes, etc.

Not just boxes and arrows Consider pipes & filters, for example (Garlan and Shaw) – Pipes must compute local transformations – Filters must not share state with other filters – There must be no cycles If these constraints are not satisfied, it’s not a pipe & filter system – One can’t tell this from a picture – One can formalize these constraints scanparseoptimizegenerate

The design and the reality The code is often less clean than the design The design is still useful – Communication among team members – Selected deviations can be explained more concisely and with clearer reasoning

Architectural mismatch Garlan, Allen, Ockerbloom tried to build a toolset to support software architecture definition from existing components – OODB (OBST) – graphical user interface toolkit (Interviews) – RPC mechanism (MIG/Mach RPC) – Event-based tool integration mechanism (Softbench) It went to hell in a handbasket, not because the pieces didn’t work, but because they didn’t fit together – Excessive code size – Poor performance – Needed to modify out-of-the-box components (e.g., memory allocation) – Error-prone construction process Architectural Mismatch: Why Reuse Is So Hard. IEEE Software 12, 6 (Nov. 1995) Architecture should warn about such problems (& identify problems)

Views A view illuminates a set of top-level design decisions how the system is composed of interacting parts where are the main pathways of interaction key properties of the parts information to allow high-level analysis and appraisal

Importance of views Multiple views are needed to understand the different dimensions of systems Functional Requirements Performance (execution) Requirements Packaging Requirements Installation Requirements Booch

Web application (client-server) Booch

manipulates Model-View-Controller Separates the application object (model) from the way it is represented to the user (view) from the way in which the user controls it (controller). User Model Controller View Application seesuses updates

Pipe and filter Filter - computes on the data Pipe – passes the data,,, Each stage of the pipeline acts independently of the others. Can you think of a system based on this architecture? top | grep $USER | grep acrobat

Blackboard architectures The knowledge sources: separate, independent units of application dependent knowledge. No direct interaction among knowledge sources The blackboard data structure: problem- solving state data. Knowledge sources make changes to the blackboard that lead incrementally to a solution to the problem. Control: driven entirely by state of blackboard. Knowledge sources respond opportunistically to changes in the blackboard. 27 Blackboard systems have traditionally been used for applications requiring complex interpretations of signal processing, such as speech and pattern recognition.

Hearsay-II: blackboard 28