2 research outputs found

    Software development by abstract behavioural specification

    Get PDF
    The development process of any software has become extremely important not just in the IT industry, but in almost every business or domain of research. The effort in making this process quick, efficient, reliable and automated has constantly evolved into a flow that delivers software incrementally based on both the developer's best skills and the end user's feedback. Software modeling and modeling languages have the purpose of facilitating product development by designing correct and reliable applications. The concurrency model of the Abstract Behavioural Specification (ABS) Language with features for asynchronous programming and cooperative scheduling is an important example of how modeling contributes to the reliability and robustness of a product. By abstracting from the implementation details, program complexity and inner workings of libraries, software modeling, and specifically ABS, allow for an easier use of formal analysis techniques and proofs to support product design. However there is still a gap that exists between modeling languages and programming languages with the process of software development often going on two separate paths with respect to modeling and implementation. This potentially introduces errors and doubles the development effort. \par The overall objective of this research is bridging the gap between modeling and programming in order to provide a smooth integration between formal methods and two of the most well-known and used languages for software development, the Java and Scala languages. The research focuses mainly on sequential and highly parallelizable applications, but part of the research also involves some theoretical proposals for distributed systems. It is a first step towards having a programming language with support for formal models. Algorithms and the Foundations of Software technolog

    Actors with coroutine support in Java

    Get PDF
    In this paper, we introduce a Java library for actors integrated seamlessly with futures and supporting coroutines. Coroutines allow actors to suspend the execution of a message and possibly schedule other messages before resuming the suspended continuation. As such coroutines enhance actors as a major building block for constructing software components. The library is used together with a compiler to generate code from an application model into an executable program in Java. A formal description of the translation process is provided together with the most important library methods. We highlight the importance of having a scalable and efficient implementation by means of some typical benchmarks which model a large number of tasks, coroutines and actors
    corecore