TÓM TẮT KHÓA LUẬN Khóa luận với đề tài Xây dựng công cụ quản lý sản phẩm trong công nghệ thông tin dùng Java Spring framework và ReactJS được xây dựng trên hệ thống website, giúp người q
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 3DANH SÁCH HỘI ĐỒNG BẢO VỆ KHÓA LUẬN
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……… ngày của Hiệu trưởng Trường Đại học Công nghệ Thông tin
1 - Chủ tịch
2 - Thư ký
3 - Ủy viên
4 - Ủy viên
Trang 4ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
TP HCM, ngày… tháng… năm
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
CỦA CÁN BỘ HƯỚNG DẪN
Tên khóa luận:
XÂY DỰNG MÔI TRƯỜNG PHÁT TRIỂN SẢN PHẨM CÔNG NGHỆ THÔNG TIN
Đánh giá Khóa luận
1 Về cuốn báo cáo:
Trang 54 Về thái độ làm việc của sinh viên:
………
………
Đánh giá chung: ………
………
Điểm từng sinh viên: Nguyễn Duy Tân /10
Trần Thị Thu Tình /10
Người nhận xét
(Ký tên và ghi rõ họ tên)
Trang 6ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
TP HCM, ngày… tháng… năm
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
CỦA CÁN BỘ HƯỚNG DẪN
Tên khóa luận:
XÂY DỰNG MÔI TRƯỜNG PHÁT TRIỂN SẢN PHẨM CÔNG NGHỆ THÔNG TIN
Đánh giá Khóa luận
5 Về cuốn báo cáo:
Trang 74 Về thái độ làm việc của sinh viên:
………
………
Đánh giá chung: ………
………
Điểm từng sinh viên: Nguyễn Duy Tân /10
Trần Thị Thu Tình /10
Người nhận xét
(Ký tên và ghi rõ họ tên
Trang 8LỜI CẢM ƠN
Đầu tiên, với tất cả lòng biết ơn và sự kính trọng, chúng em xin trân trọng cảm ơn quý thầy,
cô khoa Công Nghệ Phần Mềm, cũng như các thầy, cô đang công tác tại trường Đại học Công
nghệ Thông tin – ĐHQG-HCM đã dùng tất cả tri thức và tâm huyết để truyền đạt những kiến
thức, kinh nghiệm quý báu cho chúng em trong suốt quá trình học tập và rèn luyện tại ngôi
trường này Đặc biệt, chúng em xin gửi lời tri ân chân thành và sâu sắc đến Ths Nguyễn Công
Hoan – người thầy hướng dẫn đã hết sức tận tâm, nhiệt tình hỗ trợ và hết lòng giúp đỡ cho
nhóm chúng em trong suốt quá trình thực hiện đồ án Những định hướng, bổ sung, góp ý của
thầy là nguồn cảm hứng và nền tảng cơ sở góp phần giúp chúng em có những nghiên cứu
đúng đắn, đạt được kết quả tốt nhất trong việc xây dựng, phát triển ứng dụng và hoàn thiện
khóa luận tốt nghiệp.Tiếp theo, chúng em xin được phép gửi lời cảm ơn đặc biệt đến gia đình
và người thân Gia đình luôn là chỗ dựa tinh thần vững chắc, là nguồn động lực lớn giúp
chúng em vượt qua mọi khó khăn, phấn đấu hoàn thành tốt
Cuối cùng, nhóm chúng em xin gửi lời cảm ơn đến các anh, chị và các bạn sinh viên trường
Đại học Công nghệ Thông tin đã nhiệt tình hỗ trợ, chia sẻ ý kiến, góp ý giúp chúng em trong
suốt thời gian thực đồ án Một lần nữa, chúng em xin chân thành cảm ơn và xin gửi lời chúc
sức khỏe đến quý thầy, cô
TP Hồ Chí Minh, ngày 15 tháng 1 năm 2021
Nhóm tác giả
Trang 9ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
ĐỀ CƯƠNG CHI TIẾT KHÓA LUẬN TỐT NGHIỆP
Tên đề tài: Xây dựng môi trường phát triển sản phẩm công nghệ thông tin (Building tool for product
workspace)
Cán bộ hướng dẫn: ThS Nguyễn Công Hoan
Thời gian thực hiện: Từ ngày 7/09/2020 đến ngày 20/12/2020
Sinh viên thực hiện:
1 Nguyễn Duy Tân - 16521075
2 Trần Thị Thu Tình - 16521250
Nội dung đề tài:
Mục tiêu: Đề tài hướng đến xây dựng một môi trường phát triển sản phẩm công nghệ thông tin cho các công ty
có quy mô vừa và nhỏ Với mục tiêu tạo ra một công cụ quản lý sản phẩm theo lộ trình Cho phép tạo ra một kế hoạch chi tiết về chiến lược sản phẩm và theo dõi các tính năng của sản phẩm trong suốt vòng đời phát triển sản phẩm Đồng thời công cụ tạo ra một cái nhìn tổng quan toàn diện về các sản phẩm, đặt các mốc quan trọng khác nhau cho các nhóm, tìm nguồn ý tưởng từ các thành viên trong nhóm, tạo ra một quy trình làm việc cho các phương pháp agile/scrum Giúp cho người quản lý sản phẩm (Product manager) tạo ra được một sản phẩm có chất lượng, và đáp ứng được nhu cầu của khách hàng
Đối tượng: Các công ty có quy mô vừa và nhỏ
Phương pháp thực hiện: Làm việc nhóm với 2 thành viên, phân chia công việc phù hợp với năng lực và kinh
nghiệm của từng người, thực hiện khóa luận theo lượng công việc và thời gian đã được lập kế hoạch chi tiết Các vấn đề liên quan đến khóa luận đều được trao đổi trực tiếp giữa các thành viên
Kết quả mong đợi: Hoàn thiện một công cụ hoạt động tốt với đầy đủ các chức năng đã được lập trình, giao diện thân thiện và mang lại trải nghiệm tốt nhất cho người dùng
Kế hoạch thực hiện: (thời gian thực hiện trong 15 tuần)
công Phase 1: Phân tích và tìm hiểu 1 tuần
1 Sprint 1: Phân tích đề tài và nghiên cứu kỹ thuật 1 tuần
Trang 101.1 Khảo sát, tìm hiểu yêu cầu của hệ thống
Tuần 1 (7/9/2020 - 14/9/2020)
Cả nhóm 1.2 Phân tích, thiết kế hệ thống:
1.2.4 Lựa chọn công nghệ, kỹ thuật phù hợp cho dự án Cả nhóm
2 Sprint 2: Nghiên cứu và xây dựng khung ứng dụng 1 tuần
2.1 Tìm hiểu và xây dựng framework cho web server Tuần 2
(14/09/2020 – 21/09/2020)
Tân
3
Sprint 3: Xây dựng chức năng đăng nhập, đăng ký,
đăng ký package, tạo workspace và product 1 tuần
3.1 Xây dựng chức năng đăng nhập, đăng ký Tuần 3
Cài đặt giao diện và thực hiện chức năng đăng ký gói
4 Sprint 4: Xây dựng chức năng tạo chiến lược 5 tuần
(28/09/2020 – 5/10/2020)
Tân 4.2 Cài đặt giao diện và hiện thực chức năng quản lý vision Tình 4.3 Xây dựng chức năng quản lý model
Tuần 5 (5/10/2020 – 12/10/2020)
Tân 4.4 Cài đặt giao diện và hiện thực chức năng quản lý model Tình
4.6 Cài đặt và hiện thực chức năng quản lý positioning Tình 4.7 Xây dựng chức năng quản lý personal Tuần 6
(12/10/2020 – 19/10/2020)
Tân Cài đặt và hiện thực chức năng quản lý personal
Trang 114.9 Xây dựng chức năng quản lý competitors Tân 4.10 Cài đặt và hiện thực chức năng quản lý competitors Tình 4.11 Xây dựng chức năng quản lý mục tiêu Tuần 7
(19/10/2020 – 26/10/2020)
Tân 4.12 Cài đặt giao diện và hiện thực chức năng quản lý mục tiêu Tình
4.13 Xây dựng chức năng quản lý sáng kiến
Tuần 8 (26/10/2020 – 1/11/2020)
Tân
4.14 Cài đặt giao diện và hiện thực chức năng quản lý sáng kiến Tình
5 Sprint 5: Xây dựng chức năng quản lý release 1 tuần
5.1 Xây dựng chức năng quản lý release Tuần 9
(1/11/2020 – 8/11/2020)
Tân
5.2 Cài đặt giao diện và thực hiện chức năng quản lý release Tình
6 Sprint 6: Xây dựng chức năng quản lý feature 1 tuần
6.1 Xây dựng chức năng quản lý feature Tuần 10
(8/11/2020 – 15/11/2020)
Tân 6.2 Cài đặt giao diện và hiện thực chức năng quản lý feature Tình
7 Sprint 7: Xây dựng chức năng quản lý roadmaps 1 tuần
7.1 Xây dựng chức năng quản lý roadmaps Tuần 11
(15/11/2020 – 22/11/2020)
Tân 7.2 Cài đặt giao diện và hiện thực chức năng quản lý roadmaps Tình
8 Sprint 8: Xây dựng chức năng quản lý idea 1 tuần
(22/11/2020 – 29/11/2020)
Tân 8.2 Cài đặt giao diện và thực hiện chức năng quản lý idea Tình
9 Sprint 9: Xây dựng chức năng xem thông tin chung 1 tuần
9.1 Xây dựng chức năng xem thông tin của workspace
Tuần 13 (29/11/2020 – 06/12/2020)
Xây dựng chức năng hiển thị danh sách công việc của user
9.4
Cài đặt giao diện và hiện thực chức năng hiển thị danh sách
Tình
Trang 12Phase 3: Quản trị hệ thống
10
Sprint 10: Xây dựng chức năng phân quyền hệ thống và
(06/12/2020 – 13/12/2020)
Tình
Phase 4: Kiểm thử, sửa lỗi và đóng gói 1 tuần
11 Sprint 11: Kiểm thử và sửa lỗi
1/2 tuần (13/12/2020- 17/12/2020) Cả nhóm
(17/12/2020 – 20/12/2020)
Cả nhóm
Xác nhận của CBHD (Ký tên và ghi rõ họ tên)
TP HCM, ngày 15 tháng 1 năm 2021
Sinh viên (Ký tên và ghi rõ họ tên)
Trang 13MỤC LỤC
Trang 14Chương 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 29
3.4.4.3 Đặt tả use case “Quản lý user, phân quyền user” 46
3.4.4.16 Đặc tả use case “Quản lý roadmap strategy” 83
Trang 164.2.7 Giao diện quản lý competitors 127
Trang 17DANH MỤC HÌNH VẼ
Hình 1.1 Giới thiệu về cơ sở dữ liệu PostgreSQL 23
Hình 4.1 Màn hình đăng nhập 115
Hình 4.2 Màn hình đăng ký 116
Hình 4.3 Màn hình đăng ký package 117
Hình 4.4 Màn hình tạo workspace 117
Hình 4.5 Màn hình danh sách workspace 118
Hình 4.6 Màn hình danh sách workspace products 118
Hình 4.7 Popup tạo product 119
Hình 4.8 Màn hình thêm vision khi chưa có vision được tạo 119
Hình 4.9 Màn hình quản lý vision 120
Hình 4.10 Màn hình hiển thị thông tin chi tiết component của vision 121
Hình 4.11 Màn hình thêm model khi chưa có model nào được tạo 121
Hình 4.12 Popup chọn template model 122
Hình 4.13 Màn hình hiển thị layout component của model 122
Hình 4.14 Màn hình thông tin chi tiết của model 123
Hình 4.15 Màn hình thông tin chi tiết component model 123
Hình 4.16 Màn hình thêm positioning khi chưa có positioning nào được tạo 124
Hình 4.17 Màn hình hiển thị layout positioning 124
Hình 4.18 Màn hình cập nhật component positioning 125
Hình 4.19 Màn hình cập nhật positioning 125
Hình 4.20 Màn hình thêm personas khi chưa có personas nào được thêm 126
Hình 4.21 Màn hình thông tin chi tiết personas 126
Hình 4.22 Màn hình cập nhật personas 127
Hình 4.23 Màn hình thêm competitor khi chưa có competitor nào được tạo 127
Hình 4.24 Màn hình thông tin chio tiết competitor 128
Hình 4.25 Màn hình cập nhật competitor 128
Hình 4.26 Màn hình thêm goal khi chưa có goal nào được tạo 129
Hình 4.27 Màn hình thông tin chi tiết goal 129
Hình 4.28 Màn hình cập nhật goal 130
Hình 4.29 Màn hình cập nhật release trong goal 130
Hình 4.30 Màn hình cập nhật feature trong goal 131
Hình 4.31 Màn hình thêm initiative khi chưa có initiative được tạo 131
Hình 4.32 Màn hình thông tin chi tiết, cập nhật initiative 132
Hình 4.33 Màn hình cập nhật goal trong initiative 132
Hình 4.34 Màn hình cập nhật release trong initiative 133
Hình 4.35 Màn hình cập nhật feature trong initiative 133
Hình 4.36 Màn hình hiển thị danh sách initiative workflow 134
Hình 4.37 Màn hình cập nhật initiative trong workflow 134
Hình 4.38 Màn hình tổng quan ideas 135
Hình 4.39 Popup thêm idea 135
Trang 18Hình 4.41 Màn hình danh sách ideas 136
Hình 4.42 Màn hình gantt releases 137
Hình 4.43 Popup thêm release 137
Hình 4.44 Màn hình cập nhật feature trong gantt release 138
Hình 4.45Màn hình cập nhật release trong gantt release 138
Hình 4.46 Màn hình thêm release khi chưa có release nào được tạo 139
Hình 4.47 Màn hình thêm feature 139
Hình 4.48 Màn hình danh sách các feature 140
Hình 4.49 Màn hình cập nhật thông tin future 140
Hình 4.50 Form thêm requirement 141
Hình 4.51 Màn hình danh sách epics 141
Hình 4.52 Màn hình cập nhật epic 142
Hình 4.53 Màn hình thêm user story map khi chưa có user story map nào được tạo 142
Hình 4.54 Màn hình layout user story map 143
Hình 4.55 Màn hình cập nhật epic trong user story map 143
Hình 4.56 Màn hình cập nhật feature trong user story map 144
Hình 4.57 Màn hình cập nhật release trong user story map 144
Hình 4.58 Màn hình roadmap strategy 145
Hình 4.59 Màn hình cập nhật initiative trong roadmap 145
Hình 4.60 Màn hình cập nhật release trong roadmap 146
Hình 4.61 Màn hình danh sách release, feature 146
Hình 4.62 Màn hình cập nhật release 147
Hình 4.63 Màn hình cập nhật feature 147
Hình 4.64 Màn hình thông tin chung product 148
Hình 4.65 Màn hình cập nhật thông tin cá nhân 149
Hình 4.66 Màn hình danh sách users 149
Hình 4.67 Màn hình phân quyền, edit, xóa user 150
Hình 4.68 Màn hình danh sách package 150
Hình 4.69 Popup thêm, cập nhật package 151
Hình 4.70 Màn hình report income, sold out của một package 151
Hình 4.71 Form thêm todo 152
Hình 4.72 Form cập nhật todo 152
Hình 4.73 Thêm comment 152
Hình 4.74 Popup file preview 153
Hình 4.75 Popup chọn file 153
Trang 19DANH MỤC SƠ ĐỒ
Sơ đồ 3.1 Sơ đồ kiến trúc hệ thống 30
Sơ đồ 3.2 Sơ đồ phân rã chức năng 31
Sơ đồ 3.3 Sơ đồ use case 32
Sơ đồ 3.4 Mô hình dữ liệu PostgreSQL 90
Trang 20DANH MỤC BẢNG
Bảng 3.1 Danh sách các Actor 33
Bảng 3.2 Danh sách các Use Case 34
Bảng 3.3 Đặc tả chức năng đăng nhập 39
Bảng 3.4 Đặc tả chức năng đăng ký 40
Bảng 3.5 Đặc tả chức năng đăng xuất 41
Bảng 3.6 Đặc tả chức năng tạo workspace 42
Bảng 3.7 Đặc tả chức năng upgrade workspace 43
Bảng 3.8 Đặc tả chức năng tạo product 44
Bảng 3.9 Đặc tả chức năng xóa product 45
Bảng 3.10 Đặc tả chức năng cập nhật product 46
Bảng 3.11 Đặc tả chức năng thêm user đến workspace 46
Bảng 3.12 Đặc tả chức năng cập nhật permission user 48
Bảng 3.13 Đặc tả chức năng xóa user ra khỏi workspace 49
Bảng 3.14 Đặc tả chức năng thêm vision 50
Bảng 3.15 Đặc tả chức năng cập nhật thông tin vision 50
Bảng 3.16 Đặc tả chức năng thêm component vision 51
Bảng 3.17 Đặc tả chức năng cập nhật vision component 52
Bảng 3.18 Đặc tả chức năng xóa vision component 52
Bảng 3.19 Đặc tả chức năng thêm model 53
Bảng 3.20 Đặc tả chức năng cập nhật model 54
Bảng 3.21 Đặc tả chức năng xóa model 55
Bảng 3.22 Đặc tả chức năng thêm component cho model 55
Bảng 3.23 Đặc tả chức năng thêm component cho model 56
Bảng 3.24 Đặc tả chức năng Cập nhật layout cho model 56
Bảng 3.25 Đặc tả chức năng xóa component cho model 58
Bảng 3.26 Đặc tả chức năng thêm positioning 58
Bảng 3.27 Đặc tả chức năng cập nhật positioning 59
Bảng 3.28 Đặc tả chức năng cập nhật layout component cho positioning 60
Bảng 3.29 Đặc tả chức năng thêm component cho positioning 60
Bảng 3.30 Đặc tả chức năng cập nhật component cho positioning 61
Bảng 3.31 Đặc tả chức năng xóa component cho positioning 62
Bảng 3.32 Đặc tả chức năng xóa positioning 62
Bảng 3.33 Đặc tả chức năng thêm personas 63
Bảng 3.34 Đặc tả chức năng cập nhật personas 64
Bảng 3.35 Đặc tả chức năng xóa personas 64
Bảng 3.36 Đặc tả chức năng thêm competitor 65
Bảng 3.37 Đặc tả chức năng cập nhật competitor 66
Bảng 3.38 Đặc tả chức năng xóa competitor 67
Bảng 3.39 Đặc tả chức năng thêm goal 67
Bảng 3.40 Đặc tả chức năng cập nhật goal 68
Trang 21Bảng 3.42 Đặc tả chức năng thêm initiative 69
Bảng 3.43 Đặc tả chức năng cập nhật initiative 70
Bảng 3.44 Đặc tả chức năng xóa initiative 71
Bảng 3.45 Đặc tả chức thêm idea 71
Bảng 3.46 Đặc tả chức năng cập nhật idea 72
Bảng 3.47 Đặc tả chức năng xóa idea 73
Bảng 3.48 Đặc tả chức thêm feature 74
Bảng 3.49 Đặc tả chức năng cập nhật feature 74
Bảng 3.50 Đặc tả chức năng xóa feature 75
Bảng 3.51 Đặc tả chức thêm epic 76
Bảng 3.52 Đặc tả chức năng cập nhật epic 77
Bảng 3.53 Đặc tả chức năng xóa epic 77
Bảng 3.54 Đặc tả chức thêm release 78
Bảng 3.55 Đặc tả chức năng cập nhật release 79
Bảng 3.56 Đặc tả chức năng xóa release 79
Bảng 3.57 Đặc tả chức thêm user story map 80
Bảng 3.58 Đặc tả chức năng cập nhật user story map 81
Bảng 3.59 Đặc tả chức năng cập nhật layout của một user story map 82
Bảng 3.60 Đặc tả chức năng xóa user story map 82
Bảng 3.61 Đặc tả chức năng xem roadmap strategy 83
Bảng 3.62 Đặc tả chức năng thêm todo 84
Bảng 3.63 Đặc tả chức năng cập nhật todo 84
Bảng 3.64 Đặc tả chức năng xóa todo 85
Bảng 3.65 Đặc tả chức năng thêm comment 86
Bảng 3.66 Đặc tả chức năng xóa comment 87
Bảng 3.67 Đặc tả chức năng thêm package 87
Bảng 3.68 Đặc tả chức năng cập nhật package 88
Bảng 3.69 Đặc tả chức năng xem thống kê packages 89
Bảng 3.70 Bảng package 91
Bảng 3.71 Bảng package_code 92
Bảng 3.72 Bảng permission 92
Bảng 3.73 Bảng workspace 93
Bảng 3.74 Bảng workspace_config 94
Bảng 3.75 Bảng product 94
Bảng 3.76 Bảng user_profile 95
Bảng 3.77 Bảng user_config 96
Bảng 3.78 Bảng vision 97
Bảng 3.79 Bảng vision_component 97
Bảng 3.80 Bảng model 98
Bảng 3.81 Bảng thông tin thuê phòng 98
Bảng 3.82 Bảng position 99
Bảng 3.83 Bảng position_component 100
Trang 22Bảng 3.85 Bảng competitor 101 Bảng 3.86 Bảng goal 102 Bảng 3.87 Bảng initiative 103 Bảng 3.88 Bảng release 103 Bảng 3.89 Bảng release_phase 105 Bảng 3.90 Bảng release_layout 105 Bảng 3.91 Bảng feature 106 Bảng 3.92 Bảng requirement 107 Bảng 3.93 Bảng epic 108 Bảng 3.94 Bảng user_story 109 Bảng 3.95 Bảng idea 109 Bảng 3.96 Bảng history 110 Bảng 3.97 Bảng watcher 111 Bảng 3.98 Bảng comment 111 Bảng 3.99 Bảng todo 112 Bảng 3.100 Bảng todo_assign 113
Trang 24TÓM TẮT KHÓA LUẬN
Khóa luận với đề tài Xây dựng công cụ quản lý sản phẩm trong công nghệ thông tin dùng Java Spring framework và ReactJS được xây dựng trên hệ thống website, giúp người quản
lý dễ dàng hơn và tốn ít chi phí hơn trong công việc
Công cụ quản lý sản phẩm trong công nghệ thông tin áp dụng cho các công ty loại vừa và nhỏ Khi mà công việc quản lý ngày trở nên càng nhiều, để hỗ trợ và làm đơn giản quá trình quản lý product Hệ thống được thiết kế nhẹ và giao diện thân thiện, giúp người dùng dễ sử dụng
Về mặt nghiệp vụ, tool đã xây dựng mô hình quản lý product, giúp người quản lý có thể đưa
ra tầm nhìn và chiến lực để phát triển sản product
Khóa luận sử dụng và kết hợp nhiều loại công nghệ mới, giúp kết nối hài hòa và đem lại lợi ích và hiệu quả tốt nhất cho ứng dụng Như Servlet, Spring framework, Postgresql, Redis, ReactJS, Redux-observable, Docker
Sau đây, nhóm xin vào nội dung mở đầu và quá trình tìm hiểu cũng như xây dựng tool quản
lý product
Trang 25MỞ ĐẦU
Hiện nay, với sự phát triển mạnh mẽ của công nghệ thông tin, nhiều công ty công nghệ ra đời, đồng nghĩa với việc những sản phẩm công nghệ ngày càng nhiều Trong thế giới sản phẩm kỹ thuật số được nhiều người tiêu dùng lựa chọn, chi phí chuyển đổi thấp, chia sẻ xã hội, xếp hạng, đánh giá và đề xuất Vì vậy mà việc tạo ra các sản phẩm tuyệt vời trở nên quan trọng hơn bao giờ hết để thu hút sự chú ý của người dùng Điều đó đặt ra bài toán cần một công cụ hỗ trợ quản lý quá trình phát triển sản phẩm của công ty Tuy nhiên, trên thị trường hiện nay, các phần mềm quản lý phát triển sản phẩm công nghệ thông tin vẫn còn đắt
đỏ và thiếu đi một số tính năng tiện dụng Do đó, việc phát triển một công cụ mới, nhanh hơn, giao diện thân thiện hơn và dễ dàng mở rộng các tính năng hơn là một ưu tiên không thể thiếu trong bối cảnh hiện nay
Đối với mục tiêu của đề tài, về mặt sản phẩm, đề tài nhắm đến việc xây dựng một hệ thống quản lý môi trường phát triển sản phẩm, nhắm đến đối tượng là các startup nhỏ, có vốn đầu
tư mức thấp Ứng dụng sẽ trở thành trung tâm trong việc tạo ra môi trường phát triển sản phẩm của công ty một cách hiệu quả từ đó tạo ra những sản phẩm có chất lượng Ngoài ra, công cụ cũng là nơi để các thành viên trong team đóng góp ý tưởng vào việc phát triển sản phẩm Về mặt kỹ thuật mục tiêu của đề tài sẽ sử dụng các công nghệ mới , đã được thế giới công nhận và sử dụng nhiều nhưng lại còn khá mới mẻ với các lập trình viên và các công ty trong nước từ đó chứng minh được tính khả thi của công nghệ này Cũng như qua đó cố gắng giải quyết được bài toán tối ưu hóa một công nghệ mới như trên
Đối với phạm vi nghiên cứu, về mặt nghiệp vụ, đối tượng nghiên cứu và tìm hiểu là các nghiệp vụ phát triển sản phẩm, đảm bảo ứng dụng có thể hoạt động đúng quy trình, hạn chế tối đa các ngoại lệ không thể xử lý trong quá trình vận hành Phạm vi nghiên cứu, các nghiệp
vụ của hệ thống phát triển sản phẩm công nghệ thông tin sẽ chỉ bao gồm việc quản lý các product workspace và cung cấp môi trường phát triển sản phẩm công nghệ thông tin cho khách hàng Về mặt kỹ thuật đề tài sẽ tập trung nghiên cứu về việc xây dựng một ứng dụng web với Spring Framework cùng PostgreSQL, Microservice, Redis, Docker, ReactJS và Redux-observable
Trang 26Chương 1: TỔNG QUAN VỀ ĐỀ TÀI 1.1 Nhu Cầu thực tế của đề tài
- Trên thực tế, khi ngày càng có nhiều công ty chú trọng đến sự đổi mới, vai trò của Product Management đã trở thành một yếu tố then chốt trong sự thành công của các tổ chức đó
- Dù là sản phẩm hay dịch vụ nào đi nữa, nếu chúng ta lập trình các tính năng hoặc chức năng sai thì cũng dẫn đến thất bại Theo nghiên cứu từ CB Insights, 42% số lượng startups không hiểu nhu cầu thị trường
- Hầu hết các tổ chức chỉ đầu tư thời gian và tiền bạc mà không theo dõi tác động của quá trình lập trình sẽ không thể thấy được bức tranh lớn Sự cải tiến đòi hỏi tinh thần tập trung và khả năng bảo tồn các nguồn lực
- Nhằm khuyến khích việc đưa ra sản phẩm nhanh, chu trình cải thiện ngắn và liên tục, để
có thể tìm hiểu và bắt nhịp thị trường nhanh chóng thì cần có một công cụ hỗ trợ cho các Product manager thực hiện tốt công việc của mình
Trang 277 Quản lý product workspace
8 Hiển thị nhiệm vụ của user
9 Quản lý packages
1.3 Phương pháp nghiên cứu
Đồ án sử dụng các phương pháp nghiên cứu hướng đến thực tiễn để phát triển và hoàn thiện ứng dụng:
- Phân tích, khảo sát hiện trạng về nhu cầu thực tế của người quản lý sản phẩm công nghệ thông tin thông qua tài liệu quản lý sản phẩm và ứng dụng quản lý hiện có trên thị trường hiện nay
- Thu thập thông tin, tìm hiểu và nghiên cứu về các kỹ thuật, công nghệ cần thiết để hỗ trợ cho việc xây dựng ứng dụng đáp ứng yêu cầu được đưa ra
- Xây dựng ứng dụng dựa trên những kỹ thuật và công nghệ trên, tiến hành kiểm thử dự
án song song với quá trình xây dựng ứng dụng
- Đánh giá và so sánh kết quả đạt được với mục tiêu ban đầu đưa ra Điều chỉnh và khắc phục các sự cố
- Hoàn thiện ứng dụng, tiến hành khảo sát, thu thập ý kiến, đánh giá của người dùng 1.4 Cấu trúc
Báo cáo này được trình bày với cấu khúc khóa luận như sau:
- Chương 1: Giới thiệu tổng quan về đề tài, phạm vi nghiên cứu và phương pháp nghiên cứu
- Chương 2: Giới thiệu về các công nghệ, kỹ thuật ứng dụng trong đề tài xây dựng và phát triển công cụ quản lý sản phẩm trong công nghệ thông tin
- Chương 3: Đưa ra các đặc tả yêu cầu và phân tích hệ thống, thiết kế các kiến trúc và mô hình cần thiết cho toàn bộ hệ thống
- Chương 4: Trình bày tổng quan về công cụ quản lý sản phẩm công nghệ thông tin, giới thiệu giao diện ứng dụng và cách cài đặt sử dụng ứng dụng
- Chương 5: Tổng kết về khóa luận, nêu những việc đã đạt được qua quá trình xây dựng
và phát triển đề tài Bên cạnh đó nêu ra những thiếu sót của nhóm Từ đó đưa ra các giải quyết và hướng phát triển tiếp theo
Trang 28Chương 2: CƠ SỞ LÝ THUYẾT
2.1 Servlet
2.1.1 Giới thiệu về Servlet
- Công nghệ Servlet được sử dụng để tạo ra ứng dụng web (nằm ở phía máy chủ và tạo
- được sử dụng phổ biến như một ngôn ngữ lập trình phía máy chủ
2.1.2 Tại sao nên sử dụng servlet
- Servlet là một công nghệ java web với ưu điểm lớn là khả năng scale mạnh mẽ, xử lý tốt một lượng lớn request từ client, rất phù hợp với dự án
- Các servlet Java đã được tạo ra và biên dịch giống như các lớp Java khác Sau khi cài đặt gói servlet và thêm chúng vào Classpath của máy tính, bạn có thể biên dịch các servlet bằng trình dịch Java của JDK hoặc bất kỳ trình biên dịch hiện tại nào khác
- Được ứng dụng để tạo server trung gian giữa database và UI, giúp xử lý các api được gửi từ UI và thao tác đến cơ sở dữ liệu phù hợp
2.2 GRPC
2.2.1 Giới thiệu về GRPC
- GRPC là một framework RPC Open source đa ngôn ngữ được Google phát triển dựa trên Protobuf và giao thức HTTP/2 Sử dụng Servlet, bạn có thể thu thập thông tin đầu
Trang 29vào từ người dùng thông qua các trang web, hiển thị các bản ghi từ một cơ sở dữ liệu hoặc một nguồn khác.
- Trong gRPC một ứng dụng client có thể gọi trực tiếp các method trên một ứng dụng server khác máy chủ giống như là cuộc gọi ở local Điều này giúp việc phát triển các ứng dụng, dịch vụ phân tán dễ dàng hơn gRPC dựa trên ý tưởng xác định các dịch vụ, chỉ định các method có thể gọi từ xa với các tham số và kiểu dữ liệu trả về của chúng
2.3.1 Giới thiệu về redis
- Redis là một công cụ hỗ trợ server giải quyết bài toán caching, không những vậy Redis
có thể được sử dụng như một database được lưu trữ trong ram để tăng tốc độ xử lý, nhưng đó cũng là một nhược điểm của Redis, khi mà cúp điện đồng nghĩa với mất dữ liệu, mặc dù redis có hỗ trợ backup và restore data từ ổ cứng theo chu kì và điều đó là không hoàn hảo
- Redis hỗ trợ lưu data dưới dạng Key Value, value đó có thể là một chuỗi, số, danh sách, danh sách được sắp xếp hay thậm chí là một tài liệu dạng từ điển (hash)
2.3.2 Tại sao nên sử dụng redis
- Redis hỗ trợ thêm mới, cập nhật, xóa dữ liệu một cách nhanh chóng
- Lưu trữ dữ liệu dạng KEY-VALUE
Trang 30- Dữ liệu được lưu trữ trên RAM giúp việc truy xuất dữ liệu một cách nhanh chóng Ngoài ra bạn có thể cấu hình để Redis có thể lưu trữ dữ liệu trên ổ cứng
- Bạn có thể cấu hình cho key tự động xóa trong khoảng thời gian nhất định(expire)
- Hỗ trợ nhiều loại kiểu dữ liệu khác nhau
- Hỗ trợ Queue(hàng đợi) thông qua cơ chế PUB/SUB, chúng ta có thể dùng Redis để làm hệ thống queue cho website xử lý tuần tự từng request
- Bạn có thể dùng redis để caching mọi thứ bạn muốn, từ kết quả của một câu query trong database, một profile của user, profile cửa hàng Và khi cache phải chắc chắn những gì được cache là mới nhất vì nếu data cũ thì sẽ rất ảnh hưởng đến client
- Redis hỗ trợ Transaction, hỗ trợ Pub/Sub vì vậy nó cũng được sử dụng làm hệ thống Message Broker, kinh điển là RabbitMQ sử dụng Redis là core của hệ thống
Trong hệ thống, redis được sử dụng để lưu trữ những dữ liệu tạm, được sử dụng nhiều lần, giúp giảm số lần truy xuất xuống cơ sở dữ liệu, tăng hiệu suất ứng dụng
2.4 PostgreSQL
2.4.1 Giới thiệu về PostgreSQL
Hình 0.1 Giới thiệu về cơ sở dữ liệu PostgreSQL
- PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ miễn phí và nguồn mở (RDBMS) tập trung vào khả năng mở rộng và tuân thủ các tiêu chuẩn kỹ thuật Nó được thiết kế để xử lý một loạt các khối lượng công việc lớn, từ các máy tính cá nhân đến kho
Trang 31dữ liệu hoặc dịch vụ Web có nhiều người dùng đồng thời.
- PostgreSQL bắt đầu từ năm 1986 như một phần của dự án POSTGRES tại Đại học California tại Berkeley Đây là cơ sở dữ liệu mặc định cho macOS Server, và cũng có các bản phân phối cho Linux, FreeBSD, OpenBSD và Windows
2.4.2 Tại sao nên sử dụng PostgreSQL
- Đầy đủ tính năng và dễ dàng mở rộng:
• PostgreSQL sở hữu các bộ tính năng mạnh mẽ bao gồm kiểm soát truy cập đồng thời nhiều phiên bản, phục hồi điểm thời gian, điều khiển truy cập hạt, không gian bảng, sao chép không đồng bộ, các giao dịch lồng nhau, sao lưu trực tuyến, một kế hoạch truy vấn , tối ưu hóa Nó hỗ trợ bộ ký tự quốc tế, mã hóa nhiều byte, Unicode, và nó
dễ dàng nhận dạng địa phương trong việc sắp xếp tìm kiếm PostgreSQL có khả năng
mở rộng cao cả về số lượng dữ liệu mà nó có thể quản lý và số lượng người dùng đồng thời có thể đáp ứng
- Độ tin cậy và tuân thủ các tiêu chuẩn
• PostgreSQL là một cơ sở dữ liệu với khả năng chịu lỗi cao Cơ sở đóng góp mã nguồn
mở của nó cho phép nó xây dựng mạng hỗ trợ cộng đồng PostgreSQL tuân thủ ACID
và hỗ trợ đầy đủ các khóa ngoại, tham gia, chế độ xem, trình kích hoạt và thủ tục lưu trữ bằng nhiều ngôn ngữ khác nhau Nó bao gồm hầu hết các kiểu dữ liệu SQL, bao gồm INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL
và TIMESTAMP Nó cũng hỗ trợ lưu trữ các đối tượng nhị phân lớn, bao gồm hình ảnh, âm thanh hoặc video
2.4.3 Áp dụng PostgreSQL
- Với khả năng mở rộng tốt, PostgreSQL được sử dụng làm cơ dữ liệu chính của hệ thống, giúp lưu trữ lượng dữ liệu khổng lồ của hệ thống Giải quyết vấn đề scale database, đáp ứng yêu cầu ứng dụng
Trang 322.5 ReactJS
2.5.1 Giới thiệu về reactJS
- React là một thư viện UI phát triển tại Facebook để hỗ trợ việc xây dựng những thành phần (components) UI có tính tương tác cao, có trạng thái và có thể sử dụng lại được React được sử dụng tại Facebook trong production, và www.instagram.com được viết hoàn toàn trên React
- Các thành phần cơ bản của ReactJS:
thông tin cần thiết để tạo ra một DOM, nó sẽ giúp tối ưu hóa việc re-render DOM tree thật bằng cách tính toán sự thay đổi giữa object và tree thật khi dữ liệu thay đổi
trong Javascript Với các ưu điểm:
các đoạn mã này được thực hiện nhanh hơn sơ với viết trực tiếp bằng Javascript
giống như Java, C++ (statically-typed) giúp phát hiện lỗi ngay trong quá trình biên dịch, bên cạnh đó nó còn có tính năng gỡ lỗi khi biên dịch rất tốt
Javascript dễ dàng sử dụng
• Components: Khác với các framework khác, React không sử dụng template mà được xây dựng xung quanh các component Trong React, để xây dựng trang web chúng ta sử dụng những component, có thể tái sử dụng một component ở nhiều nơi với các trạng thái hoặc thuộc tính khác nhau và một component có thể chứa thành phần khác Mỗi component có một trạng thái riêng, có thể thay đổi và React
sẽ thực hiện cập nhật component dựa trên những thay đổi của trạng thái
props à trả thuộc tính mô tả những gì component con sẽ render Đặc tính của Prop
là bất biến
Trang 33• State: Thể hiện trạng thái của ứng dụng Khi state thay đổi thì component đồng thời render lại để cập nhật UI
2.5.2 Tại sao nên sử dụng reactJS
thực sự tồn tại trên đó Điều này sẽ giúp cải thiện hiệu suất rất nhiều Reactjs cũng tính toán những thay đổi nào cần cập nhật lên DOM và chỉ thực hiện chúng Điều này giúp Reactjs tránh những thao tác cần trên DOM mà nhiều chi phí Chúng ta có thể viết một
ví dụ đơn giản về ReactJS như sau
- Reactjs giúp việc viết các đoạn code JS dễ dàng hơn: Nó dùng cú pháp đặc biệt là JSX (Javascript mở rộng) cho phép ta trộn giữa code HTML và Javascript Ta có thể thêm vào các đoạn HTML vào trong hàm render mà không cần phải nối chuỗi Đây là đặc tính thú vị của Reactjs Nó sẽ chuyển đổi các đoạn HTML thành các hàm khởi tạo đối tượng HTML bằng bộ biến đổi JSX
- Nó có nhiều công cụ phát triển: Khi bạn bắt đầu Reactjs, đừng quên cài đặt ứng dụng
mở rộng của Chrome dành cho Reactjs Nó giúp bạn debug code dễ dàng hơn Sau khi bạn cài đặt ứng dụng này, bạn sẽ có cái nhìn trực tiếp vào virtual DOM như thể bạn đang xem cây DOM thông thường
- Render tầng server: Một trong những vấn đề với các ứng dụng đơn trang là tối ưu SEO
và thời gian tải trang Nếu tất cả việc xây dựng và hiển thị trang đều thực hiện ở client, thì người dùng sẽ phải chờ cho trang được khởi tạo và hiển thị lên Điều này thực tế là chậm Hoặc nếu giả sử người dùng vô hiệu hóa Javascript thì sao? Reactjs là một thư viện component, nó có thể vừa render ở ngoài trình duyệt sử dụng DOM và cũng có thể render bằng các chuỗi HTML mà server trả về
- Làm việc với vấn đề test giao diện: Nó cực kì dễ để viết các test case giao diện vì virtual DOM được cài đặt hoàn toàn bằng JS
- Hiệu năng cao đối với các ứng dụng có dữ liệu thay đổi liên tục, dễ dàng cho bảo trì và sửa lỗi
2.5.3 Áp dụng reactJS
- ReactJS là một thư viện cực được đánh giá cực kì hiệu quả khi xây dựng các ứng dụng đòi hỏi về tối ưu tốc độ cũng như hiệu quả truy xuất Vì là một thư viện nên React có
Trang 34thể tích hợp các công cụ hỗ trợ và custom khi sử dụng một cách linh hoạt
trong những tính năng không chỉ làm cho ReactJS dễ dàng mà còn thú vị hơn Developer giờ đây có thể tạo nên một tính năng mới và có thể xem nó xuất hiện ngay trong thời gian thực, giúp Developer có thể được đưa trực tiếp các đoạn HTML vào JavaScript
- Cho phép Developer phá vỡ những cấu tạo UI phức tạp thành những component độc lập,
ý tưởng này làm cho ReactJS trở nên độc đáo Thay vì phải lo lắng về tổng thể ứng dụng web, giờ đây Developer dễ dàng chia nhỏ các cấu trúc UI/UX phức tạp thành từng component đơn giản hơn Điều này làm cho mọi thứ trở nên trực quan và dễ hình dung
so với trước đây
- Ứng dụng HTML và CSS: Tất cả mọi thứ trong ReactJS đều là JavaScript Mỗi cấu trúc HTML trong ReactJS sẽ được thể hiện qua JSX, ngoài ra xu hướng mới muốn đưa cả CSS vào trong JS
2.6 Redux-observable
2.6.1 Giới thiệu về redux-observable
- Redux-Observable cho phép chúng ta đưa các khái niệm của RxJS vào trong Redux Nó
sẽ tạo ra các Observable lắng nghe action, xào nấu trước khi dispatch một action khác
đến reducer Nó được gọi một cái tên là Epic
- Redux-observable là code cực kỳ xúc tích và nó là Declarative, hơn thế nữa nếu dùng Observable thì việc transfer giữa các nền tảng (front-end) là rất tốt
- Redux- Observable có thể sử dụng các toán tử của rxjs thao tác trên tập dữ liệu ,cho phép hủy action một cách dễ dàng , xử lý lỗi dễ dàng và triệt để kèm theo đó là khả năng thao tác dễ dàng với các tác vụ bất đồng bộ
Trang 352.7 Docker
2.7.1 Giới thiệu về docker
- Docker là một dự án mã nguồn mở giúp tự động triển khai các ứng dụng Linux và Windows vào trong các container ảo hóa
- Docker cung cấp một lớp trừu tượng và tự động ảo hóa dựa trên Linux Docker sử dụng những tài nguyên cô lập của Linux như cgroups, kernel, quản lý tệp để cho phép các container chạy độc lập bên trong một thực thể Linux
- Docker sẽ hạn chế được sự sai khác nhất định giữa thành viên cùng phát triển một dự án trong môi trường
- Ngoài ra, docker còn giúp đóng gói sản phẩm đã được phát triển, giúp cho quá trình triển khai sản phẩm trễ nên dễ dàng hơn
Trang 36Chương 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 3.1 Mô tả lại bài toán
Bài toán đặt ra ở đây, là xây dựng một công cụ quản lý và phát triển sản phẩm công nghệ thông tin dành cho các công ty loại vừa và nhỏ, giúp Product Manager quản lý sản phẩm một cách dễ dàng hơn, xác định được tầm nhìn của sản phẩm, tạo ra một lộ trình phát triển sản phẩm để tạo ra những sản phẩm có chất lượng mang tính cạnh tranh cao Bao gồm những tính năng chính như sau:
- Quản lý chiến lược phát triển product
- Quản lý user, phần quyền user
- Quản lý product workspace
- Tạo user story map
Trang 373.2 Kiến trúc hệ thống
Sơ đồ 0.1 Sơ đồ kiến trúc hệ thống
Trang 383.3 Mô hình phân rã chức năng
- Mô hình phân rã chức năng cho phép xác định phạm vi các chức năng được xây dựng và phát triển trong ứng dụng, cho phép người sử dụng có một cái nhìn tổng thể về các chức năng có trong ứng dụng thông qua việc biểu diễn phân rã có thứ bậc đơn giản các chức năng của ứng dụng
3
Sơ đồ 0.2 Sơ đồ phân rã chức năng
Trang 393.4 Mô hình usecase
3.4.1 Sơ đồ usecase
Sơ đồ 0.3 Sơ đồ use case
Trang 403.4.2 Danh sách các actor
Bảng 0.1 Danh sách các Actor
1 Owner - Là người có quyền cao nhất nắm quyền sở hữu
workspace, được phép truy cập vào tất cả các product trong workspace
- Có quyền thêm, xóa sửa thông tin product trong workspace
- Có quyền thêm, xóa user tham gia vào workspace
- Có quyền chỉnh sửa thông tin product, hoặc xóa product
- Có tất cả các quyền của Contributor, Reviewer, Viewer
2 Contributor - Là người được thêm vào product bởi owner
- Được phép truy cập vào product tham gia
- Được phép tham gia quản lý những chiến lược phát triển product(vision, feature, release, user story map, roadmap…)
- Tạo, chỉnh sửa to do
- Có tất cả quyền của Reviewer, Viewer
3 Reviewer - Là người được thêm vào product bởi Owner
hoặc Contributor
- Được phép truy cập vào product tham gia
- Chỉ được phép tạo todos và comment trên product
- Có tất cả quyền của Viewer
4 Viewer - Là người được thêm vào product bởi Owner