The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Computing Surveys (CSUR)
Supercompilers for parallel and vector computers
Supercompilers for parallel and vector computers
Debugging Concurrent Ada Programs by Deterministic Execution
IEEE Transactions on Software Engineering
Communications of the ACM
Extracting task-level parallelism
ACM Transactions on Programming Languages and Systems (TOPLAS)
Journal of Systems and Software - Special issue on software engineering for distributed computing
Concurrency Control in Distributed Database Systems
ACM Computing Surveys (CSUR)
Automatic Extraction of Functional Parallelism from Ordinary Programs
IEEE Transactions on Parallel and Distributed Systems
Scenario-Based Hypersequential Programming: Concept and Example
PDSE '97 Proceedings of the 2nd International Workshop on Software Engineering for Parallel and Distributed Systems
Scenario-Based Hypersequential Programming
International Journal of Parallel Programming - Special issue on international symposium on high performance computing 1997, part I
Context-sensitive slicing of concurrent programs
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
Hi-index | 0.00 |
The authors present hypersequential programming, a new method that eases the difficulty of concurrent programming and makes the concurrent program highly reliable. The difficulty of concurrent programming is due mainly to its nondeterminism. The authors classify nondeterminism into three types: intended, harmful, and persistent. In traditional concurrent programming, a programmer first designs and implements programs so as to maximize concurrency, which may include all three types of nondeterminism. She then tries to detect harmful nondeterministic behavior by testing and debugging them. However, removing all harmful nondeterministic behavior is actually very difficult. Hypersequential programming, on the other hand, first serializes the concurrent program to remove all types of nondeterminism, and then the programmer tests and debugs it as a sequential program. Finally, it is parallelized by restoring only intended and persistent nondeterminism. Hypersequential programming can develop a highly reliable concurrent program, because the injection of harmful nondeterminism is precluded. In this article, the authors also present a simple embodiment of hypersequential programming using Petri nets.