software architecture recovery: the 5 questions you always asked yourself about,
DESCRIPTION
The first version of my Architecture Recovery lecture that I gave at the University of Lugano.TRANSCRIPT
The 5 questions you always asked yourself about
Software Architecture
Recovery
Mircea LunguFaculty of Informatics, University of Lugano
October 2008
Software Architecture Recovery - Mircea Lungu, 2008
5 Questions about SAR
Software Architecture Recovery - Mircea Lungu, 2008
5 Questions about SAR
• What is it?
Software Architecture Recovery - Mircea Lungu, 2008
5 Questions about SAR
• What is it?
• Why is it important?
Software Architecture Recovery - Mircea Lungu, 2008
5 Questions about SAR
• What is it?
• Why is it important?
• How does it work?
Software Architecture Recovery - Mircea Lungu, 2008
5 Questions about SAR
• What is it?
• Why is it important?
• How does it work?
• Who does it?
Software Architecture Recovery - Mircea Lungu, 2008
5 Questions about SAR
• What is it?
• Why is it important?
• How does it work?
• Who does it?
• Where is it headed?
What?
• Architecture Recovery
• Architecture
• Viewpoints
Software Architecture Recovery - Mircea Lungu, 2008
Architecture recovery ...
Software Architecture Recovery - Mircea Lungu, 2008
Architecture recovery ...or Architecture Reconstruction,
Software Architecture Recovery - Mircea Lungu, 2008
Architecture recovery ...or Architecture Reconstruction,
or Reverse Architecting
Software Architecture Recovery - Mircea Lungu, 2008
Architecture recovery ...
[...] 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 ]
or Architecture Reconstruction,
or Reverse Architecting
Software Architecture Recovery - Mircea Lungu, 2008
Architecture recovery ...
Software Architecture Recovery - Mircea Lungu, 2008
Architecture recovery ...
... the flavor of reverse engineering that concerns all activities for making existing of software architectures explicit.
[Krikhaar’97]
Software Architecture Recovery - Mircea Lungu, 2008
... the techniques and processes used to uncover a system’s architecture from available information.
[Jazayeri’00]
Architecture recovery ...
... the flavor of reverse engineering that concerns all activities for making existing of software architectures explicit.
[Krikhaar’97]
Software Architecture Recovery - Mircea Lungu, 2008
Architecture...
Software Architecture Recovery - Mircea Lungu, 2008
Architecture...
[...] the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.
[Bass et al.’03]
Software Architecture Recovery - Mircea Lungu, 2008
Architecture...
[...] the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.
[Bass et al.’03]
[...] the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.
[ANSI/IEEE Std. 1471-2000]
Software Architecture Recovery - Mircea Lungu, 2008
Architecture...
[...] the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.
[Bass et al.’03]
[...] the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.
[ANSI/IEEE Std. 1471-2000]
For many others visit
www.sei.cmu.edu/architecture/definitions.html
Software Architecture Recovery - Mircea Lungu, 2008
What is the difference between architecture and
design?
Software Architecture Recovery - Mircea Lungu, 2008
Architectural Styles
Styles. Architectural styles such as pipes and filters, lay- ered system, data flow and blackboard are popular because like design patterns, they represent recurrent architectural situations [11, 59]. They are valuable, expressive, and ac-
cepted abstractions for SAR and more generally for software understanding.
Recognizing them is however a challenge because they span several architectural elements and can be implemented in
various ways [100, 101]. The question that turns up is whether SAR helps reverse engineers specify and extract architectural styles.
• Recurring architectural solutions
• Examples
• Pipes and filters
• Blackboard
• Peer-to-peer
• ... ... still, there are SAR approaches which take it into
consideration.
Software Architecture Recovery - Mircea Lungu, 2008
Architectural Styles
Styles. Architectural styles such as pipes and filters, lay- ered system, data flow and blackboard are popular because like design patterns, they represent recurrent architectural situations [11, 59]. They are valuable, expressive, and ac-
cepted abstractions for SAR and more generally for software understanding.
Recognizing them is however a challenge because they span several architectural elements and can be implemented in
various ways [100, 101]. The question that turns up is whether SAR helps reverse engineers specify and extract architectural styles.
• Recurring architectural solutions
• Examples
• Pipes and filters
• Blackboard
• Peer-to-peer
• ... ... still, there are SAR approaches which take it into
consideration.
Software Architecture Recovery - Mircea Lungu, 2008
Architectural Styles
Styles. Architectural styles such as pipes and filters, lay- ered system, data flow and blackboard are popular because like design patterns, they represent recurrent architectural situations [11, 59]. They are valuable, expressive, and ac-
cepted abstractions for SAR and more generally for software understanding.
Recognizing them is however a challenge because they span several architectural elements and can be implemented in
various ways [100, 101]. The question that turns up is whether SAR helps reverse engineers specify and extract architectural styles.
• Recurring architectural solutions
• Examples
• Pipes and filters
• Blackboard
• Peer-to-peer
• ... ... still, there are SAR approaches which take it into
consideration.
SAR is not preoccupied with recovering the architectural
style of the system.
Software Architecture Recovery - Mircea Lungu, 2008
Viewpoints
• Viewpoints catalogues
• Kruchten’95
• Hofmeister’99
• Ad-hoc viewpoints
• Smolander’01
• Conway’s law
Software Architecture Recovery - Mircea Lungu, 2008
Viewpoints
• Viewpoints catalogues
• Kruchten’95
• Hofmeister’99
• Ad-hoc viewpoints
• Smolander’01
• Conway’s lawMost of the SAR processes focus on
recovering component-and-connector viewpoints.
Software Architecture Recovery - Mircea Lungu, 2008
What is the relation between architecture recovery and reverse
engineering?
Why?
• Reasons
• Benefits
• Goals
• Challenges
Software Architecture Recovery - Mircea Lungu, 2008
Architecture erosion
[...] the documentation about the internal architecture becomes rapidly obsolete. To make changes, developers need a clear understanding of the underlying architecture of the products.
C. Riva, Software Architecture Group, Nokia Research
Software Architecture Recovery - Mircea Lungu, 2008
Architecture Evolution
One frequently accompanying property of evolution is an increasing brittleness of the system -- that is, an increasing resistance to change, or at least to changing gracefully.
[Perry & Wolf ’92]
Software Architecture Recovery - Mircea Lungu, 2008
Architecture Evolution
• Architectural drift
• Architectural erosion
• Architectural upgrade
One frequently accompanying property of evolution is an increasing brittleness of the system -- that is, an increasing resistance to change, or at least to changing gracefully.
[Perry & Wolf ’92]
Software Architecture Recovery - Mircea Lungu, 2008
Conceptual vs. As-is architecture
Software systems must evolve or become obsolete [...]
[Lehmann’80]
Software Architecture Recovery - Mircea Lungu, 2008
Conceptual vs. As-is architecture
Architecture
Change In Environment
As-Is
Architecture
CodeEnvironment
Change In Code
Change In Architecture
Change In Code
Software systems must evolve or become obsolete [...]
[Lehmann’80]
Software Architecture Recovery - Mircea Lungu, 2008
Conceptual vs. As-is architecture
Architecture
Change In Environment
As-Is
Architecture
CodeEnvironment
Change In Code
Change In Architecture
Change In Code
There is a need for enforcing the
architecture of a system
Software systems must evolve or become obsolete [...]
[Lehmann’80]
Software Architecture Recovery - Mircea Lungu, 2008
Conceptual vs. As-is architecture
Architecture
Change In Environment
CodeEnvironment
Change In Code
Change In Architecture
Change In Code
Architectural
Firewall
There is a need for enforcing the
architecture of a system
Software systems must evolve or become obsolete [...]
[Lehmann’80]
Software Architecture Recovery - Mircea Lungu, 2008
Consultant’s POV
• Missing architectural specifications
• Support the
• Re-documentation
• Reengineering
[...] Frequently we are asked to analyze a systemʼs software architecture and are given only its code and the (limited) time of a designer.
[Kazman et al.’99]
Software Architecture Recovery - Mircea Lungu, 2008
Benefits
• Stepping stone towards reengineering
• Supports detecting components for reuse
Software Architecture Recovery - Mircea Lungu, 2008
Challenges
• What process can support uncovering the software architecture within a system?
• How much can you automate in this process?
• What are the limits of architecture recovery? (e.g., Recovering all design decisions).
How?
• Generic approach
• Processes
• Bottom-up
• Top-down
• Integrated
Software Architecture Recovery - Mircea Lungu, 2008
Phases of Reconstruction
Data Extraction Knowledge Organization
Information Exploration
[Tilley et al.’96]
Software Architecture Recovery - Mircea Lungu, 2008
Phases of Reconstruction
Data Extraction Knowledge Organization
Information Exploration
The Meta-Architecture of
Architecture Recovery Tools
[Tilley et al.’96]
Software Architecture Recovery - Mircea Lungu, 2008
Data Extraction
Software Architecture Recovery - Mircea Lungu, 2008
Data Extraction
• Source Code (static analysis)
Software Architecture Recovery - Mircea Lungu, 2008
Data Extraction
• Source Code (static analysis)
• Historical Information
Software Architecture Recovery - Mircea Lungu, 2008
Data Extraction
• Source Code (static analysis)
• Historical Information
• Human Expertise
Software Architecture Recovery - Mircea Lungu, 2008
Data Extraction
• Source Code (static analysis)
• Historical Information
• Human Expertise
• Runtime Behavior (dynamic analysis)
Software Architecture Recovery - Mircea Lungu, 2008
Data Extraction
• Source Code (static analysis)
• Historical Information
• Human Expertise
• Runtime Behavior (dynamic analysis)
• Physical Organization
Software Architecture Recovery - Mircea Lungu, 2008
Data Extraction
• Source Code (static analysis)
• Historical Information
• Human Expertise
• Runtime Behavior (dynamic analysis)
• Physical Organization
• Social Organization
Software Architecture Recovery - Mircea Lungu, 2008
[Pollet et al.’07]
Software Architecture Recovery - Mircea Lungu, 2008
Facts extracted from code
[Guo et al.’99]
Software Architecture Recovery - Mircea Lungu, 2008
Knowledge Abstraction
• Get rid of useless information
• Aggregation
• Directory
• Packages
• Clustering
• Filtering
[Lungu et al.’05]
Software Architecture Recovery - Mircea Lungu, 2008
Processes
Botto
m-u
p
Top-d
own
Hyb
rid
Software Architecture Recovery - Mircea Lungu, 2008 [Pollet et al.’07]
Processes
Botto
m-u
p
Top-d
own
Hyb
rid
Software Architecture Recovery - Mircea Lungu, 2008
1. Bottom-up Approaches
• Start with low-level fact extraction
• Aggregate the information to higher abstraction levels either manually or automatically
Software Architecture Recovery - Mircea Lungu, 2008
Tools 4 bottom-up
• Arch• ArchView• ArcVis• ARMIN• BUNCH• DALI• Gupro• Intensive• Rigi• Softwarenaut
Software Architecture Recovery - Mircea Lungu, 2008
Arch
• Developed at Siemens Research
• Mavericks - individual procedures in the wrong modules
• Heuristic modularization advice
[Schwanke’91]
Software Architecture Recovery - Mircea Lungu, 2008
Archview
[Pinzger’05]
Software Architecture Recovery - Mircea Lungu, 2008
Archview
[Pinzger’05]
Software Architecture Recovery - Mircea Lungu, 2008
Dali
Lightweight Source Model Extraction (LSME), Imagix, make, and Perl for extraction of source model information for C and C++,
PostgreSQL (based on POSTGRES) for model storage,
Rigi, IAPR (Interactive Architecture Pattern Recognition) [12], RMTool [14], and Perl for analysis and manipulation.
Software Architecture Recovery - Mircea Lungu, 2008
Advertising break!
Software Architecture Recovery - Mircea Lungu, 2008
Advertising break!
• Aggregation: based on directory structure, clustering, package structure
Software Architecture Recovery - Mircea Lungu, 2008
Advertising break!
• Aggregation: based on directory structure, clustering, package structure
• Filtering: based on evolutionary information, metrics
Software Architecture Recovery - Mircea Lungu, 2008
Advertising break!
• Aggregation: based on directory structure, clustering, package structure
• Filtering: based on evolutionary information, metrics
• Visualization: polymetric
Software Architecture Recovery - Mircea Lungu, 2008
Softwarenaut
Software Architecture Recovery - Mircea Lungu, 2008
Softwarenaut
Software Architecture Recovery - Mircea Lungu, 2008
Softwarenaut
Software Architecture Recovery - Mircea Lungu, 2008
Softwarenaut
Software Architecture Recovery - Mircea Lungu, 2008
2. Top-down approaches
• Start with previous high-level knowledge about the application domain
• Formulate hypotheses and verify them against the source code
Software Architecture Recovery - Mircea Lungu, 2008
Tools 4 top-down
• RMTool
• Pulse
• W4
Software Architecture Recovery - Mircea Lungu, 2008
Reflexion Models
Marco...
Software Architecture Recovery - Mircea Lungu, 2008
Pulse
• Fraunhofer Institute for ESE
• Architecture- and Domain-Oriented Re-engineering
• Product Line Software Engineering
Software Architecture Recovery - Mircea Lungu, 2008
Pulse
Software Architecture Recovery - Mircea Lungu, 2008
Pulse
Software Architecture Recovery - Mircea Lungu, 2008
Pulse
Software Architecture Recovery - Mircea Lungu, 2008
Pulse
Software Architecture Recovery - Mircea Lungu, 2008
W4By distilling pearls of wisdom stored deep inside source control systems, we can assist developers to understand the state of their project and plan confidently for its future
[Hassan & Holt’04]
Software Architecture Recovery - Mircea Lungu, 2008
W4
• Which, Who, Why, When
By distilling pearls of wisdom stored deep inside source control systems, we can assist developers to understand the state of their project and plan confidently for its future
[Hassan & Holt’04]
Software Architecture Recovery - Mircea Lungu, 2008
3. Hybrid Approaches
• Combine top-down with bottom-up
• Abstract low-level information
• Refine high-level information
Software Architecture Recovery - Mircea Lungu, 2008
Tools 4 hybrid
• Albortz
• ARM
• Bauhaus
• Cacophony
• DiscoTect
• ManSART
• PBS/SBS
• Symphony / Nimeta
Software Architecture Recovery - Mircea Lungu, 2008
ManSART
• Mitre Corporation
• Used to provide architecture level consulting in multiple military systems
Software Architecture Recovery - Mircea Lungu, 2008
ManSART
[Harris et al.’ 95]
Software Architecture Recovery - Mircea Lungu, 2008
Discotect
• Examine runtime behavior
• Big problem: abstraction gap
• State machines to map between implementation-level events and architectural operations
[Yan et al.’04]
Who?
• SEI at Carnegie Mellon
• Hasso-Plattner Institute
• Nokia Research Center
Software Architecture Recovery - Mircea Lungu, 2008
Case Study #1
• Author: CMU Software Engineering Institute
• Subject: VANISH, 50KLOC
• Tools: Dali, ARMIN
• Goals
• generate several architectural views
• determine if strict layering is in place
• Assumptions: little documentation, no developers available
Software Architecture Recovery - Mircea Lungu, 2008
#1: Results
Software Architecture Recovery - Mircea Lungu, 2008
#1: Results
Software Architecture Recovery - Mircea Lungu, 2008
#1: Results
Software Architecture Recovery - Mircea Lungu, 2008
#1: Results
Software Architecture Recovery - Mircea Lungu, 2008
#1: Results
Software Architecture Recovery - Mircea Lungu, 2008
Case Study #2• Author: Hasso-Plattner Institute
• Subject: Apache, 100KLOC C code
• Participants: 60 4th semester students
• 32 topics assigned
• Sources
• documentation (well written, little info about the conceptual architecture)
• “Writing Apache modules with Perl”
• Results: overview analysis, detailed state diagrams, memory management
• Time:: half a semester for getting accustomed with the domain and half for analyzing the implementation
Software Architecture Recovery - Mircea Lungu, 2008
#2: Results
www.fmc-modeling.org/category/projects/apache/amp/Apache_Modeling_ Project.html -
Software Architecture Recovery - Mircea Lungu, 2008
#2: Results
www.fmc-modeling.org/category/projects/apache/amp/Apache_Modeling_ Project.html -
Software Architecture Recovery - Mircea Lungu, 2008
#2: Results
www.fmc-modeling.org/category/projects/apache/amp/Apache_Modeling_ Project.html -
Software Architecture Recovery - Mircea Lungu, 2008
#2: Results
www.fmc-modeling.org/category/projects/apache/amp/Apache_Modeling_ Project.html -
Software Architecture Recovery - Mircea Lungu, 2008
#2: Results
www.fmc-modeling.org/category/projects/apache/amp/Apache_Modeling_ Project.html -
Software Architecture Recovery - Mircea Lungu, 2008
Case Study #3
• Author: Nokia Research
• System: Embedded Software Written in C
• Existing Reference Architecture
• Scripts that extract information about messages
Software Architecture Recovery - Mircea Lungu, 2008
#3: Results
Software Architecture Recovery - Mircea Lungu, 2008
#3: Results
Software Architecture Recovery - Mircea Lungu, 2008
#3: Results
Software Architecture Recovery - Mircea Lungu, 2008
#3: Results
Software Architecture Recovery - Mircea Lungu, 2008
Others
• “Linux as a Case Study, it’s Extracted Architecture”, Bowman et al.
• “Static evaluation of Software Architectures”, Knodel et al.
Where?
• Future of SAR
• Further Reading
Software Architecture Recovery - Mircea Lungu, 2008
The Future of SARThe Place of Architecture in a Crowdsourced
WorldRick Kazman
http://www.sei.cmu.edu/news-at-sei/columns/the_architect/architect.htm
Software Architecture Recovery - Mircea Lungu, 2008
The Future of SAR
• Integrating with forward engineering (continuous supervision, architectural firewalls, etc.)
The Place of Architecture in a Crowdsourced World
Rick Kazman
http://www.sei.cmu.edu/news-at-sei/columns/the_architect/architect.htm
Software Architecture Recovery - Mircea Lungu, 2008
The Future of SAR
• Integrating with forward engineering (continuous supervision, architectural firewalls, etc.)
• Collaborative architecture recovery
The Place of Architecture in a Crowdsourced World
Rick Kazman
http://www.sei.cmu.edu/news-at-sei/columns/the_architect/architect.htm
Software Architecture Recovery - Mircea Lungu, 2008
The Future of SAR
• Integrating with forward engineering (continuous supervision, architectural firewalls, etc.)
• Collaborative architecture recovery
• Product family architecture
The Place of Architecture in a Crowdsourced World
Rick Kazman
http://www.sei.cmu.edu/news-at-sei/columns/the_architect/architect.htm
Software Architecture Recovery - Mircea Lungu, 2008
The Future of SAR
• Integrating with forward engineering (continuous supervision, architectural firewalls, etc.)
• Collaborative architecture recovery
• Product family architecture
• Ecosystem architecture
The Place of Architecture in a Crowdsourced World
Rick Kazman
http://www.sei.cmu.edu/news-at-sei/columns/the_architect/architect.htm
Software Architecture Recovery - Mircea Lungu, 2008
Further Reading
• Annotated Bibliography
www.inf.unisi.ch/phd/lungu/recovery
• Essays on Architecture
http://www.sei.cmu.edu/architecture/essays.html
• PhD Theses: Pinzger’05, Krikhaar’99
• Survey Articles: Pollet’07
Software Architecture Recovery - Mircea Lungu, 2008
THE END