conceptual and concrete architecture
play

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]


  1. Conceptual and Concrete Architecture “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. 2

  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 3

  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 4

  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 5

  6. Concrete Architecture Intent ● implementation specific architecture – decomposition into (implementation specific components) – identification of actual relationships ● actual – e.g. identify third party, COTS components 6

  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 7

  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 8

  9. Concrete Architecture Input Artifacts ● ask the class ● can we extract concrete architecture from code – isn't that reveres engineering? – choice of tools 9

  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 10

  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 11

  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 12

  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 13

  14. Linux Concrete Architecture Observations ● same subsystem decomposition as conceptual arch ● what happened to dependency relationships? – 19 vs 37 out of 42 14

  15. Dependency at a Glance Conceptual Architecture Concrete Architecture 15

  16. Linux Concrete Architecture Dependencies explained ● “avoided existing interfaces for better efficiency” 16

  17. Linux Concrete Architecture File Subsystem 17

  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 18

  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 19

  20. Linux Conceptual Architecture Dependencies under a microscope ● all file subsystem depends on IPC – IPC subsystem implements reusable synchronization primitives, used globally 20

  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) 21

Recommend


More recommend