A debugger for concurrent programs
Software—Practice & Experience
Dbxtool: A window-based symbolic debugger for sun workstations
Software—Practice & Experience
Combining Static Concurrency Analysis with Symbolic Execution
IEEE Transactions on Software Engineering
A practical algorithm for static analysis of parallel programs
Journal of Parallel and Distributed Computing
Integrating tools for debugging and developing multitasking programs
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
Static analysis of low-level synchronization
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
A general-purpose algorithm for analyzing concurrent programs
Communications of the ACM
ACM Computing Surveys (CSUR)
Design and validation of computer protocols
Design and validation of computer protocols
Modeling concurrency in parallel debugging
PPOPP '90 Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming
Paradigms for process interaction in distributed programs
ACM Computing Surveys (CSUR)
Techniques for debugging parallel programs with flowback analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Compositional reachability analysis using process algebra
TAV4 Proceedings of the symposium on Testing, analysis, and verification
Automated Analysis of Concurrent Systems with the Constrained Expression Toolset
IEEE Transactions on Software Engineering
Symbolic model checking: an approach to the state explosion problem
Symbolic model checking: an approach to the state explosion problem
Model checking and abstraction
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
COOL: system support for distributed programming
Communications of the ACM
A concurrency analysis tool suite for Ada programs: rationale, design, and preliminary experience
ACM Transactions on Software Engineering and Methodology (TOSEM)
Temporal verification of reactive systems: safety
Temporal verification of reactive systems: safety
ACM Computing Surveys (CSUR)
Concepts and paradigms of object-oriented programming
ACM SIGPLAN OOPS Messenger
Modular Description and Verification of Concurrent Objects
OBPDC '95 Selected papers from the Workshop, on Object-Based Parallel and Distributed Computation
Model Checking and Modular Verification
CONCUR '91 Proceedings of the 2nd International Conference on Concurrency Theory
A Stubborn Attack On State Explosion
CAV '90 Proceedings of the 2nd International Workshop on Computer Aided Verification
Compositional Minimization of Finite State Systems
CAV '90 Proceedings of the 2nd International Workshop on Computer Aided Verification
A Static Analysis of CSP Programs
Proceedings of the Carnegie Mellon Workshop on Logic of Programs
A Tool-Suite for Reachability Analysis of Concurrent Object-Oriented Programs
APSEC '97 Proceedings of the Fourth Asia-Pacific Software Engineering and International Computer Science Conference
Slicing Concurrent Java Programs
IWPC '99 Proceedings of the 7th International Workshop on Program Comprehension
Static Slicing of Concurrent Object-Oriented Programs
COMPSAC '96 Proceedings of the 20th Conference on Computer Software and Applications
An enhanced flow analysis technique for detecting unreachability faults in concurrent systems
Information Sciences: an International Journal
Hi-index | 0.00 |
The object-oriented paradigm in software engineering provides support for the construction of modular and reusable program components and is attractive for the design of large and complex distributed systems. Reachability analysis is an important and well-known tool for static analysis of critical properties in concurrent programs, such as deadlock freedom. It involves the systematic enumeration of all possible global states of program execution and provides the same level of assurance for properties of the synchronization structure in concurrent programs, such as formal verification. However, direct application of traditional reachability analysis to concurrent object-oriented programs has many problems, such as incomplete analysis for reusable classes (not safe) and increased computational complexity (not efficient). We have proposed a novel technique called apportioning, for safe and efficient reachability analysis of concurrent object-oriented programs, that is based upon a simple but powerful idea of classification of program analysis points as local (having influence within a class) and global (having possible influence outside a class). Given a program and a classification of its analysis points, reachability graphs are generated for 1) an abstract version of each class in the program having only local analysis points and 2) an abstract version of the whole program having only global analysis points. The error to be checked is decomposed into a number of subproperties, which are checked in the appropriate reachability graphs. Different choices for the classification of analysis points, provide the flexibility to have many algorithms that are safe and efficient for different subclasses of programs. We have developed a number of apportioning-based algorithms, having different degrees of safety and efficiency. In this paper, we present the details of one of these algorithms, formally show its safety for an appropriate class of programs, and present experimental results to demonstrate its efficiency for various examples.