1. Trang chủ
  2. » Luận Văn - Báo Cáo

KHÓA LUẬN TỐT NGHIỆP Tìm hiểu framework ruby on rails và xây dựng hệ thống Đào tạo trực tuyến

83 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm hiểu framework Ruby on Rails và xây dựng hệ thống đào tạo trực tuyến
Tác giả Trần Tuấn Anh
Người hướng dẫn PGS.TS. Nguyễn Việt Anh, ThS. Nguyễn Đức Thiện
Trường học Trường Đại học Công nghệ - Đại học Quốc gia Hà Nội
Chuyên ngành Công nghệ thông tin
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2019
Thành phố Hà Nội
Định dạng
Số trang 83
Dung lượng 1,84 MB

Nội dung

Hệ thống có chức năng chính là giáo viên có thể tạo các khóa học và nội dung học tập, quản lý quá trình đào tạo; học viên có thể tham gia vào khóa học để thực hiện học qua các bài giảng,

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Trần Tuấn Anh

TÌM HIỂU FRAMEWORK RUBY ON RAILS VÀ XÂY

DỰNG HỆ THỐNG ĐÀO TẠO TRỰC TUYẾN

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành: Công nghệ thông tin

HÀ NỘI – 2019

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Trần Tuấn Anh

TÌM HIỂU FRAMEWORK RUBY ON RAILS VÀ XÂY

DỰNG HỆ THỐNG ĐÀO TẠO TRỰC TUYẾN

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành: Công nghệ thông tin

Cán bộ hướng dẫn: PGS.TS Nguyễn Việt Anh

Cán bộ đồng hướng dẫn: ThS Nguyễn Đức Thiện

HÀ NỘI – 2019

Trang 3

LỜI CẢM ƠN

Đầu tiên, em xin gửi lời cảm ơn chân thành và lòng biết ơn sâu sắc nhất tới PGS.TS Nguyễn Việt Anh và ThS Nguyễn Đức Thiện - giảng viên Khoa Công Nghệ Thông Tin, Trường Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội Hai thầy đã trực tiếp chỉ bảo và hướng dẫn em trong quá trình thực hiện khóa luận tốt nghiệp này Trong thời gian vừa qua, hai thầy đã định hướng, giúp đỡ kịp thời, cho em những nhận xét quí báu và động viên tinh thần để em có thể hoàn thành khóa luận tốt nghiệp này

Em cũng xin gửi lời cảm ơn tới các thầy, cô là giảng viên tại trường Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội đã nhiệt tình giảng dạy và chia sẻ những kiến thức về chuyên ngành một cách đầy đủ và sâu sắc cũng như các kĩ năng phân tích, giải quyết vấn đề và kĩ năng lập trình Qua đó, em có thể vận dụng những kiến thức và kĩ năng đã được tiếp nhận để hoàn thành bài khóa luận này

Cuối cùng, em xin cảm ơn gia đình, bạn bè và các thành viên trong tập thể lớp K60CD đã giúp đỡ và động viên tinh thần để em có thể hoàn thành khóa luận này

Trang 4

TÓM TẮT

Tóm tắt: Hiện nay, mạng Internet đã phát triển nhanh chóng, đang ngày càng phổ biến

và được ứng dụng vào nhiều lĩnh vực của xã hội Đào tạo trực tuyến là hình thức cung cấp cho người dạy và người học một môi trường tương tác trực tuyến trên các hệ thống web, với các ưu điểm có thể học mọi lúc, mọi nơi và tiết kiệm các chi phí khác nó đã trở nên rất phổ biến Hoạt động giảng dạy tại các trường đại học đang có xu hướng kết hợp cả phương pháp giảng dạy trên giảng đường với dạy và học trực tuyến qua các website của các trường Từ xu hướng đó, em xây dựng hệ thống đào tạo trực tuyến cho đối tượng là giáo viên và học viên tại các trường đại học dựa trên framework Ruby on Rails Hệ thống có chức năng chính là giáo viên có thể tạo các khóa học và nội dung học tập, quản lý quá trình đào tạo; học viên có thể tham gia vào khóa học để thực hiện học qua các bài giảng, làm các bài kiểm tra đánh giá đơn giản, tương tác với giáo viên và các học viên khác

Rails là một khung phát triển ứng dụng web mã nguồn mở, được viết bằng ngôn ngữ Ruby, kiến trúc theo mô hình MVC Ruby là một ngôn ngữ lập trình hướng đối tượng được thể hiện rõ nét, một ngôn ngữ mềm dẻo và linh hoạt, hỗ trợ đa kế thừa Rails có kiến trúc đơn giản và dễ hiểu, với nhiều thành phần liên kết với nhau, hỗ trợ nhiều thư viện qua hệ thống các gem Rails có đặc điểm cung cấp khả năng viết mã nguồn không lặp lại, ngầm định thay cho cấu hình, sinh mã nguồn tự động Với các đặc điểm đó, Rails hỗ trợ người lập trình có thể phát triển các ứng dụng web nhanh chóng, dễ dàng mở rộng, bảo trì hệ thống

Trong khóa luận này, em mô tả cách phân tích và thiết kế một hệ thống đào tạo trực tuyến theo phương pháp hướng đối tượng, trình bày các đặc điểm chính của ngôn ngữ Ruby Rails; phương pháp cài đặt và triển khai hệ thống

Từ khóa: Ruby on Rails, Đào tạo trực tuyến

Trang 5

LỜI CAM ĐOAN

Em xin cam đoan tất cả các nội dung trong khóa luận này là kết quả nghiên cứu

của riêng em, kết quả nghiên cứu có tính độc lập, do em thực hiện và nghiên cứu dưới

sự hướng dẫn tận tình của PGS.TS Nguyễn Việt Anh và ThS Nguyễn Đức Thiện,

không sao chép kết quả của các công trình nghiên cứu của người khác Các nguồn tài

nguyên và tài liệu tham khảo được sử dụng trung thực, nguồn trích dẫn có chú thích rõ

ràng, minh bạch và được liệt kê đầy đủ ở mục tài liệu tham khảo

Em xin chịu hoàn toàn trách nhiệm về các nội dung được trình bày trong khóa

luận tốt nghiệp này

Hà Nội, ngày 24 tháng 04 năm 2019

Người thực hiện

Trần Tuấn Anh

Trang 6

MỤC LỤC

MỞ ĐẦU 1

LÝ DO CHỌN ĐỀ TÀI 1

MỤC TIÊU NGHIÊN CỨU 1

ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2

BỐ CỤC 2

CHƯƠNG 1 PHÂN TÍCH HỆ THỐNG ĐÀO TẠO TRỰC TUYẾN 3

1.1 Mô tả về bài toán 4

1.1.1 Giới thiệu bài toán 4

1.1.2 Đối tượng tham gia 4

1.1.3 Công nghệ áp dụng 5

1.2 Phân tích các hệ thống đào tạo trực tuyến đã có 6

1.2.1 Hệ thống website môn học của trường Đại học Công nghệ 6

1.2.2 Hệ thống bài giảng trực tuyến Udemy 7

1.3 Đặc tả yêu cầu 8

1.3.1 Đặc tả yêu cầu chức năng 8

1.3.2 Đặc tả yêu cầu phi chức năng 9

1.4 Phân tích, thiết kế ca sử dụng 10

1.4.1 Các sơ đồ ca sử dụng 10

1.4.2 Phân tích ca sử dụng 12

1.5 Mô tả hệ thống 14

1.5.1 Cấu trúc của hệ thống 14

1.5.2 Tổ chức nội dung khóa học 15

1.5.3 Hoạt động dạy và học 15

1.5.4 Giao tiếp và tương tác 16

1.5.5 Theo dõi tiến độ học tập 16

1.6 Thiết kế cơ sở dữ liệu 16

Trang 7

CHƯƠNG 2 TÌM HIỂU FRAMEWORK RUBY ON RAILS 18

2.1 Ngôn ngữ lập trình Ruby 18

2.1.1 Ruby là ngôn ngữ hướng đối tượng 18

2.1.2 Ruby là ngôn ngữ mềm dẻo và linh hoạt 19

2.1.3 Modules và Mixin trong Ruby 19

2.2 Framework Ruby on Rails 20

2.2.1 Kiến trúc MVC trong Rails 21

2.2.2 Đặc điểm Ruby on Rails 23

2.2.3 Các thành phần của Ruby on Rails 24

CHƯƠNG 3 CÀI ĐẶT HỆ THỐNG ĐÀO TẠO TRỰC TUYẾN 28

3.1 Phát triển hệ thống với Ruby on Rails 28

3.1.1 Cài đặt môi trường phát triển 28

3.1.2 Tạo thư mục mã nguồn 28

3.1.3 Cấu hình các tập tin môi trường 30

3.1.4 Cài đặt cơ sở dữ liệu 31

3.1.5 Cài đặt giao diện 33

3.1.6 Cài đặt nghiệp vụ 34

3.2 Xây dựng các chức năng hệ thống 36

3.2.1 Quản lý người dùng 36

3.2.2 Quản trị khóa học 39

3.2.3 Quản trị đề kiểm tra 41

3.2.4 Tìm kiếm và Đăng ký khóa học 43

3.2.5 Gửi thông báo đến học viên 44

3.2.6 Học khóa học 45

3.2.7 Học viên làm bài kiểm tra 48

3.3 Kiểm thử hệ thống 51

3.4 Triển khai hệ thống 53

Trang 8

3.5 Kết quả thực nghiệm từ người dùng 54

KẾT LUẬN VÀ ĐÁNH GIÁ KẾT QUẢ ĐẠT ĐƯỢC 56

Kết quả đạt được và hạn chế còn tồn tại 56

Hướng phát triển hệ thống trong tương lai 56

PHỤ LỤC 59

PHỤ LỤC A MÔ TẢ CHI TIẾT CÁC CA SỬ DỤNG 60

PHỤ LỤC B MÔ TẢ CÁC BẢNG TRONG CƠ SỞ DỮ LIỆU 67

Trang 9

DANH MỤC TỪ VIẾT TẮT

Kí hiệu (Viết tắt) Ý nghĩa

MVC Model Controller View

ORM Object Relational Mapping

CRUD Create Read Update Delete

Trang 10

DANH MỤC HÌNH ẢNH

Hình 1.1 Sơ đồ ca sử dụng của quản trị viên 10

Hình 1.2 Sơ đồ ca sử dụng của giáo viên 11

Hình 1.3 Sơ đồ ca sử dụng chi tiết quản lý chủ đề 11

Hình 1.4 Sơ đồ ca sử dụng của học viên 12

Hình 1.5 Biểu đồ tuần tự cho ca sử dụng Đăng kí tài khoản 14

Hình 1.6 Mô hình cơ sở dữ liệu quan hệ của hệ thống 17

Hình 2.1 Tỷ lệ các ngôn ngữ lập trình được quan tâm năm 2019 [16] 18

Hình 2.2 Tỷ lệ lập trình viên biết đến các Framework trong năm 2017-2018 [16] 21

Hình 2.3 Sơ đồ hoạt động của một request trên mô hình MVC trong Rails [18] 22

Hình 2.4 Sơ đồ các thành phần trong ứng dụng Ruby on Rails [13] 24

Hình 3.1 Hình ảnh cấu trúc thư mục của mã nguồn hệ thống 28

Hình 3.2 Tập tin migrate tạo cấu trúc bảng courses trong cơ sở dữ liệu 31

Hình 3.3 Mã nguồn xử lý logic quản trị viên tạo người dùng mới 35

Hình 3.4 Biểu đồ lớp liên quan đến người dùng 36

Hình 3.5 Cách hoạt động của Action Cable [17] 44

Hình 3.6 Giao diện lộ trình học tập 46

Hình 3.7 Giao diện hiển thị bài giảng 46

Hình 3.8 Giao diện thành phần thảo luận dưới bài học 47

Hình 3.9 Giao diện hiển thị tiến trình học khóa học 48

Hình 3.10 Giao diện hiển thị các câu hỏi trong đề thi 49

Hình 3.11 Giao diện bài làm chi tiết của học viên 51

Hình 3.12 Hình vẽ kết quả kiểm thử tự động với Rspec 52

Hình A.1 Biểu đồ tuần tự cho ca sử dụng Tạo khóa học 61

Hình A.2 Biểu đồ tuần tự cho ca sử dụng Sửa thông tin khóa học 62

Trang 11

DANH MỤC BẢNG BIỂU

Bảng 3.1 Bảng các module của Devise [19] 37

Bảng 3.2 Các đường dẫn có sẵn của devise liên quan đến tài khoản người dùng 38

Bảng 3.3 Các đường dẫn quản trị viên quản lý tài khoản người dùng 38

Bảng 3.4 Đường dẫn liên quan đến quản lý khóa học trong hệ thống 39

Bảng 3.5 Đường dẫn liên quan đến quản lý đề kiểm tra 41

Bảng 3.6 Định dạng dữ liệu tạo một câu hỏi 42

Bảng 3.7 Đường dẫn liên quan đến đăng ký khóa học 43

Bảng 3.8 Bảng các route liên quan đến học khóa học 45

Bảng 3.9 Bảng các route liên quan đến làm bài kiểm tra 48

Bảng 3.10 Định dạng dữ liệu của một bài kiểm tra 49

Bảng 3.11 Bảng định dạng dữ liệu hiển thị kết quả bài kiểm tra 50

Bảng 3.12 Kết quả đánh giá của người dùng về hệ thống 55

Bảng B.1 Thông tin bảng users 67

Bảng B.2 Thông tin bảng courses 67

Bảng B.3 Thông tin bảng user_courses 68

Bảng B.4 Thông tin bảng subjects 68

Bảng B.5 Thông tin bảng tasks 69

Bảng B.6 Thông tin bảng user_tasks 69

Bảng B.7 Thông tin bảng comments 70

Bảng B.8 Thông tin bảng notifications 70

Bảng B.9 Thông tin bảng exams 71

Bảng B.10 Thông tin bảng questions 71

Bảng B.11 Thông tin bảng answers 71

Bảng B.12 Thông tin bảng tests 72

Bảng B.13 Thông tin bảng results 72

Trang 12

MỞ ĐẦU

LÝ DO CHỌN ĐỀ TÀI

Hiện nay, mạng máy tính và Internet đã trở nên phổ biến tại Việt Nam và là nhu cầu thiết yếu của học sinh, sinh viên Hiện nay, hoạt động giảng dạy và học tập tại các trường phổ thông, đại học cao đẳng hay các tổ chức có bộ phận đào tạo người học, đào tạo nhân viên cần một hệ thống đào tạo trực tuyến kết hợp với đào tạo truyền thống để tiết kiệm thời gian đào tạo và chi phí phát sinh trong quá trình đào tạo Hệ thống đào tạo trực tuyến hỗ trợ các giáo viên và người quản lý tạo các tài nguyên học tập và theo dõi quá trình học tập của người học qua việc tham gia các khóa học

Ngôn ngữ Ruby và framework Rails là nền tảng mới phát triển mạnh mẽ trong những năm gần đây, đặc biệt là ở thị trường Nhật Bản Framework Ruby on Rails được viết trên ngôn ngữ Ruby có cú pháp ngắn gọn, linh hoạt và hướng đối tượng, framework Rails có kiến trúc MVC với các thư viện hỗ trợ phong phú, chúng ta có phát triển ứng dụng web một cách nhanh chóng với khả năng dễ dàng mở rộng và bảo trì hệ thống

Vì vậy, trong khóa luận này tôi trình bày các đặc điểm của ngôn ngữ Ruby và framework Ruby on Rails, quy trình xây dựng một hệ thống đào tạo trực tuyến với các hoạt động phân tích yêu cầu bài toán, thiết kế hệ thống theo phương pháp hướng đối tượng, cài đặt hệ thống trên Rails với các công nghệ và công cụ phát triển web khác

MỤC TIÊU NGHIÊN CỨU

Nghiên cứu và tìm hiểu các công nghệ và dịch vụ để phát triển ứng dụng web:

Tìm hiểu các thông tin về website đào tạo trực tuyến

- Tìm hiểu website môn học của Trường Đại học Công nghệ

- Tìm hiểu website học trực tuyến Codecademy, Udemy, Courera, edx

Đi sâu nghiên cứu, phân tích và thực hiện việc xây dựng một hệ thống đào tạo trực tuyến hoàn chỉnh

Trang 13

ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU

Đối tượng nghiên cứu

Ngôn ngữ Ruby và framework Ruby on Rails

Nghiên cứu các thành phần, đặc điểm của hệ thống đào tạo trực tuyến

Phương pháp, quy trình xây dựng một ứng dụng web trên nền tảng Ruby on Rails

Phạm vi nghiên cứu

Các hệ thống đào tạo trực tuyến

Các công cụ, ngôn ngữ liên quan đến phát triển ứng dụng web trên Ruby on Rails

BỐ CỤC

Bố cục của khóa luận gồm có các chương chính sau

CHƯƠNG 1 PHÂN TÍCH HỆ THỐNG ĐÀO TẠO TRỰC TUYẾN

Nội dung chính của chương là mô tả và phân tích các chức năng chính của website, đặc tả các yêu cầu để làm rõ hệ thống qua các yêu cầu chức năng và phi chức năng Phân tích, thiết kế hệ thống theo hướng đối tượng được thể hiện các sơ đồ UML, phân tích cơ sở dữ liệu cho hệ thống

CHƯƠNG 2 TÌM HIỂU FRAMEWORK RUBY ON RAILS

Nội dung của chương là những tìm hiểu về ngôn ngữ Ruby và framework Ruby on Rails, các đặc điểm chính của chúng và các ưu điểm, hạn chế của Ruby on Rails; quá trình để xây dựng một ứng dụng Web với Ruby on Rails

CHƯƠNG 3 CÀI ĐẶT HỆ THỐNG VÀ ĐÁNH GIÁ THỰC NGHIỆM

Nội dung chính của chương là mô tả quy trình cài đặt môi trường để phát triển hệ thống, phát triển các chức năng, lưu trữ thông tin hệ thống; mô tả các công cụ sử dụng

để cài đặt và phát triển ứng dụng, quy trình đưa hệ thống lên môi trường triển khai, các công đoạn kiểm thử hệ thống và đánh giá của người dùng về hệ thống

KẾT LUẬN VÀ ĐÁNH GIÁ KẾT QUẢ ĐẠT ĐƯỢC

Nội dung của chương là mô tả các kết quả đạt được sau quá trình thực hiện khóa luận tốt nghiệp; các hạn chế còn tồn tại sau quá trình thực hiện, một số hướng phát triển trong tương lai có thể thực hiện được

Trang 14

CHƯƠNG 1 PHÂN TÍCH HỆ THỐNG ĐÀO TẠO TRỰC TUYẾN

Đào tạo trực tuyến là quá trình học tương tác thông qua việc sử dụng máy tính và các kỹ thuật truyền thông để đào tạo và học tập Đào tạo trực tuyến là hình thức truyền tải nội dung bằng phương tiện điện tử qua trình duyệt web, thông qua mạng Internet hay qua các hình thức khác như CD-ROM, DVD broadcast video, nội dung theo yêu cầu hay lớp học ảo Nói một cách khác, đào tạo trực tuyến là sự kết hợp của Internet

và các công nghệ số tạo ra mô hình đào tạo trong đó các thông tin về giáo dục, đào tạo, các kiến thức và sự lĩnh hội được thực hiện thông qua các máy tính và Internet [2] Một hệ thống đào tạo trực tuyến được thể hiện gồm có các chủ thể chính: chủ thể cung cấp tài nguyên học tập, chủ thể sử dụng tài nguyên học tập và chủ thể quản lý hệ thống hoạt động thông qua sự tương tác giữa các chủ thể trên hệ thống Đào tạo trực tuyến cho phép đào tạo mọi lúc, mọi nơi; học viên có thể truy cập các khoá học bất kỳ nơi đâu như văn phòng làm việc, tại nhà, tại những điểm Internet công cộng [4]

Đối tượng có nhu cầu xây dựng hệ thống đào tạo trực tuyến có thể là giáo viên,

tổ chức giáo dục như các trường cao đẳng, đại học, các doanh nghiệp có nhu cầu đào tạo nhân viên, các tổ chức chính trị - xã hội khác cần đào tạo con người kiến thức cần thiết cho cuộc sống Ở khóa luận này, tôi nghiên cứu và xây dựng hệ thống đào tạo trực tuyến qua bài giảng video và các tài liệu học tập cho trường đại học, cao đẳng

Mục tiêu:

Bài toán đặt ra là làm thế nào để xây dựng một hệ thống đào tạo trực tuyến cho một trường đại học, cao đẳng Hệ thống này cung cấp dịch vụ cho người quản lý đào tạo quản trị các giáo viên, học viên và các tài nguyên học tập Nó cung cấp dịch vụ cho người dạy có thể xây dựng các khóa học và quản lý quá trình học của học viên Cung cấp dịch vụ cho người học có thể tham gia vào khóa học để học bài giảng, làm bài kiểm tra, thảo luận dưới bài học và theo dõi quá trình học của mình

Ý nghĩa:

Hệ thống hỗ trợ các tổ chức có thể tạo và quản lý các khóa học đào tạo học viên một cách đơn giản và thuận lợi Cung cấp một môi trường tương tác giữa các chủ thể cung cấp học liệu và chủ thể sử dụng và khai thác tài nguyên học tập Hệ thống khiến việc đào tạo trở nên dễ dàng, tiết kiệm thời gian, chi phí đào tạo so với hình thức đào tạo truyền thống

Trang 15

1.1 Mô tả về bài toán

1.1.1 Giới thiệu bài toán

Hệ thống đào tạo trực tuyến mà tôi xây dựng trong khóa luận này dựa trên các bài giảng video và các bài giảng dưới dạng văn bản Hệ thống phục vụ cho các tổ chức giáo dục sử dụng kết hợp phương pháp giảng dạy truyền thống với hình thức học trực tuyến

Hệ thống cung cấp cho người dùng dịch vụ tạo các khóa học và tài nguyên học tập cho giáo viên và dịch vụ khai thác tài nguyên học tập cho học viên Cụ thể ở hệ thống của tôi là giáo viên có thể xây dựng các khóa học và quản lý quá trình học tập Học viên có thể đăng kí vào khóa học, xem bài giảng, làm các bài kiểm tra đánh giá kiến thức, thảo luận dưới mỗi bài học, theo dõi quá trình học tập của mình bao gồm việc theo dõi các bài học đã hoàn thành và kết quả của các bài kiểm tra đã hoàn thành

Hệ thống được sử dụng kết hợp với phương pháp học truyền thống, hỗ trợ các giáo viên tại các trường cao đẳng và đại học hiện các khóa đào tạo học viên là các môn học trên giảng đường được hiệu quả hơn Học viên sử dụng hệ thống sẽ dễ dàng tham gia lĩnh hội kiến thức, theo dõi tiến độ học tập để có thể điều chỉnh phương pháp học tập

1.1.2 Đối tượng tham gia

Chủ thể quản lý đào tạo (Quản trị viên)

Người quản lý đào tạo có chức năng quản trị hệ thống, Người quản lý là nhân viên phòng đào tạo của các trường đại học Họ quản lý người dạy và người học, quản

lý các tài nguyên học tập trên hệ thống như: quản lý khóa học, quản lý tài khoản người dùng, tạo tài khoản cho giáo viên và học viên truy cập vào hệ thống

Chủ thể cung cấp học liệu (Giáo viên)

Giáo viên là một đối tượng chính của hệ thống, ở đây là có thể truy cập vào hệ thống để tạo và quản lý khóa học mà họ tạo ra trên hệ thống và thực hiện việc đào tạo trực tuyến: theo dõi tiến trình học tập của học viên tham gia vào khóa học đó (các bài học, kết quả bài kiểm tra), đăng và trả lời các câu hỏi dưới bài giảng

Chủ thể khai thác học liệu (Học viên)

Học viên là một đối tượng chính của hệ thống, ở đây là sinh viên tại các trường đại học Họ có thể đăng ký tài khoản hoặc được cấp tài khoản bởi quản trị viên; có thể tham gia vào các khóa học và thực hiện xem bài giảng, làm bài kiểm tra, thảo luận

dưới bài học và theo dõi kết quả và tiến trình học khóa học của mình

Trang 16

1.1.3 Công nghệ áp dụng

Ruby on Rails

Ruby on Rails là một web framework được viết bằng ngôn ngữ lập trình Ruby, xây dựng dựa trên kiến trúc MVC và hỗ trợ cơ chế RESTful Rails là một framework phát triển full-stack, bạn có thể làm tất cả các thành phần của một website chỉ với Rails Rails cung cấp các mô-đun hỗ trợ nhiều tính năng đặc sắc, có hệ thống gem đa dạng và phong phú giúp phát triển ứng dụng web nhanh chóng, dễ dàng mở rộng và bảo trì Nó cũng hỗ trợ nhiều hệ quản trị cơ sở dữ liệu phổ biến hiện nay như MySQL, PostgreSQL, Oracle, MongoDB,

MySQL

MySQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở, đã và đang phổ biến nhất trên thế giới Cơ sở dữ liệu được tạo ra từ các bảng từ ngôn ngữ SQL MySQL với các đặc điểm như: tốc độ cao, ổn định, dễ sử dụng, có thể hoạt động trên nhiều nền tảng phổ biến Windows, Linux, OSX MySQL được sử dụng phổ biến trong việc làm nơi lưu trữ những thông tin trên các trang web viết bằng rất nhiều các ngôn ngữ lập trình, framework phổ biến như PHP – Laravel, Ruby – Rails, Java – Spring , NodeJS,

HTML5

Hypertext Markup Language (HTML) là ngôn ngữ đánh dấu siêu văn bản HTML hoặc Hyper-Text Markup Language có thể được hiểu là ngôn ngữ chính của WordWide Web Hầu hết những trang web được host trên mạng đều được viết bởi vài phiên bản của HTML Qua HTML, lập trình viên có thể đảm bảo chắc chắn làm thế nào để multimedia, văn bản và hyperlink giữa chúng hiển thị trên trình duyệt web Từ những elements mà kết nối đến văn bản của bạn (hypertext) tới việc giúp những tài liệu này tương tác được (ví dụ: forms); tất cả là thành phần của HTML [8]

SCSS

SCSS là một ngôn ngữ tiền xử lý CSS SCSS tập hợp những gì có trong CSS và

sở hữu những tính năng của SASS SCSS có cú pháp dựa trên cú pháp của CSS, sử dụng {} và ; như CSS và không còn quá quan tâm việc thụt lề hay các khoảng trắng SCSS kế thừa một số tính năng đặc sắc của SASS như: quy tắc xếp chồng các thành phần CSS, sử dụng biến, qui tắc kế thừa và qui tắc mixin

Trang 17

Bootstrap 4

Bootstrap là một framework miễn phí và mã nguồn mở hỗ trợ thiết kế giao diện Web theo một chuẩn, tạo các website có thể hiển thị trên nhiều thiết bị mobile, Table, Bootstrap bao gồm thành phần HTML, CSS tạo nên các component có sẵn như forms, tables, navigation typography, forms, buttons và nhiều component khác Bootstrap hỗ trợ rất nhiều cho việc thiết kế responsive dễ dàng, tiện lợi và nhanh chóng Phiên bản mới nhất của Bootstrap là 4.3

Heroku

Heroku là nền tảng đám mây cho phép xây dựng, phân phối, theo dõi và mở rộng ứng dụng Heroku là một nền tảng dành cho data và apps - cung cấp một database-as-a-service an toàn, có khả năng mở rộng với rất nhiều công cụ dành cho nhà phát triển như database followers, forking, dataclip và health checks tự động [6]

Amazon S3

Amazon S3 là dịch vụ lưu trữ đối tượng được xây dựng để lưu trữ và truy xuất

dữ liệu với khối lượng bất kỳ từ bất cứ nơi nào trên Internet Đây là dịch vụ lưu trữ đơn giản cung cấp hạ tầng lưu trữ dữ liệu có độ bền cực cao, độ khả dụng cao và quy

mô vô cùng linh hoạt với chi phí rất thấp [10]

1.2 Phân tích các hệ thống đào tạo trực tuyến đã có

Hiện tại có rất nhiều hệ thống dưới dạng website hỗ trợ đào tạo trực tuyến Trong quá trình tìm hiểu nghiệp vụ cho hệ thống đào tạo trực tuyến, tôi đã nghiên cứu và phân tích hai hệ thống

Thứ nhất là hệ thống website môn học của trường Đại học Công nghệ - Đại học quốc gia Hà Nội; thứ hai là hệ thống bài giảng trực tuyến Udemy

1.2.1 Hệ thống website môn học của trường Đại học Công nghệ

Website môn học của trường Đại học Công nghệ [12] là một website hỗ trợ giảng viên và sinh viên học tập chủ động và hiệu quả hơn, là một kênh trao đổi giữa giảng viên và sinh viên trong quá trình học tập các môn học trên giảng đường Khi bắt đầu một kì học mới, nhân viên kĩ thuật của trường tạo sẵn các khóa học rỗng chỉ chứa các thời gian học trong một học kì là 15 tuần, thêm giảng viên giảng dạy vào khóa học lấy

từ thời khóa biểu của học kì đó

Hệ thống được xây dựng trên nền tảng Moodle để xây dựng sẵn một số chức năng cơ bản cho một hệ thống đào tạo trực tuyến

Trang 18

2.2.1.1 Đặc điểm nổi bật

Hệ thống cho phép giảng viên và sinh viên thực hiện các hoạt động trao đổi và tương tác hỗ trợ bổ sung cho các giờ giảng trên lớp về các vấn đề trong nội dung đào tạo, thực hiện các kiểm tra đánh giá

Giảng viên có thể đưa các tài liệu tham khảo có thể là slide bài giảng, sách tham khảo; các bài tập và tạo các đường dẫn cho sinh viên nộp bài tập; gửi các thông báo tới sinh viên trên hệ thống về lịch nghỉ học hoặc các vấn đề trong nội dung môn học; tạo các đề thi kiểm tra để đánh giá sinh viên

Sinh viên có thể ghi danh vào các khóa học mà mình đã đăng kí trong học kì đó;

ở đó họ có thể tải xuống các tài liệu mà giáo viên đã đăng tải; gửi tin nhắn, viết lời bình luận dưới các chủ đề mà giáo viên và người khác đã tạo; làm các bài thi mà giáo viên tạo trong các khóa học sau đó xem luôn kết quả

1.2.2 Hệ thống bài giảng trực tuyến Udemy

Udemy [24] là một nền tảng học tập trực tuyến được thành lập vào năm 2010 và hiện có hơn 12 triệu học viên với hơn 40 nghìn khóa học rất phong phú về nhiều lĩnh vực Udemy là một hệ thống rất phổ biến hiện nay, hệ thống này gồm hai thành phần dành cho người học và dành cho người dạy Hệ thống cho phép người dùng có thể tạo các khóa học trên đó và cũng có thể tham gia vào các khóa học trả phí, miễn phí để khai thác nội dung khóa học

Trang 19

Để tăng tính tương tác chủ động giữa người dạy và người học, Udemy cung cấp các tính năng để giáo viên và học sinh có thể giao tiếp với nhau qua các phần thông báo, thảo luận và tin nhắn Ngoài ra, giáo viên cũng có thể theo dõi được tiến độ học tập của học viên

1.2.2.2 Nhận xét về hệ thống

Udemy cung cấp đầy đủ các chức năng cần thiết cho một hệ thống đào tạo trực tuyến, đó là khả năng tạo khóa học và các hoạt động tương tác giữa người dạy và người học, tạo các bài tập và bài kiểm tra đánh giá

Hệ thống có giao diện hợp lý với bố cục rõ ràng, người dùng có thể dễ dàng sử dụng Udemy có thể sử dụng trên nhiều loại thiết bị khác nhau như điện thoại, máy tính bảng

Cơ chế hỗ trợ giáo viên xây dựng các khóa học của Udemy cũng được thực hiện một cách đơn giản, dễ dàng và nhanh chóng Udemy đã đưa ra các quy định, các tiêu chuẩn mà nội dung khóa học phải tuân thủ và các hướng dẫn rất chi tiết và đầy đủ để giúp những người chưa có nhiều kinh nghiệm cũng có thể xây dựng được các khóa học chất lượng cao

Mặc dù có nhiều ưu điểm như vậy, tuy nhiên nó vẫn còn các hạn chế Đầu tiên, chỉ có các khóa học đạt tiêu chuẩn mà Udemy đề ra mới được thông qua và đưa lên hệ thống Thứ hai, các người học trên nền tảng này thuộc quyền quản lý của hệ thống Udemy, không thuộc quyền quản lý của các cơ sở đào tạo tham gia vào hệ thống

1.3 Đặc tả yêu cầu

1.3.1 Đặc tả yêu cầu chức năng

Các chức năng mà hệ thống cần cung cấp cho người dùng được thể hiện dưới dạng các user story như dưới đây

Đối với quản trị viên

- Là quản trị viên, tôi muốn đăng nhập vào hệ thống

- Là quản trị viên, tôi muốn quản lý tài khoản người dùng

- Là quản trị viên, tôi muốn quản lý toàn bộ khóa học

Đối với giáo viên

- Là quản trị viên, tôi muốn đăng nhập vào hệ thống

- Là quản trị viên, tôi muốn tạo và quản lý khóa học

Trang 20

- Là quản trị viên, tôi muốn tạo và quản lý chủ đề, bài học, đề kiểm tra

- Là quản trị viên, tôi muốn xem tiến trình học của học viên

- Là quản trị viên, tôi muốn xem kết quả bài kiểm tra

- Là quản trị viên, tôi muốn thảo luận dưới bài giảng

Đối với học viên

- Là quản trị viên, tôi muốn đăng kí tài khoản, đăng nhập, lấy lại mật khẩu

- Là quản trị viên, tôi muốn tìm kiếm và đăng ký vào khóa học

- Là quản trị viên, tôi muốn xem bài giảng của khóa học

- Là quản trị viên, tôi muốn làm bài kiểm tra

- Là quản trị viên, tôi muốn xem kết quả kiểm tra

- Là quản trị viên, tôi muốn thảo luận dưới bài học

1.3.2 Đặc tả yêu cầu phi chức năng

Khả năng sử dụng

Phần mềm phải dễ dàng sử dụng để một người sử dụng biết sử dụng trong vòng 30 phút sử dụng hệ thống Giao diện phải thân thiện với người dùng với bố cục hợp lý, khoa học

Trang 21

1.4 Phân tích, thiết kế ca sử dụng

1.4.1 Các sơ đồ ca sử dụng

Từ những đặc tả chức năng ở phía trên, tôi đã phân tích các nhu cầu của người dùng thành các ca sử dụng Như tôi đã trình bày tại phần đối tượng người dùng, hệ thống sẽ bao gồm các tác nhân chính đó là quản trị viên, giáo viên và học viên Dưới đây là hình ảnh các biểu đồ ca sử dụng thể hiện các ca sử dụng của từng tác nhân chính tham gia vào hệ thống

Hình 1.1 Sơ đồ ca sử dụng của quản trị viên

Trang 22

Hình 1.2 Sơ đồ ca sử dụng của giáo viên

Hình 1.3 Sơ đồ ca sử dụng chi tiết quản lý chủ đề

Trang 23

Hình 1.4 Sơ đồ ca sử dụng của học viên

6 Tiền điều kiện

7 Hậu điều kiện

Từ đặc tả chi tiết các ca sử dụng, tôi phân tích để thiết kế hệ thống bằng cách phân tích thành các lớp thực thể, lớp điều khiển và lớp biên giao diện để xây dựng biểu đồ tuần tự cho từng ca sử dụng Từ đó tiếp tục thiết kế các biểu đồ lớp thể hiện các lớp tham gia vào ca sử dụng với các thuộc tính và phương thức

Sau đây, tôi xin lấy ca sử dụng Đăng ký tài khoản làm ví dụ cho việc đặc tả, phân tích và thiết kế một ca sử dụng trong hệ thống

Trang 24

Luồng điều khiển

1 Người dùng lựa chọn nút Đăng ký tài khoản

2 Người dùng nhập các thông tin vào biểu mẫu đăng ký

3 Hệ thống lưu thông tin tài khoản vào cơ sở dữ liệu, thông báo đăng ký thành công

đến người dùng

Luồng thay thế

Thông tin nhập không hợp lệ

Tại bước 2, khi người dùng nhập các thông tin không chính xác, hệ thống sẽ hiển thị lỗi tại các trường là thông báo kiểm tra lại thông tin đến người dùng

Điều kiện trước

Người dùng đã truy cập vào trang chủ của hệ thống

Điều kiện sau

Hệ thống hiển thị giao diện sau khi đăng ký thành công

Phân tích ca sử dụng

Lớp dữ liệu Nguoidung lưu trữ thông tin của người dùng trong hệ thống

Lớp giao diện FormDangKy cung cấp cho người dùng giao diện nhập các thông tin để đăng kí tài khoản với hệ thống

Lớp điều khiển CtDangKy tiến hành kiểm tra các dữ liệu mà người dùng đã nhập, nếu kiểm tra các dữ liệu đều qua thì lưu trữ vào cơ sở dữ liệu, nếu không lớp điều khiển yêu cầu người dùng kiểm tra và nhập lại

Từ các phân tích trên, tôi thực hiện vẽ biểu đồ tuần tự và biểu đồ lớp cho ca sử dụng Biểu đồ tuần tự cho ca sử dụng Đăng ký tài khoản được trình bày trong hình 1.5

Trang 25

Hình 1.5 Biểu đồ tuần tự cho ca sử dụng Đăng kí tài khoản

Phần này tôi trình bày đầy đủ và chi tiết từng ca sử dụng ở phần phụ lục A

1.5 Mô tả hệ thống

1.5.1 Cấu trúc của hệ thống

Đối tượng chính và quan trọng nhất trong hệ thống đó là các khóa học, ở đó diễn

ra các hoạt động giảng dạy, học tập và giao tiếp giữa người học và người dạy Mỗi khóa học bao gồm các vai trò, nội dung học tập và các hoạt động học tập Một khóa học cần bao gồm các thông tin về người dạy, nội dung chính của khóa học, thời gian bắt đầu, thời gian kết thúc

Có hai vai trò chính tham gia vào trong một khóa học, bao gồm người dạy và người học Người dạy có nhiệm vụ tạo khóa học, thiết kế và xây dựng các nội dung của khóa học, duy trì các hoạt động học tập Người học tham gia vào khóa học có thể truy xuất các tài nguyên, nội dung học tập, tham gia vào các trao đổi, theo dõi tiến độ học tập của bản thân Mỗi khóa học trong hệ thống có thể được quản lý bởi nhiều giáo viên, cho phép các giáo viên cộng tác trong quá trình xây dựng và triển khai khóa học Với cấu trúc tổ chức theo khóa học, hệ thống đảm bảo tạo ra môi trường học tập riêng biệt cho từng khóa học Khi xây dựng một khóa học, quan trọng nhất là xây dựng nội dung cho khóa học đó [9]

Trang 26

1.5.2 Tổ chức nội dung khóa học

Nội dung học tập trong từng khóa học được tổ chức hướng đến sự rõ ràng, đơn giản, dễ dàng truy xuất và theo dõi Nội dung học tập trong một khóa học gọi là lộ trình học tập bao gồm các mục nhỏ, mỗi hạng mục học tập trên có các mục tiêu, tài nguyên và các hoạt động tương ứng Bắt đầu khởi tạo mỗi khóa học, người dạy mô tả

và làm rõ tổng quan về khóa học ở phần mô tả khóa học bao gồm các hướng dẫn và các mục tiêu của khóa học này [9]

Với mỗi hạng mục học tập có mô tả về hạng mục đó, các hoạt động sẽ diễn ra Các tài nguyên chính trong khóa học bao gồm các bài giảng dạng văn bản, video bài giảng, bài tập, tài liệu và các đề kiểm tra Việc sắp xếp các nội dung này tùy thuộc vào thiết kế của giáo viên, tuy nhiên cách làm tốt nhất cần tổ chức theo trình tự: bắt đầu bằng chủ đề giới thiệu khóa học gồm bài giảng chữ hoặc video giới thiệu khóa học, tiếp theo là các chủ đề nội dung chính của khóa học bao gồm các hạng mục học tập, cuối mỗi chủ đề là bài kiểm tra để người học củng cố kiến thức [9]

Bài giảng trong hệ thống bao gồm cả nội dung bài học dạng văn bản và video bài giảng Nội dung bài giảng dưới dạng văn bản bao gồm các đoạn văn bản được định dạng theo yêu cầu của người dùng, các hình vẽ minh họa và các bảng biểu cần thiết Đối với các video bài giảng, chúng được thiết kế với độ dài không quá 20 phút để học viên cảm thấy thích thú, tập trung không cảm thấy chán nản khi xem một nội dung Bài tập là các nhiệm vụ mà học viên cần giải quyết được giao vào cuối các chủ

đề nhằm củng cố kiến thức đã truyền tải đến học viên Các nhiệm vụ có thể mô tả dưới dạng văn bản kết hợp giữa chữ, hình vẽ và bảng biểu

Bài kiểm tra được thể hiện dưới dạng câu hỏi trắc nghiệm, câu hỏi có dạng chọn một đáp án đúng hoặc chọn nhiều đáp án đúng Khi học viên làm một bài thi, bài thi

đó bao gồm số lượng câu hỏi mà giáo viên đã nhập thông tin khi tạo đề thi, các câu hỏi được tạo ngẫu nhiên từ ngân hàng câu hỏi mà giáo viên tạo trong đề thi đó

1.5.3 Hoạt động dạy và học

Đối với hoạt động quản lý khóa học của giáo viên, sau khi giáo viên đã thực hiện tạo nội dung của khóa học, họ bắt đầu thực hiện việc giảng dạy Giáo viên có thể gửi thông báo đến các học viên về các vấn đề của khóa học, các hướng dẫn, mục tiêu của khóa học và các nguồn thông tin tham khảo; tạo nội dung các đề kiểm tra, theo dõi kết quả các bài kiểm tra có trong khóa học mà học viên đã thực hiện; theo dõi lộ trình học tập của mỗi học viên trong khóa học [9]

Trang 27

Khi học viên đăng kí vào một khóa học, hệ thống sẽ tạo sẵn cho học viên đó một

lộ trình học tập của khóa học, ở đó hiển thị tỉ lệ hoàn thành các hạng mục học tập trong khóa học Học viên có thể tham gia học khóa học bất cứ lúc nào, các hoạt động mà học viên có thể thực hiện trong quá trình học khóa học có thể là xem bài giảng, thảo luận

và đưa ra câu hỏi dưới mỗi bài giảng, đọc thông báo từ giáo viên và hệ thống, làm các bài kiểm tra đánh giá

1.5.4 Giao tiếp và tương tác

Để tạo môi trường học tập liên tục, minh bạch hóa thông tin và tăng cường tính tương tác trong lớp học thì hệ thống cung cấp một số loại hình tương tác với nhau bao gồm thông báo và thảo luận dưới dạng bình luận

Các thông báo là kênh giao tiếp chính của các lớp học Giáo viên có thể gửi một thông báo tới một hoặc nhiều lớp mà mình quản lý cùng một lúc Học sinh có thể xem các thông báo của tất cả các lớp mà mình tham gia hay của một lớp nhất định

Ngoài ra, một kênh giao tiếp khác đó là phần thảo luận dưới mỗi bài giảng Thảo luận được thể hiện dưới dạng các bình luận, người dùng đăng tải các chủ đề thảo luận, các học viên khác bình luận bên dưới chủ đề đó Các chủ đề thảo luận và bình luận có thể là văn bản dạng chữ hoặc hình ảnh, bảng biểu

1.5.5 Theo dõi tiến độ học tập

Tiến độ học tập là thông tin rất hữu ích giúp điều chỉnh các hoạt động học tập cũng như hỗ trợ quá trình tự học của học viên Việc chủ động theo dõi tiến độ học tập một khóa học là một cơ chế tự kiểm soát trong học tập, giúp quá trình tự học đạt được hiệu quả cao hơn [9]

Từ phía người dạy, giáo viên có thể biết được tỉ lệ hoàn thành nội dung học tập của từng học sinh, biết được nội dung nào đang được học viên quan tâm nhiều nhất và

có nhiều vấn đề mà học viên mắc phải để truyền đạt thêm kiến thức cho học viên

Từ phía người học, học viên có thể tự biết được tiến độ học tập của mình trong khóa học Khi học viên hoàn thành một nội dung trong lộ trình học tập, chẳng hạn là bài học, bài kiểm tra, bài tập thì hệ thống tự ghi nhận trạng thái hoàn thành và thể hiện trên lộ trình học tập của học viên

1.6 Thiết kế cơ sở dữ liệu

Để lưu trữ thông tin về các khóa học, học viên và giáo viên cũng như các tài nguyên học tập trên hệ thống, tôi đã xây dựng một cơ sở dữ liệu gồm các bảng với các

Trang 28

thuộc tính và liên kết giữa chúng Các bảng trong cơ sở dữ liệu và liên kết giữa chúng được thể hiện trong hình 1.6

Hình 1.6 Mô hình cơ sở dữ liệu quan hệ của hệ thống

Chi tiết các bảng trong cơ sở dữ liệu được mô tả chi tiết ở phần phụ lục B

KẾT LUẬN CHƯƠNG 1

Trên đây tôi đã trình bày tổng quan về hệ thống, phân tích một số hệ thống tương

tự Tôi đã mô tả về hệ thống, yêu cầu chức năng và phi chức năng, phân tích và thiết

kế các ca sử dụng mà hệ thống cung cấp; mô tả các thành phần có trong hệ thống và thiết kế cơ sở dữ liệu cho hệ thống

Trong chương 2, tôi sẽ trình bày về công nghệ chính sẽ sử dụng để cài đặt hệ thống, đó là ngôn ngữ Ruby và framework Rails

Trang 29

CHƯƠNG 2 TÌM HIỂU FRAMEWORK RUBY ON RAILS

Ngôn ngữ Ruby là một ngôn ngữ thiết kế web được sử dụng để xây dựng các hệ thống web Hai đặc điểm nổi bật của ngôn ngữ Ruby là: cú pháp ngắn, linh hoạt và là một ngôn ngữ rất hướng đối tượng

Hình 2.1 Tỷ lệ các ngôn ngữ lập trình được quan tâm năm 2019 [16]

2.1.1 Ruby là ngôn ngữ hướng đối tượng

Trong Ruby, mọi thứ đều là đối tượng Tất cả thông tin và mã đều có thể gán thuộc tính và hành động Lập trình hướng đối tượng gọi thuộc tính với tên biến thực

Trang 30

thể và gọi hành động dưới dạng các hàm Cách tiếp cận thuần hướng đối tượng có thể được thấy rõ ở những đoạn mã áp dụng một hành động lên một con số [7]

Ví dụ: 5.times { print "Tôi *là* Tuấn Anh!" }

Ở nhiều ngôn ngữ khác, số và một số kiểu mẫu nguyên thủy không phải là đối tượng Ruby gán hàm và biến đối tượng cho tất cả các kiểu mẫu Điều này làm cho Ruby dễ dùng hơn vì tất cả nguyên tắc về đối tượng được áp dụng thống nhất

2.1.2 Ruby là ngôn ngữ mềm dẻo và linh hoạt

Ruby được coi là một ngôn ngữ mềm dẻo và linh hoạt, từ khi nó cho phép người dùng tự do sửa đổi cả phần cốt lõi của nó Các phần cốt lõi của Ruby có thể được xóa hoặc định nghĩa lại như ý muốn

Ví dụ, bổ sung việc thực hiện phép cộng thay vì phải dùng toán tử (+) Nhưng nếu bạn muốn sử dụng khả năng đọc từ “plus”, bạn có thể thêm một phương thức tới lớp Numberic Ban đầu khi đọc đến đây, có thể có ai đó sẽ cho rằng nó giống nạp chồng toán tử trong C++, tuy nhiên thực sự thì không phải vậy Vì Ruby coi cả các con

số là một đối tượng và đối tượng đó thuộc lớp Numeric [7] Các toán tử của Ruby là cách viết dễ đọc của các hàm Bạn có thể định nghĩa lại chúng nếu cần

2.1.3 Modules và Mixin trong Ruby

Module là cách để mà nhóm các phương thức, các lớp và các hằng lại cùng nhau, module đem lại hai lợi ích chính cho bạn

- Cung cấp một namespace, ngăn cản sự xung đột giữa các tên phương thức, biến

- Thứ hai, là giúp thực hiện khả năng mixin

Namespace

Khi bạn bắt đầu viết một dự án lớn với Ruby, ta sẽ muốn gói lại các đoạn mã nguồn hay sản phẩm để sau này có thể sử dụng lại, hay như tạo nó thành thư viện riêng của mình Và để làm như vậy bạn sẽ chia các phần mã nguồn vào những tập tin riêng biệt để mà nội dung có thể được chia sẻ giữa những chương trình Ruby khác nhau Ruby cho phép bạn có thể đặt tất cả những thứ như các hàm, các hằng số trong một tập tin và khi bạn cần dùng lại nó, đơn giản là chỉ cần gọi tập tin đó từ trong một chương trình bất kỳ Module định nghĩa một namespace như một cái hộp mà bên trong

nó có chứa các phương thức và hằng số, không giống namespace của các ngôn ngữ khác là các hàm và biến là phải đặt trong một lớp Các hàm có thể được đặt vào trong một module như một phương thức static trong lớp [5]

Trang 31

Mixin

Module còn có một ưu điểm nữa rất hay và có thể coi là sức mạnh của Ruby đó

là cung cấp khả năng mixin Vậy mixin là gì?

Ruby cho phép sử dụng cả đơn thừa kế và sức mạnh của đa thừa kế, tuy nhiên Ruby vẫn chỉ là ngôn ngữ đơn thừa kế Khả năng mixin giúp Ruby có sức mạnh của đa thừa kế và khắc phục được mặt hạn chế của nó Điều gì xảy ra nếu định nghĩa các phương thức thực thể (instance class) trong module ?

Câu trả lời đơn giản là một module không thể có các thực thể, vì nó không phải

là lớp Tuy nhiên, vào lúc bạn include một module vào định nghĩa của lớp, khi đó tất

cả các phương thức trong module đó sẽ chính xác trở thành các phương thức, hay thực thể của lớp đó Và chúng ta gọi hành động đó là đã được “mixed in”, tức là nó đã trở thành các thực thể instance của một lớp [5]

2.2 Framework Ruby on Rails

Ruby on Rails [22] (viết ngắn gọn là Rails) là một web framework mã nguồn mở được viết bằng ngôn ngữ lập trình Ruby

Rails được giới thiệu lần đầu vào tháng 7 năm 2004 bởi David Heinemeier Hansson và tháng 12 năm 2005 phiên bản Rails 1 ra đời Sau đó, Rails đã nhanh chóng phát triển trở thành một trong những web framework phổ biến và không ngừng được cải tiến Phiên bản Ruby on Rails mới nhất hiện nay là phiên bản Rails 5.2.3 và ngày 30/4/2019 sẽ nâng cấp lên phiên bản Rails 6.0

Ruby on Rails là một framework full-stack, bao gồm hai phần chính đó là ngôn ngữ Ruby và phần framework bao gồm các thư viện liên kết với nhau Ruby on Rails được kiến trúc theo mô hình MVC với ba thành phần được thể hiện rõ ràng đó là Model – View – Controller Rails cung cấp các công cụ với khả năng phát triển một ứng dụng web một cách nhanh chóng, thuận tiện

Đặc điểm cơ bản của Rails hỗ trợ cơ chế phát triển mã nguồn DRY tránh sự lặp lại mã nguồn, có sự ngầm định thay cho cấu hình và có bộ công cụ tự động sinh mã nguồn Rails có một hệ thống các gem phong phú và đa dạng, cho phép chúng ta sử dụng chúng để xây dựng một cách nhanh chóng một ứng dụng có thể dễ dàng mở rộng

và bảo trì Rails cũng có khả năng sử dụng kết hợp với các công nghệ khác như AngularJS, ReactJS,…hay các thư viện Javascript

Trang 32

Hình 2.2 Tỷ lệ lập trình viên biết đến các Framework trong năm 2017-2018 [16]

2.2.1 Kiến trúc MVC trong Rails

Mô hình MVC được Trygve Reenskaug đề ra vào năm 1979, mô hình này chia ứng dụng làm 3 phần: model, view và controller Các framework có kiến trúc dựa trên

mô hình MVC như WebObjects, Struts, JavaServer Faces và Rails

MVC ra đời nhằm phân chia các thành phần có sự liên quan với nhau và khi cần thì dễ dàng móc nối lại, làm cho việc viết mã nguồn và bảo trì dễ dàng hơn Bất cứ ứng dụng Rails nào cũng có 3 phần model, view và controller Việc kết nối giữa 3 thành phần này đã được Rails giải quyết tự động, do đó ta chỉ cần quan tâm đến việc phát triển từng thành phần Đặc điểm và nhiệm vụ của mỗi thành phần được mô tả ngắn gọn dưới đây

Trang 33

Hình 2.3 Sơ đồ hoạt động của một request trên mô hình MVC trong Rails [18]

- Model là phần chứa các xử lý với dữ liệu Một model đại diện cho dữ liệu thông tin của ứng dụng và các qui tắc để thao tác dữ liệu đó Trong Rails, các mô hình chủ yếu được sử dụng để quản lý các tương tác với một bảng cơ sở dữ liệu tương ứng Trong hầu hết các trường hợp, một bảng cơ sở dữ liệu tương ứng với một model trong ứng dụng Phần lớn các logic nghiệp vụ được tập trung viết trong các model

- View là phần chịu trách nhiệm sinh ra giao diện người dùng Trong Rails, các view thường là các tập tin HTML có mã nhúng Ruby để thực hiện các tác vụ liên quan đến hiển thị dữ liệu View xử lý việc cung cấp dữ liệu cho trình duyệt web hoặc công cụ khác để thực hiện các yêu cầu từ ứng dụng Hành động của bộ điều khiển hiển thị bố cục và các đoạn được mô tả tách biệt với bố cục trang

- Controllers là bộ phận trung tâm, có nhiệm vụ xử lý tương tác giữa người dùng, view và model Trong Rails, controller chịu trách nhiệm xử lý các yêu cầu đến từ trình duyệt web, truy vấn các model lấy dữ liệu và chuyển dữ liệu đến view Các lớp điều khiển trả lời tương tác người dùng trong kiến trúc MVC Tuy nhiên kết nối giữa các thành phần này sẽ được Rails giải quyết, chúng ta không cần quan tâm chúng ta sẽ chỉ tập trung vào việc phát triển các tính năng của website

Trang 34

2.2.2 Đặc điểm Ruby on Rails

Don’t Repeate Yourself

DRY viết tắt từ “Don’t Repeate Yourself” – Không lặp lại mã nguồn, tức là mỗi thành phần trong mã nguồn được viết trong dự án nên viết ở một nơi duy nhất hay hiểu đơn giản là các đoạn mã nguồn, các định nghĩa cơ sở dữ liệu,…sẽ được đặt tại đâu đó

trong dự án và từ mọi vị trí trong dự án bạn có thể gọi nó ra và sử dụng dễ dàng

Ví dụ, thay vì sao chép và dán đoạn mã nguồn với một tính năng tương đương nào đó, bạn phát triển ứng dụng web của bạn theo cách là cho hàm chức năng này được định nghĩa một lần, tại một vị trí và sẽ được chuyển đến nơi cần sử dụng nó trong mỗi phần khác nhau của ứng dụng Bằng cách này, nếu hành động gốc cần thay đổi, bạn chỉ cần sửa đổi nó một lần tại một vị trí, thay cho việc phải sửa lại tại các nơi khác

nhau trong ứng dụng [7]

Sự ngầm định thay cho cấu hình (Convention over configuration)

Khái niệm sự ngầm định cấu hình đề cập tới thực tế rằng Rails thừa nhận một số thứ mặc định khi xây dựng một ứng dụng web điển hình Rails ban đầu được xuất ra từ một ứng dụng có sẵn, kiến trúc của nó đã đủ để làm việc bên trong các khung sườn framework về sau Khi tạo một dự án với Rails, nó đã mặc định tạo ra một dự án theo

mô hình MVC Hoặc đơn giản là khi tạo một mô hình dữ liệu - Model thì Rails sẽ ngầm định tên của Model đó là một chữ in hoa, số ít và tên của bảng dữ liệu mà nó liên kết là một chữ thường số nhiều [7]

Việc ngầm định này giúp bạn tập trung vào viết mã nguồn cũng như giúp bạn đặt tên theo một chuẩn chung, điều này giúp ích khi bảo trì hay đọc lại mã nguồn sẽ giúp bạn dễ dàng và nhận ra mỗi tập tin là gì và dễ dàng khiến người khác trong đội phát triển dự án có thể hiểu được mã nguồn

Tự động sinh mã nguồn

Ta cũng có thể nói đến Rails với việc sinh mã nguồn tự động Khi bạn phát triển trên Rails, có các thư mục hay tập tin là nơi để bạn điền mã nguồn vào, và tất cả các phần trong ứng dụng của bạn tương tác với nhau trên một cách thức chuẩn Rails đã cung cấp sẵn một bộ khung chương trình trước cho bạn, điều này giúp bạn đơn giản là chỉ việc điền các đoạn mã nguồn vào các tập tin trong ứng dụng Nhờ có bộ khung đã định nghĩa sẵn này, Rails cung cấp các công cụ generate, rake, script cho phép bạn nhanh chóng tạo, xóa ra một số template để bạn định nghĩa model, view, controller hay ngay cả database trong cơ sở dữ liệu [7]

Trang 35

2.2.3 Các thành phần của Ruby on Rails

Kiến trúc của Rails [21] gồm có các thành phần (components) liên kết với nhau

để tạo thành một khung phát triển web

Dưới đây là các thành phần của Rails được mô tả ngắn gọn [3] [11]

Hình 2.4 Sơ đồ các thành phần trong ứng dụng Ruby on Rails [13]

Action Pack

Xử lý và đáp ứng các yêu cầu web Nó cung cấp các cơ chế để định tuyến (ánh xạ URL yêu cầu thành hành động), xác định controllers thực hiện hành động và tạo phản hồi bằng cách hiển thị chế độ xem, là các template có định dạng khác nhau Nói tóm lại, Action Pack cung cấp các lớp khung nhìn và trình điều khiển trong mô hình MVC [21]

Action Dispatch

Xử lý xử lý việc định tuyến các yêu cầu trình duyệt web, phân tích yêu cầu web

và xử lý các tiến trình liên quan đến các phương thức trong giao thức HTTP, chẳng hạn như xử lý cookie, phiên, phương thức yêu cầu, v.v

Trang 36

Action Controller

Sau khi Action Dispatch xử lý request nó sẽ điều hướng các request đến các controller tương ứng Mô đun này cung cấp các base controller tất để các controller khác có thể kế thừa từ nó Action Controller xử lý các yêu cầu đến ứng dụng Rails, trích xuất các tham số và gửi chúng đến action sẽ thực hiện, điều khiển model và view Hai cơ chế hành động cơ bản được sử dụng trong Action Controller là get-and-show

và do-and-redirect, hầu hết các hành động là biến thể của các cơ chế này

Ngoài ra, nó còn quản lý các phiên làm việc của người dùng, chuyển hướng các trang trong ứng dụng, hoạt động caching, mô-đun helper và quản lý việc thực thi các

bộ lọc trước, trong và sau quá trình xử lý qua các callback

Active Model

Xác định giao diện làm việc với nhau giữa Action Pack và Active Record Ngoài

ra, Active Record có thể được sử dụng bên ngoài khung Rails để cung cấp chức năng ánh xạ quan hệ đối tượng (ORM)

Active Record

Mô đun Active Record có nhiệm vụ kết nối các lớp tương ứng với các bảng trong

cơ sở dữ liệu quan hệ Nó cung cấp chức năng ánh xạ quan hệ đối tượng (ORM) đến các lớp, được sử dụng để quản lý dữ liệu trong các cơ sở dữ liệu quan hệ thông qua các đối tượng: bảng ánh xạ với lớp, các bản ghi ánh xạ tới đối tượng, các cột ánh xạ tới các thuộc tính của đối tượng

Rails cung cấp các công cụ để thực hiện các chức năng CRUD mà không phải cấu hình CRUD cho phép tạo mới, đọc, cập nhật và xóa các bản ghi trong cơ sở dữ liệu thông qua các đối tượng Ruby Thêm vào đó, nó cũng cung cấp khả năng tìm kiếm nâng cao và khả năng liên kết các mô hình với nhau, giữa các dịch vụ khác

Active Record phụ thuộc rất nhiều vào việc đặt tên nó sử dụng tên lớp và liên kết

để thiết lập ánh xạ giữa các bảng cơ sở dữ liệu tương ứng và các cột khóa ngoài Mặc

dù các ánh xạ này có thể được xác định rõ ràng, nhưng bạn nên tuân theo các quy ước rất chặt chẽ bắt về cách đặt tên lớp, đặt tên các bảng, các khóa chính và khóa ngoài như thế nào

Action View

Action View là một khung để xử lý tra cứu và hiển thị mẫu xem và cung cấp các trình trợ giúp xem hỗ trợ khi xây dựng các biểu mẫu HTML Nó render các view khi

Trang 37

có yêu cầu, Action View cung cấp các master layouts, templates và các view helpers, các thành phần này hỗ trợ việc sinh tự động ra phần khung cho các trang HTML hay các định dạng khác Có ba template trong Rails là: rhtml, rxml và rjs Định dạng rhtml sinh ra các view HTML có nhúng thêm các đoạn code Ruby (ERB), rxml được sử dụng để xây dựng các tài liệu XML, rjs cho phép tạo ra các đoạn mã động JavaScript

để thực thi các hoạt động AJAX

Action Mailer

Mô đun này là một bộ khung để xây dựng các dịch vụ email Nó có thể được sử dụng để gửi mail dựa trên các mẫu cơ bản hoặc nhận và xử lý các mail đến Mô đun này có thể xử lý những email có nội dung là văn bản đơn giản hoặc những email có nội dung và định dạng phức tạp như gắn các tập tin

Action Mailer thực chất là một trình chạy trên nền Action Controller và các gem Mail, nó cung cấp các phương thức để tao email với các template cũng giống như Action View sử dụng template để render các trang lên trình duyệt

Active Resource

Mô đun này quản lý các kết nối giữa RESTful web services và các đối tượng nghiệp vụ, làm giảm số lượng code cần viết để ánh xạ đến các tài nguyên Active Resource ánh xạ các lớp model với các tài nguyên REST giống như cách mà Active Record ánh xạ các lớp model với các bảng cơ sở dữ liệu

Nó cũng cung cấp khả năng proxy giữa Active Resource và một RESTful service Khi một có một request cần truy cập đến các tài nguyên, một REST XML được sinh ra

và được truyền đi, sau đó kết quả sẽ được phân tích thành một đối tượng Ruby

Active Job

Mô-đun này cung cấp khai báo các tiến trình và thiết đặt chúng chạy trên nhiều nền tảng backend các hàng đợi đó hiểu đơn giản là tạo ra luồng riêng thực hiện một công việc khác mà không ảnh hưởng đến luồng chính Các hàng đợi phổ biến nhất được sử dụng trong các ứng dụng Rails là Sidekiq, Resque và Delayed Job

Những tiến trình này có thể là tất cả các hành động trong ứng dụng như dọn dẹp

hệ thống thường xuyên, các hoạt động được lên lịch sẵn, gửi mail Việc tách chúng thành các công việc nhỏ và chạy song song với hệ thống làm tăng tốc độ của hệ thống lên rất nhiều thay vì chạy theo cách truyền thống Kết hợp với Action Mailer để thực

Trang 38

hiện tính năng deliver_later khiến cho hoạt động gửi mail diễn ra sau quá trình xử lý request

Action Cable

Mô-đun này cung cấp thực hiện tích hợp liền mạch WebSockets với phần còn lại của ứng dụng Rails Nó cho phép cài đặt các tính năng thời gian thực bằng Ruby theo cách như phần còn lại của ứng dụng Rails của bạn, trong khi đó vẫn có thể hoạt động

và có thể mở rộng Rails được giới thiệu cung cấp khả năng “full-stack offering” nghĩa

là cung cấp cả client-side JavaScript framework và Ruby server-side framework Action Cable có thể chạy như một server riêng rẽ, hoặc chúng ta có thể thiết lập để nó chạy trên bên trong server của ứng dụng Rails [21]

Active Storage

Active Storage cung cấp cách thức đơn giản tải lên và tham chiếu các tệp tới các dịch vụ đám mây như Amazon S3, Google Cloud Storage hoặc Microsoft Azure Storage và đính kèm các tệp đó vào Active Records Các tệp có thể được tải lên từ máy chủ lên đám mây hoặc trực tiếp từ máy khách lên đám mây Ngoài ra, các tệp hình ảnh có thể được chuyển đổi về chất lượng, tỷ lệ khung hình, kích thước hoặc bất

kỳ chuyển đổi khác được MiniMagick hỗ trợ [21]

Railties

Mô-đun này là mã nguồn quan trọng nhất trong Rails, nó đảm nhiệm kết nối tất các các mô-đun trên với nhau Ngoài ra, nó xử lý quá trình tự khởi động các tiến trình cho ứng dụng, cung cấp giao diện dòng lệnh rails và cung cấp bộ sinh code cho Rails Rake là một lệnh sử dụng để thực hiện các task thao tác với cơ sở dữ liệu, hoạt động triển khai, làm việc với tài liệu, kiểm thử và dọn dẹp hệ thống

KẾT LUẬN CHƯƠNG 2

Trên đây, tôi đã trình bày các đặc điểm của ngôn ngữ lập trình Ruby là một ngôn ngữ hướng đối tượng, có tính linh hoạt và dễ dàng sử dụng, cung cấp cách viết mã nguồn ngắn gọn, dễ hiểu Ruby on Rails là một framework dựa trên ngôn ngữ Ruby, xây dựng theo kiến trúc MVC Rails có nhiều đặc điểm nổi bật như sự ngầm định các thiết đặt, hỗ trợ DRY, có các công cụ mạnh mẽ để phát triển ứng dụng web chuyên nghiệp, tiết kiệm thời gian và chi phí

Trong chương 3, tôi sẽ trình bày cách sử dụng Ruby on Rails để cài đặt hệ thống đào tạo trực tuyến với các chức năng mà tôi đã phân tích ở chương 1

Trang 39

CHƯƠNG 3 CÀI ĐẶT HỆ THỐNG ĐÀO TẠO TRỰC TUYẾN

3.1 Phát triển hệ thống với Ruby on Rails

Để xây dựng ứng dụng web với Rails, tôi đã thực hiện theo quy trình dưới đây

3.1.1 Cài đặt môi trường phát triển

Hệ thống được phát triển trên hệ điều hành Ubuntu 16.4

Cài đặt hệ quản trị cơ sở dữ liệu MySQL phiên bản 5.7

Cài đặt Ruby phiên bản 2.5.1

Cài đặt Rails phiên bản 5.2.1

3.1.2 Tạo thư mục mã nguồn

Đầu tiên, khởi tạo dự án bởi câu lệnh rails new name_app Sau khi chạy câu

lệnh này, Rails tạo ra một project sử dụng phiên bản đã cài đặt trên máy

Cấu trúc của thư mục mã nguồn sản phẩm gồm các thư mục và các tập tin để thiết lập môi trường cho hệ thống Dưới đây là mô tả ngắn gọn về vai trò của các thư mục và tập tin trong thư mục mã nguồn của hệ thống

Hình 3.1 Hình ảnh cấu trúc thư mục của mã nguồn hệ thống

Tập tin Gemfile

Rails có một hệ thống gem phong phú và đa dạng, chúng là các thư viện hỗ trợ người phát triển các tính năng một cách dễ dàng và chuyên nghiệp Ví dụ như gem devise hỗ trợ xác thực tài khoản nhanh chóng, ransack hỗ trợ tìm kiếm,…

Các gem được khai báo trong Gemfile, chúng sẽ được cài đặt khi chạy lệnh bundle install và được cập nhật bằng câu lệnh bundle update

Trang 40

của người dùng, xử lý các nghiệp vụ và điều hướng dữ liệu đến views

models: nơi chứa các tập tin thiết đặt các đối tượng chính trong ứng dụng Các model khi được tạo ra từ câu lệnh rails generate model <tên model> định được kế thừa từ

lớp ActiveRecord::Base

views: chứa các tập tin của thành phần giao diện được nhận hoặc truyền dữ liệu tới

controller để hiển thị nội dung web cho người dùng

helpers: nơi chứa các tập tin helpers chứa các hàm hỗ trợ để sử dụng tại controller,

environments: nơi chứa các tập tin cấu hình cho từng môi trường development,

production hay test

initializers: nơi chứa các tập tin cho việc khởi tạo ban đầu và cấu hình các gem

locales: nơi chứa các tập tin thiết đặt hiển thị đa ngôn ngữ cho ứng dụng (I18n)

Thư mục db

Thư mục này chứa các thư mục và tập tin liên quan đến việc thao tác để tạo và cập nhật cơ sở dữ liệu cho ứng dụng Trong thư mục migrations thuộc thư mục này chứa các tập tin migration dùng để tạo cấu trúc cơ sở dữ liệu được viết trong tập tin schema.rb Tập tin này được tạo tự động bởi lệnh rails db:migrate Tập tin seeds là nơi

để lập trình viên viết các đoạn mã nguồn tạo và cập nhật dữ liệu của các mô hình dữ liệu vào cơ sở dữ liệu Để gọi thực thi các đoạn mã nguồn trong tập tin này ta thực hiện lệnh rake db:seed

Ngày đăng: 28/10/2024, 18:05

TỪ KHÓA LIÊN QUAN