INF 123 SW ARCH, DIST SYS & INTEROP LECTURE 11 Prof. Crista Lopes
Objectives Understanding of Software Architecture Recovery what, why, how, who Material in this lecture adapted from architecture-recovery-in-five-questions-presentation architecture-recovery-in-five-questions-presentation Also good material in the textbook Understanding of Grid Computing
Software Architecture Recovery aka Architecture Reconstruction What is it? Quick answer: Your Homework 4 Why is it important? How does it work? Who does it?
What is it [...] an archaeological activity where the analysts must unveil all the historical design decisions by looking at the existing implementation and documentation of the system. [Riva’00] .. the flavor of reverse engineering that concerns all activities for making existing software architectures explicit. [Krikhaar’97] …techniques and processes used to uncover a system’s architecture from available information. [Jazayari’00]
What is it Usually not focused on architectural styles because they are recurring solutions that are easy to spot Usually focused on recovering component and connector viewpoints [Logical] System Arch. [Logical] System Arch. Deployment Arch. Software Arch. Software Arch. Usability Arch. Usability Arch. “Real” System “Real” System your homework
Why it’s important Documentation tends to become obsolete over time Particularly in early stages of development But to make changes and extend the system developers need a clear understanding of the system architecture Or else architectural drift & erosion Hence, architectural recovery must be practiced often, even constantly Read a contributor’s code and recover the architecture there. Does it match the system’s architecture?
Conceptual vs. As-is Architecture
One needs to enforce the system architecture constantly
How to do it Bottom-up Top-down Hybrid
How to do it – bottom-up Source code analysis With or without tools Software organization Packages, namespaces, directories: Knowledge abstraction Runtime behavior With or without tools Historical information Commit history Search, search, search!
How to do it – top-down Start with existing high-level knowledge about system Formulate hypothesis and verify them against source code
How to do it – hybrid (all recovery efforts end up being hybrid) Combine bottom-up & top-down
How to do it – overall
Who does it Everyone should, at all levels, all the time Helps avoid architectural drifts High-paid consultants do it for large corporations that don’t practice the above Researchers do it to help explain well-known systems whose architecture is in devs’ heads only
Case Study Apache httpd, 100KLOC of C 60 students like you, 1 semester Data: Source code Documentation (well written but lacking about internal architecture) Results: overview, state diagrams, memory management… documentation apachestudy.pdf apachestudy.pdf
Grid Computing
“Combination of computer resources from multiple administrative domains for a common goal” A grid Coordinates resources nor subject to centralized control Using standard, open protocols To deliver non-trivial services with good QoS Addition of computing resources subject to contracts Often used for scientific tasks
Grid Computing Middleware A layer of services on top of open protocols that provide coordination Job allocation Distribution / Parallelism Collection of results Data replication …
Grid Computing Architecture “Collective”: Coordinates resource usage “Resource”: the shared unit “Connectivity”: communication and authentication “Fabric”: manages low-level resources
Grid Computing Examples Open Science Grid (USA) Open Science Grid ubmissionComparison ubmissionComparison TeraGrid (USA) TeraGrid National Grid Service (UK) National Grid Service …
Summary Software Architecture Recovery Foundations for your Homework 4 and for the rest of your life Grid Computing Sharing computing and data resources for a common goal Middleware