Final Report Summary - LIBPR (Liberating Programming)
We have substantially advanced the state of the art in programming and software engineering, exhibiting the feasibility of a dream which in 2008 we termed “Liberating Programming”. We have shown that software engineering can be made a lot more natural and come closer to the way humans train and instruct other humans. We have managed to lay the foundations for new ways to develop and verify software for reactive systems of many kinds, including real-time and embedded software, aerospace systems, medical instrumentation, autonomous robots and models of biology. We have shown that systems can be composed from relatively independent scenarios, aligned with how human stakeholders describe system behavior, say, in a requirements document. We have developed this in many languages: visual ones, natural human language, and standard programming languages like Java and C++. We have created algorithms, methodologies and tools for the programming itself, for testing and for formally verifying such systems, and we have developed a thorough theoretical foundation for the entire body of work. We have explored issues in the learning, adoption and teaching of these scenario-based programming concepts, as well as the role of these concepts in teaching other computer science topics. Besides scenario-based programming, we have also begun using a more general term to denote the programming paradigm that underlies our approach: behavioral programming (BP). We have also modeled biological systems, using the PI’s visual language of statecharts, and the technique of reactive animation, illustrating the thesis that natural systems can be reverse-engineered using intuitive and “liberated” software engineering approaches, which even non-programmers can use relatively easily.