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
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.
SoftwareArch.
UsabilityArch.
“Real”Syste
myour 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
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
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/Document
ation/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