Towards Model-Driven Engineering of Reliable Systems: Developing Fault-Tolerant Systems using Scalable Verification
MetadataShow full item record
As many of us already depend on computer systems to lead our lives to a standard we find acceptable, we put a correspondingly strong emphasis on ensuring that these systems are indeed dependable. Of the various attributes that make up the system dependability, this work focuses on reliability, the ability of a system to provide continuous service. One of the main barriers to increasing the reliability of a system is that it requires special competences that most developers do not possess. Hence, many developers are faced with either spending resources on additional training or hiring external experts, who may know little of the system in question and its problem domain. As a result, increasing the reliability of a computer system can increase the acquisition cost so much that the system is built without a cost-eective level of reliability, when considering costs over its total life span. Another barrier is that a naive introduction of fault-tolerance mechanisms may actually worsen the reliability of a system. Introducing fault-tolerance mechanisms is sure to add to the complexity of the system. This added complexity, if not properly managed, is likely to result in a system with more faults, possibly contributing to a net decrease in the system reliability. Due to such barriers, computer systems often fail to meet our expectations in terms of reliability, and we as a society frequently pay a higher than necessary price when suering the consequences of system failures. This motivates our decision to work towards the goal of reducing the development effort and competence required to create reliable distributed reactve systems. Model-driven software engineering aids developers in breaking down complex systems by abstracting away from the implementation details and often provides viewpoints capturing one concern at a time. We therefore build on the existing model-driven engineering method SPACE. The abstractions provided by model-driven engineering also facilitate automated model checking to detect software faults. We take advantage of this to provide highly automated fault-removal features. Even a system completely free from software faults will be aected by external faults, such as power failures and the breakdown of hardware components, if the system is not designed to tolerate them. We therefore focus on adding fault-tolerance mechanisms to systems, so that they can be relied upon also in a less than ideal operational environment. To easily ensure such mechanisms are correctly built and integrated, we again look to model checking. Going into more detail, the first contribution described is an automatic transformation of SPACE models into a formal system specification along with properties to be verified, complete with visualization of erroneous behaviour and, in some cases, automatic diagnoses and fixes. Further, the work herein contributes new capabilities to build services tolerating message losses or process crashes, as well as a two-phase development method allowing developers to start with a simpler system and deal with the full complexity of fault tolerance afterwards. Finally, we introduce additional concepts for interface contracts allowing to compositionally verify properties of fault-tolerant services, even if internally replicated across several components.
Has partsSlåtten, Vidar; Herrmann, Peter; Kraemer, Frank Alexander. Model-Driven Engineering of Reliable Fault-Tolerant Systems-A State-of-the-Art Survey. Advances in Computers. (ISSN 0065-2458). 91: 119-205, 2013. 10.1016/B978-0-12-408089-8.00004-5.
Kraemer, Frank Alexander; Slåtten, Vidar; Herrmann, Peter. ENGINEERING SUPPORT FOR UML ACTIVITIES BY AUTOMATED MODEL-CHECKING | AN EXAMPLE. Proceedings of the 4th International Workshop on Rapid Integration of Software Engineering Techniques (RISE 2007): 51-66, 2007.
Kraemer, Frank Alexander; Slåtten, Vidar; Herrmann, Peter. Tool support for the rapid composition, analysis and implementation of reactive services. Journal of Systems and Software. (ISSN 0164-1212). 82(12): 2068-2080, 2009. 10.1016/j.jss.2009.06.057.
Kraemer, Frank Alexander; Slåtten, Vidar; Herrmann, Peter Michael. Model-Driven Construction of Embedded Applications based on Reusable Building Blocks - An Example. Lecture Notes in Computer Science. (ISSN 0302-9743). 5719: 1-18, 2009. 10.1007/978-3-642-04554-7_1.
Slåtten, Vidar; Kraemer, Frank Alexander; Herrmann, Peter Michael. Towards a Model-Driven Method for Reliable Applications. International Workshop on Software Engineering for Resilient Systems (SERENE 2010): 2-11, 2010. 10.1145/2401736.2401737.
Slåtten, Vidar; Herrmann, Peter Michael. Contracts for Multi-instance UML Activities. Lecture Notes in Computer Science. (ISSN 0302-9743). 6722: 304-318, 2011. 10.1007/978-3-642-21461-5_20.
Slåtten, Vidar; Kraemer, Frank Alexander; Herrmann, Peter Michael. Towards Automatic Generation of Formal Specifications to Validate and Verify Reliable Distributed Systems. Proceedings of the 10th ACM international conference on Generative programming and component engineering: 147-156, 2011. 10.1145/2047862.2047888.