Title: Softwarenaut an environment for software exploration
1Softwarenaut - an environment for software
exploration
- Mircea Lungu
- Faculty of Informatics, University of Lugano
USI PhD Talks October 28th, 2005
2Visualization can save your life
John Snow
The lines on the buildings are proportional to
the number of deaths due to cholera from those
buildings. Do you know how did Snow realize
which was the cause of cholera by looking at this
map?
London - 1854
3Visualization can save your time
- Hippo
- Industrial System
- 1M LOC
- gt10K Files
- gt100 Authors
Number of dependencies
LOC
Can you see something strange about the
interaction between the subsystems of this
project?
Legend
4Outline
- Softwarenaut
- Demo Exploring Package Hierarchies
- Directions
- Package Patterns for Automating the Exploration
- Exploring cluster hierarchies
- Conclusions and Future Work
5The Purpose of Softwarenaut is
- to provide meaningful views of the system
- to provide starting points for subsequent
analysis - to assist the reverse engineer in recovering a
systems architecture
Architecture is the structure of the system,
which comprise of software elements, the
externally visible properties of those elements
and the relationships between them. Bass,
Clemens, Kazman
6Is This The Systems Architecture?
- Case Study Azureus
- BitTorrent client
- Written in Java
- 2000 Classes
- 200 Packages
- 16000 Methods
Architecture?
Big ball of mud?
- Reverse engineering the system
- Entities Packages
- Relationships calls aggregated from class level
Package dependency graph in Azureus (v2.2.0.2)
7Top-Down Package Exploration
- The package structure is implicitly hierarchical
- Never made explicit in the Java language
specification - We can use this to provide top-down exploration
- Start with the top-level packages
- Let the user expand and collapse packages
- Supported by other tools
- Rigi, SHriMP, Vizz3D
Azureus Package Hierarchy
Package dependency graph in Azureus
(Hierarchical package structure)
Package dependency graph in Azureus (Flat
package structure)
8Demo Time
- Exploring the Package Hierarchy of Azureus with
Softwarenaut
9When Do We Expand a Package?
- After enough expand operations we might still
end-up with a big ball of mud - Some views are more relevant than others
- After each expand user has to decide the
relevance of the view - User inspects each package to decide if expand is
needed - Inspection can be automated
- Expertise can be captured in Package Patterns
Enough Expand Operations
Functionality is provided at package level
Packages
Subsystem (Package Hierarchy)
10Package Patterns
Legend
Packages
Package depends on other subsystems in the view
Functionality defined in package is used by
other subsystems in the view
- Advise weather the user should expand or not a
package - Defined based on
- the interaction between the package and the other
packages in the view - The internal structure of the package
- Based on them we can annotate the exploration
Subsystem (Package Hierarchy)
Fall-Through Action Expand Description Only one
direct contained package which does not interact
with the others in the view
Iceberg Action Stop Description Only the top
package provides functionality to the packages in
the view.
11Visualizing Semantic Cluster Interaction
mouse, click, sensor, view, window
- Collaboration with Adrian Kuhn, Tudor Girba from
SCG - Purpose
- Understand the system by understanding the
interaction between the semantic clusters - Semantic clusters
- Sets of software artifacts that are defined using
similar natural language terms
term, semantic, latent, space
matrix, row, column, triangle
Java, token, parser, stem
Cluster interaction in the Hapax system (from
Lungu, Kuhn, Girba, Lanza - Exploring semantic
clusters, Vissoft 2005)
12Computing Semantic Clusters
- Build a semantic similarity index using LSI
- Terms words in the source code
- Documents classes
- Result similarity between classes
- Perform hierarchical clustering
- Hierarchy of semantic concepts,
- General at top specific at bottom
- Visualization Recipe
- Aggregate the invocations between classes to
cluster level - Visualize
Dendrogram of Hapax
Semantic Cohesion
Low
High
13Which Clusters to Visualize?
- Problem
- Top clusters - too general
- Bottom clusters - too specific
- Middle clusters - which?
- Solution
- Top-down exploratory approach
Very general clusters
Very specific clusters
Dendrogram of Hapax
14Conclusions and Future Work
- Exploration can still degenerate in messy graphs
- Patterns help here
- Need for powerful/meaningful filtering mechanism
- Dynamic information
- Other?
- Patterns
- Find more
- Do case studies
- Softwarenaut
- Integrate information regarding systems
evolution - Provide a web interface
15 lets explore some questons!
After all these
System
Architecture
Early
Recent
Exploration
Patterns
Clusters
Softwarenaut