So --- Why Software Architecture? As software systems continue to grow in size and complexity (both breadth and depth), just looking at algorithms and.

Slides:



Advertisements
Similar presentations
Computer Systems & Architecture Lesson 2 4. Achieving Qualities.
Advertisements

ARCHITECTURES FOR ARTIFICIAL INTELLIGENCE SYSTEMS
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Software Systems.
Software Connectors Software Architecture. Importance of Connectors Complex, distributed, multilingual, modern software system functionality and managing.
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.
Knowledge Acquisitioning. Definition The transfer and transformation of potential problem solving expertise from some knowledge source to a program.
The Architecture Design Process
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
SWE Introduction to Software Engineering
Unified Modeling (Part I) Overview of UML & Modeling
Essential Software Architecture Ian Gorton CS590 – Winter 2008.
1 CS115 Class 7: Architecture Due today –Requirements –Read Architecture paper pages 1-15 Next Tuesday –Read Practical UML.
Objectives The key roles an architecture description plays in a software project. The key roles an architecture description plays in a software project.
Software Architecture in Practice
SWE Introduction to Software Engineering
Course Instructor: Aisha Azeem
Chapter 10: Architectural Design
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Object Oriented Analysis and Design Using the UML
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Architectural Design.
Chapter 6: The Traditional Approach to Requirements
Chapter 10 Architectural Design
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Chapter 7: Architecture Design Omar Meqdadi SE 273 Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 10 Architectural Design.
An Introduction to Software Architecture
The Architecture Business Cycle. Software Architecture Definition The software architecture of a program or computing system is the structure or structures.
 Chapter 6 Architecture 1. What is Architecture?  Overall Structure of system  First Stage in Design process 2.
4/2/03I-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Software Architecture and Design Readings: Ambler, Chap. 7 (Sections to start.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Architectural Styles.
SOFTWARE DESIGN.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Chapter 6 Architectural Design.
1 Introduction to Software Engineering Lecture 1.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Chapter 4 프로세스 모델 Process Models
So --- Why Software Architecture?
Unit 2 Architectural Styles and Case Studies | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS 1.
John D. McGregor Class 4 – Initial decomposition
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
CSC480 Software Engineering Lecture 10 September 25, 2002.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Reading TCP/IP Protocol. Training target: Read the following reading materials and use the reading skills mentioned in the passages above. You may also.
Software Connectors Acknowledgement: slides mostly from Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic,
Lecture VIII: Software Architecture
Basic Concepts and Definitions
CS223: Software Engineering Lecture 13: Software Architecture.
Chapter 13 설계 개념 Architectural Design 임현승 강원대학교 Revised from the slides by Roger S. Pressman and Bruce R. Maxim for the book “Software Engineering: A Practitioner’s.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. The Big Idea Software Architecture Lecture 1.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 5:Architectural Design l Establishing the overall structure of a software.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Wrap up. Structures and views Quality attribute scenarios Achieving quality attributes via tactics Architectural pattern and styles.
CompSci 280 S Introduction to Software Development
Software Design and Architecture
Part 3 Design What does design mean in different fields?
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
An Introduction to Software Architecture
Chapter 5 Architectural Design.
Presentation transcript:

So --- Why Software Architecture? As software systems continue to grow in size and complexity (both breadth and depth), just looking at algorithms and data structures is not enough. “Large” systems, by definition, is made of many sub-components that interact with each other. CodingDesignArchitecture

Software Architecture Your Text: “ A system’s architecture is the set of principal design decisions made during its development and any subsequent evolution.” Tsui modifies it to say: “ A system’s architecture is the result of a set of principal design decisions made and documented (in design document, code, etc.) during its development and subsequent evolution There is no “standard” definition of software architecture, yet; there are more definitions in Chapter 3 of your text What do you all think ?

A Definition from McMaster Univ. (Canada) Architectural Design (the designing activity) The process of i) identifying the components and ii) establishing a framework for control and communications of these components Software Architecture (the product from designing) The documented output from the architectural design activities.

Architecture-Centric Architecture-Centric approach to software development places an emphasis on “design” with an aim for: – Good quality (e.g. defects) and many attributes – Cost-effective development – High leveraging of past experiences

Analogy to Physical Building Software architecture and physical building architecture similarities: 1.Architecture exist independently from, but strongly linked to, the (building) code 2.Properties of the (structures) software are induced by the design of their architecture 3.The architect needs to have “broad” skills beyond just (construction) programming 4.Architecture is more important than the process of (building activities) software development activities 5.Architecture has matured into a discipline of its own with many architectural (building) design styles. (this one may be questionable)

Architectural “Styles” In physical building there are: Gothic style Ranch style Bavarian Chalet style Italian Villa style English Tudor style etc. In software we have: Layered style Pipe & Filter style etc. Style is a set of “constraints” placed on the design to achieve certain properties

Some Differences from Physical Building Buildings have been around for a much longer time than software; so a lot less is known about software Software does not have a “medium” such as materials of wood, stone, etc. for physical building; so software is not as “visible” Software is more malleable than a physical building; so software changes are more frequent, later in development stage, bigger in magnitude.

from Roman Architect Vitruvius to Today’s Software Designer Mitch Kapor (not in your text) Paraphrasing (Vitruvius): “ ---- well-designed buildings were those which exhibited firmness, commodity, and delight -----” Paraphrasing (Mitch Kapor-lotus 1-2-3): for software we want similar characteristics: firmness: No Bugs (or less bugs) commodity: functionalities that satisfy the requirements delight: pleasurable experience (usage experience) Paraphrasing (Winograd-Stanford U.): “ --- architects and designers work with commodity and delight, and the engineers works with firmness ----”

Why the Big emphasis on Architecture? Giving architecture the deserved attention provides: 1.Conceptual integrity 2.A basis for reuse of ---- knowledge, experience, design, and code 3.Effective project communication 4.Management of “families” of systems Architecture must be considered the “heart” of developing software system, even: –More than processes and methodologies –More than programming –More than requirements analysis (Tsui “objects” to this one; you?)

World Wide Web ---- Needs Architectural Description What is the web? –Multiple ways to describe it depending on the “view” Set of independent resources, interconnected by computing systems, that provide some services Set of computing programs that interact with each other according to a set of rules specified in standards and protocols such as HTTP, XML, etc. Set of interactions of agents and servers through interconnected systems. None of these “views,” even with diagrams, would give us a deep understanding of what the web is. But we can not get into all the details because it would need close to infinite amount of descriptions to explain all the programs, all protocols, all data, etc. –Thus we need to describe the “rules” (decisions) by which the main parts work and interact ---- use architectural style ?

Observations made in trying to describe the World Wide Web The architecture of the Web is totally separate from the code that implements all the various parts. (One needs to describe the Web at an architectural level.) There is no “single” piece of code that implements the web, and thus neither its architecture. There are multiple, equivalent pieces of code that exist and implement various components of the Web. The stylistic constraints that constitute the definition of the Web is not apparent in any one piece of the code, but the effects as implemented in all the pieces are evident in the Web.

a specific Architectural Style: Pipe and filter Main components: –Filter: processes a stream of input-data to produce some out- put data –Pipe: a conduit that allows the flow of data read input fileprocess file filter pipe This architecture style focuses on the dynamic (interaction) and forces a fairly simple, sequential structure;

Pipe and Filter : UNIX Influence UNIX command line processing of the pipe symbol, l the output from the command to the left of the symbol, l, is to be sent as input to the command to the right of the pipe; this mechanism got rid of specifying a file as std output of a command and then specifying that same file as the std input to another command, including possibly removing this intermediate file afterwards Example : Assume that in the file called my.txt is the following: I live in the city of Atlanta Example ( UNIX commands) : $ cat my.txt I live in the city of Atlanta $cat my.txt I sed “s/i/o/g” I love on the coty of Atlanta $ First cat command outputs my.txt to screen. The second cat command reads my.txt and sends it to sed command which search” for “i’ and “globally replace it with “o.” You can have more “l” and other processing commands, such as sort, to form a sophisticated software. Note the pipe symbol, l

Architecture critical for ---- Product Family Software Product family is a set of “related” software components which has i) some common components and ii) some variable components The variable components provide, for each product within the family, the differentiator by features, by cost (price), by time, etc. Reuse and cost sharing is the big advantage of Product Family (in reality ---- schedule also played a part)

Product “Family” ---- and Versioning General Requirements French ( version 1 ) Brazilian ( version 1 ) Japanese ( version 1 ) General Requirements (Version 2) French ( version 2 ) General Requirements (Version 3) French ( version 3 ) Japanese ( version 2 ) Japanese ( version 3 ) Brazilian ( version 3) Brazilian ( version 2 ) French (version 2.1) If Fench Version 2.1 came after Version 3, we may need to build a French V3.1 US (common) code v1 US (common) code v2 US (common) code v3

Summarizing Arch & Design: We Should Ask What are the major functional components of the architecture? –Decompose the requirements –Synthesize “similar” functionalities into major components –Decompose the major components into subcomponents How are the components related? –Structure of relationship under static condition –Dynamic flow of control and data during execution What elements are needed to “facilitate” the architecture? –Connector elements introduced to bring in versatile interaction –Additional functional components introduced to improve a particular attribute (e.g. security, availability) How do we design and evaluate various non-functional & behavioral properties? –Performance, security, maintainability, availability, etc. needs to be defined, specified, measured. What execution environment/platform needs to be considered and resolved? Is there any over-riding constraint (e.g. style) that should be invariant?