Changes between Version 6 and Version 7 of path:pathBrowser


Ignore:
Timestamp:
12/17/2013 03:10:40 PM (10 years ago)
Author:
michael.perscheid
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • path:pathBrowser

    v6 v7  
    88== Description ==
    99
     10After analyzing the system with our [wiki:path:pathMap PathMap], we offer developers access to the derived information with our extended source code browser called !PathBrowser.
     11We enhance the standard browser with mainly five new features.
    1012
    11 Figure 6.5 shows our two extensions. First, we offer test cases as entry points into behavioral examples of specific methods. We reuse the already collected test coverage data from PathMap and present it in the new pane on the right side. With a click on a corresponding test case, developers can start a symbolic debugger or our PathFinder. Both tools stop their execution at the first call of the selected method and provide insights into its concrete run-time behavior. Thus, developers learn how a method works and so comprehend source code abstractions by debugging into examples. Second, we integrate the hidden test knowledge into source code by presenting invariants and dynamic contracts of our state navigation. If a specific program entity possesses generalized object properties, then a label automatically shows its exploited run-time information while editing source code. For example, we harvested the ByteString class as type for the argument aValue. This information allows developers to understand source code better, especially in dynamically typed languages such as Smalltalk where type information is rather implicit. Furthermore, we extend the browser with our dynamic contracts. There are buttons for displaying the source code of invariants (inv), pre- and post-conditions (pre/post). The Smalltalk code at the bottom shows all the generated assertions from our collected invariants. Developers can also add manual assertions to this source code. In the example of Figure 6.5, we present the pre-condition contract for the method WAResponse»headerAt:put:. The assertion DCContract expectCorrectSpellingOf: aString (line 9) throws a violation in our Seaside typing error and reveals the crucial state anomaly.
     13First, we reuse the already collected [wiki:path:tutorial:tqf test coverage] data from [wiki:path:pathMap PathMap] and present it in a new pane on the right side.
     14With a click on a corresponding test case, developers can start a symbolic debugger or our [wiki:path:pathFinder PathFinder].
     15Both tools stop their execution at the first call of the selected method and provide insights into its concrete run-time behavior.
     16
     17Second, based on the already collected test coverage, developers can also refine coverage data at statements on demand.
     18For that, we re-execute all covering tests, analyze the currently selected method, and present the executed statements by underlining the corresponding source code.
     19
     20Third, with the help of our [wiki:path:tutorial:typeHarvesting type harvesting] approach, we have already gathered type information for instance variables, arguments, and return values from test cases.
     21To support program comprehension during implementation tasks, we present this data with overlays that appear when developers mark a related variable.
     22
     23Fourth, we extend the browser with dynamic contracts from our [wiki:path:tutorial:tdfn test-driven fault navigation].
     24There are buttons for displaying the source code of invariants (inv), pre- and post-conditions (pre/post).
     25Developers can also add manual assertions to this source code.
     26
     27Finally, we offer a button to open a [wiki:path:tutorial:modelbasedEditor model-based source code view] directly from the selected class or method snippet.
    1228
    1329
     
    3147== User Interface ==
    3248
     49new pane link to test cases --> click on test case -> new browser, debugger, or pathfinder
    3350inv/pre/post -- contracts & anzeige im browser fenster
    34 neue pane link to test cases --> click on test case -> new browser, debugger, or pathfinder
    3551new buttons coverage (underlined statements), path views (ref)
    3652overlay for type information (ref to type harvesting)