Expert problem solving strategies for program comprehension
CHI '91 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Consistent detection of global predicates
PADD '91 Proceedings of the 1991 ACM/ONR workshop on Parallel and distributed debugging
Program understanding and the concept assignment problem
Communications of the ACM
Fundamental issues in testing distributed real-time systems
Real-Time Systems - Special issue: dependability of real-time software
Software reconnaissance: mapping program features to code
Journal of Software Maintenance: Research and Practice
Reverse engineering of software threads: a design recovery technique for large multi-process systems
Journal of Systems and Software
Proceedings of the nineteenth annual ACM symposium on Principles of distributed computing
Programmers use slices when debugging
Communications of the ACM
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
Tracking immediate predecessors in distributed computations
Proceedings of the fourteenth annual ACM symposium on Parallel algorithms and architectures
Early field experience with the Software Reconnaissance technique for program comprehension
ICSM '96 Proceedings of the 1996 International Conference on Software Maintenance
Locating Program Features using Execution Slices
ASSET '99 Proceedings of the 1999 IEEE Symposium on Application - Specific Systems and Software Engineering and Technology
A Case Study of Feature Location in Unstructured Legacy Fortran Code
CSMR '01 Proceedings of the Fifth European Conference on Software Maintenance and Reengineering
METRICS '99 Proceedings of the 6th International Symposium on Software Metrics
A Formalism to Automate Mapping from Program Features to Code
IWPC '00 Proceedings of the 8th International Workshop on Program Comprehension
Case Study of Feature Location Using Dependence Graph
IWPC '00 Proceedings of the 8th International Workshop on Program Comprehension
Archetypal Source Code Searches: A Survey of Software Developers and Maintainers
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
Incremental Location of Combined Features for Large-Scale Programs
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
Distributed algorithms for detecting conjunctive predicates
ICDCS '95 Proceedings of the 15th International Conference on Distributed Computing Systems
Neural, Parallel & Scientific Computations
Understanding features in SOA: some experiences from distributed systems
Proceedings of the 2nd international workshop on Systems development in SOA environments
Engineering of Software-Intensive Systems: State of the Art and Research Challenges
Software-Intensive Systems and New Computing Paradigms
Hi-index | 0.00 |
This paper describes an approach to the feature location problem for distributed systems, that is, to the problem of locating which code components are important in providing a particular feature for an end user. A feature is located by observing system execution and noting time intervals in which it is active. Traces of execution in intervals with and without the feature are compared. Earlier experience has shown that this analysis is difficult because distributed systems often exhibit stochastic behavior and because time intervals are hard to identify with precision. To get around these difficulties, the paper proposes a definition of time interval based on the causality analysis introduced by Lamport and others. A strict causal interval may be defined, but it must often be extended to capture latent events and to represent the inherent imprecision in time measurement. This extension is modeled using a weighting function which may be customized to the specific circumstances of each study. The end result of the analysis is a component relevance index, denoted p"c, which can be used to measure the relevance of a software component to a particular feature. Software engineers may focus their analysis efforts on the top components as ranked according to p"c. Two case studies are presented. The first study demonstrates the feasibility of p"c by applying our method to a well-defined distributed system. The second study demonstrates the versatility of p"c by applying our method to message logs obtained from a large military system. Both studies indicate that the suggested approach could be an effective guide for a software engineer who is maintaining or enhancing a distributed system.