ĐỒ ÁN TỐT NGHIỆP HỆ THỐNG QUẢN LÝ DỰ ÁN TRONG TRƯỜNG ĐẠI HỌCTrong bài khóa luận này tôi sẽ trình bày về việc xây dựng hệ thống “quản lý dự án trong trường đại học” cho trƣờng Đại học Công Nghệ Đại học Quốc Gia Hà Nội với framework Ruby On Rails. Bên cạnh việc tập trung vào việc xây dựng “hệ thống quản lý dự án trong trường đại học” tôi cũng sẽ giới thiệu về framework Ruby On Rails một Framework MVC còn khá mới mẻ nhƣng đang rất được ưa chuộng hiện nay
Trang 1KHÓ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 - 2016
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ
Cấn Văn Nghị
HỆ THỐNG QUẢN LÝ DỰ ÁN TRONG TRƯỜNG ĐẠI HỌC
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
HÀ NỘI - 2016
Trang 3VIETNAM NATIONAL UNIVERSITY, HANOI UNIVERSITY OF ENGINEERING AND TECHNOLOGY
Can Van Nghi
SYSTEM FOR PROJECT ADMINISTRATION IN
UNIVERSITIES
HA NOI - 2016
Trang 41
LỜI CẢM ƠN
Lời đầu tiên, tôi xin gửi lời cảm ơn sâu xắc nhất tới cô giáo, Tiến sĩ Trần Thị
Minh Châu, người đã tận tình hướng dẫn, chỉ bảo cũng như đóng góp những ý kiến
quý báu để tôi có thể thực hiện khóa luận này
Tôi cũng xin gửi lời cảm ơn chân thành tới các thầy cô giáo trường Đại học Công
Nghệ - Đại học Quốc Gia Hà Nội đã chỉ dạy và truyền đạt những kiến thức quý giá
cho tôi trong thời gian tôi học tập tại trường
Tôi xin cảm ơn tập thể lớp K57CLC đã luôn ủng hộ, khuyên khích tôi trong việc
học tập và tổ chức những hoạt động ngoại khóa bổ ích sau những buổi học
Cuối cùng, tôi xin cảm ơn gia đình và bạn bè những người luôn ở bện cạnh giúp
đỡ và động viên tôi không ngừng cố gắng, nỗ lực phấn đấu trong học tập
Tôi xin chân thành cảm ơn !
Hà nội, ngày 26 tháng 04 năm 2016
Sinh viên
Cấn Văn Nghị
Trang 52
LỜI CAM ĐOAN
Tôi xin cam đoan khóa luận tốt nghiệp này do chính tôi thực hiện và được sự hướng dẫn của Tiến sĩ Trần Thị Minh Châu Các nội dung nghiên cứu, kết quả trong
đề tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây
Tất cả các tài liệu tham khảo trong khóa luận đều có nguồn gốc rõ ràng được ghi trong danh mục tài liệu tham khảo Trong khóa luận, không có việc sao chép tài liệu, công trình nghiên cứu của người khác mà không chỉ rõ về tài liệu tham khảo
Hà nội, ngày 26 tháng 04 năm 2016
Sinh viên
Cấn Văn Nghị
Trang 63
TÓM TẮT
Tóm tắt: Ngày nay việc áp dụng công nghệ thông tin vào các lĩnh vực trong đời sống
đã trở nên rất phổ biến và cần thiết, điều này giúp cho công việc trở nên hiệu quả và giảm chi phí đi rất nhiều Các trường đại học cũng là một nơi đã và đang áp dụng công nghệ thông tin trong việc tổ chức và quản lý đào tạo, bằng chứng là một loạt các hệ thống đã ra đời như: hệ thống đăng kí môn học, hệ thống quản lý thư viện, quản lý sinh viên Tuy nhiên có một thực trạng hiện nay là việc sinh viên và giảng viên phải tham gia vào các dự án nghiên cứu khoa học hay khóa luận, luận văn tốt nghiệp ngày càng nhiều nhưng lại chưa có một hệ thống nào hỗ trợ cho việc này Việc xây dựng một hệ thống quản lý dự án trong trường đại học, hỗ trợ cho việc trao đổi công việc giữa các sinh viên và giảng viên thật sự là một vấn đề cần được giải quyết
Trong bài khóa luận này tôi sẽ trình bày về việc xây dựng hệ thống “quản lý dự
án trong trường đại học” cho trường Đại học Công Nghệ - Đại học Quốc Gia Hà Nội
với framework Ruby On Rails Bên cạnh việc tập trung vào việc xây dựng “hệ thống quản lý dự án trong trường đại học” tôi cũng sẽ giới thiệu về framework Ruby On Rails một Framework MVC còn khá mới mẻ nhưng đang rất được ưa chuộm hiện nay
Từ khóa: Hệ thống quản lý dự án trong trường đại học, framework Ruby On Rails
Trang 74
ABSTRACT
Abstract: Up till these days, technology has been increasingly applied in most of
fields, which makes it become a popularly essential part in life Technology has effect
on easing the burden brought by daily work as well as expense Regard to the use of technology in universities in Vietnam, technology is a fundamental element for establishing the educational administration system The outstanding proof for this is that a series of systems made up, including systems for credit registration, library administration, student administration, and so on However, despite the fact that there
is an increase on the number of scientific researches as well as graduation thesis launched by professors together with students each year, there are no system willing to support this This, seriously, leads to an urgent demand on building a system specifically working on connecting between research instructors and researchers, and smoothing the project process
In my graduation thesis, I would like to demonstrate how I constructed The system for Project administration in universities in the context of The University of Engineering and Technology Besides, I also chose the framework Ruby on Rails to support for my work Therefore, my thesis focuses on two important parts: the first one
is how to build up the “system for project administration in universities”; for the later,
I provide you with an overview about the framework Ruby On Rails, one of updated
and beloved Framework MVC these days
Key words: System for Project administration in Universities, framework Ruby On
Rails
Trang 85
MỤC LỤC
LỜI CẢM ƠN 1
LỜI CAM ĐOAN 2
TÓM TẮT 3
ABSTRACT 4
MỤC LỤC 5
Danh sách bảng 8
Danh sách hình vẽ 9
Danh sách thuật ngữ và từ viết tắt 10
Mở đầu 11
Chương 1: Giới thiệu về mô hình MVC và bài toán quản lý dự án trong trường đại học 12
1.1 Mô hình MVC và các Framework MVC phổ biến 12
1.1.1 Mô hình MVC 12
1.1.3 Ưu điểm và nhược điểm của mô hình MVC 13
1.1.5 Giới thiệu về các Framework MVC trong phát triển ứng dụng web 13
1.1.5.1 Ruby on rails 13
1.1.5.2 Spring MVC 13
1.1.5.3 Django 14
1.1.5.4 Laravel 14
1.1.5.5 Phalcon 15
1.1.6 So sánh một số thành phần các Framework MVC 15
1.2 Bài toán quản lý dự án trong trường đại học 17
1.2.1 Hệ thống quản lý dự án trong trường đại học 17
1.2.1.1 Phát biểu bài toán 17
1.2.1.2 Chức năng chính của hệ thống 17
Trang 96
1.2.2 Kế hoạch phát triển hệ thống 18
Chương 2: Framework Ruby On Rails 21
2.1 Ruby on rails 21
2.1.1 Giới thiệu về Ruby on rails 21
2.1.2.2 Các thành phần chính của Ruby On Rails 21
2.1.2 Phát triển dự án với Ruby On Rails 24
2.1.2.1 Cài đặt môi trường phát triển 24
2.1.2.2 Ví dụ về một dự án Ruby on Rails 25
2.2 Viết test trong Ruby On Rails 29
2.2.1 Giới thiệu về test trong Ruby On Rails 29
2.2.2 Công cụ viết test RSpec 29
2.2.2.1 Cài đặt RSpec 29
2.2.2.2 Generators trong rspec 30
2.2.2.3 Các loại rspec test cơ bản cho Rails 30
1.2.2.4 Một số cú pháp đơn giản thường được sử dụng trong rspec-rails 31
1.2.2.5 Các matcher thường được sử dụng trong rspec-rails 32
1.2.2.6 Chạy rspec test 32
Chương 3: Phân tích thiết kế hệ thống quản lý dự án trong trường đại học 33
3.1 Phân tích và thiết kế hệ thống 33
3.1.1 User story của hệ thống 33
2.1.2 Use case diagram 35
2.1.3 Sequence diagram 45
3.2 Phân tích thiết kế cơ sở dữ liệu 48
3.2.1 Mô hình ER và mô hình quan hệ 48
3.2.2 Chi tiết các bảng dữ liệu 49
3.3 Viết test cho hệ thống 55
3.4 Giao diện hệ thống 57
Trang 107
KẾT LUẬN 59 Tài liệu tham khảo 60
Trang 118
Danh sách bảng
Bảng 1.2 So sánh thành phần các Framework 15
Bảng 3.1: User story của hệ thống 33
Bảng 3.2 Use case tạo dự án 35
Bảng 3.3: Use case cập nhật thông tin dự án 36
Bảng 3.4 Use case xóa dự án 36
Bảng 3.5 Use case thêm công việc 37
Bảng 3.6: Use case chỉnh sửa công việc 38
Bảng 3.7 Use case xóa công việc 39
Bảng 3.8 Use case xem danh sách công việc 39
Bảng 3.9: Use case thêm thành viên trong hệ thống vào dự án 40
Bảng 3.10 Use case chỉnh sửa thông tin cá nhân 40
Bảng 3.11 Use case xem thống kê 41
Bảng 3.12 Use case upload file 41
Bảng 3.13: Use case thêm thành viên ngoài hệ thống vào dự án 42
Bảng 3.14 Use case mời thành viên vào hệ thống 43
Bảng 3.15 Use case xem danh sách người dùng trong hệ thống 44
Bảng 3.16: Use case xóa người dùng khỏi hệ thống 44
Bảng 3.17: Bảng cơ sở dữ liệu ituet_user 49
Bảng 3.18: Bảng cơ sở dữ liệu projects 51
Bảng 3.19: Bảng cơ sở dữ liệu tasks 52
Bảng 3.20: Bảng cơ sở dữ liệu comments 53
Bảng 3.21: Bảng cơ sở dữ liệu member_projects 53
Bảng 3.22: Bảng cơ sở dữ liệu file_attachments 53
Bảng 3.23: Bảng cơ sở dữ liệu activities 54
Bảng 3.24: Test case 55
Trang 129
Danh sách hình vẽ
Hình 1.1: dự án trên trello 19
Hình 2.1: Kiến trúc ruby on rails 23
Hình 2.2: Cấu trúc dự án Ruby On Rails 25
Hình 2.3: kết quả khi chạy ứng dụng hello_rails 27
Hình 2.4: homes_controller.rb 28
Hình 2.5: Kết quả khi chạy ứng dụng 28
Hình 3.1 Use case diagram 35
Hình 3.2: Sequence diagram tạo mới dự án 45
Hình 3.3: Sequence diagram cập nhật dự án 45
Hình 3.4: Sequence diagram tạo công việc 46
Hình 3.5: Sequence diagram cập nhật công việc 46
Hình 3.6: Sequence diagram thêm thành viên cho dự án 47
Hình 3.7 Mô hình ER của hệ thống 48
Hình 3.8: Bảng cơ sở dữ liệu của hệ thống 49
Hình 3.9: Giao diện thông tin dự án 57
Hình 3.10 Giao diện danh sách công việc 57
Hình 3.11: Giao diện thêm công việc 58
Hình 3.12: Giao diện xem chi tiết mộ công việc 58
Trang 1310
Danh sách thuật ngữ và từ viết tắt
Tiếng Anh/Tên viết tắt Tiếng Việt/Cụm từ đầy đủ
Trang 1411
Mở đầu
Trong bối cảnh hiện nay, khi mà công nghệ thông tin ngày càng phát triển một
cách mạnh mẽ Việc các trường đại học áp dụng công nghệ thông tin vào quản lý đào
tạo và giúp đỡ sinh viên trong quá trình học tập ngày càng nhiều Đại học Công Nghệ -
Đại học Quốc Gia Hà Nội là một trong những trường đi đầu trong việc áp dụng công
nghệ thông tin vào quá trình đào tạo Một loạt các hệ thống công nghệ thông tin trợ
giúp sinh viên trong việc học tập như: hệ thống đăng kí môn học, hệ thống quản lý đào
tạo, hệ thống quản lý lớp môn học, hệ thống quản lý sách thư viện, đã được xây
dựng, bên cạnh đó còn có một số trang web phục vụ cho việc tra cứu tài liệu do sinh
viên tự phát triển Tuy các hệ thống kể trên còn nhiều những bất cập nhưng chúng ta
không thể phủ nhận những lợi ích to lớn mà nó mang lại cho nhà trường và sinh viên
Nhận thấy lợi ích to lớn từ các hệ thống hỗ trợ học tập Khóa luận sẽ tham gia
vào việc phát triển hệ thống “ quản lý dự án trong trường đại học” Đây là một hệ
thống còn khá mới mẻ trong việc hỗ trợ sinh viên và giảng viên quản lý các công việc
trong các dự án
Nội dung khóa luận sẽ được tổ chức thành bốn chương với nội dung cụ thể của
mỗi chương được giới thiệu như dưới đây
Chương 1: Giới thiệu chung về mô hình MVC trong phát triển ứng dụng web,
một số Framework MVC phổ biến, so sánh các thành phần chính giữa các Framework
MVC và giới thiệu về bài toán xây dựng hệ thống quản lý dự án trong trường đại học
cùng với quy trình xây dựng
Chương 2: Giới thiệu về Ruby On Rails, là framework MVC được sử dụng
trong việc phát triển hệ thống quản lý dự án trong trường đại học Khóa luận giới thiệu
qua về các thành phần cơ bản của Rails và việc viết test với ứng dụng Rails
Chương 3: Phân tích và thiết kế hệ thống quản lý dự án trong trường đại học và
xây dựng cơ sở dữ liệu cho hệ thống, xây dựng bộ test case kiểm thử cho hệ thống
Trang 151.1.2 Cấu trúc của mô hình MVC
Model: Tầng Model xử lý các nghiệp vụ của ứng dụng và trực tiếp thao tác với
dữ liệu Trong ứng dụng web, tầng model thường được sử dụng để tương tác với các thành phần tương ứng với chúng trong cơ sở dữ liệu và kiểm tra tính hợp lệ của dữ liệu
View: Tầng view được dùng để hiển thị dữ liệu trong model thành các giao diện
tương tác với người dùng Trong mô hình MVC cho phát triển ứng dụng web các view thường sẽ là các file HTML được nhúng với code của ngôn ngữ server
Controller: Controller Controller tương tác với model và view Các request đến
từ trình duyệt sẽ được xử lý bởi controller, controller sẽ phân, xử lý request và có thể
sẽ tương tác với model để lấy dữ liệu sau đó trả về cho view để hiển thị thông tin
Hình 1.1 Mô hình MVC
Trang 1613
1.1.3 Ưu điểm và nhược điểm của mô hình MVC
Ưu điểm: áp dụng mô hình MVC giúp cho việc phát triển phần mềm chuyên nghiệp hơn, có thể phân chia công việc dễ dàng cho nhiều nhóm, giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp giúp phát hiện lỗi và dễ sửa lỗi
Nhược điểm: MVC chỉ thích hợp với dự án lớn còn đối với dự án nhỏ việc áp dụng mô hình MVC sẽ gây cồng kềnh tốn thời gian trong quá trình phát triển, chí phí cho việc phát triển cao
1.1.5 Giới thiệu về các Framework MVC trong phát triển ứng dụng web
1.1.5.1 Ruby on rails
Giới thiệu
Ruby on rails là một framework MVC được viết bằng ngôn ngữ Ruby, nó được tạo ra nhằm hỗ trợ các lập trình viên có thể phát triển ứng dụng web một cách nhanh nhất bằng cách sử dụng các qui ước triệt để và đảm nhận xử lý rất nhiều công việc như: việc tạo code, quản lý code, quản lý việc gửi email, Vì vậy các lập trình viên sẽ không cần quan tâm đến các công việc này
Ưu điểm và nhược điểm của Ruby on Rails
Ưu điểm: Rails giúp cho việc phát triển ứng dụng web trở nên nhanh chóng, hơn nữa những ứng dụng viết bằng rails thường có số lượng dòng code ngắn gọn, rõ ràng,
dễ hiểu giúp cho ứng dụng dễ bảo trì, rails được hỗ trợ bởi một hệ thống các thư việc rất lớn
Nhược điểm: Ứng dụng được phát triển bằng rails có tốc độ thực thi không quá nhanh, thậm trí còn nặng hơn nhiều so với các framework MVC khác như Nodejs, Yii, lavarel
1.1.5.2 Spring MVC
Giới thiệu
Spring MVC là một module con trong Spring framework, được phát triển dựa trên ngôn ngữ java và theo kiến trúc MVC, nó cung cấp các components có sẵn để sử dụng và phát triển ứng dụng web một cách nhanh chóng và linh hoạt
Ưu điểm và nhược điểm của Spring MVC
Trang 171.1.5.3 Django
Giới thiệu về Django
Django là một web framework rất mạnh được phát triển dựa trên ngôn ngữ lập trình python và theo mô hình MVC, nó được đưa vào sử dụng rộng rãi từ năm 2005, ban đầu là một framework hướng đối tượng cho một website của tờ báo ở Kansas Ngay lập tức framework này được phổ biến và phát triển rất mạnh Django rất thích hợp để xây dựng nên các trang web lớn Đó là lí do tại sao Django đang dần được phổ biến nhằm triển khai các dự án một cách nhanh chóng với những quy mô lớn
Ưu điểm và nhược điểm của Framework Django
Ưu điểm: Do được phát triển dựa trên ngôn ngữ Python nên Django có tốc độ sử
lý nhanh Django hỗ trợ bạn tạo trang admin tùy thuộc vào database, đây dường như là Framework duy nhất làm được điều này
Nhược điểm: Việc tiếp cận với Django tương đối khó do cộng đồng phát triển của framework này còn hạn chế hơn so với các framework PHP
1.1.5.4 Laravel
Giới thiệu về laravel
Laravel là một framework khá mới mẻ nhưng bù lại nó có tài liệu khá đầy đủ, rõ ràng, dễ hiểu và nhiều ưu điểm hấp dẫn Nếu bạn đã từng làm việc với các framework khác hoặc chỉ là người mới bắt đầu tìm hiểu php framework thì việc tiếp cận laravel framework không phải là vấn đề khó khăn gì
Laravel giúp bạn nhanh chóng tạo ra một trang web, giúp bạn tiết kiệm được nhiều thời gian và quan trọng là tạo cho bạn hứng thú hơn với công việc lập trình web Laravel đã làm rung chuyển tới giới lập trình PHP trên toàn thế giới bởi sự nhanh chóng, đơn giản, chặt chẽ, hiện nay nó đang là một framework được ưa chuộm và được sử dụng phổ biến nhất
Trang 1815
Ưu điểm và nhược điểm
Ưu điểm: Laravel có cộng đồng phát triển đông đảo, tài liệu rất đầy đủ và dễ đọc giúp cho việc tiếp cận framework trở nên dễ dàng hơn, các lệnh tương tác với cơ sở dữ liệu cực kì ngắn gọn và thân thiện, dễ dàng tích hợp các thư viện vào dự án
Nhược điểm: Laravel có số lượng module rất lớn dẫn đến tốc độ không được tối
ưu khi xây dựng những hệ thống nhỏ
1.1.5.5 Phalcon
Giới thiệu về phalcon
Phalcon là một framework mã nguồn mở, tuy là một framework hỗ trợ cho PHP nhưng nó lại được viết bằng ngôn ngữ C và biên dịch ra extension, phalcon rất linh hoạt và mềm dẻo nên chúng ta có thể dễ dàng tùy biến với hiệu năng thực thi rất nhanh
Ưu điểm và nhược điểm của Framework Phalcon
Ưu điểm: Phalcon là một thư viên có tính năng rất phong phú được viết bằng C biên dịch thành một PHP Extension Điều này giúp tăng tốc độ xử lý, giảm tối đa bộ nhớ tiêu thụ khi có nhiều truy cập đồng thời Phalcon dễ học, dễ lập trình, lập trình viên vẫn dùng ngôn ngữ lập trình PHP thông thường Những hàm trong thư viện Phalcon sẽ được tối ưu tốc độ
Nhược điểm: Phalcon không chạy được trên môi trường Shared Hosting PHP chưa hỗ trợ Websocket thực sự, mặc dù có tốc độ thực thi đáng kinh ngạc tuy nhiên phalcon lại có lượng thư viện hỗ trợ ít hơn so với Ruby on rails, Laravel và cộng đồng người phát triển không cao
Trang 1916
Ajax Prototye,
JQuery, JQuery UI, Plugins
Hỗ trợ nhiều
MVC
Framework
Active record, action pack
Mock object, unit tests
ACL-based, RBAC – based, plugin
Có
Template
JSP, commons Tiles, Velocity, Thymeleaf
Built – in, Jinja2, Mako, Cheetal
PHP – based, plugin
Có
Trang 2017
Caching
APC, redis, Memcache From validation
Bean
1.2 Bài toán quản lý dự án trong trường đại học
1.2.1 Hệ thống quản lý dự án trong trường đại học
1.2.1.1 Phát biểu bài toán
Hiện nay trong trường Đại học Công Nghệ - Đại học Quốc Gia Hà Nội việc sinh viên tham gia vào các dự án như nghiên cứu khoa học, khóa luận tốt nghiệp, đồ án tốt nghiệp hay chỉ đơn giản là tham gia làm bài tập lớn trên lớp, những công việc đòi sự tương tác giữa nhiều sinh viên và giảng viên trở nên rất phổ biến, tuy nhiên những công việc này lại đang gặp rất nhiều khó khăn như việc tương tác giữa các thành viên trong một dự án hay giữa giảng viên và sinh viên, việc quản lý các công việc và hỗ trợ các thành viên đạt kết quả không cao Vì vậy, hệ thống quản lý dự án trong trường học được triển khai để giải quyết những vấn đề trên, nhằm giúp cho việc quản lý các công việc trong dự án được dễ dàng, việc tương tác trao đổi , lưu trữ tài liệu đạt hiệu quả, giúp chất lượng đào tạo tăng cao
1.2.1.2 Chức năng chính của hệ thống
Hệ thống cho phép người dùng tạo dự án và thêm các thành viên vào trong dự
án hoặc mời thành viên chưa có trong hệ thống qua gmail
Xem thông tin về dự án đang tham gia, chủ dự án có thể cập nhật thông tin hoặc xóa dự án
Cho các thành viên tạo các công việc và quản lý các công việc (tạo mới , sửa, xóa, cập nhật)
Các thành viên có thể xem danh sách tất cả các công việc từ đó có thể dễ dàng quản lý các công việc
Lọc ra các công việc theo người thực hiện hoặc trạng thái của công việc đó
Lưu lại lịch sử người dùng khi một thành viên thực hiện chỉnh sửa , tạo mới hay xóa một công việc và tất cả thành viên có thể xem lịch sử đã được lưu lại
Trang 21 Lý do chọn framework ruby on rails để phát triển
Hiện nay có rất nhiều các Framework mạnh trong phát triển ứng dụng Web, tuy nhiên tôi lựa chọn Ruby on Rails cho việc phát triển hệ thống quản lý dự án trong trường đại học vì Rails là một Framework còn khá mới, mạnh mẽ với những ưu điểm như: Ruby on Rails sử dụng ngôn ngữ ruby là một ngôn ngữ với cú pháp trong sáng,
dễ đọc, dễ hiểu và là ngôn ngữ hướng đối tượng, việc phát triển ứng dụng với Rails rất nhanh chóng và ứng dụng được viết với số lượng dòng code ngắn gọn, rất dễ bảo trì,
hỗ trợ nhiều framework cho việc viết test như unit test, integration test, hệ thống phát triển bởi Rails sẽ đảm bảo về mặt chất lượng
Mô hình Agile trong phát triển phần mềm
Phương thức phát triển phần mềm Agile là một tập các phương thức phát triển lặp trong đó các yêu cầu và giải pháp được phát triển thông qua sự liên kết cộng tác giữa các nhóm tự quản và liên chức năng Agile là cách làm phần mềm linh hoạt để làm sao đưa sản phẩm đến tay người dùng càng nhanh càng tốt và được xem như là sự cải tiến so với những mô hình cũ như thác nước
Hệ thống “quản lý dự án trong trường đại học” sẽ được phát triển dựa trên phương thức phát triển phần mềm Agile, Giảng viên hướng dẫn khóa luận sẽ đóng vai trò là khách hàng và đưa ra các “user story” là những kịch bản người dùng mong muốn trong hệ thống, hệ thống sẽ được phát triển qua từng “user story” và dần hoàn thiện hệ thống
Công cụ quản lý công việc Trello
Trello là một công cụ để phối hợp công việc hiệu quả giúp cho mọi người trong đội
dự án có thể tương tác và quản lý các công việc trong dự án một cách hiệu quả, các
Trang 2219
thành viên chỉ cần nhìn qua là biết được có những đầu việc nào, ai đang làm gì, và làm đến giai đoạn nào Bạn có thể sử dụng trello một cách miễn phí cho đến khi cần những tích năng nâng cao và đặc biệt chỉ có bản trả tiền mới có thì bạn mới phải trả, trong dự
án này tôi sử trello để quản lý các kịch bản người dùng mong muốn trong hệ thống Trello có những thành phần cơ bản sau:
Card: là một thẻ thông tin có Title, Description dùng để lưu trữ công việc Mỗi
card sẽ có checklist để bạn chia những thông tin đầu việc nhỏ hơn Card có thể được comment, attach hình ảnh trên đó để dùng cho việc trao đổi giữa các thành viên
List: là một danh sách tổng hợp các card thuộc chung một tình trạng hoặc một
tính chất khác nhau Ví dụ: List Doing bao gồm những card đang được thực hiện List Done chứa những card đã hoàn thành
Board: là một bảng thường tương đương với một project hoặc một mảng công
việc Trong một board có thể có nhiều List để chia tình trạng của những đầu việc của project đó cho tiện theo dõi
Trang 2421
Chương 2: Framework Ruby On Rails
2.1 Ruby on rails
2.1.1 Giới thiệu về Ruby on rails
Ruby on Rails là một web framework được viết bằng ngôn ngữ Ruby và tất cả các ứng dụng trong Rails đều được viết bằng Ruby Ruby là ngôn ngữ được tác giả
Matz tạo ra năm 1993 ở Nhật Bản và được công bố năm 1995 [2] Từ đó đến nay nó đã
trở nên phổ biến và nổi tiếng về thiết kế rõ ràng, cú pháp đẹp như việc không sử dụng dấu chấm phẩy khi kết thúc câu lệnh hay dùng ngoặc để nhóm các khối lênh Rails có một thư viện chuẩn phong phú với một hệ thống quản lý các gói thư viện có tên là RubyGems Đến nay, Rails có một cộng đồng phát triển trên toàn thế giới liên tục cải tiến ngôn ngữ và hệ sinh thái lập trình cho nó
Nền tảng cho Ruby on Rails được bắt đầu xây dựng năm 2004 [2] Kể từ đó,
Ruby on Rails đã nhanh chóng phát triển thành một trong những framework dẫn đầu cho việc phát triển ứng dụng web Ruby on Rails sử dụng các qui ước triệt để và đảm nhận xử lý rất nhiều các công việc khiến người lập trình viên không phải bận tâm về
nó nữa như: việc quản lý email, ánh xạ các đối tượng, quản lý các tệp mã nguồn và cấu trúc thư mục, tạo code tự động, đây chính là đặc điểm nổi bật nhất của Ruby On Rails, điều này không chỉ giúp các lập trình viên viết code ít hơn, phát triển ứng dụng nhanh hơn mà còn làm ứng dụng dễ hiểu và dễ bảo trì
2.1.2.2 Các thành phần chính của Ruby On Rails
Tương ứng với những đặc điểm trên Ruby on Rails gồm các thành phần sau:
Action Mailer [3]: Module này chịu trách nhiệm chuyên cung cấp các dịch vụ
email, nó xử lý các email đến và cho phép tạo mới các email Module này có thể xử lý
từ những email text đơn giản đến các email có định dạng phức tạp Action mailer được
kế thừa từ Action Controller, nó cung cấp các phương thức để tạo email với các template cũng giống như Action View sử dụng nó để render các trang lên trình duyệt Action pack: Module này cung cấp các lớp ở tầng controller và view trong mô hình MVC Nó nhận request từ client và sau đó ánh xạ chúng đến các action tương ứng Những action được định nghĩa trong tầng controller và sau đó các action này sẽ render view hiển thị lên trình duyệt Action pack được chia thành ba module con bao gồm:
Trang 25để các controller khác có thể kế thừa từ nó Action Controller chứa các action
để điều khiển model và view, nó cũng quản lý các session người dùng, luồng chạy ứng dụng
Action View: Được gọi bởi Action Controller, sau khi được gọi Action View
sẽ render các view tương ứng 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
Active model: Thành phần định nghĩa interface giữa mô đun Action Pack và Active Record Giao diện Action Record có thể được dùng bên ngoài Rails, cung cấp các chức năng object relational mapping (ORM) ORM là một kỹ thuật lập trình giúp chuyển đổi dữ liệu giữa các thệ thống không tương thích được viết bởi các ngôn ngữ hướng đối tượng
Active Record: [4] đượ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 Trong Ruby on Rails mô đun Active Record cung cấp object relational mapping (ORM) đến các class Module này xây dựng nên tầng model, giúp kết nối các bảng database với các class tương ứng Rails cung cấp công cụ để thực thi chức năng thêm, sửa, xóa mà không phải cấu hình Thêm vào đó, nó cũng cung cấp các khả năng tìm kiếm thông minh và khả năng tạo ra các mối quan hệ hay các liên kết giữa các model Active record có những quy ước rất chặt chẽ bắt các lập trình viên phải tuân thủ theo như: phải đặt tên lớp, các bảng, các khóa chính và khóa ngoài như thế nào
Active Resource: [4]Module 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ạ model class đến các tài nguyên REST ở xa cũng giống như cách mà Active Record ánh xạ từ model class đến các bảng cơ sở dữ liệu
Nó cũng cung cấp các cơ chế proxy giữa Active Resource (client) và một RESTful
1 HTTP: Là một giao thức truyền tải siêu văn bản
Trang 2623
service Khi một có một request cần truy cập đến các tài nguyên ở xa, một REST XML được sinh ra và được truyền đi, sau đó kết quả sẽ được đưa sang các đối tượng Ruby RESTful Architecture: REST viết tắt của Representational State Transfer REST
là một sự thay thế cho web service, chứa SOAP và WSDL
Active Support: Là thành phần chứa các thư viện chuẩn của của Ruby, Active Support rất hữu ích cho việc phát triển ứng dụng vì nó bao gồm rất nhiều thư viện hỗ trợ cho việc lưu trữ, các thao tác sử lý với chuỗi hay thời gian
Railties: Đảm nhiệm việc kết nối tất cả các module ở trên với nhau, thêm vào đó
nó sử lý quá trình mồi cho ứng dụng, giao diện dòng lệnh, và cung cấp bộ sinh code của Rails
Hình 2.1: Kiến trúc ruby on rails
Trang 2724
2.1.2 Phát triển dự án với Ruby On Rails
2.1.2.1 Cài đặt môi trường phát triển
Hiện nay có thể cài đặt Ruby on Rails trên hầu hết các hệ điều hành phổ biến như Ubuntu, Window hay Osx, tuy nhiên chúng ta nên cài đặt môi trường phát triển trên Ubuntu hoặc Osx vì trên Window sẽ thường xuyên xảy ra lỗi cũng như các thư viện hỗ trợ ít hơn Khóa luận sẽ giới thiệu về việc cài đặt Ruby on Rails trên hệ điều hành Ubuntu
Cài đặt Ruby
Ruby là một ngôn ngữ lập trình xây dựng nên Ruby On Rails và toàn bộ ứng dụng khi xây dựng chúng ta sẽ phải sử dụng ruby nên việc cài đặt ruby là bắt buộc Hiện tại có rất nhiều phiên bản Ruby, phiên bản mới nhất là 2.3, ở đây chúng ta sẽ cài phiên bản 2.2.3
+ Cài đặt các gói phụ thuộc:
sudo apt-get update
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev
Bật terminal trên ubuntu và gõ đoạn lệnh trên để cài đặt các gói phụ thuộc
+ Cài đặt Ruby:
Cài đặt Ruby sử dụng rbenv
cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc exec $SHELL
git clone https://github.com/rbenv/rbenv-gem-rehash.git rehash
Trang 2825
Cũng giống như ruby, rails thường xuyên được cập nhật và phát triển nên đã có rất nhiều phiên bản đã được phát hành, trong bài viết này tôi sẽ cài đặt bản rails 4.2.4
là bản mới nhất cho đến thời điểm thực hiện bài viết này
Cài đặt javascript runtime cho Rails
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
Tiến hành cài đặt rails bằng lệnh:
gem install rails -v 4.2.4
Kiểm tra cài đặt bằng lệnh: rails -v
2.1.2.2 Ví dụ về một dự án Ruby on Rails
Để tạo một dự án mới chúng ta chạy lệnh sau:
rails new project_name
project_name: là tên của dự án
Chúng ta sẽ tạo một dự án với tên hello_rails với câu lệnh:
rails new hello_rails
Sau khi chạy lệnh thành công ta sẽ nhận được thông báo về các tệp tin và thư mục được tạo ra trong dự án
Cấu trúc thư mục dự án sau khi tạo:
Hình 2.2: Cấu trúc dự án Ruby On Rails
Trang 2926
+ Thư mục app [5]: Thư mục này chứ controller, models, views, helpers, mailers và
asessts cho ứng dụng Trong đó:
controllers: Chứa các tập tin controller dùng để điều hướng luồng chạy của ứng dụng
models: các tập tin models được dùng để tương tác với database trong ứng dụng hoặc dùng để mô phỏng một đối tượng mà không cần kết nối tới database
helpers: các tập tin helpers chứa các hàm và các lớp hỗ trợ được sử dụng bởi controllers, models hay views
views: các tập tin views được sử dụng bởi controller dùng để hiển thị nội dung của trang
mailers: bao gồm các template mẫu dùng để gửi email
assets: bao gồm các tập tin như ảnh, css, javascripts
+ Thư Mục bin: Thư mục này bao gồm các đoạn mã script để khởi động ứng dụng
Rails hoặc dùng để thiết lập hay deploy ứng dụng
+ Thư Mục config: Thư mục này dùng để cấu hình ứng dụng như cấu hình các thông
số của database, định nghĩa các routes
+ Thư Mục db: Thư mục này chứa các tập tin dùng để tạo cấu trúc schema cho
database và các tập tin migrations giúp xây dựng nên database của một dự án
+ Tập Tin Gemfile và Gemfile.lock: Tập tin Gemfile dùng để liệt kê những gem nào
dùng trong ứng dụng và Gemfile.lock dùng để ghi lại thông tin về quá trình cài đặt các gem
+ Thư Mục lib: Bao gồm các thư viện được dùng trong ứng dụng Thông thường các thư viện này được viết bởi chính những lập trình viên tham gia vào viết ứng dụng Các thư viện của bên thứ 3 thường không được đặt ở trong thư mục này mà sẽ để trong thư mục vendor mà tôi sẽ đề cập ở phần dưới đây
+ Thư Mục log: Chứa các bản ghi log là các thông tin trong quá trình cài đặt, khởi động, chạy hay ngừng ứng dụng
+ Thư Mục public: Nội dung của các tập tin đặt trong thư mục này sẽ có thể được tải trực tiếp về trình duyệt
+ Tập Tin Rakefile: Tập tin Rakefile được Rails sử dụng để tìm kiếm các tác vụ mà chúng có thể được thực thi trên cửa sổ dòng lệnh thông qua rake Bạn không nên định nghĩa trực tiếp các tác vụ này trong Rakefile mà việc định nghĩa các tác vụ này được
thực hiện thông qua các tập tin trong thư mục “lib/tasks"
Trang 3027
+ Tập Tin README.rdoc: Tập tin này chứa các thông tin tổng quan về ứng dụng như
mô tả ngắn gọn mục đích của ứng dụng, phiên bản ứng dụng, thông tin tác giả viết ứng dụng hay loại giấy phép phát hành ứng dụng
+ Thư Mục test: Thư mục này dùng để chứa các test case sử dụng trong ứng dụng bao
gồm unit tests, fixture tests và các loại test khác có trong Ruby on Rails
+ Thư Mục tmp: Lưu các tập tin tạm thời thường là các tập tin cache, pid hay session + Thư Mục vendor: Thư mục này chứa các thư viện của bên thứ ba được sử dụng trong ứng dụng
Chạy thử ứng dụng trên server:
rails server
Kết quả sẽ nhận được thông báo "starting in development on http://0.0.0.0:3000," có nghĩa app đang chạy ở cổng 3000 của máy, bạn có thể mở trình duyệt với địa chỉ http://localhost:3000 Tại đó sẽ có trang "Welcome aboard" của Rails
Hình 2.3: kết quả khi chạy ứng dụng hello_rails Bên trên là trang welcome abroad của rails do routes hiện tại đang điều hướng tới trang này, bây giờ chúng ta sẽ tạo một trang web chứa dòng chữ “ Hello Ruby On Rails” theo các bước sau:
+ Tạo controller có tên là : HomesController
rails generate controller Homes
Trang 3128
Sau khi chạy câu lệnh trên Rails sẽ tự động tạo ra những tập tin sau :
app/controllers/homes_controller.rb: file này chứa class HomesController
app/view/homes: Chứa những file giao diện cho controller homes hay (view) trong mô hình MVC
app/assets/javascripts/homes.coffee: Chứa mã javascript viết dưới dạng coffee script
app/assets/stylesheets/homes.scss: Chứa thuộc tính css cho các thẻ html trong view
+ Tạo một action có tên là index, chính là trang index của dự án sẽ hiển thị dòng chữ
“Hello Ruby On Rails” Ruby On Rails tuân theo chuẩn RESTfull nên thông thường
nó sẽ có các action chính là : index, show, create, update, destroy
Trang index này chỉ in ra thông báo nên trong controller sẽ không xử lý việc lấy dữ liệu và dịnh dạng dữ liệu cho view như thông thường
Hình 2.4: homes_controller.rb + Tạo view cho action index có tên “index.html.erb” đặt trong thư mục “view/homes” chứa nội dung là dòng chữ “Hello Ruby On Rails”
+ Sửa lại file routes.rb để trang chủ là trang index vừa được tạo
Hình 2.5: Kết quả khi chạy ứng dụng