Chef-It! Background & Use Cases Requirements Backend Architecture Design Rationale Conclusion

Requirements List

To get started with our design, we are tasked with generating a requirements list of desired behaviors and critical non-functional requirements. From the rough outline of features in the preceding section, we are able to generate a functional requirements list shown below in Table B-1:

Identifier Requirement/Description
FR-1 Application must allow users to generate unique user profiles
FR-2 Application must retain recipes within the datastores
FR-3 Application must call recipes and present to the user when requested
FR-4 Application must allow filtering of recipes based upon pre-defined criteria
FR-5 Application must store and build internal associations for video recipes
FR-6 Application must allow for and retain user feedback on recipes
FR-7 Application must allow for each recipe to be user rated and retain that rating
FR-8 Application must be available for iOS (API 13+) and Android (API 23+)
FR-9 Application must implement a service that allows for in-app payment
FR-10 Application must implement location services microservice for grocer locating
FR-11 Application must implement a shopping cart microservice that links to local grocers
FR-12 Application must allow users to search recipes for keywords
FR-13 Application must be accessible by commonly used internet browsers

Table B-1. Functional requirements for the Chef It! application.

While these features define the basic behavior of the application, they do not paint the entire picture of the system. The non-functional requirements below in Table B-2 will define the targeted user experience of the application.

Identifier Requirement/Description
NFR-1 Application must retain user information in a secure fashion
NFR-2 Application must have high availability (>99.999%)
NFR-3 Application must be able to support a high number of connections
NFR-4 Application must be able to reliably transport customer data
NFR-5 Application must have low latency even under heavy load
NFR-6 Application must be computationally efficient
NFR-7 Application must be easy to navigate for non-tech users

Table B-2. Non-Functional requirements for the Chef It! application.

These requirements will be referenced by their identifier when necessary to further provide implementation detail.

Table B-3 (below) contains a list of the critical design choices in our application. Each design component is given a unique identifier and description.

Design Component Identifier Component Description
DC-1 Content Discovery Process of interfacing between Client and Backend to retrieve and display information and return information to the Backend
DC-2 Load Balancer Cloud service to route traffic for reliability and efficiency
DC-3 Chef-It! Control Plane Provides client location data and manages digital interfaces with grocers
DC-4 Datastores Distributed database to house application information
DC-5 Business Logic Microservices Loosely coupled subprocesses that perform operational tasks
DC-6 API Gateway Service API management system that resides between the Client and Backend
DC-7 Application API A collection of APIs that handle common application tasks
DC-8 Computing Instances Cloud-sourced distributed processing power
DC-9 Processing Pipeline (Event-Driven Architecture) Data acquisition and refinement process needed to sustain microservices

Table B-3. Design Component Matrix describing the components of our high-level design.

The Traceability Matrix below, in Table B-4, relates the Chef-It! functional and non-functional requirements to the design component that enables us to achieve said requirement. Some requirements are not explicity addressed by our primary design components, but are important to include in the lower level design process. These instances are given a "Design ID" of "Sys Req".

Requirement Type Requirement ID Design ID(s)
Functional FR-1 DC-1, 3, 5, 7, 9
Functional FR-2 DC-4
Functional FR-3 DC-1, 4, 5, 6, 7
Functional FR-4 DC-1, 5, 7
Functional FR-5 DC-4, 9
Functional FR-6 DC-4, 5, 6, 7
Functional FR-7 DC-1, 5, 6, 7
Functional FR-8 Sys Req
Functional FR-8 Sys Req
Functional FR-9 DC-5, 6, 7
Functional FR-10 DC-3, 4, 5
Functional FR-11 DC-1, 3, 5
Functional FR-12 DC-1, 4, 7
Functional FR-13 Sys Req
Non-Functional NFR-1 DC-1, 5, 6, 7
Non-Functional NFR-2 DC-5, 8, 9
Non-Functional NFR-3 DC-2
Non-Functional NFR-4 DC-4, 5
Non-Functional NFR-5 DC-2, 6, 7, 8, 9
Non-Functional NFR-6 DC-6
Non-Functional NFR-7 Sys Req

Table B-4. Traceability Matrix describing the relationships between requirements and components in our high-level design. “Sys Req” refers to defined system requirements that are needed regardless of components.