Lec 3: Engineering for Usability
Engineering for Usability
Overview of Previous Lectures
- The course has previously covered an introduction to interactive systems, including core challenges in their design.
- Historical evolution of user-centric system design and development was discussed, emphasizing the importance of usability.
- The primary focus is on creating usable interactive systems that meet the needs and expectations of layman users.
Importance of Usability
- A systematic approach is necessary for building user-centric software to ensure usability.
- The Software Development Life Cycle (SDLC) is introduced as a framework to capture all design and development activities systematically.
Benefits of Stage-Wise Development
- Stage-wise development allows for a structured approach to software creation, facilitating better problem-solving in software development.
- An example involving the creation of a calendar app illustrates how to start with requirements gathering before proceeding with design.
Requirements Gathering for Calendar App
- Key requirements include a grid-like structure similar to physical calendars, with headings representing months and sub-grids for days.
- Additional features may include highlighting the current date within the app's interface.
Design Approaches for Calendar App
- One possible design mimics physical calendars using a 3x4 grid layout representing 12 months, with each cell containing sub-grids for days.
Understanding Software Development Life Cycles
The Concept of Time in Software Design
- When considering software design, moving backward from January leads to the previous year, while moving forward from December leads to the next year. This illustrates how time can influence design choices.
Exploring Alternative Designs
- There are numerous ways to approach software design; thus, determining the best option requires careful consideration and analysis of alternatives.
Systematic Study through SDLC
- A systematic study of various designs' pros and cons is essential for selecting the optimal solution. This process is encapsulated in what we refer to as Software Development Life Cycles (SDLC).
Advantages of Using SDLC
- Utilizing SDLC allows for a clearer and more organized approach to problem-solving, which is crucial when developing large software projects. Without this structure, projects can quickly become chaotic.
Overview of Different SDLC Models
- Various models have been proposed over time to understand the software development process better, including the waterfall model, spiral model, and evolutionary model.
The Waterfall Model Explained
- The waterfall model is one of the most fundamental and well-known SDLC models primarily used for educational purposes rather than actual development.
Stages of the Waterfall Model
- Feasibility Study:
- Assess whether resources such as budget and manpower are sufficient before proceeding with development.
- Requirement Gathering & Analysis:
- Identify user requirements necessary for building the software.
- Design Stage:
- Focus on both interface design and system/code architecture.
- Coding & Testing:
- Implementing code while simultaneously testing it for bugs.
- Integration & Deployment:
- Finalize unit tests before integrating components into a complete system followed by deployment and maintenance.
Visual Representation of Waterfall Model
- The stages are depicted sequentially like a waterfall, emphasizing their linear progression through feasibility study, requirement gathering, design, coding/testing, integration/testing, deployment/maintenance.
Iterative Version of Waterfall Model
- An iterative version allows revisiting earlier stages based on findings at later stages (e.g., returning to feasibility after requirement analysis).
Introduction to Spiral Model
Understanding the Spiral Model in Software Development
Iterative Process Overview
- The spiral model allows for multiple iterations, with each iteration covering all four quadrants of development. This flexibility supports an unlimited number of cycles based on project requirements.
Phases of Each Iteration
- Each cycle consists of four distinct phases or quadrants:
- First Quadrant: Identifies objectives and associated risks for product development.
- In the first quadrant, objectives are set alongside risk identification.
- The second quadrant focuses on risk assessment and mitigation, analyzing identified risks in detail to develop strategies for reduction.
Developmental Phase Insights
- The third quadrant is dedicated to the developmental phase where actual building or prototyping occurs. Initial iterations typically involve prototypes, while later ones focus on final product development.
- Evaluation occurs during each iteration; products or prototypes are assessed based on progress and feedback received.
Final Quadrant and Review Process
- The fourth quadrant involves reviewing results achieved from customer evaluations in the previous phase and planning for subsequent iterations if necessary.
Characteristics of the Spiral Model
- Unlike traditional models like Waterfall, the spiral model addresses higher-level concerns within a systematic software development life cycle (SDLC), progressively developing more complex software versions through iterative cycles.
Challenges in Traditional SDLC Models
User-Centric Design Considerations
- Effective interactive software design necessitates user involvement at every stage, which can lead to numerous required iterations.
Limitations of Waterfall Model
- Traditional SDLC models such as Waterfall may complicate user feedback integration due to their linear nature, resulting in messy visualizations when attempting to incorporate necessary iterations between stages.
Further Reading Recommendations
- For deeper insights into these topics:
- Rajiv Mall's Fundamentals of Software Engineering (Chapter 2)