Kent Academic Repository Full Text Document (Pdf)
Total Page:16
File Type:pdf, Size:1020Kb
Kent Academic Repository Full text document (pdf) Citation for published version Freitas, Leonardo (2002) JACK: A process algebra implementation in Java. Other masters thesis, Centro de Informatica, Universidade Federal de Pernambuco. DOI Link to record in KAR https://kar.kent.ac.uk/13806/ Document Version UNSPECIFIED Copyright & reuse Content in the Kent Academic Repository is made available for research purposes. Unless otherwise stated all content is protected by copyright and in the absence of an open licence (eg Creative Commons), permissions for further reuse of content should be sought from the publisher, author or other copyright holder. Versions of research The version in the Kent Academic Repository may differ from the final published version. Users are advised to check http://kar.kent.ac.uk for the status of the paper. Users should always cite the published version of record. Enquiries For any further enquiries regarding the licence status of this document, please contact: [email protected] If you believe this document infringes copyright then please contact the KAR admin team with the take-down information provided at http://kar.kent.ac.uk/contact.html UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE INFORMÁTICA PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO LEONARDO FREITAS “JACK: A proc e ss alge bra impleme ntation in Java" ESTE TRABALHO FOI APRESENTADO À PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO DO CENTRO DE INFORMÁTICA DA UNIVERSIDADE FEDERAL DE PERNAMBUCO COMO REQUISITO PARCIAL PARA OBTENÇÃO DO GRAU DE MESTRE EM CIÊNCIA DA COMPUTAÇÃO. ORIENTADOR(A): Augusto César Alves Sampaio RECIFE, ABRIL/2002 Abstract 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. Concurrency has proved to be a fascinating subject and there are many subtle distinctions which one can make. This dissertation presents an approach for constructing concurrent programs using a set of process algebra constructs (for CSP) implemented as an object-oriented framework in Java called JACK; it stands for Java Architecture with CSP kernel. The main objective of the framework is an implementation of process algebra constructs that provides, as naturally as possible, the algebraic idiom as an extension to this concurrent object-oriented programming language. By naturally, we mean a design and implementation that provide the process abstraction as if it were included in the Java language itself (i.e. embedded in the Java language as an extension package). JACK is a framework that implements a process algebra. A process algebra is a formal language that has notations for describing and reasoning about reactive systems. It implements a modern version of the Hoare’s Communication Sequential Process (CSP) formalism. The framework is provided as a Java extension package that supplies CSP operators embedded in the Java language. The library is struc- tured using UML, role modeling for framework design and construction, and make use of design patterns and pattern languages. Furthermore, JACK follows some of the most important software engenieering practices to build frameworks and as a result its design achievies important properties like reusability, simplicity, expres- sive power, modularity, extensibility, and so forth. JACK is provided as a gray-box (white, and black-box) framework tailored to run CSP specifications in Java; it can also be used to model unified specifications like Circus and CSP-OZ, that combines CSP with Z. The implementation is built using separation of concerns in a way that is highly beneficial to class-based design of frameworks. This work empathizes the use of design patterns and pattern languages to properly build frameworks, achieve desired software engineering properties and software quality requirements. The user of the JACK framework is able to describe its process specification in Java, either in CSP or in a combined algebra one, like in CSP-OZ or in Circus. i Resumo A constru¸c˜ao de programas concorrentes ´ede natureza complexa principalmente por conta do n˜ao-determinismo herdado da sua forma de execu¸c˜ao, o que dificulta a repeti¸c˜ao de cen´arios de teste. Concorrˆencia tem provado ser um tema fascinante existindo muitas sutis distin¸c˜oes que podem ser feitas. Esta disserta¸c˜ao apresenta uma proposta para constru¸c˜ao de programas concorrentes utilizando um conjunto de constru¸c˜oes de ´algebra de processos (para CSP) implementadas como uma ar- quitetura orientada a objetos em Java chamada JACK. O principal objetivo da arquitetura ´ea implementa¸c˜ao de construtores de ´algebra de processos que forne¸ca, da maneira mais natural poss´ivel, o idioma alg´ebrico como uma extens˜ao desta linguagem de programa¸c˜ao concorrente e orientada a objetos. Por natural, entede-se um projeto e implementa¸c˜ao que forne¸ca a abstra¸c˜ao de processo como se ele estivesse inclu´ido em Java como um pacote de extens˜ao. JACK ´euma arquitetura que implementa uma ´algebra de processos. Uma ´algebra de processos ´euma linguagem formal que possui nota¸c˜ao para descri¸c˜ao e racioc´inio sobre sistemas reativos. Ela implementa uma vers˜ao moderna do for- malismo Communication Sequential Process (CSP) desenvolvido por Hoare. A ar- quitetura est´adispon´ivel como um pacote de Java que provˆeoperadores de CSP para esta linguagem. A biblioteca ´eestruturada utilizando UML e modelo de pap´eis para projeto e constru¸c˜ao de arquiteturas, fazendo uso de padr˜oes e linguagens de projeto. Al´em disso, JACK segue algumas dos mais importantes pr´aticas em engenharia de software para constru¸c˜ao de arquiteturas, e, como um resultado, seu projeto possui importantes propriedades como reusabilidade, simplicidade, poder de express˜ao, modularidade, extensibilidade, etc. JACK ´edisponibilizada como uma arquitetura gray-box (white, e black-box) constru´ida para rodar especifica¸c˜oes CSP em Java. Ela pode ainda ser utilizada para modelar especifica¸c˜oes unificadas como Circus e CSP-OZ, que combinam CSP com Z. A implementa¸c˜ao ´econstruida utilizando separa¸c˜ao de facetas de uma forma altamente ben´efica para o projeto de arquitetura baseado em classes. Este trabalho enfatiza o uso de padr˜oes e linguagens de projeto para construir arquiteturas de forma adequada, alcan¸cando propriedades de engenharia de software e requisitos de qualidade desejados. iii Acknowledgments ao outro Outro encarnado em n´os mesmos e que n˜ao sabemos como lidar (...). This dissertation is dedicated to the death of Dum and the rebirth of Dede and her metamorphose tramp. I have two main group of people to acknowledge. One that provides me full proof technical support, and another one that gives enough courage and psychological incentive (and presure) to continue. Each group plays a specific and necessary role in this disseration work, without them, it would not be possible to happen. In the first main group I must distinguish my supervisors Augusto Sampaio and Ana Cavalcanti for their competent technical and personal support for the completeness of this work. I like you very much! Despite this, I believe that the most important person that have influenced my academic route at a whole is my great friend Adolfo Duran. Without his initial trust in my work and operational incentive to follow that academic path, I would not be there. I cannot forget to mention another important person in my academic life: Jos´eAugustp Suruagy Monteiro; he was the first one that trusted in my work and gave me operational support and incentive to continue in this area. Behind the scenes, there are also more people that helped a lot in many other technical details like Alexandre Motta, Orlando Campos, Adalberto Cajueiro, and some other department university fellows. Their valuable opinions and discussions were very important. I would also like to thanks Professor Jim Woodcock, Augusto Sampaio, and Ana Cavalcanti for their encouragement in continue my dissertation work as PhD thesis on the same research field — tools for formal methods. Professor Peter Mosses gives me helpfull support in an Action Semantic research related to this work. A special thanks must be given to Jaqueira’s reacecourse (a beautiful place here in Recife that I run everyday); the most important ideas of this dissertation were perceived there. Finally, I must mention CAPES, a brazilian state organization that gives financial support for my technical research at UFPE. The second group have the most important people in my life. I must thank v my mother and godmother for their emotional support and important phylosofical discussion about life, poetry, and psychoanalysis. I would like to thank my father for their operational and practical support, and also for his complete trust in my capacity even when I did not. Other important persons must be mentioned. Helson Ramos and Espa¸coMoebius, for the valuable discussions about psychoanalysis and the analytical style of life at a whole. Adolfo Duran and Caio Mattos, for their complete friendship. Orlando Campos, for his serenity and tranquillity in the time that we have acquaintance her in Recife. Katiana Barauna, for her initial emotional support here in Recife and during some personal problems in Salvador. To Bolildos guys, my old group of friends from Salvador, specially mentioning Mario, for his tranquility and security; Bolildo and Borela for their determination and hilarious behaviour; Mira, for his organization; Zinho, for our interesting discussions about social human way of life; Clˆo, for his blind friendship, even when I was not worthy of it. To Virginea and Nina, for their emotional support and admiration about me and my analytical way of life. Finally, for the other important people that I have forgot to mention, please, receive my apologizes. I must say that, despite of many technical, personal and emotional problems during this work, it was worthwhile.