Lec 5: Usability Requirements
Introduction to Usability Requirements
Overview of the Course
- The lecture begins with an introduction to NPTEL's course on designing and implementing human-computer interfaces, focusing on usability requirements.
- The terms "interactive systems" and "human-computer interfaces" are used interchangeably, emphasizing their relevance in software applications for layman users.
Recap of Previous Lectures
- A systematic process is essential for developing usable interactive systems, referred to as the software development life cycle (SDLC).
- The SDLC tailored for interactive systems includes several stages that will be discussed throughout the course.
Stages of the Interactive Development Life Cycle
Key Stages Explained
- Feasibility Study: Initial assessment of whether development is feasible based on resources like manpower, cost, time, and computing resources.
- Requirement Gathering: Focuses on collecting end-user requirements crucial for creating a usable system.
Design Process
- Design-Prototyping-Evaluation Cycle: This iterative process involves designing the interface, prototyping it for feedback, refining based on evaluations until stabilization occurs.
- After finalizing design elements, code design follows where the interface design transitions into executable code.
Final Stages and Usability Testing
Completion and Deployment
- Once testing confirms functionality, a final usability study is conducted to identify any remaining issues before product launch.
- Post-finalization includes deployment and ongoing maintenance of the product.
Focus on Requirement Gathering
Transition from Feasibility Study
- The discussion shifts focus from feasibility studies to requirement gathering analysis and specification concerning usability requirements specifically.
User-Centered vs. System-Centered Design
- Emphasis is placed on user-centered design approaches that prioritize user needs over traditional system-centered designs.
Illustrative Example: Dilbert Comic Strip
Highlighting User-Centric Design Challenges
Understanding System-Centered vs. User-Centered Design
The Importance of User-Friendly Systems
- Dilbert suggests that systems should have a simple point-and-click interface to enhance usability for end users, contrasting with complex command-based systems that require precise input.
- If developers do not interact with customers, they may fail to understand user needs and expectations, highlighting the manager's support for simpler design approaches.
Complexity in System Design
- Dilbert notes that engineers might prefer creating complex systems that require users to reboot after errors, indicating a disconnect between developer interests and user experience.
- This comic strip illustrates a tendency among developers to prioritize their own understanding over actual user characteristics when designing products.
System-Centered vs. User-Centered Design
- The system-centered design focuses on what developers can easily build rather than addressing user requirements, leading to potential misalignment with user needs.
- Developers often prioritize their skills and interests over the actual needs of users, which is a fundamental flaw in system-centered design.
Key Differences Between Approaches
- In contrast to system-centered design, user-centered design emphasizes understanding users' abilities, goals, and context as essential factors in the development process.
- The distinction lies in focusing on actual user requirements rather than merely accommodating developer convenience or preferences.
Gathering Requirements for Applications
- When developing applications like a calendar app, it’s crucial to identify what constitutes valid requirements during the requirement gathering phase.
- Questions about platform compatibility (e.g., mobile platforms), programming languages (e.g., Java or JavaScript), and storage techniques (e.g., relational databases like MySQL) arise during this process.
Evaluating Requirement Validity
Feasibility and Usability Requirements in System Development
Understanding Feasibility Studies
- The development for mobile platforms is part of the feasibility study stage, not a usability requirement.
- Manpower resources are assessed during feasibility studies; these do not constitute usability requirements.
- Questions about data storage methods (e.g., RDBMS tools) relate to system design rather than requirements.
Objectives of Requirement Identification
- The core objective is to identify requirements that ensure usability, distinguishing them from other project aspects.
- Requirement identification involves gathering, analyzing, and specifying usability requirements for effective system design and implementation.
Non-Functional vs. Functional Requirements
- Usability requirements fall under non-functional requirements; they differ from functional requirements which have defined inputs and outputs.
- Non-functional requirements encompass system characteristics that cannot be expressed as functions.
Categories of Non-Functional Requirements
- Non-functional requirements can be categorized into performance-related, operating constraints, economic considerations, lifecycle needs, and interface issues.
Performance Related Non-Functional Requirements
- Key performance-related non-functional requirements include reliability (ensuring product dependability), security (protecting the product), and response time (ideal vs. practical).
Operating Constraints
Non-Functional Requirements in Software Development
Categories of Non-Functional Requirements
- The first category involves managing the size and accessibility of personal skill sets to ensure smooth development, maintenance, and updates.
- The second category focuses on economic considerations, addressing both immediate and long-term costs associated with design, development, and implementation.
- The third category pertains to design quality requirements, which evaluate the maintainability, enhanceability, and portability of the design documents produced after the design stage.
- The fourth category addresses interface issues related to how systems interact with their environment, users, and other systems. This includes hardware/software requirements for external system interfaces.
- Usability is emphasized as a critical aspect of interface-related non-functional requirements; ensuring that interactive systems are user-friendly for non-expert users is paramount.
Importance of Specifying Non-Functional Requirements
- Specifying non-functional requirements ensures compliance with legal standards and enhances product reliability while maintaining performance and scalability.
- Clear specifications help construct security policies for products by outlining expected outcomes from non-functional requirements.
- Properly defined non-functional requirements lead to improved user experience and ease of operation for both end-users and technicians responsible for software maintenance.
Consequences of Poor Specification
- Failing to specify non-functional requirements can result in dissatisfaction among users or clients as well as developers due to unclear expectations during development.
- Inadequate specification may lead to inconsistent software outcomes that do not meet desired standards or functionalities.
- Not addressing these specifications early can cause time delays and cost overruns when fixing issues later in the development process.
Focus on Usability Requirements
- Emphasizing usability within non-functional requirements is crucial since it directly impacts how easily laypersons can use the developed software product effectively.
- Future discussions will center around gathering usability requirements specifically while also learning how to articulate these needs clearly for effective system design conversion.
Recommended Reading