Concurrent programming: principles and practice
Concurrent programming: principles and practice
A structured approach for developing concurrent programs in Java
Information Processing Letters
A deadlock detection tool for concurrent Java programs
Software—Practice & Experience
Composite model-checking: verification with type-specific symbolic representations
ACM Transactions on Software Engineering and Methodology (TOSEM)
Action Language: a specification language for model checking reactive systems
Proceedings of the 22nd international conference on Software engineering
Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
Monitors: an operating system structuring concept
Communications of the ACM
Symbolic Model Checking
Concurrent Programming in Java. Second Edition: Design Principles and Patterns
Concurrent Programming in Java. Second Edition: Design Principles and Patterns
Invariant-based specification, synthesis, and verification of synchronization in concurrent programs
Proceedings of the 24th International Conference on Software Engineering
Automatic Symbolic Verification of Embedded Systems
IEEE Transactions on Software Engineering
A Library for Composite Symbolic Representations
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Heuristics for Efficient Manipulation of Composite Constraints
FroCoS '02 Proceedings of the 4th International Workshop on Frontiers of Combining Systems
Constraint-Based Verification of Client-Server Protocols
CP '01 Proceedings of the 7th International Conference on Principles and Practice of Constraint Programming
Automatic Verification of Parameterized Cache Coherence Protocols
CAV '00 Proceedings of the 12th International Conference on Computer Aided Verification
Proceedings of the 16th IEEE international conference on Automated software engineering
Model interchange and integration for web services
ACM SIGSOFT Software Engineering Notes
Verifiable Concurrent Programming Using Concurrency Controllers
Proceedings of the 19th IEEE international conference on Automated software engineering
Application of design for verification with concurrency controllers to air traffic control software
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Automated Software Engineering
Scalable Software Model Checking Using Design for Verification
Verified Software: Theories, Tools, Experiments
Semantically Configurable Code Generation
MoDELS '08 Proceedings of the 11th international conference on Model Driven Engineering Languages and Systems
Generation of concurrency control code using discrete-event systems theory
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Action Language verifier: an infinite-state model checker for reactive software specifications
Formal Methods in System Design
An algorithmic framework for synthesis of concurrent programs
ATVA'11 Proceedings of the 9th international conference on Automated technology for verification and analysis
Synthesizing concurrency control components from process algebraic specifications
COORDINATION'06 Proceedings of the 8th international conference on Coordination Models and Languages
Code generation for a family of executable modelling notations
Software and Systems Modeling (SoSyM)
Hi-index | 0.00 |
Run-time errors in concurrent programs are generally due to the wrong usage of synchronization primitives such as monitors. Conventional validation techniques such as testing become ineffective for concurrent programs since the state space increases exponentially with the number of concurrent processes. In this paper, we propose an approach in which 1) the concurrency control component of a concurrent program is formally specified, 2) it is verified automatically using model checking, and 3) the code for concurrency control component is automatically generated. We use monitors as the synchronization primitive to control access to a shared resource by multipleconcurrent processes. Since our approach decouples the concurrency control component from the rest of the implementation it is scalable. We demonstrate the usefulness of our approach by applying it to a case study on Airport Ground Traffic Control.We use the Action Language to specify the concurrency control component of a system. Action Language is a specification language for reactive software systems. It is supported by an infinite-state model checker that can verify systems with boolean, enumerated and udbounded integer variables. Our code generation tool automatically translates the verified Action Language specification into a Java monitor. Our translation algorithm employs symbolic manipulation techniques and the specific notification pattern to generate an optimized monitor class by eliminating the context switch overhead introduced as a result of unnecessary thread notification. Using counting abstraction, we show that we can automatically verify the monitor specifications for arbitrary number of threads.