GUI Design and Implementation
This document describes the overall design and implementation
process in developing the client GUI side of a Rhino-based system
administration product. This document focuses on the client GUI; the
separate Rhino Tutorials document
describes the process of developing the complete Rhino-based product,
both client (front-end) and server (back-end). For example, the
"Implement GUIs" section here briefly discusses only implementation
time estimates, whereas the "Implement the client-side interfaces"
section in the Rhino Tutorials page provides specific GUI components
that you may want to use during implementation.
Note: Although presented as a sequence of orderly steps, this
process is highly iterative in actual practice!
I. Keep in mind...
Keep in mind these common systems administration requirements:
- Initial configuration and setup
- Production-mode modification
- Monitoring
II. Understand the problem space
- Interview at least 2 or 3
customers, and do workflow analysis
on what you've observed and on the war stories they tell you
- Check out competitors products (install and evaluate, read
brochures on the web, get info from customers, etc.)
- Talk with internal SGI marketing, SEs
III. Develop functional specification for setup and
modification
Based on user's needs, develop functional specification for initial
configuration and setup, and for production-mode modification.
- Based on data collected to understand problem space, identify:
- The types of objects to be administered (ex., user,
filesystem)
- The system administration operations to be performed on
those objects (ex., "Add User", "Mount Filesystem")
- For each operation, identify the following. (These directly
influence the design of the GUI. They identify the text, inputs,
and outputs for the GUI. For an example functional specfication
that uses these fields, see the FailSafe
2.0 GUI functional specification.)
- User's goal: what the user hopes to accomplish
- Context: how this goal fits into user's larger goal
- Prerequisites: validations the GUI can pre-calculate
- Up-front info: info the GUI knows that the user cannot
directly change in this operation but that can help the user
avoid an error in this task, also ramifications of doing this
task (what will happen)
- User fills in: input required from user that GUI cannot
predict
- User chooses: input required from user that GUI can
predict (from set of predefined choices)
- Ordering: I/O sequence between GUI and user
- Possible results: possible success or failures for the
operation
- CLIs used: command-line interfaces that the GUI
will use to perform this operation
- Organize the operations using customer data (this will
directly influence the design of your front-end GUI)
- Organize operations into categories (ex., "User/Group
Management")
- Organize operations into high-level goals (ex., "Set Up a
New Cluster")
IV. Develop functional specification for
monitoring
Based on user's needs, develop functional specification for
monitoring GUI.
- Identify the object states that are meaningful
and important to the user (ex., cluster node is down)
- Identify the relevant relationships between objects (ex.,
resource groups run on a cluster node, resources are of a
particular resource type)
- Based on user data collected, identify constraints on the
front-end monitoring GUI (ex., small screen real estate,
overview of entire set of objects in their various states)
V. Do mockups and design review
- It can be useful to do a mockup or two first, to get an idea
whether you're planning for too much text in the window or whether a
particular Task should be implemented as a single-page Form or a
multi-page Guide.
For actual examples, see the FailSafe 2.0
GUI Design Review slides (Showcase). The mockups should derive
easily from your functional specification.
- After putting together mockups, you might want to hold a design
review. Members of the Rhino
team are willing to attend and consult with you.
VI. Implement GUIs
Based on the functional specifications, implement GUIs for initial
configuration and setup, production-mode modification, and monitoring.
- GUI for one operation can take 1-5 days to implement.
- GUI for monitoring can take several weeks to implement.
VII. At alpha, conduct usability study(s)
When you release your first alpha, it's a good time to
conduct usability study(s).
- Ask neophyte user to accomplish some of the mainstream
high-level goals (ex., "Set up a new cluster"), and evaluate
where and why they get lost along the way
- Based on this data, revise and improve GUI