THE UNIVERSITY OF MARYLAND
UNIVERSITY COLLEGE
GRADUATE SCHOOL OF
MANAGEMENT AND TECHNOLOGY

A STUDENT RESEARCH REPORT
for
CSMN 658: Software Reliability and Reusability


Additional Challenges Related to User Interface Reliability



Chisholm (1994) used the term "tactioneering" to refer to user-centered software design. The word taction means touch or contact. Tactioneering is "a measure of quality and intensity of interaction between a person and something else; in this case software." Accordingly, the software designer's job is to "maximize the taction between the user and the software within system constraints."

The idea of tactioneering highlights two areas that make user interface development especially challenging from a reliability standpoint: intensity and quality. For the purposes of this paper, intensity refers to the "usability" of the software. Quality refers to the ability of the software to perform the required tasks.

Many developers use prototyping as a tool for improving usability and quality. However, prototyping is just one of several methods/practices for enhancing interface usability/quality, and is generally used for requirements clarification (Davis, 1992). These methods/practices makeup part of "usability engineering." Usability engineering is an attempt to mature the user interface development process, both externally and internally (Curtis, 1993). Maturity in this case is a transition from an art-like process to a more industrial process, and, eventually, to an automated process (Lai, 1993).

This paper looks at usability engineering and how it impacts user interface reliability. Specifically, the paper focuses on the usability and quality issues related to interactive software development. For usability, the paper looks at the costs/benefits of usability testing, goes through a simple discount method for usability testing, and covers a list of general usability principles. For quality, the paper looks at the need for automated interface testing tools, and goes through a feature list for these tools with examples from current market software.

Curtis (1993) talked about maturity of interfaces as being both external and internal. Maturity from an internal perspective is concerned with an organization's engineering and management practices as they are applied to interface development. External maturity is how the user perceives the product and the organization that built it. That perception is "the user's experience with all interfaces - graphics, dialogues, documentation, help services - they interact with using the product." External maturity is, essentially, usability. It is important that the development organization focuses on both types of maturity. "While no interface enhancement will fix defective software, a bad user interface can ruin an otherwise flawless package. Users often can't make the distinction."

As with other reliability elements, usability is subject to tradeoffs. Nielsen (1993) briefly described a cost/benefit model for applying usability engineering. The costs associated with usability include: personnel costs of the staff doing the usability analyses, miscellaneous facilities costs, and personnel costs of the user testers. These costs vary from project to project based on interface complexity and the number of user types.

Benefits vary according to the type of software. In-house benefits include reduced training time, increased user productivity, and increased user satisfaction. Increased user satisfaction is difficult to quantify financially, although it can lead to reduced absenteeism and turnover. Reduced training time is a one-time savings concentrated soon after the system release. Improved productivity provides small benefits on a day to day basis.

Commercial benefits are reduced support costs and increased sales. Support savings come from reduced support services staffing. Increased sales coming from usability is harder to measure, since usability is just one of many factors determining market size/share. However, PC trade journal studies show that users rate ease of use as important as functionality and performance; in one study usability accounted for 35% of the final evaluation.

Usability cost/benefits can be described by the following formula:

UP(i) = N(1 - (1 - )i)

Where UP(i) is the number of usability problems in i observations,

N is the total number of problems in the interface,

is the probability of finding the average usability problem when software is run for a single user.

Figure 1

A plot of the curve for a medium size project is shown in Figure 1. The ratio shows a benefit of 50 times the cost of a single user, with the optimum benefit/cost ratio of around 70 times the cost with three users (Nielsen, 1993). These findings suggest that even a minimal amount of usability testing is dramatically beneficial, with diminishing returns reached after a relatively small number of users.

Nielsen (1995) highlights some of the minimalist properties of usability engineering in what he calls "discount usability engineering." "Discount methods are more informal and rely less on statistics" based on the premise that they are faster, cheaper, and, unless the product is safety critical, "finding every last usability problem is not serious." Nielsen's technique is a sequence of four studies: card sorting to discover categories, testing for icon intuitiveness, distribution of cards to icons, and mock-up walkthroughs.

Card sorting uncovers users' models of the application's structure. The development team writes each product primitive function on an index card and randomly place the cards on a table top. Users then group the cards into small piles based on their perception of what primitives belong together. Users give names to their piles, then repeat the process by grouping piles into larger piles. The process produces a bottom-up menu hierarch from the users point-of-view.

Icon intuitiveness is testing to see if the users interpretation of icons is consistent with the development group's. Even if icons have accompanying labels, the icons themselves should be clear enough for users to make a selection.

Card distribution is a top-down implementation of card sorting. The development group makes enlarged paper printouts of the planned menus and/or icons and places them in their relative positions on a large table. Users are then given index cards with primitive functions on them and asked to place them under the appropriate interface object. At the end of the distribution, users comment on each interface object's aesthetics and list the objects they liked/disliked.

Walkthroughs involve taking users through a series of screen prints covering various standard transactions. Developers ask users what information they think would be behind each interface object. Users also comment on the general aesthetics of the interface and list objects they liked/disliked.

Achieving consistent high user-software taction requires certain development process maturities. Although there is no consensus methodology, there seems to be a consensus that a development organization needs to establish and integrate some set of interface design principles. These principles will vary based on product type, size, and target audience, but some generic design principles are listed below:

The unpredictable nature of human-interface interaction calls for running numerous tests to demonstrate a measure of quality. The number of variables, combinations of values, and order of operations involved make traditional test methods unwieldy. "The difficulty of testing grows exponentially with every variable in the system (Hanna, 1993)." Additionally, most of these interfaces are being developed using visual programming tools and/or CASE tools. These tools empower developers to create large, complex interfaces in far less time than traditional development methods, meaning more system to test and less time to do it.

Most organizations still generate test cases manually. However, in a 1993 study, 77% of development organizations expressed a need for automated interface testing tools and 21% had already purchased testing software (Korzenlowski, 1994). Testing's failure to keep pace with more complex development threatens to offset productivity gains from development technologies (Hanna, 1993).

Software testing tools are evolving. The first stage, low-level capture/replay and verification tools, originated and migrated from character-based systems. These have given way to second, third, and fourth generation of tools with more advanced features, network extensions, and object oriented extensions respectively (Hanna, 1993). Like most technologies in their infancy, there is no standard list of features for software testing tools. However, the various tools in the market do help provide a list of desired features:

In summary, interfaces pose verification challenges for testers beyond those of more conventional software. These challenges converge around the issues of interface usability and interface functionality.

Nielsen highlighted dramatic paybacks from even minimal usability testing. Benefit/cost ratios of between 50 and 70 to 1 make a case that "it is always well worth the cost to do usability engineering."

Nielsen also consistently emphasized the minimalist nature of usability engineering, stating that "the best results are often gained by combining several small tests with three to five users and iterating the design between each evaluation." These methods can be relatively small in terms of procedures as well as the number of tests, as shown by discount usability engineering. "Even if your project schedule seems too compressed to do much usability testing, you can still do something, and some usability testing is so much more than none."

Testing techniques are one part of usability engineering. The other components are design/implementation principles that developers need to either integrate into their processes or use as a basis for re-engineering processes. This type of organizational discipline is not unique to interface development, but it is a necessary part of maturing to the point where the developer can turn out consistent, usable products.

"Good GUI designs don't just happen naturally. They require that the developer learn and apply some basic principles (Hobart, 1995)." The list derived in this paper can be summarized as: conceptual integrity: simple and straightforward; grammatical: learnable; well mapped: understandable; custom fit: malleable; self helpful: remedying and educating; trustworthy: dependable; engaging: fun.

Looking at interface functional testing, the literature review shows a rapidly expanding need for automated testing tools. This is due to a number of factors, including the increased use of CASE tools, visual programming languages, and the trend of migrating from mainframe systems to mini-computer- and PC-based systems. Developers test the interface's functionality during module, integration, and acceptance testing. Maintenance actions also require regression testing.

The market for software testing tools is relatively immature. The tools themselves are evolving; the features list presented earlier represents the state-of-the-practice in testing software. One problem is that both developers and customers are trying to decide what they want in testing software. Because of this, many organizations are waiting on the sideline for some industry standards to emerge before committing to a tool. With over 95% of companies surveyed responding that they had either purchased testing software or were interested in software testing tools, and the increasing demand for those tools, a majority of development organizations will move to using automated testing tools to some degree in the near to mid term, given that some standardization takes place.

Lastly, the role development organizations give to software testing tools is important. Developers need to realize "there is no replacement for a person's sense of rightness in assessing interface software." A tool can not replace the common-sense of a QA engineer. "However, it does relieve much of the QA engineer's burden." Usability engineering is a mix of usability testing and interface functional testing. Developers need to determine the right proportions of each, making sure that minimums for each are maintained, depending on their project type and audience.



References

Chisholm, J. (March, 1994). The Art of Software Design. Unix Review. pp. 11-18.

Constantine, L.L. (July, 1994). Interfaces for Intermediates. IEEE Software. pp. 96-99.

Curtis, W. (July, 1993). Maturity from the User's Point of View. IEEE Software. pp. 89-90.

Damore, K. (December 27, 1993). AutoTester lets users try out applications. Infoworld. pp. 20.

Davis, A.M. (September, 1992). Operational Prototyping: A New Development Approach. IEEE Software. pp. 70-78.

Hanna, M. (February, 1993). GUIs Pose Challenge to Software Testers. Software Magazine. pp. 35-44.

Hefley, W. (March, 1995). Helping Users Help Themselves. IEEE Software. pp. 93-95.

Hobart, J. (September, 1995). Principles of Good GUI Design. Unix Review. pp. 37-46.

Korzenlowski, P. (October, 1994). Bug-eyed C/S Developers Look to Automate Tests. Software Magazine. pp. 77-81.

Lai, R. (July, 1993). The Move to Mature Processes. IEEE Software. pp. 14-17.

Nielsen, J. (January, 1995). Applying Discount Usability Engineering. IEEE Software. pp. 98-100.

Nielsen, J. (November, 1993). Is Usability Engineering Really Worth It? IEEE Software. pp. 90-92.

Last updated 4 years ago. 3 page views.