JACK: A Framework for Process Algebra Implementation in Java

  • Leonardo Freitas UFPE
  • Augusto Sampaio UFPE
  • Ana Cavalcanti UFPE

Resumo


The construction of concurrent programs is especially complex due mainly to the inherent non-determinism of their execution, which makes it difficult to repeat test scenarios. Process algebras have been used to design and reason about these programs. This paper presents an approach to developing concurrent programs using a set of process algebra constructs implemented as an object-oriented framework in Java, called JACK. The main objective of the framework is the design and implementation of process algebra constructs that provides as naturally as possible, the algebraic idiom as an extension package to Java. This work emphasises the use of design patterns and pattern languages to properly build frameworks like this, achieving desired software engineering properties and software quality requirements. The user of the JACK framework is able to describe its process specification in Java.

Palavras-chave: Process algebra, Java, Frameworks, Design patterns

Referências

Alexandre Motta Adalberto Farias and Augusto Sampaio. De CSPz para CSPm - Uma Ferramenta transformacional Java (in Portuguese). In Proceedings of V Formal Methods Workshop of XVII SBES in Rio de Janeiro, October 2001.

Rajev Alur. Mocha: Modularity in Model Checking., April 2002. http://www-cad.eecs.berkeley.edu/~mocha.

Ken Arnold and James Gosling. The Java Programming Language. The Java Series. Addison Wesley, 2 edition, 1997.

Ana Cavalcanti and Augusto Sampaio. From CSP-OZ to Java with Processes. In Proceddings of the Workshop on Formal Methods for Parallel Programming: Theory and Applications. IEEE CS Press, April 2002.

Ralph Jonhson Erich Gamma, Richard Helm and John Vlissides. Design Pattern Elements of Reusable Object-Oriented Software. Adison Wesley, 1 edition, 1995.

Clemens Fischer. Combination and Implementation of Process and Data: from CSP-OZ to Java. PhD thesis, University of Oldenburg, January 2000.

Formal Methods (Europe) Ltd. FDR User's Manual version 2.28, 1997.

Leonardo Freitas. CSP Implementation in JDASCO: Process Supervision, Backtracking and Multisynchronization, March 2002. Technical report available at http://www.jackcsp.hpg.com.br (site under construction).

Leonardo Freitas. JACK A Process Algebra Implementation for Java Home Page, March 2002. Technical report available at http://www.jackcsp.hpg.com.br (site under construction).

Leonardo Freitas. JACK: A Process Algebra Implementation in Java. Master's thesis, UFPE, April 2002.

Michael Goldsmith. Programming in OCCAM 2. Prentice Hall, 1 edition, 1988.

Ivar Jacobson Grady Booch, James Rumbaugh. The Unified Modeling Language User Guide. Object Technology Series. Adisson Wesley, 1998.

G.H. Hilderink and E.A.R. Hendriks. Concurrent Threads in Java CTJ v0.9, r17, September 2000. http://www.rt.el.utwente.nl/javapp.

C.A.R. Hoare. Communicating Sequential Process. Prentice Hall, 1985.

Guy Steele James Gosling, Bill Joy and Gilad Bracha. The Java Language Specification: Online Draft Version. Java Series. Adisson Wesley, 2 edition, 2000.

Grady Booch James Rumbaugh, Ivar Jacobson. The Unified Modeling Language Reference Manual. Object Technology Series. Addison Wesley, 1998.

Doug Lea. Concurrent Programming in Java. The Java Series. Addison Wesley, 2 edition, February 2000.

Satoshi Matsuoka and Akinori Yonezawa. Analysis of inheritance anomaly in object-oriented concurrent programming languages. In Research Directions in Concurrent Object-Oriented Programming, pages 107-150. MIT Press, 1993.

Bertrand Meyer. Object-Oriented Software Construction. Series in Computer Science. Prentice Hall, 2 edition, 1997.

R. Milner. A Calculus for Communicating Systems. LNCS 92, 1980.

Alexandre Mota and Augusto Sampaio. Model checking csp-z. Science of Computer Programming, Elsivier, 40:59-96, 2001. http://www.elsevier.nl/locate/scico.

P.D.Austin and P.H.Welch. Java Communicating Sequential Process JCSP, August 2000. http://www.cs.ukc.ac.uk/projects/ofa/jcsp/.

G.D. Plotkin. A structural approach to operational semantics. Lecture Notes DAIMI FN-19, Aarhus University, Denmark, 1991.

Dirk Riehle. Framework Design: A Role Modeling Approach. PhD thesis, Swiss Federal Institute of Technology Zurich, Universität Hamburg, 2000.

Linda Rising. The Pattern Almanac 2000. Software Pattern Series. Addison Wesley, May 2000.

A.W. Roscoe. The Theory and Practice of Concurrency. Prentice Hall, 1 edition, 1997.

David A. Schmidt. Denotational Semantics: A Methodology for Language Development. Allyn and Bacon, Inc., 1 edition, 1986.

António Manuel Ferreira Rito Silva. Concurrent Object-Oriented Programming: Separation and Composition of Concerns using Design Patterns, Pattern Languages, and ObjectOriented Frameworks. PhD thesis, Instituto Superior Técnico, Universidade Técnica de Lisboa, March 1999.

Jim Woodcock and Ana Cavalcanti. A Concurrent Language for Refinement. 5th Irish Workshop on Formal Methods, 2001.
Publicado
16/10/2002
FREITAS, Leonardo; SAMPAIO, Augusto; CAVALCANTI, Ana. JACK: A Framework for Process Algebra Implementation in Java. In: SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE (SBES), 16. , 2002, Gramado/RS. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2002 . p. 98-113. DOI: https://doi.org/10.5753/sbes.2002.23941.