Conceptual and Concrete Architecture Linux Case Study Conceptual - - PowerPoint PPT Presentation
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]
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 system for 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 as conceptual 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)