210 likes | 315 Views
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/software-architecture-recovery-in-five-questions-presentation
E N D
INF 123 SW Arch, dist sys & interopLecture 11 Prof. Crista Lopes
Objectives • Understanding of Software Architecture Recovery • what, why, how, who • Material in this lecture adapted fromhttp://www.slideshare.net/mircea.lungu/software-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. Deployment Arch. “Real” System Usability Arch. Software Arch. 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
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 • “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/JobSubmissionComparison • 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