Matthew H. Pinner
April 24, 2002
All complex machines and systems have a user interface (UI) of some sort. The developers’ ability to design a good UI, is vital to the success of the system. Software architects need to be aware of their human customers. Users quickly become more productive when an application has been tailored to them. Exploration of the history behind user interfaces, as well as some of the latest innovations, will guide us toward some goals for design. Then we’ll discuss standard ways of integrating our goals into our application.
Computer user interfaces have evolved drastically since the early days of computing. One can learn a lot about the nature of an effective human interfacing by studying the history of user interfaces. The first computers communicated with flashing lights, and an expert had to use mechanical switches to relay their desires to the machine. This was far too troublesome for the operators. The switches made reproducing work very time consuming. The switches were soon replaced by punch cards, while the lights evolved into printing devices. These advancements allowed the user to save their work. Once the program was written it could be run multiple times with little added effort. The users had to have intimate knowledge of the specific computer, and no doubt plenty of training. This was still only for the computing enthusiasts.
Video screens capable of displaying keyboard characters came along, which got the computer industry moving. This simplified the task of operating the machines, so now a non-specialist could now use computing for many applications. Graphics where integrated into the UI, at Xerox Palo Alto Research Center . A new age of computing began with their Graphical User Interface (GUI). A mouse was invented to move a pointer on the screen. The graphics now represent information to a user, as street signs always have. A picture is worth a thousand words after all. Xerox’s GUI design was driven by “ease of use.” They would present the user a limited set of options from which the user could choose. While selected icons, people don’t have to memorize and enter commands.
This focus on the needs of humans brought Steve Jobs to Xerox. He too was interested in friendlier, more graphical, computers for all. His company, Apple, would then hire a few researchers from Xerox . These new recruits were put to work designing a new GUI for the Mac. The MacUI was, so good, Bill Gates had to steal the “design, implementation and metaphors (look and feel).” He then led Microsoft into the operating system market.
The ability to save and reproduce one's work is vital to every application, and it has gotten much simpler to use. By saving a user’s actions one can implement Undo and Redo functions. The PalmOS, for example, has a very nice way to deal with saving user data. The key here is simplicity. Data is saved as it is entered. You can yank out the batteries while entering in a new appointment and as soon as you power up you'll be returned as you were. There is no, "File->SaveAs", menu operation, as in Windows. That is followed by a filename prompt. One save for the novice user is the file navigation GUI (see figure below). Why does a user need to use a file? Is it to communicate with the computer? No, The file is part of our computer’s organization. PalmOS abstracts even this fundamental computer tool from its users. Data is stored with the applications. After the PDA is synchronized with a computer the user can find his data all backed up under his name. This innovative user-friendly designing has kept PalmOS paired with the earliest and most successful PDAs.
Focusing on the needs of human beings allows more people able to use the product. Here are some general goals that are met within every effective UI. Operations should be predictable and consistent. The UI needs to be informative. Everything should be as simple as possible, but no simpler. We also find that versatility is an important part of a success application UI.
The easiest way to design a predictable UI is to have it operate in a standard way. A set of standards should be selected during the Defining Infrastructure phase of your software design. There are many industry standards and select of one will give your software a similar feel to everything that users are already comfortable with. Predictability is the most important goal because often a less effective technique becomes a standard even when better alternatives exist. We are creatures of habit and will prefer what we are used to, over learning a new interface. When informing the user of an event, wording of your text should be consistent. Icons behavior, look and feel should be consistent with how the real object would behave.
An informative UI will make users feel that they are involved. Displaying the state of the system and currently allowable actions is key. If a given function takes a lot of time, the progress should be displayed to the user, so they feel like something is happening.
Objects that your users need to complete their task should be visible. The layout of frequently used functions was a key design consideration in the PalmOS. Everything feature commonly used should be a single click away. Often for complex packages this is impossible, but functional groups can be clustered to match the particular job or screen. Then users would switch modes, and their quickly accessible functions would change to match.
If there is little or no forethought put into an application’s UI, it will be tailored to the programmer, one who thinks in digits and files. The best user interfaces are designed for humans. We humans are a diverse bunch. Software should be adaptable on the front end, to accommodate the different varieties of users. Most software packages provide many ways to perform a single task. Some allow one to select between a Beginner, Normal, and Expert user mode. 3dStudioMax has such flexibility that a user can load and save their UI (see fig. 2).
We are far from the end of UI advancements. As software becomes more complex to solve a greater range of problems, so must the UI. Three dimensional games and simulations require a special UI. Users can be completely submersed in these computer-generated environments. This idea of virtual reality is nothing new, but there is continual research to increase the realism of these fantasy worlds. This research carries over directly to UI. One such advancement is the use of header trackers. Users wear a device that will send positional and orientation information to the computer. This information allows the computer to accurately track the motion of the users head. New images will be displayed to the user’s head mounted displays (HMD). Two small LCD screens can be mounted in front of the user's eyes to display the world and any graphical additions, or a prism will reflect the graphics on a transparent LCD. As the user moves her head the virtual world appears to move in synchrony. These systems are used in medical diagnosis and microsurgery. The military and flight schools use them for training.
The design process for user interfaces is very iterative by nature. One needs feedback and should continually be reevaluating . It is this easily event driven architecture that updates users as their action results take place.
Event driven systems are also easily distributed, which is very helpful for large systems with many users or inputs. These systems are easily implemented with the Model View Control (MVC) pattern. This provides us the ability to query the system from a variety of views. This adds near infinite versatility. The University of North Carolina, a hot spot for UI related research, controls their STM over a network with a variety of interfaces over a network. A user can feel the atomic surface of a sample with forced feedback glove. They view it in 3d with a HMD. Both devices operate as input and as output devices over a network. Meanwhile, computations are done on one server and the STM is controlled from another.
Develop an interface-flow diagram from your use-case diagram. The job of screen layout should be that of the graphic artist, but unfortunately small software projects rarely have that luxury. Firstly, we will be sure not to let the screen become cluttered. Instead we should have multiple screens to navigate between. The navigation needs to be intuitive. In our culture we tend to look towards the bottom then the right because it’s the direction in which we read. This is where we should place our navigation or functional buttons. We should, however, never have to scroll down to see the buttons. Keep them visible. The default button should never have the ability to cause damage. This guideline could be broken, if the user chooses to make it the default option.
Feedback from users can be invaluable to improve the product UI between releases. One step better is to prototype the UI and have users work with it. Make improvement based on the users’ complaints and added requirements. You should continue to improve and refine the UI until negative the feedback dies off.
With careful consideration of users’ needs before programming, one can create a very effective UI. Users will enjoy the product, and a happy user is a return user. Predictability, Informatively, Simplicity, and Versatility will be considered