Preattentive processing in vision
Computer Vision, Graphics, and Image Processing
Problems with determining package cohesion and coupling
Software—Practice & Experience
Why looking isn't always seeing: readership skills and graphical programming
Communications of the ACM
A Unified Framework for Coupling Measurement in Object-Oriented Systems
IEEE Transactions on Software Engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Information visualization: perception for design
Information visualization: perception for design
On the criteria to be used in decomposing systems into modules
Communications of the ACM
The structure and value of modularity in software design
Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering
IEEE Transactions on Software Engineering
A Unified Framework for Cohesion Measurement in Object-OrientedSystems
Empirical Software Engineering
Information Rich Glyphs for Software Management Data
IEEE Computer Graphics and Applications
IEEE Software
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
Coupling and Cohesion as Modularization Drivers: Are We Being Over-Persuaded?
CSMR '01 Proceedings of the Fifth European Conference on Software Maintenance and Reengineering
Using Clustering Algorithms in Legacy Systems Remodularization
WCRE '97 Proceedings of the Fourth Working Conference on Reverse Engineering (WCRE '97)
Experiments with Clustering as a Software Remodularization Method
WCRE '99 Proceedings of the Sixth Working Conference on Reverse Engineering
Using Coupling Measurement for Impact Analysis in Object-Oriented Systems
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Bunch: A Clustering Tool for the Recovery and Maintenance of Software System Structures
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
On Integrating Visualization Techniques for Effective Software Exploration
INFOVIS '97 Proceedings of the 1997 IEEE Symposium on Information Visualization (InfoVis '97)
Polymetric Views-A Lightweight Visual Approach to Reverse Engineering
IEEE Transactions on Software Engineering
Unifying Artifacts and Activities in a Visual Tool for Distributed Software Development Teams
Proceedings of the 26th International Conference on Software Engineering
Dynamic Coupling Measurement for Object-Oriented Software
IEEE Transactions on Software Engineering
CVSscan: visualization of code evolution
SoftVis '05 Proceedings of the 2005 ACM symposium on Software visualization
Visualizing multiple evolution metrics
SoftVis '05 Proceedings of the 2005 ACM symposium on Software visualization
SoftVis '05 Proceedings of the 2005 ACM symposium on Software visualization
Theories, Methods and Tools in Program Comprehension: Past, Present and Future
IWPC '05 Proceedings of the 13th International Workshop on Program Comprehension
Object-Oriented Metrics in Practice
Object-Oriented Metrics in Practice
Butterflies: A Visual Approach to Characterize Packages
METRICS '05 Proceedings of the 11th IEEE International Software Metrics Symposium
Using dependency models to manage complex software architecture
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Package Patterns for Visual Architecture Recovery
CSMR '06 Proceedings of the Conference on Software Maintenance and Reengineering
On the Automatic Modularization of Software Systems Using the Bunch Tool
IEEE Transactions on Software Engineering
Reverse Engineering with Logical Coupling
WCRE '06 Proceedings of the 13th Working Conference on Reverse Engineering
Visualization of CVS Repository Information
WCRE '06 Proceedings of the 13th Working Conference on Reverse Engineering
Software Evolution from the Field
Electronic Notes in Theoretical Computer Science (ENTCS)
Semantic clustering: Identifying topics in source code
Information and Software Technology
The CRSS metric for package design quality
ACSC '07 Proceedings of the thirtieth Australasian conference on Computer science - Volume 62
Automatic Package Coupling and Cycle Minimization
WCRE '09 Proceedings of the 2009 16th Working Conference on Reverse Engineering
Supporting incremental change in large system models
IWST '09 Proceedings of the International Workshop on Smalltalk Technologies
Visualizing protected variations in evolving software designs
Journal of Systems and Software
Hi-index | 0.00 |
Context: Object-oriented languages such as Java, Smalltalk, and C++ structure their programs using packages. Maintainers of large systems need to understand how packages relate to each other, but this task is complex because packages often have multiple clients and play different roles (class container, code ownership, etc.). Several approaches have been proposed, among which the use of cohesion and coupling metrics. Such metrics help identify candidate packages for restructuring; however, they do not help maintainers actually understand the structure and interrelationships between packages. Objectives: In this paper, we use pre-attentive processing as the basis for package visualization and see to what extent it could be used in package understanding. Method: We present the Package Fingerprint, a 2D visualization of the references made to and from a package. The proposed visualization offers a semantically rich, but compact and zoomable views centered on packages. We focus on two views (incoming and outgoing references) that help users understand how the package under analysis is used by the system and how it uses the system. Results: We applied these views on four large systems: Squeak, JBoss, Azureus, and ArgoUML. We obtained several interesting results, among which, the identification of a set of recurring visual patterns that help maintainers: (a) more easily identify the role of and the way a package is used within the system (e.g., the package under analysis provides a set of layered services), and (b) detect either problematic situations (e.g., a single package that groups together a large number of basic services) or opportunities for better package restructuring (e.g., removing cyclic dependencies among packages). The visualization generally scaled well and the detection of different patterns was always possible. Conclusion: The proposed visualizations and patterns proved to be useful in understanding and maintaining the different systems we addressed. To generalize to other contexts and systems, a real user study is required.