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 http://www.slideshare.net/mircea.lungu/softwarearchitecture-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. Deployment Arch. “Real” System Usability Arch. Software Arch. your homework Why it’s important Documentation tends to become obsolete over time Particularly But to make changes and extend the system developers need a clear understanding of the system architecture Or in early stages of development 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 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 Software organization With or without tools Historical information Packages, namespaces, directories: Knowledge abstraction Runtime behavior With or without tools 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 Grid Computing 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) https://twiki.grid.iu.edu/bin/view/Documentation/JobS ubmissionComparison TeraGrid (USA) National Grid Service (UK) … 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