380 likes | 399 Views
This heuristic evaluation assesses the Swing Explicit Interactor Tree Add feature, highlighting usability problems and errors, and suggesting improvements for better user experience.
E N D
Outline • Modified rating scale • Heuristic evaluation
Modified rating scale • -4: usability catastrophe—imperative to fix before • -3: major usability problem–important to fix • -2: minor usability problem–low priority • -1: cosmetic problem only–need not be fixed • 0: not a real usability problem or merit • +1: cosmetic merit • +2: minor usability merit • +3: major usability merit • +4: usability excellence
Explicit interactor tree add • Must ensure interactor tree gets added in order to see anything. • Beginners get baffled.
Explicit interactor tree add • Must ensure interactor tree gets added in order to see anything. • Beginners get baffled. • Rating?
Explicit interactor tree add • Must ensure interactor tree gets added in order to see anything. • Beginners get baffled. • Rating: -2 for Visibility
Informative runtime errors • Incompatibilites with AWT addressed with quick exits and error printlns • Exception in thread "main" java.lang.Error: Do not use javax.swing.JFrame.setLayout() use javax. swing.JFrame.getContentPane().setLayout() instead
Informative runtime errors • Incompatibilites with AWT addressed with quick exits and error printlns • Exception in thread "main" java.lang.Error: Do not use javax.swing.JFrame.setLayout() use javax. swing.JFrame.getContentPane().setLayout() instead • Rating?
Informative runtime errors • Incompatibilites with AWT addressed with quick exits and error printlns • Exception in thread "main" java.lang.Error: Do not use javax.swing.JFrame.setLayout() use javax. swing.JFrame.getContentPane().setLayout() instead • Rating: +3 for Error recovery
Bad constructor abstractions • The Swing API keeps improving with abstractions such as the setDefaultCloseOperation method for the JFrame • However, several annoyances persist …
Bad constructor abstractions • The Swing API keeps improving with abstractions such as the setDefaultCloseOperation method for the JFrame • However, several annoyances persist … • Rating?
Bad constructor abstractions • The Swing API keeps improving with abstractions such as the setDefaultCloseOperation method for the JFrame • However, several annoyances persist … • Rating: -2 for Flexibility
Dependence on call order • Methods that depend on other certain actions to have been made need to be well documented
Dependence on call order • Methods that depend on other certain actions to have been made need to be well documented • What’s wrong with the following snippet? button.setBounds(10, 10, 10, 10); frame.setVisible(true); frame.getContentPane().add(button);
Dependence on call order • Methods that depend on other certain actions to have been made need to be well documented • What’s wrong with the following snippet? button.setBounds(10, 10, 10, 10); frame.setVisible(true); frame.getContentPane().add(button); Rating?
Dependence on call order • Methods that depend on other certain actions to have been made need to be well documented • What’s wrong with the following snippet? button.setBounds(10, 10, 10, 10); frame.setVisible(true); frame.getContentPane().add(button); Rating: -4 for Error prevention
Method call collisions • Some methods override each other • setSize and pack • Javadoc says packaffects the size, but that’s more obscure; rename to packToPreferredSizeperhaps
Method call collisions • Some methods override each other • setSize and pack • Javadoc says packaffects the size, but that’s more obscure; rename to packToPreferredSizeperhaps • Rating?
Method call collisions • Some methods override each other • setSize and pack • Javadoc says packaffects the size, but that’s more obscure; rename to packToPreferredSizeperhaps • Rating: -2 for Error prevention
A line for every attribute • Programming at the toolkit level implies an extra line of code for every attribute • setSize and pack • Tradeoff: attributes explicitly set, but hard to see the context …
A line for every attribute • Programming at the toolkit level implies an extra line of code for every attribute • setSize and pack • Tradeoff: attributes explicitly set, but hard to see the context … • Rating?
A line for every attribute • Programming at the toolkit level implies an extra line of code for every attribute • setSize and pack • Tradeoff: attributes explicitly set, but hard to see the context … • Rating: +3 for Aesthetics
Other heuristics • Javadoc
Other heuristics • Javadoc
Other heuristics • Javadoc: +3 for Documentation
Other heuristics • Javadoc: +3 for Documentation • Language counterparts
Other heuristics • Javadoc: +3 for Documentation • Language counterparts: +4 for Match • SwingUtilities.invokeLater:
Other heuristics • Javadoc: +3 for Documentation • Language counterparts: +4 for Match • SwingUtilities.invokeLater: -2 for Error prevent • Panes
Other heuristics • Javadoc: +3 for Documentation • Language counterparts: +4 for Match • SwingUtilities.invokeLater: -2 for Error prevent • Panes: -1 for Consistency • Layouts hard to author
Other heuristics • Javadoc: +3 for Documentation • Language counterparts: +4 for Match • SwingUtilities.invokeLater: -2 for Error prevent • Panes: -1 for Consistency • Layouts hard to author: -3 for User control
Summary • Visibility of system status (1 bad) • Match of system & real world (1 good) • User control and freedom (1 bad) • Consistency and standards (1 bad) • Error prevention (3 bad) • Recognitionrather than recall (not used) • Flexibility and efficiency of use (1 bad) • Aesthetic and minimalist design (1 good) • Error recovery (1 good) • Documentation and help (1 good)
Conclusion • Still not too bad • Object-oriented is the way to go • Can create a wide variety of GUIs