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] ● appropriate decomposition – focus on key constructs & abstractions rather than on technical details [1] R. Malan, D. Bredemeyer, Software Architecture Action Guide. 2
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 3
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 4
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 5
Concrete Architecture Intent ● implementation specific architecture – decomposition into (implementation specific components) – identification of actual relationships ● actual – e.g. identify third party, COTS components 6
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 7
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 8
Concrete Architecture Input Artifacts ● ask the class ● can we extract concrete architecture from code – isn't that reveres engineering? – choice of tools 9
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 10
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 11
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 12
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 13
Linux Concrete Architecture Observations ● same subsystem decomposition as conceptual arch ● what happened to dependency relationships? – 19 vs 37 out of 42 14
Dependency at a Glance Conceptual Architecture Concrete Architecture 15
Linux Concrete Architecture Dependencies explained ● “avoided existing interfaces for better efficiency” 16
Linux Concrete Architecture File Subsystem 17
Linux Conceptual Architecture Dependencies under a microscope ● network interface subsystem on logical file subsystem – SMBFS & NCPFS ● network interface calls functions from the file subsystem 18
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 19
Linux Conceptual Architecture Dependencies under a microscope ● all file subsystem depends on IPC – IPC subsystem implements reusable synchronization primitives, used globally 20
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) 21
Recommend
More recommend