--%>

Scalability aspects of a Java PathFinder

Scalability of program model checkers such as JPF encompasses two aspects:

  • How large a program can be model checked, and
  • Once a defect has been detected, how readily meaningful debugging information can be derived from trace.

How large a program JPF can model check is highly dependent on the structure and amount of nondeterminism in the application. For example, UI applications or certain Web applications which have a central control loop (i.e., reactive state machines) that reacts to user input or signals from the environment are amenable to model checking. We have applied JPF successfully to multithreaded Mars Rover software which was around ten thousand lines of code (10 KLOC.) We have also applied JPF successfully to multithreaded UI programs with 33 KLOC of application source plus many more lines of code in the libraries. At this point, the largest program checked by JPF is a commercial Web application of several hundred thousand lines of code, in which JPF found a deadlock involving about 20 threads; JPF executed more than 200 million byte code instructions of the target application in about 4 hours. 

The second aspect of scalability is the ability to derive meaningful debugging information from an execution trace that manifests a defect. This sense of scalability can represent a severe limitation if the defect occurs long into the program execution. JPF provides limited capabilities here—for example, JPF’s DeadlockAnalyzer and ChoiceTracker, which are used in user interface applications to generate trace reports showing only user-input events. They are used also in analyzing Unified Modeling Language (UML) to limit trace reports to showing only state-machine environment events.

   Related Questions in Programming Languages

  • Q : Define the Binding of Instructions and

    Define the Binding of Instructions and Data to Memory?

  • Q : Define Thread Thread : It is a

    Thread: It is a lightweight procedure which is managed by the Java Virtual Machine (abbreviated as JVM). Support for threads is given by the Thread class in java.lang package.

  • Q : State the term URN State the term URN?

    State the term URN?

  • Q : Define Package Package : The named

    Package: The named grouping of classes and interfaces which gives a package namespace. Classes, interfaces and class members devoid of an explicit public, protected or private access modifier {access!modifier} encompass package visibility. The public

  • Q : How XML web services integrate two

    How can XML web services integrate two legacy distributed systems, one based on Corba and one based on Java RMI?

  • Q : Define Encapsulation Encapsulation :

    Encapsulation: Safeguarding the state of objects by stating its attributes as private and channeling entrance to them via accessor and mutator techniques.

  • Q : Explain Redundant value Redundant value

    Redundant value: The value of a data type which has no use or meaning in a particular context. For example, negative values would be redundant a class employing integer attributes to the model assignment marks. In several applications, redundant patte

  • Q : Define Parallel programming Parallel

    Parallel programming or parrelel computing is the concurrent use of multiple compute resources to resolve a specified problem. Parallel program always comprises of concurrently executing processes, problem decomposition relates to the manner in which

  • Q : Define difference between write through

    Define the difference between write through and write back cache?

  • Q : Define the term Sibling sub classes

    Define the term Sibling sub classes: Classes which have similar immediate super-class.