Eduardo Santana de Almeida Aspects of scale and granularity
“It is difficult to reduce these obervations to a rule of thumb as to what granulatiry is right. Instead, it is probably best to use the discussed aspects to perform a detailed analysis for specific cases”. Clemens Szyperski, pp. 150, section 8.6
Units of abstraction Benefit expertise for reuse Framework Black-box (unit of abstraction) …classes, components component {unit of deployment} conventional framework nested frameworks cyclic dependency pre-condition
Units of accounting Costs individual blocks the granularity problem COTS, reenginering, development…
Units of analysis Divide et impera Modular x Global analysis modular global {component version check} classes, methods…. “The unit of analysis can never be bigger than the unit of deployment; thus a component is the largest possible unit of (complete) analysis”. Clemens Szyperski, pp.142, section 8.3
Units of compilation Full interpretation, mixed compilation and interpretation, just-in- time compilation, ….. Units components {the limit} modules {component version check} classes
Units of delivery Components and applications contracts, documentation….($)
Units of deployment Deployment is the process of readying a unit for operation in a particular environment deployment x installation context/container-based platforms {beans} deployment descriptor
Units of dispute Component-based systems: Fails have occurred…Who are the responsible? fail propagation exceptions contracts
Units of fault containment Distributed systems networks, machines Fault tolerance redundancy physical temporal {transaction monitor}
Units of installation Installation is a platform-specific activity that makes an installed unit available for use on a particular hardware configuration supported by that platform pp. 147, section 8.11 Installation (hardware) x Deployment (platform)
Units of loading Local x network component load Problems versions {class, interface, method} recovery name collisions name schemes, globally unique identifiers (GUIDs) Observable state COM, CLR {side-by-side installation and loading} problem
The problem – transitive dependencies B depends on version 1 of component A C depends on version 2 of component A B and C expose definitions from A in their signature D needs to use B and C – 1 and 2 versions
Units of locality Distributed computing tradeoff minimize communication cost x distribution to maximize resource utilization cross process – in process – lans distributed components caching Units of maintenance and management problems tradeoffs
Eduardo Santana de Almeida Patterns, frameworks, architecture
Forms of design- level reuse Sharing: consistency: programming and scripting languages concrete solution fragments: libraries contracts: interfaces individual interaction fragments: messages and protocols interaction architectures: patterns subsystem architecture: frameworks overall structure: system architectures
Programming languages Difficulty x Flexibility Features static type systems, polymorphism functions exceptions classes, inheritance memory management concurrency …..
Libraries Reuse APIs
Interfaces Messages and protocols Patterns – Design patterns x frameworks Frameworks – black-box, white-box – top down, bottom up, pattern driven, target driven
System architecture Strict layer approach Operating system Hardware Device driv. OS Kernel Libraries Applications Downsides: Extensibility Performance
System architecture Non-Strict layer approach
Interoperability, legacy and reengineering Legacy systems the problems cbd architecture benefits {refactoring} Interoperability OO Legacy sistems FAMOOS
Eduardo Santana de Almeida Aspects of scale and granularity