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

phân tích thiết kế và công nghệ nền tảng

140 1K 14
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 đề Phân Tích Thiết Kế Và Công Nghệ Nền Tảng
Tác giả Nguyễn Hữu Hữu, Nguyễn Tiến Long
Người hướng dẫn TS. Nguyễn Đình Thuân
Trường học Đại Học Quốc Gia TP.Hồ Chí Minh
Chuyên ngành Công Nghệ Thông Tin
Thể loại Khóa luận
Thành phố Hồ Chí Minh
Định dạng
Số trang 140
Dung lượng 5,27 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

phân tích thiết kế và công nghệ nền tảng

Trang 1

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 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, phân tích và quyết định xây dựng một trang web (nền tảng phát triển cổng thông tin điện tử) dựa trên kỹ thuật mới để vừa đáp ứng được nhu cầu việc làm lại vừa đáp ứng được xu hướng thời đại công nghệ

Khóa luận này được chia làm 4 phần:

- Phần 1: Khảo sát thực tế, tìm hiểu nhu cầu người dùng về việc tìm việc hiện nay

- 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

Trang 2

LỜI CẢM ƠN

Trước tiên chúng em xin gửi lời cảm ơn chân thành tới TS.Nguyễn Đình Thuân

đã dành thời gian để hướng dẫn chúng em hoàn thành khóa luận tốt nghiệp này Ngoài ra chúng em cũng gửi lời cảm ơn tới các thầy cô khoa hệ thống thông tin thuộc trường đại học công nghệ thông tin - đại học quốc gia TP.Hồ Chí Minh đã rất tận tâm hướng dẫn việc học tập của chúng em và các bạn sinh viên khác trong suốt những năm tháng học tập tại trường Đồng thời lời cảm ơn này cũng xin dành cho anh Nguyễn Quan Thái đã góp ý và nhiệt tình cung cấp dữ liệu cho nhóm chúng em Cuối cùng chúng em xin cảm ơn cha mẹ là những người sinh ra và dưỡng dục chúng em tới ngày hôm nay Chúng em xin dành thành quả của khóa luận này để tặng những người mà chúng em tri ân

Do kiến thức và thời gian có hạn nên khóa luận này chắc chắn không tránh khỏi thiếu sót, mong các thầy cô chân thành góp ý

Sinh viên

Nguyễn Hữu HữuNguyễn Tiến Long

Trang 3

NHẬN XÉT (Của giảng viên hướng dẫn)

NHẬN XÉT

Trang 4

(Của giảng viên phản biện)

MỤC LỤC

Trang 6

DANH MỤC SƠ ĐỒ, HÌNH

Trang 8

CHƯƠNG 1 : GIỚI THIỆU KHÓA LUẬN

1.1 TỔNG QUAN VỀ KHÓA LUẬN

Hệ thống hiện thực trong khóa luận được phát triển theo qui trình ICONIX cùng với

sự phân tích tổng thể nhu cầu về tìm kiếm việc làm hiện nay

Hệ thống phục vụ cho đối tượng chính yếu là sinh viên và các doanh nghiệp, là cầu nối giữa sinh viên và các doanh nghiệp

Ngoài ra hệ thống còn cho phép các trung tâm đào tạo đăng các tin tức đào tạo, các khóa huấn luyện, qua đó người tìm việc có thể tìm được các khóa đào tạo để rèn luyện và nâng 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 KHÓA LUẬN

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ư:

- 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 thiết nhập nội dung gì cho

hồ sơ của họ?

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 Cùng với vấn đề đó, việc phân tích trạng thái 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 trực tuyến qua chức năng do hệ thống hỗ trợ

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, 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 nhu cầu của người dùng, xây dựng cổng thông tin điện tử để 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ụ

Trang 9

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 để tìm kiếm nhân viên cho công ty mình.

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 Faces 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

vào việc hiện thực 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 gặp nhiều khó khăn khiến các nhà tuyển dụng khó tìm được nhân viên phù hợp cũng như nhân viên không tìm được vị trí công việc phù hợp

Thực tế hiện nay có rất nhiều website tìm việc và tuyển dụng rất hiệu quả như là VietNamWork.com, Timviecnhanh.com, … giúp người tìm việc tìm thấy những công việc rất dễ dàng nhưng ở khâu tạo hồ sơ vẫn chưa thỏa mãn được nhu cầu của người dùng như là

ở bước nhập liệu bị ràng buộc quá nhiều thông tin, nội dung thông tin chưa được gom thành các nhóm thông tin có liên quan với nhau …

Hệ thống hiện thực trong khóa luận này nhằm đáp ứng nhu cầu trên như:

- Giúp người tìm việc tạo hồ sơ dễ dàng và thuận lợi trong việc gửi hồ sơ đến các nhà tuyển dụng Bên cạnh đó còn giúp họ tìm được những thông tin đào tạo mới của các trung tâm đào tạo

- Giúp nhà tuyển dụng đăng tuyển dễ dàng và theo những nhóm thông tin mà nhà tuyển dụng mong muốn

- Giúp trung tâm đào tạo đăng khóa học, quản lý các khóa học đã đăng, gửi thông tin khóa học đến các thành viên đã đăng kí nhận tin khi có khóa học mới

1.4 GIỚI HẠN KHÓA LUẬN

Khóa luận có hướng tìm hiểu sâu về framework vào việc xây dựng hệ thống Song song với nội dung đó, nhóm cũng đã phân tích về các đặc điểm về nhu cầu việc làm hiện nay để xây dựng chức năng chính cho hệ thống

Trang 10

Nội dung Trong khóa luận này tập trung vào hiện thực các chức năng của hệ thống như sau:

- Đối với người tìm việc:

o Tìm việc dễ dàng.

o Giúp người tìm việc tạo được hồ sơ đầy đủ nhất.

o Nội dung trong hồ sơ được gom nhóm một cách súc tích.

- Đối với nhà tuyển dụng:

o Dễ dàng đăng tin tuyển dụng tìm nhân viên cho công ty.

o Vừa ý trong việc nhận hồ sơ trực tuyến.

- Đối với trung tâm đào tạo

o Đăng tin đào tạo chiêu gọi học viên.

o Quản lý danh sách ứng viên trực tuyến

Trang 11

CHƯƠNG 2: PHƯƠNG PHÁP PHÂN TÍCH THIẾT KẾ VÀ CÔNG NGHỆ

NỀN TẢNG

2.1 PHƯƠNG PHÁP PHÂN TÍCH THIẾT KẾ

2.1.1 Giới thiệu qui trình phát triển phần mềm ICONIX:

Theo lý thuyết, việc tuân thủ từng khía cạnh của phương pháp UML (phương pháp

mô hình hóa hướng đối tượng) rất có ích cho các giai đoạn trong qui trình phát triển phần

mềm Nhưng trong thực tế, để hoàn thiện đầy đủ các mô hình theo phương pháp UML đưa

ra mất rất nhiều thời gian cho việc modeling (mô hình hóa), analysis (phân tích ), và thiết

kế Trong các dự án thực tế luôn có áp lực làm sao để nhanh chóng bước vào giai đoạn

coding (giai đoạn hiện thực chương trình) một cách nhanh nhất và tiến độ các dự án phần

mềm có xu hướng được đánh giá bằng số lượng mã nguồn chương trình Qui trình ICONIX

là một cách tiếp cận hợp lý tập trung vào giữa giai đoạn đặc tả các usecase (trường hợp sử

dụng) và giai đoạn coding (hiện thực chương trình), nó nhấn mạnh những việc cần và nên

làm vào trong thời điểm bắt đẩu của một khâu trong qui trình phát triển phần mềm

2.1.2 Qui trình ICONIX

Mô hình qui trình (Hình 2.1.) với các bước qui trình ICONIX được thực hiện như sau:

- Phân tích yêu cầu:

o Yêu cầu chức năng: Định nghĩa ra các chức năng hệ thống sẽ làm

o Domain modeling (mô hình hóa phạm vi): Hiểu được không gian vấn đề

và các thuật ngữ nhập nhằng trong khâu phân tích giữa khách hàng và người phân tích yêu cầu, xác định các đối tượng sẽ tham gia vào hệ thống

ở mức quan niệm

Trang 12

Hình 2.1. Mô hình qui trình ICONIX

o Xác định hành vi của yêu cầu: Định ra hệ thống và người dùng sẽ tương

tác thế nào dựa vào các bản GUI prototype (phác thảo giao diện) và xác

định tất cả các trường hợp sẽ hiện thực Ở bước này, không yêu cầu phải

xác định đầy đủ hết tất cả các usecase (trường hợp sử dụng) Trong các

bước sau sẽ giúp xác định thêm các trường hợp sử dụng mà chưa xác định được ở bước này

o Milestone 1 (cột mốc thứ nhất): Xem xét lại các usecase (trường hợp sử

dụng) và domain model (mô hình lĩnh vực) có nhất quán với nhau so với

các yêu cầu chức năng của khách hàng hay chưa

- Phân tích và thiết kế sơ bộ:

o Viết đặc tả usecase bao gồm: luồng đi cơ bản mô tả bối cảnh chính và các

luồng đi khác thể hiện các tình huống ít khi xảy ra (các tình huống xảy ra lỗi, các trường hợp ngoại lệ … )

o Robustness analysis (phân tích sự bền vững và hiệu năng của hệ thống ):

Trang 13

của hệ thống - bức tranh về các đối tượng trong usecase), vẽ lại luồng đi

như trong đặc tả usecase

o Cập nhật domain model (mô hình phạm vi hay mô hình miền): bước này

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

o Đặt tên tất cả chức năng logic phần mềm cần thiết để usecase hoạt động.

o Viết lại bản nháp đặc tả usecase trước đó.

- Milestone 2 (cột mốc 2): Đánh giá lại khâu phân tích và thiết kế sơ bộ.

- Thiết kế chi tiết:

o Mô hình sequence (tuần tự): 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ác thông tin trao đổi giữa các đối tượng với nhau

o Cập nhật lại các mô hình domain (mô hình miền) trong khi đang vẽ sơ đồ

trình tự Ở bước này mô hình domain gần như tiến sát đến class diagram

(mô hình lớp) 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

o Tinh chỉnh lại các static model (mô hình tĩnh), các mô hình này thể hiện

kiến trúc của hệ thống ví dụ như mô hình miền, mô hình lớp

- Milestone 3 (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

- Hiện thực chương trình:

o 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)

o 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

o 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 để

chuẩn bị cho khâu tiếp theo của việc phát triển hệ thống

Trang 14

2.1.3 Điểm khác biệt giữa qui trình ICONIX và các qui trình khác:

Qui trình ICONIX đưa ra cách để làm sao từ bước đặc tả usecase đến bước hiện thực chương trình một cách nhanh và hiệu quả nhất, giảm tải một số khâu chiếm quá nhiều thời

gian trong các qui trình lớn khác, ví dụ như qui trình RUP thường xảy ra tình trạng analysis

paralysis (tình trạng quá tải trong việc phân tích hay suy nghĩ khiến cho tiến trình phát triển phần mềm bị ngưng trệ dẫn đến không đưa ra được một quyết định hay bất kì hành động nào)

Việc đưa thêm lược đồ robustness (robustness diagram) giúp cho việc vẽ các sequence diagram (lược đồ tuần tự) và các class diagram dễ dàng hơn Lược đồ robustness

là cầu nối giữa các bản đặc tả usecase và việc vẽ các lược đồ tuần tự, giúp cho người thiết

kế tách bạch rõ ràng các hành vi của hệ thống, hạn chế sự nhập nhằng và thiếu sót khi vẽ lược đồ tuần tự, bởi vì khi vẽ các robustness diagram chúng ta sẽ khám phá ra các chức năng, hành vi ẩn không nhìn thấy được lúc viết đặc tả usecase Nhờ đó mà lược đồ tuần tự khi vẽ sẽ sát với yêu cầu thực tế của khách hàng hơn

Đưa ra domain modeling: đây là mô hình tiền thân của class diagram Mô hình này

được đưa ra trước tiên nhằm đưa ra một từ điển thuật ngữ sử dụng trong dự án Mục đích là làm cho mọi người hiểu rõ hơn về không gian của dự án bằng các thuật ngữ rõ ràng Mô hình này giúp xác định phạm vi và các hình thức – nền tảng của việc xây dựng các trường hợp sử dụng Mô hình này cũng giúp cho việc trao đổi giữa các thành viên trong dự án được thuận tiện và dễ hiểu hơn dựa vào bảng các thuật ngữ được đưa ra

Bản đặc tả usecase được cập nhật dần theo từng cột mốc của qui trình phát triển, các qui trình khác (như RUP) thường yêu cầu bản đặc tả usecase chi tiết và bao quát được hết

các luồng đi khác của usecase tại một khâu trong qui trình

2.1.4 Giải thích lý do chọn qui trình ICONIX

Việc chọn qui trình ICONIX có các lý do sau:

- Chỉ cần sử dụng một tập con các lược đồ lõi của UML: dùng 4 trong 14 lược đồ của UML

- Qui trình này dễ dàng được theo dõi ngay từ bước đầu tiên của việc phát triển dự án

Trang 15

- 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.5 Á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

2.2.1.1 Các thành phần chính của Spring:

Spring Framework bao gồm nhiều chức năng được tổ chức thành các module nhỏ Những module này lại được gom thành các nhóm sau: Spring Core Container, Spring Context/Application Context, Spring AOP, Spring DAO, Spring ORM, Spring Web, Spring

MVC Framework Các nhóm đó được tổ chức và sắp xếp như Hình 2.2 dưới đây.

Trang 16

Hình 2.2. Các thành phần của Spring

Spring Core Container: Core container là 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 (Factory pattern là mẫu

thiết kế dùng một lớp trung gian được để tạo ra các đối tượng khi có yêu cầu từ một lớp, thay vì lớp cần đối tượng phải tự tạo mới đối tượng bằng toán tử new) Nhiệm vụ của

BeanFactory là tạo và phân phát các đối tượng, BeanFactory biết về nhiều đối tượng trong ứng dụng, nó có thể tạo ra mối kết hợp giữa các đối tượng khi chúng được khởi tạo 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 tập tin cấu hình để

cung cấp thông tin ngữ cảnh của Spring Spring context cung cấp các dịch vụ cấp cao như truy cập JNDI, tích hợp EJB, e-mail, internalization, validation, và scheduling functionality

Spring AOP (Aspect-Oriented):

Lập trình hướng khía cạnh (aspect oriented programing) là một sự bổ sung thêm

cho lập trình hướng đối tượng, giúp cho các lập trình viên tập trung vào phần xử

lý nghiệp vụ hơn thay vì phải lặp đi lặp lại các đoạn mã cùng thực hiện một chức

năng nào đó nhiều lần, ví dụ như: ghi nhật ký (logging), thực thi các giao tác (transaction).

Trang 17

 Spring AOP module tích hợp chức năng lập trình hướng khía cạnh vào Spring

framework thông qua cấu hình của nó Spring AOP module cung cấp các dịch vụ quản lý giao tác cho các đối tượng trong bất kỳ ứng dụng nào sử dụng Spring

Với Spring AOP chúng ta có thể tích hợp declarative transaction management

vào trong ứng dụng mà không cần dựa vào EJB component Spring AOP module cũng đưa lập trình metadata vào trong Spring Sử dụng cái này, chúng ta có thể thêm ký pháp (annotation) vào mã trình (source code) để hướng dẫn Spring, nơi

và làm thế nào để liên hệ với các khía cạnh (aspects).

Spring DAO: Tầng JDBC và DAO đưa ra một cây phân cấp các ngoại lệ (exception)

để quản lý kết nối đến cơ sở dữ liệu, kiểm soát ngoại lệ và thông báo lỗi được ném ra bởi

các nhà cung cấp cơ sở dữ liệu Tầng ngoại lệ (exception) đơn giản là kiểm soát lỗi và giảm

khối lượng mã nguồn mà chúng ta cần viết như mở và đóng kết nối Module này cũng cung

cấp các dịch vụ quản lý giao dịch cho các đối tượng trong ứng dụng Spring.

Spring ORM: Spring có thể tích hợp với một vài ORM framework để cung cấp các

công cụ ánh xạ mối quan hệ giữa các bảng trong cơ sở dữ liệu thành các đối tượng có quan

hệ với nhau bao gồm: JDO, Hibernate, OJB và iBatis 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 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 được cài đặt đầy đủ đặc tính của

MVC pattern để xây dựng các ứng dụng Web MVC framework được 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

Trang 18

2.2.1.2 Cơ chế đảo ngược kiểm soát và thêm sự phụ thuộc

(Inversion of Control and Dependence Injection)

Cơ chế Inversion of Control (Hình 2.4.) 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 các lập trình viên 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, 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 Dưới đây là hình mô tả về cơ chế IOC

Hình 2.4. Spring IOC

Ví dụ dưới đây trình bày rõ hơn vấn đề được nêu ra ở trên

Ví dụ này là một lớp là Speaker Lớp này có một phương thức là sayHello() được trình bày theo Hình 2.5

Trang 19

import java.io.FileInputStream;

import java.io.InputStream;

import org.springframework.beans.factory.BeanFactory;

import org.springframework.beans.factory.xml.XmlBeanFactory;

public class Speaker{

public void sayHello(){

System.out.println("Hello Spring");

} }

Hình 2.5. Lớp speaker

Cài đặt một hàm main ngay trong lớp để gọi lớp speaker (Hình 2.6.)

public static void main( String args[]) throws Exception{

InputStream is = new FileInputStream("beans.xml");

BeanFactory factory = new XmlBeanFactory(is);

Speaker speaker = (Speaker)factory.getBean("Speaker");

speaker.sayHello();

}

Hình 2.6. Hàm main

Trong hàm main bên trên truy cập đến một tập tin tên là beans.xml Tập tin này rất

quan trọng đối với các ứng dụng chạy trên Spring Nó chứa các thông tin cấu hình của các

bean được dùng trong ứng dụng Với ví dụ này thì ta có nội dung tập tin beans.xml (Hình

2.7.)

Bây giờ chạy hàm main bên trên thì dòng chữ Hello Spring sẽ được in ra.

Ví dụ đơn giản trên trình bày cách đơn giản để sử dụng spring Như đã thấy trong

hàm main, việc khởi tạo đối tượng Speaker từ lớp Speaker không làm theo cách truyền

thống nghĩa là: Speaker speaker = new Speaker() Nhưng thay vào đó, speaker được tạo thành với đoạn mã: Speaker speaker = (Speaker)factory.getBean(“Speaker”);

Trang 20

Trong đó, factory là một đối tượng của lớp BeanFactory (Spring có hơn một ngàn

class và interface như vậy) có tác dụng như một nhà máy tạo ra các đối tượng khi người

dùng đưa các yêu cầu vào Ở trường hợp này, người dùng đã yêu cầu factory tạo ra 1 đối tượng từ mẫu có tên là Speaker.

Ví dụ trên chỉ ra rằng thay vì phải tạo đối tượng trong hàm main thì lại tạo bằng cách

của Spring, tuy nhiên vẫn chưa thấy rõ lắm sự khác biệt Để hiểu rõ hơn xét ví dụ mở rộng thêm như sau:

Bây giờ, giả sử các cái loa trước khi sayHello thì cần phải đi qua một bộ phiên dịch Translator Ta sẽ viết lớp Translator có một phương thức traslate in ra dòng chữ Hello Để lớp này có thể in ra được nhiều thứ tiếng ta sẽ viết dưới dạng 1 interface với đoạn mã như sau: public interface Translator { public void translate(); }

Sau đó viết lớp EnglishTranslator để hiện thực interface này (Hình 2.8.).

Kế tiếp thêm vào lớp Speaker thêm một thuộc tính gọi là translator (Hình 2.9.).

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 (Hình 2.10.) để so sánh sự khác biệt

Chạy thử sẽ in ra câu chào bằng tiếng Anh Nếu không thích tiếng Anh 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 (Hình 2.11.).

Trang 21

public class EnglishTranslator implements Translator{

public void translate(){

public class Speaker{

private Translator translator;

public Speaker(Translator translator) {

public static void main( String args[]) throws Exception{

Translator translator = new EnglishTranslator();

Speaker speaker = new Speaker (translator);

speaker.sayHello();

}

Hình 2.10. Hàm main

public class VietnameseTranslator implements Translator{

public void translate(){

System.out.println("Xin chao Spring"); } }

Trang 22

Hình 2.11. Class VietnameseTranslator

Trang 23

Để 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 VietnameseTranslator();

Viết lại như sau:

Translator translator = new EnglishTranslator();

Như vậy rõ ràng sự bất tiện xuất hiện mỗi khi 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ì chỉnh lại đoạn code một ít Sự điều

khiển (control) và 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ờ hàm main được sửa lại như Hình 2.12 để sử dụng Spring

public static void main( String args[]) throws Exception{

InputStream is = new FileInputStream("beans.xml");

BeanFactory factory = new XmlBeanFactory(is);

Speaker speaker = (Speaker)factory.getBean("Speaker");

speaker.sayHello(); }

Hình 2.12. Hàm main

Theo hình Hình 2.12 hàm main bây giờ không dính dáng gì đến Vietnamese và

English nữa Tiếp theo Sửa lại tập tin beans.xml (Hình 2.13.).

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "<a

href="http://www.springframework.org/dtd/spring-beans.dtd>"

target="_blank">http://www.springframework.org/dtd/spring-beans.dtd"></a>

<beans> <bean name = "Translator" class = "EnglishTranslator" singleton = "true"></bean>

<bean name = "Speaker" class = "Speaker" singleton = "true">

<constructor-arg><ref bean = "Translator"></constructor-arg>

</bean></beans>

Hình 2.13. Beans.xml

Trang 24

Tập tin 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 (hoặc là VietnameseTransslator) vào trong đối tượng Speaker (Injection Dependency) Đó là nguyên lý chính yếu nhất, nổi tiếng nhất của Spring

2.2.2 JSF

2.2.2.1 Tổng quan về JSF

Khi phát triển ứng dụng web trên nền tảng công nghệ J2EE, việc lặp đi lặp lại các đoạn mã trình giống nhau cùng thực hiện một chức năng hay chỉ để hiển thị một thành phần nào đó của giao diện là công việc tốn nhiều thời gian và dễ gây nhàm chán JSF cung cấp một bộ khung làm việc trực quan giúp cho việc phát triển các ứng dụng web một cách dễ dàng và tránh lặp đi lặp lại các thao tác giống nhau

JSF được phát triển dựa trên mẫu thiết kế (design pattern) MVC (một trong những mẫu thiết kế nổi tiếng thường dùng cho các hệ thống lớn) JSF là bộ khung làm việc hướng đến việc xử lý tương tác giữa các thành phần giao diện và các sự kiện phát ra từ các thành phần giao diện đó JSF bao gồm các thành phần giao diện phía server và các API Các thành phần này dùng để trình bày các gói giao diện người dùng, quản lý trạng thái của các gói đó,

xử lý các sự kiện phát ra từ các gói giao diện khi người dùng thao tác lên các gói giao diện

đó, xác thực dữ liệu, chuyển đổi dữ liệu, phân luồng điều hướng giữa các trang, hỗ trợ đa ngôn ngữ và cung cấp các mở rộng cho các gói giao diện người dùng này

JSF tách bạch rõ ràng giữa phần giao diện người dùng và các hành vi tương ứng của các thành phần Lấy một ví dụ đơn giản: khi người dùng nhấp chuột vào một nút trên giao

diện trang web (UI component) thì sẽ phát ra một sự kiện để gửi đến backing bean (sẽ được

trình bày phần sau) đang chờ lắng nghe và xử lý sự kiện được phát ra từ nút đó.

Trang 25

2.2.2.2 Các thành phần quan trọng của JSF:

UI Component (còn gọi là một control hay đơn giản là component): một đối tượng

phía server, cung cấp các chức năng cụ thể để tương tác với một người dùng cuối UI

component là những JavaBean với các thuộc tính, phương thức, sự kiện Chúng được tổ

chức thành một cây bao gồm các component và thường hiển thị như một trang.

Renderer: Hiển thị một UI component và trao đổi một dữ liệu nhập của người dùng

vào giá trị của component Renderer có thể được thiết kế để làm việc với một hoặc nhiều

UI component, và một UI component có thể tập hợp với nhiều renderer khác nhau.

Validator: Trả lời cho việc chắc chắn rằng giá trị nhập vào bởi người dùng được

chấp nhận Một hoặc nhiều validator có thể được tập hợp với một UI 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 event listener (bộ lắng nghe sự kiện) 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.

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: Hiển thị thông tin cho người dùng Chỉ bất kỳ thành phần ứng dụng

trong (backing beans, validators, converter …) mới 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: Đị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.

2.2.2.3 Vòng đời của việc xử lý request:

Vòng đời của 1 request (Hình 2.14.) chia làm 6 bước được mô tả như sau:

 Restore View: hiển thị thay thế tất cả các component tạo nên một trang

giao diện cụ thể

Trang 26

Hình 2.14. Vòng đời của request

 Apply Request Values: Mọi dữ liệu được gửi lên từ mỗi phần của request

được gắn vào các đối tượng giao diện tương ứng, trạng thái của các đối tượng giao diện ở phía server được cập nhật cùng với dữ liệu mới được gắn vào Dữ liệu được gửi lên có thể bắt nguồn từ các thẻ input của form hoặc là từ các cookies Ở bước này các sự kiện được phát ra từ các thành phần giao diện cũng được đưa vào hàng

đợi để xử lý ở bước Invoke Application

 Process Validation: Trong bước này, JSF thiết lập cây bao gồm các

component và hỏi mỗi component có chắc chắn rằng giá trị được gửi lên có thể chấp

nhận không Bởi vì giá trị được gửi lên của mỗi component nhập vào được cập nhật

ở bước 2 (apply request values), component bây giờ có hầu hết dữ liệu hiện thời của người dùng gửi lên Trước khi tiến trình validation xảy ra, giá trị gửi lên được chuyển đổi bằng mỗi converter đã đăng ký cho component hoặc converter mặc định

Update Model Values: đến bước này các giá trị của các component đã

được cập nhật, chính xác và đúng kiểu Các giá trị này được lưu vào đối tượng

backing-beans tương ứng với từng component giao diện.

Invoke Application: Khi toàn bộ các giá trị của các component đã được

thiết lập vào các backing-beans, các sự kiện trong hàng đợi sẽ được xử lý tương ứng với các phương thức trong backing-beans.

 Render Response: Tại thời điểm này, tất cả xử lý bởi framework và ứng

Trang 27

chính của bước này Mục tiêu thứ hai là lưu lại trạng thái hiển thị để nó có thể được

phục hồi trong bước Restore View nếu người dùng yêu cầu lại Trạng thái hiển thị

được lưu lại trong bước này bởi vì thường thì hiển thị được lưu trên phía máy khách (phía người dùng), cho nên nó là một phần của phản hồi gửi đến người dùng Trong

trường hợp này, JSF đang lưu trạng thái trên server, vì thế trạng thái hiển thị hầu hết

được lưu trữ trong session của người dùng

2.2.3 Hibernate

2.2.3.1 Tổng quan về hibernate

Hiện nay các hệ quản trị CSDL dựa trên mô hình quan hệ, hệ quản trị CSDL hướng đối tượng cũng đã được một số hãng CSDL như Oracle phát triển nhưng cũng chưa phổ biến Trong khi đó xu hướng lập trình hiện tại lại chủ yếu theo phương pháp hướng đối tượng Theo cách truyền thống, các lập trình viên thao tác trực tiếp đến dữ liệu bằng những câu truy vấn Việc này lặp đi lặp lại khiến họ cảm thấy nhàm chán và việc truy cập không được 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ị cơ sở dữ liệu 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à cơ sở dữ liệu 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ư không cần biết tới cách thức thao tác với cơ sở dữ liệu 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 cơ sở dữ liệu 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ể

Trang 28

2.2.3.2 Vòng đời của đối tượng trong Hibernate:

Hình 2.15. Vòng đời của đối tượng trong Hibernate

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à có thể bị thu gom bởi

garbage collector khi không còn được tham chiếu bởi bất kì đối tượng nào.

- Persistent: đối tượng có quan hệ với session hiện tại của Hibernate và trạng thái

của nó được đồng bộ với một dòng dữ liệu hợp lệ trong cơ sở dữ liệu Đối tượng

ở trạng thái này được khởi tạo khi thực thi hàm save() Khi một đối tượng

Trang 29

dữ liệu khi giao tác này được hoàn tất Đôi khi đối tượng persistent được đồng bộ

hóa với cơ sở dữ liệu trước khi giao tác được hoàn tất để chắc chắn rằng giao tác này biết được những thay đổi của giao tác thực thi trước đó

Khi giao tác này kết thúc, các đối tượng persistent sẽ chưa cập nhật vào cơ sở dữ

liệu, hibernate sẽ kiểm tra những đối tượng nào bị thay đổi và chỉ cập nhật chúng vào cơ sở

dữ liệu Tiến trình này được gọi là dirty checking Dirty objects là các đối tượng đã được

thay đổi nhưng chưa được đồng bộ hóa vào cơ sở dữ liệu Tiến trình này làm tăng hiệu suất của một số hệ cơ sở dữ liệu nhưng cũng làm giảm hiệu suất đối với một số hệ cơ sở dữ liệu khác Do đó 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

- Detached: Đối tượng đã từng có trạng thái persistent nhưng hiện tại đã không còn

giữ quan hệ hoặc liên quan với session Ở đây chúng ta nói một đối tượng có quan hệ với Session nghĩa là session có tham chiếu đến đối tượng đó, hay một cách khác là chịu sự quản lý của session Các đối tượng có trạng thái detached sẽ được giải phóng bởi garbage collector của JVM

2.2.3.3 Giải thích về các phương thức được dùng trong vòng đời của các đối tượng trong hibernate:

save(): Dùng để lưu một đối tượng với trạng thái transient thành đối tượng

persistent, trả về mã đối tượng (id), persist() giống save() nhưng không trả về gì cả.

saveOrUpdate(): Nếu là đối tượng mới thì lưu xuống cơ sở dữ liệu, nếu không thì

cập nhật 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ì cập nhật vào đối tượng đã tồn tại đó, nếu không thì tạo mới một đối tượng

và lưu xuống

load(): Dùng để tải 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.

Trang 30

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 table_name 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.

Trang 31

CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ HỆ THỐNG VÀ HIỆN THỰC HỆ

THỐNG

3.1 PHÂN TÍCH THIẾT KẾ HỆ THỐNG

3.1.1 Mô tả về cách phân tích – Khái niệm cơ bản

Hướng phân tích thiết kế sử dụng kỹ thuật ICONIX để đặc tả hệ thống Các đặc tả này phân tích dựa trên nhu cầu người người dùng như: Người dùng cần gì? Chức năng xử lý thế nào? Có những trường hợp ngoại lệ không? Và cuối cùng là mô tả luồng xử lý của hệ thống Vì vậy, việc mô tả các trường hợp sử dụng (usecase) của hệ thống được chia làm các phần như sau:

- Chức năng: Mô tả về chức năng xử lý

- Luồng căn bản: Các luồng xử lý thông tin cơ bản cần có của chức năng này

Vì hệ thống được xây dựng là một cổng thông tin việc làm, do đó các đối tượng chính sử dụng là người tìm việc, nhà tuyển dụng, trung tâm đào tạo Hướng đến các đối tượng sử dụng, hệ thống được chia thành từng nhóm người dùng như sau:

- Ứng viên: Là những người tìm việc với nhu cầu sử dụng chính là tìm được công việc tốt nhất Sau đây là một số chức năng chính mà các ứng viên thường dùng theo qui trình sau:

o Cập nhật hồ sơ (phần 22 mục 3.1.2.2): Sau khi đã đăng kí tài khoản là

thành viên của trang web, ứng viên sẽ được yêu cầu cập nhật hồ sơ Nội

Trang 32

dung của chức năng này giúp ứng viên hoàn thiện những nhóm thông tin

của mình để tiện cho việc tạo hồ sơ sau này.

o Tạo hồ sơ (phần 21 mục 3.1.2.2): Từ thông tin hồ sơ đã cập nhật, ứng viên

có thể trích những nhóm thông tin của mình để tạo một hồ sơ mới Hồ sơ

sẽ bao gồm những nhóm thông tin mà ứng viên đã chọn, nội dung những nhóm thông tin này sẽ được trích từ hồ sơ cập nhật Từ hồ sơ đã được tạo, ứng viên có thể gửi hồ sơ trực tuyến trên trang web đến các nhà tuyển dụng hoặc trích ra tập tin lưu giữ lại

o Tìm việc: Khi đã là thành viên của trang web, ứng viên có thể tìm kiếm

công việc phù hợp của mình Website đáp ứng tìm kiếm nội dung theo nhiều nhóm thông tin càng tốt nhưng bố cục và cách thức tìm sao cho dễ nhìn để tránh làm rối ứng viên Ở đây, hướng phân tích của khóa luận sẽ

chia thành 2 phần khi tìm kiếm đó là tìm việc cơ bản (phần 11 mục 3.1.2.2) và tìm kiếm nâng cao (phần 12 mục 3.1.2.2)

o Gửi hồ sơ (phần 24 mục 3.1.2.2): Sau khi tìm kiếm được thông tin phù

hợp, ứng viên có thể tùy chọn chức năng giới thiệu bạn bè (phần 14 mục

3.1.2.2) đến các thành viên trong (bằng tài khoản đăng nhập của trang

web) và ngoài trang web (bằng openid) bằng cách gửi đường dẫn của

thông tin mà chức năng trang web đã tích hợp Ngoài ra, ứng viên có thể

nộp trực tiếp đến nhà tuyển dụng bằng cách trích hồ sơ hồ sơ trên web

dưới dạng tập tin (pdf, excel, …) để có thể nộp trực tiếp đến nhà tuyển dụng

o Đăng kí khóa học: Khi tìm kiếm các thông tin các khóa học, ứng viên có

thể đăng kí các khóa học khi nhà đào tạo đăng tin trên trang web Để xem thông tin việc đăng kí khóa học thành công bạn có thể vào xem các thông tin khóa học đã đăng kí được xét duyệt hay chưa Việc xác nhận đã đăng

kí khóa học thành công sẽ được trung tâm đào tạo xét duyệt cập nhật trực tiếp trên trang web

- Nhà Tuyển Dụng (NTD): Là những công ty với nhu cầu là tìm được những nhân viên phù hợp với yêu cầu của công ty mình

o Đăng tin tuyển dụng (phần Hình 3.12 mục 3.1.2.2): Yêu cầu đầu tiên của

Trang 33

thì càng giúp cho cho NTD tìm được nhân viên vừa ý Ngoài ra NTD có thể yêu cầu bằng cấp cho vị trí tuyển dụng thông qua các chứng chỉ được chỉ định theo các chứng chỉ do trung tâm đào tạo cấp.

o Tìm ứng viên: NTD có thể tìm ứng viên theo theo nhiều nội dung tùy

chọn Khi đã tìm thấy thông tin vừa ý, NTD có thể gửi thư đến ứng viên trực tiếp trên trang web kèm với nội dung yêu cầu

o Nhận hồ sơ: Khi ứng viên gửi thư để ứng tuyển vị trí tuyển dụng mà NTD

đã đăng NTD có thể tùy chọn các hồ sơ ứng tuyển đã được gửi đến mà có những hình thức gửi hồi đáp cho các ứng viên

o Đăng kí khóa học cho công ty: NTD có thể đăng kí khóa học cho các nhân

viên trong công ty mình để bổ sung kỹ năng Hoặc nếu các NTD có nhu cầu mở lớp học để bổ sung kỹ năng cho nhân viên công ty mình, NTD có thể gửi yêu cầu này đến các trung tâm đào tạo để được đáp ứng mở các khóa học mới

- Trung Tâm Đào Tạo (TTĐT): Chiêu sinh các khóa học của mình Giới thiệu về nội dung khóa học, những bằng cấp được cấp Từ đó người dùng khác sẽ thấy được lợi ích của khóa học để bổ sung thêm những kỹ năng cần thiết

o Đăng khóa học (phần 30 mục 3.1.2.2): TTĐT sẽ đăng khóa học với các

nội dung chính như: nội dung mô tả, số lượng học viên, thời hạn và địa điểm học Người dùng sẽ dựa trên thông tin này để đăng kí khóa học Việc xác nhận đã được đăng kí là học viên sẽ được TTĐT toàn quyền xét duyệt

o Quản lý khóa học (phần 31 mục 3.1.2.2) quản lý số học viên là thành viên

của trang web, cập nhật điểm số trực tiếp cho các học viên này và gửi thông báo nếu có thông báo mới

- Khách: Nhóm người dùng chưa là thành viên của trang web hoặc chưa đăng nhập vào trang web Đối với nhóm người dùng này thông thường chỉ tìm những thông tin trên trang và không thể tạo và nộp hồ sơ trực tiếp qua web Hướng đến nhóm người dùng này, ta sẽ có những hình thức về mặt bố cục nội dung hiển thị cho họ thấy được lợi ích khi là thành viên, kích thích họ đăng kí là thành viên của trang web:

o Có đề mục nói về lợi ích của việc tạo hồ sơ.

o Bố cục web thân thiện và dễ nhìn.

Trang 34

o Mục Tạo tài khoản, Tạo hồ sơ phải nổi bật nhưng lại không làm cho người

dùng khó chịu khi tìm kiếm thông tin

o Mỗi thông tin tuyển dụng đều có nút chức năng gửi hồ sơ ngay bên dưới

Để kích thích được người dùng gửi hồ sơ thì cấu trúc hiển thị nội dung phải có bố cục dễ nhìn, nội dung rõ ràng Và cuối cùng khi người dùng

nhấn vào nút gửi hồ sơ này thì trang web sẽ chuyển đến trang yêu cầu tạo

tài khoản

Điểm trọng yếu: Như đã nói ở trên, vấn đề quan trọng về việc phân tích trong khóa

luận là tạo cầu nối cho người dùng ở các nhóm khác nhau như:

- NTD đăng tin giúp ứng viên có thêm cơ hội tìm được công việc tốt Bên cạnh đó,

có thể liên hệ đến TTĐT yêu cầu mở khóa học để bổ sung kỹ năng của nhân viên trong công ty

- Người tìm việc sử dụng hệ thống vừa tìm kiếm việc làm vừa tìm kiếm thông tin các khóa học để đăng kí, giúp rèn luyện thêm những kỹ năng của mình Tiếp theo

đó, ứng viên thường xuyên được nhận những thông báo chuyên ngành quan tâm

từ TTĐT để đăng kí học viên, rèn luyện thêm kỹ năng còn thiếu Ngoài ra ứng viên còn có thể gửi yêu cầu mở khóa học đến TTĐT

- Đối với TTĐT, trang web là nơi để đăng tin đạo tạo, là nơi để nhận những yêu cầu mở lớp của các thành viên khác Vừa là nơi để quản lý thông báo tin tức đến các học viên trên trang web

Tóm lại, nội dung chức năng được phân tích theo chiều sâu của sự liên hệ các nhóm người dùng để đưa lên các chức năng Với sự liên hệ này, tăng sự gắn kết, vừa đáp ứng đủ các chức năng và loại bỏ những chức năng không cần thiết khác

3.1.2.2 Đặc Tả Các Usecase

Khái niệm cơ bản: Use case là một kỹ thuật được dùng trong kỹ thuật phần mềm và

hệ thống để nắm bắt yêu cầu chức năng của hệ thống Use case mô tả sự tương tác đặc trưng giữa tác nhân (actor) và hệ thống Nó mô tả các yêu cầu đối với hệ thống, có nghĩa là những

gì hệ thống phải làm Tập hợp tất cả use case của hệ thống sẽ mô tả tất cả các trường hợp

mà hệ thống có thể được sử dụng

Trang 35

Các use case được trình phân tích ở khóa luận này được phân chia thành những gói

khác nhau Cấu trúc các gói được phân chia dựa trên sự tương tác của các actor đối với hệ thống như sau:

* Các usecase trong gói general:

1. Đăng Nhập

- Chức năng: Cho người dùng đăng nhập vào hệ thống

- Luồng cơ bản: Người dùng nhập thông tin vào các ô nhập liệu tên đăng nhập và mật khẩu của mục đăng nhập trên trang web, sau đó nhấn nút đăng nhập Hệ thống kiểm tra xem username và mật khẩu trong hệ thống, nếu đúng người dùng đăng nhập thành công, sau đó hệ thống sẽ chuyển sang trang web phù hợp với vai trò của người dùng

- Các luồng khác:

o Người dùng gõ sai username: Hệ thống sẽ yêu cầu người dùng nhập lại

username, nếu nhập quá 3 lần hệ thống sẽ hiển thị CAPTCHA để ngăn chặn người dùng tấn công hệ thống bằng DDOS

o Người dùng gõ sai mật khẩu:Hệ thống sẽ yêu cầu người dùng nhập lại mật

khẩu, nếu nhập quá 3 lần hệ thống sẽ hiển thị CAPTCHA để ngăn chặn người dùng tấn công hệ thống bằng DDOS

- Sơ đồ luồng đi Hình 3.1

Trang 36

Hình 3.1. Luồng xử lý đăng nhập

2. Đăng xuất:

- Chức năng: Thoát khỏi tài khoản đang dùng

- Luồng cơ bản: Người dùng nhấp chuột vào nút đăng xuất, hệ thống sẽ tự động chuyển đến trang chủ và cập nhật trạng thái truy cập của người dùng là đã thoát

ra ngoài

- Sơ đồ luồng đi Hình 3.2

Hình 3.2. Luồng xử lý đăng xuất

Trang 37

3. Xử lý quên mật khẩu

- Chức năng: Giúp người dùng nhớ lại mật khẩu đã quên

- Luồng cơ bản: Hệ thống yêu cầu nhập tên đăng nhập, sau đó nhập chuỗi CAPTCHA để tiếp tục tác vụ, cuối cùng bạn phải lựa chọn một trong các cách thức sau để khôi phục mật khẩu:

o Gửi mail phục hồi đến hộp thư của bạn

o Trả lời câu hỏi bảo mật

- Các luồng khác:Trường hợp trả lời sai câu hỏi bảo mật quá 3 lần bạn phải nhập lại chuỗi CAPTCHA ở bước 2 thì mới có thể tiếp tục tác vụ

- Sơ đồ luồng đi Hình 3.3

Hình 3.3. Luồng xử lý quên mật khẩu

4. Cập nhật thông tin tài khoản

- Chức năng: chỉnh sửa lại thông tin tài khoản người dùng

- Luồng cơ bản:

o Người dùng nhấp chuột vào nút sửa thông tin tài khoản, sau đó hệ thống sẽ

đưa ra các thông tin liên quan đến tài khoản của người dùng như mật khẩu,

họ tên, ngày sinh, email liên hệ, hình đại diện để cho người dùng thay đổi

o Sau khi đã cập nhật các thông tin cần thay đổi người dùng nhấn nút lưu

thông tin, hệ thống hỏi người dùng có muốn lưu thay đổi không, người dùng nhấn nút đồng ý hệ thống sẽ cập nhật những thay đổi vào cơ sở dữ liệu

- Các luồng khác:

Trang 38

o Người dùng nhập thông tin không hợp lê: hệ thống sẽ đưa ra các thông báo

đến người dùng và yêu cầu nhập lại thông tin đã nhập sai

o Người dùng không đồng ý lưu thay đổi thông tin đã điền: hệ thống sẽ

không cập nhật thông tin đã điền vào cơ sở dữ liệu

- Sơ đồ luồng đi Hình 3.4

Hình 3.4. Luồng xử lý cập nhật thông tin tài khoản

* Các usecase trong gói khách (guess):

Thể hiện sự tương tác giữa actor (tác nhân) khách với các chức năng của hệ thống mà actor khách được sử dụng đến (Hình 3.5.)

Trang 39

Hình 3.5. Các chức năng trong gói khách

5. Đăng kí tài khoản

- Chức năng: người dùng tạo tài khoản sử dụng

- Luồng cơ bản:Người dùng nhấp vào liên kết đến trang đăng kí tài khoản, chọn loại tài khoản mà họ muốn đăng kí (người tìm việc, trung tâm đào tạo, nhà tuyển dụng), Với mỗi loại tài khoản mà họ muốn đăng kí sẽ hiện ra các field bắt buộc phải điền thông tin vào như:

o Tên đăng nhập: có kèm chức năng kiểm tra tồn tại hay chưa bên cạnh.

o Mật khẩu : có kèm chức năng kiểm tra độ dài hợp lệ.

o Email: bắt buộc phải có để gửi email xác nhận.

o Captcha: để chống ddos.

- Sau khi đã điền đầy đủ các thông tin trên người dùng nhấn vào nút đăng kí, hệ thống sẽ kiểm tra tính đúng đắn của dữ liệu nhập vào bằng javascript, sau đó hệ thống sẽ kiểm tra sự tồn tại của username trong hệ thống Nếu chưa có, hệ thống

sẽ thêm username vào hệ thống và thông báo đăng kí tài khoản thành công, sau

đó chuyển đến trang quản lý thông tin người dùng dựa vào loại tài khoản mà người đó chọn

- Các luồng khác:

Trang 40

o Mật khẩu đã tồn tại trong hệ thống: hệ thống sẽ hiển thị thông báo cho

người dùng, yêu cầu người dùng chọn tên khác

o Mật khẩu người dùng nhập vào không trùng nhau: hệ thống sẽ hiển thị

thông báo yêu cầu người dùng nhập lại 2 mật khẩu

o Thông tin nhập vào không hợp lệ: điều kiện khi nhập thông tin là mật khẩu

phải có độ dài hơn 4 kí tự, email phải đúng định dạng, nếu không đúng các điều kiện đó thì người dùng phải nhập lại thông tin

o Người dùng nhập sai captcha quá n lần (số lần này sẽ được cấu hình

động): hệ thống sẽ không cho phép người dùng thực hiện chức năng đăng

kí trong vòng 5 phút (captcha sẽ được thiết kế dễ đọc hoặc là một phép toán để không làm phiền người sử dụng)

o Phương án sử dụng Open ID: với phương thức này chỉ yêu cầu người dùng

nhập mật khẩu để kiểm tra, nếu hợp lệ hệ thống sẽ lưu lại trong thông tin tài khoản

- Sơ đồ luồng đi Hình 3.6

Hình 3.6. Luồng xử lý đăng kí tài khoản

Ngày đăng: 17/01/2013, 10:36

HÌNH ẢNH LIÊN QUAN

Hình 2.2. Các thành phần của Spring - phân tích thiết kế và công nghệ nền tảng
Hình 2.2. Các thành phần của Spring (Trang 16)
Hình 2.4. Spring IOC - phân tích thiết kế và công nghệ nền tảng
Hình 2.4. Spring IOC (Trang 18)
Hình 2.14. Vòng đời của request - phân tích thiết kế và công nghệ nền tảng
Hình 2.14. Vòng đời của request (Trang 26)
Hình 2.15. Vòng đời của đối tượng trong Hibernate - phân tích thiết kế và công nghệ nền tảng
Hình 2.15. Vòng đời của đối tượng trong Hibernate (Trang 28)
Hình 3.11. Luồng xử lý tìm kiếm tin tức - phân tích thiết kế và công nghệ nền tảng
Hình 3.11. Luồng xử lý tìm kiếm tin tức (Trang 49)
Hình 3.14. Luồng xử lý xem và tìm kiếm ứng viên. - phân tích thiết kế và công nghệ nền tảng
Hình 3.14. Luồng xử lý xem và tìm kiếm ứng viên (Trang 52)
Hình 3.17. Use case trong gói người tìm việc - phân tích thiết kế và công nghệ nền tảng
Hình 3.17. Use case trong gói người tìm việc (Trang 55)
Hình 3.22. Luồng xử lý cấu hình mail - phân tích thiết kế và công nghệ nền tảng
Hình 3.22. Luồng xử lý cấu hình mail (Trang 60)
Hình 3.29. Luồng xử lý quản lý khóa học - phân tích thiết kế và công nghệ nền tảng
Hình 3.29. Luồng xử lý quản lý khóa học (Trang 67)
Hình 3.34. Luồng xử lý tư vấn ứng viên - phân tích thiết kế và công nghệ nền tảng
Hình 3.34. Luồng xử lý tư vấn ứng viên (Trang 72)
Hình 3.37. Luồng xử lý quản lý các bài viết. - phân tích thiết kế và công nghệ nền tảng
Hình 3.37. Luồng xử lý quản lý các bài viết (Trang 74)
Hình 3.39. Các chức năng trong gói nhà quản trị trang web - phân tích thiết kế và công nghệ nền tảng
Hình 3.39. Các chức năng trong gói nhà quản trị trang web (Trang 75)
Hình 3.40. Luồng xử lý quản lý menu - phân tích thiết kế và công nghệ nền tảng
Hình 3.40. Luồng xử lý quản lý menu (Trang 77)
Hình 3.42. Luồng xử lý quản lý tài khoản người dùng - phân tích thiết kế và công nghệ nền tảng
Hình 3.42. Luồng xử lý quản lý tài khoản người dùng (Trang 79)
Hình 3.43. Luồng xử lý quản lý nhóm người dùng - phân tích thiết kế và công nghệ nền tảng
Hình 3.43. Luồng xử lý quản lý nhóm người dùng (Trang 80)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w