wiki:GUIRequirements

Version 12 (modified by siegel, 12 years ago) ( diff )

--

GUI Requirements

  • the GUI needs to show a view of the source code
    • the source code will usually consist of multiple files, these should be shown in separate windows or tabs
    • the source view must show line numbers
  • GUI needs to show a view of the AST in a hierarchical way
  • GUI needs to show a view of the CIVL model in a hierarchical way
    • Components of the CIVL model
      • Lexical scope tree
      • Function tree
    • Features
      • Show source code for statements
  • the GUI should provide a (non-interactive) Console view which shows the output produced by CIVL as it executes its functions, similar to what would be seen when using CIVL from the command line
  • the GUI needs to guide the user through all commands which can be executed through the command line
    • verify, run, parse, etc.
    • there should be a file browser for users to choose the .cvl/.c file to run
    • the GUI should guide the user by showing the options available to each command in some way and letting the user select those options in a graphical way (buttons, menus, etc.)
    • the GUI should allow the user to specify by inputs by showing the list of input variables in a table, with one row for each input. The table should show the type of the input variable.
    • for a boolean input variable, the options should be unspecified (always the default), true, or false.
    • for an integer input variable, the options should be unspecified (again, the default), or some concrete integer that can be typed into a field
    • etc.
  • the GUI needs to display the trace and allow the user to interact with the trace if a counterexample is found or if the run command is used
  • when interacting with a trace, at any time, there will be at most one selected execution step (the "active step"). The active step will cause the corresponding parts of the source code view, the AST view, and the model view to be highlighted
  • the GUI needs to display the statistics resulting from execution in formatted way (such as a table)
  • the views of the source code, model, AST, and trace need to all be linked. For example, a location occurring in the trace should be clickable, and clicking it should take you to the location in the CIVL Model. Clicking in some other way should take to the AST, and some other way should take you to the source code.
  • If an error is reported, the GUI needs to
    • display the error message
    • display the error state if possible
    • allow the user to click the source code summary to go the source code
    • if the error is an execution error, then there should be a shortcut for the user to replay the counter example immediately
  • the GUI should interact with CIVL solely through CIVL's Java API (and not, for example, through the command line interface), both when invoking CIVL's functionality and in obtaining CIVL's results, including statistics, traces, and error messages
  • the GUI should display useful information when the mouse pointer "hovers" over certain elements. This is admittedly vague, but let's think of some cool things it can show when hovering.
Note: See TracWiki for help on using the wiki.