Projects/Usability/HIG: Difference between revisions

    From KDE TechBase
    (93 intermediate revisions by 4 users not shown)
    Line 1: Line 1:
    = Introduction =
    Human interface guidelines (HIG) are software development documents that offer
    application developers a set of recommendations. Their aim is to improve the
    experience for users by making application interfaces more consistent and
    hence more intuitive and learnable.
    [[/About|Learn more about the philosophy behind the KDE HIG]]
    = Structure =
    = Structure =
    <div style="display: none;">
    == Conceptual Model ==
    == Conceptual Model ==
    <cite>The conceptual model is the most fundamental aspect of the interface, describing the relationship between the interface and the outside world. The purpose of the conceptual model is to draw on the user’s past experiences so they can readily understand basic operations and accurately predict functionality.</cite>
    * Real World, Vision
    * Real World, Vision
    == Task Flow ==
    == Task Flow ==
    <cite>The task flow is concerned with the manner in which users’ complete specific operations with the system. In contrast to the conceptual model, the task flow is largely dependent on the product’s technical environment.</cite>
    * Core usability goals, Use cases / User requirements, Task aggregation
    * Core usability goals, Use cases / User requirements, Task aggregation
    * Personas, Scenarios, Usability criteria, Feature list  
    * Personas, Scenarios, Usability criteria, Feature list  
    == Organizational Model ==
    == Organizational Model ==
    <cite>The organizational model describes how the system’s content and functionality are ordered and categorized. Also known as the information architecture, the organizational model encompasses both the classification scheme as well as the model of association, hierarchy versus index for example. </cite>
    * [[Terminology]]
    * [[Terminology]]
    * Information architecture, Interface management, Window style, Basic arrangement, Screen design, Design Pattern
    * Information architecture, Interface management, Window style, Basic arrangement, Screen design, Design Pattern
    * [[Projects/Usability/HIG/CentralConfiguration|central configuration]] (content tbd.)
    * [[Projects/Usability/HIG/CentralConfiguration|central configuration]] (content tbd.)
    * [[Projects/Usability/HIG/NotificationMechanism|Notification mechanism]] (content tbd.)
    * [[Projects/Usability/HIG/NotificationMechanism|Notification mechanism]] (content tbd.)
    *Minimize to tray (perhaps at behaviour>navigation)
    </div>


    = Behaviour =
    = Behaviour =
    == Viewing and Navigation ==
    == Viewing and Navigation ==
    <cite>The Viewing and Navigation layer encompasses the wide variety of behaviors and operations that allow users to navigate the interface and effect its presentation. </cite>
    === General navigation ===
    * [[Projects/Usability/HIG/Dialogs|Dialogs]]
    * Accordion
    * [[Projects/Usability/HIG/Tabs_Pages|Tabs and Pages in Dialogs]]
    * Toolbar
    * Status bar
    * Paging
    === Access functions ===
    === Access functions ===
    * [[Projects/Usability/HIG/Menu_Bar|Menu Bar]]
    * Apply a [[Projects/Usability/HIG/Menu_Bar|menu bar]] to every standard application.
    * [[Projects/Usability/HIG/Buttons|Buttons]]
    * Try to omit the [[Projects/Usability/HIG/StatusBar| status bar]] from your application.
    ** [[Projects/Usability/HIG/Toggle_Buttons|Toggle Buttons]]
    * Provide a [[Projects/Usability/HIG/ContextMenu|context menu]] for controls with implicit functions.
    * Links
    * Provide a [[Projects/Usability/HIG/Toolbar|toolbar]] for frequently used functions.
    * Keyboard Access
    * Use a [[Projects/Usability/HIG/Buttons|push button]] to initiate an action when the user clicks it.
    ** [[Projects/Usability/HIG/Keyboard_Accelerators|Keyboard Accelerators]]
    * Use a [[Projects/Usability/HIG/Toggle_Buttons|toogle button]] to indicate a state, preferably in toolbars only.
    ** [[Projects/Usability/HIG/Keyboard_Shortcuts|Keyboard Shortcuts]]
    * Use a [[Projects/Usability/HIG/Command_Link|command link]] to navigate between pages.
    * Support keyboard access by [[Projects/Usability/HIG/Keyboard_Accelerators|accelerators]] and [[Projects/Usability/HIG/Keyboard_Shortcuts|shortcuts]].
    * Follow the guidelines for [[Projects/Usability/HIG/Dialogs|dialogs]] for secondary windows.
     
    === Grouping ===
    === Grouping ===
    * Group box, Panel
    * Arrange associated controls by using a labeled [[Projects/Usability/HIG/GroupBox| group box]] or an unlabeled [[Projects/Usability/HIG/GroupBox| frame]].
    * Splitter
    * Allow users to resize aligned groups by placing a [[Projects/Usability/HIG/Splitter| splitter]] between the groups.
    * Use [[Projects/Usability/HIG/TabControl|tabs]] to show related information on separate pages.
    * Provide an [[Projects/Usability/HIG/Accordion|accordion]] (aka tool box) for different views to content.
     
    === Complex views ===
    === Complex views ===
    * [[Projects/Usability/HIG/Lists_Rich_Lists|List Views]]
    * Use a [[Projects/Usability/HIG/ListView| list view]] to show some items out of one category.
    * Tree view
    * Use a [[Projects/Usability/HIG/TreeView| tree view]] to show items with a single, natural, hierarchical categorization.
    * Grids
    * If you really need to create your own widget follow the guidelines for [[Projects/Usability/HIG/CustomControls| custom controls]].
    * Double check the guidelines about plotting [[Projects/Usability/HIG/Diagram|diagram/charts]].
     
    == Editing and Manipulation ==
    == Editing and Manipulation ==
    <cite>The Editing and Manipulation layer contains the behaviors that result in permanent changes to user’s stored information. … Behaviors in this layer can often be recognized by the following traits: they result in permanent, stored changes; they require an implicit or explicit save operation; and they typically require validation of the input data. </cite>
    === Selection ===
    === Selection ===
    * Use a [[Projects/Usability/HIG/Radio Buttons|radio button]] for 1 of a few n selections.
    * Use [[Projects/Usability/HIG/Radio Buttons|radio buttons]] for selection of 1 out of a few items.
    * Use one or more [[Projects/Usability/HIG/Check_Box|check boxes]] for clear options or n of a few m selections.
    * Use one or more [[Projects/Usability/HIG/Check_Box|check boxes]] for clear options or to select items out of a small number of options.
    * Use a [[Projects/Usability/HIG/ListView|list view]] for one or a few n of some m selections.
    * Use a [[Projects/Usability/HIG/DropDown| drop-down]] list for selection of 1 out of a small number of items.
    * Use a [[Projects/Usability/HIG/Combo_Box| drop-down]] list for 1 of some n selection and a [[Projects/Usability/HIG/Combo_Box| combo box]] if users should be able to add items.
    * Use a [[Projects/Usability/HIG/Combo_Box| combo box]] to select 1 out of a small number of items where users should be able to add items.
    * Use the [[Projects/Usability/HIG/SOU_Workspace/Two_Lists| dual list]] pattern for n of m selections.
    * Use a [[Projects/Usability/HIG/ListView|list view]] to select 1 singular item out of a potentially big list.
    * Apply the [[Projects/Usability/HIG/DualList| dual list pattern]] for several selections out of a large number of (multiple) items.


    === Unconstrained input ===
    === Unconstrained input ===
    * Edits and Text boxes
    * Provide a [[Projects/Usability/HIG/LineEdit| line edit]] to enter one line of text.
    * Lists with direct input
    * Provide a [[Projects/Usability/HIG/TextEdit| text edit]] to enter multiple lines of texts.
    * Complex views with direct input (Grid cell editing)
    * Use a [[Projects/Usability/HIG/TableView| table view]] to arrange data in rows and columns with inline editing feature.
     
    === Constrained input ===
    === Constrained input ===
    * Numeric input within a range and with fix steps * [[Projects/Usability/HIG/Spin_Box|(Spin Box)]]
    * Use a [[Projects/Usability/HIG/Spin_Box|spin box]] for numerical input within a range and with fix steps.
    * Arbitrary changes within a range for immediate feedback * [[Projects/Usability/HIG/Slider|(Slider)]]
    * Use a [[Projects/Usability/HIG/Slider|slider]] for arbitrary changes within a defined range.
    * [[Projects/Usability/HIG/Date_Time|Date- and Time-Picker]]
    * Apply the [[Projects/Usability/HIG/Slider_and_Spin_Box|slider and spin box pattern]] for numeric input with both large changes and precise control.
    * Use [[Projects/Usability/HIG/Date_Time_Pickers|date and time pickers]] for formatted input of datum, time of day, or periods etc.
     
    == User Assistance ==
    == User Assistance ==
    <cite>Interface elements that inform users of the application’s activity and status, as well as elements dedicated to user education, are all contained in the User Assistance layer. This includes online help, error alerts, and status alerts. </cite>
    === User-driven information ===
    === User-driven information ===
    * Tool-tip
    * Provide [[Projects/Usability/HIG/Tooltip|tool-tips]] for user driven information.
     
    === System triggered notification ===
    === System triggered notification ===
    * Balloon
    * Provide a [[Projects/Usability/HIG/MessageWidget| message panel]] to inform users about non-critical problems.
    * [[Projects/Usability/HIG/Notifications|Notification]] is a system-triggered message used to acknowledge about events out of the current context.
    * Use a [[Projects/Usability/HIG/Notifications|notification]] as system-triggered message to acknowledge about events out of the current context.
    * Progress indicator
    * Show a [[Projects/Usability/HIG/ProgressIndicator| progress indicator]] for lengthy actions.
     
    === Disruptive messages ===
    === Disruptive messages ===
    * [[Projects/Usability/HIG/Messages|Message dialogs]]
    * Show a modal [[Projects/Usability/HIG/Messages|message dialog]] if the processing has reached an unexpected condition that needs interaction.
     
    === Help system ===
    === Help system ===
    * KDE Help
    * Support the user by an elaborated interface or per [[Projects/Usability/HIG/HelpSystem|help system]].
     
    = Presentation =
    = Presentation =
    == Layout ==
    == Layout ==
    <cite>The various design decisions governing the placement and ordering of onscreen elements are expressed in the Layout layer. In addition to providing an ordered visual flow, the Layout layer also supports the Behavior tier by arranging elements in a manner that helps communicate behavior, importance, and usage.</cite>
    * Resizing
    * Resizing
    * Default and minimal size
    * Default and minimal size
    * Spacing
    * Spacing
    * Alignment & Placement
    * Carefully place control according the KDE [[Projects/Usability/HIG/Alignment| alignment]] style.
    ** [[Projects/Usability/HIG/Form_Label_Alignment|Forms: Label Alignment]]
    * Do not use [[Projects/Usability/HIG/Color| color]] as primary method of communication.
    * Color
    * [[Projects/Usability/HIG/IconDesign| icon design]]
    * Icons
     
    == Style ==
    == Style ==
    <cite>Like many forms of visual design, the Style layer is concerned with emotion, tone, and visual vocabulary. Because it is the most visible and concrete aspect of an interface, it typically accounts for people’s first impression of a product. Paradoxically however, the ultimate effect of style on overall usability or user satisfaction is minimal.</cite>
    == Text ==
    == Text ==
    <cite>Contained within the Text layer are all the written, language-based elements of the interface. This includes the labels used to represent the organizational model, the names of the input and navigational controls contained in the Viewing and Navigation layer, and the alert messages and help text used by the User Assistance layer.</cite>
    * Language localizations
    * Language localizations
    * Static text
    * Static text
    Line 101: Line 113:
    Didn't find what you were looking for?
    Didn't find what you were looking for?


    Our Human Interface Guidelines are a work in progress and we need your help. If you found an area that was unclear or is not even covered in our HIG, tell us about it. You'll find everything you need on our mailing list: [mailto:[email protected] [email protected]] or in [http://techbase.kde.org/Projects/Usability/HIG/UI_Files our little tutorial].
    A guide to the guide can be found at the [[Projects/Usability/HIG/About|about page]].
     
    Our Human Interface Guidelines are a work in progress and we need your help. Visit the [[Projects/Usability/HIG/Contributing|Contributing page]] to report problems or get involved.


    =Index=
    =Index=
    Line 119: Line 133:
    '''D'''
    '''D'''


    * [[Projects/Usability/HIG/Date_Time|Date and Time]]
    * [[Projects/Usability/HIG/Date_Time_Pickers|Date and Time Pickers]]
    * [[Projects/Usability/HIG/Dialogs|Dialogs]]
    * [[Projects/Usability/HIG/Dialogs|Dialogs]]


    Line 136: Line 150:
    '''L'''
    '''L'''
    * [[Projects/Usability/HIG/Labels|Labels]]
    * [[Projects/Usability/HIG/Labels|Labels]]
    * [[Projects/Usability/HIG/Lists_Rich_Lists|Lists and Rich Lists]]
    * [[Projects/Usability/HIG/ListView|List Views]]


    '''M'''
    '''M'''
    Line 147: Line 161:
    '''S'''
    '''S'''
    * [[Projects/Usability/HIG/Slider|Slider]]
    * [[Projects/Usability/HIG/Slider|Slider]]
    * [[Projects/Usability/HIG/Slider_and_Spin_Box|Slider and Spin Box]]
    * [[Projects/Usability/HIG/Spin_Box|Spin Box]]
    * [[Projects/Usability/HIG/Spin_Box|Spin Box]]


    Line 157: Line 172:


    [[Category:Usability]]
    [[Category:Usability]]
    <pre>----------------------------------------------legacy stuff--------------------------------------</pre>
    Please add any guidelines questions or requests to the [[Projects/Usability/HIG_Questions|HIG Questions]] page.
    Also see the  [http://developer.kde.org/documentation/standards/kde/style/basics/index.html KDE3 User Interface Guidelines] and [http://developer.kde.org/documentation/design/ui/ KDE User Interface Guidelines] and the [[Projects/Usability/HIG/SOU_Workspace|Season of Usability HIG & Design Patterns Workspace]].

    Revision as of 10:24, 4 November 2013

    Introduction

    Human interface guidelines (HIG) are software development documents that offer application developers a set of recommendations. Their aim is to improve the experience for users by making application interfaces more consistent and hence more intuitive and learnable.

    Learn more about the philosophy behind the KDE HIG

    Structure

    Conceptual Model

    • Real World, Vision

    Task Flow

    • Core usability goals, Use cases / User requirements, Task aggregation
    • Personas, Scenarios, Usability criteria, Feature list

    Organizational Model

    Behaviour

    Viewing and Navigation

    Access functions

    Grouping

    • Arrange associated controls by using a labeled group box or an unlabeled frame.
    • Allow users to resize aligned groups by placing a splitter between the groups.
    • Use tabs to show related information on separate pages.
    • Provide an accordion (aka tool box) for different views to content.

    Complex views

    • Use a list view to show some items out of one category.
    • Use a tree view to show items with a single, natural, hierarchical categorization.
    • If you really need to create your own widget follow the guidelines for custom controls.
    • Double check the guidelines about plotting diagram/charts.

    Editing and Manipulation

    Selection

    • Use radio buttons for selection of 1 out of a few items.
    • Use one or more check boxes for clear options or to select items out of a small number of options.
    • Use a drop-down list for selection of 1 out of a small number of items.
    • Use a combo box to select 1 out of a small number of items where users should be able to add items.
    • Use a list view to select 1 singular item out of a potentially big list.
    • Apply the dual list pattern for several selections out of a large number of (multiple) items.

    Unconstrained input

    • Provide a line edit to enter one line of text.
    • Provide a text edit to enter multiple lines of texts.
    • Use a table view to arrange data in rows and columns with inline editing feature.

    Constrained input

    • Use a spin box for numerical input within a range and with fix steps.
    • Use a slider for arbitrary changes within a defined range.
    • Apply the slider and spin box pattern for numeric input with both large changes and precise control.
    • Use date and time pickers for formatted input of datum, time of day, or periods etc.

    User Assistance

    User-driven information

    • Provide tool-tips for user driven information.

    System triggered notification

    Disruptive messages

    • Show a modal message dialog if the processing has reached an unexpected condition that needs interaction.

    Help system

    • Support the user by an elaborated interface or per help system.

    Presentation

    Layout

    • Resizing
    • Default and minimal size
    • Spacing
    • Carefully place control according the KDE alignment style.
    • Do not use color as primary method of communication.
    • icon design

    Style

    Text

    See also:

    Contributing

    Didn't find what you were looking for?

    A guide to the guide can be found at the about page.

    Our Human Interface Guidelines are a work in progress and we need your help. Visit the Contributing page to report problems or get involved.

    Index

    B

    C


    D

    E

    F

    K

    L

    M

    R

    S

    T

    W