31
Architectural Blueprint – The 4+1 View Model of Software ArchitecturePhilippe Kruchten

Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

Architectural Blueprint – “The 4+1 View Model

of Software Architecture”

Philippe Kruchten

Page 2: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

2

Model

What is a model?● simplified abstract representation● information exchange● standardization● principals (involved)● communication

– channel– flow

Page 3: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

3

I am a Model

Software/System

Developers

Designers

ManagersOwners

End-Users

Owners

Buildengineers

Testengineers

Sale reps

Deploymentengineers

Software/System stakeholders Model

Page 4: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

4

Software Architectural Model

Definition● “a model to represent the architecture of a software

system”– which architecture (reference | conceptual | concrete)?

Page 5: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

5

Desired Attributes

Addresses & captures● concerns of various stakeholders

– stakeholders● end-users, developers, system engineers, project management● testers, support teams

● requirements– functional– non-functional

● performance, availability, concurrency, distribution, fault tolerance● security, testing, usability, configuration management, evolution,

monitoring

Page 6: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

6

Desired Attributes

An abstraction● represents the high level view

Is robust● adaptable● scalable● iterative

Meaningful & maintainable● has to be a live document

– changes with the system

Page 7: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

7

Types

Box & Line model

Architectural definition languages

View based models● Zachman Framework (1987)● Three schema approach (1977)● 4+1 view model (1995)● RM-ODP● DoDAF

Page 8: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

8

4+1 View Model

Model● composed of 5 views

– a single view is not enough

View ● is catered for a set of corresponding stakeholders

– addresses the concerns of its stakeholders● view elements

– components, connectors, notation ● generic representation

Page 9: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

9

4+1 View Model

LogicalView

DevelopmentView

ProcessView

PhysicalView

ScenarioView

Page 10: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

10

Logical View

Intent● is the object model of the design● is generally the starting point● addresses functional requirements

– decomposition into “architectural entities”

Style● abstract entities

Stakeholders● end-users, architects, designers

Page 11: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

11

Logical View

View representation● OOA (object oriented analysis)

– entities are analysis classes– application of OOA principles

● abstraction, encapsulation. inheritance● association (aggregation, composition)

– class diagrams, state diagrams● data centric analysis

– entity relationship (ER) diagrams

Page 12: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

12

Logical View

Page 13: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

13

Logical View

Design guidelines● a single object model across the system● avoid premature specialization

– entities– mechanisms (per site or per processor)

Page 14: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

14

Process View

Intent● handles the non-functional requirements● provides an abstraction of architectural processes

– process● process: grouping into executable units● hierarchy: major & minor tasks● types: atomic & distributed

– process communication● messaging (synchronous, asynchronous, RPC, broadcast)● shared memory

Page 15: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

15

Process View

Style● several styles are applicable

– pipes & filters– layered

● client / server

Stakeholders● integrators, architects

Page 16: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

16

Process View

Page 17: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

17

Development View

Intent● software/system decomposition into software modules● software modules

– name space, packages, libraries, subsystems– modules are scoped for small (development) teams

Driven by internal requirements● management, requirement allocation, cost evaluation,

progress monitoring● reuse, commonality, programming language and

development environment

Page 18: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

18

Development View 

Style● layered style

– each layer with well defined interface– subsystem dependencies on other subsystems

● in the same layer or lower

– each layer provides a development abstraction (responsibility)

Stakeholders● managers, architects, designers, developers, testers

Page 19: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

19

Development View 

Page 20: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

20

Physical View

Intent● physical manifestation of process view

– processes are mapped to processing nodes

Concerns● installation, configuration, deployment & delivery,

networking, messaging protocols

Stakeholders● system engineers, installers, architects, operators

Page 21: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

21

Physical View

Processor

Other device

Communication line

Communication (non permanent)

Uni-directional communication

High bandwidth communication, Bus

Page 22: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

22

Physical View

Design guidelines● mapping to be flexible● minimal impact on source code

Page 23: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

23

Scenario View

Intent● one rule to rule them all● capture system functionality in scenarios

– interaction of objects & processes– driven by important scenarios

● provides architecture validation

Stakeholders● all stakeholders from the other views

Page 24: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

24

Scenario View

Components from the logical view

Connectors from the process view

Page 25: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

25

View Mappings

LogicalView

DevelopmentView

ProcessView

PhysicalView

ScenarioView

Page 26: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

26

Logical to Process View

Objects are mapped to processes● considerations

– autonomy– persistence– subordination– distribution

Strategy● inside-out: identify processes for objects● outside-in: identify processes (based on system requests)

and then allocate objects to these processes

Page 27: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

27

Logical to Development View

Architectural component decomposition● architectural entities are broken down into design

components– packages, modules– classes

● mapping is governed by development concerns● distance between logical and design view

– an indication of the size of the system

Page 28: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

28

Process to Physical View

Processes assignment to hardware● major and minor tasks are assigned to physical machines● various configurations

– development– testing– deployment

Page 29: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

29

Iterative Process

Start with a model

In each iteration the architecture is ● prototyped● tested: under load if possible● measured & analyzed● refined

– add more scenarios– detect abstractions and optimizations

● each iteration should takes us a step closer to a stable architecture

Page 30: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

30

Discussion

Lacks some fundamental views● security, user interface, testing● upgrade, disaster recovery

Are the views ever complete

Change in architectural style● data centric to OO architecture

Page 31: Philippe Kruchtena78khan/courses-offered/...17 Development View Intent software/system decomposition into software modules software modules – name space, packages, libraries, subsystems

31

Meet Kruchten

Phillipe Kruchten● professor of software engineering at the University of

British Columbia● professional software engineer with 30+ years of

experience

Major Work● RUP● Canadian automated air traffic control system – lead

designer