Apparatus and methods for analyzing software systems6118447Abstract A system and method for mode error troubleshooting including software system structure generation including prompting a developer to define a first plurality of tasks to be performed by a software system, to define a second plurality of modes in which the software system is to operate and to define for at least one task, at least one inappropriate mode in which the task cannot be performed and troubleshooting including prompting an end user to select a target task, searching for inappropriate modes in which the target task cannot be performed and providing an alert indicating when the end user is in one of the inappropriate modes. Claims What is claimed is: Description FIELD OF THE INVENTION
______________________________________
From form
To form Component Id Component Text
______________________________________
FIG. 2 FIG. 3 button: bbYourProduct
label: Your Product
FIG. 2 FIG. 4 button: bbProcess
label: Process
FIG. 2 FIG. 5 button: bbDiaBox
label: Dialog Box
FIG. 2 FIG. 6 button: bbMenuBar
label: Menu Bar
FIG. 2 FIG. 7 button: bbMenuItem
label: Menu Item
FIG. 2 FIG. 8 button: bbPopup label: Popup Menu
FIG. 2 FIG. 9 button: bbButton
label: Button
FIG. 2 FIG. 10 button: bbSpeed label: Toolbar
FIG. 2 FIG. 11 button: bbMoreControls
label: More . . .
FIG. 2 Quit button: bbOK label: OK
______________________________________
wherein FIGS. 2-11 describe the following Pascal unit files and Delphi forms:
______________________________________
FIG. Pascal Unit file (*.pas)
Delphi Form
______________________________________
2 Resource ResourceForm
3 SelectProduct SelectProductForm
4 Process ProcessForm
5 Diabox DiaboxForm
6 MenuBar MenuBarForm
7 MenuItem MenuItemForm
8 Popup PopupForm
9 Button ButtonForm
10 Toolbar ToolbarForm
11 MoreControls MoreControlsForm
______________________________________
The Delphi form transitions, in the present example, within unit 30 are now described:
__________________________________________________________________________
From form
To form
Component Id
Component Text
__________________________________________________________________________
FIG. 12
FIG. 3
button: BitBtn1
label: Product
FIG. 12
FIG. 13
button: bbSpecify
label: Interface
FIG. 13
FIG. 14
button: bbProcesses
label: Processes
FIG. 13
FIG. 15
button: bbTriggers
label: Triggers
FIG. 13
FIG. 16
button: bbTask
label: Tasks
FIG. 16
FIG. 17
button: bbSetSubTasks
label: Specify Subtasks
FIG. 17
FIG. 18
button: bbSetGoals
label: Specify Goals
FIG. 18
FIG. 19
button: bbSetMethods
label: Specify Methods
FIG. 19
FIG. 20
button: bbSetSteps
label: Specify Procedure
FIG. 20
FIG. 21
button: bbSetNewTrigger
location: next to Standard option
FIG. 20
FIG. 22
button: bbGetOldTrigger
location: below Operation group
FIG. 22
FIG. 15
button: bbChange
label: Change
FIG. 12
FIG. 23
button: BitBtn2
label: Intervention
FIG. 23
FIG. 32
field: DBEdit1
label: Hot Key
FIG. 23
FIG. 32
field: DBEdit2
label: Bypass
FIG. 12
FIG. 24
button: bbEvaluate
label: Integrity
FIG. 24
FIG. 25
button: bbSubTasks
label: Subtasks with no Goals
FIG. 24
FIG. 26
button: bbGoals
label: Goals with no Methods
FIG. 24
FIG. 27
button: bbMethods
label: Methods with no Steps
FIG. 24
FIG. 28
button: bbSteps
label: Steps without Operations
FIG. 24
FIG. 29
button: bbOperations
label: Missing Triggers
FIG. 24
FIG. 30
button: bbFeatures
label: Redundant Triggers
FIG. 24
FIG. 31
button: bbStandards
label: From Trigger to Task
FIG. 12
Quit button: bbOK
label: OK
__________________________________________________________________________
wherein FIGS. 12-32 describe the following Pascal unit files and Delphi forms:
______________________________________
FIG. Pascal Unit file (*.pas)
Delphi Form
______________________________________
12 BetaSpecMain BetaSpecMainForm
13 Interface InterfaceForm
14 Process ProcessForm
15 FindTrigger FindTriggerForm
16 MainTask MainTaskForm
23 InterventionControl
InterventionForm
32 GetShortcutKey GetShortcutKeyForm
24 Integrity IntegrityForm
25 NulSubT NulSubTaskForm
26 NulGoal NulGoalForm
27 NulMethod NulMethodForm
28 NulStep NulStepForm
29 NulOperation NulOperationForm
30 MissingTask MissingTaskForm
31 TriggerToTask TriggerToTaskForm
32 GetShortcutKey GetShortcutKeyForm
______________________________________
The Delphi form transitions, in the present example, within unit 32 are now described:
__________________________________________________________________________
From form
To form
Component Id
Component Text
__________________________________________________________________________
FIG. 33
FIG. 3
button: bbSelectProduct
label: Product
FIG. 33
FIG. 23
button: bbControls
label: Intervention Controls
FIG. 33
FIG. 34
button: bbIntervention
label: Default Intervention Policy
FIG. 34
FIG. 32
field: BypassKey
label: Bypass
FIG. 33
FIG. 35
button: bbDetails
label: Users
FIG. 33
FIG. 36
button: bbStatus
label: Status
FIG. 33
Quit
button: bbOK
label: OK
__________________________________________________________________________
wherein FIGS. 33-36 describe the following Pascal unit files and Delphi forms:
______________________________________
FIG. Pascal Unit file (*.pas)
Delphi Form
______________________________________
33 MainSetup MainSetupForm
23 InterventionControl
InterventionControlForm
34 DefaultIntervention
DefaultInterventionForm
32 GetShortcutKey GetShortcutKeyForm
35 UserProfile UserProfileForm
36 Status StatusForm
______________________________________
The Delphi form transitions, in the present example, within unit 35 are now described:
__________________________________________________________________________
From form
To form
Component Id
Component Text
__________________________________________________________________________
FIG. 37 FIG. 3
button: bbselectProduct
location: upper left corner
FIG. 37 FIG. 38
button: bbUserId
image: person
FIG. 38 FIG. 39
button: bbOK
label: OK
FIG. 37 FIG. 40
button: bbActions
label: Actions
FIG. 37 FIG. 41
button: bbProblems
label: Problems
FIG. 42 FIG. 43
button: bbIgnore
label: Ignore
FIG. 43 FIG. 49
button: bbIntention
label: I intended to do . . .
FIG. 42 FIG. 49
button: bbHelp
label: Guide
FIG. 44,45,46
FIG. 47
button: bbIgnore
label: Ignore
FIG. 47 FIG. 49
button: bbIntention
label: I intended to do . . .
FIG. 44,45,46
FIG. 48
button: bbMore
label: Tips
FIG. 44,45,46
FIG. 49
button: bbHelp
label: Guide
FIG. 49 FIG. 50
button: bbNotFound
label: Report
FIG. 50 FIG. 51
button: bbInform
label: Inform
FIG. 49 FIG. 52
button: bbFound
label: but . . .
FIG. 52 FIG. 50
button: bbNotFound
label: Report
FIG. 52 FIG. 53
button: bbFound
label: but . . .
FIG. 53 FIG. 50
button: bbNotFound
label: Report
FIG. 53 FIG. 54
button: bbFound
label: but . . .
FIG. 54 FIG. 50
button: bbNotFound
label: Report
FIG. 54 FIG. 55
button: bbFound
label: but . . .
FIG. 55 FIG. 50
button: bbNotFound
label: Report
FIG. 55 FIG. 56
button: bbFound
label: but . . .
FIG. 56 FIG. 51
button: bbInform
label: Inform
FIG. 56 FIG. 40
button: bbOK
label: OK
__________________________________________________________________________
wherein in FIGS. 37-56 describe the following Pascal unit files and Delphi forms:
______________________________________
FIG. Pascal Unit file (*.pas)
Delphi Form
______________________________________
37 BetaSpy BetaSpyForm
38 UserDetails UserIdForm
39 CtrlF1 CtrlF1Form
40 Actions ActionForm
41 ProblemReport ProblemForm
42 OnDelay OnDelayForm
43 OnIgnoreDelay OnIgnoreDelayForm
44 OnCancelForm OnCancelForm
45 OnHelp OnHelpForm
46 OnUndo OnUndoForm
47 OnIgnoreCancel OnIgnoreEscapeForm
48 OnBypass BypassForm
49 InquireMainTask InquireTaskForm
50 TaskNotFound TaskNotFoundForm
51 Promise PromiseForm
52 InquireSubTask InquireSubTaskForm
53 InquireGoal InquireGoalForm
54 InquireMethod InquireMethodForm
55 InquireStep InquireStepForm
56 InquireStandard InquireStandardForm
______________________________________
The Delphi form transitions, in the present example, within unit 90 are now described:
__________________________________________________________________________
From form
To form
Component Id
Component Text
__________________________________________________________________________
FIG. 57
FIG. 58
button: bbUsage
label: Component Usage
FIG. 58
FIG. 3
button: bbYourProduct
label: YourProduct
FIG. 58
FIG. 59
button: bbProcess
label: Process
FIG. 58
FIG. 60
button: bbDiabox
label: Dialog Box
FIG. 58
FIG. 61
button: bbMenuBar
label: Menu Bar
FIG. 58
FIG. 62
button: bbMenuItem
label: Menu Item
FIG. 58
FIG. 63
button: bbPopup
label: Popup Menu
FIG. 58
FIG. 64
button: bbButton
label: Button
FIG. 58
FIG. 65
button: bbSpeed
label: Toolbar
FIG. 58
FIG. 66
button: bbMoreControls
label: More . . .
FIG. 57
FIG. 67
button: bbAccess
label: Access Difficulties
FIG. 57
FIG. 68
button: bbConflict
label: Conflicting Components
__________________________________________________________________________
wherein FIGS. 57-68 describe the following Pascal unit files and Delphi forms:
______________________________________
FIG. Pascal Unit file (*.pas)
Delphi Form
______________________________________
57 ProblemSolver SolverForm
58 ComponentUsage ComponentUsageForm
59 ProcessUsage ProcessForm
60 DiaboxUsage DiaboxForm
61 MenuBarUsage MenuBarForm
62 MenuItemUsage MenuItemForm
63 PopupUsage PopupForm
64 ButtonUsage ButtonForm
65 ToolbarUsage ToolbarForm
66 MoreControls MoreControlsForm
67 AccessProblem AccessProblemForm
68 ConflictSummary ConflictForm
______________________________________
Advantages of the first embodiment based on FIGS. 2-68 and on Appendices 1-6, including problems existing in the prior art which are overcome by the first embodiment, preferably include at least some and preferably all of the following: To the End User The end user will able to compare his actual action with the intended one. This will facilitate the acquisition of the required psycho motoric skills End users, such as in beta sites, are often required to report on usability problems. Typically, the reporting procedure is a burden, and end users try to avoid it. Computer guided reporting may be much easier to follow. As a result, the number of reported problems may dramatically increase. To the Help Desk Making the help desk more efficient, by: Automatic problem reporting. User problems are recorded at the user site. The help desk personnel may get these reports automatically, rather than by manual recording of user complains on the phone The database of usability errors will be much larger, because the users will report on many problems they do not report using conventional means The help desk may apply statistics to evaluate the frequency and severity of user problems, in terms of time waste. To System Design Making the system more user friendly, by: Adding wizards: for example, to facilitate the procedure of moving text, the designers can add a wizard that prompts the user to first select the text to be moved, then confirm selection in order to cut it to the clipboard, then mark the new location and finally confirm the new location, in order to paste the text from the clipboard Disable certain keys: for example, disabling the Insert key may prevent the mode error of Overwrite, which is not very useful in Windows style text editing Changing the control of mode transition: for example by changing the toggle control between upper case and lower case from Caps Lock to, say, Ctrl+Caps Lock, the number of unintentional mode changing may dramatically decrease Removing excessive shortcut key combinations: for example, by removing the shortcut key combination Ctrl+Alt+F and Ctrl+Alt+H, which are error prone, the user can avoid confusing situations of getting the wrong dialog box or hiding of the selected text. Definition of a Usability Problem 2 types of usability problems are concerned: Procedural problems: when the user cannot find the sequence of operation required to accomplish a task: for example (Text editing), if the user wishes to move a text block. S/he may fail to know the sequence: Select, Cut to clipboard, Mark new location, Paste from clipboard System response to erroneous operation: for example (Text editing), if the user erroneously pressed the Caps Lock key, the computerized system starts inserting upper case letters instead of lower case letters. The Need for the Invention Currently, only a small portion of the total amount of problems is detected. Currently, the main source of information on usability problems is user reports. Usually, reports based on in-house testing are not reliable, because testers cannot represent the end user properly. To get reliable information on usability problems, the computerized system should be tested by the end users, at the place where they use it. However, reports of end users are not comprehensive, because: Users are not aware of many of the problems: for example, many users are not aware of erroneous depression of the Alt key, since they do not notice the corresponding screen change Even when they are aware of a problem, they are not willing to report on it: Sometimes, for example, if they do not know how to move a text block, they try to solve it themselves, by referring to the user documentation or by asking for help of their colleagues. Some other times, for example, if they hit the Caps Lock key accidentally, they consider it to be their own fault, rather than the design's fault. Partially, Usability labs can help to solve these problems. However: They are very expensive. As a result, those systems that are tested, are only partially tested. The majority of "minor" problems is neglected Some usability problems are very hard to detect manually. For example, in MS Word 6.0, there are several situations of conflicting shortcut key combination. For example, Ctrl+H is used to activate the "Replace" dialog box and the Ctrl+Shift+H is (rarely) used to hide text. When pressing the Ctrl+Shift+H key combination instead of Ctrl+H, the selected text becomes hidden, when the user expects the dialog box "Replace" to appear on screen. Although Microsoft tested Word 7.0 extensively in usability labs and in many beta sites, they did not detect this problem, and did not remove the problematic key combination. The way to overcome these shortcomings is by automation. The conventional means for automation is by the technology of Record/Playback, used in many utilities of software testing, such as WinRunner of Mercury Interactive, Vermont NighTest 2.0 of Vermont Creative Software Inc., QA Partner 2.0.1 of Segue Software Inc., PureVision of Pure Software, Inc., AutoTester 3.1 of AutoTester Inc., CA-Verify of Computer Associates International Inc. However, these utilities do not detect usability problems as those described above: they are intended mainly for regression testing, typically, they do not look for indications of user problems, such as delay in the user response, the user request for Help or the cases when the user regrets his recent action. Also, they do not record the user intention. Thus, if the user has a problem, they do not have the data for analyzing the reason for the user delay. For example, if the user invoked the Help facility to find out how to move text, they have not means to realize that s/he does not know how to move text. The Invention 1. Automatic recording of the user actions, as conventionally implemented for regression testing. 2. Detection of events typical to cases of user problems 3. Inquiring the user for his intention, and recording the user response 4. In case that the user succeeded in following the operational procedure, but was surprised by the system response, inquiring the intended action, and recording it as well. Using this procedure, the invention allows to automatically detect many of the user problems, to help him to solve certain problems and to prompt him to record the data required for the problem analysis. A description of preferred modes of operation of the embodiment based on Appendices 1-6 is now provided: How It Works Detecting and Reporting on a Procedural Problem Detection Suppose the user fails to follow a procedure (such as moving text). In this case the user may do any of the following: Pause the interaction, looking for help from outside, (colleagues, user documentation) Invoke the on-line Help facility Try the components on screen (trial and error) Invoke the apparatus in hope to get useful instructions The apparatus will intervene as follows: In the first case, a screen display as in FIG. 42 will pop up In the second case, a screen display as in FIG. 45 will pop up In the third case, if the trial ended up in error, a screen display as in FIG. 46 will show up, if the user chose to Undo his last action, or a screen display as in FIG. 44 will show up, if the user has chosen to Cancel his last action In the fourth case, the user initiates the interaction with the apparatus, for example, by pressing the Ctrl+F1 key combination. Starting a Reporting Session In the first three cases, different screen displays will show up, allowing the user to get instructions, aimed for reporting but also to help the user to resume normal operation. The user may normally choose to click the Guide button from the screen display that pops up. In this case, he will get a screen display such as that of FIG. 49, prompting him to specify his intention. If the user wishes to skip the reporting procedure, s/he may click the Ignore button. In this case, a screen display as in FIG. 43 will show up. There, s/he will get a second chance to report the problem, if s/he clicks the second option and then the "I intended to do . . . " button that shows up. In this case, he will get a screen display such as that of FIG. 49, prompting him to specify his intention. If s/he chooses to click any of the other options, no reporting will take place, and the user will resume normal operation of the computerized system. In the fourth case, the user will get the screen display as in FIG. 49 immediately Reporting the User Intention Task Reporting Reporting the intention starts with the screen display as in FIG. 49. The user is prompted to specify his intention by selection from the task list. On selection, the second option is activated, and the "but . . . " button shows up. On pressing the "but . . . " button, a screen display as that of FIG. 52 is activated, for specifying the subtask. If the user cannot find the intention in the task list, s/he will normally click the first option. In this case, s/he will be prompted to specify the intended task. Subtask Reporting Reporting the subtask starts with the screen display as in FIG. 52. The user is prompted to specify his subtask by selection from the list. On selection, the second option is activated and the "but . . . " button shows up. On pressing the "but . . . " button, a screen display as that of FIG. 53 is activated, for specifying the user goal. If the user cannot find the subtask in the list, s/he will normally click the first option. In this case, s/he will be prompted to specify the intended subtask. On pressing the Report button, a screen display such as in FIG. 50 will pop up, to specify the information source that should be fixed. On pressing the OK button, the reporting session terminates. Goal Reporting Reporting the goal starts with the screen display as in FIG. 53. The user is prompted to specify his goal by selection from the list. On selection, the second option is activated and the "but . . . " button shows up. On pressing the "but . . . " button, a screen display as that of FIG. 54 is activated, for specifying the intended method. If the user cannot find the goal in the list, s/he will normally click the first option. In this case, s/he will be prompted to specify the intended goal. On pressing the Report button, a screen display such as in FIG. 50 will pop up, to specify the information source that should be fixed. On pressing the OK button, the reporting session terminates. Method Reporting Reporting the method starts with the screen display as in FIG. 54. The user is prompted to specify his intended method by selection from the list. On selection, the second option is activated and the "but . . . " button shows up. On pressing the "but . . . " button, a screen display as that of FIG. 55 is activated, for specifying the desired method. If the user cannot find the method in the list, s/he will normally click the first option. In this case, s/he will be prompted to specify the intended method. On pressing the Report button, as screen display such as in FIG. 50 will pop up, to specify the information source that should be fixed. On pressing the OK button, the reporting session terminates. Step Reporting Reporting the step starts with the screen display as in FIG. 55. The user is prompted specify the step in the operational procedure by selection from the step list. On selection, the second option is activated and the "but . . . " button shows up. On pressing the "but . . . " button, a screen display as that of FIG. 56 is activated, for specifying the intended action. If the user cannot find the step in the list, s/he will normally click the first option. In this case, s/he will be prompted to specify the intended step. On pressing the Report button, a screen display such as in FIG. 50 will pop up, to specify the information source that should be fixed. On pressing the OK button, the reporting session terminates. Detecting and Reporting a Problem of Incompatible System Response to a User Error Detection Suppose the user took the wrong action. If the system is properly designed, it will provide an error message. However, sometimes the erroneous action is legal in terms of the system. Examples: Wrong menu selection Unintentional depression of the Caps Lock, Insert or Alt key (mode errors) Unintentional usage of the wrong key combination, such as Ctrl+Shift+F instead of Ctrl+F or Ctrl+Shift+H instead of Ctrl+H In these cases, the user often thinks that the system response is not compatible to his action. In this case the user may do any of the following: Undo or cancel the last action Pause the interaction, looking for help from outside (colleagues, user documentation) Invoke the on-line Help facility Using conventional reporting means, most likely, the user will not report on these problems. Using the apparatus, report will be initiated by the apparatus, as follows: In the first case, a screen display as in FIG. 46 will show up, if the user chose to Undo his last action, or a screen display as in FIG. 44 will show up, if the user has chosen to Cancel his last action. In the second case, a screen display as in FIG. 42 will pop up In the third case, a screen display as in FIG. 45 will pop up. Starting a Reporting Session As above Reporting the User Intention As above Facilitating the User Recovery Procedure The apparatus optionally informs the user of his actual action. A system, constructed and operative in accordance with a first embodiment of the present invention, for monitoring the usability of a Windows application is now described. The system is termed "ErgoLight" for simplicity. Overview ErgoLight is a family of solutions, that helps the developers of a Windows application to make it efficient and easy to use. Efficiency and ease of use are obtained by providing detailed and statistical information about the usability of the application: How do the users get the features they need When and how do they fail to use the features ErgoLight provides this information, that is not available otherwise, using a knowledge base of human factors. Based on this information, application engineers can monitor usability issues through the whole project life cycle, starting from the demo phase, continuing with the testing and deployment phases, up to the stage of intensive operation. Using ErgoLight, the organization can benefit from: Increase in the user satisfaction Saving much of the expenses due to calls to technical support. The technologies integrated in ErgoLight include: A knowledge base of human factors A knowledge base of style guides and design rules Rule based analysis of error prone procedures Journalling and playback of the user actions On-line analysis of usability problems Statistical computation of the cost-effectiveness of design features On the job learning (knowledge acquisition) and training (skill acquisition) The Usability Issue The usability issue is mainly that of making the proper design decisions. The shortest and easiest way for decision making is to let the programmers to decide, according to their "common sense". When budget and time are short, this might be the best way. It is commonly agreed in the community of Usability engineers that applications designed this way might suffer from many usability problems. The main reason for this is that SW designers and system analysts do not represent the end user properly. While the end users are task oriented, system analysts are feature oriented and SW designers are control oriented. The transition from tasks to features and controls is problematic. Often, SW designers do not anticipate the situations when end users will fail to find a feature they need to accomplish their task This problem turn to be critical for applications aimed for non-technical users. A convenient "solution" to this problem relies on style guides. Style guides define various aspects of the appearance of controls that are common to many applications. Obviously, style guides are not applicable to application specific features. A common approach to designing application specific features is by asking the end user for their preferences. Occasionally, users can provide valuable information concerning the functionality of the application. In testing, they can complain about tasks that they could not accomplish. The main problem with this approach is that end users are not aware of their actual needs. Eventually, their preferences are adequate for the deployment phase, but not for the phase of intensive usage. Typically, end users are not aware of the change expected in their preferences as they become more skilled in intensive operation. As a result, new applications defined with the help of the end users tend to become a burden when the operation is intensive. Another problem with this approach is that end users are not aware of a multitude of failure modes during their interaction with the application. Users errors reduce operational performance by more than 50%, slow down the learning rate and raise the user's frustration and stress level. For example, end users often do not notice psycho motoric errors, such as pressing the wrong key, neither do they follow the sequence of events leading to the failure to accomplish a task. End users are not accustomed to analyze the sensitivity of the application to such errors. Usability Testing During the testing phase, designers look also for usability problems, not detected at the design phase. Traditionally, usability testing is performed by testing teams at the development site. Eventually, the operational skills of a tester in the development site are quite different from those of the end user. The observations of such a tester may often lead to wrong conclusions. In addition, typical testing teams are not aware of usability design rules, and do not have the means to evaluate usability features. Neither can they compare reliably alternative implementations. Alpha-testing (at the development site) may contribute only when the application is for use by persons with technical background. Otherwise, the conclusion from these testing might be wrong. Beta-testing (at the customer site) contribute to finding critical usability problems, such as failure to follow a procedure after a lengthy (several hours) research, or to errors that result in data destruction (only if they can repeat the sequence of events that lead to the data destruction). Typically, end users do not bother to report about the multitude of minor problems, the cumulative effect of which is enormous. The main reason for this is that end users are not aware of most of the errors they make. In many other situations, the user is aware of the failure, but not to the action or the sequence of events that lead to the failure. In case that they are faced with an operational error, they tend to attribute the reason for the mal operation to themselves, rather than to the design. The way large SW companies examine usability issues is through Usability Labs. In those labs, typical users are being observed while they perform their tasks. Eventually, small SW houses may use external usability lab services (e.g. OrCAD Systems; Cadence Design Systems). The problems with this approach are: Observations provide partial data. Data collection in Usability Labs is manual, ending up with having a small portion of the huge bulk of user problems Observations do not provide quantitative measurements of cost-effectiveness The validity of the conclusions depends on the ability to simulate the real operational environment The validity of the interpretations depends on the skills of the observers (typically, usability engineers) Observations are time consuming. Observations are expensive. ErgoLight is the only tool available today, that measures usability data in a real operational environment and that automatically provides valuable and meaningful information on usability issues. Who May Benefit from ErgoLight As a tool for finding bugs, ErgoLight might be considered as an automated testing tool. Actually, ErgoLight appeals to the same market as do the Automated Testing tools, namely, SW houses, system houses, technical consulting companies and corporate IS organizations. However, the information obtained by ErgoLight is totally different; while the "traditional" testing tools are aimed to find implementation deviation from the design, ErgoLight is aimed to find problems in the design itself. ErgoLight can be used as: A testbed in beta sites A means for effective data collection in Usability labs An add-on to Windows applications, to examine problems in setup parameters A system for life cycle examination, from the demo phase to the phase of intensive usage. ErgoLight Technologies ErgoSpec Detection and identification of problems in the specification of the user interface, such as: Insufficient guidance to the application features Redundant complexity, caused by useless features and by multiple accessibility Incompatibility with style guides Conflicting access, resulting in low user performance and in steep learning curve. ErgoSpy Capturing usability problems "on the fly": Capture all keyboard and mouse user actions Support of all Windows controls defined in resource files Capture situations of user confusion Capture situations of wrong operation ErgoTest Journalling and on-line analysis of the users errors: Filter real mistakes from intentional "Trial and Error" procedures Detect failure modes in compound procedures Find out gaps in the Help system, User's manual and Tutorial Detect conflicting shortcut key combinations Detect confusing terminology Reveal the operational sequence resulting in data destruction ErgoGuide Extending the capability of "on the job" learning of the operational procedures, by providing help in one or more of the following ways: Guidance, by presenting material prepared by the application engineer, such as a Help window Awareness, by showing controls available to invoke a task Reassurance, by confirming that a problem is of wrong design, rather than of wrong usage. ErgoTrain On the job acquisition of operational skills, by providing: Tracking, by showing the sequence of events leading to a problematic situation Awareness, by showing the deviation from the procedure ErgoStat Playback and statistical measurement of Time To Recover (TTR) from a user error, classified by failure modes: Problems of incompatibility to style guides Problems typical to naive users Problems in learning the operational procedures Problems in learning the features by trial and error Spontaneous user errors, typical to experienced users ErgoWiz GUI optimization, by quantitative evaluation and comparison of alternative design solutions: User options Operation modes Setup parameters. ErgoLight Solutions BetaLight--The Usability Test Bed for the Beta Site BetaLight is effective for capturing usability problems of the real end users in their real operational environment. BetaLight reduces development time and save testing costs by automation, much the same as do other automated testing tools. BetaLight is the most effective means to capture user confusion and erroneous operation. It is the only means available today that captures the multitude on "minor" usability problems. Data Collection BetaLight uses the BetaSpy technology, that runs in the background to the application, "listening" to the computer-user interaction and recording it in a file. While recording, BetaSpy analyses the user reaction and detects situations when the user is either confused or responds erroneously. In such situations, BetaLight invokes the BetaGuide technology, that intervenes and offers on-line help. Evaluation BetaLight uses the BetaStat technology, that performs statistical operations on the data, to obtain information about the effectiveness of the usability features, in terms of time waste. ErgoLab--The Meter for Usability Engineering ErgoLab can be integrated in Usability labs for initial testing of the application. There, much of the tedious work done by recording, playback and manual inspection, will be automated. Later, BetaLight can be integrated in the real application, for use in the real environment. ErgoPlus--On The Job Usability Enhancement ErgoPlus is the only means to evaluate usability problems attributed to the customization of Windows application. The evaluation, based on usability measures, directs the users in optimizing the options and setup parameters. InfoLight--Life Cycle Examination of UI Effectiveness Corporate IS organization do the usability testing with the actual end users, in the real environment. InfoLight can be used instead of the expensive Computer-Human-Interaction consultation, based on observations. It provides a mass of usability data, used for rapid, objective conclusions. InfoLight is used for testing through the complete life cycle, from the demo phase to the phase of intensive usage. At the Demo Phase InfoLight uses BetaSpec to capture problems in the product definition At the Testing Phase InfoLight uses BetaSpy to collect usability data, BetaGuide for providing extra help to the user and BetaStat for evaluation, much the same as BetaLight does. At the Deployment Phase InfoLight uses three technologies: ErgoGuide--used mainly at the initial stage of the deployment phase, when user learn how to use the application. ErgoTrain--used mainly after the user had acquired the basic skills, for performance improvement. ErgoWiz--used to optimize the setup parameters to eliminate usability problems at both the personal and the team levels. Following is a description of the data structures of tables used in a first embodiment of the present invention: The following Paradox database tables are preferably stored in the [nonel]user task database 34 of FIG. 1 according to a first embodiment of the present invention: Button Diabox Goal Intervention Maintask Menubar MenuItem Method Popup Process Product Step Subtask Toolbar Trigger UserClass UserProfile The following Paradox database tables are preferably stored in the [none2]usability problem database 70 of FIG. 1 according to a first embodiment of the present invention: Action Problem Following is a description of the data structures of the tables listed above: Actions.DB
______________________________________
Field name Type Size
______________________________________
TheTime @
ControlType A 12
ControlIndex S
ControlName A 20
Event A 12
ActiveForm A 16
ActiveControl A 16
MouseX A 4
MouseY A 4
KeyChar A 1
______________________________________
Button.DB
______________________________________
Field name Type Size
______________________________________
Diabox A 20
Name A 20
Usage S
______________________________________
Diabox.DB
______________________________________
Field name Type Size
______________________________________
Name A 20
Usage S
______________________________________
Goal.DB
______________________________________
Field name Type Size
______________________________________
Id A 2
SubTask A 2
MainTask A 2
Text A 60
Children S
Usage S
______________________________________
Intervention.DB
______________________________________
Field name Type Size
______________________________________
Diabox A 20
Name A 20
Type A 10
NuInMenuBar S
NuInMenuItem S
NuInPopup S
Button A 20
ShortKey A 20
BypassKey A 20
______________________________________
MainTask.DB
______________________________________
Field name Type Size
______________________________________
Id A 2
Text A 40
Children S
Usage S
______________________________________
MenuBar.DB
______________________________________
Field name Type Size
______________________________________
DiaBox A 20
Order S
Text A 20
Name A 20
Accel A 1
Usage S
______________________________________
MenuItem.DB
______________________________________
Field name Type Size
______________________________________
Diabox A 20
NuInBar S
Order S
Name A 20
Text A 20
Usage S
______________________________________
Method.DB
______________________________________
Field name Type Size
______________________________________
Id A 2
Goal A 2
SubTask A 2
MainTask A 2
Text A 60
Children S
Usage S
______________________________________
Popup.DB
______________________________________
Field name Type Size
______________________________________
Diabox A 20
Order S
Name A 20
Usage S
______________________________________
Problem.DB
______________________________________
Field name Type Size
______________________________________
Time @
UserName A 10
SessionNumber S
What A 60
MainTask A 2
SubTask A 2
Goal A 2
Method A 2
Step A 2
Operation A 20
HelpContents L
HelpSearch L
Tutorial L
UserGuide L
______________________________________
Process.DB
______________________________________
Field name Type Size
______________________________________
Name A 20
Usage S
______________________________________
Product.DB
______________________________________
Field name Type Size
______________________________________
FileName A 30
Path A 60
OnCancel L
OnDelay L
OnHelp L
OnUndo L
TimeToIntervention I
DelayBypass A 20
CurrentUser A 10
CurrentUserClass A 12
WelcomeCount S
______________________________________
Step.DB
______________________________________
Field name Type Size
______________________________________
Number A 2
Method A 2
Goal A 2
SubTask A 2
MainTask A 2
Text A 60
Operation A 20
Trigger A 20
Usage S
______________________________________
SubTask.DB
______________________________________
Field name Type Size
______________________________________
Id A 2
MainTask A 2
Text A 60
Children S
Usage S
______________________________________
ToolBar.DB
______________________________________
Field name Type Size
______________________________________
Diabox A 20
Name A 20
Usage S
______________________________________
Trigger.DB
______________________________________
Field name Type Size
______________________________________
SrcBox A 20
Name A 20
TgtBox A 20
Process A 20
NuInBar S
NuInMenu S
NuInPopup S
Button A 20
Toolbar A 20
Shortkey A 20
Usage S
______________________________________
UserClass.DB
______________________________________
Field name Type Size
______________________________________
Name A 12
Percent S
Criterion S
NuOfUsers S
OnDelay L
OnCancel L
OnHelp L
OnUndo L
DelayTime S
______________________________________
UserProfile.DB
______________________________________
Field name Type Size
______________________________________
UserName A 10
UserGroup A 12
NuSessions S
OnDelay L
OnCancel L
OnHelp L
OnUndo L
DelayTime S
SessionNu S
NuProblems S
NuManual S
______________________________________
There follows a description of a preferred method for employing the Appendices 1-6 to generate a software implementation of a system for identifying usability problems, the system being constructed and operative in accordance with a first embodiment of the present invention. Enclosed herewith are Appendices 1-6 including computer listings useful in generating a first embodiment of the present invention. A preferred method for employing Appendices 1-6 to generate an example of a software implemented system for identifying usability problems include the following steps: 1. Install Microsoft Windows/95 on a PC 2. Install Borland Developer version of Delphi 2.0 for Windows/95 3. Create the following directories:
______________________________________
Usage Example in Appendices 1-6
______________________________________
Pascal Utilities .backslash.ABBA.backslash.UTILS
Common Pascal units
.backslash.ABBA.backslash.ERGOLITE
Paradox Database tables
.backslash.ABBA.backslash.ERGOLITE.backslash.DB
Files of unit 20 .backslash.ABBA.backslash.ERGOLITE.backslash.RESOURCE
Files of unit 30 .backslash.ABBA.backslash.ERGOLITE.backslash.SPEC
Files of unit 35 .backslash.ABBA.backslash.ERGOLITE.backslash.BETASPY
Files of unit 32 .backslash.ABBA.backslash.ERGOLITE.backslash.TESTPLAN
Files of unit 80 .backslash.ABBA.backslash.ERGOLITE.backslash.USAGE
______________________________________
4. Define an alias name "BetaLite" for the Paradox Database tables directory (e.g. .backslash.ABBA.backslash.ERGOLITE.backslash.DB) and set it as the Working directory. 5. In the Working directory, use Delphi's Database Desktop to define the Paradox tables as depicted above: 6. Create utility Pascal units as listed in Appendix 1 7. Construct unit 20 (User interface learning) as follows: Create a Delphi project and save it as ResourceProject.dpr in directory of unit 20 (e.g. .backslash.ABBA.backslash.ERGOLITE.backslash.RESOURCE) Create the data modules ResourceModule.pas and ProductNodule.pas as in the pages listed in Appendix 2 Create the forms for the ResourceProject.dpr Delphi project according to FIGS. 2-11 Arrange the forms in the Delphi project in the order they appear in the listing of the ResourceProject.dpr Delphi project listed in Appendix 2 For each form, add events and code as in the Pascal units listed in Appendix 2. Use the form transition charts described above to name the components that do the transitions Build the EXE file (compile and link) and then run 8. Construct unit 30: User task breakdown, as follows: Create a Delphi project and save it as Bspec.dpr in directory of unit 30 (e.g. .backslash.ABBA.backslash.ERGOLITE.backslash.SPEC) Create the data modules InterventionModule.pas and TriggerFilterModule.pas as in the pages listed in Appendix 3 Create the forms for the Bspec.dpr Delphi project according to FIGS. 12-32 Arrange the forms in the Delphi project in the order they appear in the listing of the Bspec.dpr Project pages listed in Appendix 3 For each form, add events and code as in the Pascal units listed in Appendix 3. Use the form transition charts described above to name the components that do the transitions Build the EXE file (compile and link) and then run Construct unit 32: Test setup, as follows: 9. Create a Delphi project and save it as TestPlan.dpr in directory of unit 32 (e.g. .backslash.ABBA.backslash.ERGOLITE.backslash.TESTPLAN) Create the data module UserModule.pas as in the pages listed in Appendix 4 Create the forms for the TestPlan.dpr Delphi project according to FIGS. 33-37 Arrange the forms in the Delphi project in the order they appear in the listing of the TestPlan.dpr Project pages listed in Appendix 4 For each form, add events and code as in the Pascal units listed in Appendix 4. Use the form transition charts described above to name the components that do the transitions Build the EXE file (compile and link) and then run 10. Construct unit 35: Usability problem identifier, as follows: Create a Delphi project and save it as Bspy.dpr in directory of unit 35 (e.g. .backslash.ABBA.backslash.ERGOLITE.backslash.BETASPY) Create the data module TestingModule.pas as in the pages listed in Appendix 5 Create the forms for the Bspy.dpr Delphi project according to FIGS. 38-56 Arrange the forms in the Delphi project in the order they appear in the listing of the Bspy.dpr Project pages listed in Appendix 5 For each form, add events and code as in the Pascal units listed in Appendix 5. Use the form transition charts described above to name the components that do the transitions Build the EXE file (compile and link) and then run 11. Construct unit 80: Usability problem solver, as follows: Create a Delphi project and save it as Solver.dpr in directory of unit 80 (e.g. .backslash.ABBA.backslash.ERGOLITE.backslash.USAGE) Create the forms for the Solver.dpr Delphi project according to FIGS. 57-68 Arrange the forms in order according to the Project pages listed in Appendix 6 Arrange the forms in the Delphi project in the order they appear in the listing of the Solver.dpr Project pages listed in Appendix 6 For each form, add events and code as in the Pascal units listed in Appendix 6. Use the form transition charts described above to name the components that do the transitions Build the EXE file (compile and link) and then run 12. To test a computerized system, use the hooks as in file JournalHooks.pas listed in Appendix 1. The second implementation of the apparatus of FIG. 1 is now described with reference to FIGS. 69-123 and to Appendices 7-12. FIGS. 69-76 are pictorial illustrations of screen displays generated by unit 20 of FIG. 1 according to a second embodiment of the present invention. FIG. 69 is an initial screen display. The relationship between the screen displays of FIGS. 69-76 is described below including the relationships between the Delphi forms of the various screen displays, the Pascal units corresponding thereto, and an indication of the form component within a first screen display which, when selected, causes a particular second screen to be displayed. FIGS. 77-84 are pictorial illustrations of screen displays generated by unit 30 of FIG. 1 according to a second embodiment of the present invention. FIG. 77 is the initial screen display. The relationship between the screen displays of FIGS. 77-84 is described below including the relationships between the Delphi forms of the various screen displays, the Pascal units corresponding thereto, and an indication of the form component within a first screen display which, when selected, causes a particular second screen to be displayed. FIGS. 85-86 are pictorial illustrations of screen displays generated by unit 32 of FIG. 1 according to a second embodiment of the present invention. FIG. 85 is the initial screen display. The relationship between the screen displays of FIGS. 85-86 is described below including the relationships between the Delphi forms of the various screen displays, the Pascal units corresponding thereto, and an indication of the form component within a first screen display which, when selected, causes a particular second screen to be displayed. FIGS. 87-106 are pictorial illustrations of screen displays generated by unit 35 of FIG. 1 according to a second embodiment of the present invention. FIG. 87 is the initial screen display. The relationship between the screen displays of FIGS. 87-106 is described below including the relationships between the Delphi forms of the various screen displays, the Pascal units corresponding thereto, and an indication of the form component within a first screen display which, when selected, causes a particular second screen to be displayed. FIGS. 107-123 are pictorial illustrations of screen displays generated by unit 80 of FIG. 1 according to a second embodiment of the present invention. FIG. 107 is the initial screen display. The relationship between the screen displays of FIGS. 107-123 is described below including the relationships between the Delphi forms of the various screen displays, the Pascal units corresponding thereto, and an indication of the form component within a first screen display which, when selected, causes a particular second screen to be displayed. Delphi form transitions within each of units 20, 30, 32, 35 and 80 according to a second embodiment of the present invention are now described. It is emphasized that the particular form transition structure described herein is merely an example and is provided for illustrative purposes only. The Delphi form transitions, in the present example, within unit 20 are now described:
______________________________________
From form
To form Component Id Component Text
______________________________________
FIG. 69 FIG. 70 button: bbSetup
label: Setup
FIG. 69 FIG. 71 button: bbStart
label: Start
FIG. 71 FIG. 72 button: bbTasks
label: Tasks
FIG. 71 FIG. 73 button: bbViewSpy
label: Debug
FIG. 73 FIG. 74 button: bbSpy label: Spy
FIG. 74 FIG. 75 button: bbViewMenu
label: View
FIG. 73 FIG. 76 button: bbViewClas
label: Class
______________________________________
wherein FIGS. 69-76 describe the following Pascal unit files and Delphi forms:
______________________________________
FIG. Pascal Unit file (*.pas)
Delphi Form
______________________________________
69 GetComponentMain
MainForm
70 MainSetup MainSetupForm
71 GetComponent GetComponentForm
72 ComponentTasks ComponentTasksForm
73 HyperSpy HyperSpyForm
74 Spy SpyForm
75 ViewMenu MenuForm
76 ViewClass ClassForm
______________________________________
The Delphi form transitions, in the present example, within unit 30 are now described:
__________________________________________________________________________
From form To form
Component Id
Component Text
__________________________________________________________________________
FIG. 77 FIG. 70
button: bbSetup
label: Setup
FIG. 77 FIG. 78
button: bbStart
label: Start
FIG. 78 FIG. 79
button: bbSetSubTasks
label: Specify Subtasks
FIG. 79 FIG. 80
button: bbSetGoals
label: Specify Goals
FIG. 80 FIG. 81
button: bbSetMethod
label: Specify Methods
FIG. 81 FIG. 82
button: bbSetSteps
label: Specify Procedure
FIG. 82 FIG. 83
button: bbSetOperation
label: Specify Operation
FIGS. 78,79,80,81,82
FIG. 84
button: bbSetModes
label: SetModes
FIGS. 83,84
FIG. 73
button: bbViewSpy
label: Debug
__________________________________________________________________________
wherein FIGS. 77-84 describe the following Pascal unit files and Delphi forms:
______________________________________
FIG. Pascal Unit file (*.pas)
Delphi Form
______________________________________
77 DefTaskMain MainForm
78 MainTask MainTaskForm
79 SubTask SubTaskForm
80 Goal GoalForm
81 Method MethodForm
82 Steps StepsForm
83 Activation ActivationForm
84 SetCondition SetConditionForm
______________________________________
The Delphi form transitions, in the present example, within unit 32 are now described:
______________________________________
From form To form Component Id Component Text
______________________________________
FIG. 85 FIG. 86 button: bbStart
label: Start
FIG. 86 FIG. 73 button: bbViewSpy
label: Debug
______________________________________
wherein FIGS. 85-86 describe the following Pascal unit files and Delphi forms:
______________________________________
FIG. Pascal Unit flle (*.pas)
Delphi Form
______________________________________
FIG. 85 GetIndicatorMain
MainForm
FIG. 86 GetIndicators GetIndicatorsForm
______________________________________
The Delphi form transitions, in the present example, within unit 35 are now described:
__________________________________________________________________________
From form
To form
Event Component Text
__________________________________________________________________________
FIG. 87 FIG. 70
button: bbSetup
label: Setup
FIG. 87 FIG. 88
button: bbLearnUI
label: Learn UI
FIG. 88 FIG. 73
button: bbViewSpy
label: Debug
FIG. 88 FIG. 89
event: user delay
FIG. 88 FIG. 91
event: Cancel, Esc request
FIG. 88 FIG. 92
event: Help request
FIG. 88 FIG. 93
event: Undo request
FIG. 91,92,93
FIG. 94
button: bbIgnore
label: Ignore
FIG. 90,94
FIG. 96
button: bbIntention
label: I intended to do . . .
FIG. 89,91,92,93
FIG. 96
button: bbGuide
label: Guide
FIG. 89,91,92,93
FIG. 95
button: bbTips
label: Tips
FIG. 96 FIG. 97
button: bbNotFound
label: Task not found
FIG. 97 FIG. 98
button: bbFound
label: but . . .
FIG. 98 FIG. 99
button: bbFound
label: but . . .
FIG. 99 FIG. 100
button: bbFound
label: but . . .
FIG. 100
FIG. 101
button: bbFound
label: but . . .
FIG. 101
FIG. 105
button: bbFound
label: but . . .
FIG. FIG. 102
button: bbNotFound
label: Report
97,98,99,100,101
FIG. 87 FIG. 104
button: bbViewActions
label: View
FIG. FIG. 106
event: Mode error
97,98,99,100,101
detected
FIG. 105,102
FIG. 103
button: bbInform
label: Inform product designers
__________________________________________________________________________
wherein FIGS. 87-106 describe the following Pascal unit files and Delphi forms:
______________________________________
FIG. Pascal Unit file (*.pas)
Delphi Form
______________________________________
87 RTmonitor MainForm
88 LearnUI LearnUIForm
89 OnDelay OnDelayForm
90 OnIgnoreDelay OnIgnoreDelayForm
91 OnCancelForm OnCancelForm
92 OnHelp OnHelpForm
93 OnUndo OnUndoForm
94 OnIgnoreCancel OnIgnoreEscapeForm
95 OnBypass BypassForm
96 InquireComponent
InquireComponentForm
97 InquireMainTask InquireTaskForm
98 InquireSubTask InquireSubTaskForm
99 InquireGoal InquireGoalForm
100 InquireMethod InquireMethodForm
101 InquireStep InquireStepForm
102 TaskNotFound TaskNotFoundForm
103 Promise PromiseForm
104 GetUserAction GetUserActionForm
105 ShowReasons ShowReasonsForm
106 ModeErrors ModeErrorForm
______________________________________
The Delphi form transitions, in the present example, within unit 80 are now described:
__________________________________________________________________________
From form
To form
Component Id Component Text
__________________________________________________________________________
FIG. 107
FIG. 108
bbComponentUsage
Component Usage
FIG. 108
FIG. 109
bbConflicts Conflicts
FIG. 109
FIG. 110
bbViewDetails
Details of Selected
FIG. 110
FIG. 111
bbViewDetails
Analysis of Selected
FIG. 107
FIG. 112
bbTasksAndTerms
Tasks and Terms
FIG. 112
FIG. 113
bbSolve Solve
FIG. 113
FIG. 114
bbModify Modify
FIG. 107
FIG. 115
bbProcedureKnowledge
Procedure Knowledge
FIG. 115
FIG. 116
bbViewDetails
Details of Selected
FIG. 107
FIG. 117
bbModeErrors Mode Errors
FIG. 117
FIG. 118
bbViewDetails
Details of Selected
FIG. 107
FIG. 119
bbByUserIntention
By User Intention
FIG. 119
FIG. 113
bbPreviousProblems
Previous Problem Reports
FIG. 119
FIG. 120
bbGoalIdentified
Goal Identified
FIG. 120
FIG. 116
bbPreviousProblems
Previous Problem Reports
FIG. 120
FIG. 121
bbProcedureIdentified
Procedure Identified
FIG. 121
FIG. 122
bbAssociatedComponents
Associated Components
FIG. 107
FIG. 123
bbByUserAction
By User Action
FIG. 123
FIG. 110
bbAssociatedReports
Associated Reported Problems
__________________________________________________________________________
wherein FIGS. 107-123 describe the following Pascal unit files and Delphi forms:
______________________________________
FIG. Pascal Unit file (*.pas)
Delphi Form
______________________________________
107 ProblemSolver SolverForm
108 ComponentUsage ComponentUsageForm
109 ConflictSummary ConflictSummaryForm
110 ConflictReport ConflictReportForm
111 BackTrack BackTrackForm
112 GoalSummary GoalSummaryForm
113 UserTerm UserTermForm
114 SolveTerm SolveTermForm
115 ProcedureSummary
ProcedureSummaryForm
116 ProcedureKnowledgeReport
ProcedureKnowledgeReportForm
117 ModeErrorSummary
ModeErrorSummaryForm
118 ModeReport ModeReportForm
119 HelpByUserIntention
HelpByUserIntentionForm
120 HelpGoal HelpGoalForm
121 HelpProcedure HelpProcedureForm
122 AssociatedComponents
AssociatedComponentsForm
123 HelpByUserAction
HelpByUserActionForm
______________________________________
Following is a description of the data structures of tables used in a second preferred embodiment of the present invention: The following Paradox database tables are preferably stored in the user task database 34 of FIG. 1 according to a second preferred embodiment of the present invention: Component.DB Condition.DB DocSource.DB File.DB Goal.DB Maintask.DB Method.DB ObjectClass.DB ProblemIndicator.DB Product.DB Step.DB Subtask.DB The following Paradox database tables are preferably stored in the usability problem database 70 of FIG. 1 according to a second preferred embodiment of the present invention: Action.DB ConflictSummary.DB DocSummary.DB ModeError.DB Problem.DB TaskSummary.DB UsageSummary.DB Following is a description of the data structures of tables listed above: Actions.DB
______________________________________
Field name Type Size
______________________________________
The Time @
Indicator L
Type A 10
Identifier A 60
Class A 20
Static L
Caption A 30
Location A 30
ShortcutKey A 20
State A 10
FormTitle A 60
______________________________________
Component.DB
______________________________________
Field name Type Size
______________________________________
Identifier A 60
Description A 60
Class A 20
IsStatic L
IsMode L
Caption A 30
Location A 30
ShortcutKey A 20
FormTitle A 60
______________________________________
Condition.DB
______________________________________
Field name Type Size
______________________________________
MainTask A 2
SubTask A 2
Goal A 2
Method A 2
Step A 2
Identifier A 60
Class A 20
Caption A 30
FormTitle A 60
Value A 10
Likelihood A 10
CurrentValue A 10
______________________________________
ConflictSummary.DB
______________________________________
Field name Type Size
______________________________________
TimeWaste S
ProblemCount S
MainTask A 2
SubTask A 2
Goal A 2
Method A 2
Step A 2
CompType A 10
CompId A 10
CompClass A 20
CompCaption A 30
ShortcutKey A 20
FormTitle A 60
Advice A 60
ToDesigner A 100
ToHelpDesk A 100
______________________________________
DocSource.DB
______________________________________
Field name Type Size
______________________________________
Name A 20
______________________________________
DocSummary.DB
______________________________________
Field name Type Size
______________________________________
TimeWaste S
ProblemCount S
MainTask A 2
SubTask A 2
Goal A 2
DocSource A 20
Advice A 60
ToDesigner A 100
ToHelpDesk A 100
______________________________________
File.DB
______________________________________
Field name Type Size
______________________________________
ExePath A 60
ExeFile A 30
DBPath A 60
______________________________________
Goal.DB
______________________________________
Field name Type Size
______________________________________
Id A 2
SubTask A 2
MainTask A 2
Text A 60
Children S
Usage S
______________________________________
MainTask.DB
______________________________________
Field name Type Size
______________________________________
Id A 2
Text A 40
Children S
Usage S
______________________________________
Method.DB
______________________________________
Field name Type Size
______________________________________
Id A 2
Goal A 2
SubTask A 2
MainTask A 2
Text A 60
Children S
Usage S
______________________________________
ModeError.DB
______________________________________
Field name Type Size
______________________________________
TimeWaste S
Count S
MainTask A 2
SubTask A 2
Goal A 2
Method A 2
Step A 2
CompId A 60
ModeBtnId A 60
ModeForm A 60
ModeBtnCaption A 30
ModeBtnValue A 10
Advice A 60
UsageCount S
UserSet A 10
SWset A 10
ToDesigner A 100
ToHelpDesk A 100
______________________________________
ObjectClass.DB
______________________________________
Field name Type Size
______________________________________
Name A 20
IsStatic L
IsMode L
______________________________________
Problem.DB
______________________________________
Field name Type Size
______________________________________
Time @
TimeWaste S
What A 60
MainTask A 2
SubTask A 2
Goal A 2
Method A 2
Step A 2
CompType A 10
CompId A 10
CompClass A 20
CompCaption A 30
ShortcutKey A 20
FormTitle A 60
ModeBtnCaption A 30
ModeBtnId A 60
ModeBtnValue A 10
DocSource A 20
ToDesigner A 100
ToHelpDesk A 100
______________________________________
ProblemIndicator.DB
______________________________________
Field name Type Size
______________________________________
Identifier A 60
Type A 20
______________________________________
Product.DB
______________________________________
Field name Type Size
______________________________________
FileName A 30
Path A 60
TimeToIntervention I
______________________________________
Step.DB
______________________________________
Field name Type Size
______________________________________
Number A 2
Method A 2
Goal A 2
SubTask A 2
MainTask A 2
Text A 60
Operation A 20
FormId A 60
ControlId A 60
MenuBarId A 60
PopupId A 60
ShortcutKey A 60
State A 60
Usage S
______________________________________
SubTask.DB
______________________________________
Field name Type Size
______________________________________
Id A 2
MainTask A 2
Text A 60
Children S
Usage S
______________________________________
TaskSummary.DB
______________________________________
Field name Type Size
______________________________________
TimeWaste S
ProblemCount S
MainTask A 2
SubTask A 2
ToDesigner A 100
ToHelpDesk A 100
______________________________________
UsageSummary.DB
______________________________________
Field name Type Size
______________________________________
ComponentId A 60
Class A 20
IsStatic L
IsMode L
FormTitle A 60
Time S
UserSet A 10
Swset A 10
Count S
Supported L
AssignedTasks S
CurrentValue A 10
______________________________________
Enclosed herewith are Appendices 7-12 including computer listings useful in generating a second preferred embodiment of the present invention. A preferred method for employing Appendices 7-12 to generate an example of a software implemented system for identifying usability problems include the following steps: 1. Install Microsoft Windows/95 on a PC 2. Install Borland Developer version of Delphi 2.0 for Windows/95 3. Create directories as follows:
______________________________________
Usage Example: directory used in Appendices 7-12
______________________________________
Common Pascal units
.backslash.ergolite.backslash.common
Paradox Database
.backslash.ergolite.backslash.DB
tables
Files of unit 20
.backslash.ergolite.backslash.CaptureComponents
Files of unit 30
.backslash.ergolite.backslash.DefineTaskBreakdown
Files of unit 32
.backslash.ergolite.backslash.DefineProblemIndicators
Files of unit 35
.backslash.ergolite.backslash.CaptureUserInteraction
Files of unit 80
.backslash.ergolite.backslash.ViewUserDifficulties
______________________________________
4. Define an alias name "BetaLite" for the Paradox Database tables directory (e.g. .backslash.ergolite.backslash.db) and set it as the Working directory. 5. In the Working directory, use Delphi's Database Desktop to define the Paradox tables listed above. 6. Create utility Pascal units as listed in Appendix 7 7. Construct SharedData.dll as follows: Create a Delphi project and save it as SharedData.dpr in the common directory (e.g. .backslash.ergolite.backslash.common) Add the units to the project file, according to the listings of the project file SharedData.dpr in Appendix 7 Build the EXE file (compile and link) 8. Construct HookDLL.dll as follows: Create a Delphi project and save it as HookDLL.dpr in the common directory (e.g. .backslash.ergolite.backslash.common) Add the units to the project file, according to the listings of the project file HookDLL.dpr in Appendix 7 Build the EXE file (compile and link) 9. Construct unit 20 (User interface learning) as follows: Create a Delphi project and save it as CaptureComponents.dpr in directory of unit 20 (e.g. .backslash.ergolite.backslash.CaptureComponents) Create the forms for the CaptureComponents.dpr Delphi project according to FIGS. 69-75 Arrange the forms in the Delphi project in the order they appear in the listing of the CaptureComponents.dpr Delphi project listed in Appendix 8 For each form, add events and code as in the Pascal units listed in Appendix 8. Use the form transition charts described above to name the components that do the transitions Build the EXE file (compile and link) and then run 10. Construct unit 30: User task breakdown, as follows: Create a Delphi project and save it as DefineTasklreakdown.dpr in directory of unit 30 (e.g. .backslash.ergolite.backslash.DefineTaskBreakdown) Create the forms for the DefineTaskBreakdown.dpr Delphi project according to FIGS. 76-83 Arrange the forms in the Delphi project in the order they appear in the listing of the DefineTaskBreakdown.dpr Project pages listed in Appendix 9 For each form, add events and code as in the Pascal units listed in Appendix 9. Use the form transition charts described above to name the components that do the transitions Build the EXE file (compile and link) and then run 11. Construct unit 32: Test setup, as follows: Create a Delphi project and save it as TestPlan.dpr in directory of unit 32 (e.g. .backslash.ergolite.backslash.DefineProblemIndicators) Create the forms for the DefineProblemIndicators.dpr Delphi project according to FIGS. 84-85 Arrange the forms in the Delphi project in the order they appear in the listing of the DefineProblemIndicators.dpr Project pages listed in Appendix 10 For each form, add events and code as in the Pascal units listed in Appendix 10. Use the form transition charts described above to name the components that do the transitions Build the EXE file (compile and link) and then run 12. Construct unit 35: Usability problem identifier, as follows: Create a Delphi project and save it as Bspy.dpr in directory of unit 35 (e.g. .backslash.ergolite.backslash.CaptureUserInteraction) Create the forms for the CaptureUserlnteraction.dpr Delphi project according to FIGS. 86-106 Arrange the forms in the Delphi project in the order they appear in the listing of the CaptureUserlnteraction.dpr Project pages listed in Appendix 11 For each form, add events and code as in the Pascal units listed in Appendix 11. Use the form transition charts described above to name the components that do the transitions Build the EXE file (compile and link) and then run 13. Construct unit 80: Usability problem solver, as follows: Create a Delphi project and save it as Solver.dpr in directory of unit 80 (e.g. .backslash.ergolite.backslash.ViewUserDifficulties) Create the forms for the ViewUserDifficulties.dpr Delphi project according to FIGS. 107-123 Arrange the forms in order according to the Project pages listed in Appendix 12 Arrange the forms in the Delphi project in the order they appear in the listing of the ViewUserDifficulties.dpr Project pages listed in Appendix 12 For each form, add events and code as in the Pascal units listed in Appendix 12. Use the form transition charts described above to name the components that do the transitions Build the EXE file (compile and link) and then run Advantages of the second preferred embodiment described in FIGS. 69-123 and in Appendices 7-12, as well as problems existing in the prior art which are overcome by the second preferred embodiment, are now described: The system shown and described herein provides information on possible reasons for user difficulties. This information is obtained by interrupting the operation of the computerized system, and by prompting the user to specify her intention. In conventional capture/playback tools, the user's normal operation is not interrupted for reporting on the difficulty of the end user. An advantage of the system shown and described herein is that the system preferably provides hints for the system designers on possible ways to resolve identified usability problems, as in the following examples which apply to Word for MS-Windows: Adding wizards. For example, to facilitate the procedure of moving text, the designers can add a wizard that prompts the end user to first select the text to be moved, then confirm selection in order to cut it to the clipboard, then mark the new location and finally confirm the new location, in order to paste the text from the clipboard Disable certain keys. For example, disabling the Insert key may prevent the mode error of Overwrite, which is not very useful in Windows style text editing Changing the control of mode transition. For example by changing the toggle control between upper case and lower case from Caps Lock to, say, Ctrl+Caps Lock, the frequency of unintentional mode changing may dramatically decrease Removing excessive shortcut key combinations. For example, by removing the shortcut key combination Ctrl+Alt+H, which experienced typists unintentionally often use instead of the Ctrl+H key combination, the end user avoids confusing situations such as hiding of the selected text. The system described herein is preferably "general purpose", whereas prior art systems are specific to and built onto particular software applications and require changes in the software code of the combined system/application, so that they cannot be extended to other software applications. The present invention preferably does not require any information on the software code of the computerized system. Therefore, it is applicable to various applications. This feature is useful for software solution providers and SI's (System Integrators) who wish to test applications purchased from a third party, for integration with other software applications and procedures. A particular advantage of the invention for system integrators is that the usability problem identifier unit 35 can be extended so that certain user input options, that a system integrator consider as error prone, can be either disabled or re-mapped to alternative input options that are less error prone. For example: The Insert key can be disabled, to avoid unintentional change to Overwrite mode Excessive, error prone, shortcut key combinations, such as Ctrl+Shift+H, can be disabled, to avoid unintentional hiding of selected text A function actuated by a menu item can be re-directed to a different component, such as a key combination The toggling Caps Lock feature can be re-mapped to two distinctive key combinations, such as Ctrl+Caps Lock for upper case typing and Esc to resume lower case typing. The system of the present invention may somewhat hamper the use of the computerized system by an end user. However, the system of the present invention, apart from its main function of aiding system developers, also preferably aids the end user in the following ways: The end user of the computerized system can learn how to avoid psychomotor errors, by comparing his actual action with his intended one. Another advantage for the end user of the computerized system is that mode errors are automatically detected and that the end user obtains information regarding the system mode that caused her difficulty in operating the computerized system. Another advantage for the end user of the computerized system is that problem reporting is integrated with regular operation of the computerized system. End users, such as in beta sites, are often required to report, typically manually, on usability problems. Typically, the reporting procedure is cumbersome and distracting, and end users try to avoid it. Computer guided reporting is easier to carry out. As a result, the proportion of problems reported may dramatically increase. Advantages for the help desk personnel, in providing technical support to the end users of the computerized system, are now described: A particular advantage of the computerized collection of usability problems provided by the present invention, relative to conventional manual collection of usability problems, for the help desk personnel, is that difficulties of the end user are recorded at the user site, thus eliminating the extra work required to enter the problem report manually. Another advantage of the computerized collection of usability problems provided by the present invention, relative to conventional manual collection of usability problems, for the help desk personnel, is that the database of usability errors grows, because, using the preferred embodiment of the apparatus of the present invention, the users may report on many problems they would not have reported using conventional means. A particular advantage of automated statistics collection for the help desk personnel is that the statistical data allow the technical supporter to evaluate t | ||||||
