17 July 2018 Talk Prof. Zoran Salcic, University of Auckland, NZ

Prof. Salcic giving a talk

On 17 July, Prof. Zoran Salcic, University of Auckland, New Zealand, gave his talk “Designing Static and Dynamic Software Systems – A SystemJ Perspective” as part of the InvasIC Seminars at the Chair of Hardware-Software-Co-Design. During July, he does research at our chair as part of a long-standing fruitful research cooperation with Prof. Teich. His stay is supported by the Visiting Professorship Programme of FAU.

Abstract: Embedded and cyber-physical systems involve hardware and software design and are becoming increasingly software-centric. Traditional programming languages such as C/C++ and Java have been used as the primary languages in designing these systems, where programming has been typically extended with run-time concepts that allow designers to employ concurrency (e.g. by using real-time operating systems or other types of run-time support). This led to plethora of techniques to structure and run those systems and satisfy various functional and other requirements. However, structuring of software underpinned by formal, mathematical models, remained on a side-track.
In this talk we are going to present an approach to software systems design underpinned with a formal model of computation (MoC), in our case Globally Asynchronous Locally Synchronous (GALS), which naturally models huge number of embedded and cyber-physical systems, as well as emerging software systems that execute on distributed (networked) platforms. Based on GALS MoC as the central theme, we developed a system-level programming language SystemJ that allows designers to design concurrent GALS software systems in a seamless way. Moreover, the approach still preserves benefits of using a standard programming language, Java in SystemJ case. Originally aimed at the design of static concurrent programs/systems, the approach has been extended in two major directions, (1) (hard) real-time systems when time-predictable execution platforms are used and (2) dynamic, reconfigurable software systems, where the number of concurrent software behaviours varies over time of system operation.