LURCH

LURCH

LURCH is a tool for software design debugging that uses a nondeterministic algorithm to quickly explore the reachable states of a software model. By performing a partial and random search, LURCH looks for faults in the model and reports the pathways leading to the faults.

Explanation

Conventional algorithms

Conventional algorithms for exploring a system's state space are deterministic, in that they have specific decision paths for mapping inputs to outputs. Nondeterministic algorithms, on the other hand, do not have such specific paths, allowing for the same inputs to result in different outputs. Deterministic analysis is often considered safer than nondeterministic methods since it explores all possible system states in an exhaustive and thorough way. Nondeterministic analysis, however, may only explore a subset of the entire state space, and thereby miss some of the possible faults.

Nondeterministic analysis methods

Much evidence supports the notion of clumping (computer science), where the effective state space of a program is relatively small when compared to all reachable states. A tool such as LURCH is especially useful in such situations. However, depending on the problem, if clumping does not occur, the nondeterministic approach may not be very effective. Yet in such situations, LURCH can at least report whether performing a nondeterministic search will be safe or not.

Decisions on using LURCH

Menzies et al. in [1] argue that LURCH is no less safe than conventional deterministic algorithms for software model analysis; that LURCH is simple, competent, fast, scalable, and a "stable" nondeterministic analysis method:

# LURCH is simple: The following is pseudocode for LURCH, which is considerably easier to implement compared to more complex standard model checkers.

function step(Q, state) while Q is not empty // "choose a transition at random" tr := random_pop(Q) // "modify state vector accordingly" execute_outputs(tr, state) // "disqualify transitions ruled out by choice" for tr' in same machine as tr delete(Q, tr') function check(state) local_fault_check(state) deadlock_check(state) // "cycle_check requires hash table" cycle_check(state) function lurch(max_paths, max_depth) repeat max_paths times // "set all machines to initial state" for m in machines state [m] := 0 // "generate a global state path" repeat max_depth times for tr in transitions // "see if transition is blocked" if check_inputs(tr) // "if not, put it in the queue" push(Q, tr) // "get next global state" step(Q, state) // "see if next state represents a fault" check(state)

Advantages

*LURCH is fast: Whereas deterministic analysis tools such as NuSMV may take hours or even days to discover all faults in a design, LURCH locates the vast majority of faults in just a few minutes.
*LURCH is competent: Though LURCH misses faults detected by slower deterministic methods, the speed with which it finds faults makes it nevertheless useful for rapid software development (where time is crucial). However, LURCH can only be effective when systems clump (though many argue that this is a frequent occurrence).
*LURCH is scalable: For larger models, deterministic tools such as SPIN require increasingly larger amounts of resources. LURCH, on the other hand, requires only minimal more memory as problem size increases, suggesting it is not less safe than a deterministic search (where problems may be "too" large for the deterministic tool to handle).
*LURCH is stable: Whereas time and memory requirements for deterministic methods can fluctuate greatly depending on the problem, LURCH has been shown to remain stable regardless of problem size. See [1] for actual measurements.

See also

* Software verification
* Thrash (computer science)

References

* Menzies, Owen, Heimdahl, Gao, Cukic, [http://www.cs.pdx.edu/~timm/lite/readings/randomoka.pdf Nondeterminism: Unsafe?]


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат
Synonyms:

Look at other dictionaries:

  • Lurch — Lurch, n. [OF. lourche name of a game; as adj., deceived, embarrassed.] 1. An old game played with dice and counters; a variety of the game of tables. [1913 Webster] 2. A double score in cribbage for the winner when his adversary has been left in …   The Collaborative International Dictionary of English

  • lurch — lurch1 [lʉrch] vi. [< ?] 1. to roll, pitch, or sway suddenly forward or to one side 2. to stagger n. [earlier lee lurch < ?] a lurching movement; sudden rolling, pitching, etc. lurch2 [lʉrch] vi. [ME lorchen …   English World dictionary

  • Lurch — Lurch, v. t. 1. To leave in the lurch; to cheat. [Obs.] [1913 Webster] Never deceive or lurch the sincere communicant. South. [1913 Webster] 2. To steal; to rob. [Obs.] [1913 Webster] And in the brunt of seventeen battles since He lurched all… …   The Collaborative International Dictionary of English

  • Lurch — steht für folgende Begriffe: im Allgemeinen als deutsches Wort für Amphibien im österreichischen Sprachgebrauch als ebenso standarddeutsches Wort für zusammengeballten Hausstaub, siehe Lurch (Staub) Siehe auch:  Wiktionary: Lurch –… …   Deutsch Wikipedia

  • Lurch — Lurch, v. i. [A variant of lurk.] 1. To withdraw to one side, or to a private place; to lurk. L Estrange. [1913 Webster] 2. To dodge; to shift; to play tricks. [1913 Webster] I . . . am fain to shuffle, to hedge, and to lurch. Shak. [1913… …   The Collaborative International Dictionary of English

  • Lurch — Lurch, n. [Cf. W. llerch, llerc, a frisk, a frisking backward or forward, a loitering, a lurking, a lurking, llercian, llerciaw, to be idle, to frisk; or perh. fr. E. lurch to lurk.] A sudden roll of a ship to one side, as in heavy weather; hence …   The Collaborative International Dictionary of English

  • lurch — lurch·er; lurch·ing·ly; lurch; …   English syllables

  • lurch — Ⅰ. lurch [1] ► NOUN ▪ a sudden unsteady movement. ► VERB ▪ make such a movement; stagger. ORIGIN of unknown origin. Ⅱ. lurch [2] ► NOUN (in phrase …   English terms dictionary

  • Lurch — Lurch, v. i. [L. lurcare, lurcari.] To swallow or eat greedily; to devour; hence, to swallow up. [Obs.] [1913 Webster] Too far off from great cities, which may hinder business; too near them, which lurcheth all provisions, and maketh everything… …   The Collaborative International Dictionary of English

  • Lurch — (l[^u]rch), v. i. [imp. & p. p. {Lurched} (l[^u]rcht); p. pr. & vb. n. {Lurching}.] To roll or sway suddenly to one side, as a ship or a drunken man; to move forward while lurching. [1913 Webster +PJC] …   The Collaborative International Dictionary of English

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”