30
Material and some slide content from: - Emerson Murphy-Hill - Reid Holmes - Mehdi Mirakhorli - Software Architecture: Foundations, Theory, and Practice - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan

SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

  • Upload
    others

  • View
    43

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

Material and some slide content from: - Emerson Murphy-Hill - Reid Holmes - Mehdi Mirakhorli

- Software Architecture: Foundations, Theory, and Practice - Essential Software Architecture

SE2: Introduction to Software ArchitectureMei Nagappan

Page 2: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

What is Architecture?‣ Encyclopedia Britannica defines it as

‣ both the process and the product of planning, designing, and constructing buildings or any other structures

Page 3: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

The three original principles‣ Roman architect Vitruvius (early 1st century AD) in

his book De Architectura

‣ Durability – a building should stand up robustly and remain in good condition.

‣ Utility – it should be suitable for the purposes for which it is used.

‣ Beauty – it should be aesthetically pleasing.

Page 4: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

The architect‣ Distinctive role.

‣ Broadly trained.

‣ Requirements, design, implementation, & use.

‣ Has a keen sense of aesthetics.

‣ Strong understanding of the domain.

‣ What are these for buildings?

‣ What are these for software?

[TAILOR ET AL.]

Page 5: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

What common benefits can software gain from an architect that a building gets from its architect?

[TAILOR ET AL.]

Page 6: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

Analogy to Buildings‣ Arch focuses on client’s needs

‣ Iteration on a set of blueprints, refining as req

‣ Intermediate plans, mockups, prototypes

‣ Created by specialists, not end users

‣ Structure induces properties (e.g., in a castle)

‣ Architects require broad training

‣ Leverage lessons from past generations

Page 7: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

‣ How is building architecture different from software architecture?

[TAILOR ET AL.]

Page 8: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

Shortcomings of Analogy‣ We have much more experience with buildings

‣ Buildings are physical artifacts; SW is intangible

‣ Software industry is less differentiated (e.g, no ‘exception specialists’)

‣ Anyone can write software

‣ Deployment and Ops are different

‣ Nature of dynamic load is different

‣ Changes are expected

Page 9: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

Why do we need Architecture?

Page 10: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

The Software Equivalent

Page 11: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

Architecture‣ Architecture is:

‣ All about communication.

Page 12: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

Architecture‣ Architecture is:

‣ All about communication.

‣ What ‘parts’ are there?

Page 13: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

Architecture‣ Architecture is:

‣ All about communication.

‣ What ‘parts’ are there?

‣ How do the ‘parts’ fit together?

Page 14: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

Architecture‣ Architecture is:

‣ All about communication.

‣ What ‘parts’ are there?

‣ How do the ‘parts’ fit together?

‣ Architecture is not:

‣ About development.

‣ About algorithms.

‣ About data structures.

Page 15: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

What is Software Architecture?

Page 16: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

What is Software Architecture?‣ The conceptual fabric that defines a system

‣ All architecture is design but not all design is architecture.

Page 17: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

What is Software Architecture?‣ The conceptual fabric that defines a system

‣ All architecture is design but not all design is architecture.

‣ Architectures capture three primary dimensions:

‣ Structure

‣ Communication

‣ Nonfunctional requirements

Page 18: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

ANSI/IEEE 1471-200‣ “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 19: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

Logical Web Architecture

index.html

cs846.html

cs446.html

a1.html

a2.html

project.html

Page 20: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

Physical Web Architecture

Page 21: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

Dynamic Web Architecture

cs446.html

uwaterloo

.ca

google.ca

friendster

.com

scholar.html

GET

200

GET

200

Page 22: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

Non-functional requirements‣ Technical constraints: restrictions made for

technical reasons

‣ Business constraints: restrictions made for business reasons

‣ Quality attributes: e.g., the ‘ilities’‣ Scalability‣ Security‣ Performance‣ Maintainability‣ Evolvability‣ Reliability/Dependability‣ Deployability

Page 23: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

Why is Software Architecture important?‣ Architecture focuses on those aspects of a system

that would be difficult to change once the system is built.

Page 24: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

Eoin Woods‣ “Software architecture is the set

of design decisions which, if made incorrectly, may cause you project to be cancelled.”

Page 25: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

Why is Software Architecture Difficult?

Page 26: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

Philippe Krutchen‣ “The life of a software architect is

long (and sometimes painful) succession of sub-optimal decisions made partly in the dark.

Page 27: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

What makes building systems so hard?‣ Young field.

‣ High user expectations.

‣ Software cannot execute independently.

[TAILOR ET AL.]

Page 28: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTURE

Difficulties Classified‣ Incidental difficulties [Brooks MMM].

‣ Problems that can be overcome.

‣ Essential difficulties [Brooks MMM].

‣ Those problems that cannot be easily overcome.

Page 29: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

Essential Difficulties‣ Abstraction alone cannot help.

‣ Complexity

‣ Grows non-linearly with program size.

‣ Conformity

‣ System is dependent on its environment.

‣ Changeability

‣ Perception that software is easily modified.

‣ Intangibility

‣ Not constrained by physical laws.

[TAILOR ET AL.]

Page 30: SE2: Introduction to Software Architecture · - Essential Software Architecture SE2: Introduction to Software Architecture Mei Nagappan. MEI NAGAPPAN - SE2: SOFTWARE DESIGN ... other

MEI NAGAPPAN- SE2: SOFTWARE DESIGN & ARCHITECTUREMEI NAGAPPAN - SE2: SOFTWARE DESIGN & ARCHITECTURE

Attacks on Complexity‣ High-level languages.

‣ Development tools & environments.

‣ Component-based reuse.

‣ Development strategies.

‣ Incremental, evolutionary, spiral models.

‣ Emphasis on design.

‣ Design-centric approach taken from outset.

[TAILOR ET AL.]