Engineering topics
Joshi, Rajeev
Publications and source records attributed to Joshi, Rajeev.
Modeling with Scala
The activities and the associated formalisms for modeling and programming have many commonalities. In this paper we emphasize this point of view by modeling two examples in the programming language Scala, which have previously been modeled in the VDM specification language, and the Promela modeling language of the SPIN model checker respectively. The latter Scala model uses an internal DSL for hierarchical state machines, and a simple randomized testing framework exposing the same errors as found with SPIN. We believe, as the examples illustrate, that this use of a modern programming language for modeling is promising, especially if utilizing internal DSLs.
Autonomous Science Restart for the Planned Europa Mission with Lightweight Planning and Execution
In this paper we present MEXEC - a lightweight on-board planning and execution system that monitors spacecraft state to robustly respond to current conditions. In addition it projects the remaining plan forward in time to detect conflicts and revise the plan. Most current planetary missions use sequence based commanding from the ground,which limits the ability to respond to on-board state varying from planned for state. This results in planning for worst-case execution time, power utilization, data volume and other resources and leads to under utilization of the spacecraft capability. It also limits the ability to respond to faults. Due to the high radiation environment at Jupiter the probability of flight software resets is high. Therefore, of particular interest to the planned Europa Mission is the capability to restart the science plan after flight software resets. In this paper we present results from running Europa flyby scenarios with flight software resets in the Europa flight software test environment. Preliminary results with the prototype scenario show MEXEC takes less than a tenth of a second to respond to resets. The development was done as part of Europa-focused flight software, but MEXEC was designed to be applicable to landers and rovers as well.
Talking Points on Reducing Software Vulnerabilities: Formal Methods
No abstract available
Comprehension of Spacecraft Telemetry Using Hierarchical Specifications of Behavior
A key challenge in operating remote spacecraft is that ground operators must rely on the limited visibility available through spacecraft telemetry in order to assess spacecraft health and operational status. We describe a tool for processing spacecraft telemetry that allows ground operators to impose structure on received telemetry in order to achieve a better comprehension of system state. A key element of our approach is the design of a domain-specific language that allows operators to express models of expected system behavior using partial specifications. The language allows behavior specifications with data fields, similar to other recent runtime verification systems. What is notable about our approach is the ability to develop hierarchical specifications of behavior. The language is implemented as an internal DSL in the Scala programming language that synthesizes rules from patterns of specification behavior. The rules are automatically applied to received telemetry and the inferred behaviors are available to ground operators using a visualization interface that makes it easier to understand and track spacecraft state. We describe initial results from applying our tool to telemetry received from the Curiosity rover currently roving the surface of Mars, where the visualizations are being used to trend subsystem behaviors, in order to identify potential problems before they happen. However, the technology is completely general and can be applied to any system that generates telemetry such as event logs.
Swarm Verification
Reportedly, supercomputer designer Seymour Cray once said that he would sooner use two strong oxen to plow a field than a thousand chickens. Although this is undoubtedly wise when it comes to plowing a field, it is not so clear for other types of tasks. Model checking problems are of the proverbial "search the needle in a haystack" type. Such problems can often be parallelized easily. Alas, none of the usual divide and conquer methods can be used to parallelize the working of a model checker. Given that it has become easier than ever to gain access to large numbers of computers to perform even routine tasks it is becoming more and more attractive to find alternate ways to use these resources to speed up model checking tasks. This paper describes one such method, called swarm verification.
Random Testing and Model Checking: Building a Common Framework for Nondeterministic Exploration
Two popular forms of dynamic analysis, random testing and explicit-state software model checking, are perhaps best viewed as search strategies for exploring the state spaces introduced by nondeterminism in program inputs. We present an approach that enables this nondeterminism to be expressed in the SPIN model checker's PROMELA language, and then lets users generate either model checkers or random testers from a single harness for a tested C program. Our approach makes it easy to compare model checking and random testing for models with precisely the same input ranges and probabilities and allows us to mix random testing with model checking's exhaustive exploration of non-determinism. The PROMELA language, as intended in its design, serves as a convenient notation for expressing nondeterminism and mixing random choices with nondeterministic choices. We present and discuss a comparison of random testing and model checking. The results derive from using our framework to test a C program with an effectively infinite state space, a module in JPL's next Mars rover mission. More generally, we show how the ability of the SPIN model checker to call C code can be used to extend SPIN's features, and hope to inspire others to use the same methods to implement dynamic analyses that can make use of efficient state storage, matching, and backtracking.
New Challenges in Model Checking
In the last 25 years, the notion of performing software verification with logic model checking techniques has evolved from intellectual curiosity to accepted technology with significant potential for broad practical application. In this paper we look back at the main steps in this evolution and illustrate how the challenges have changed over the years, as we sharpened our theories and tools. Next we discuss a typical challenge in software verification that we face today - and that perhaps we can look back on in another 25 years as having inspired the next logical step towards a broader integration of model checking into the software development process.
Reliable software systems design: defect prevention, detection, and containment
Explore the source record for details and available documents.
Model-driven software verification
In this paper we explore a different approach to software verification. With this approach, a software application can be included, without substantial change, into a verification test-harness and then verified directly, while presearving the ability to apply data abstraction techniques. Only the test-harness is written in the language of the model checker.