software architecture eece417

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

Upload: brody

Post on 13-Feb-2016

41 views

Category:

Documents


0 download

DESCRIPTION

Software Architecture EECE417. Lecture 1. Henrik Hybertsson Ship designer . Multi-deck battleship. Vasa is sinking after 30’. Story of ‘Vasa’ battleship (~1620). Gustavus Adolphus , King of Sweden 1611-32. Inquires concluded that the ship was “badly proportioned” . - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Software Architecture EECE417

Acknowledgement: Most slides from Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy.

Software ArchitectureEECE417

Lecture 1

Page 2: Software Architecture EECE417

2

Gustavus Adolphus,

King of Sweden 1611-32

Henrik HybertssonShip designer

Multi-deck battleship

Vasa is sinking after 30’

Inquires concluded that the ship was “badly proportioned”

Story of ‘Vasa’ battleship (~1620)

Page 3: Software Architecture EECE417

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

Page 4: Software Architecture EECE417

Administrativia

Course webpage: http://www.ece.ubc.ca/~matei/EECE417/

Timeslot: Mon/Wed/Fri 11:00-12:00. Note: I may travel the week of February 10th we’ll schedule makeup class.

Office hours: after each class or by appointment (email me)

Email: matei @ ece.ubc.caOffice: KAIS 4033

Page 5: Software Architecture EECE417

EECE 417: Course Goals Gain a good understanding of fundamental

software architecture issues Functional versus non-functional requirements and their

impact on architecture. Designing an architecture Documenting a software architecture Analyzing an architecture

Page 6: Software Architecture EECE417

6

What I’ll Assume You Know ...

Basic software engineering concepts Procedural abstraction, encapsulation, polymorphism,

… UML notation (?) Software patterns (?)

Basics of Internet architecture and network programming Socket programming, TCP, DNS, HTTP

Page 7: Software Architecture EECE417

Administravia: Grading Assignments (Individual) + Mini-Project (Group): 50%

Midterm/Final exam: 50%

Class and mailing list participation: 3% (bonus)

Page 8: Software Architecture EECE417

Questions?

Page 9: Software Architecture EECE417

What is Software Architecture? It’s all about software design

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’ E.g., quality attributes like security, performance E.g., non-functional requirements like cost, deployment

hardware

Page 10: Software Architecture EECE417

Definitions – Taylor et al. [Software architecture is] the set of principal

design decisions governing a system

Page 11: Software Architecture EECE417

Software Architecture Definition (source: Software Engineering Institute @ 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.

Page 12: Software Architecture EECE417

Definitions - ANSI/IEEE Std 1471-2000 “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.”

Page 13: Software Architecture EECE417

Main point: Architecture Defines Structure

Decomposition of system in components/modules/subsystems

Architecture defines: Component responsibilities

Precisely what each component does Component interfaces

How to interact with a component Component communications and dependencies

How multiple components interact to form a system

Page 14: Software Architecture EECE417

Software Engineering Difficulties

Page 15: Software Architecture EECE417

Software Engineering Difficulties Software engineers deal with unique set of

problems Young field with tremendous expectations Building of vastly complex, but intangible systems 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 “accidental difficulties”

Other problems can be lessened, but not eliminated “essential difficulties”

15

Page 16: Software Architecture EECE417

Accidental Difficulties Solutions exist - Possibly waiting to be discovered

E.g. past productivity increases as the result of overcoming Inadequate programming constructs & abstractions

Remedied by high-level programming languages Increased productivity by factor of five

Complexity was never inherent in program at all

Inadequate tools: E.g., assesing results of programming decisions took long time

Remedied by time–sharing Turnaround time approaching limit of human perception

Difficulty of using heterogeneous programs Addressed by integrated software development environments Support task that was conceptually always possible

16

Page 17: Software Architecture EECE417

Essential Difficulties Only partial solutions exist, if any Cannot be abstracted away

Complexity Conformity Changeability Intangibility

17

Page 18: Software Architecture EECE417

Complexity No two software parts are alike

If they are, they are abstracted away into one

Complexity grows super-linearly with size E.g., it is impossible to enumerate all states of

program Except perhaps “toy” programs

18

Page 19: Software Architecture EECE417

Conformity Software is required to conform to its

Operating environment Hardware

Often “last kid on block” Perceived as most conformable

19

Page 20: Software Architecture EECE417

Changeability Software is viewed as infinitely malleable Change originates with

New applications, users, machines, standards, laws Hardware problems

20

Page 21: Software Architecture EECE417

Intangibility Software is not embedded in space

Often no constraining physical laws No obvious representation

E.g., familiar geometric shapes

21

Page 22: Software Architecture EECE417

Promising Attacks On Complexity Buy vs. Build

Requirements refinement & rapid prototyping Hardest part is deciding what to build (or buy?) Must show product to customer to get complete spec. Need for iterative feedback

22

Page 23: Software Architecture EECE417

Promising Attacks On Complexity (cont’d)

Incremental/Evolutionary/Spiral Development Grow systems, don’t build them Good for morale Easy backtracking Early prototypes

Great designers Good design can be taught; great design cannot Nurture great designers

23

Page 24: Software Architecture EECE417

Analogy: Architecture of Buildings We all live in them (We think) We know how they are built

Requirements Design (blueprints) Construction Use

This is similar (though not identical) to how we build software

24

Page 25: Software Architecture EECE417

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

Page 26: Software Architecture EECE417

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

Page 27: Software Architecture EECE417

Deeper Parallels (cont’d) The process is not as important as the

architecture Design and resulting qualities are at the forefront Process is a means, not an end

Architecture has matured over time into a discipline Architectural styles as sets of constraints Styles also as wide range of solutions, techniques and

palettes of compatible materials, colors, and sizes

27

Page 28: Software Architecture EECE417

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

Properties of structures, materials, and environments Needs of customers

28

Page 29: Software Architecture EECE417

More about the Architect (cont’d) Even first-rate programming skills are insufficient

for the creation of complex software applications But are they even necessary?

29

Page 30: Software Architecture EECE417

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 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

Page 31: Software Architecture EECE417

…But Still Very Real Power of Architecture Giving preeminence to architecture offers the

potential for Intellectual control Conceptual integrity Effective basis for knowledge reuse Realizing experience, designs, and code Effective project communication Management of a set of variant systems

Limited-term focus on architecture will not yield significant benefits!

31

Page 32: Software Architecture EECE417

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