Abstract
This paper proposes hypersequential programming which is a novel paradigm for concurrent programming to ease the difficulty of concurrent programming and make the concurrent program highly reliable. The difficulty of concurrent programming is due mainly to its nondeterminism; nondeterminism being the purpose of the concurrent program. We classify nondeterminism into 3 types: intended, harmful, and persistent nondeterminism. In traditional concurrent programming, a programmer first designs and implements programs so as to maximize concurrency, which may include the 3 types of nondeterminism. He then tries to detect harmful nondeterministic behaviors by testing and debugs them. However, it is actually very hard to remove all harmful nondeterministic behavior. On the contrary, in hypersequential programming the concurrent program is first serialized 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. With hypersequential programming, a highly-reliable concurrent program can be developed because the injection of harmful nondeterminism is precluded. This paper shows the generic concept and a simple embodiment of hypersequential programming.
Chapter PDF
Similar content being viewed by others
Keywords
References
McDowell, C.E. and Helmbold, D.P. (1989) Debugging Concurrent Programs, ACM Computing Surveys, Vol. 21, No. 4.
Uchihira, N. and Honiden, S. (1995) Compositional Adjustment of Concurrent Programs to Satisfy Temporal Logic Constraints in MENDELS ZONE, 28th Hawaii International Conference on System Science (HICSS).
Bernstein, D. and So, K. (1991) Debugging Parallel Programs by Serialization, United States Patent No. 5048018.
Ferrante, J., Ottenstein, K.J., and Warren, J.D. (1987) The Program Dependence Graph and Its Use in Optimization, ACM Trans. on Programming Languages and Systems, Vol. 9, No. 3.
Girkar, M. and Polychronopoulos, C.D. (1992) Automatic Extraction of Functional Parallelism from Ordinary Programs IEEE Trans. Parall. Distrib. Syst., Vol. 3, No. 2.
Girkar, M. and Polychronopoulos, C.D. (1995) Extracting Task-Level Parallelism ACM Trans. Prog. Lang. Syst., Vol. 17, No. 4.
Zima, H. and Chapman, B. (1990) Supercompilers for Parallel and Vector Computers Addison-Wesley.
Bernstein, F.A. and Goodman, N. (1981) Concurrency Control in Distributed Database Systems, ACM Computing Surveys, Vol. 13, No. 2.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1996 IFIP International Federation for Information Processing
About this chapter
Cite this chapter
Uchihira, N., Honiden, S., Seki, T. (1996). Hypersequential Programming. In: Jelly, I., Gorton, I., Croll, P. (eds) Software Engineering for Parallel and Distributed Systems. IFIP Advances in Information and Communication Technology. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-34984-8_6
Download citation
DOI: https://doi.org/10.1007/978-0-387-34984-8_6
Publisher Name: Springer, Boston, MA
Print ISBN: 978-1-5041-2948-0
Online ISBN: 978-0-387-34984-8
eBook Packages: Springer Book Archive