CHƯƠNG 1: TỔNG QUAN V Đ TI 1.1 Khảo sát và xác định yêu cầu của hệ thống 1.1 Nội dung khảo sát và nắm bắt hiện trạng Trang web thương mại điện tử được xây dựng do nhu cầu mua sắm của người dân ngày càng tăng cao, kinh tế ngày càng phát triển khiến sức mua của con người cũng tăng theo. Ngày này công nghệ kỹ thuật đã trở lên quá tiên tiến, khiến hình thức mua hàng offline đã không còn phổ biến nữa, thay vào đó là mua hàng online thông qua các ứng dùng, trang web trên mạng 1.2 Giới thiệu vấn đề Các trang web lớn nhỏ đã dần dần được ra đời nhằm phục vụ mục đích tôi ưu hóa mua sắm online của con người. Nhưng những trang web này chỉ dừng lại ở việc bán một số mặt hàng nhất định. Chúng ta có thể tưởng tượng, khi chúng ta ra ngoài chợ mua đồ thì mỗi một cửa hàng sẽ tương ứng với một trang web bán hàng, vì thế nên mặt hàng thường không đa dạng, mà chỉ chuyên về một loại hàng nào đó.
Áp dụng vào công nghệ thông tin, ta có thể thấy được, thay vì phải tạo nhiều trang web, ta sẽ tạo ra một trang web bao gọn tất cả các trang web đó. Chính vì vậy trang web thương mại điện tử của chúng em ra đời nhằm phục vụ cho mục đích trên.2 Các công cụ sử dụng 1.1 Ngôn ngữ lập trình JAVA Java là một một ngôn ngữ lập trình hiện đại, bậc cao, hướng đối tượng, bảo mật, mạnh mẽ, và là một Platform. Platform: Bất cứ môi trường phần cứng hoặc phần mềm nào mà có một chương trình chạy, thì được hiểu như là một Platform. Với môi trường runtime là (JRE) và API, Java được gọi là Platform.
Ngôn ngữ lập trình Java ban đầu được phát triển bởi Sun Microsystems và do James Gosling khởi xướng và phát hành vào năm 1995. Phiên bản mới nhất của Java Standard Edition gọi là Java SE 8. Với sự tiến bộ của Java và sự phổ biến rộng rãi, nhiều cấu hình đã được xây dựng để phù hợp với nhiều loại nền tảng khác nhau. Ví dụ: J2EE cho các ứng dụng doanh nghiệp, di động.
Các phiên bản J2 mới đã được đổi tên thành Java SE, EE, ME.2 Framework Spring boot Spring Boot là một dự án phát triển bởi JAV trong hệ sinh thái Spring framework. Nó giúp cho các lập trình viên đơn giản hóa quá trình lập trình một ứng dụng với Spring, tập trung vào việc phát triển business cho ứng dụng. Để phát triển một ứng dụng web cơ bản HelloWorld sử dụng Spring framework sẽ cần ít nhất 5 công đoạn sau; Tạo một project sử dụng Maven các dependency cần thiết của Spring MVC và Servlet API. Một tập tin web.xml khai báo DispatcherServlet của Spring MVC.
Một File cấu hình của Spring MVC. Một class Controller trả về một trang “Hello World” khi request đến. Cuối cùng phải có một web server dùng để triển khai ứng dụng lên chạy. Trong các công đoạn này, chỉ có tạo một class Controller thì có thể khác cho các ứng dụng khác nhau vì mỗi ứng dụng có một yêu cầu khác nhau.
Còn các công đoạn khác giống nhau. Giờ đây với Spring Boot, có thể tạo dự án Spring một cách nhanh chóng và cấu hình cũng đơn giản dùng Sublime Text để phát triển không cần cài đặt eclipse hay netbean nặng. Dưới đây là những tính năng nổi bật của Spring Boot: Tạo các ứng dụng Spring riêng biệt. Nhúng trực tiếp Tomcat, Jetty hoặc Undertow (không cần deploy ra file WAR) Các starter dependency sẽ giúp việc cấu hình Maven đơn giản Auto cấu hình Spring khi cần thiết Không sinh code cấu hình và yêu cầu phải cấu hình bằng XML … 2 1.3 Cơ sở dữ liệu MySQL MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (Relational Database Management System, viết tắt là RDBMS) hoạt động dựa trên mô hình client-server.
MySQL là một trong số các phần mềm của RDBMS, nhưng thường được cho là môt vì độ quá phổ biến của nó. Mô hình hoạt động của MySQL Những lý do chính khiến MySQL trở nên quan trọng: Linh hoạt và dễ dùng: Có thể sửa source code để đáp ứng nhu cầu sử dụng mà không phải thanh toán thêm chí phí nào, quá trình cài đặt cũng đơn giản. Hiệu năng cao: Bất kể lưu trữ dữ liệu lớn của các trang thương mại điện tử hoặc những hoạt động kinh doanh lớn liên quan đến công nghệ thông tin, MySQL cũng có thể đáp ứng.4 Ngôn ngữ lập trình VueJs Vue.js là một framework linh động (nguyên bản tiếng Anh: progressive – tiệm tiến) dùng để xây dựng giao diện người dùng (user interfaces). Khác với các framework nguyên khối (monolithic), Vue được thiết kế từ đầu theo hướng cho phép và khuyến khích việc phát triển ứng dụng theo từng bước.
Khi phát triển lớp giao diện (view layer), người dùng chỉ cần dùng thư viện lõi (core library) của Vue, vốn rất dễ học và tích hợp với các thư viện hoặc dự án có sẵn. Cùng lúc đó, nếu kết hợp với những kĩ thuật hiện đại như SFC (single file components) và các thư viện hỗ trợ, Vue cũng đáp ứng được dễ dàng nhu cầu xây dựng những ứng dụng một trang (SPA - Single-Page Applications) với độ phức tạp cao hơn nhiều.5 Docker Docker là nền tảng để cung cấp cách để building, deploying và running ứng dụng, website dễ dàng hơn bằng cách sử dụng các containers (trên nền tảng ảo hóa). Lợi ích của docker: Triển khai kiến trúc Microservices dễ dàng. Xây dựng ứng dụng và scale linh hoạt.
Không tốn thời gian để config máy local và server cùng một môi trường để chạy ứng dụng. Lập trình viên chỉ cần build 1 lần chạy ở nhiều nơi. 4 Đẩy code lên server, thực thi ứng dụng một cách nhanh chóng & dễ dàng.6 Gitlab GitLab là hệ thống self-hosted có mã nguồn mở dựa trên hệ thống máy chủ Git dùng để quản lý mã nguồn. GitLab cung cấp giải pháp server một cách toàn diện & nhận được sự đánh giá cao từ cộng đồng.
Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS) được rất nhiều lập trình viên ưa chuộng. Lợi ích của gitlab: Mang lại sự tiện lợi khi cần lưu trữ hay tải lên code và tải xuống. Kiểm soát các thay đổi trong code một cách nhanh chóng & chính xác. Hỗ trợ việc quản lý, phân phối công việc giữa các dự án lập trình một cách hiệu quả.7 CI/CD CI là tên viết tắt Continuous Integration (tích hợp liên tục).
Còn CD là viết tắt của Continuous Delivery (chuyển giao liên tục) hoặc Continuous Deployment (triển khai liên tục). CI/CD thường dung để đề cập đến việc tự động hóa trong quy trình phát triển phần mềm và chuyển giao sản phẩm, giúp cho việc tích hợp diễn ra một cách nhanh chóng và sản phẩm hoàn thiện được chuyển đến người dùng trong thời gian sớm nhất. Ngày nay, CI/CD đã được áp dụng rộng rãi vào quy trình làm việc của các doanh nghiệp làm trong lĩnh vực IT, song hành cùng với DevOps và Agile. Một quy trình CI/CD hoàn chỉnh có thể được vẽ ra như sau: Developer commit code.
Quy trình CI/CD tự động chạy build, chạy test và deploy. Chuyển giao sản phẩm đến tay khách hàng. Với quy trình phát triển phần mềm, tất cả các bước làm việc của Developer có phần thủ công và sẽ tốn khá nhiều thời gian. Developer sau khi lập trình xong thì sẽ build trực tiếp trên máy tính/laptop cá nhân, sau đó chờ code được build hoàn tất.
Tiếp theo, họ phải upload thủ công file này lên TestFlight và trải qua 3,4 bước thao tác, rồi lại tiếp tục chờ cho đến khi kết thúc. Khi File được upload xong hết thì Developer mới thông báo đến team Tester/QA QC và họ mới bắt đầu thực hiện công tác kiểm thử liên quan cho toàn bộ sản phẩm. Nếu quá trình xảy ra sai sót thì quy trình gần như sẽ quay lại từ đầu, thời gian chờ giữa 2 bên Developer và Tester/QA QC khá lâu, khiến cho dự án cũng sẽ bị trì hoãn theo. Đó là chưa kể đến việc Developer khi phát triển tính năng mới có thể làm hỏng tính năng cũ đang chạy trên ứng dụng, chỉ khi deploy mới phát hiện ra.8 Amazone web service 5 Amazon Web Services (AWS) là một nền tảng đám mây toàn diện & được sử dụng khá phổ biến và rộng rãi.
Amazon web service cung cấp trên 200 dịch vụ đầy đủ tính năng từ các trung tâm dữ liệu trên toàn thế giới. AWS có rất nhiều dịch vụ & nhiều tính năng trong các dịch vụ đó, hơn bất kỳ nhà cung cấp đám mây nào–từ các công nghệ cơ sở hạ tầng như ổ lưu trữ, máy tính, cơ sở dữ liệu–đến các công nghệ mới nổi, như machine learning và AI, kho dữ liệu & phân tích. Điều này giúp chuyển các ứng dụng hiện có lên đám mây nhanh chóng hơn, dễ dàng hơn & hiệu quả hơn bao giờ hết AWS còn có chức năng sâu nhất trong các dịch vụ đó. Ví dụ như AWS cung cấp nhiều loại cơ sở dữ liệu mới nhất được xây dựng có mục đích cho các loại ứng dụng khác nhau để bạn có chọn công cụ phù hợp cho công việc để có chi phí và hiệu suất tối đa nhất.
6 CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 2.1 Xác định các tác nhân ⮚ Người dùng: Quản lý thông tin tài khoản Quản lý đơn hàng Quản lý thông báo Quản lý câu hỏi/trả lời Mua hàng/đặt hàng Đăng ký trở thành người bán hàng Bình luận sản phẩm ⮚ Người bán hàng (Bao gồm các chức năng của người dùng và thêm các tính năng dưới đây): Quản lý đơn hàng Quản lý sản phẩm Quản lý doanh thu ⮚ Quản trị viên: Quản lý người dùng Quản lý doanh mục Quản lý sản phẩm Quản lý thông báo Quản lý hỏi đáp/trả lời Quản lý ảnh bìa Quản lý bình luận Quản lý phê duyệt/hủy bỏ trở thành người bán hàng 7 2.2 Biểu đồ use case 2.1 Biểu đồ use case của người dùng a. Biểu đồ use case quản lý thông tin tài khoản Người dùng sau khi đăng nhập có thể: + Cập nhật thông tin tài khoản như họ và tên, số điện thoại, tên cửa hàng, giới tính, ảnh đại diện, … + Thay đổi địa chỉ nhận hàng để nhận hàng, người dùng có thể thêm nhiều địa chỉ nhận hàng, nhưng chỉ được chọn một địa chỉ nhận hàng làm mặc định. Địa chỉ này dùng để xác định khi người dùng mua hàng. + Thay đổi mật khẩu khi đăng nhập Hình 2.1 Biểu đồ use case người dùng b.