Software evolution is made difficult by the need to integrate new features with all previously implemented features in the system. We present Spotlight, a prototype editor for software plans that seeks to address this problem by providing the programmer a principled way to separately develop and incrementally integrate independent features.
This paper presents an improved and generalized version of intermediate language called the failure automaton (FA). By utilizing a common formal semantic domain such as the FA, languages have a precise meaning, the cost of developing and implementing languages is reduced, advances can be more easily shared among languages, and understanding the differences between languages is easier. This new approach to the definition and implementation of reliability modeling languages helps find ambiguity, reduces implementation effort, and allows sharing of language features.
Even in well-designed software, some concerns can not be easily encapsulated due to their dependence on surrounding context. Such concerns are intermingled with each other and the context code, making it difficult for developers to reason independently about them. We have introduced software plans as an editor-based approach for addressing the tangling of context-dependent concerns. Software plans provide programmers with partial views of the overall software which present only that code related to concerns of current interest. The problem we address is that the traditional sequence-of-characters representation for code is poorly suited for software plans. It lacks the ability to accurately model the concerns associated with a code block, the relationships between code blocks, and the notion of multiple independent plans. In this paper, we present a formally-defined code/concern model that supports these capabilities and more. Using this model, we were able to implement a prototype editing tool that supports software plans.
Modeling languages and the software tools which support them are essential to engineering. However, as these languages become more sophisticated, it becomes difficult to assure both the validity of their semantic specifications and the dependability of their program implementations. To ameliorate this problem we propose to develop shared semantic domains and corresponding implementations for families of related modeling languages. The idea is to amortize investments at the intermediate level across multiple language definitions and implementations. To assess the practicality of this approach for modeling languages, we applied it to two languages for reliability modeling and analysis. In earlier work, we developed the intermediate semantic domain of failure automata (FA), which we used to formalize the semantics of dynamic fault trees (DFTs). in this paper, we show that a variant of the original FA can serve as a common semantic domain for both DFTs and reliability block diagrams (RBDs). Our experiences suggest that the use of a common semantic domain and a shared analyzer for expressions at this level can ease the task of formalizing and implementing modeling languages, reducing development costs and improving their dependability.
SUMMARY & CONCLUSIONS The increasing complexity of today's systems has led reli- ability engineering researchers to develop high-level modeling languages with sophisticated modeling capabilities. Today, re- searchers develop high-level languages independently and in a semi-formal manner. As a result, researchers expend redundant effort in language design, and in the implementation and veri- fication of the language in the form of analysis tools. The re- sulting languages have imprecise semantics, and are difficult to compare because they have no common semantic basis. In previous work (1) we argued that an intermediate lan- guage can significantly ease the difficulty of formalizing and implementing reliability languages. We showed that a formally- defined intermediate language can provide a mathematically precise abstraction upon which one can define new high-level modeling languages. In this paper, we present an improved and generalized version of our intermediate language which we call the failure automaton (FA). By utilizing a common formal se- mantic domain such as the FA, languages have a precise mean- ing, the cost of developing and implementing languages is re- duced, advances can be more easily shared among languages, and understanding the differences between languages is easier. To test the generality of the FA, we used it to define and implement the semantics of three dependability modeling lan- guages. Our new approach to the definition and implementation of reliability modeling languages helps find ambiguity, reduces implementation effort, and allows sharing of language features.