Software Architecture Recovery: The 5 Questions You Always Asked Yourself About,

Post on 28-Jan-2015

129 views 1 download

Tags:

description

The first version of my Architecture Recovery lecture that I gave at the University of Lugano.

Transcript of Software Architecture Recovery: The 5 Questions You Always Asked Yourself About,

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