Application Requirement
Published: 2021-06-25 13:47:40

## Introduction

The requirements should not to be too excessive. For now, make sure to take the absolute minimum set of requirements. Not the things that "nice to have" and optional. Just the minimum requirements for the minimum viable product.

It's okay to not have a complete requirements in the beginning. The requirements can always be changed as the project development grows.

Take note that, the requirements should not contain anything related with classes, object orientation yet for this stage.

To show how the system requirements works, let's have an imaginary application idea that we want to build.

**Example Application ⇒ Restaurant Reservation and Food Delivery Application**

## FURPS+ Requirements

One of the most commonly used model is acronym FURPS+. The FURPS+ requirement can fulfilled the functional and non functional requirements of an application.

1. Functionality ⇒ Capability, Reusability, Security (main features of an app)
2. Usability ⇒ Human Factors, Aesthetics, Consistency, Documentation (affects the user)
3. Reliability ⇒ Availability, Failure Rate & Duration, Predictability
4. Performance ⇒ Speed, Efficiency, Resource Consumption, Scalability
5. Supportability ⇒ Testability, Extensibility, Serviceability, Configurability
6. Design (the system design)
7. Implementation (how to implement the system)
8. Interface (the interface of internal system)
9. Physical (hardware and physical constraints)

## Functional Requirements

The functional requirements should describes "what the application must do".
The requirements should start with:

- The system **must do...**
- The application **must do...**

###### Examples:
1. Allow customers to reserve a table in the restaurant before they arrived.
2. Allow customers to go through the menu list
3. Show the date availability for reservation
4. Show the menu availability and prices
5. Have the menu category
6. Have options for dine in, take away or delivery
7. Allow customers to have their account in the system
8. Allow customers to save any menu they want
9. Allow customers to view the detail and progress of food delivery
10. Allow customers to view the reservation details
11. Allow customers to change the reservation
12. Allow customers to cancel the reservation
13. Have contact section

## Non-Functional Requirements

The non functional requirements should describes, maintainability, reliability, usability and availability.
So, each non functional requirements should start with:

- The application **should be...**

###### Examples:
1. Accessible from mobile and desktop
2. User friendly and responsive
3. Available during peak hours (lunch and dinner)

## Conclusion
These requirements might not be the final one and can always be changed in the future. But at least, start writing some requirements before doing anything so that you know what you want to develop later on.

The next steps will be creating Use Cases and User Stories to refine the requirements a little bit more before start designing and developing anything.

Anyway, hope this article give some useful information to you. I'm still learning and will continue creating article here so that I really understand what I'm currently learning.

If something not right in this article, please comment below so that I learn some new stuff to improve my skill.

Thank you for reading my article.