HCI in the software process

Notes

Study Notes

HCI Notes: HCI in the Software Process

HCI and the Software Process

Integrating User-Centered Design (UCD) principles into software engineering methodologies.

1. Why Integrate HCI into the Software Process?

Traditional software engineering focuses primarily on functional requirements, efficiency, and robustness. HCI, or Usability Engineering, ensures the resulting system is **effective, efficient, and satisfying** for the end-user.

  • **Avoid Rework:** Fixing usability problems late in the cycle is 10-100 times more expensive than addressing them early in the design phase.
  • **Acceptance:** Systems that are difficult or frustrating to use, regardless of technical excellence, will be rejected by users.
  • **Goal:** To achieve a true **User-Centered Design (UCD)** approach, making user needs central to the entire development lifecycle.

2. The User-Centered Design (UCD) Process

UCD is an iterative process where the loop of design, testing, and measurement is repeated until a defined level of usability is achieved.

UCD Activities (Aligned with ISO 9241-210)

  • **Understand the Context of Use:** Identify the users, their tasks, and the environmental conditions.
  • **Specify the User Requirements:** Translate context data into measurable usability goals (e.g., "90% of novice users can complete Task X in under 5 minutes").
  • **Produce Design Solutions:** Develop conceptual and physical designs (prototyping).
  • **Evaluate the Designs:** Test the designs against the specified usability requirements.

3. HCI Integration with SDLC Models

A. Waterfall Model

Linear, sequential process where each phase must be completed before the next begins.

  • **HCI Placement:** Usability requirements are gathered early (during the **Requirements** phase). Design work is performed during the **Design** phase.
  • **Problem:** The lack of feedback loop makes it difficult to iterate on usability. Usability testing is often relegated to the **Testing** phase, which is too late.

B. Iterative/Spiral Models

Development is broken into smaller cycles, allowing for risk analysis and refinement in each cycle.

  • **HCI Advantage:** Naturally supports the UCD iterative cycle. Each spiral or sprint includes a mini-UCD loop (design, prototype, evaluate).
  • **Preferred Method:** This model, along with modern **Agile** methods, is far more conducive to robust usability engineering.

4. HCI Activities at Each Stage

Specific HCI activities must be inserted into the corresponding software development phases:

A. Analysis/Requirements Phase

  • **Activity:** Contextual Inquiry, Task Analysis, Persona creation.
  • **Output:** Usability Goals, User Requirements Specification.

B. Design Phase

  • **Activity:** Conceptual design, Storyboarding, Low/High-fidelity Prototyping.
  • **Output:** Wireframes, Mockups, Interaction Specifications.

C. Implementation Phase

  • **Activity:** Developing code that adheres to the interface specifications; rapid prototyping.

D. Deployment and Maintenance Phase

  • **Activity:** Longitudinal evaluation, A/B testing, collecting user feedback (surveys, analytics).
  • **Output:** Input for the next iteration of the UCD cycle.

5. The Role of Prototypes and Evaluation

HCI stresses that interface design should precede significant coding to maximize the chance of correcting flaws without high costs.

  • **Low-Fidelity Prototyping (Early):** Paper prototypes and sketches are cheap and easily discarded, making early exploration feasible.
  • **Heuristic Evaluation:** Usability experts review the interface against established usability principles (Nielsen's heuristics). This provides fast, cost-effective feedback before user testing.
  • **Usability Testing:** The definitive measure; real users perform benchmark tasks. This should be done early and often throughout the UCD process.