Conceptual and Concrete Architecture Linux Case Study Conceptual - - PowerPoint PPT Presentation

conceptual and concrete architecture
SMART_READER_LITE
LIVE PREVIEW

Conceptual and Concrete Architecture Linux Case Study Conceptual - - PowerPoint PPT Presentation

Conceptual and Concrete Architecture Linux Case Study Conceptual Architecture Intent direct attention at an appropriate decomposition of the system without delving into the details of interface specification [1]


slide-1
SLIDE 1

Conceptual and Concrete Architecture

“Linux Case Study”

slide-2
SLIDE 2

2

Conceptual Architecture

Intent

  • “ direct attention at an appropriate decomposition of the

system without delving into the details of interface specification”[1]

  • appropriate decomposition

– focus on key constructs & abstractions rather than on technical

details

[1] R. Malan, D. Bredemeyer, Software Architecture Action Guide.

slide-3
SLIDE 3

3

Conceptual Architecture

Includes

  • what a system does (functionality)
  • identification of significant components & connectors

– component responsibilities – component interactions – control & data flow

  • architectural (non-functional) mechanism

– e.g. security – other crosscutting concerns

slide-4
SLIDE 4

4

Conceptual Architecture

Provides

  • communicating architectural details with

– stakeholders (technical & non-technical)

Input artifacts

  • reference architecture (more on this later)
  • requirements (functional & non-functional)
  • documentation & code
slide-5
SLIDE 5

5

Conceptual

Activities

  • capturing system functionality

– requirements to use case descriptions

  • capture system properties

– evolution, system load, portability

  • capture system constraints

– legacy components, third party components – resources, time, – technical capabilities

slide-6
SLIDE 6

6

Concrete Architecture

Intent

  • implementation specific architecture

– decomposition into (implementation specific components) – identification of actual relationships

  • actual

– e.g. identify third party, COTS components

slide-7
SLIDE 7

7

Architectural Drift & Erosion

Architectural erosion

– conceptual architectural violations

Architectural drift

– concrete architecture shifts away from conceptual architecture – technical details need to be flushed out here

slide-8
SLIDE 8

8

Concrete Architecture

Includes

  • what a system does (functionality)
  • how will it do it (implementation)
  • identification of significant components & connectors

– component responsibilities – component interactions – control & data flow

  • realization of architectural (non-functional) mechanisms
slide-9
SLIDE 9

9

Concrete Architecture

Input Artifacts

  • ask the class
  • can we extract concrete architecture from code

– isn't that reveres engineering? – choice of tools

slide-10
SLIDE 10

10

Example

Linux

  • lack of formal architecture

– conceptual or concrete

  • considerable code size
  • fragmented documentation

– individual systems well defined but not the overall

  • based on

– Linux as a Case Study: Its Extracted Software Architecture,

Ivan T. Bowman, Richard C. Holt, Neil V. Brewster, 2005

slide-11
SLIDE 11

11

Linux Conceptual Architecture

Input artifacts

  • Unix & Minix descriptions
  • Linux documentation

seven kernel sub-systems

  • memory management

depends on file system for swapping

  • initialization depends on all
  • library sub system forms

the core

slide-12
SLIDE 12

12

Linux Conceptual Architecture

File Subsystem

  • data abstraction

architectural style

  • facade pattern

– virtual file system – system call interface

  • coupling & dependency

– support various hardware

devices

– logical file system formats

slide-13
SLIDE 13

13

Extraction of Concrete Architecture

LSEdit

  • Ian Davis guest presentation on May 17, 2010

General technique

  • inspection

– source (directory structures, packages, file naming etc) – compiled artifacts

  • clustering

– grouping of components

  • discovery

– inter-component dependency

slide-14
SLIDE 14

14

Linux Concrete Architecture

Observations

  • same subsystem

decomposition as conceptual arch

  • what happened to

dependency relationships?

– 19 vs 37 out of 42

slide-15
SLIDE 15

15

Dependency at a Glance

Conceptual Architecture Concrete Architecture

slide-16
SLIDE 16

16

Linux Concrete Architecture

Dependencies explained

  • “avoided existing interfaces for better efficiency”
slide-17
SLIDE 17

17

Linux Concrete Architecture

File Subsystem

slide-18
SLIDE 18

18

Linux Conceptual Architecture

Dependencies under a microscope

  • network interface subsystem on logical file subsystem

– SMBFS & NCPFS

  • network interface calls functions from the file subsystem
slide-19
SLIDE 19

19

Linux Conceptual Architecture

Dependencies under a microscope

  • process scheduler on device driver subsystem

– printk to print messages to the console – printk makes a call to device driver routine

slide-20
SLIDE 20

20

Linux Conceptual Architecture

Dependencies under a microscope

  • all file subsystem depends on IPC

– IPC subsystem implements reusable

synchronization primitives, used globally

slide-21
SLIDE 21

21

Conceptual Vs. Concrete

Comparisons

  • subsystem discovery pretty accurate

– despite different input artifacts

  • concrete architecture has more inter-component

dependencies

– architectural erosion and drift

  • violations

– in the name of to improvements (performance)