Concurrent programming: principles and practice
Concurrent programming: principles and practice
The concurrency workbench: a semantics-based tool for the verification of concurrent systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automated consistency checking of requirements specifications
ACM Transactions on Software Engineering and Methodology (TOSEM)
IEEE Transactions on Software Engineering - Special issue on formal methods in software practice
An analysis-based approach to composition of distributed embedded systems
Proceedings of the 6th international workshop on Hardware/software codesign
Concurrent programming: the Java programming language
Concurrent programming: the Java programming language
A structured approach for developing concurrent programs in Java
Information Processing Letters
Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
Using predicate abstraction to reduce object-oriented programs for model checking
FMSP '00 Proceedings of the third workshop on Formal methods in software practice
Slicing Software for Model Construction
Higher-Order and Symbolic Computation
Automatic predicate abstraction of C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Tool-supported program abstraction for finite-state verification
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
Modular verification of collaboration-based software designs
Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering
Foundations of Parallel and Distributed Programming
Foundations of Parallel and Distributed Programming
The Science of Programming
Automated Computation of Decomposable Synchronization Conditions
HASE '97 Proceedings of the 2nd High-Assurance Systems Engineering Workshop
Abstracting Object Interactions Using Composition Filters
ECOOP '93 Proceedings of the Workshop on Object-Based Distributed Programming
Soot - a Java bytecode optimization framework
CASCON '99 Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research
TOOLS '97 Proceedings of the Technology of Object-Oriented Languages and Systems - Tools-25
The design of the TAO real-time object request broker
Computer Communications
Specification, verification, and synthesis of concurrency control components
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Proceedings of the 25th International Conference on Software Engineering
A type and effect system for atomicity
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Atomizer: a dynamic atomicity checker for multithreaded programs
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Exploiting purity for atomicity
ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
Verifiable Concurrent Programming Using Concurrency Controllers
Proceedings of the 19th IEEE international conference on Automated software engineering
Transparent proxies for java futures
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Verifying aspect advice modularly
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
TLDI '05 Proceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation
Documentation Driven Development for Complex Real-Time Systems
IEEE Transactions on Software Engineering
Exploiting Purity for Atomicity
IEEE Transactions on Software Engineering
Translating Java for Multiple Model Checkers: The Bandera Back-End
Formal Methods in System Design
Associating synchronization constraints with data in an object-oriented language
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Foundations of incremental aspect model-checking
ACM Transactions on Software Engineering and Methodology (TOSEM)
Atomizer: A dynamic atomicity checker for multithreaded programs
Science of Computer Programming
Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Types for atomicity: Static checking and inference for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Generation of concurrency control code using discrete-event systems theory
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
On Mechanisms for Deadlock Avoidance in SIP Servlet Containers
Principles, Systems and Applications of IP Telecommunications. Services and Security for Next Generation Networks
FlexSync: An aspect-oriented approach to Java synchronization
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Bridging the gap: Discrete-Event Systems for software engineering (short position paper)
C3S2E '09 Proceedings of the 2nd Canadian Conference on Computer Science and Software Engineering
A thread synchronization model for SIP servlet containers
Proceedings of the 3rd International Conference on Principles, Systems and Applications of IP Telecommunications
Effects for cooperable and serializable threads
Proceedings of the 5th ACM SIGPLAN workshop on Types in language design and implementation
Journal of Systems and Software
An algorithmic framework for synthesis of concurrent programs
ATVA'11 Proceedings of the 9th international conference on Automated technology for verification and analysis
A case study in domain-customized model checking for real-time component software
ISoLA'04 Proceedings of the First international conference on Leveraging Applications of Formal Methods
Extending JML for modular specification and verification of multi-threaded programs
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
A data-centric approach to synchronization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Synthesizing concurrency control components from process algebraic specifications
COORDINATION'06 Proceedings of the 8th international conference on Coordination Models and Languages
Logical concurrency control from sequential proofs
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
EnforceMOP: a runtime property enforcement system for multithreaded programs
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Concurrency control generation for dynamic threads using discrete-event systems
Science of Computer Programming
Hi-index | 0.00 |
Concurrency is used in modern software systems as a means of addressing performance, availability, and reliability requirements. The collaboration of multiple independently executing components is fundamental to meeting such requirements and such collaboration is realized by synchronizing component execution.Using current technologies developers are faced with a tension between correct synchronization and performance. Developers can be confident when simple forms of synchronization are used, for example, locking all accesses to shared data. Unfortunately, such simple approaches can result in significant run-time overhead, and, in fact, there are many cases in which such simple approaches cannot implement required synchronization policies. Implementing more sophisticated (and less constraining) synchronization policies may improve run-time performance and satisfy synchronization requirements, but fundamental difficulties in reasoning about concurrency make it difficult to assess their correctness.This paper describes an approach to automatically synthesizing complex synchronization implementations from formal high-level specifications. Moreover, the generated coded is designed to be processed easily by software model-checking tools such as Bandera. This enables the generated synchronization solutions to be verified for important system correctness properties. We believe this is an effective approach because the tool-support provided makes it simple to use, it has a solid semantic foundation, it is language independent, and we have demonstrated that it is powerful enough to solve numerous challenging synchronization problems.