Vì vậy, nhóm chúng em quyết định chọn đề tài Website quản lý môn đồ án làm đồ án 1 để có thể tối ưu, hỗ trợ quy trình quản lý, giám sát và thực hiện đồ án của giáo vụ, giảng viên và sinh
Tổng quan
ASP.NET Core Web API 7
ASP.NET Core là một framework mã nguồn mở, đa nền tảng, hiệu suất cao, dùng để xây dựng các ứng dụng hiện đại, hỗ trợ kết nối với cloud
Với ASP.NET Core, bạn có thể:
- Xây dựng ứng dụng web và dịch vụ, ứng dụng Internet of Things (IoT) và backend cho di động
- Sử dụng các công cụ phát triển ưa thích trên Windows, macOS và Linux
- Triển khai trên cloud hoặc on-premises
ASP.NET Core mang lại các lợi ích sau:
- Một cách tiếp cận thống nhất để xây dựng giao diện người dùng web và web API
- Thiết kế cho khả năng kiểm thử
- Razor Pages giúp lập trình các kịch bản tập trung vào trang dễ dàng và hiệu quả hơn
- Blazor cho phép sử dụng C# trong trình duyệt cùng với JavaScript Chia sẻ logic ứng dụng phía máy chủ và phía máy khách viết bằng NET
- Khả năng phát triển và chạy trên Windows, macOS và Linux
- Mã nguồn mở và tập trung vào cộng đồng
- Tích hợp các framework và luồng làm việc phát triển phía khách hàng hiện đại
- Hỗ trợ việc lưu trữ các dịch vụ Remote Procedure Call (RPC) bằng cách sử dụng gRPC
- Hệ thống cấu hình dựa trên môi trường, sẵn sàng cho cloud
- Hỗ trợ dependency injection tích hợp
- Một pipeline HTTP nhẹ, hiệu suất cao và có khả năng tùy chỉnh
- Khả năng lưu trữ trên các nền tảng như:
- Hỗ trợ đa phiên bản song song
- Công cụ giúp đơn giản hóa phát triển web hiện đại
ASP.NET Core hỗ trợ hai phương pháp để tạo ra các API: phương pháp dựa trên controller và minimal APIs Trong một dự án API, các controller là các lớp mà thừa kế từ ControllerBase Minimal APIs xác định các điểm cuối với các xử lý logic trong các lambda hoặc phương thức Bài viết này chỉ ra sự khác biệt giữa hai phương pháp này
Thiết kế của minimal APIs mặc định ẩn lớp host và tập trung vào cấu hình và khả năng mở rộng thông qua các phương thức mở rộng nhận các hàm dưới dạng lambda expressions Controller là các lớp có thể nhận các dependency thông qua constructor injection hoặc property injection, và thường tuân theo các mẫu hướng đối tượng Minimal APIs hỗ trợ dependency injection thông qua các phương pháp khác như truy cập vào service provider.
ReactJS
ReactJS là một mã nguồn mở chứa JavaScript Nó được ra đời vào năm 2013 bởi Facebook Mục đích chính của việc tạo ra ReactJS là cải thiện các ứng dụng web hiệu quả và hấp dẫn hơn với nỗ lực viết mã tối thiểu Nhà phát triển ReactJS mong muốn rằng bất kỳ trang web nào sử dụng ReactJS cũng phải mượt mà, nhanh chóng và khả năng mở rộng cao, dễ thực hiện
Có 2 điểm đáng chú ý trong ReactJS
- Declarative: React giúp tạo các UI tương tác một cách dễ dàng Thiết kế các khung nhìn đơn giản cho từng trạng thái trong ứng dụng, và React sẽ cập nhật
11 và render đúng các thành phần phù hợp khi dữ liệu thay đổi Việc khai báo các khung nhìn tường minh sẽ khiến cho code dễ sử dụng hơn và dễ dàng gỡ lỗi hơn
- Component-Based: Xây dựng các component và quản lý các trạng thái của riêng chúng, sau đó kết hợp chúng để tạo các UI phức tạp Vì component logic được viết bằng JavaScript thay vì các template, lập trình viên có thể dễ dàng truyền dữ liệu đa dạng qua ứng dụng của mình và tránh thao tác với DOM (Document Object Model).
Docker
Docker là một nền tảng để cung cấp cách để building, deploying và running ứng dụng dễ dàng hơn bằng cách sử dụng các containers (trên nền tảng ảo hóa) Ngoài ra, còn có các công nghệ triển khai sử dụng Docker Swarm hoặc Kubernetes và các phương pháp phát triển sử dụng microservices và serverless
Docker mang lại những lợi ích sau đây:
- Môi trường đồng nhất và cô lập của Docker đảm bảo việc triển khai ứng dụng ổn định
- Quá trình triển khai diễn ra trong vài giây: với kích thước nhỏ và khả năng tái sử dụng của Docker image, quá trình phát triển được tăng tốc đáng kể Đồng thời, khả năng tự động hóa của Docker giúp loại bỏ lỗi và đơn giản hóa chu kỳ bảo trì
- Docker hỗ trợ các phương pháp Agile và CI/CD DevOps
- Việc quản lý phiên bản dễ dàng của Docker giúp tăng tốc quá trình kiểm thử, quay trở lại phiên bản trước và triển khai lại Đối với việc phân đoạn ứng dụng để làm mới, dọn dẹp và sửa chữa, Docker đóng vai trò quan trọng Nhà phát triển có thể hợp tác để giải quyết vấn đề nhanh chóng và mở rộng các container khi cần thiết
- Docker image không phụ thuộc vào nền tảng, giúp đảm bảo tính di động cao
Tuy nhiên, Docker không phù hợp cho các ứng dụng có yêu cầu hiệu suất hoặc bảo mật cao, dựa trên kiến trúc Monolith, sử dụng các tính năng GUI phong phú hoặc thực hiện các chức năng tiêu chuẩn trên máy tính để bàn hoặc có hạn chế.
Spring Cloud Gateway
Spring Cloud Gateway nhằm cung cấp một cách đơn giản nhưng hiệu quả để định tuyến đến các API và cung cấp các vấn đề chung cho chúng như: bảo mật, giám sát/thống kê và resiliency
Các tính năng của Spring Cloud Gateway:
- Được xây dựng trên Spring Framework và Spring Boot
- Có thể khớp các route dựa trên bất kỳ thuộc tính yêu cầu nào
- Predicates và filters đặc thù cho từng route
- Tích hợp Spring Cloud DiscoveryClient
- Dễ dàng viết Predicates và Filters
- Giới hạn tần suất gửi request từ phía client
MongoDB
MongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL) phổ biến và mạnh mẽ Nó được thiết kế để lưu trữ và xử lý dữ liệu phi cấu trúc và linh hoạt, giúp đáp ứng nhanh chóng với các yêu cầu dữ liệu đa dạng
Dưới đây là một số đặc điểm và lợi ích chính của MongoDB:
- Cấu trúc dữ liệu linh hoạt: MongoDB không yêu cầu cấu trúc cố định cho dữ liệu, cho phép lưu trữ các tài liệu phi cấu trúc và có thể thay đổi theo thời gian Điều này rất hữu ích khi làm việc với dữ liệu không đồng nhất hoặc khi yêu cầu dữ liệu thay đổi linh hoạt
- Tính mở rộng dễ dàng: MongoDB hỗ trợ khả năng mở rộng ngang (horizontal scaling), cho phép tăng hiệu suất và khả năng chịu tải bằng cách thêm các node vào cụm MongoDB Điều này cho phép xử lý lượng dữ liệu lớn và mở rộng hệ thống một cách linh hoạt theo nhu cầu
- Truy vấn mạnh mẽ: MongoDB cung cấp một ngôn ngữ truy vấn linh hoạt và mạnh mẽ, cho phép tìm kiếm và truy xuất dữ liệu theo nhiều tiêu chí khác nhau Truy vấn trong MongoDB sử dụng cú pháp dễ hiểu và hỗ trợ các phép toán phức tạp như truy vấn theo điều kiện, phép kết hợp, sắp xếp và phân trang
- Hỗ trợ tốt cho lưu trữ dữ liệu lớn: MongoDB có khả năng xử lý và lưu trữ dữ liệu lớn, đồng thời hỗ trợ các tính năng như shard (chia nhỏ dữ liệu), replica set (chạy MongoDB với nhiều instance, đảm bảo tính tin cậy)
- Hệ sinh thái phong phú: MongoDB có một hệ sinh thái phong phú với các công cụ hỗ trợ phát triển, ví dụ như MongoDB Compass (giao diện đồ họa để thao tác với cơ sở dữ liệu), MongoDB Atlas (dịch vụ quản lý cơ sở dữ liệu dựa trên cloud).
Kiến trúc sử dụng
Kiến trúc microservices là một mô hình kiến trúc phần mềm tiên tiến, trong đó ứng dụng được phân tách thành các service nhỏ và độc lập Mỗi service tương ứng với một chức năng cụ thể và có khả năng hoạt động độc lập với nhau Các service này giao tiếp với nhau thông qua các giao thức Internet như HTTP/REST/gRPC/Web Socket/Message Queue và thường có cơ sở dữ liệu riêng biệt Kiến trúc microservices giúp tách biệt các thành phần của ứng dụng, tăng tính mô-đun hóa, linh hoạt và khả năng mở rộng của hệ thống
Sự phổ biến của kiến trúc microservices đã tăng lên trong những năm gần đây
Mô hình này được ưa chuộng bởi khả năng chia nhỏ ứng dụng thành các dịch vụ nhỏ hơn, giúp tăng khả năng phát triển độc lập và đồng thời giảm sự phụ thuộc giữa các thành phần Nó cung cấp một cách tiếp cận linh hoạt và hiệu quả để xây dựng và triển
14 khai các ứng dụng phân tán (distributed system), đáp ứng nhanh chóng các yêu cầu thay đổi và khả năng mở rộng Kiến trúc microservices cũng tạo điều kiện thuận lợi cho việc sử dụng công nghệ mới như cloud và giao diện lập trình ứng dụng (API)
Sự phổ biến của kiến trúc microservices cũng đi đôi với sự phát triển của các công cụ và framework hỗ trợ, bao gồm C# và ASP.NET Core Web API C# là một ngôn ngữ lập trình mạnh mẽ và được phát triển bởi Microsoft, trong khi ASP.NET Core Web API là một framework cho phép xây dựng các dịch vụ web RESTful sử dụng ngôn ngữ C# Với sự kết hợp giữa C# và ASP.NET Core Web API, bạn có thể xây dựng các dịch vụ web độc lập và linh hoạt trong kiến trúc microservices
Sử dụng C# và ASP.NET Core Web API trong kiến trúc microservices cung cấp các tính năng mạnh mẽ như định tuyến (routing), middleware, dependency injection (DI) và xác thực (authentication), giúp bạn xây dựng các dịch vụ web an toàn, linh hoạt và dễ bảo trì Bạn có thể xử lý các yêu cầu HTTP và trả về dữ liệu dưới dạng JSON hoặc XML, tạo các endpoint API để cung cấp dữ liệu và chức năng cho các ứng dụng khác
Với việc sử dụng C# và ASP.NET Core Web API trong kiến trúc microservices, bạn có thể tận dụng các lợi ích của ngôn ngữ C# và framework ASP.NET Core để xây dựng các ứng dụng web đa nền tảng và dễ dàng mở rộng trong môi trường phân tán
Các lợi ích của kiến trúc microservices:
- Cho phép dễ dàng continuous delivery và deployment các ứng dựng lớn, phức tạp:
- Cải thiện khả năng bảo trì - mỗi service tương đối nhỏ do đó dễ hiểu và thay đổi hơn
- Khả năng testing dễ dàng hơn - các services nhỏ hơn và nhanh hơn để test
- Khả năng triển khai tốt hơn - các services có thể được triển khai độc lập
- Cho phép các services được phát triển bởi những team khác nhau Mỗi team có thể phát triển, thử nghiệm, triển khai và mở rộng quy mô dịch vụ của mình một cách độc lập với tất cả các team khác
- Giảm thiểu rủi ro: Nếu có lỗi trong một service thì chỉ có service đó bị ảnh hưởng Các services khác sẽ tiếp tục xử lý các yêu cầu Trong khi đó, một thành phần hoạt động sai của kiến trúc một khối có thể làm ảnh hưởng toàn bộ hệ thống
- Dễ dàng thay đổi sử dụng các công nghệ mới: Khi triển khai các services bạn có thể lựa chọn nhiều công nghệ mới Tương tự khi có thay đổi lớn đối với các services hiện có bạn có thể dễ dàng thay đổi công nghệ
Nhược điểm của kiến trúc microservices:
- Các nhà phát triển phải đối phó với sự phức tạp của việc tạo ra một hệ thống phân tán:
- Cần implement việc communication giữa các inter-services
- Handle partial failure là rất phức tạp vì một luồng xử lý cần đi qua nhiều services
- Việc thực hiện các requests trải rộng trên nhiều services khó khăn hơn, điều này cũng đòi hỏi sự phối hợp cẩn thận giữa các teams
- Khó khăn trong việc đảm bảo toàn vẹn CSDL nếu triển khai theo kiến trúc cơ sở dữ liệu phân vùng
- Triển khai và quản lý microservices nếu làm thủ công theo cách đã làm với ứng dụng một khối phức tạp hơn rất nhiều
- Phải xử lý sự cố khi kết nối chậm, lỗi khi thông điệp không gửi được hoặc thông điệp gửi đến nhiều đích đến vào các thời điểm khác nhau
Thiết kế hệ thống
Dựa trên kết quả phân tích, nhóm em nhận thấy rằng có nhiều chức năng không tương tác với nhau trong quá trình thao tác Do đó, nhóm em đã quyết định áp dụng kiến trúc Microservices cho phần Backend và kiến trúc Monolithic cho phần Frontend Phần Backend và Frontend sẽ được liên kết thông qua một API Gateway, giao tiếp với nhau thông qua giao thức RESTful Để đảm bảo tính bảo mật giữa Frontend và Backend, chúng tôi sẽ sử dụng JSON Web Tokens (JWT) như cơ chế bảo mật Hệ thống đề xuất như sau:
Với Backend, nhóm em chia làm các service nhỏ như sau:
- AuthService: Đảm nhiệm phần phần đăng nhập, đăng ký với hệ thống
- ProfileService: Đảm nhiệm phần thông tin của người dùng, phân cấp người dùng trong hệ thống
Hinh 2.3 Sơ đồ kiến trúc hệ thống
- CourseService: Đảm nhiệm thông tin lớp học (lớp đồ án) và điểm số, cũng như lưu trữ các thành viên và đề tài trong lớp
- ProjectService: Đảm nhiệm phần thông tin đề tài, thông tin sinh viên thực hiện, giảng viên hướng dẫn, tên và nội dung của đề tài đó
- SharedLibrary: Dùng để lưu trữ các model, connection string, configuration.
Kết quả
Quy trình
Qua quá trình trao đổi và thảo luận cùng giảng viên hướng dẫn – ThS Huỳnh Hồ Thị Mộng Trinh và tìm hiểu trên trang khoa Công nghệ phần mềm, nhóm em đã xác định được yêu cầu, cũng như phân tích quy trình thực hiện Đồ án 1 và Đồ án 2 Tổng kết lại theo sơ đồ sau:
- Bước 1 Thông báo và chuẩn bị đề tài: Giáo vụ thông báo đến giảng viên chuản bị đề tài và gửi lại đến giáo vụ Thời gian diễn ra là 1 tuần trước khi bắt đầu học kỳ
Hình 2.1 Sơ đồ nghiệp vụ [1]
- Bước 2 Đăng ký đề tài: Giáo vụ thông báo đến sinh viên các đề tài mà giảng viên đã giao Sinh viên đăng ký các đề tài đó trong vòng khoảng 1 tuần Thời gian diễn ra là tuần 1 của học kỳ
- Bước 3 Thông báo kết quả đăng ký đề tài
- Bước 4 Thực hiện đề tài và báo cáo: Sinh viên liên hệ giảng viên hướng dẫn khi đã có thông báo công bố danh sách đăng ký đề tà Thời gian diễn ra là từ tuần 2 đến tuần 18 của học kỳ
- Bước 5 Kết thúc đồ án: Sinh viên thực hiện nộp đồ án cho khoa, báo cáo đồ án cho giảng viên hướng dẫn Giảng viên chấm và gửi điểm đến giáo vụ để giáo vụ cập nhật điểm lên hệ thống Thời gian diễn ra là tuần thứ 19 của học kỳ.
Danh sách Actor
Hệ thống bao gồm các actor như sau:
- Giáo vụ: người có quyền quản lý những chức năng đặc biệt như tùy chỉnh số lượng sinh viên đăng ký vào 1 đề tài, cho phép sinh viên đăng ký đồ án và thu thập toàn bộ điểm số sinh viên
- Giảng viên: người có quyền tạo đề tài đồ án (có thể bao gồm cả sinh viên), cho điểm sinh viên và tạo thông báo cho các sinh viên đăng ký giáo viên đó
- Sinh viên là người có thể đăng ký 1 đề tài trong danh sách đề tài Có thể thấy các thông báo từ giáo vụ, giảng viên hướng dẫn và bình luận ở các bài thông báo đó (nếu bài đăng là của giảng viên hướng dẫn), nộp các báo cáo cần thiết khi thông báo yêu cầu nộp bài.
Sơ đồ Use case
Sơ đồ Use case định nghĩa các chức năng cần có:
21 Hình 3.1.2 Sơ đồ Use case
Danh mục Use case
UC Name Ministry Teacher Student Priority
Config number of student enroll in a project x Medium
UC-02 Allow students registration x High
UC-12 Register for consideration x Medium
UC-14 Add student to a course x High
Bảng 3.2 Danh mục Use case
Đặc tả Use case
Use case 01 - Config number of student enroll in a project
ID and Name: UC-01 - Config number of student enroll in a project
Primary Actor: Ministry Secondary Actors: None
Description: Ministry configs the number of student enroll in a project
(maximum and minimum) Trigger: The rule of the number of students enrolled in a project changes
Postconditions: Maximum and minimum number of students can enroll in a project changed Normal Flow: 1 The ministry clicks on the “Configuration”
2 The ministry navigates to the “Students in a project”
3 The ministry insert the maximum and the minimum number
Exceptions: 3.1: Maximum number < Minimum number
3.2: System tells the ministry to insert again with constraints: Maximum number >= Minimum number
Business Rules: Maximum number >= Minimum number
None Assumptions: This function is needed when the rule changed
Bảng 3.3.1 Use case 01 - Config number of student enroll in a project
Use case 02 - Allow students registration
ID and Name: UC-02 - Allow students registration
Primary Actor: Ministry Secondary Actors: None
Description: The ministry let the students to register projects, when close the registration, no more students can register a new project Trigger: The registration period has started or The registration period is over Preconditions: The transition of the registration period comes
Postconditions: The status of the registry permission changed
• Can register → Cannot register Normal Flow: 1 The ministry clicks on the “Configuration”
2 The ministry turns on/off the “Allow registry”
Business Rules: The transitions should happen during the semester and at the beginning of the semester Other
Assumptions: This function is necessary to prevent students from register the project late Bảng 3.3.2 Use case 02 - Allow students registration
Use case 03 – Modify Project
ID and Name: UC-03 - Modify Project
Primary Actor: Teacher Secondary Actors: Student
Description: • Modify Project description, requirement and needs for the output, or change student enrolled in
• Students who registered with none topic or unwanted topic can change it to a topic that they want
Trigger: • Teacher tries to change the information of the project
• Student who registered a project and try to change its information
Preconditions: Project that wanted to be changed has been created
Normal Flow: 1 User clicks on that project
Exceptions: 1.1 Student who doesn’t enroll in a project and want to change it 1.2 Teacher who doesn’t own a project and want to change it
Business Rules: • Only students enroll a project can modify their project
• Teacher only can change his/her student’s projects and his/her created project
Assumptions: Student, teacher can change the project information when needed Bảng 3.3.3 Use case 03 - Modify Project
Use case 04 – Add Project
ID and Name: UC-04 - Add Project
Primary Actor: Teacher Secondary Actors:
Description: Add a new project to list project for student to register
Trigger: Teacher has a list of topic projects or a project and tries to upload it for student registry Preconditions: Teacher has a formatted xlsx file or prepared project
Postconditions: Those topic projects has been uploaded or created
Normal Flow: 1 Teacher clicks on “Quản lý đồ án”
2 Teacher clicks on “Thêm đề tài”
3 Teacher uploads a formatted file or inserts by hand
4 System scans or checks every project
5 Teacher saves all the topic projects into a collection
6 Teacher publishes the collection(s) when needed
Exceptions: 5.1 Teacher published more project than maximum number of project that a teacher can guide that is registered Priority: High
Business Rules: Number of topics published by teacher that is registered < maximum number of project that a teacher can guide Other
Assumptions: Teacher can create and publish the project for student to register Bảng 3.3.4 Use case 04 - Add Project
Use case 05 – Delete Project
ID and Name: Delete Project
Primary Actor: Teacher Secondary Actors:
Description: Teacher can delete a project under his guidance
Trigger: Teacher tries to delete a project
Preconditions: Teacher has permission to delete the project (project under his guidance) Postconditions: Project deleted
Normal Flow: 1 Teacher clicks on “Quản lý đồ án”
3 Teacher clicks on delete project
Alternative Flows: 5.1 Teacher doesn’t have access to this project
None Assumptions: This features allows teacher delete his guidance project
Bảng 3.3.5 Use case 05 - Delete Project
Use case 06 – Add Course
ID and Name: Add Course
Primary Actor: Ministry Secondary Actors: None
Description: Ministry add course when new semester coming
Trigger: Ministry tries to add a new course
1 Ministry clicks on “Cài đặt”
2 Ministry clicks on “Thêm lớp”
5 System saves that course Alternative Flows: None
Assumptions: Course has lots of project and needs to be created before project Bảng 3.3.6 Use case 06 - Add Course
Use case 07 – Create Notification
ID and Name: Create Notification
Primary Actor: Teacher,Ministry Secondary
Description: Creating post for students & teachers
Trigger: Ministry or teacher wants to create notification
Normal Flow: 1 User clicks on “Create Notification” icon
3 User chooses if this notification can be commented
User can stop creating a post by close the create pannel
Business Rules: Only students under a teacher’s guidance can see that teacher notification Other
None Assumptions: This is a critial function of the app
Bảng 3.3.7 Use case 07 - Create Notification
Use case 08 – Export Grade
ID and Name: Export Grade
Description: Teacher can export list of grade of his guidance’ students
Ministry can export list of grade of a course Trigger: Ministry or teacher tries to export grade
Postconditions: A file created an can be downloaded
1 Chooses the course wanting to export
Business Rules: Teacher can only export the grades of his under guidance’s students Other Information: None
Assumptions: Teacher or ministry can exports grade through this function
Bảng 3.3.8 Use case 08 - Export Grade
Use case 09 – Insert Grade
ID and Name: Insert Grade
Primary Actor: Teacher Secondary Actors: None
Description: Teacher insert student’s grade
Trigger: Teacher has student’s grades and tries to insert them into the system Preconditions: None
Postconditions: Grades of student have been saved into the system
Normal Flow: 1 Teacher clicks on the course list
3 Teacher clicks on insert grade
Business Rules: Teacher can only insert grade for who under his guidance right now Other Information: None
Assumptions: Insert grade is one of the key features of this system
Bảng 3.3.9 Use case 09 - Insert Grade
Use case 10 – Comment
Description: 3 types of user can comment on a notification
Trigger: user tries to comment something on a notification
Normal Flow: 1 User goes to the notification
2 User writes down the comment
4 System saves and displays the comment
Alternative Flows: 2 User can attach a file to notification if the notification enable for send file
Business Rules: Student can only comment on his guidance teacher’s notifications Other Information: None
Assumptions: Comment is also a way to send report
Use case 11 – Submit project
ID and Name: Submit project
Description: Student submit report or anything to teacher through this feature Trigger: Student tries to submit the project to the notification
Preconditions: Notification is able to send attach file
Postconditions: Created a comment with the attached file
Normal Flow: 1 Student goes to the notifications
2 Students writes down the comment
Assumptions: Submitting report is one of the key features of the system
Bảng 3.3.11 Use case 11 - Submit project
Use case 12 – Register for consideration
ID and Name: Register for consideration
Primary Actor: Student Secondary Actors: None
Description: Student registers a project to a teacher
Trigger: Student tries to register a new project not in the list
Preconditions: Still in registration project period
Postconditions: Student created a project and send request to teacher
Normal Flow: 1 Student gathers information about project and recruit team
2 Student fills in the registration form
3 Student hit the “Đăng ký” button
4 System send the request to teacher
Assumptions: This feature allows student register project out of the list provided by teacher Bảng 3.3.12 Use case 12 - Register for consideration
Use case 13 – Login
Description: Login function authorizes user
Trigger: User trying to access the system
Normal Flow: 1 User browses the web
2 User inserts username and password
4.1 Wrong user name or password 5.1 The system tells user that wrong data provided 6.1 User logs in again
None Assumptions: This function is crucial for user to access the system
Use case 14 – Add Student to a course
ID and Name: Add Student to a course
Primary Actor: Ministry Secondary Actors: None
Description: Ministry after create a course, they have to add student to that course Trigger: Ministry creates a course and tries to add students to that course
Preconditions: Students must registered the course so ministry can add them to the course Postconditions: Students added to the course
Normal Flow: 1 Ministry creates a course, fills in the information of that course
2 Ministry inserts students to the course using their userId
4 System creates course included students
Alternative Flows: 1.1 Ministry clicks on a course
1.2 Ministry clicks on “Thêm sinh viên”
1.3 Ministry inserts student id in the box 1.4 Ministry clicks “Thêm”
1.5 System finds the students, if found, add student to the course
• Pops up an error tell ministry that no student found
Assumptions: When student added to a course, student can register or join in project in that course Bảng 3.3.14 Use case 14 - Add Student to a course
Data model
Các Data model cần thiết trong hệ thống:
Data transfer object
Các object để truyền tải thông tin giữa Frontend và Backend:
+Password +Name +UserType +Class +TeacherProfileId
+StartDate +EndDate +StartRegisterDate +EndRegisterDate +MaxStudentRegister +MinStudentRegister +Quality
Add or modify student’s point
Create new notification or modify old one
Create a course linked to a project
+IsApproved approve a project by teacher