XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VIỆC LÀM
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA HỆ THỐNG THÔNG TIN
---------------------∇---------------------
KHOÁ LUẬN TỐT NGHIỆP
XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM
VIỆC LÀM
Giảng viên hướng dẫn: TS.NGUYỄN ĐÌNH THUÂN
Sinh viên thực hiện:
NGUYỄN HỮU HỮU - MSSV :06520200
NGUYỄN TIẾN LONG - MSSV:06520268
Lớp : HTTT01
Khoá : 1 (2006-2011)
1
XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VIỆC LÀM
TP. Hồ Chí Minh, tháng 3 năm 2011
MỞ ĐẦU
Trong thời đại công nghệ phát triển như ngày nay, nhu cầu tìm việc trực tuyến trở là
một yêu cầu thiết yếu trong cuộc sống. Yêu cầu công việc và nguồn nhân lực là rất lớn. Do
đó xây một hệ thống xử lý trực tuyến nhanh, ổn định và dễ dàng cho Người dùng là một yêu
cầu gây khó khăn trong kỹ thuật phân tích và xử lý của website. Qua cách nhìn nhận đó,
nhóm tìm hiểu kỹ thuật mới xây dựng website nhằm đáp ứng tiêu chí trên.
Khóa luận này được chia làm 3 phần:
- Phần 1: Khảo sát thực tế, tìm hiểu nhu cầu người dùng.
- Phần 2: Phương pháp phân tích thiết kế và công nghệ nền tảng.
- Phần 3: Phân tích thiết kế hệ thống và hiện thực hệ thống.
- Phần 4: Hướng phát triển và kết luận
LỜI CẢM ƠN
2
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
NHẬN XÉT
(Của giảng viên phản biện)
4
XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VIỆC LÀM
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
cao các kỹ năng mà từ đó có thể tìm được công việc phù hợp hơn với nhu cầu thực tế.
1.2. Ý NGHĨA ĐỀ TÀI
Trước thực tế nhu cầu tìm kiếm việc làm cùng với sự phát triển của công nghệ thông tin
mạnh mẽ của Việt Nam, việc xây dựng một hệ thống tìm việc trực tuyến hiệu quả là một
công cụ hết sức cần thiết. Mặc dù có rất nhiều trang web đăng tuyển dụng và tìm việc nhanh
nhưng vẫn còn nhiều vấn đề về việc người tìm việc tạo hồ sơ như sau:
- Những nội dung nhập liệu quá nhiều.
- Nội dung nhập liệu quá rời rạc chưa hướng tới người dùng như là người dùng
đang ở tình trạng nào? Yêu cầu công việc gì? Và cần nhập nội dung gì?
Vì vậy, việc phân tích nội dung tạo hồ sơ cho người tìm việc là hết sức quan trọng. Việc
phân tích tình trạng người dùng, các dạng hồ sơ, nhóm thông tin cần điền vừa hướng đến
tiêu chí người tìm việc dễ dàng trong việc tạo hồ sơ cũng như các nhà tuyển dụng vừa ý khi
nhận những hồ sơ theo các chuẩn mà họ yêu cầu ứng trực tiếp do hệ thống hỗ trợ.
6
XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VIỆC LÀM
Cùng với sự tích hợp công nghệ mới, nhóm tìm hiểu và phân tích nhu cầu người dùng
dựa trên tiêu chí tốc độ xử lý nhanh và thao tác đơn giản giúp người dùng dễ dàng trong
việc tìm công việc phù hợp tạo và gửi hồ sơ ứng tuyển vừa ý nhà tuyển dụng.
Khóa luận hướng tới việc phân tích tiêu chí của người dùng, xây dựng công thông tin
điện tử dựa trên công nghệ … để cung cấp cho người tìm việc nói chung và các bạn sinh
viên nói riêng công cụ để tạo hồ sơ trực tuyến, là nơi các ứng viên tìm kiếm việc làm phù
hợp với khả năng. Bên cạnh đó nhà tuyển dụng và trung tâm đào tạo cũng có thể dễ dàng
đăng tin tuyển dụng hoặc tin đào tạo lên website.
Trong quá trình thực hiện khóa luận này nhóm đã áp dụng được những điều được học
trong nhà trường vào thực tế và cũng đã biết được thêm các công nghệ mã nguồn mở trên
nền ngôn ngữ JAVA như Java server pages framework, Spring framework, Hibernate
framework. Ngoài ra nhóm còn tìm hiểu qui trình phát triển phần mềm ICONIX áp dụng
khóa luận.
1.3. KHẢO SÁT THỰC TẾ
Hiện nay, nhu cầu tìm kiếm việc làm theo khả năng và nhu cầu tìm kiếm nguồn nhân lực
hợp với yêu cầu của khách hàng hay chưa.
- Bước 2: Phân tích và thiết kế sơ bộ:
• Robustness analysis(Phân tích sơ bộ): Vẽ ra các mô hình robustness(bức
tranh về các đối tượng trong usecase), vẽ lại luồng đi như trong đặc tả
usecase
9
XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VIỆC LÀM
• Cập nhật domain model: ở bước này chúng ta sẽ tìm các lớp còn thiếu ,
loại bỏ sự nhập nhằng trong việc đặt tên lớp, thêm thuộc tính và các
phương thức cho cho các lớp.
• Đặt tên tất cả chức năng logic phần mềm cần thiết để usecase hoạt động
• Viết lại bản nháp đặc tả usecase đầu tiên
- Bước 3 (Cột mốc 2) : Đánh giá lại khâu phân tích và thiết kế sơ bộ.
- Bước 4 : Thiết kế chi tiết
• Mô hình sequence: Dựa trên bản nháp đặc tả usecase đầu tiên vẽ ra các sơ
đồ trình tự. Mục tiêu của bước này là xác định ra các hành vi của các lớp.
• Cập nhật lại các mô hình domain trong khi đang vẽ sở đồ trình tự. Ở bước
này mô hình miền (domain model) gần như tiến sát đến mô hình lớp (class
diagram) vì chúng ta xác định được thêm các thuộc tính và các phương
thức ở bước này.
• Tinh chỉnh lại các mô hình tĩnh
- Bước 5 (Cột mốc 3) : Đánh giá lại khâu phân tích một cách kỹ lưỡng và chi tiết
trước khi đi vào hiện thực chương trình.
- Bước 6 : Hiện thực chương trình:
• Lập trình và kiểm thử tưng đơn vị nhỏ: Dựa vào các bản thiết kế ở các
bước trên tiến hành việc lập trình và kiểm thử từng đơn vị nhỏ(các hàm
trong các class).
• Tích hợp các chức năng lại với nhau và kiêm thử theo kịch bản và tình
huống như đặc tả usecase
• Xem lại sự tương đương giữa các đoạn mã và cập nhật lại các mô hình để
- Các đặc tả uscase bao quát được hết toàn bộ các bổi cảnh của usecase, và được cập
nhật lại sau bước vẽ robustness diagram và sequence diagram.
- Hướng đến việc thiết kế dự án theo hướng đối tượng từ các usecase.
- Là qui trình thực tế đã được kiểm chứng qua nhiều dự án lớn.
2.1.4. Áp dụng qui trình ICONIX vào khóa luận:
Qui trình ICONIX là một qui trình rất hay trong việc phát triển phần mềm, để
áp dụng được qui trình ICONIX một cách hiệu quả đòi hỏi nhiều kinh nghiệm làm
việc thực tế.
Trong quá trình làm khóa luận này nhóm đã tìm hiểu và vận dụng được những
kiến thức sau:
- Khâu phân tích yêu cầu.
- Khâu phân tích thiết kế sơ bộ.
- Thiết kế chi tiết.
11
XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VIỆC LÀM
2.2. CÔNG NGHỆ NỀN TẢNG:
Trong mục này sẽ giới thiệu về 3 công nghệ được áp dụng vào khóa luận đó là:
Spring, JSF, Hibernate.
2.2.1. Spring framework:
2.2.1.1. Tổng quan về spring:
Spring framework là một bộ khung hỗ trợ lập trình ứng dụng bằng ngôn ngữ
JAVA. Spring được phát triển bởi Rod Johnson và được giới thiệu lần đầu tiên
trong cuốn Expert One-on-One J2EE Design and Development năm 2002.
2.2.1.2. Các thành phần chính của Spring:
Hình 2.2.1.2a. Các Thành Phần Của Spring
Spring Core Container: Core container cung cấp chức năng cơ bản của
Spring. Thành phần chính của nó là Bean Factory, một cài đặt của Factory
pattern. BeanFactory áp dụng IoC pattern để tách bạch và giảm sự phụ
thuộc giữa các thành phần của ứng dụng.
Spring Context/Application Context: Spring context là một file cấu
SQL Maps.
Spring Web module: Nằm trên application context module, cung cấp các
ngữ cảnh cho các ứng dụng web, hỗ trợ tích hợp với các bộ khung làm
13
XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VIỆC LÀM
việc nổi tiếng khác như Struts, JSF và Webwork… Web module cũng làm
giảm bớt các công việc điều khiển nhiều request và gắn các tham số của
request vào các đối tượng domain.
Spring MVC Framework: MVC Framework thì cài đặt đầy đủ đặc tính
của MVC pattern để xây dựng các ứng dụng Web. MVC framework thì
cấu hình thông qua giao diện và chứa được một số kỹ thuật view bao
gồm: JSP, Velocity, Tiles và generation of PDF và Excel file.
2.2.1.3. Trình bày cơ chế đảo ngược kiểm soát (Inversion of Control) và tiêm
sự phụ thuộc (Dependence Injection)
Hình 2.2.1.3a. Tổng quan về Spring IOC
14
XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VIỆC LÀM
- Cơ chế Inversion of Control dịch ra là cơ chế đảo ngược sự kiểm soát,
nhằm giảm tải mức độ phụ thuộc giữa các đối tượng. Với sự hỗ trợ của cơ
chế đảo ngược sự kiểm soát này chúng ta không cần phải tạo đối tượng
ngay trong mã nguồn mà mô tả chúng sẽ được tạo ra thế nào, hơn thế nữa,
chúng ta không cần không cần phải kết nối các thành phần(components)
và các dịch vụ(services) một cách trực tiếp mà chỉ cần mô tả thành phần
nào cần dịch vụ nào trong một tập tin cấu hình.
- Để hiểu rõ hơn ta đi vào ví dụ sau:
Ví dụ này sẽ có một lớp là Speaker(hiểu nôm na là cái loa) và có một phương thức là
sayHello().
Hình 2.2.1.3b.
Cài đặt một hàm main ngay trong lớp để test cho nhanh
15
Ta thêm vào lớp Speaker thêm một thuộc tính gọi là translator
Hình 2.2.1.3e.
Tiếp đến viết hàm main để chạy thử. Trong hàm main này không dùng Spring để tạo
đối tượng nữa mà dùng theo cách truyền thống như sau để so sánh sự khác biệt:
17
XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VIỆC LÀM
Hình 2.2.1.3f.
Chạy thử sẽ in ra câu chào bằng tiếng Anh. Nếu không thích tiếng anh ta có thể in ra
câu chào bằng tiếng Việt bằng cách viết tiếp một class VietnameseTranslator như sau:
Hình 2.2.1.3g.
Để in ra đuợc tiếng Việt ta phải chỉnh lại hàm main một chút. Thay vì viết:
Translator translator = new EnglishTranslator();
Ta viết:
Translator translator = new VietnameseTranslator();
Như vậy rõ ràng sự bất tiện xuất hiện mỗi khi ta muốn thay đổi qua lại giữa tiếng
Anh và tiếng Việt. Sự phụ thuộc giữa đối tượng thuộc lớp Speaker và Translator được giải
quyết trong chương trình nghĩa là khi nào muốn tiếng Việt thì ta chỉnh lại đoạn code một ít.
Sự điều khiển (control) phụ thuộc (dependency) giữa các đối tượng do chương trình đảm
trách. Nó là cách thông thường ta vẫn làm. Gọi là sự điều khiển bình thường.
Bây giờ ta sửa lại hàm main để sử dụng Spring:
18
XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VIỆC LÀM
Hình 2.2.1.3h.
Ta thấy hàm main bây giờ không dính dáng gì đến Vietnamese và English
nữa.
Sửa lại file beans.xml
Hình 2.2.1.3i.
File beans.xml bây giờ đảm nhận việc lắp ráp EnglishTranslator hoặc là
VietnameseTranslator. Sự điều khiển (control) đã được đảo ngược (inversion) sang cho
BeanFactory đảm trách. Hay nói cách khác Spring đã tiêm đối tượng EnglishTranslator
component
Backing beans: Các Java Bean xác định tập hợp các giá trị từ các UI
component và bổ sung các phương thức lắng nghe cho các sự kiện(event listener).
Chúng cũng có thể nắm giữ các tham chiếu đến các UI component.
Converter: Chuyển đổi một giá trị của component thành một chuỗi để hiển
thị. Một UI component có thể được tập hợp với một converter duy nhất.
20
XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VIỆC LÀM
Event/listener: JSF sử dụng mô hình event/listener JavaBeans (cũng được
sử dụng cho Swing). UI component (và những đối tượng khác) tạo ra các event, và
các listener có thể đăng ký để xử lý các sự kiện. Các backing bean sẽ hiện thực các
phương án để xử lý các sự kiện phát ra từ các UI component.
Messages: Thông tin hiển thị cho người dùng. Chỉ bất kỳ thành phần ứng
dụng trong (backing beans, validators, converter …) có thể tạo ra thông tin hoặc
thông điệp lỗi nhằm hiển thị cho Người dùng.
Navigation: Khả năng định vị và điều phối từ trang này đến trang khác. JSF
có một hệ thống định vị mạnh mẽ tích hợp với những event listeners(bộ lắng nghe sự
kiện).
2.2.2.3. Vòng đời của việc xử lý request: gồm 6 bước
Hình 2.2.2.3a.
Bước 1: Restore View: Hiển thị thay thế tất cả các component tạo nên một
trang cụ thể. Nó có thể lưu trữ trên client (thông thường trong một field ẩn trên trình
duyệt) hoặc trên server (thông thường trong session)
Bước 2: Apply Request Values: Mỗi UI component chấp nhận dữ liệu nhập
có một giá trị được submit thay thế giá trị dữ liệu gốc từ user. Trong suốt bước này,
21
XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VIỆC LÀM
framework ấn định giá trị được submit dựa trên tham số gởi đi trong request. Quá
trình này gọi là decoding.
Bước 3: Process Validation: trong bước này, JSF đặt cây component và hỏi
ánh xạ và xây dựng các bảng để lưu trữ và ánh xạ các điều kiện sang các câu truy
vấn. Công việc này phải lặp đi lặp lại khiến lập trình viên thấy nhàm chán và việc
truy cập không được hoàn toàn linh hoạt, hơn nữa không mấy ai giỏi cả về lập
trình lẫn quản trị CSDL. Vì thế Hibernate framework ra đời nhằm giúp gắn kết
việc lập trình hướng đối tượng và CSDL quan hệ. Đối với người lập trình thì mọi
câu truy vấn đều có thể thực hiện trên đối tượng và họ gần như trong suốt đối với
việc lưu trữ CSDL như thế nào. Còn với người quản trị CSDL thì họ cũng chỉ cần
quan tâm đến việc tối ưu hóa CSDL của mình.
Hibernate là một bộ khung(framework) mã nguồn mở ánh xạ giữa đối
tượng và các mối quan hệ của các đối tượng dựa trên mối quan hệ các bảng của
hệ cơ sở dữ liệu quan hệ. Hibernate giúp cho các lập trình viên hạn chế việc phụ
thuộc quá nhiều vào các JDBC API. Hibernate hỗ trợ tất cả các hệ cơ sở dữ liệu
lớn. Đặc biệt HQL (Hibernate Query Language) được thiết kế như là một mở
rộng cho SQL, cung cấp một cầu nối giữa đối tượng và các mối quan hệ giữa các
đối tượng lại với nhau. Hibernate cung cấp các cơ chế truy vấn, cập nhật dữ liệu,
quản lý giao tác, khai báo các câu lệnh truy vấn và định nghĩa các mối quan hệ
giữa các thực thể.
2.2.3.2. Vòng đời của đối tượng trong Hibernate:
23
XÂY DỰNG WEBSITE HỖ TRỢ TÌM KIẾM VIỆC LÀM
Hình 2.2.3.2a.
Dựa vào hình trên ta có thể thấy được trạng thái của các đối tượng có thể
được chuyển đổi từ trạng thái transient sang trạng thái persistent và từ trạng thái
persistent sang trạng thái detached. Dưới đây là các chú giải về các trạng thái của
đối tượng trong hibernate và các phương thức tương ứng.
Trong Hibernate một đối tượng có thể có 3 trạng thái:
- Transient: Khi một đối tượng được khởi tạo thì nó không được lưu trữ
ngay lập tức vào cơ sở dữ liệu mà nó được lưu tạm trên bộ nhớ. Đối tượng
này không có quan hệ với session hiện tại của Hibernate,ta có thể hiểu
nôm na là đối tượng này chưa liên quan đến dòng nào trong cơ sở dữ liệu
về gì cả.
- saveOrUpdate(): nếu là đối tượng mới thì lưu xuống db, nếu không thì
update xuống cơ sở dữ liệu, cái này sẽ chọn ra để kiểm tra trước khi save
hoặc update.
- merge(): kiểm tra xem có đối tương nào với mã số(id) như thế tồn tại
trong session không, nếu có thì update vào đối tượng đã tồn tại đó, nếu
không thì tạo mới một đối tượng và save xuống.
- load(): dùng để load một đối tượng từ database lên, nó sẽ có trạng thái
persistent, ném ra ngoại lệ(throw exception) nếu mã đối tượng(id) không
tồn tại.
- get(): giống load(), trả về null nếu không tồn tại.
- refresh(): làm tươi mới(refresh) một đối tượng đang ở trạng thái
persistent.
- delete(): load đối tượng lên và xoá nó đi, nếu không muốn load lên thì
dùng session.createQuery(“delete from user where”).executeUpdate().
- evict(): tách một đối tượng ra khỏi session, biến nó từ trạng thái persistent
thành transient.
- isDirty(): Các dirty objects là những đối tượng bị thay đổi nhưng chưa
được đồng bộ hóa với cơ sở dữ liệu. Hibernate cho phép Người dùng có
thể thiết lập cơ chế này bằng cách thêm thuộc tính dynamic-update =
“true” trong lớp ánh xạ(mapping class), với cách này hibernate sẽ tự động
sinh ra các đoạn mã SQL để chỉ cập nhật trường nào bị thay đổi. Hàm
isDirty() kiểm tra xem session có đồng bộ hóa với cơ sở dữ liệu hay
không.
25