INF_123_Lecture_11

advertisement
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
Download