Developing the Internet of Things (IoT)
As devices, platforms, and technologies for IoT (Internet-of-Things) and robots, develop, the question of how to best specify the behavior of such systems so that it is both robust and manageable becomes central. Current practices may suffice when working with simple requirements. However, behavior specification given in current languages often become unwieldy as they grow to accommodate complex conditions, exceptions, and priorities. To address this, we propose to use the scenario-based programming approach, and specifically, the graphical language of live sequence charts (LSC). This addresses one aspect of the specification growth issue by allowing a natural break-down of the specification in alignment with the requirements. The other aspect of our solution, aiming at further simplifying and shortening the specification, is based on subjecting these scenarios to context---a key concept in IoT and autonomous robot modeling. Specifically, we propose additions to LSC for subjecting behavioral scenario charts to contexts and a methodology to work with these idioms.
A Scenario Based On-board Software and Testing Environment for Satellites
We propose a novel approach to satellites-software development that allows for modularity and formal verification towards safer and more robust satellite software. Specifically, we propose to use scenario-based programming where software components (modules) represent different aspects of mission scenarios and anti-scenarios (things that must not happen). We present examples of how specifications can be translated into code artifacts that represent them in a direct and intuitive way. We support this approach with a set of tools that we are designing for the development of on-board mission software. The proposed development environment includes an automatic model-checking tool for verifying the produced software and for bug detection. We show that verification can focus on specific parts of the model, on specific logical layers of the applications, and on the entire model at a specific abstraction level. This allows for modular design process, where modules and aspects of the behavior of the software are tested and verified as soon as their code is ready. Additionally, we describe a "hybrid laboratory" for advanced testing of the mission software. On top of the usual components that one may expect to see in such a laboratory, we show how a behavioral-programming component can be added and allow the specification of complex test scenarios that significantly improve the ability to challenge the software under test with complex environment behaviors. Together, we propose a set of tools and show how it can be used to reduce development efforts and to improve the quality, maintainability, and testability of space-missions software.