Bảng thông tin case đăng nhập tài khoản Use case Name Quên mật khẩu Description Use case dùng cho tính năng quên mật khẩu Primary Actor User Secondary Actor Không có Pre-conditions Ở màn
Phạm vi và đối tượng
PHẦN 2 CƠ SỞ LÝ THUYẾT
Ngôn ngữ
Java
Java là một ngôn ngữ lập trình mạnh mẽ và phổ biến, được phát triển bởi Sun Microsystems, hiện thuộc về Oracle Corporation Ra mắt lần đầu vào năm 1995, Java đã trở thành một trong những ngôn ngữ lập trình được ưa chuộng nhất trên thế giới Với khả năng chạy trên nhiều nền tảng khác nhau, Java cho phép lập trình viên phát triển ứng dụng cho cả máy tính để bàn, thiết bị di động và hệ thống nhúng Tính năng an toàn, hiệu suất cao và cộng đồng hỗ trợ rộng rãi đã giúp Java duy trì vị thế hàng đầu trong ngành công nghiệp công nghệ thông tin.
Kể từ năm 1995, Java đã nổi bật như một trong những ngôn ngữ lập trình phổ biến nhất toàn cầu nhờ vào sự linh hoạt, tính di động và khả năng tương thích vượt trội Những đặc điểm chính của Java bao gồm khả năng chạy trên nhiều nền tảng khác nhau, tính bảo mật cao và hỗ trợ lập trình hướng đối tượng.
Java là một ngôn ngữ lập trình đa nền tảng, cho phép chạy trên nhiều thiết bị khác nhau, từ máy tính cá nhân đến điện thoại di động và máy chủ Điều này được thực hiện thông qua Java Virtual Machine (JVM), giúp tăng tính linh hoạt và khả năng tương thích của ứng dụng.
Tính đa mục đích (Versatility): Java hỗ trợ nhiều loại ứng dụng từ ứng dụng desktop, web, di động tới các ứng dụng máy chủ phức tạp
Bảo mật cao: Java có một môi trường bảo mật mạnh mẽ, bao gồm hệ thống kiểm soát truy cập và quản lý bộ nhớ an toàn
Tính khả chuyển (Portability): Mã nguồn Java có thể chạy trên mọi nền tảng mà có JVM, không cần viết lại mã nguồn
Sự phát triển liên tục: Java thường xuyên cập nhật các phiên bản mới, cung cấp các tính năng mới, cải thiện hiệu suất và bảo mật
Community lớn: Java có một cộng đồng lập trình viên mạnh mẽ và rộng lớn, với nhiều tài liệu, công cụ và hỗ trợ sẵn có
Hỗ trợ đa dạng ngôn ngữ lập trình: Java hỗ trợ nhiều ngôn ngữ lập trình khác nhau như Kotlin, Scala, và Groovy
Java là ngôn ngữ lập trình phổ biến, được ứng dụng rộng rãi trong phát triển ứng dụng di động, web, game và các hệ thống phần mềm lớn Với tính linh hoạt, bảo mật cao và khả năng tương thích đa nền tảng, Java vẫn giữ vững vị trí quan trọng trong ngành công nghệ thông tin.
Java Spring Boot
Java Spring Boot là một framework phát triển ứng dụng web Java, tuân theo nguyên tắc "Convention over Configuration" (Quy ước hơn là cấu hình) Framework này giúp xây dựng nhanh chóng và dễ dàng các ứng dụng web và dịch vụ RESTful, dựa trên nền tảng Spring Framework Các đặc điểm nổi bật của Java Spring Boot bao gồm khả năng cấu hình tự động, tích hợp dễ dàng với các công nghệ khác và hỗ trợ phát triển nhanh chóng.
Spring Boot cho phép tích hợp các thư viện và công nghệ một cách linh hoạt, nhờ vào việc sử dụng các cấu hình mặc định và tự động hóa, giúp quá trình phát triển trở nên dễ dàng hơn.
Cấu hình tự động: Cung cấp cấu hình tự động thông qua các Annotation và conventions mặc định giúp việc cấu hình trở nên đơn giản hơn
Embedded Servers: Hỗ trợ các máy chủ nhúng như Tomcat, Jetty, và Undertow để chạy ứng dụng mà không cần cấu hình riêng biệt
Starter POMs offer pre-configured Project Object Model (POM) sets that enable quick project initiation with predefined dependencies.
Actuator: Cho phép quản lý và giám sát ứng dụng bằng cách cung cấp các endpoints để xem thông tin về ứng dụng và quản lý chúng
Spring Boot CLI: Cung cấp một Command-Line Interface để tạo, chạy và quản lý ứng dụng Spring Boot
Spring Boot enhances and builds upon the features of the Spring Framework, including Dependency Injection, Aspect-Oriented Programming (AOP), Spring MVC, and various other functionalities, creating a cohesive ecosystem for developers.
Có khả năng tích hợp một cách dễ dàng với nhiều công nghệ khác nhau như Thymeleaf, JPA, Security, và nhiều thư viện khác, giúp nâng cao hiệu suất và tính linh hoạt của hệ thống.
Công cụ
MongoDB
MongoDB là một hệ thống quản lý cơ sở dữ liệu NoSQL phổ biến, được phát triển bởi MongoDB Inc Hệ thống này lưu trữ dữ liệu dưới dạng tài liệu linh hoạt, cho phép mở rộng tốt và rất phù hợp cho các ứng dụng yêu cầu cao về tính linh hoạt và hiệu suất.
A Document-Oriented Database stores data in a JSON-like format known as BSON (Binary JSON) This type of database organizes data into collections, with each collection containing multiple documents that do not require a fixed schema.
Tính Linh Hoạt và Đa Dạng Dữ Liệu: Không yêu cầu schema cứng, cho phép tài liệu trong cùng một collection có cấu trúc khác nhau
Hỗ trợ nhiều loại dữ liệu: số, văn bản, mảng, dữ liệu nhúng (embedded documents), và object ID
Tính năng tìm kiếm mạnh mẽ cho phép người dùng thực hiện các truy vấn phong phú và linh hoạt, giúp truy xuất dữ liệu một cách hiệu quả Hệ thống hỗ trợ tìm kiếm theo các trường cụ thể, phạm vi khác nhau và thực hiện các phép toán phức tạp, mang lại trải nghiệm tìm kiếm tối ưu.
Horizontal Scaling và Sharding là hai phương pháp quan trọng giúp mở rộng cơ sở dữ liệu theo chiều ngang Bằng cách phân tán dữ liệu trên nhiều nodes và clusters, hệ thống có thể xử lý khối lượng lớn thông tin một cách hiệu quả Tính năng sharding cho phép chia nhỏ dữ liệu và phân phối chúng trên các shard, từ đó tối ưu hóa hiệu suất và khả năng mở rộng của cơ sở dữ liệu.
Bảo mật và quản lý dữ liệu là yếu tố quan trọng, bao gồm các tính năng như xác thực, quản lý quyền truy cập và mã hóa dữ liệu Để hỗ trợ việc này, có các công cụ quản lý và giám sát như MongoDB Compass, giúp người dùng dễ dàng quản lý và theo dõi dữ liệu một cách hiệu quả.
Sử Dụng Đa Dạng: MongoDB được sử dụng rộng rãi trong các ứng dụng web, mobile, IoT và big data.
IntelliJ IDEA
IntelliJ IDEA là một IDE hàng đầu cho phát triển ứng dụng Java, đặc biệt là với Java Spring Boot Nó cung cấp nhiều tính năng hữu ích như hỗ trợ Maven/Gradle, quản lý Bean, Auto-Configuration, và tạo dịch vụ RESTful, giúp tối ưu hóa quy trình phát triển ứng dụng Spring Boot.
Dưới đây là một số điểm nổi bật khi sử dụng IntelliJ IDEA cho phát triển Java Spring Boot:
IntelliJ IDEA offers seamless integration with Spring Initializr, enabling users to effortlessly create new Spring Boot projects Users can select various dependencies, including Spring Web, Spring Data JPA, Hibernate, and other technologies, to kickstart their Spring Boot development.
IntelliJ IDEA hỗ trợ hai công cụ quản lý dự án phổ biến trong Java là Maven và Gradle, giúp người dùng dễ dàng quản lý dependencies, thực hiện build và điều chỉnh các tệp tin cấu hình của dự án.
IDE này sở hữu các tính năng mạnh mẽ như auto-completion và refactoring, giúp việc viết mã trở nên nhanh chóng và dễ dàng hơn.
IntelliJ IDEA sở hữu một công cụ gỡ lỗi mạnh mẽ, giúp người dùng gỡ lỗi ứng dụng một cách hiệu quả Bên cạnh đó, nó cũng hỗ trợ các framework kiểm thử như JUnit và TestNG, cho phép người dùng dễ dàng viết và chạy các bài kiểm thử.
Hỗ trợ Git: IDE này tích hợp sâu với Git, cho phép người dùng quản lý phiên bản mã nguồn dễ dàng
Spring Boot Run/Debug Configurations: IntelliJ IDEA cung cấp các cấu hình run/debug Spring Boot application một cách đơn giản và thuận tiện.
Postman
Postman là một ứng dụng máy tính hỗ trợ các nhà phát triển trong việc kiểm tra, gỡ lỗi và phân tích API Ứng dụng này được thiết kế cho việc tương tác với các API RESTful và HTTP, mang đến giao diện người dùng thân thiện cùng nhiều công cụ hữu ích để tạo, kiểm thử và chia sẻ các yêu cầu HTTP.
Tính năng chính của Postman:
Postman allows users to create and send various types of HTTP requests, including GET, POST, PUT, DELETE, and PATCH It features an intuitive interface for entering essential information such as headers, parameters, body content, and authentication for each request.
Kiểm thử API với Postman cho phép người dùng thiết lập các bộ kiểm thử tự động nhằm xác minh tính chính xác của API thông qua việc thực thi các script kiểm thử được viết bằng JavaScript.
Quản Lý Environment: Người dùng có thể quản lý các biến môi trường (environment variables) để dễ dàng chuyển đổi giữa các môi trường như development, testing, và production
Tạo Collections: Postman cho phép người dùng tổ chức các requests vào các collections để quản lý dễ dàng hơn
Chia Sẻ và Hợp Tác: Người dùng có thể chia sẻ các collections và environments với người cộng tác, giúp hợp tác và làm việc nhóm hiệu quả hơn
Mock Servers trong Postman cho phép người dùng tạo ra các máy chủ giả lập, giúp mô phỏng một API server Điều này cho phép kiểm thử các yêu cầu mà không cần phải có một server thực tế, mang lại sự tiện lợi và hiệu quả trong quá trình phát triển ứng dụng.
Postman integrates seamlessly with various API testing tools, including Newman, which serves as a command-line collection runner This integration allows users to execute collections in command-line environments or within CI/CD pipelines, enhancing the efficiency of API testing processes.
MongoDB Compass
MongoDB Compass là công cụ GUI thân thiện giúp người dùng tương tác và quản lý cơ sở dữ liệu MongoDB một cách trực quan và thuận tiện.
Tính năng chính của MongoDB Compass:
Compass là công cụ mạnh mẽ giúp người dùng khám phá cấu trúc dữ liệu của cơ sở dữ liệu MongoDB, cho phép xem các collection, documents và fields một cách trực quan và dễ dàng.
Query Builder là công cụ hỗ trợ người dùng tạo câu truy vấn MongoDB một cách dễ dàng thông qua giao diện đồ họa Người dùng có khả năng xem và chỉnh sửa các điều kiện, projections, sorts và limits của câu truy vấn một cách trực quan.
Compass cung cấp tính năng xem và phân tích kế hoạch thực thi cho các truy vấn, giúp người dùng hiểu rõ cách MongoDB thực hiện truy vấn và tối ưu hóa hiệu suất.
Index Management: Cho phép tạo, xóa và quản lý các chỉ mục (index) trong cơ sở dữ liệu MongoDB để tối ưu hóa hiệu suất truy vấn
Data Visualization cho phép hiển thị dữ liệu một cách trực quan thông qua biểu đồ, bản đồ và các công cụ trực quan khác, giúp người dùng hiểu rõ hơn về cấu trúc và tính chất của dữ liệu.
Compass cung cấp công cụ phân tích schema, giúp xác định các mô hình dữ liệu và mối quan hệ giữa các collection, đồng thời kiểm tra tính toàn vẹn của dữ liệu.
Real-time server statistics provide essential insights into MongoDB server activity, including resource usage, connection counts, and various performance metrics.
Thư viện & tài nguyên hỗ trợ
Heroku
Heroku là nền tảng dịch vụ đám mây nổi bật cho việc triển khai và quản lý ứng dụng web và di động Nền tảng này mang đến môi trường linh hoạt cho phát triển và quản lý ứng dụng, giúp người dùng không phải lo lắng về cơ sở hạ tầng phần cứng.
Heroku là một nền tảng dễ sử dụng, cung cấp giao diện thân thiện và tự động hóa nhiều khía cạnh trong quá trình triển khai và quản lý ứng dụng, giúp người dùng tiết kiệm thời gian và công sức.
Heroku hỗ trợ đa dạng ngôn ngữ lập trình và framework phổ biến, bao gồm Node.js, Ruby, Python, Java, PHP cùng nhiều ngôn ngữ khác, giúp lập trình viên dễ dàng phát triển ứng dụng.
Hỗ trợ CI/CD (Tích hợp liên tục/ Triển khai liên tục) cho phép tích hợp tự động với các công cụ như GitHub và Heroku, giúp triển khai tự động sau mỗi lần commit vào kho lưu trữ.
Heroku cung cấp khả năng mở rộng linh hoạt, cho phép người dùng dễ dàng điều chỉnh kích thước và số lượng instances để phù hợp với tải và nhu cầu của ứng dụng.
Heroku offers a diverse range of add-ons and a marketplace that enable you to enhance your application's functionality, including options for databases, email services, log management, and various other services.
Heroku áp dụng mô hình phí dựa trên tài nguyên sử dụng, cho phép bạn chỉ thanh toán cho những gì bạn thực sự sử dụng Điều này giúp tối ưu hóa chi phí và mang lại sự linh hoạt cho người dùng.
Lược đồ CSDL
Account
Hình 33 Cấu trúc bảng Account
Diary
Hình 34 Cấu trúc bảng Diary
UserStory
Hình 35 Cấu trúc các bảng UserStory
Hình 36 Cấu trúc bảng SocialComment
SocialPost
Hình 37 Cấu trúc bảng SocailPost
PHẦN THỰC NGHIỆM, ĐÁNH GIÁ, PHÂN TÍCH KẾT QUẢ
Các giao diện chính và kết quả thử nghiệm
Màn hình đăng ký
Khi người dùng mới đăng ký tài khoản thành công, một popup sẽ xuất hiện thông báo rằng việc đăng ký đã hoàn tất Popup này cũng nhắc nhở người dùng kiểm tra Email để xác minh tài khoản trước khi có thể đăng nhập và sử dụng ứng dụng.
Màn hình đăng nhập và giao diện xác minh email
Hình 39 Màn hình đăng nhập và giao diện xác minh email
Khi ứng dụng không tìm thấy tài khoản lưu trữ trên bộ nhớ đệm, nó sẽ tự động chuyển hướng đến màn hình đăng nhập Tại đây, người dùng cần nhập username và password đã sử dụng khi đăng ký tài khoản để tiến hành đăng nhập.
Trường hợp đăng nhập khi Email chưa xác minh, sẽ có một Toast được hiển thị lên màn hình để thông báo rằng “Email not verify”
Màn hình trang chủ (Home)
Hình 40 Màn hình trang chủ
Sau khi người dùng đăng nhập thành công, tài khoản sẽ được lưu vào bộ nhớ đệm của ứng dụng Điều này giúp mỗi lần mở ứng dụng, người dùng sẽ được chuyển hướng trực tiếp đến trang chủ một cách nhanh chóng.
Trường hợp tài khoản chưa có dữ liệu về ngày mang thai, sẽ có popup hiện lên để yêu cầu người dùng chọn ngày mang thai
Khi người dùng chọn ngày dự kiến sinh, giao diện sẽ được cập nhật để hiển thị hình ảnh minh họa hình dạng của thai nhi tương ứng với số tuần thai.
Màn hình chi thông tin chi tiết về tuần thai
Trên trang chủ, khi người dùng nhấn vào nút ‘Pregnancy detail’, ứng dụng sẽ chuyển đến màn hình hiển thị thông tin chi tiết về tuần thai Màn hình này còn kèm theo một chipbar chứa danh sách các tuần thai khác để người dùng dễ dàng tham khảo.
Màn hình sẽ bao gồm ba phần chính: một màn hình hiển thị thông tin về thai nhi, một màn hình cung cấp thông tin về sự thay đổi của người mẹ, và một màn hình đưa ra lời khuyên hữu ích cho mẹ trong giai đoạn này.
Màn hình sổ tay dinh dưỡng
Khi người dùng nhấn vào nút "Nutrition" trên trang chủ của ứng dụng, họ sẽ được chuyển đến màn hình "Sổ tay dinh dưỡng", nơi hiển thị các nhóm thực phẩm khác nhau.
Khi người dùng truy cập vào các nhóm thực phẩm, ứng dụng sẽ dẫn họ đến trang chi tiết về nhóm thực phẩm đó, nơi cung cấp thông tin về ý nghĩa của nhóm thực phẩm đối với mẹ bầu Trang cũng sẽ hiển thị danh sách các thực phẩm thuộc nhóm, với ký hiệu giúp mẹ bầu nhận biết thực phẩm nên và không nên ăn trong từng giai đoạn mang thai.
Màn hình viết nhật ký
Khi người dùng nhấn vào nút “Diary” trên trang chủ, ứng dụng sẽ chuyển hướng đến trang nhật ký, nơi người dùng có thể tạo bài viết nhật ký, chèn hình ảnh, lưu trữ và dễ dàng xem lại hoặc chỉnh sửa bất cứ lúc nào.
Màn hình sổ khám thai
Trên màn hình trang chủ, khi người dùng nhấn vào nút “Sổ khám thai”, ứng dụng sẽ dẫn đến màn hình “Sổ khám thai”, nơi hiển thị danh sách các sổ khám thai mà người dùng đã tạo trước đó.
Người dùng có thể nhấn vào từng mục để xem thông tin chi tiết về từng sổ khám thai đã tạo, đồng thời có khả năng chỉnh sửa hoặc xóa sổ khám thai đó.
Người dùng có thể tạo một sổ khám thai bằng cách nhấn vào dấu (+) ở góc phải dưới màn hình, sau đó điền các thông tin cần thiết.
Hình 46 Màn hình phân tích thông tin khám của mẹ bầu
Khi người dùng nhấn vào nút “Mother’s chart” trên màn hình “Health Records”, ứng dụng sẽ chuyển đến màn hình phân tích và vẽ biểu đồ dựa trên thông tin từ các sổ khám thai Từ đó, ứng dụng có thể đưa ra đánh giá và cảnh báo cho người dùng Tuy nhiên, tất cả thông tin này chỉ mang tính chất tham khảo và người dùng nên lắng nghe ý kiến từ bác sĩ.
Màn hình sổ tay
Màn hình sổ tay (handbook) cung cấp thông tin hữu ích cho mẹ bầu, bao gồm các bài viết và danh mục bài viết, giúp họ hiểu rõ hơn về bản thân trong quá trình mang thai Ngoài ra, màn hình còn mang đến kiến thức và kinh nghiệm quý giá cho các mẹ bầu.
Hình 48 Các màn hình hiển thị danh mục bài viết và nội dung bài viết
Các bài viết sẽ được tổ chức theo từng danh mục cụ thể, và mỗi danh mục sẽ được phân chia thành các bộ sưu tập tương ứng.
Màn hình trò chuyện với trợ lý ảo ChatGPT
Người dùng có thể trò chuyện và nhận ý kiến từ trợ lý ảo ChatGPT 3.5, với thông tin cuộc hội thoại được lưu trữ trên thiết bị Tuy nhiên, mẹ bầu vẫn nên tham khảo ý kiến từ bác sĩ chuyên gia để đảm bảo thông tin chính xác và an toàn.
Màn hình setting
Màn hình "Cài đặt" hiển thị các tác vụ phụ cấp trên ứng dụng, cho phép người dùng thực hiện các thao tác như thay đổi ngôn ngữ hiển thị, cập nhật mật khẩu tài khoản, điều chỉnh ngày mang thai và đăng xuất khỏi tài khoản.
Màn hình quên mật khẩu
Hình 51 Popup khi bấm quên mật khẩu
Khi người dùng chọn "quên mật khẩu", một cửa sổ pop-up sẽ xuất hiện yêu cầu nhập username Sau khi điền username, một mã OTP sẽ được gửi đến email liên kết với username đó.
Người dùng có thể bấm "Resend" để nhận lại mã OTP sau 15 giây trên màn hình nhập mã OTP Khi nhập đúng mã OTP, người dùng sẽ được chuyển hướng đến trang để thiết lập mật khẩu mới.
Sau khi người dùng nhập mật khẩu mới đúng yêu cầu và bấm reset password, ứng dụng sẽ điều hướng người dùng trở lại trang Login để đăng nhập.
Màn hình đổi mật khẩu
Khi người dùng chọn “Đổi mật khẩu” trong phần Cài đặt, ứng dụng sẽ chuyển đến màn hình đổi mật khẩu Tại đây, người dùng có thể nhập mật khẩu cũ và mật khẩu mới để thực hiện việc đổi mật khẩu, hoặc chọn tùy chọn quên mật khẩu nếu cần.
Màn hình dòng thời gian mạng xã hội
Hình 54 Màn hình dòng thời gian
Màn hình dòng thời gian hiển thị thông tin về các bài đăng và câu chuyện mà người dùng chia sẻ Người dùng có thể tương tác bằng cách bày tỏ cảm xúc và bình luận trên các bài viết này.
Màn hình tin nhắn
Người dùng có khả năng nhắn tin với nhau, theo dõi trạng thái trực tuyến của đối phương, và lịch sử cuộc hội thoại sẽ được lưu trữ để tiện theo dõi.
Màn hình danh sách thông báo
Hình 56 Màn hình danh sách thông báo
Người dùng có thể xem và truy cập các thông báo được nhận từ server
Danh sách thông báo này sẽ được cập nhật theo thời gian thực khi có thông báo mới được gửi lên với độ trễ thấp.