Software Engineering for Students A Programming Approach
Software Engineering for Students A Programming Approach Software Engineering for Students A Programming Approach
CHAPTER 5 This chapter explains: 5.1 ● Introduction User interface design ■ the principles, techniques and guidelines for designing a user interface. The interface that the user sees when they use the computer is the single, paramount aspect of the system. The interface is the packaging for software. The user does not know and probably does not care how the system works (provided that it is reliable and fast), but they do care what it does and how to use it. If it is easy to learn, simple to use, straightforward and forgiving, the user will be encouraged to make good use of what’s inside. If not, they won’t. The user interface is often the yardstick by which a system is judged. Interfaces can be hard to learn, difficult to use, unforgiving and sometimes totally confusing. An interface which is difficult to use will, at best, result in a high level of user errors. At worst, it will cause the software to be discarded, irrespective of its functionality. These are the challenges of user interface design. User interface design offers the software engineer: ■ some principles to guide interface design (e.g. simplicity, learnability) ■ some guidelines for good interfaces ■ a process for developing good interfaces, based on prototyping ■ methods for evaluating interfaces. Today prototyping (Chapter 23) is considered essential for user interface development – a prototype is made available to users and the resulting feedback used to improve the interface design.
54 Chapter 5 ■ User interface design It is common in user interface design to distinguish between principles and guidelines (or rules): ■ principles are high level and general. An example of a principle is: maintain consistency throughout the interface. ■ guidelines are specific and detailed. An example of a guideline is: black text on a white background is clearer than white text on a black background. Guidelines are direct, immediate and therefore easy to apply, but principles have to be interpreted and applied to the specific system. 5.2 ● An inter-disciplinary field User interface design or human–computer interaction (HCI) is very much an interdisciplinary subject, with contributions from computer science, cognitive psychology, sociology and ergonomics. Cognitive scientists are concerned with how human beings perceive the world, think and behave at an individual level. Sociologists study groups of people and their interactions. Ergonomics is about designing systems that are easy to use. Software engineers must often take responsibility for user interface design as well as the design of the software to implement that interface. These different disciplines bring different perspectives to bear on designing the human–computer interface. User interface design has as much to do with the study of people as it does with technology. Who is the user? How does the user learn to interact with a new system? How does the user interpret information produced by the system? What will the user expect of the system? These are just a few of the questions that must be answered as part of user interface design. User interface design must take into account the needs, experience and capabilities of the user. It is nowadays considered important that potential users should be involved in the design process. The different specialisms reflect different views about the interaction between people and computers. At one level it is possible to view HCI as the interaction between one individual and the computer. At this level, the concerns are about such things as the amount of information displayed on the screen and the colors chosen. In the workplace, however, the computer system is often part of the wider context of the work being carried out. Usually, other people are also involved in the work, so that the sociology of the workplace has a role. The questions here may be: Who does what? How can person A and person B communicate most effectively? 5.3 ● Styles of human–computer interface The manner in which users tell the computer what they want to do has changed dramatically over the last ten years. Broadly, there have been three types of interface: command line, menu and GUI (graphical user interface). In the early days of computing, the only mode of HCI was the command line interface. Communication was purely textual and was driven either via commands or by
- Page 26 and 27: CHAPTER 1 This chapter: ■ reviews
- Page 28 and 29: 1.3 The cost of software production
- Page 30 and 31: 100% 10% 1970 SELF-TEST QUESTION Ha
- Page 32 and 33: Analysis and design 1 /3 Coding 1 /
- Page 34 and 35: SELF-TEST QUESTION 1.7 Maintenance
- Page 36 and 37: 1.8 Reliability 13 in the first pla
- Page 38 and 39: 1.8 Reliability 15 contain a comma
- Page 40 and 41: Ease of maintenance Reliability Con
- Page 42 and 43: Exercises 19 • Exercises These ex
- Page 44 and 45: Further reading 21 Analyses of the
- Page 46 and 47: ■ documentation ■ maintenance
- Page 48 and 49: 2.2 The tasks 25 An important examp
- Page 50 and 51: 2.4 Methodology 27 reality. Like an
- Page 52 and 53: ■ error free ■ fault ■ tested
- Page 54 and 55: 3.2 ● Technical feasibility 3.3 C
- Page 56 and 57: 3.5 Case study 33 The hardware cost
- Page 58 and 59: Answers to self-test questions 3.1
- Page 60 and 61: 4.2 The concept of a requirement 37
- Page 62 and 63: 4.3 The qualities of a specificatio
- Page 64 and 65: 4.5 The requirements specification
- Page 66 and 67: 4.6 The structure of a specificatio
- Page 68 and 69: 4.7 ● Use cases 4.7 Use cases 45
- Page 70 and 71: Summary The ideal characteristics o
- Page 72: Further reading 49 Further reading
- Page 78 and 79: 5.3 Styles of human-computer interf
- Page 80 and 81: 5.5 Design principles and guideline
- Page 82 and 83: 5.5 Design principles and guideline
- Page 84 and 85: SELF-TEST QUESTION 5.2 What problem
- Page 86 and 87: 5.8 Help systems 63 Our plan is to
- Page 88 and 89: Further reading 65 5.5 Design a use
- Page 90 and 91: CHAPTER 6 Modularity This chapter e
- Page 92 and 93: 6.2 Why modularity? 69 observed fau
- Page 94 and 95: Figure 6.1 Two alternative software
- Page 96 and 97: ■ a simple program is more likely
- Page 98 and 99: 6.6 Information hiding 75 The class
- Page 100 and 101: 6.8 ● Coupling 6.8 Coupling 77 We
- Page 102 and 103: 6. Method calls with parameters tha
- Page 104 and 105: 3. Temporal cohesion 6.9 Cohesion 8
- Page 106 and 107: > } public void setY(int newY) { y
- Page 108 and 109: • Exercises 6.1 What is modularit
- Page 110 and 111: CHAPTER 7 Structured programming Th
- Page 112 and 113: 7.2 Arguments against goto 89 If we
- Page 114 and 115: ■ if-then-else ■ while-do or re
- Page 116 and 117: 7.3 Arguments in favor of goto 93 l
- Page 118 and 119: 7.4 Selecting control structures 95
- Page 120 and 121: while do if endif then else endWhil
- Page 122 and 123: • Exercises 7.1 Review the argume
- Page 124 and 125: count = 0 loop: count = count + 1 i
54 Chapter 5 ■ User interface design<br />
It is common in user interface design to distinguish between principles and guidelines<br />
(or rules):<br />
■ principles are high level and general. An example of a principle is: maintain consistency<br />
throughout the interface.<br />
■ guidelines are specific and detailed. An example of a guideline is: black text on a<br />
white background is clearer than white text on a black background.<br />
Guidelines are direct, immediate and there<strong>for</strong>e easy to apply, but principles have to be<br />
interpreted and applied to the specific system.<br />
5.2 ● An inter-disciplinary field<br />
User interface design or human–computer interaction (HCI) is very much an interdisciplinary<br />
subject, with contributions from computer science, cognitive psychology,<br />
sociology and ergonomics. Cognitive scientists are concerned with how human beings<br />
perceive the world, think and behave at an individual level. Sociologists study groups of<br />
people and their interactions. Ergonomics is about designing systems that are easy to<br />
use. <strong>Software</strong> engineers must often take responsibility <strong>for</strong> user interface design as well<br />
as the design of the software to implement that interface. These different disciplines<br />
bring different perspectives to bear on designing the human–computer interface.<br />
User interface design has as much to do with the study of people as it does with technology.<br />
Who is the user? How does the user learn to interact with a new system? How<br />
does the user interpret in<strong>for</strong>mation produced by the system? What will the user expect<br />
of the system? These are just a few of the questions that must be answered as part of<br />
user interface design. User interface design must take into account the needs, experience<br />
and capabilities of the user. It is nowadays considered important that potential<br />
users should be involved in the design process.<br />
The different specialisms reflect different views about the interaction between people<br />
and computers. At one level it is possible to view HCI as the interaction between one<br />
individual and the computer. At this level, the concerns are about such things as the<br />
amount of in<strong>for</strong>mation displayed on the screen and the colors chosen. In the workplace,<br />
however, the computer system is often part of the wider context of the work being carried<br />
out. Usually, other people are also involved in the work, so that the sociology of<br />
the workplace has a role. The questions here may be: Who does what? How can person<br />
A and person B communicate most effectively?<br />
5.3 ● Styles of human–computer interface<br />
The manner in which users tell the computer what they want to do has changed dramatically<br />
over the last ten years. Broadly, there have been three types of interface: command<br />
line, menu and GUI (graphical user interface).<br />
In the early days of computing, the only mode of HCI was the command line interface.<br />
Communication was purely textual and was driven either via commands or by