Understanding Software Requirements
Understanding Software Requirements
Functional requirements specify what the system must do, outlining the features and actions it should perform, such as allowing a user to reset their password via email. In contrast, non-functional requirements define constraints on the system, including performance, security, and appearance factors, like ensuring a password reset email is delivered within 5 seconds .
Contextual inquiry is a data gathering technique where interviews are conducted while the user works in their environment, following a master/apprentice model. An example of its application is observing a receptionist who uses a Post-it note to compensate for a software flaw, which leads to the requirement that 'Patient ID must be visible on the home screen' .
Scenarios differ from use cases in that they are informal narrative stories focused on a user trying to achieve a goal, capturing the messy and human side of interactions. Use cases, on the other hand, are formal, step-by-step descriptions of interactions between a user and the system, outlining main flows and alternative flows logically, like buying a ticket and handling card errors .
Persona creation impacts design decisions by providing a fictional yet data-driven representation of user groups, helping to focus the design process on specific needs and preferences. For instance, creating a persona like 'Bob, a construction worker with thick fingers' informs developers not to use small buttons, ensuring the design is accessible and user-friendly .
Environmental requirements determine the context in which a software system will operate by specifying physical, social, and technical conditions, which influence system design. Physical aspects include considerations like screen readability in sunlight, social aspects involve privacy concerns such as voice output in banking apps, and technical aspects pertain to compatibility with operating systems .
The contextual inquiry technique enhances requirement elicitation by providing in-depth insights into user behaviors and challenges within their natural work environment. This technique allows for the identification of implicit requirements and real-world issues that might not be captured through traditional interviews, leading to more relevant and usable requirements, such as the need for visible patient ID on software interfaces .
The 'Volere Shell' in HCI is a standard template used to write down software requirements. It includes components such as the 'Rationale,' which explains why a requirement is necessary, and the 'Fit Criteria,' which defines how to prove that the requirement has been successfully met. This structure ensures that requirements are clear, justified, and verifiable .
Defining requirements is crucial in software development because they serve as the blueprint for building the product. If this stage is done incorrectly, it results in building the wrong product perfectly, which means total project failure. Requirements clarify vague goals into concrete rules to avoid misinterpretations such as the 'I thought you meant X' disaster .
Personas and scenarios are useful because they translate abstract requirements into relatable, realistic representations of users and their contexts. Personas provide a specific focus by representing user archetypes, helping designers cater to particular audiences. Scenarios narrate user interactions in story form, aligning technical specifications with real user goals and behaviors, thereby improving user requirements alignment and empathy .
Non-functional requirements significantly impact the overall user experience by defining aspects such as performance, usability, and reliability. For instance, a non-functional requirement might ensure that a password reset email is sent within 5 seconds, which directly affects user satisfaction. Failure to meet these constraints can lead to frustration and reduced trust in the system, affecting its adoption and success .