2004 · 26 citations · 15 references
ComputingComputer EngineeringComputer ScienceFault-tolerant ComputingFault-tolerant SystemsOperating SystemsConcurrency AnalysisConcurrency ControlConcurrent ModelingConcurrent ProgrammingSynchronization PrimitivesConcurrency Control FlowConcurrency PrimitivesConcurrency TheoryConcurrent Program TestingControl Flow GraphsDeterministic ExecutionInformation Flow GraphsProducer-consumer Synchronization
The Java programming language supports concurrency. Concurrent programs are hard to test due to their inherent non-determinism. This paper presents a classification of concurrency failures that is based on a model of Java concurrency. The model and failure classification is used to justify coverage of synchronization primitives of concurrent components. This is achieved by constructing concurrency flow graphs for each method call. A producer-consumer monitor is used to demonstrate how the approach can be used to measure coverage of concurrency primitives and thereby assist in determining test sequences for deterministic execution.
15
Stefan Savage, Michael T. Burrows, Greg Nelson et al. · ACM Transactions on Computer Systems · 1997 · 1.6K citations · Full text
Willem Visser, Klaus Havelund, Guillaume Brat et al. · Automated Software Engineering · 2003 · 1.4K citations
Willem Visser, Klaus Havelund, Guillaume Brat et al. · 2000 · 338 citations