Other Definitions
lurch (dict)

Lurch

LURCH is a software design debugging tool 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. 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. Much evidence supports the notion of clumping, 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.

To LURCH Or Not To LURCH

Menzies et al. in 1 argue that LURCH is not less safe than conventional deterministic algorithms for software model analysis; that LURCH is simple, competent, fast, scalable, and a stable nondeterministic analysis method:
1. LURCH is simple: The following is pseudocode for LURCH, which is considerably easier to implement compared to more complex standard model checkers:
 
step(Q, state) {
     while(Q not empty)         /* choose a transition at random */         tr := randome_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') } 
check(state) {
     local_fault_check(state)     deadlock_check(state)     /* cycle_check requires hash table */     cycle_check(state) } 
main(max_paths, max_depth) {
     for(i in max_paths)         /* set all machines to initial state */         for(m in machines)             statem := 0         /* generate a global state path */         for(d in max_depth)             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) 
1
2. LURCH is fast: Wherease 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.
3. 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).
4. 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).
5. 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

External References

1 Menzies, Owen, Heimdahl, Gao, Cukic, Nondeterminism: Unsafe?

 

<< PreviousWord BrowserNext >>
eisbrecher
loeb classical library
anna lee
pentane
robert sweet
concordia college, moorhead
transylvania (disambiguation)
nathaniel eaton
human rights in pre saddam iraq
scott diddams
endotracheal tube
laryngeal mask airway
pathping
r. stephen berry
digital character
iso 3166 2:so
cornwall county, province of new york
clumping (biology)
zubenelgenubi
charles bathurst, 1st viscount bledisloe
sallie cone communications school
atlas (star)
adelaide oval
logocentrism
batfink
mordehai milgrom
ian macfarlane
david florida laboratory
cumberland county, new york
gloucester county, new york
milan papyrus
new zealand postal addresses
abayudaya
days of war, nights of love
art rooney
special task force
saint quentin
maawg
list of english words of hawaiian origin
yasns
macintosh performa
fairchild pt 19
tickell's blue flycatcher
bruce mcnall