Skip to content

Requirements

Maria Husmann edited this page Aug 13, 2024 · 1 revision

Requirements engineering

Requirements engineering for a software project "involves finding out what people want from a computer system, and understanding what their needs mean in terms of design" (source: Interaction Design Foundation). The process of requirements engineering includes setting the scope of the project based on research and communication with stakeholders. Many of the typical requirments engingeering techniques are covered in our UX classes, in this class we will keep this phase shorter since we focus on the implementation of the project.

User stories

"A user story is an informal, general explanation of a software feature written from the perspective of the end user. Its purpose is to articulate how a software feature will provide value to the customer." (source: Atlassian).

User stories can be expressed in the following form:

"As a [persona], I want to [functionality], so that [benefit]."

Here are some example user stories for Ilias:

  • As a lecturer, I want to create a project assignment for my class, so that my students are informed.
  • As a student, I want to see when the deadline is for my project delivery, so that I can plan my work.
  • As a student, I want to receive an email 1 day before the deadline, so I don't miss any assignments.
  • As a lecturer, I want to download all handed-in projects in one go, so that I can review them efficiently.

Functional requirements

While the user story is written from the perspective of user, functional requirements are formulated from the perspective of what a system must be able to do. A user story is typically broken down into multiple functional requirements. The functional requirements should be very granular and as detailed as possible. In a larger team, it is possible that you, as a developer, receive user stories from the UX team or product manager and it is your role to break them into functional requirements.

From the above user stories we can derive the following functional requirements for Ilias (and more)

  • Users can log in to the systems.
  • Users can have a lecturer or a student role for each class.
  • Students and lecturer are assigned to classes based on MyCampus
  • Lecturer can create assignments for their classes and set a deadline
  • Students can access information about assignments of the classes they are enrolled in
  • The system sends a reminder email 24 hours before a deadline to all students enrolled in the class
  • Students can upload files to assignments to hand in their work
  • Multiple submissions can be downloaded in bulk (zip file) by a lecturer
  • ...

Non-functional requirements

A non-functional requirement specifies how a system should do something.

Some examples

  • Multi-language support (German, English)
  • Scalability (10'000 concurrent users)
  • Performance (time to interaction < 1s)
  • Supported browsers (Chrome version xy, Firefox, ...)
  • Responsiveness (works on mobile, desktop etc.)
  • Security
  • Accessibility (e.g. usable with a screen-reader)
  • ...

Your task

  • Create a requirement analysis for your project: Write a small set of user stories. Derive functional requirements from them and define non-functional requirements. Document your user stories, the functional and non-functional requirements.

Sources / reading material

  1. User stories
  2. Requirement engineering
  3. Non-functional requirements overview
  4. Writing non-functional requirements
  5. Non-functional requirements
  6. Contentful CMS
  7. Github student developer pack
  8. Requirements analysis
Clone this wiki locally