Introduction to Software Architecture Reid Holmes Architecture - - PowerPoint PPT Presentation

introduction to software architecture
SMART_READER_LITE
LIVE PREVIEW

Introduction to Software Architecture Reid Holmes Architecture - - PowerPoint PPT Presentation

Introduction to Software Architecture Reid Holmes Architecture Architecture is: All about communication. What parts are there? How do the parts fit together? Architecture is not: About development. About


slide-1
SLIDE 1

Introduction to Software Architecture

Reid Holmes

slide-2
SLIDE 2

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

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.
slide-3
SLIDE 3

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

What is Software Architecture?

  • The conceptual fabric that defines a system
  • All architecture is design but not all design is

architecture.

  • Architecture focuses on those aspects of a system

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

  • Architectures capture three primary dimensions:
  • Structure
  • Communication
  • Nonfunctional requirements
slide-4
SLIDE 4

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Logical Web Architecture

index.html cs846.html cs446.html a1.html a2.html project.html

slide-5
SLIDE 5

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Physical Web Architecture

slide-6
SLIDE 6

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Dynamic Web Architecture

cs446.html

u w a t e r l

  • .

c a g

  • g

l e . c a f r i e n d s t e r . c

  • m

scholar.html GET 200 GET 200

slide-7
SLIDE 7

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

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
slide-8
SLIDE 8

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

ANSI/IEEE 1471-200

  • “Architecture is the fundamental
  • rganization of a system, embodied

in its components, their relationships to each other and the environment, and the principles governing its design and evolution”

slide-9
SLIDE 9

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Eoin Woods

“Software architecture is the set of design decisions which, if made incorrectly, may cause you project to be cancelled.”

slide-10
SLIDE 10

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Philippe Krutchen

  • “The life of a software architect is long

(and sometimes painful) succession

  • f sub-optimal decisions made partly

in the dark.

slide-11
SLIDE 11

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

So what?

  • What makes building systems so hard?
  • Young field.
  • High user expectations.
  • Software cannot execute independently.
  • Incidental difficulties [Brooks MMM].
  • Problems that can be overcome.
  • Essential difficulties [Brooks MMM].
  • Those problems that cannot be easily overcome.

[TAILOR ET AL.]

slide-12
SLIDE 12

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

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

slide-13
SLIDE 13

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

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

slide-14
SLIDE 14

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Architectural approaches

  • Creative
  • Engaging
  • Potentially unnecessary
  • Dangerous
  • Methodical
  • Efficient when domain is familiar
  • Predictable outcome
  • Not always successful

[TAILOR ET AL.]

slide-15
SLIDE 15

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Design process

1.Feasibility stage:

  • Identify set of feasible concepts

2.Preliminary design stage:

  • Select and develop best concept

3.Detailed design stage:

  • Develop engineering descriptions of concept

4.Planning stage:

  • Evaluate / alter concept to fit requirements, also

team allocation / budgeting

[TAILOR ET AL.]

slide-16
SLIDE 16

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Abstraction

  • Definition:
  • “A concept or idea not associated with a specific

instance”

  • Top down
  • Specify ‘down’ to details from concepts
  • Bottom up
  • Generalize ‘up’ to concepts from details
  • Reification:
  • “The conversion of a concept into a thing”

[TAILOR ET AL.]

slide-17
SLIDE 17

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Level of discourse

  • Consider application as a whole
  • e.g., stepwise refinement
  • Start with sub-problems
  • Combine solutions as they are ready
  • Start with level above desired application
  • e.g., consider simple input as general parsing

[TAILOR ET AL.]

slide-18
SLIDE 18

REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Separation of Concerns

  • Decomposition of problem into independent parts
  • In arch, separating components and connectors
  • Complicated by:
  • Scattering:
  • Concern spread across many parts
  • e.g., logging
  • Tangling:
  • Concern interacts with many parts
  • e.g., performance