This Article 
 Bibliographic References 
 Add to: 
Implementing Atomic Actions in Ada 95
February 1997 (vol. 23 no. 2)
pp. 107-123

Abstract—Atomic actions are an important dynamic structuring technique that aid the construction of fault-tolerant concurrent systems. Although they were developed some years ago, none of the well-known commercially-available programming languages directly support their use. This paper summarizes software fault tolerance techniques for concurrent systems, evaluates the Ada 95 programming language from the perspective of its support for software fault tolerance, and shows how Ada 95 can be used to implement software fault tolerance techniques. In particular, it shows how packages, protected objects, requeue, exceptions, asynchronous transfer of control, tagged types, and controlled types can be used as building blocks from which to construct atomic actions with forward and backward error recovery, which are resilient to deserter tasks and task abortion.

[1] P.A. Lee and T. Anderson, Fault Tolerance: Principles and Practice, second ed. Vienna, Austria: Springer–Verlag, 1990.
[2] J. Goodenough, “Exception Handling: Issues and Proposed Notation,” Comm. ACM, Vol. 18, No. 12, pp. 683–696, 1975.
[3] J.J. Horning, H.C. Lauer, P.M. Melliar-Smith, and B. Randell, "A Program Structure for Error Detection and Recovery," Lecture Notes in Computer Science 16, E. Gelenbe and C. Kaiser, eds., pp. 171-187. Springer-Verlag, 1974.
[4] R.H. Campbell and B. Randell, “Error Recovery in Asynchronous Systems,” IEEE Trans. Software Eng., vol. 12, no. 8, pp. 811-826, Aug. 1986.
[5] D.B. Lomet, "Process Structuring, Synchronisation and Recovery Using Atomic Actions," Proc. ACM Trans. Language Design for Reliable Software, SIGPLAN, pp. 128-137, 1977.
[6] A. Burns and A.J. Wellings, Real-Time Systems and Their Programming Languages. Addison-Wesley, 1990.
[7] K.H. Kim, "Approaches to Mechanization of the Conversation Scheme Based on Monitors," IEEE Trans. Software Eng., vol. 8, no. 3, pp. 189-197, 1982.
[8] S.K. Shrivastava, G.N. Dixon, and G.D. Parrington, "An Overview of the Arjuna Distributed Programming System," IEEE Software, vol. 8, no. 1, pp. 66-73, 1991.
[9] A. Burns and A.J. Wellings, "Programming Atomic Actions in Ada," Ada Letters, vol. 9 no. 6, pp. 67-79, 1989.
[10] A. Clematis and V. Gianuzzi, "Structuring Conversations in Operation/Procedure Oriented Programming Languages," Computer Languages, vol. 18, no. 3, pp. 153-168, 1993.
[11] A. Romanovsky and L. Strigini, "Backward Error Recovery via Conversations in Ada," Software Eng. J., vol. 10, no. 6, pp. 219-232, 1995.
[12] "Ada 95 Reference Manual," ANSI/ISO/IEC-8652:1995, Intermetrics, 1995.
[13] B.L. Randell, P.A. Lee, and P.C. Treleaven, “Reliability Issue in Computing System Design,” ACM Computing Surveys, vol. 2, pp. 123-166, 1978.
[14] P. Jalote, "Atomic Actions in Concurrent Systems," UIUCDCS-R-85-1223, Dept. of Computer Science, Univ. of Illi nois, 1985.
[15] B. Randell, "System Structure for Software Fault Tolerance," IEEE Trans. Software Eng., vol. 1, no. 2, pp. 220-232, 1975.
[16] S.T. Gregory and J.C. Knight, "A New Linguistic Approach to Backward Error Recovery," Proc. 15th Ann. Int'l Symp. Fault-Tolerant Computing Digest of Papers, pp. 404-409, 1985.
[17] A.M. Tyrrell, and D.J. Holding,“Design of reliable software in distributed systems using the conversation scheme,” IEEE Trans. Software Engineering, vol. 12, no. 7, pp. 921-928, Sept. 1986.
[18] P. Jalote and R.H. Campbell, "Fault Tolerance Using Communicating Sequential Processes," 14th Ann. Int'l Symp. Fault-Tolerant Computing Digest of Papers, pp. 347-352, 1984.
[19] P. Jalote and R.H. Campbell,“Atomic actions for fault tolerance using CSP,” IEEE Trans. Software Engineering, vol. 12, no. 1, pp. 59-68, Jan. 1986.
[20] A. Burns and A J. Wellings, Concurrency in Ada. Cambridge Univ. Press, 1995.
[21] C.A.R. Hoare, "Towards a Theory of Parallel Programming," Operating Systems Techniques, pp. 61-71. Academic Press, 1972.
[22] P. Brinch Hansen, "Structured Multiprogramming," Comm. ACM, vol. 15, no. 7, July 1972, pp. 574-578.
[23] C.A.R. Hoare, "Monitors, An Operating System Structuring Concept," Comm. ACM, vol. 17, no. 10, Oct. 1974, pp. 549-557.
[24] P. Brinch-Hansen, Operating System Principles.Englewood Cliffs, N.J.: Prentice Hall, 1973.
[25] B. Randell et al., "From Recovery Blocks to Concurrent Atomic Actions," Predictable Dependable Computing Systems, B. Randell et al., eds. Springer-Verlag, 1995.
[26] J. Xu, B. Randell, A. Romanovsky, C. Rubira, R.J. Stroud, and Z. Wu, “Fault Tolerance in Concurrent Object-Oriented Software through Coordinated Error Recovery,” Proc. 25th Int'l Symp. Fault-Tolerant Computing, pp. 499-508, June 1995.
[27] A. Romanovsky, S. Mitchell, and A.J. Wellings, "On Programming Atomic Actions in Ada 95," Proc. Ada Europe Conf., Springer-Verlag, 1997.

Index Terms:
Software fault tolerance, atomic actions, Ada 95, exception handling, recovery blocks, conversations.
Andy Wellings, Alan Burns, "Implementing Atomic Actions in Ada 95," IEEE Transactions on Software Engineering, vol. 23, no. 2, pp. 107-123, Feb. 1997, doi:10.1109/32.585500
Usage of this product signifies your acceptance of the Terms of Use.