We present a technique for learning explainable timed automata from passive observations of a black-box function, such as an artificial intelligence system. Our method accepts a single, long, timed word with mixed input and output actions and learns a Mealy machine with one timer. The primary advantage of our approach is that it constructs a symbolic observation tree from a concrete timed word. This symbolic tree is then transformed into a human comprehensible automaton. We provide a prototype implementation and evaluate it by learning the controllers of two systems: a brick-sorter conveyor belt trained with reinforcement learning and a real-world derived smart traffic light controller. We compare different model generators using our symbolic observation tree as their input and achieve the best results using k-tails. In our experiments, we learn smaller and simpler automata than existing passive timed learners while maintaining accuracy.
In teaching and training the next generation of software engineers, programming labs with students working together in small groups provide the opportunity to obtain hands-on experience for software projects involving multiple developers. However, more than other types of courses, programming labs face some challenges in providing a similar learning outcome for all students. Based on feedback and own experience from various iterations of the programming lab at TU Dortmund University, we identified that the learning experience varies significantly due to heterogeneous prior knowledge, experience levels, and personality traits of both students and tutors.
In teaching and training the next generation of software engineers, programming labs with students working together in small groups provide the opportunity to obtain hands-on experience for software projects involving multiple developers. However, more than other types of courses, programming labs face some challenges in providing a similar learning outcome for all students. Based on feedback and own experience from various iterations of the programming lab at TU Dortmund University, we identified that the learning experience varies significantly due to heterogeneous prior knowledge, experience levels, and personality traits of both students and tutors. In this experience report, we present our approach towards aligning the learning experience by applying three different didactic improvements based on well-studied concepts: (1) the idea of workedout examples is transferred to teaching the software development process by providing a small software application with all corresponding artefacts like diagrams, program code and documentation, focusing on their relationships and development activities. (2) Goal-oriented and structured learning is used to define learning outcomes for every group meeting as a common ground, while audience response systems are utilized to motivate the attendance and allow students to self-reflect on their knowledge and competence level. (3) We harmonize the role of tutors by holding dedicated teaching workshops for tutors' responsibilities in the programming lab. The different approaches are evaluated based on surveys for students and tutors over three iterations of the programming lab at TU Dortmund University. Both sides' positive responses and feedback resulted in an enumeration of lessons learned as recommendations and support for other similar courses.
The fourth industrial revolution is driven by Software-enabled automation. To fully realize the potential of this digital transformation in a way that is beneficial to society, automation needs to become programmable by domain experts—the vision being a Software-assisted increase in productivity instead of replacing workers with Software. While domain experts, e.g., workers in production, typically have extensive experience with processes and workflows involving cyber-physical systems, e.g., production machines, they have little to no knowledge of programming and formal logic. In this paper, we present a framework for expressing executable rules in the context of a cyber-physical system at the conceptual level, akin to human reasoning, in almost natural sentences (e.g., if a person is within 1 m of the machine then the light will turn red). These requirements are automatically transformed by our framework into formal logic and can be executed and evaluated by a rule engine without additional input by domain experts. The framework is designed in a modular way that enables domain engineering, i.e., the development of new languages for individual application domains, with minimal effort. Only domain-specific entities and predicates (e.g., is within) need to be defined and implemented for a new domain. We demonstrate our framework in a logistics scenario on a shop floor that requires human-machine collaboration.
Autonomous vehicles will share the road with human drivers within the next couple of years. One of the big open challenges is the lack of established and cost-efficient approaches for assuring the safety of Advanced Driver Assistance Systems and autonomous driving. Product liability regulations impose high standards on manufacturers regarding the safe operation of such systems. Today’s conventional engineering methods are not adequate for providing such guarantees in a cost-efficient way. One strategy for reducing the cost of quality assurance is transferring a significant part of the testing effort from road tests to (system-level) simulations. It is not clear, however, how results obtained from simulations transfer to the road. In this paper, we present a method for ensuring that an Advanced Driver Assistance System satisfies its safety requirements at runtime and operates within safe limits that were tested in simulations. Our approach utilizes runtime monitors that are generated from safety requirements and trained using simulated test cases. We evaluate our approach using an industrial prototype of a lane change assistant and data recorded in road tests on German highways.
Autonomous vehicles will share the road with human drivers within the next couple of years. One of the big open challenges is the lack of established and cost-efficient approaches for assuring the safety of Advanced Driver Assistance Systems and autonomous driving. Product liability regulations impose high standards on manufacturers regarding the safe operation of such systems. Today's conventional engineering methods are not adequate for providing such guarantees in a cost-efficient way. One strategy for reducing the cost of quality assurance is transferring a significant part of the testing effort from road tests to (system-level) simulations. It is not clear, however, how results obtained from simulations transfer to the road. In this paper, we present a method for ensuring that an Advanced Driver Assistance System satisfies its safety requirements at runtime and operates within safe limits that were tested in simulations. Our approach utilizes runtime monitors that are generated from safety requirements and trained using simulated test cases. We evaluate our approach using an industrial prototype of a lane change assistant and data recorded in road tests on German highways.
Advanced driver assistance systems and (semi-)autonomous mobility systems will arguably be the biggest disruption of our everyday life in the next couple of years. The development of such systems comes with legal and technical challenges: Product liability regulations impose high standards on manufacturers regarding the safe operation of advanced driver assistance systems (ADAS). In the Automotive domain, sufficient safety has yet to be proven through extensive and expensive testing. As a consequence, car manufacturers try to move testing effort from the road to simulation. It is not clear, however, how results obtained from simulations transfer to the road. In this paper, we present an approach for leveraging simulation results during road tests. Our approach utilizes runtime monitors that are generated from specifications, test scenarios, and simulated components. These monitors can be used during road tests and during operation for identifying untested situations and for checking functional correctness of an ADAS.
Automotive software systems are an essential and innovative part of nowadays connected and automated vehicles. Automotive industry is currently facing the challenge to re-invent the automobile. Consequently, automotive software systems, their software systems architecture, and the way we engineer those kinds of software systems are confronted with major challenges: managing complexity, providing flexibility, and guaranteeing dependability of the desired automotive software systems and the corresponding engineering process. In this paper we will present an improved and sophisticated engineering approach. Our approach is based on the managed and continuous evolution of dependable automotive software systems. It helps engineers to manage system complexity based on continous engineering processes to iteratively evolve automotive software systems and therby guarantee the required dependability issues. Based on a running sample, we will present and illustrate the main assets of the proposed engineering approach for managed and continuous evolution of dependable automotive software systems.