Unit - 4: Hci in The Software Process
Unit - 4: Hci in The Software Process
Software Lifecycle is defined as the complete process of software development, from planning
and requirement analysis to design, implementation, testing, deployment, and maintenance.
Usability Engineering is defined as the process of designing software interfaces that are user-
friendly, efficient, and satisfying by focusing on the needs and behavior of the users.
Design is defined as the phase in which user requirements are transformed into a detailed plan
or blueprint to build the software system.
Software Development Life Cycle (SDLC) is the process followed to develop a software system in
a structured and efficient way. It consists of the following phases:
1. Requirement Analysis Phase: In this phase, all the requirements of the system are gathered by
interacting with the users and stakeholders to understand what the software should do.
2. Design Phase: Based on the requirements, a detailed architecture of the system is created. This
includes designing the system structure, database, user interface, and how different
components will interact.
3. Implementation and Unit Testing Phase: The actual code is written during implementation. Each
module is developed and tested individually (unit testing) to ensure that it works as expected.
4. Testing Phase: After all modules are combined, the entire system is tested to identify and fix
bugs or errors. This ensures that the system meets the required standards and functions
properly.
5. Deployment Phase: The tested software is installed and made operational in the user
environment. It becomes available for use by the end users.
6. Maintenance Phase: After deployment, the software is maintained to fix any issues that arise,
update features, and ensure the system continues to work well over time.
Verification and Validation (V&V) are two essential activities in the software development
process to ensure the quality and correctness of a system. Together, they form the testing
process, expressed as:
Verification
− Verification is the process of checking whether the software is being developed correctly
according to the design specifications and requirements.
− Activities include: Reviews, inspections, walkthroughs, and static analysis during development.
Validation
− Validation is the process of evaluating the final software to ensure it meets the user needs and
expectations.
− Activities include: System testing, user acceptance testing, and dynamic testing after
implementation.
Batch processing is a method where data and programs are collected together in batches and
processed without user interaction during the execution.
1. Tasks are not handled immediately, making it unsuitable for time-sensitive work.
2. Errors are only known after the entire batch is processed, which makes fixing problems difficult.
5. The system is not interactive and can be difficult for new users to use.
The Iterative Waterfall Model is a step-by-step approach to software development where each
phase can be revisited based on feedback before moving to the next phase.
4. Coding and Unit Testing: Write the code and test small parts of the program.
5. Integration and System Testing: Combine all parts and test the full system.
6. Maintenance: Make changes and fix problems after the software is used.
USABILITY ENGINEERING
The field of Human-Computer Interaction (HCI) focuses on improving how people interact with
computer systems to improve user performance and experience. Usability is no longer just
about the system itself but also about how it supports human tasks.
To design usable systems, experts from different fields like psychology, technical writing,
human factors, system design, economics, and law contribute their knowledge. These efforts
help in creating interfaces that are user-friendly, efficient, and accessible.
Usability Engineering is defined as the process of designing software interfaces that are user-
friendly, efficient, and satisfying by focusing on the needs and behavior of the users.
Designers aim to create high-quality interfaces that users find easy to use and competitors
admire. To achieve this, the design should focus on usability, flexibility and matching user
needs. These goals must be planned from the beginning, tested carefully, and maintained
within the project schedule.
1. Measuring Concept – This is about converting a general usability goal into a specific,
measurable aspect of the system. For example, measuring how easily a user can undo an
action.
2. Measuring Method – It defines how the usability feature will be measured. All other concepts
depend on this method.
3. Now Level – The current level of system performance based on existing usage or test data.
4. Worst Case – The minimum acceptable level of usability. If the system performs below this
level, it is considered not usable.
5. Best Case – The highest or ideal usability target that the system can achieve.
6. Planned Level – This is the usability level that designers and developers aim to reach during
development. It lies between the worst case and best case.
Usability Metrics
Usability can be measured using several criteria. Some of the most important ones include:
Success-to-failure ratio
To evaluate usability properly, it’s important to compare current performance (Now Level) with the
best and worst cases. The comparison can be made based on:
Competing systems
Prototypes or mock-ups
Past user behavior
Iterative Design is a process used in software and interface development where a design is
repeatedly tested, evaluated, and improved through several cycles.
Instead of trying to get everything perfect in one go, the system is built step by step with
regular feedback from users or stakeholders.
Each version of the system is slightly better than the previous one, and the process continues
until the final system is effective and user-friendly.
This method helps identify usability problems early, makes improvements faster, and allows
designers to adapt based on changing user needs or feedback.
1. Throwaway Prototype
− Throwaway prototypes are created based on initial requirements, but they are not used in the
final product.
− Their main purpose is to help users and developers understand requirements clearly before the
actual development begins.
− This approach allows for quick feedback from users, which helps in refining the requirements
early in the software development life cycle. Since the prototype is not meant to be part of the
final system, it can be quickly built and discarded after use.
− Throwaway prototypes are easy to develop, take less time, and focus only on presenting the
interface or idea. They do not include any actual working features.
2. Incremental Prototyping
− Incremental prototyping is a method where the final system is divided into smaller, manageable
prototypes.
− Each prototype represents a part or module of the complete system and is developed
individually. Once all the parts are ready, they are combined to form the full product.
− It also allows for easier testing and gradual improvements, making the process more flexible
and user-centered.
3. Evolutionary Prototyping
− Evolutionary prototyping, also known as breadboard prototyping, is a method where a basic but
working prototype is developed and gradually improved over time.
− Instead of defining all requirements upfront, this approach starts with well-understood
requirements and builds a core version of the system.
− New features and changes are added step-by-step based on user feedback and evolving needs.
− Eventually, the prototype becomes the final product and is delivered as a complete working
system.
1. Storyboards
− Storyboards are a series of hand-drawn or computer-generated sketches that show the steps a
user would follow to interact with a system. Each sketch represents one screen or action in the
system.
− They do not have any actual functionality but are useful in showing the overall flow of screens
and how the user navigates through them.
− Example: When designing a mobile banking app, a storyboard might show a user opening the
app, entering a PIN, selecting "Transfer Money," choosing a contact, and confirming the
transfer.
− These are working models of a system that look real but only a few features are active. It allows
users to click on buttons, navigate between screens, or see some outputs, but the system
doesn’t perform full operations.
− Such simulations are useful when you want to show a client or user how the final system may
behave and collect feedback before development.
− Example: A shopping website prototype may allow the user to browse products and add them
to a cart, but not actually complete a payment.
− This technique uses high-level programming languages or tools to create a working prototype
that closely represents the final product.
− These prototypes are interactive and can handle real inputs and give real outputs for certain
features.
− It takes more time and effort than storyboards or simulations, but it gives a more accurate idea
of system behavior and is good for refining both the interface and the system logic.
− Example: A prototype of a chat application built using Python and a UI framework like Tkinter
that allows sending and receiving basic text messages.
− Managers may wrongly assume the prototype is the final product because it looks finished,
even though it lacks full functionality.
− Repeated suggestions from users during prototype testing can lead to frequent changes and
increase the project's scope unexpectedly.
− Spending too much time improving the prototype may waste resources that should be used for
actual development.
− Focusing only on visual design and not documenting the system properly can create issues in
future maintenance or upgrades.
1. It requires more time as every version of the design is reviewed, tested, and updated before
finalization.
2. The cost increases due to repeated changes, reworking designs, and re-testing at each stage.
3. Too many suggestions or changes can create confusion about which ideas to accept and
implement.
4. Users may give wrong feedback on a partially functional system, which can misguide the next
design phase.
5. Teams might keep making small changes and struggle to decide when the design is complete,
delaying the project.
Prototyping in practice means using real-life situations or case studies to understand how
prototypes are used to improve system design.
− IBM developed a kiosk-style telephone system where users interacted with a computer by
pressing keys on the phone and listening to recorded voice messages.
− It was designed to help users complete tasks like getting information or customer support over
the phone.
− In this project, IBM created early prototypes with voice prompts and keypad instructions.
− These were tested by real users, and based on the feedback, they made changes to the system
such as simplifying the language, reordering options, and making navigation easier.
DESIGN RATIONALE
A Design Rationale refers to the documentation or explanation that supports the structure
(architecture) and behavior (functionality) of a computer system. It provides reasoning behind
the decisions made during the design process.
Although it is not a specific phase in the software development lifecycle, it is closely related to
design activities and helps in understanding why certain decisions were made.
2. It helps in maintaining and updating the system in the future because developers can trace why
a particular approach or design was chosen.
The Issue-Based Information System (IBIS) is a method used to record and discuss design decisions
in a structured way.
It represents the design process using a hierarchical model consisting of:
QOC stands for Questions, Options, and Criteria, and it’s a way to explore and compare different
design alternatives.
Question: A design issue or decision point (e.g., How should this function be implemented?).
This technique focuses on how human cognitive processes influence design decisions.
It captures the mental model and reasoning of the designer by explaining why a decision feels right
from a usability or psychological point of view.
It is particularly useful for evaluating designs that aim to match user behavior, perception, and
expectations, making the interface more intuitive.
DESIGN RULES
Design rules are guidelines or instructions used to help create user interfaces that are easy to
use, efficient, and consistent.
Design rules are classified based on two main dimensions: authority and generality
1. Authority refers to how strictly a rule must be followed. Some rules are mandatory and must be
followed exactly, while others are flexible and can be adjusted according to the situation.
2. Generality refers to how widely the rule can be applied. Some rules apply to many systems and
situations (general), while others are specific to a particular type of user, task, or system.
1. Principles – These are general design goals based on human behavior and psychology, such as
consistency, feedback, and visibility. They help guide overall thinking during design.
2. Standards – These are strict and official rules, often set by organizations, that must be followed
to ensure consistency across systems.
3. Guidelines – These are helpful suggestions that designers can choose to follow or adapt
depending on the design needs. They are more detailed than principles but not as strict as
standards.
A. Learnability
Learnability refers to how easily new users can understand and start using a system. A well-
designed interface should help users learn quickly and perform tasks without confusion. To support
learnability, several key principles are used:
1. Predictability
Users should be able to guess what will happen before performing an action. For example, clicking a
"Save" button should clearly mean that changes will be stored.
2. Familiarity
The design should match users' previous experiences and common standards, so they feel
comfortable. Using familiar icons, terms, or layouts helps reduce the learning effort.
3. Generalizability
What users learn in one part of the system should help them in other parts. For example, if pressing
“Enter” submits a form on one screen, it should do the same elsewhere.
4. Synthesizability
Users should be able to understand what has happened after performing an action. The system
should give clear feedback so users can mentally connect the cause (action) with the effect (result).
5. Consistency
Similar operations and elements should work the same way across the interface. This reduces
confusion and helps users build confidence as they interact more with the system.
B. Flexibility
Flexibility refers to how well a system allows different users to interact with it in various ways. A
flexible interface supports different preferences, working styles, and levels of experience. The
following principles support flexibility.
1. Dialogue Initiative
This refers to who controls the flow of interaction — the user or the system. A flexible system
lets users take the lead when needed, instead of always forcing a fixed sequence of steps.
2. Multithreading
Users should be able to perform multiple tasks at the same time or switch between tasks
without losing progress. For example, filling out a form while checking another page.
3. Task Migrability
The system should allow tasks to be transferred between the user and the system based on
what is easier or faster. For instance, users can type an address manually or let the system
autofill it.
4. Substitutivity
Users should be able to perform the same action in different ways. For example, saving a file
using a keyboard shortcut (Ctrl+S) or by clicking a "Save" button.
5. Customizability
Users should be able to adjust the interface to suit their preferences. This includes changing
layouts, color schemes, font sizes, or shortcut keys.
C. Robustness
Robustness refers to the system’s ability to support users in achieving their goals reliably, even
when unexpected problems occur. A robust system keeps the user informed, helps them recover
from errors, and ensures tasks are completed correctly. The following principles support
robustness:
1. Observability
The system should clearly show what is happening at every stage. Users must be able to
observe the system’s internal status through meaningful feedback, messages, or progress
indicators.
2. Recoverability
Users should be able to correct mistakes easily. The system must support undo options, error
messages with solutions, and steps to return to a safe state after an error.
3. Responsiveness
The system should respond quickly and appropriately to user inputs. Delays or lack of feedback
can confuse users and make the system seem unresponsive.
4. Task Conformance
The system should allow users to perform their real-world tasks accurately and efficiently. It
must support all parts of a task without forcing unnecessary steps or limitations.
STANDARDS
These standards help designers create consistent interfaces that meet the needs of a wide
range of users.
They are usually developed by national or international bodies like ISO (International
Organization for Standardization) and cover aspects such as layout, interaction flow, icons,
menus, and error messages.
For designers of equipment and systems, human factors are divided into two important parts:
1. Cognitive Factors
These involve mental processes such as perception, memory, reasoning, and decision-making.
Cognitive factors help in designing interfaces that align with how users think and process
information.
2. Physical Factors
These include aspects like body measurements, reach, posture, and physical comfort. It helps in
designing hardware or tools (e.g., keyboards, touchscreens) that are physically comfortable and
safe to use.
Ben Shneiderman proposed 8 Golden Rules to guide the design of user-friendly interfaces:
Jakob Nielsen proposed 10 usability heuristics, commonly used for evaluating user interfaces:
1. The system should always keep users informed through appropriate and timely feedback that
reflects the current status of the system after user actions.
2. The interface should use language, terms, and concepts that are familiar to the user, aligning
with real-world conventions rather than system-oriented terminology.
3. Users should be provided with clearly marked "exit" options to undo or cancel operations
easily, supporting both freedom and control.
4. The interface must maintain consistency in design, terminology, and functionality so that users
do not have to wonder whether different actions or words mean the same thing.
5. The design should prevent errors by providing careful constraints, confirmations, and clear
guidance to avoid incorrect inputs or unintended operations.
6. The system should reduce the user’s memory load by making objects, actions, and options
visible rather than requiring recall from memory.
7. The interface should cater to both novice and expert users by providing a clear and simple
design, while also supporting shortcuts and customization for advanced users.
8. The design must present only relevant information, avoiding clutter. Minimalist design ensures
that users are not overwhelmed and can focus on their tasks.
9. Error messages should be expressed in plain language, clearly stating the issue and suggesting
constructive steps for resolution.
10. The system should offer accessible help and documentation, which is easy to search, focused on
the user’s task, and clearly structured to provide needed assistance efficiently.
1. Visibility – Users should see all options and system status clearly.
HCI PATTERNS
HCI patterns are reusable solutions to common problems that users face while interacting with
software systems.
These patterns are based on real-world design experiences and help designers create interfaces
that are effective, user-friendly, and consistent.
Search pattern: Add a search box on top for users to find content easily.
1. HCI patterns are used to solve real problems in interface design, while design rules are general
guidelines that help create good designs.
2. HCI patterns are more practical and flexible. They are like ready-made solutions you can adapt,
but design rules are often fixed and must be followed.
3. HCI patterns are about what to do in certain situations, whereas design rules are about how to
do things correctly (like keeping text readable or colors consistent).
4. Patterns are based on experience and usability, while rules are based on standards or best
practices.
5. For example, an HCI pattern might suggest using a wizard for multi-step forms, but a design rule
might say "Use clear labels for every input field."
EVALUATION TECHNIQUES
GOALS OF EVALUATION
Evaluation is the process of assessing a system design to check whether it meets user
requirements and behaves as expected.
It is not limited to one phase, evaluation happens throughout the design lifecycle, with results
used to improve the design.
Types of Evaluation
2. By End Users – Requires a working version and is usually done later in the lifecycle.
Goals of Evaluation
1. System Functionality
Checks if the system provides the required features and helps users complete their tasks effectively.
2. User Experience
Measures if the system is easy to learn, use, and if users find it pleasant and satisfying.
3. Problem Identification
Helps discover if the system causes errors, confusion, or unexpected results for users.
This type of evaluation plays a vital role in the early stages of development, especially when the
product is still in its design or prototyping phase.
It is an efficient, low-cost, and faster approach to finding potential problems in the system
without the need for full-scale user testing.
There are several techniques of expert analysis, which help in improving the quality of user
interaction:
1. Cognitive Walkthrough
Cognitive Walkthrough is a task-specific evaluation technique where usability experts analyze the
steps a new or inexperienced user would take to perform a specific task in the interface.
This technique mainly focuses on the system’s learnability. Evaluators simulate a user’s thought
process and ask a series of questions at each step, such as:
3. Heuristic Evaluation
In this method, experts check the system based on some common usability rules called heuristics.
These are simple design rules that help make systems easy to use.
Experts go through the system and note any problems that break these rules. For example, if the
system gives no feedback after clicking a button, or if different screens are not consistent.
Later, all the problems are combined and sorted by how serious they are.
Refer to “Golden Rules and Heuristics” topic for Nielsen’s 10 Heuristic Principles.
This method is quick, does not need real users, and is good for checking early designs or mockups.
3. Model-Based Evaluation
This method uses theoretical models of how users behave, instead of testing with users. One
popular model is GOMS, which breaks tasks into steps like goals, actions, and rules.
Here, experts use information from earlier user studies or existing systems. They look at what
worked well and what problems happened in past designs.
For example, a team redesigning a travel app can use feedback from the old app to improve the
new one.
EVALUATION THROUGH USER PARTICIPATION
Evaluation through user participation involves directly involving real users in the assessment of
a system during its design or post-development stages.
This helps designers understand how users interact with the interface, identify usability
problems, and improve the overall user experience based on actual feedback.
Such evaluations may take place in a laboratory or real-world (field) setting. In labs, controlled
environments help monitor specific user behaviors using tools such as screen recording or eye-
tracking devices. Field studies, on the other hand, provide realistic insights into how users
behave in their natural working environments, although these may be less controlled.
Users may be asked to perform tasks while thinking aloud, explaining what they are doing and
why, which helps reveal confusion or poor design elements.
In cooperative evaluation, users and developers interact during the session, allowing mutual
clarification. This helps catch usability issues early with active feedback.
To analyze user behavior, different data collection techniques are used. These include paper
and pencil notes, audio and video recordings, and computer logging, which captures user
actions like mouse movements or clicks. User diaries or notebooks allow participants to note
their thoughts and problems over time.
Interviews are conducted after usage sessions to gather detailed insights into user satisfaction
and problems. Questionnaires offer structured ways to gather feedback from a large number of
users efficiently and can include multiple-choice, rating scales, and open-ended questions.
Some advanced techniques include eye tracking, which shows where users focus their attention
on the screen, and physiological measures like skin conductivity or heart rate to detect stress,
frustration, or engagement.
Additional modern techniques include remote usability testing, where users interact with the
system from a different location, often used in web and mobile testing.
Quantitative feedback refers to collecting measurable data during evaluation. It helps in making
objective comparisons between systems or designs. For example, in A/B testing, users interact
with two different interface versions and their performance is measured. Another method is
the System Usability Scale (SUS), where users rate the system on a scale to get an overall
usability score.
Cognitive walkthroughs with users allow step-by-step evaluation of task sequences, where
users explain their expectations at each step.
In some cases, user shadowing is performed where evaluators observe users in real-time while
using the system in their environment without interrupting, which gives deep contextual
insight.
By using these diverse techniques, designers and researchers can understand not just what
users do, but why they do it, helping to build more user-friendly and effective systems.
1. Stage of Development: Early designs can be tested using simple expert methods like heuristic
evaluation. Fully built systems can use usability testing with real users.
2. Type of System: Simple systems may use basic methods, but complex ones (like group tools)
may need special techniques like group evaluation.
3. Purpose of Evaluation: If you want to improve the interface, use think-aloud or user feedback. If
you want to measure performance, use timed tasks or data-based methods.
4. User Availability: If users aren’t available, use expert reviews. If they are, use surveys,
interviews, or direct testing.
5. Time and Budget: Some methods take more time or money. If limited, go for quick, low-cost
methods like questionnaires or walkthroughs.
6. Type of Feedback Needed: For user opinions, use interviews or think-aloud. For numbers and
data, use experiments and performance tracking.
7. Evaluator Skills: Some methods need experts (like model-based evaluation), while others like
surveys can be done easily.
8. User Environment: Choose lab testing or field studies depending on whether the system is used
in a controlled place or in real-world settings.
9. How Often You Evaluate: If evaluation is needed often, choose quick methods like forms or mini
walkthroughs.
10. Ethical Issues: Always consider user privacy and get their permission, especially in recordings or
detailed observation.
UNIVERSAL DESIGN
Universal Design refers to the process of designing products and systems so that they can be
accessed, understood, and used by all people, regardless of their age, size, ability, or disability.
The goal is to make things usable in as many situations as possible.
1. Equitable Use – The design is useful and accessible to people with diverse abilities.
2. Flexibility in Use – The design supports a wide range of individual preferences and abilities.
3. Simple and Intuitive – The design is easy to understand, regardless of the user's experience or
skills.
5. Tolerance for Error – The design minimizes risks and the consequences of mistakes.
6. Low Physical Effort – The design can be used efficiently and comfortably with minimal fatigue.
7. Size and Space for Approach and Use – The design provides appropriate space for use,
regardless of the user’s body size, posture, or mobility.
Multimodal interaction refers to the use of multiple human senses or communication modes to
interact with a computer system.
These include visual, auditory, touch, and sometimes even movement or gesture-based
channels. The goal is to make systems more natural, flexible, and accessible by allowing users to
combine or choose between modes of input/output according to their convenience, ability, and
the situation.
Sound plays an important role in enhancing user interaction, especially when visual attention is
limited. It is categorized into two types: Speech and Non-speech.
1. Speech
Speech is a language-based audio interface that allows users to interact with the system using
spoken commands. Key aspects include:
Speech Recognition: The process of converting spoken language into machine-readable text or
commands. This allows users to speak naturally and perform tasks like voice search. It's widely
used in digital assistants like Siri, Alexa, and Google Assistant.
Speech Synthesis: Also called Text-to-Speech (TTS), this involves generating spoken output from
written text. It helps visually impaired users or those who prefer auditory information.
Uninterrupted/Natural Speech: Good speech interfaces should handle pauses and accents
gracefully, ensuring a natural conversation without repeated corrections or rigid command
structures.
2. Non-Speech
Non-speech audio provides symbolic or functional feedback without using spoken words. These
sounds are faster to recognize and can alert users subtly or urgently. Types include:
Auditory Icons: Real-world or natural sounds mapped to actions, e.g., the sound of crumpling
paper when deleting a file. These are intuitive and easy to understand.
Earcons: Structured, abstract musical sounds used to represent actions, alerts, or states. For
example, a series of beeps might indicate a loading process.
Family Earcons: Related sets of earcons that use similar tones or rhythms to help users
associate and learn them as a group (e.g., tones for different levels of warnings).
Speech vs. Non-Speech
1. Speech is more expressive and suited for complex or natural interaction, while non-speech
sounds are better for alerts or quick cues.
3. Non-speech can work in noisy environments or as background signals, while speech needs
clarity and silence for recognition.
Haptic interaction involves the sense of touch to give feedback or accept input. It includes
vibrations, pressure, or force feedback provided through a device like a smartphone,
smartwatch, game controller, or VR controller.
Haptic feedback is used to confirm actions, like a light vibration when tapping a touchscreen. It
is useful when visual or audio feedback isn't feasible, such as when a phone is on silent.
Haptic systems improve accessibility and engagement and are widely used in mobile devices,
wearables, car interfaces, and immersive experiences.
Handwriting recognition allows users to write naturally on a screen using a stylus or finger, and
the system converts it into digital text. It is used in:
Digital note-taking apps, Signature verification systems, Filling out digital forms
Gesture recognition involves identifying human motions, typically of the hands or body, using
cameras, sensors, or touchscreens. It allows touchless interaction and includes: