Abstract
The behavior of a concurrent program often depends on the arbitrary interleaving of computations performed by asynchronous processes. The resulting non-determinism can lead to such phenomena as deadlock and starvation, making program development extremely difficult, and consequently making the development of tools for formal analysis highly desirable.
A specification-based approach to concurrency analysis is a particularly promising way of addressing some of the difficulties inherent in concurrent program development. According to this approach, a programmer first writes a specification describing the interprocess communication behavior of a concurrent program. A set of formal analysis techniques are then applied in an effort to determine whether the specification can be fully satisfied. If the analysis is successful, target code is generated automatically that conforms to the specification.
This approach has a variety of benefits. While such properties as safety and liveness are rather difficult to discern in actual code, they are actually easy to include as part of a specification. Moreover, state spaces induced by specifications tend to be smaller and more manageable than state spaces of actual code, and this leads to more effective analysis techniques. Finally, the generation of interprocess communication code from formal specifications is accomplished in a relatively straightforward manner.
Similar content being viewed by others
References
Avrunin, G.S., Buy, U.A., Corbett, J.C., Dillon, L.K., and Wileden, J.C. 1991. Automated analysis of concurrent systems with the constrained expression toolset.IEEE Trans. Softw. Eng., 17(11):1204–1222.
Avrunin, G.S., Dillon, L.K., Wileden, J.C., and Riddle, W.E. 1986. Constrained expressions: Adding analysis capabilities to design methods for concurrent software systems.IEEE Trans. Softw. Eng., 12(2):278–292.
Bryant, R.E. 1992. Symbolic boolean manipulation with ordered binary-decision diagrams.ACM Comput. Surv., 24(3):293–318.
Buy, U. 1990.Automatic Synthesis of Resource Sharing Concurrent Programs. PhD Thesis, University of Massachusetts, Amherst, Massachusetts.
Buy, U.A. and Moll, R. 1991a. Liveness analysis and the automatic generation of concurrent programs. In E.M. Clarke and R.P. Kurshan (Eds.),Computer-Aided Verification'90, DIMACS 3, pp. 535–550, American Mathematical Society.
Buy, U.A. and Moll, R. 1991b. A proof lattice-based technique for analyzing liveness of resource controllers. In E.M. Clarke and R.P. Kurshan (Eds.),Computer-Aided Verification: 2nd Internat. Conf., CAV'90, LNCS 531, pp. 292–301, Springer-Verlag.
Carriero, N. and Gelernter, D. 1989. Linda in context.Commun. ACM, 32(4):445–458.
Clarke, E.M. and Emerson, E.A. 1981. Design and synthesis of synchronization skeletons using branching-time temporal logic. InProceedings of the Workshop on Logics of Programs, LNCS 131, pp. 52–71, Springer-Verlag.
Clarke, E.M., Emerson, E.A., and Sistla, A.P. 1986. Automatic verification of finite-state concurrent systems using temporal logic specifications.ACM Trans. Prog. Lang. Syst., 8(2):244–263.
Cormen, T.H., Leiserson, C.E., and Rivest, R.L. 1990.Introduction to Algorithms. MIT Press/McGraw-Hill.
Desai, A. 1993. A specification based approach to concurrency analysis. Master's Thesis, University of Illinois at Chicago.
Dijkstra, E.W. 1965. Cooperating sequential processes. Technical Report EWD-123, Technological University, Eindhoven, The Netherlands.
Dijkstra, E.W. 1975. Guarded commands, nondeterminacy and formal derivation of programs.Commun. ACM, 18(8):453–457.
Duri, S., Buy, U., Devarapalli, R., and Shatz, S.M. 1993. Using state space reduction methods for deadlock analysis in Ada tasking. InProc. 1993 Internat. Sympos. on Software Testing and Analysis, pp. 51–60, ACM.
Emerson, E.A. and Lei, C.-L. 1987. Modalities for model checking: Branching time logic strikes back.Science of Computer Programming, 8:275–306.
Genrich, H.J. and Lautenbach, K. 1981. System modelling with high-level Petri nets.Theoretical Computer Science 13, 13:109–136.
Godefroid, P. and Wolper, P. 1992. Using partial orders for the efficient verification of deadlock freedom and safety properties. In K.G. Larsen and A. Skou (Eds.),Computer-Aided Verification: 3rd Internat. Conf., CAV'91, LNCS 575, pp. 332–342, Springer-Verlag.
Harel, D., Lachover, H., Naamad, A., Pnueli, A., Politi, M., Sherman, R., Shtull-Trauring, A., and Trakhtenbrot, M. 1990. STATEMATE: a working environment for development of complex reactive systems.IEEE Trans. Softw. Eng., 16(4):403–414.
Helmbold, D. and Luckham, D. 1985. Debugging Ada tasking programs.IEEE Software, 2(2):47–57.
Hoare, C.A.R. 1985.Communicating Sequential Processes. Prentice-Hall International.
Holzmann, G.J. 1991.Design and Validation of Computer Protocols. Prentice-Hall Software Series.
Karam, G.M. and Buhr, R.J. 1990. Starvation and critical race analyzers for Ada.IEEE Trans. Softw. Eng., 16(8):829–843.
Long, D.L. and Clarke, L.A. 1989. Task interaction graphs for concurrency analysis. InProceedings of the 11th International Conference on Software Engineering. Pittsburgh, PA, pp. 44–52.
Manna, Z. and Wolper, P. 1984. Synthesis of communicating processes from temporal logic specifications.ACM Trans. Prog. Lang. Syst., 6(1):68–93.
McDowell, C.E. 1989. A practical algorithm for static analysis of parallel programs.Journal of Parallel and Distributed Processing, pp. 515–536.
McMillan, K.L. 1993.Symbolic Model Checking. Boston, Massachusetts: Kluwer Academic Publishers.
Milner, R. 1989.Communication and Concurrency. Englewood Cliffs, New Jersey: Prentice-Hall.
Morgan, E.T. and Razouk, R.R. 1987. Interactive state-space analysis of concurrent systems.IEEE Trans. Softw. Eng., 13(10):1080–1091.
Murata, T., Shenker, B., and Shatz, S.M. 1989. Detection of Ada static deadlocks using Petri net invariants.IEEE Trans. Softw. Eng., 15(3):314–326.
Owicki, S. and Lamport, L. 1982. Proving liveness properties of concurrent programs.ACM Trans. Prog. Lang. Syst., 4(3):455–495.
Pnueli, A. 1977. The temporal logic of programs. InProceedings 18th Annual Symposium on Foundations of Computer Science, pp. 46–57.
Ramamritham, K. 1985. Synthesizing code for resource controllers.IEEE Trans. Softw. Eng., 11(8):774–783.
Ramamritham, K. and Keller, R.M. 1983. Specification of synchronizing processes.IEEE Trans. Softw. Eng., 9(6):722–733.
Ramamritham, K. and Sundarrajan, P. 1983. Automatic generation of code for resource controller tasks in Ada. InProceedings of the IEEE Symposium on Application and Assessment of Automated Tools for Software Development, pp. 133–142.
Roscoe, A.W. and Hoare, C.A.R. 1988. The laws of Occam programming.Theoretical Computer Science, 20:177–229.
Starke, P.H. 1991. Reachability analysis of Petri nets using symmetries.Syst. Anal. Model. Simul., 8:293–303.
Taylor, R.N. 1983. A general-purpose algorithm for analyzing concurrent programs.Commun. ACM, 26(5):362–376.
Tu, S., Shatz, S.M., and Murata, T. 1990. Applying Petri net reduction to support Ada-tasking deadlock analysis. InProc. Eleventh Internat. Conference on Distributed Computing Systems, Paris, France, pp. 96–103.
U.S. Department of Defense, Washington, D.C.Reference Manual for the Ada Programming Language, ANSI/MIL-STD-1815A edition, Jan. 1983.
Valmari, A. 1991. A stubborn attack on state explosion. In E.M. Clarke and R.P. Kurshan (Eds.),Computer-Aided Verification: 2nd Internat. Conf., CAV'90, LNCS 531, pp. 156–165, Springer-Verlag.
Young, M. and Taylor, R.N. 1988. Combining static concurrency analysis with symbolic execution.IEEE Trans. Softw. Eng., 14(10):1499–1511.
Author information
Authors and Affiliations
Additional information
Research partially supported by NSF grant CCR-9109231.
Rights and permissions
About this article
Cite this article
Buy, U., Moll, R. A specification-based approach to concurrency analysis. Autom Software Eng 2, 265–309 (1995). https://doi.org/10.1007/BF00871802
Issue Date:
DOI: https://doi.org/10.1007/BF00871802