The C Information Abstraction System
IEEE Transactions on Software Engineering
UNIX network programming
Visualizing and querying software structures
ICSE '92 Proceedings of the 14th international conference on Software engineering
A Logic-Based Approach to Reverse Engineering Tools Production
IEEE Transactions on Software Engineering - Special issue on software maintenance
Program Concept Recognition and Transformation
IEEE Transactions on Software Engineering - Special issue on software maintenance
The art of Prolog (2nd ed.): advanced programming techniques
The art of Prolog (2nd ed.): advanced programming techniques
Exploiting style in architectural design environments
SIGSOFT '94 Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering
Introduction to the Special Issue on Software Architecture
IEEE Transactions on Software Engineering - Special issue on software architecture
Abstractions for Software Architecture and Tools to Support Them
IEEE Transactions on Software Engineering - Special issue on software architecture
Software salvaging and the call dominance tree
Journal of Systems and Software
Software reflexion models: bridging the gap between source and high-level models
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Reverse engineering to the architectural level
Proceedings of the 17th international conference on Software engineering
Software architecture in industrial applications
Proceedings of the 17th international conference on Software engineering
The program understanding problem: analysis and a heuristic approach
Proceedings of the 18th international conference on Software engineering
Monitoring compliance of a software system with its high-level design models
Proceedings of the 18th international conference on Software engineering
An improved algorithm for identifying objects in code
Software—Practice & Experience
Software architecture: perspectives on an emerging discipline
Software architecture: perspectives on an emerging discipline
Lightweight lexical source model extraction
ACM Transactions on Software Engineering and Methodology (TOSEM)
Architecture-oriented visualization
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Dynamic structure in software architectures
SIGSOFT '96 Proceedings of the 4th ACM SIGSOFT symposium on Foundations of software engineering
Program decomposition for pointer aliasing: a step toward practical analyses
SIGSOFT '96 Proceedings of the 4th ACM SIGSOFT symposium on Foundations of software engineering
Requirements for an effective architecture recovery framework
ISAW '96 Joint proceedings of the second international software architecture workshop (ISAW-2) and international workshop on multiple perspectives in software development (Viewpoints '96) on SIGSOFT '96 workshops
ISAW '96 Joint proceedings of the second international software architecture workshop (ISAW-2) and international workshop on multiple perspectives in software development (Viewpoints '96) on SIGSOFT '96 workshops
A unified framework for expressing software subsystem classification techniques
Journal of Systems and Software
Manipulating recovered software architecture views
ICSE '97 Proceedings of the 19th international conference on Software engineering
ICSE '94 Proceedings of the 16th international conference on Software engineering
Design Recovery for Distributed Systems
IEEE Transactions on Software Engineering
Extracting architectural features from source code
Reverse engineering
Software architecture in practice
Software architecture in practice
IBM Systems Journal
Ownership types for flexible alias protection
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A C++ Data Model Supporting Reachability Analysis and Dead Code Detection
IEEE Transactions on Software Engineering
A language and environment for architecture-based software development and evolution
Proceedings of the 21st international conference on Software engineering
Pattern-based reverse-engineering of design components
Proceedings of the 21st international conference on Software engineering
Insight: reverse engineer case tool
Proceedings of the 21st international conference on Software engineering
Linux Journal
A Classification and Comparison Framework for Software Architecture Description Languages
IEEE Transactions on Software Engineering
Flow Analysis of Computer Programs
Flow Analysis of Computer Programs
Playing Detective: Reconstructing Software Architecture from Available Evidence
Automated Software Engineering
Reverse Engineering and Design Recovery: A Taxonomy
IEEE Software
Knowledge-Based Program Analysis
IEEE Software
Recognizing a Program's Design: A Graph-Parsing Approach
IEEE Software
Comparing Architectural Design Styles
IEEE Software
The 4+1 View Model of Architecture
IEEE Software
A Technique for Drawing Directed Graphs
IEEE Transactions on Software Engineering
A Framework for Source Code Search Using Program Patterns
IEEE Transactions on Software Engineering
Using Automatic Process Clustering for Design Recovery and Distributed Debugging
IEEE Transactions on Software Engineering
PQL: A Language for Specifying Abstract Program Views
Proceedings of the 5th European Software Engineering Conference
Specifying Distributed Software Architectures
Proceedings of the 5th European Software Engineering Conference
A Cliche'-Based Environment to Support Architectural Reverse Engineering
ICSM '96 Proceedings of the 1996 International Conference on Software Maintenance
Architecture Design Recovery of a Family of Embedded Software Systems
WICSA1 Proceedings of the TC2 First Working IFIP Conference on Software Architecture (WICSA1)
Recovering abstract data types and object instances from a conventional procedural language
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Design Recovery by Automated Search for Structural Design Patterns in Object-Oriented Software
WCRE '96 Proceedings of the 3rd Working Conference on Reverse Engineering (WCRE '96)
Augmenting Pattern-Based Architectural Recovery with Flow Analysis: Mosaic - a Case Study
WCRE '96 Proceedings of the 3rd Working Conference on Reverse Engineering (WCRE '96)
Some Experiments Toward Understanding How Program Plan Recognition Algorithms Scale
WCRE '96 Proceedings of the 3rd Working Conference on Reverse Engineering (WCRE '96)
WCRE '97 Proceedings of the Fourth Working Conference on Reverse Engineering (WCRE '97)
A Comparison of four Reverse Engineering Tools
WCRE '97 Proceedings of the Fourth Working Conference on Reverse Engineering (WCRE '97)
WCRE '99 Proceedings of the Sixth Working Conference on Reverse Engineering
Software Architectural Transformation
WCRE '99 Proceedings of the Sixth Working Conference on Reverse Engineering
Architectural Synthesis: Integrating Multiple Architectural Perspectives
WCRE '99 Proceedings of the Sixth Working Conference on Reverse Engineering
Fast, Flexible Syntactic Pattern Matching and Processing
WPC '96 Proceedings of the 4th International Workshop on Program Comprehension (WPC '96)
Ciao: a graphical navigator for software and document repositories
ICSM '95 Proceedings of the International Conference on Software Maintenance
Identifying Design-Code Inconsistencies in Object-Oriented Software: a Case Study
ICSM '98 Proceedings of the International Conference on Software Maintenance
A Two-Phase Process for Software Architecture Improvement
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Component Module Classification for Distributed Software Understanding
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Evaluating the Use of Dominance Trees for C and COBOL
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Design Pattern Recovery in Object-Oriented Software
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
Visualizing Software in Virtual Reality
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
Developing an Approach for the Recovery of Distributed Software Architectures
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
Using Automatic Clustering to Produce High-Level System Organizations of Source Code
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
Software architecture recovery and modelling: [WCRE 2001 discussion forum report]
ACM SIGAPP Applied Computing Review
Separating architectural concerns to ease program understanding
MACS '05 Proceedings of the 2005 workshop on Modeling and analysis of concerns in software
Runtime recovery and manipulation of software architecture of component-based systems
Automated Software Engineering
An Iterative Framework for Software Architecture Recovery: An Experience Report
ECSA '08 Proceedings of the 2nd European conference on Software Architecture
Improving system understanding via interactive, tailorable, source code analysis
FASE'05 Proceedings of the 8th international conference, held as part of the joint European Conference on Theory and Practice of Software conference on Fundamental Approaches to Software Engineering
Enhancing architectural recovery using concerns
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
ADAM: External dependency-driven architecture discovery and analysis of quality attributes
ACM Transactions on Software Engineering and Methodology (TOSEM)
Hi-index | 0.00 |
Reasoning about software systems at the architectural level is key to effective software development, management, evolution and reuse. All too often, though, the lack of appropriate documentation leads to a situation where architectural design information has to be recovered directly from implemented software artifacts. This is a very demanding process, particularly when involving recovery of runtime abstractions (clients, servers, interaction protocols, etc.) that are typical to the design of distributed software systems. This paper presents an exploratory reverse engineering approach, called X-ray, to aid programmers in recovering architectural runtime information from a distributed system's existing software artifacts. X-ray comprises three domain-based static analysis techniques, namely icomponent module classification, isyntactic pattern matching, and istructural reachability analysis. These complementary techniques can facilitate the task of identifying a distributed system's implemented iexecutable components and their potential iruntime interconnections. The component module classification technique automatically distinguishes source code modules according to the executables components they implement. The syntactic pattern matching technique in turn helps to recognise specific code fragments that may implement typical component interaction features. Finally, the structural reachability analysis technique aids in the association of those features to the code specific for each executable component. The paper describes and illustrates the main concepts underlying each technique, reports on their implementation as a suit of new and off-the-shelf tools, and, to give evidence of the utility of the approach, provides a detailed account of a successful application of the three techniques to help recover a static approximation of the runtime architecture for Field, a publicly-available distributed programming environment.