conceptual and concrete architecture

21
Conceptual and Concrete Architecture “Linux Case Study”

Upload: others

Post on 09-Apr-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Conceptual and ConcreteArchitecture

“Linux Case Study”

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.

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

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

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

6

Concrete Architecture

Intent● implementation specific architecture

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

● actual– e.g. identify third party, COTS components

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

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

9

Concrete Architecture

Input Artifacts● ask the class● can we extract concrete architecture from code

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

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

11

Linux Conceptual Architecture

Input artifacts● Unix & Minix descriptions● Linux documentation

seven kernel sub-systems● memory management

depends on file systemfor swapping

● initialization depends on all● library sub system forms

the core

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

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

14

Linux Concrete Architecture

Observations● same subsystem

decomposition asconceptual arch

● what happened to dependency relationships?– 19 vs 37 out of 42

15

Dependency at a Glance

Conceptual Architecture Concrete Architecture

16

Linux Concrete Architecture

Dependencies explained● “avoided existing interfaces for better efficiency”

17

Linux Concrete Architecture

File Subsystem

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

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

20

Linux Conceptual Architecture

Dependencies under a microscope● all file subsystem depends on IPC

– IPC subsystem implements reusable synchronization primitives, used globally

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)