conceptual and concrete architecture
TRANSCRIPT
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
16
Linux Concrete Architecture
Dependencies explained● “avoided existing interfaces for better efficiency”
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