Acknowledgement: Most slides from Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. Software Architecture EECE417 Lecture 1.

Slides:



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

Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Basic Concepts Software Architecture Lecture 3.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Agile Architecture Prabhu Venkatesan for COMP-684.
The Mythical Man-Month by Fred Brooks (I) Published 1975, Republished 1995 Experience managing the development of OS/360 in Central Argument –Large.
No Silver Bullet “There is no single development, in either technology or management technique, which by itself promises even one order-of magnitude improvement.
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
No Silver Bullet Essence and Accidents of Software Engineering By Frederick P. Brooks Frederick P. Brooks Presentation by Yan Qi
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
The Architecture Design Process
Site Skin Structure Services Space plan Stuff Software Architecture and Software Architecture Patterns (1)
Introduction to Software Architecture. What is Software Architecture?  It is the body of methods and techniques that help us to manage the complexities.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. The Big Idea Software Architecture Lecture 1.
1 Origins of Software Architecture. The Origins  Software Engineers have always employed software architectures –Very often without realizing it!  Address.
Essential Software Architecture Ian Gorton CS590 – Winter 2008.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
EECE 571R (Spring 2010) Autonomic Computing (Building Self* Systems) Matei Ripeanu matei at ece.ubc.ca.
Software Architecture in Practice
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Software Systems.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Architectural Design.
What is Software Architecture?
Software Architecture in Practice (3rd Ed) Introduction
Essence and Accident in Software Engineering By: Mike Hastings.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
An Introduction to Software Architecture
Architecture Business Cycle
Lecture 9: Chapter 9 Architectural Design
1 Introduction to Software Architectures Lecture - 3.
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.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
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.
Basic Concepts of Component- Based Software Development (CBSD) Model-Based Programming and Verification.
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.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Overview of SAIP and LSSA. Software Architecture in Practice Provides a set of techniques, not a prescriptive method for architectural design. Based on.
Ivar Jacobson, Grady Booch, and James Rumbaugh The Unified Software Development Process Addison Wesley, : James Rumbaugh's OOMD 1992: Ivar Jacobson's.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. The Big Idea Software Architecture Lecture 1.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. The Big Idea Software Architecture Lecture 1.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. The Big Idea Software Architecture.
Basic Concepts and Definitions
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. The Big Idea Software Architecture Lecture 1.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. The Big Idea Software Architecture Lecture 1.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. The Big Idea Software Architecture Lecture 1.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Software Design Process. What is software? mid-1970s executable binary code ‘source code’ and the resulting binary code 1990s development of the Internet.
Software Architecture Lecture 3
Software Architecture
Software Architecture Lecture 3
Software Architecture Lecture 3
Software Architecture Lecture 1
EECE 310 Software Engineering
Design Model Like a Pyramid Component Level Design i n t e r f a c d s
Software Architecture Lecture 3
An Introduction to Software Architecture
Software Architecture Lecture 3
Software Architecture Lecture 3
Presentation transcript:

Acknowledgement: Most slides from Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. Software Architecture EECE417 Lecture 1

2 Gustavus AdolphusGustavus Adolphus, King of SwedenKing of Sweden Henrik Hybertsson Ship designer Multi-deck battleship Vasa is sinking after 30’ Inquires concluded that the ship was “badly proportioned” Story of ‘Vasa’ battleship (~1620)

This class is [amongst others] about techniques Hybertsson and his team could have used: Case studies of successful architectures crafted to satisfy demanding requirements Methods to asses the architecture before any system is built, so as to mitigate the risks of unprecedented designs Techniques for incremental architecture-based development, so as to uncover design flaws before it is to late to repair them

Administrativia Course webpage: Timeslot: Mon/Wed/Fri 11:00-12:00. Note: I may travel the week of February 10 th  we ’ ll schedule makeup class. Office hours: after each class or by appointment ( me) ece.ubc.ca Office: KAIS 4033

EECE 417: Course Goals Gain a good understanding of fundamental software architecture issues u Functional versus non-functional requirements and their impact on architecture. u Designing an architecture u Documenting a software architecture u Analyzing an architecture

6 What I’ll Assume You Know... Basic software engineering concepts u Procedural abstraction, encapsulation, polymorphism, … u UML notation (?) u Software patterns (?) Basics of Internet architecture and network programming u Socket programming, TCP, DNS, HTTP

Administravia: Grading Assignments (Individual) + Mini-Project (Group): 50% Midterm/Final exam: 50% Class and mailing list participation: 3% (bonus)

Questions?

What is Software Architecture? It’s all about software design u Architecture is software design, but not all design is software architecture [Gorton] Architecture focuses on ‘issues that will be difficult/impossible to change once the system is built’ u E.g., quality attributes like security, performance u E.g., non-functional requirements like cost, deployment hardware

Definitions – Taylor et al. [Software architecture is] the set of principal design decisions governing a system

Software Architecture Definition (source: Software Engineering CMU) “The software architecture of a program or computing system is the structure (or structures) of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.” Provided services, Interfaces, Performance characteristics, Fault handling, Shared resource usage Omit information not related to structure  abstraction More than one structure! Implications: (1) any system has a structure; (2) does not say what’s a good or a bad architecture.

Definitions - ANSI/IEEE Std “Architecture is the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.”

Main point: Architecture Defines Structure Decomposition of system in components/modules/subsystems Architecture defines: u Component responsibilities Precisely what each component does u Component interfaces How to interact with a component u Component communications and dependencies How multiple components interact to form a system

Software Engineering Difficulties

Software engineers deal with unique set of problems u Young field with tremendous expectations u Building of vastly complex, but intangible systems u Often software is not useful on its own (e.g., unlike a car) thus it must conform to changes in other engineering areas Some problems can be eliminated u “accidental difficulties” Other problems can be lessened, but not eliminated u “essential difficulties” 15

Accidental Difficulties Solutions exist - Possibly waiting to be discovered E.g. past productivity increases as the result of overcoming u Inadequate programming constructs & abstractions Remedied by high-level programming languages  Increased productivity by factor of five Complexity was never inherent in program at all u Inadequate tools: E.g., assesing results of programming decisions took long time  Remedied by time–sharing  Turnaround time approaching limit of human perception u Difficulty of using heterogeneous programs Addressed by integrated software development environments Support task that was conceptually always possible 16

Essential Difficulties Only partial solutions exist, if any Cannot be abstracted away u Complexity u Conformity u Changeability u Intangibility 17

Complexity No two software parts are alike u If they are, they are abstracted away into one Complexity grows super-linearly with size u E.g., it is impossible to enumerate all states of program Except perhaps “toy” programs 18

Conformity Software is required to conform to its u Operating environment u Hardware Often “last kid on block” Perceived as most conformable 19

Changeability Software is viewed as infinitely malleable Change originates with u New applications, users, machines, standards, laws u Hardware problems 20

Intangibility Software is not embedded in space u Often no constraining physical laws No obvious representation u E.g., familiar geometric shapes 21

Promising Attacks On Complexity Buy vs. Build Requirements refinement & rapid prototyping u Hardest part is deciding what to build (or buy?) u Must show product to customer to get complete spec. u Need for iterative feedback 22

Promising Attacks On Complexity (cont’d) Incremental/Evolutionary/Spiral Development u Grow systems, don’t build them u Good for morale u Easy backtracking u Early prototypes Great designers u Good design can be taught; great design cannot u Nurture great designers 23

Analogy: Architecture of Buildings We all live in them (We think) We know how they are built u Requirements u Design (blueprints) u Construction u Use This is similar (though not identical) to how we build software 24

Some Obvious Parallels Satisfaction of customers’ needs Specialization of labor Multiple perspectives of the final product Intermediate points where plans and progress are reviewed 25

Deeper Parallels Architecture is different from, but linked with the product/structure Properties of structures are induced by the architecture The architect has a distinctive role 26

Deeper Parallels (cont’d) The process is not as important as the architecture u Design and resulting qualities are at the forefront u Process is a means, not an end Architecture has matured over time into a discipline u Architectural styles as sets of constraints u Styles also as wide range of solutions, techniques and palettes of compatible materials, colors, and sizes 27

More about the Architect A distinctive role in a project Broad training Amasses and leverages extensive experience A keen sense of aesthetics Deep understanding of the domain u Properties of structures, materials, and environments u Needs of customers 28

More about the Architect (cont’d) Even first-rate programming skills are insufficient for the creation of complex software applications u But are they even necessary? 29

Limitations of the Analogy… We know a lot about buildings, much less about software The nature of software is different from that of building architecture u Software is much more malleable than physical materials The two “construction industries” are very different Software deployment has no counterpart in building architecture (or limited one at best) 30

…But Still Very Real Power of Architecture Giving preeminence to architecture offers the potential for u Intellectual control u Conceptual integrity u Effective basis for knowledge reuse u Realizing experience, designs, and code u Effective project communication u Management of a set of variant systems Limited-term focus on architecture will not yield significant benefits! 31

Parting thoughts: Why is software architecture important? Communication with stakeholders Manifests early design decisions Transferable abstraction of a system