PHÁT BIỂU BÀI TOÁN
Phát biểu bài toán
Theo phương pháp nấu ăn truyền thống, người nội trợ thường gặp khó khăn trong việc ghi chép công thức và thực hiện các bước theo trình tự Việc tạo thực đơn hàng ngày trở nên phức tạp khi phải tìm kiếm từng trang sách để tham khảo công thức Hơn nữa, việc lưu trữ và ghi chép công thức bằng tay dễ dẫn đến mất mát, hư hỏng hoặc ướt trong quá trình nấu ăn.
Mặc dù có rất nhiều công thức nấu ăn trên internet, nhưng việc đánh giá độ ngon của chúng lại rất khó khăn Nhiều công thức chỉ nhằm mục đích thu hút lượt xem và chưa được thử nghiệm thực tế.
Quy trình quản lý cũ không hiệu quả, cần một hệ thống nấu ăn tối ưu hơn Hệ thống này sẽ hỗ trợ người dùng từ việc tìm công thức, xem nguyên liệu, tạo thực đơn đến trình tự thực hiện, giúp tiết kiệm thời gian và công sức Việc sử dụng một hệ thống đồng bộ và xuyên suốt không chỉ nâng cao hiệu quả mà còn đảm bảo các bước thực hiện đúng theo công thức Trong tương lai, hệ thống này sẽ đáp ứng tốt hơn nhu cầu của người dùng trong thời đại số hóa.
Khảo sát hiện trạng các phần mềm hiện có
Sách Nấu Ăn là một ứng dụng dạy nấu ăn với hơn 13,900 công thức chế biến món ngon được cập nhật liên tục Ứng dụng không chỉ cung cấp hướng dẫn chi tiết về công thức nấu ăn mà còn chia sẻ những mẹo vặt hữu ích giúp việc nấu ăn trở nên dễ dàng hơn.
Nhiều công thức món ngon và được cập nhật liên tục
Hướng dẫn nấu chi tiết, đơn giản, dễ hình dung
Mẹo vặt nấu ăn cho món ngon thêm hoàn hảo
Lưu và chia sẻ bài viết với mọi người
Không cho phép tạo công thức nấu ăn của riêng người dùng
Không cho phép tạo cộng động trong ứng dụng
Chỉ có chủ ứng dụng mới có thể thêm, bớt công thức
UI/UX của ứng dụng khá tệ
Sách Nấu Ăn là ứng dụng dạy nấu ăn với hơn 13,900 công thức chế biến món ngon, được cập nhật thường xuyên Ứng dụng không chỉ cung cấp hướng dẫn chi tiết về các công thức nấu ăn mà còn chia sẻ những mẹo vặt hữu ích, giúp việc nấu ăn trở nên dễ dàng và thú vị hơn.
Nhiều công thức món ngon và được cập nhật liên tục
Hướng dẫn nấu chi tiết, đơn giản, dễ hình dung
Mẹo vặt nấu ăn cho món ngon thêm hoàn hảo
Lưu và chia sẻ bài viết với mọi người
Không cho phép tạo công thức nấu ăn của riêng người dùng
Không cho phép tạo cộng động trong ứng dụng
Chỉ có chủ ứng dụng mới có thể thêm, bớt công thức
UI/UX của ứng dụng khá tệ
Cooky là nền tảng chia sẻ công thức nấu ăn, giúp người dùng nhanh chóng tham khảo cách chế biến món ăn từ các đầu bếp và nhãn hàng thực phẩm thông qua video và hình ảnh Ngoài việc học kỹ năng nấu ăn, Cooky còn mang đến trải nghiệm giải trí với các video thú vị, những món ăn ngon và các mẹo quản lý bếp hiệu quả cho gia đình.
Nhiều công thức món ngon và được cập nhật liên tục
Tham khảo cách thực hiện thông qua video, hình ảnh
Chỉ các tips để quản lý bếp của gia đình
Cooky cung cấp dịch vụ giao thực phẩm đến tận nhà
Quá nhiều tính năng nhưng UX chưa được thiết kế hợp lý, khó khăn cho người dùng mới
Giao diện nấu ăn chưa tốt.
YÊU CẦU CỦA HỆ THỐNG
Yêu cầu nghiệp vụ
STT Tên yêu cầu Biểu mẫu Qui định Ghi chú
1 Xem công thức nấu ăn BM1 Thành viên
2 Tìm kiếm công thức món ăn theo bộ lọc BM2 QĐ2 Thành viên
3 Ghim món ăn yêu thích BM3 QĐ3 Thành viên
4 Xem danh sách món ăn yêu thích BM4 QĐ4 Thành viên
5 Đăng nhập BM5 QĐ5 Khách
7 Đăng công thức BM7 QĐ7 Thành viên
8 Quản lý công thức cá nhân BM8 QĐ8 Thành viên
9 Quản lý thông tin cá nhân BM9 QĐ9 Thành viên
10 Tạo thực đơn cho bữa ăn BM10 QĐ10 Thành viên
11 Tính năng “Khám phá các món ăn” BM11 QĐ11 Thành viên
12 Tính năng “Video hướng dẫn nấu ăn từ Youtube” BM12 QĐ12 Thành viên
Danh sách yêu cầu và biểu mẫu
BM1 Xem công thức món ăn
Tên món ăn: Danh mục món ăn:
Calorie: Các bước thực hiện:
Hình ảnh món ăn: Nguyên liệu: Đánh giá: Thời gian nấu:
Biểu mẫu 2 và qui định 2
BM2 Tìm kiếm công thức nấu ăn
Tên công thức: Danh mục công thức:
QĐ2: Danh mục công thức thuộc bảng danh mục trên database
Biểu mẫu 3 và qui định 3
BM3 Ghim món ăn yêu thích
Tên món ăn: Danh mục món ăn:
Calorie: Các bước thực hiện:
Hình ảnh món ăn: Nguyên liệu: Đánh giá: Thời gian nấu:
QĐ3: Món ăn yêu thích sẽ được lưu Offline để người dùng có thể dễ dàng truy cập
Biểu mẫu 4 và qui định 4
BM4 Xem danh sách món ăn yêu thích
QĐ4: Danh sách món ăn yêu thích của người dùng cũng được lưu Offline
Biểu mẫu 5 và qui định 5
QĐ5: Phải đúng định dạng Email thì mới tiến hành đăng nhập
Biểu mẫu 7 và qui định 7
Tên món ăn: Danh mục món ăn:
Calorie: Các bước thực hiện:
Hình ảnh món ăn: Nguyên liệu: Đánh giá: Thời gian nấu:
QĐ7: Các bước thực hiện và nguyên liệu bao gồm nhiều phần tử Danh mục món ăn thuộc một trong các danh mục trên database
Biểu mẫu 8 và qui định8
BM8 Quản lý công thức cá nhân
QĐ8: Bao gồm các thao tác chỉnh sửa và xoá công thức
Biểu mẫu 9 và qui định 9
BM9 Quản lý thông tin cá nhân
Mật khẩu: Ảnh đại diện:
Quốc gia: Tỉnh/ Thành phố:
QĐ9: Email không thể thay đổi, mật khẩu phải trên 8 ký tự
Biểu mẫu 10 và qui định 10
BM10 Tạo thực đơn cho bữa ăn
QĐ10: Chọn từ món ăn yêu thích để thêm vào thực đơn theo ngày trong tuần
Biểu mẫu 11 và qui định 11
BM11 Tính năng khám phá các món ăn
QĐ11: Danh sách các món ăn khi phân loại món ăn thuộc nhóm Trending
Biểu mẫu 12 và qui định 12
BM12 Tính năng Video hướng dẫn nấu ăn từ Youtube
STT Tên video Mô tả
QĐ12: Danh sách bao gồm các video nấu ăn nổi tiếng trên Youtube.
Yêu cầu hiệu quả
STT Nghiệp vụ Tốc độ xử lý Dung lượng lưu trữ
1 Xem công thức nấu ăn 500 yêu cầu/giây
2 Tìm kiếm công thức món ăn theo bộ lọc
3 Ghim món ăn yêu thích Ngay tức thì
4 Xem danh sách món ăn yêu thích 500 yêu cầu/phút
5 Đăng nhập 500 yêu cầu/giây
6 Đăng ký 500 yêu cầu/giây
7 Đăng công thức 500 yêu cầu/phút
8 Quản lý công thức cá nhân 500 yêu cầu/phút
9 Quản lý thông tin cá nhân 500 yêu cầu/phút
10 Tạo thực đơn cho bữa ăn 500 yêu cầu/phút
11 Tính năng “Khám phá các món ăn”
12 Tính năng “Video hướng dẫn nấu ăn từ Youtube”
Yêu cầu tiện dụng
STT Nghiệp vụ Mức độ dễ học Mức độ dễ sử dụng Ghi chú
1 Xem công thức nấu ăn Không cần hướng dẫn Dễ thao tác
2 Tìm kiếm công thức món ăn theo bộ lọc
Dễ thao tác, xử lý đúng các thông tin được nhập
3 Ghim món ăn yêu thích 1 phút hướng dẫn Dễ thao tác
4 Xem danh sách món ăn yêu thích
1 phút hướng dẫn Dễ thao tác
5 Đăng nhập Không cần hướng dẫn
Dễ thao tác, xử lý đúng các thông tin được nhập
6 Đăng ký Không cần hướng dẫn
Dễ thao tác, xử lý đúng các thông tin được nhập
7 Đăng công thức 5 phút hướng dẫn
Dễ thao tác, xử lý đúng các thông tin được nhập
8 Quản lý công thức cá nhân 2 phút hướng dẫn
Dễ thao tác, xử lý đúng các thông tin được nhập
9 Quản lý thông tin cá nhân Không cần hướng dẫn
Dễ thao tác, xử lý đúng các thông tin được nhập
10 Tạo thực đơn cho bữa ăn 1 phút hướng dẫn
Dễ thao tác, xử lý đúng các thông tin được nhập
11 Tính năng “Khám phá các món ăn”
Không cần hướng dẫn Dễ thao tác
12 Tính năng “Video hướng dẫn nấu ăn từ Youtube”
Không cần hướng dẫn Dễ thao tác
Bảng trách nhiệm cho từng yêu cầu
STT Nghiệp vụ Người dùng Phần mềm Ghi chú
1 Xem công thức nấu ăn Chọn xem công thức nấu ăn
Trả về công thức nấu ăn người dùng cần xem
2 Tìm kiếm công thức món ăn theo bộ lọc
Cung cấp thông tin về tên món ăn hoặc danh mục món ăn
Tìm kiếm theo searchIndex tên món ăn hoặc theo danh mục
3 Ghim món ăn yêu thích Chọn nút Save Ghi nhận Cho phép hủy, cập nhật
4 Xem danh sách món ăn yêu thích
Trả về danh sách yêu thích cho người dùng
Cung cấp thông tin email, mật khẩu
Kiểm tra quy định, ghi nhận
Cung cấp thông tin email, mật khẩu
Kiểm tra hợp lê, ghi nhận
Cho phép cập nhật, hủy
Cung cấp các thông tin cần thiết của một công thức nấu ăn hiển thị trên màn hình
Kiểm tra hợp lê, ghi nhận
Cho phép cập nhật, hủy
8 Quản lý công thức cá nhân
Có thể sửa, xoá các công thức của người dùng
Kiểm tra hợp lệ, ghi nhận
9 Quản lý thông tin cá nhân
Cung cấp thêm thông tin về người dùng
Kiểm tra hợp lệ, ghi nhận
10 Tạo thực đơn cho bữa ăn
Chọn các món ăn trong mục yêu thích
Kiểm tra hợp lệ, ghi nhận
11 Tính năng “Khám phá các món ăn”
Danh sách các món ăn phổ biến
12 Tính năng “Video hướng dẫn nấu ăn từ Youtube”
Danh sách các video hướng dẫn nấu ăn nổi tiếng trên Youtube
STT Nghiệp vụ Người dùng Phần mềm Ghi chú
1 Xem công thức nấu ăn Cập nhật theo hồ sơ mới
2 Tìm kiếm công thức món ăn theo bộ lọc
Cập nhật theo giá trị mới
3 Ghim món ăn yêu thích Cập nhật theo giá trị mới
4 Xem danh sách món ăn yêu thích
7 Đăng công thức Thêm mới thông báo
Cập nhật theo giá trị mới
8 Quản lý công thức cá nhân
Cập nhật theo giá trị mới
9 Quản lý thông tin cá nhân
10 Tạo thực đơn cho bữa ăn
Cập nhật dựa trên địa điểm thi
11 Tính năng “Khám phá các món ăn”
12 Tính năng “Video hướng dẫn nấu ăn từ Youtube”
13 Gộp bài thi theo phòng thi
Có thể thêm mới theo giá trị mới
17 Báo cáo phổ điểm theo môn thi
Cập nhật dựa trên khối thi
Báo cáo thống kê số lượng nguyện vọng đăng ký theo ngành
Cập nhật dựa trên ngành thi
Thêm mới người dùng, (cung cấp nhóm quyền)
Có thể thêm mới theo giá trị mới
Thêm nhóm quyền mới (Cung cấp các quyền)
Có thể thêm mới theo giá trị mới
STT Nghiệp vụ Người dùng Phần mềm Ghi chú
1 Xem công thức nấu ăn Chuẩn bị thông tin nhập vào
Thực hiện đúng theo yêu cầu
2 Tìm kiếm công thức món ăn theo bộ lọc
Chuẩn bị thông tin nhập vào
Thực hiện đúng theo yêu cầu
3 Ghim món ăn yêu thích Chuẩn bị thông tin nhập vào
Thực hiện đúng theo yêu cầu
4 Xem danh sách món ăn yêu thích
Chuẩn bị thông tin nhập vào
Thực hiện đúng theo yêu cầu
5 Đăng nhập Chuẩn bị thông tin nhập vào
Thực hiện đúng theo yêu cầu
6 Đăng ký Chuẩn bị thông tin nhập vào
Thực hiện đúng theo yêu cầu
7 Đăng công thức Chuẩn bị thông tin nhập vào
Thực hiện đúng theo yêu cầu
8 Quản lý công thức cá nhân
Chuẩn bị thông tin nhập vào
Thực hiện đúng theo yêu cầu
9 Quản lý thông tin cá nhân
Chuẩn bị thông tin nhập vào
Thực hiện đúng theo yêu cầu
10 Tạo thực đơn cho bữa ăn Chuẩn bị thông tin nhập vào
Thực hiện đúng theo yêu cầu
11 Tính năng “Khám phá các món ăn”
Thực hiện đúng theo yêu cầu
12 Tính năng “Video hướng dẫn nấu ăn từ Youtube”
Chuẩn bị thông tin nhập vào
Thực hiện đúng theo yêu cầu
STT Nghiệp vụ Người dùng Phần mềm Ghi chú
1 Xem công thức nấu ăn Thực hiện đúng theo yêu cầu
2 Tìm kiếm công thức món ăn theo bộ lọc Đọc hướng dẫn sử dụng
Thực hiện đúng theo yêu cầu
3 Ghim món ăn yêu thích Đọc hướng dẫn sử dụng
Thực hiện đúng theo yêu cầu
4 Xem danh sách món ăn yêu thích Đọc hướng dẫn sử dụng
Thực hiện đúng theo yêu cầu
5 Đăng nhập Đọc hướng dẫn sử dụng
Thực hiện đúng theo yêu cầu
6 Đăng ký Đọc hướng dẫn sử dụng
Thực hiện đúng theo yêu cầu
7 Đăng công thức Đọc hướng dẫn sử dụng
Thực hiện đúng theo yêu cầu
8 Quản lý công thức cá nhân Đọc hướng dẫn sử dụng
Thực hiện đúng theo yêu cầu
9 Quản lý thông tin cá nhân Đọc hướng dẫn sử dụng
Thực hiện đúng theo yêu cầu
10 Tạo thực đơn cho bữa ăn Đọc hướng dẫn sử dụng
Thực hiện đúng theo yêu cầu
11 Tính năng “Khám phá các món ăn”
Thực hiện đúng theo yêu cầu
12 Tính năng “Video hướng dẫn nấu ăn từ Youtube”
Thực hiện đúng theo yêu cầu
Yêu cầu phần cứng
2.5.1.1 Phần cứng Điện thoại thông minh
2.5.1.2 Phần mềm Điện thoại thông minh
Hệ điều hành: Android 5 trở lên, iOS 12 trở lên
Có kết nối internet để truy cập đến server
Hệ thống máy chủ được sử dụng bằng Firebase của Google nên không có yêu cầu đặc biệt.
MÔ HÌNH USECASE
Sơ đồ Use-case
Sơ đồ Use-case dành cho Khách
Sơ đồ Use-case dành cho Người dùng
Danh sách các Actor
STT Tên Actor Ý nghĩa/Ghi chú
1 Khách Người lần đầu truy cập vào hệ thống
Người đã đăng ký vào hệ thống, có thể chia sẻ công thức nấu ăn, xem công thức người dùng khác chia sẻ…
Danh sách các Use-case
Actor Tên Use-case Ý nghĩa/Ghi chú
Xem công thức nấu ăn
4 Tìm kiếm công thức nấu ăn
5 Đăng công thức nấu ăn
6 Tạo thực đơn cho bữa ăn
7 Ghim công thức vào mục yêu thích
8 Xem món ăn yêu thích
9 Quản lý thông tin cá nhân
Đặc tả Use-case
Đặc tả Use-case Đăng ký
Tên chức năng Đăng ký
Tóm tắt Người dùng đăng ký tài khoản để đăng nhập vào hệ thống
Mục đích Cấp tài khoản cho người dùng truy cập vào hệ thống Điều kiện tiên quyết
PRE-1 Thiết bị của người dùng phải kết nối internet khi thực hiện đăng ký Điều kiện lúc sau POST-1 Người dùng đăng ký thành công
1.0 Đăng ký hệ thống thành công
1 Người dùng truy cập vào ứng dụng
2 Nhấn nút “Register Your Account”
3 Người dùng nhập các thông tin đăng ký
5 Hệ thống lưu thông tin đăng ký thành công
1.0.E1 Email đã có người dùng để đăng ký Điểm mở rộng Không có Đặc tả Use-case Đăng nhập
Tên chức năng Đăng Nhập
Tóm tắt Người dùng đăng nhập tài khoản để truy cập vào hệ thống
Mục đích Hệ thống cho phép người dùng truy cập Điều kiện tiên quyết
PRE-1 Thiết bị của người dùng phải kết nối internet khi thực hiện đăng nhập
PRE-2 Người dùng đã có tài khoản Điều kiện lúc sau POST-1 Người dùng đăng nhập thành công
2.0 Đăng nhập hệ thống thành công
1 Người dùng truy cập vào ứng dụng
4 Người dùng nhập tài khoản và mật khẩu
6 Hệ thống xác thực thông tin đăng nhập thành công và cho phép người dùng khách truy cập vào hệ thống
Quy trình thay thế Không có
2.0.E2 Đăng nhập hệ thống không thành công
1 Hệ thống xác thực thông tin đăng nhập không thành công và hiển thị thông báo Điểm mở rộng Không có Đặc tả Use-case Xem công thức nấu ăn
Tên chức năng Xem công thức nấu ăn
Primary Actor Người dùng Secondary
Tóm tắt Người dùng xem công thức nấu ăn được chia sẻ trên ứng dụng
Mục đích Hệ thống cho phép người dùng xem các công thức nấu ăn được chia sẻ Điều kiện tiên quyết
PRE-1 Thiết bị của người dùng phải kết nối internet khi thực hiện cập nhật
PRE-2 Người dùng đã đăng nhập vào hệ thống
PRE-3 Người dùng được cấp quyền xem công thức nấu ăn Điều kiện lúc sau Không có
3.0 Xem công thức nấu ăn thành công
1 Người dùng khởi động ứng dụng
2 Hệ thống cập nhật các công thức nấu ăn được chia sẻ về ứng dụng
3 Người dùng chọn công thức muốn xem
4 Hệ thống hiển thị công thức cho người dùng
Quy trình thay thế Không có
Dòng sự kiện khác Điểm mở rộng Không có Đặc tả Use-case Tìm kiếm công thức nấu ăn
Tên chức năng Tìm kiếm công thức nấu ăn
Primary Actor Người dùng Secondary
Người dùng đang tìm kiếm món ăn phù hợp với nhu cầu hiện tại của mình Hệ thống sẽ hiển thị các công thức nấu ăn mà người dùng mong muốn tìm kiếm, đảm bảo đáp ứng đúng yêu cầu và sở thích ẩm thực của họ.
PRE-1 Thiết bị của người dùng phải kết nối internet khi thực hiện tìm kiếm
PRE-2 Người dùng đã đăng nhập vào hệ thống
PRE-3 Người dùng đã được cấp quyền tìm kiếm công thức nấu ăn Điều kiện lúc sau Không có
1 Người dùng khởi động ứng dụng
2 Người dùng nhập thông tin cần tìm kiếm vào thanh tìm kiếm
3 Hệ thống truy xuất trong database những công thức có từ khóa trong nội dung tìm kiếm và hiển thị cho người dùng
Quy trình thay thế Không có
Dòng sự kiện khác Điểm mở rộng Không có Đặc tả Use-case Quản lý công thức nấu ăn
Tên chức năng Quản lý công thức thức nấu ăn
Primary Actor Người dùng Secondary
Tóm tắt Người dùng muốn đăng công thức nấu ăn mới và chỉnh sửa hoặc xóa các công thức đã đăng
Hệ thống cho phép người dùng đăng tải, chỉnh sửa và xóa các công thức nấu ăn của mình trên ứng dụng, mang lại sự tiện lợi và linh hoạt trong việc quản lý nội dung ẩm thực cá nhân.
PRE-1 Thiết bị của người dùng phải kết nối internet khi thực hiện PRE-2 Người dùng đã đăng nhập vào hệ thống
PRE-3 Người dùng đã được cấp quyền quản lý công thức nấu ăn Điều kiện lúc sau Không có
5.0 Đăng công thức nấu ăn thành công
1 Người dùng truy cập vào trang cá nhân
3 Người dùng nhập thông tin công thức nấu ăn của mình
5 Hệ thống lưu công thức người dùng vừa tạo và hiển thị thông báo thành công cho người dùng
5.1 Chỉnh sửa công thức nấu ăn thành công
1 Người dùng truy cập vào trang cá nhân
3 Người dùng chọn công thức nấu ăn muốn chỉnh sửa
4 Người dùng thay đổi thông tin của công thức
6 Hệ thống cập nhật lại công thức người dùng vừa chỉnh sửa và hiển thị thông báo thành công cho người dùng
5.2 Xóa công thức nấu ăn thành công
1 Người dùng truy cập vào trang cá nhân
3 Người dùng chọn công thức nấu ăn muốn xóa
4 Nhấn nút biểu tượng thùng rác phía trên công thức và xác nhận
5 Hệ thống xóa công thức người dùng vừa chọn và hiển thị thông báo thành công
Quy trình thay thế Không có
Dòng sự kiện khác Điểm mở rộng Không có Đặc tả Use-case Tạo thực đơn cho bữa ăn
Tên chức năng Tạo thực đơn cho bữa ăn
Primary Actor Người dùng Secondary
Tóm tắt Người dùng tạo thực đơn cho các bữa ăn trong tuần của mình
Mục đích Hệ thống cho phép người dùng tạo thực đơn từ các món ăn yêu thích Điều kiện tiên quyết
PRE-1 Thiết bị của người dùng phải kết nối internet khi thực hiện PRE-2 Người dùng đã đăng nhập vào hệ thống
PRE-3 Người dùng đã được cấp quyền tạo thực đơn Điều kiện lúc sau Không có
6.0 Tạo thực đơn thành công
1 Người dùng truy cập vào trang cá nhân
3 Người dùng chọn các món ăn yêu thích để thêm vào thực đơn trong tuần
4 Hệ thống cập nhật thực đơn cho người dùng
Quy trình thay thế Không có
6.0E1 Tạo thực đơn không thành công
1 Người dùng không có món ăn nào trong danh sách món ăn yêu thích Điểm mở rộng Trung bình Đặc tả Use-case Ghim công thức vào mục yêu thích
Tên chức năng Ghim công thức vào mục yêu thích
Primary Actor Người dùng Secondary
Tóm tắt Người dùng lưu công thức nấu ăn vào danh sách món ăn yêu thích
Mục đích Hệ thống cho phép người dùng lưu lại công thức nấu ăn mình yêu thích Điều kiện tiên quyết
PRE-1 Thiết bị của người dùng phải kết nối internet khi thực hiện PRE-2 Người dùng đã đăng nhập vào hệ thống Điều kiện lúc sau Không có
7.0 Ghim bài đăng thành công
1 Người dùng chọn vào công thức mình yêu thích
2 Chọn nút “Save” ở cuối công thức để thêm vào danh sách món ăn yêu thích
3 Hệ thống thêm món ăn vào mục “Favorite” cho người dùng
Quy trình thay thế Không có
Dòng sự kiện khác Điểm mở rộng Không có Đặc tả Use-case Xem món ăn yêu thích
Tên chức năng Xem món ăn yêu thích
Primary Actor Người dùng Secondary
Tóm tắt Người dùng xem lại danh sách công thức nấu ăn yêu thích
Mục đích Hệ thống cho phép người dùng xem lại những công thức nấu ăn yêu thích Điều kiện tiên quyết
PRE-1 Thiết bị của người dùng phải kết nối internet khi thực hiện PRE-2 Người dùng đã đăng nhập vào hệ thống Điều kiện lúc sau Không có
8.0 Xem món ăn yêu thích thành công
1 Người dùng truy cập vào trang “Favorite”
2 Hệ thống hiển thị những công thức nấu ăn mà người dùng đã lưu
Quy trình thay thế Không có
Dòng sự kiện khác Đặc tả Use-case Quản lý thông tin cá nhân
Tên chức năng Quản lý thông tin cá nhân
Primary Actor Người dùng Secondary
Tóm tắt Người dùng cập nhật thông tin cá nhân
Mục đích Hệ thống cho phép người dùng thay đổi thông tin cá nhân Điều kiện tiên quyết
PRE-1 Thiết bị của người dùng phải kết nối internet khi thực hiện PRE-2 Người dùng đã đăng nhập vào hệ thống
PRE-3 Người dùng đã được cấp quyền chỉnh sửa thông tin cá nhân Điều kiện lúc sau Không có
9.0 Cập nhật thông tin thành công
1 Người dùng truy cập vào trang cá nhân
3 Người dùng chỉnh sửa các thông tin cần cập nhật
5 Hệ thống cập nhật thông tin vừa được người dùng nhập vào và thông báo thành công
Quy trình thay thế Không có
9.0E1 Cập nhật thông tin không thành công
1 Hệ thống kiểm tra tính đúng đắn của thông tin người dùng nhập vào không hợp lệ và hiển thị thông báo.
2 Yêu cầu người dùng nhập đúng thông tin cần cập nhật. Điểm mở rộng Không Đặc tả Use-case Khám phá món ăn
Tên chức năng Khám phá món ăn
Primary Actor Người dùng Secondary
Tóm tắt Người dùng tìm hiểu các món ăn theo thể loại
Mục đích Hệ thống cho phép người dùng tìm hiểu, khám phá các món ăn theo loại thức ăn Điều kiện tiên quyết
PRE-1 Thiết bị của người dùng phải kết nối internet khi thực hiện PRE-2 Người dùng đã đăng nhập vào hệ thống
PRE-3 Người dùng đã được cấp quyền khám phá món ăn Điều kiện lúc sau Không có
10.0 Khám phá món ăn thành công
1 Người dùng truy cập vào trang “Discover”
2 Chọn loại món ăn muốn khám phá
3 Hệ thống hiển thị danh sách các món ăn thuộc loại món ăn người dùng đã chọn
4 Người dùng chọn xem món ăn muốn khám phá
5 Hệ thống hiển thị chi tiết món ăn người dùng chọn
Quy trình thay thế Không có
10.0E1 Khám phá món ăn không thành công
1 Hệ thống không có món ăn thuộc loại món ăn người dùng chọn để hiện thị.Điểm mở rộng Trung bình.
PHÂN TÍCH
Sơ đồ lớp (mức phân tích)
Sơ đồ lớp (mức phân tích)
Danh sách các lớp đối tượng và quan hệ
STT Tên lớp/quan hệ Ý nghĩa/Ghi chú
3 Category Danh mục món ăn
5 Recipe Công thức món ăn
6 FirestoreService Cung cấp các phương thức truy vấn dùng Firestore API
7 FirebaseService Cung cấp phương thức xác thực dùng firebase API
8 Repository Repository tập trung tất cả các Service
Mô tả chi tiết từng lớp đối tượng
STT Tên phương thức Loại Input Ý nghĩa/ghi chú
1 Ifactory.fromMap Factory constructor Map Interface tạo đối tượng từ Map
Interface tạo đối tượng từ
Interface chuyển đổi đối tượng thành Map
STT Tên thuộc tính Kiểu Ý nghĩa/ghi chú
1 calorie string Năng lượng khẩu phần bữa ăn
3 directions array Các bước tiến hành
5 image string Đường dẫn hình ảnh món ăn
6 ingredients array Các nguyên liệu cần thiết
8 searchIndex array Danh sách searchIndex
9 time string Thời gian nấu món ăn
10 title string Tên món ăn
11 type string Khu vực hiển thị trên UI
STT Tên phương thức Loại Input Ý nghĩa/ghi chú
1 Recipe.fromMap Factory constructor Map Tạo đối tượng
2 Recipe.fromDocument Factory constructor DocumentSnapshot
Tạo đối tượng Recipe từ DocumentSnapshot từ Firestore
Chuyển đổi đối tượng Recipe thành Map
STT Tên thuộc tính Kiểu Ý nghĩa/ghi chú
1 calorie string Năng lượng khẩu phần bữa ăn
3 directions array Các bước tiến hành
5 image string Đường dẫn hình ảnh món ăn
6 imageBanner string Đường dẫn hình ảnh banner
7 ingredients array Các nguyên liệu cần thiết
9 searchIndex array Danh sách searchIndex
10 time string Thời gian nấu món ăn
11 title string Tên món ăn
STT Tên phương thức Loại Input Ý nghĩa/ghi chú
1 Banner.fromMap Factory constructor Map Tạo đối tượng
2 Banner.fromDocument Factory constructor DocumentSnapshot
Tạo đối tượng Banner từ DocumentSnapshot từ Firestore
Chuyển đổi đối tượng Banner thành Map
Chuyển đổi đối tượng Banner thành Recipe
STT Tên thuộc tính Kiểu Ý nghĩa/ghi chú
1 email string Năng lượng khẩu phần bữa ăn
3 password string Các bước tiến hành
5 recipe collection Danh sách các món ăn của user
6 bookmark Collection Danh sách các món ăn yêu thích của user
STT Tên phương thức Loại Input Ý nghĩa/ghi chú
1 User.fromMap Factory constructor Map Tạo đối tượng User từ Map
2 User.fromDocument Factory constructor DocumentSnapshot
Tạo đối tượng User từ DocumentSnapshot từ Firestore
Chuyển đổi đối tượng User thành Map
STT Tên thuộc tính Kiểu Ý nghĩa/ghi chú
1 name string Tên danh mục
2 image string Đường dẫn hình ảnh danh mục
3 vectorImage string Đường dẫn hình ảnh dạng vector
STT Tên phương thức Loại Input Ý nghĩa/ghi chú
1 Category.fromMap Factory constructor Map Tạo đối tượng
Tạo đối tượng Category từ DocumentSnapsho t từ Firestore
Chuyển đổi đối tượng Category thành Map
STT Tên thuộc tính Kiểu Ý nghĩa/ghi chú
STT Tên phương thức Loại Input Ý nghĩa/ghi chú
STT Tên thuộc tính Kiểu Ý nghĩa/ghi chú
STT Tên phương thức Loại Input Ý nghĩa/ghi chú
1 GetAllBanners List Lấy danh sách
2 GetAllRecipes List Lấy danh sách
Lấy danh sách Category từ Firestore
Lấy danh sách Recipe theo type từ Firestore
Lấy danh sách Recipe theo category từ Firestore
6 GetAllRecipeBookmarks List Id: String
Lấy danh sách Recipe yêu thích của user từ Firestore
Tìm kiếm Recipe theo tên
Thêm recipe yêu thích theo user hiện tại
11 GetUserByID User Id: String Lấy User theo
STT Tên thuộc tính Kiểu Ý nghĩa/ghi chú
1 firestoreInstance FirestoreService Instance of Firestore
2 firebaseInstance FirebaseService Instance of Firebase
Gồm tất cả các phương thức được gọi tự Instance của tất cả các service
Sơ đồ trạng thái
State Diagram cho Đăng ký
State Diagram cho Đăng nhập
State Diagram cho Đăng công thức nấu ăn
State Diagram cho Tạo thực đơn
State Diagram cho Cập nhật thông tin cá nhân
THIẾT KẾ DỮ LIỆU
Cơ sở dữ liệu NoSQL
Như đã đề cập trong Môi trường phát triển ứng dụng dự kiến, sử dụng Firebase làm
Back-end Nên Cơ sở dữ liệu của đề tài sẽ sử dụng Firestore
Cloud Firestore là dịch vụ lưu trữ và đồng bộ dữ liệu toàn cầu giữa người dùng và thiết bị, sử dụng công nghệ NoSQL và được triển khai trên hạ tầng đám mây.
Mô tả chi tiết các kiểu dữ liệu trong sơ đồ logic
STT Tên thuộc tính Kiểu Ý nghĩa/ghi chú
1 calorie string Năng lượng khẩu phần bữa ăn
3 directions array Các bước tiến hành
5 image string Đường dẫn hình ảnh món ăn
6 ingredients array Các nguyên liệu cần thiết
8 searchIndex array Danh sách searchIndex
9 time string Thời gian nấu món ăn
10 title string Tên món ăn
11 type string Khu vực hiển thị trên UI
STT Tên thuộc tính Kiểu Ý nghĩa/ghi chú
1 calorie string Năng lượng khẩu phần bữa ăn
3 directions array Các bước tiến hành
5 image string Đường dẫn hình ảnh món ăn
6 imageBanner string Đường dẫn hình ảnh banner
7 ingredients array Các nguyên liệu cần thiết
9 searchIndex array Danh sách searchIndex
10 time string Thời gian nấu món ăn
11 title string Tên món ăn
STT Tên thuộc tính Kiểu Ý nghĩa/ghi chú
1 email string Năng lượng khẩu phần bữa ăn
3 password string Các bước tiến hành
5 recipe collection Danh sách các món ăn của user
6 bookmark collection Danh sách các món ăn yêu thích của user
STT Tên thuộc tính Kiểu Ý nghĩa/ghi chú
1 name string Tên danh mục
2 image string Hình ảnh danh mục
3 vectorImage string Hình ảnh dạng vector
THIẾT KẾ KIẾN TRÚC
Kiến trúc hệ thống
Hệ thống sử dụng kiến trúc client-server ứng dụng Flutter, Firebase và giao thức API để trao đổi thông tin
Phần mềm được xây dựng theo kiến trúc Client-Server, trong đó:
Flutter App: Flutter được thiết kế để nó có thể được triển khai trên Smartphone Android hoặc IOS của người dùng Kết nối với Firebase thông qua RESTful API
Firebase là dịch vụ cơ sở dữ liệu dựa trên nền tảng đám mây của Google, cung cấp một hệ thống máy chủ mạnh mẽ Chức năng chính của Firebase là hỗ trợ lập trình viên trong việc phát triển ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.
Mô tả chi tiết từng thành phần trong hệ thống
Kiến trúc Flutter App Để đảm bảo tách biệt tốt các mối quan tâm, kiến trúc này xác định ba lớp ứng dụng chính
UI Layer: Chứa các Widgets
Logic & Presentation Layer: chứa business và presentation logic
Domain Layer: chứa domain-specific services liên quan đến APIs bên thứ 3
Dịch vụ là các thành phần chức năng thuần túy, không chứa trạng thái Chúng hoạt động như một tóm tắt từ các nguồn dữ liệu bên ngoài và cung cấp API chuyên dụng cho miền, phục vụ cho phần còn lại của ứng dụng.
Các API dịch vụ cung cấp các đối tượng mô hình miền cụ thể, không thể thay đổi và được nhập mạnh, do đó phần còn lại của ứng dụng không tương tác trực tiếp với dữ liệu thô từ bên ngoài, chẳng hạn như tài liệu Firestore được biểu diễn dưới dạng cặp khóa-giá trị.
Các thay đổi vi phạm trong các gói bên ngoài sẽ dễ dàng được xử lý hơn, vì chúng chỉ tác động đến các lớp dịch vụ tương ứng.
Presentation & Logic Layer: View Models
View models tóm tắt trạng thái và bản trình bày của widget
Mô hình View không tham chiếu trực tiếp đến các vật dụng, mà thay vào đó, chúng xác định một giao diện để phát hành các bản cập nhật khi có sự thay đổi xảy ra.
View models có thể truy cập trực tiếp với các lớp dịch vụ để đọc hoặc ghi dữ liệu và truy cập vào các API miền cụ thể khác
Nhưng không giống như các lớp dịch vụ, chúng có thể giữ và sửa đổi trạng thái, theo một số logic nghiệp vụ
Các ViewModel cũng có thể được sử dụng để giữ trạng thái cục bộ Điều này thường xảy ra khi chuyển đổi StatefulWidget thành StatelessWidget
LƯU Ý: Các mô hình xem hoàn toàn độc lập với giao diện người dùng
Widgets là các thành phần quan trọng trong việc xác định giao diện người dùng của ứng dụng, đồng thời cung cấp các hàm gọi lại để đáp ứng các tương tác từ người dùng.
pure UI widgets: these are the usual buttons, texts, containers
Logic or presentational widgets are essential for determining which widget to display based on specific conditions, such as returning the home page or sign-in page depending on the user's authentication status.
Mẫu Adapter Pattern là một mẫu thiết kế cho phép bạn thay đổi giao diện giữa các đối tượng và lớp mà không cần sửa đổi trực tiếp chúng, được coi như một bộ chuyển đổi hiệu quả.
Sử dụng mô hình Repository giúp cải thiện khả năng truy cập dữ liệu một cách chặt chẽ và bảo mật hơn, đồng thời mang lại sự gọn gàng cho mã nguồn Điều này tạo ra một điểm tập trung duy nhất để quản lý quyền truy cập và xử lý dữ liệu, giúp dễ dàng thay đổi và bảo trì trong tương lai.
THIẾT KẾ GIAO DIỆN
Danh sách các màn hình
STT Tên màn hình Ý nghĩa/Ghi chú
1 Màn hình khởi động ứng dụng
3 Màn hình chọn cách thức đăng nhập
5 Màn hình đăng ký tài khoản
7 Màn hình công thức yêu thích
8 Màn hình thông tin người dùng
9 Màn hình chỉnh sửa thông tin
10 Màn hình khám phá món ăn
11 Màn hình thông tin về ứng dụng
12 Màn hình chi tiết công thức nấu ăn
13 Màn hình tìm kiếm công thức nấu ăn
14 Màn hình đăng công thức nấu ăn
15 Màn hình tạo thực đơn
16 Màn hình không có kết nối mạng
Mô tả chi tiết mỗi màn hình
Màn hình khởi động ứng dụng
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 Countinue FlatButton Chuyển sang màn hình
2 Get Started InkWell Chuyển đến trang chọn cách thức đăng nhập
Xuất hiện ở trang OnBoarding cuối cùng
Màn hình chọn cách thức đăng nhập
STT Tên Kiểu Chức năng/Biến cố Ghi chú
Chuyển đến trang đăng nhập để người dùng nhập thông tin
Người dùng đã có tài khoản
2 Register ButtonCustom Chuyển đến trang đăng ký tài khoản
Người dùng muốn tạo tài khoản mới
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 Email TextFormField Người dùng nhập email
2 Password TextFormField Người dùng nhập password
Password được nhập dưới dạng ẩn
3 Login InkWell Đăng nhập thành công chuyển đến trang chủ
Kiểm tra tài khoản người dùng đã nhập đủ và đúng
4 Register InkWell Chuyển đến trang đăng ký
Người dùng không có tài khoản để đăng nhập
Màn hình đăng ký tài khoản
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 Username TextFormField Người dùng nhập tài khoản
2 Email TextFormField Người dùng nhập email
3 Password TextFormField Người dùng nhập password
Password được nhập dưới dạng ẩn
4 Signup InkWell Đăng ký thành công chuyển đến trang chủ
Kiểm tra người dùng đã nhập đủ thông tin
5 Signin InkWell Đến trang đăng nhập Người dùng đã có tài khoản
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 HelloUser Text Chào người dùng
2 FindRecipes InkWell Tìm kiếm công thức nấu ăn theo dữ liệu nhập
3 SpecialRecipe CarouselSlider Slider hiển thị những món ăn đặc biệt trong ngày
4 Categories ListView Các loại món ăn
5 Suggest StreamBuilder Các món ăn khuyên dùng
6 Trending StreamBuilder Xu hướng của các món ăn
7 Popular StreamBuilder Các món ăn phổ biến
Màn hình công thức yêu thích
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 ListRecipe ListView Hiển thị danh sách các món ăn yêu thích
Các món ăn yêu thích do người dùng chọn
2 DeleteRecipe InkWell Xóa món ăn ra khỏi danh sách món ăn yêu thích
Màn hình thông tin người dùng
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 Avatar CircleAvatar Ảnh đại diện của người dùng
Hiển thị ảnh mặc định nếu không có ảnh đại diện
2 Name Text Tên người dùng
3 Email Text Email người dùng
4 MealPlan InkWell Tạo thực đơn Tạo thực đơn từ những món ăn yêu thích
5 AddRecipe InkWell Đăng công thức nấu ăn
6 YourRecipes InkWell Các công thức nấu ăn đã đăng
7 EditProfile InkWell Chỉnh sửa thông tin cá nhân
9 AboutApps InkWell Thông tin tổng quan về ứng dụng
10 Logout InkWell Đăng xuất khỏi tài khoản
Màn hình chỉnh sửa thông tin
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 Avatar CircleAvatar Hiển thị ảnh đại diện của người dùng
Hiển thị ảnh mặc định nếu không có ảnh
2 Camera InkWell Truy cập đến thư mục hình ảnh
Yêu cầu cho phép truy cập ảnh
3 YourName TextFormField Cập nhật tên người dùng
4 YourCountr y TextFormField Cập nhật Quốc gia người dùng
5 YourAge TextFormField Cập nhật tuổi người dùng Cập nhật thông tin Kiểm tra thông tin phù
Màn hình khám phá món ăn
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 Category TabBar Các loại món ăn để người dùng chọn
Hiển thị danh sách các món ăn theo loại người dùng chọn
Màn hình thông tin về ứng dụng
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 AboutApp Text Hiển thị thông tin chung về ứng dụng
Màn hình chi tiết công thức nấu ăn
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 Image DecoratedBox Ảnh nền của món ăn
2 InforRecipe MySliverAppBar Hiển thị tên, rating và loại món ăn
Các thông tin cơ bản về công thức(Tổng số bước, thời gian nấu, calo)
4 Ingredients Container Các nguyên liệu cần chuẩn bị cho món ăn
5 Directions Container Chi tiết các bước chế
Màn hình tìm kiếm công thức nấu ăn
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 SearchInput InputDecoration Nhập thông tin cần tìm kiếm
2 Category ListView Tìm kiếm theo loại thức ăn
Hiển thị các món ăn theo thông tin người dùng tìm kiếm
Hiển thị khi người dùng đã nhập thông tin tìm kiếm hoặc chọn loại món ăn
Màn hình đăng công thức nấu ăn
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 Camera InkWell Chọn hình ảnh cho món ăn
Yêu cầu cho phép truy cập ảnh
2 NameRecipe InputDecoration Nhập tên món ăn Bắt buộc nhập
3 TimeCooking InputDecoration Nhập thời gian nấu Bắt buộc nhập
4 Rating InputDecoration Nhập đánh giá món ăn Bắt buộc nhập
5 Category DropdownButton Chọn loại món ăn
6 Calorie InputDecoration Nhập tổng calo của món ăn Bắt buộc nhập
7 Ingredients InputDecoration Nhập các nguyên liệu cần chuẩn bị cho món ăn
8 Direction InputDecoration Nhập các bước thực hiện khi nấu ăn
Màn hình tạo thực đơn
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 DayOfWeek Text Các ngày trong tuần
Chọn món ăn từ danh sách món ăn yêu thích để tạo thực đơn cho ngày
Chỉ chọn trong danh sách các món ăn yêu thích
Màn hình không có kết nối mạng
STT Tên Kiểu Chức năng/Biến cố Ghi chú
1 Notification Text Hiển thị nội dung thông báo