Một định nghĩa tương tự cũng đã được Johnson đưa ra năm 1991 [10]: “Một khung làm việc là một bộ nổi bật các lớp cộng tác bao gồm cả các mẫu tỷ lệ nhỏ và cơ chế lớn mà nó thực hiện các y
Trang 1LỜI CẢM ƠN
Trước tiên tôi xin được bày tỏ sự trân trọng và lòng biết ơn đối với PGS.TS.Nguyễn Văn Vỵ, giảng viên Khoa Công nghệ thông tin - Trường Đại học Côngnghệ - ĐHQGHN Trong thời gian học và làm luận văn tốt nghiệp, thầy đã dànhnhiều thời gian quí báu và tận tình chỉ bảo, hướng dẫn tôi trong việc nghiên cứu,thực hiện luận văn
Tôi xin được cảm ơn các GS, TS đã giảng dạy tôi trong quá trình học tập vàlàm luận văn Các thầy đã giúp tôi hiểu thấu đáo hơn lĩnh vực mà mình nghiên cứu
để có thể vận dụng các kiến thức đó vào trong công tác của mình
Xin cảm ơn các bạn bè, đồng nghiệp và nhất là các thành viên trong gia đình
đã tạo mọi điều kiện tốt nhất, động viên, cổ vũ tôi trong suốt quá trình học tập vànghiên cứu để hoàn thành tốt bản luận văn tốt nghiệp này
Học viên
Phạm Duy Học
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan rằng, đây là công trình nghiên cứu của tôi trong đó có sựgiúp đỡ rất lớn của thầy hướng dẫn và các đồng nghiệp ở cơ quan, các bạn học viên.Các nội dung nghiên cứu và kết quả trong đề tài này là hoàn toàn trung thực
Trong luận văn, tôi có tham khảo đến một số tài liệu của một số tác giả đãđược liệt kê tại phần Tài liệu tham khảo ở cuối luận văn
Thái Nguyên, ngày 10 tháng 1 năm 2013
Học viên
Phạm Duy Học
Trang 31.1.3 Phân biệt framework với các khái niệm khác 8
1.2.2 Phân loại framework theo cấu trúc nội bộ 12
1.3.1 Quy trình phát triển dựa trên các kinh nghiệm ứng dụng 14
1.3.2 Quy trình phát triển framework dựa trên phân tích miền vấn đề 15 1.3.3 Quy trình phát triển framework sử dụng các mẫu thiết kế 16
1.4.1 Tổng quan về khung làm việc Higgin Trust 18
1.5.3 Vai trò của các thành phần M-V-C trong Web framework 27Chương 2: MÔ TẢ NGHIỆP VỤ, ĐẶC TẢ BÀI TOÁN TUYỂN SINH TRỰC
2.1.2 Những vấn đề đặt ra cho hoạt động tuyển sinh 34
Trang 42.3 Đặc tả nghiệp vụ của bài toán tuyển sinh trực tuyến 36
2.3.1 Các tiến trình nghiệp vụ của hoạt động tuyển sinh 36
2.3.2 Các tác nhân, các đối tượng và các thao tác nghiệp vụ 38
2.3.4 Phân tích các ca sử dụng (Use case) cho bài toán tuyển sinh trực
2.3.5 Mô hình các ca sử dụng và mô tả các ca sử dụng, mô hình miền 43Chương 3: ỨNG DỤNG FRAMEWORK VÀ THIẾT KẾ CÁC LỚP ĐỐI TƯỢNG
3.1 Mô hình liên kết giữa các lớp cho bài toán tuyển sinh trực tuyến 55
Chương 4 : CHƯƠNG TRÌNH TUYỂN SINH TRỰC TUYẾN TẠI ĐẠI HỌC
4.3.3 Chức năng lịch thi, địa điểm thi, tra cứu phòng thi 70
Trang 5BẢNG CÁC CHỮ VIẾT TẮT
CBTS Cán bộ tuyển sinh
CNĐKDT Cập nhật hồ sơ đăng ký dự thi
ĐH & CĐ Đại học và Cao đẳng
ĐHCNQN Đại học Công nghiệp Quảng ninh
GD&ĐT Giáo dục và Đào tạo
HĐTS Hội đồng tuyển sinh
KB Kiểm bài, đánh phách, chia túi
KHTS Lập kế hoạch tuyển sinh
XL HS Xử lý hồ sơ đăng ký dự thi
XPT Đánh số báo danh, phân cụm, xếp phong thi
XTS Xét tuyển sinh, lên thông báo
API Application Programming Interface
PAC Presentation-Abstraction-Controller
Trang 6DANH SÁCH CÁC HÌNH VÀ BẢNG
Hình 1.1: Mối quan hệ giữa các thành phần khác nhau của framework 6
Hình 1.2: Phát triển framework dựa trên kinh nghiệm ứng dụng [10] 14
Hình 1.3: Quy trình phát triển framework dựa trên phân tích miền vấn đề [10] 15
Hình 1.4: Quy trình phát triển framework sử dụng các mẫu thiết kế [10] 16
Hình 1.5: Quy trình phát triển khung làm việc chung [10] 17
Hình 1.6: Higgins Trust Framework 19
Hình 1.7: Kiến trúc của Higgins 19
Hình 1.8: RP Enablement 20
Hình 1.9: Kiến trúc Token Service 22
Hình 1.10: Mô hình MCV 27
Hình 2.1: Biểu đồ hoạt động của Xác định chỉ tiêu tuyển sinh 36
Hình 2.2: Biểu đồ hoạt động Công bố yêu cầu thi tuyển, tiếp nhận đăng ký thi 37
Hình 2.3: Biểu đồ hoạt động Công bố yêu cầu tuyển chọn, tiếp nhận đăng ký 37
Hình 2.4: Biểu đồ hoạt động Công bố kết quả và gửi kết quả tuyển sinh 38
Hình 2.5 Biểu đồ mô hình miền lĩnh vực tuyển sinh trực tuyến 39
Hình 2.6: Mô hình ca sử dụng mức cao 43
Hình 2.8: Biểu đồ ca sử dụng gói đăng ký dự thi mức chi tiết 43
Hình 2.9: Mô hình ca sử dụng gói xử lý hồ sơ đăng ký dự thi 44
Hình 2.10: Mô hình gói xử lý điểm thi 44
Hình 2.11: Mô hình miền gói tuyển sinh trực tuyến 54
Hình 3.1: Mô hình liên kết giữa các lớp trong gói đăng ký dự thi 55
Hình 3.2: Biểu đồ cộng tác thực thi ca sử dụng Nhập mới hồ sơ đăng ký dự thi 55
Hình 3.3: Biểu đồ cộng tác thực thi ca sử dụng tìm kiếm hồ sơ đăng ký dự thi 56
Hình 3.4: Biểu đồ cộng tác thực thi ca sử dụng xoá hồ sơ đăng ký dự thi 56
Hình 3.5: Biểu đồ cộng tác thực thi ca sử dụng thống kê báo cáo 56
Hình 3.6: Mô hình liên kết giữa các lớp cẳt dụng tách hồ sơ theo cụm thi 56
Hình 3.7: Biểu đồ cộng tác thực thi ca sử dụng tách hồ sơ theo cụm thi 57
Hình 3.8: Biểu đồ cộng tác thực thi ca sử dụng lập danh sách phòng thi 57
Hình 3.9: Biểu đồ cộng tác thực thi ca sử dụng in giấy báo thi 57
Hình 3.10:Biểu đồ cộng tác thực thi ca sử dụng dồn túi 58
Hình 3.11: Biểu đồ cộng tác thực thi ca sử dụng cập nhật điểm 58
Hình 3.12: Biểu đồ cộng tác thực thi ca sử dụng tổng hợp điểm 58
Hình 3.13: Biểu đồ tuần tự cho thực thi ca sử dụng thêm hồ sơ 59
Hình 3.14: Biểu đồ tuần tự cho thực thi ca sử dụng tìm kiếm hồ sơ 60
Hình 3.15: Biểu đồ tuần tự cho thực thi ca sử dụng xoá hồ sơ 60
Hình 3.16: Biểu đồ tuần tự cho thực thi ca sử dụng sửa hồ sơ 61
Hình 3.17: Biểu đồ tuần tự cho thực thi ca sử dụng tách hồ sơ theo cụm thi 61
Hình 3.18: Biểu đồ tuần tự cho thực thi ca sử dụng lập danh sách phòng thi 62
Hình 3.19: Biểu đồ tuần tự cho thực thi ca sử dụng in giấy báo thi 62
Hình 3.20: Biểu đồ tuần tự cho thực thi ca sử dụng dồn túi 63
Hình 3.21: Biểu đồ tuần tự cho thực thi ca cập nhật điểm 63
Hình 3.22: Biểu đồ tuần tự cho thực thi ca tổng hợp điểm 64
Hình 3.23: Mô hình liên kết giữa các lớp thực thi ca sử dụng thêm hồ sơ 64
Hình 3.24: Mô hình liên kết giữa các lớp thực thi CSD tách hồ sơ theo cụm thi 64
Hình 4.0: Giao diện trang chủ 69
Hình 4.1: Giao diện trang đăng ký tuyển sinh trực tuyến 70
Hình 4.2: Giao diện trang thông tin thí sinh 70
Trang 12một vấn đề quan trọng cho các tổ chức phát triển phần mềm Đầu tiên, phần mềmđược sử dụng lại dưới hình thức là các thư viện hàm API hay các thư viện lớp Tiếptheo, các nhà phát triển nhận thấy không chỉ cần sử dụng lại các đoạn mã mà còncần phải sử dụng lại cả các thiết kế của phần mềm Do vậy, đã xuất hiện khái niệm
về mẫu thiết kế (design pattern) và khung làm việc (framework) Các mô tả chi tiết
về mẫu thiết kế sẽ được trình bầy trong một chủ đề khác Nội dung của phần nàycủa luận văn sẽ chỉ trình bầy về khung làm việc và phạm vi ứng dụng của nó
1.1 Khái niệm về framework
Thiết kế phần mềm là loại công việc khó và việc thiết kế phần mềm để có thể
sử dụng lại còn khó khăn hơn rất nhiều Một khung làm việc định hướng đối tượng
là một loại cấu trúc phần mềm có thể sử dụng lại bao gồm cả thiết kế và code Kháiniệm khung làm việc được mong đợi sẽ làm tăng tính hiệu quả trong quá trình pháttriển phần mềm của các kỹ sư phần mềm
Khung làm việc hướng đối tượng là gì? Tồn tại rất nhiều định nghĩa khác nhau
và giống nhau về khung làm việc trong đó định nghĩa cua Johnson và Foote [10] làđịnh nghĩa được biết đến nhiều nhất
“Một khung làm việc là một bộ các lớp mà nó là biểu hiện của một thiết kế trừu tượng các giải pháp cho một lớp các vấn đề liên quan”.
Một định nghĩa tương tự cũng đã được Johnson đưa ra năm 1991 [10]:
“Một khung làm việc là một bộ nổi bật các lớp cộng tác bao gồm cả các mẫu
tỷ lệ nhỏ và cơ chế lớn mà nó thực hiện các yêu cầu chung và thiết kế trong phạm vi một miền ứng dụng cụ thể”
Dựa trên các định nghĩa, chúng ta có thể giải thích một cách đầy đủ hơn ýnghĩa khung làm việc định hướng đối tượng như dưới đây
Trang 131.1.1 Định nghĩa về framework
Thuật ngữ framework hướng đối tượng có thể được định nghĩa theo nhiềucách Một framework được định nghĩa như là một phần của thiết kế và thực hiện,cho một ứng dụng trong một lĩnh vực Điều này cho thấy: một framework khôngphải là một hệ thống hoàn chỉnh Hệ thống này có thể được điều chỉnh lại để tạo racác ứng dụng hoàn chỉnh Các framework nói chung được sử dụng và được pháttriển khi cần phát triển một vài ứng dụng tương tự Một framework là phần chunggiữa các ứng dụng này Do vậy, một framework giảm công sức cần thiết để xâydựng các ứng dụng
Phần lớn các định nghĩa đều nhất trí rằng, một framework là một kiến trúcphần mềm có thể sử dụng lại, bao gồm cả thiết kế và mã thực hiện được Tuy nhiên,lại không có định nghĩa nào được thống nhất chung về framework và các thànhphần hợp thành của nó
Sau đây là một số các định nghĩa khác nhau hoặc tương tự nhau về frameworkđược nêu ra:
“Một framework ràng buộc các lựa chọn chính xác về sự phân chia trạng thái
và luồng điều khiển, người dùng hoàn thiện hoặc mở rộng framework để tạo ra mộtứng dụng thực tế”
“Một framework là một tập các lớp mà bao gồm một thiết kế trừu tượng chocác giải pháp của một hoặc các vấn đề liên quan”
“Một framework là một tập các đối tượng mà cộng tác với nhau để tạo ra mộttập các đáp ứng cho một ứng dụng hoặc một vùng hệ thống con”
“Một framework là một tập các ký hiệu của các lớp cộng tác mà đạt được cảcác mẫu phạm vi nhỏ và các cơ chế chủ yếu để thực hiện các yêu cầu chung và thiết
kế trong một phạm vi ứng dụng cụ thể”
“Một tập các lớp cộng tác với nhau mà tạo ra một thiết kế có thể sử dụng lạicho một lớp cụ thể của phần mềm Một framework cung cấp các hướng dẫn có tínhkiến trúc bằng cách phân chia thiết kế thành các lớp trừu tượng và định nghĩa các
Trang 14đáp ứng và sự cộng tác của chúng Một nhà phát triển tùy biến framework thànhmột ứng dụng cụ thể bằng cách tạo ra các lớp con và tạo ra các phiên bản của cáclớp framework”
Như vậy, một framework bao gồm một tập các lớp mà các thể hiện của chúngcộng tác với nhau, được dự định để mở rộng, sử dụng lại cho các ứng dụng cụ thểcủa một lĩnh vực Một họ các vấn đề liên quan, cho phép tổng hợp trong mộtframework Hơn nữa, các framework được biểu diễn thành một ngôn ngữ lập trình,như vậy nó cung cấp cho việc sử dụng lại cả mã thực hiện và thiết kế
1.1.2 Cấu trúc của một framework
Một framework hướng đối tượng bao gồm các 5 thành phần sau:
Các tài liệu thiết kế
là 1 phần
Trang 15Các thành phần của một framework bao gồm:
Các tài liệu thiết kế: thiết kế của một framework có thể bao gồm các lược đồ
lớp, viết bằng văn bản hoặc chí ít là một ý tưởng trong đầu của nhà phát triển
Các giao diện: các giao diện mô tả sự đáp ứng với bên ngoài của các lớp Các
giao diện có thể được sử dụng để mô hình hóa các vai trò khác nhau trong hệ thống,
ví dụ như các vai trò trong một mẫu thiết kế Một vai trò đại diện cho một nhóm cácphương pháp trong giao diện mà liên quan tới các phương pháp do các phần khácthực hiện
Các lớp trừu tượng: một lớp trừu tượng là một sự thực hiện chưa đầy đủ của
một hoặc nhiều giao diện Nó có thể được sử dụng để định nghĩa cách ứng xử củamột số các thành phần thực hiện một nhóm các giao diện
Các thành phần: Giống như các lớp, các thành phần có thể được tích hợp với
các lớp khác Trong hình vẽ, có một mũi tên “là một phần của” giữa các lớp và cácthành phần Nếu bản thân các lớp có một API được định nghĩa đầy đủ thì tập kếtquả của các lớp sẽ được biểu hiện như là một tổ hợp các thành phần Một thànhphần được định nghĩa như sau: “Một thành phần phần mềm là một đơn vị kết cấuvới các giao diện được ghi rõ theo hợp đồng và các phụ thuộc ngữ cảnh rõ ràng.Một thành phần phần mềm có thể được triển khai độc lập và được tổ hợp bằng cáchãng thứ ba”
Các lớp: Mức thấp nhất của một framework là các lớp Các lớp chỉ khác với
các thành phần là trong thực tế, các API được công khai của nó không được đưa ratrong các giao diện của một framework Một cách điển hình là các lớp được cácthành phần sử dụng để đại diện cho chức năng Ví dụ một người dùng frameworkthường không nhìn thấy các lớp này trừ khi anh ta làm việc với các thành phần
Cách thức làm việc của một framework như sau:
Một framework làm việc bằng cách cung cấp một đặc tả rõ ràng của các tươngtác được mong đợi giữa các thành phần Ví dụ, một thành phần có thể trông chờ
Trang 16những gì từ các thành phần khác và cái gì nên được cung cấp tới chúng? Mộtframework định nghĩa các dịch vụ lựa chọn, và cung cấp một giải thích cho việcđịnh nghĩa thành phần nào là một thành phần cung cấp Như thế, một thành phần sẽ
có khả năng được mở rộng rất lớn và các thành phần mới có thể tương tác mạnh mẽvới những cái đã có Chúng cộng tác với các chi tiết, khía cạnh cụ thể của các vấn
đề được cân nhắc bởi framework Các thành phần ứng dụng có thể còn chứng minhcho tính tương thích với các vấn đề khác, như ngữ nghĩa của dữ liệu mà chúngchuyển qua Các bộ phận phụ thuộc có thể được giới thiệu như là các thành phầncủa framework Sự thi hành các thành phần này có thể cùng framework xác địnhmột dịch vụ và cung cấp các dịch vụ này cho các thành phần khác
1.1.3 Phân biệt framework với các khái niệm khác
Một mẫu thiết kế khác với một framework ở ba điểm Thứ nhất, một mẫu thiết
kế là trừu tượng hơn một framework, bởi vì một framework được bao gồm cả mã,trong khi đó chỉ các mẫu thiết kế mới cần được mã hóa Các mẫu thiết kế thậm chíchỉ mô tả mục đích, việc cân bằng các yếu tố khác để đạt được sự kết hợp tốt nhất
và các kết quả của một thiết kế Trong trường hợp này có nghĩa là nó chưa thể là
một thành phần của một framework Thứ hai, các mẫu thiết kế là những kiến trúc
nhỏ hơn so với các framework Do vậy, một framework có thể chứa một số các mẫuthiết kế, nhưng điều ngược lại là không thể Do vậy, các mẫu thiết kế không có ảnh
hưởng lớn tới kiến trúc của ứng dụng Cuối cùng, các framework được chuyên môn
hóa hơn so với các mẫu thiết kế Các framework luôn luôn liên quan đến một miềnứng dụng cụ thể, trong khi đó các mẫu thiết kế là chung và có thể được ứng dụngtrong bất kỳ miền ứng dụng nào
Các ngôn ngữ mẫu khác với framework theo cách mà một ngôn ngữ mẫu miêu
tả: làm như thế nào để tạo ra một thiết kế Trong khi đó, một framework hướng đốitượng là một thiết kế Các ngôn ngữ mẫu bổ sung cho một framework, do chúng cóthể hướng dẫn các kỹ sư phần mềm sử dụng framework như thế nào, và mô tả tạisao nó lại được thiết kế như vậy
Trang 17Một ứng dụng hướng đối tượng khác với một framework ở chỗ, một ứng dụng
mô tả một chương trình thực hiện phức tạp mà thỏa mãn các yêu cầu cụ thể đặt ra.Framework đạt được các tính năng của một ứng dụng nhưng nó không thể thi hànhđược bởi vì nó không bao gồm các tương tác trong trường hợp ứng dụng cụ thể
Các framework khác với các thư viện lớp ở chỗ: chúng nhắm tới các miền ứng
dụng cụ thể Trong khi đó, các thư viện lớp cung cấp cho người sử dụng các sự thựchiện trước của thuật toán Các thư viện lớp là thụ động, người sử dụng gọi đến cácphương pháp trong thư viện lớp để thực hiện một số hoạt động Trong khi đó cácframework định nghĩa khung khổ cho một ứng dụng thực tế và quản lý các luồngđiều khiển trong ứng dụng Các framework có thể khác so với thư viện lớp, nhưngchúng có thể sử dụng các thư viện lớp đã có sẵn để thực hiện các thuật toán chung
và các cấu trúc dữ liệu
Các thành phần phần mềm ban đầu đã được dự định là các thành phần chứcnăng riêng lẻ mà có thể được đầu tư từ nhà cung cấp và tích hợp vào trong các ứngdụng Các framework dường như là những thành phần mà có thể được đầu tư từ nhàcung cấp và nhiều hơn một framework có thể được sử dụng trong một ứng dụng.Tuy nhiên, một điểm khác dễ nhận thấy giữa chúng là các framework cung cấp một
bộ rộng hơn các dịch vụ so với các thành phần phần mềm Chúng có khả năng tùybiến nhiều hơn, có các giao diện phức tạp hơn và điều quan trọng hơn là chúng thực
sự định nghĩa cho một họ ứng dụng hoặc một diện rộng của các ứng dụng Do vậy,các framework là khó học hơn đối với các nhà phát triển, nhưng một khi đã hiểuđược hết framework thì sẽ có được sự linh động cao hơn và với một frameworkđược thiết kế tốt thì có thể giảm được các nỗ lực cần bỏ ra để xây dựng một ứngdụng đã được tùy biến một cách đáng kể
Trong khi các framework và các thành phần là các kỹ thuật khác nhau, chúng
nên được xem và được sử dụng như các kỹ thuật cộng tác với nhau Với cácframework có thể sử dụng các thành phần và các ứng dụng được phát triển sử dụngcác framework thậm chí có thể tiện dụng hơn các thành phần Ví dụ, một ứng dụngVisual C++ được tạo với MFC framework, thậm chí có thể sử dụng các thành phần
Trang 18ActiveX trong giao diện của nó giống như việc trao đổi với các thành phần ActiveXđược đóng gói trong MFC framework Một ví dụ khác cho sự phụ thuộc lẫn nhaugiữa các framework và thành phần là việc sử dụng các framework để tạo các thành
phần mới, ví dụ, framework Active Template Library (ATL) của Microsoft được sử
dụng rộng rãi trong việc tạo các thành phần ActiveX
1.1.4 Các đặc điểm của framework
Một framework hướng đối tượng có bốn đặc điểm chính sau :
Khả năng môđun hóa
Khả năng sử dụng lại
Khả năng mở rộng
Sự đổi chiều của điều khiển
Về đặc điểm thứ nhất, các framework tăng cường khả năng môđun hóa bằngcách đóng gói các chi tiết thực hiện không chắc chắn đằng sau các giao diện chắcchắn Khả năng này giúp cho việc tăng cường chất lượng của phần mềm bằng cáchcục bộ hóa các tác động của những thay đổi về kiến trúc và sự thực hiện Sự cục bộhóa này giảm các nỗ lực được yêu cầu để hiểu và duy trì phần mềm hiện có
Mặt khác, các giao diện chắc chắn được cung cấp bởi các framework còn tăngcường khả năng sử dụng lại bằng cách định nghĩa các thành phần chung mà có thểđược áp dụng để tạo ra các ứng dụng mới Khả năng sử dụng lại của frameworktăng cường kiến thức của miền ứng dụng và các nỗ lực của các nhà phát triển cókinh nghiệm để tránh việc tạo và làm lại các giải pháp chung cho các yêu cầu củaứng dụng lặp lại và cũng như các thách thức tiến hành trong thiết kế phần mềm.Việc sử dụng lại các thành phần thiết kế có thể là một sự cải tiến đáng kể trong sảnxuất chương trình, cũng như tốt cho việc nâng cao chất lượng, tính hiệu quả, độ tincậy và tính sẵn sàng của phần mềm
Về khả năng mở rộng, một framework tăng cường khả năng mở rộng bằngcách cung cấp các điểm nóng tường minh cho phép các ứng dụng mở rộng các giao
Trang 19diện chắc chắn và cách ứng xử của vùng ứng dụng với các thay đổi được yêu cầucho các trường hợp của ứng dụng trong một ngữ cảnh cụ thể Khả năng mở rộngcủa framework là cần thiết để đảm bảo các sự điều chỉnh có tính thời gian của cácdịch vụ và tính năng ứng dụng mới.
Cuối cùng, đặc điểm của kiến trúc cho thời gian chạy của một framework là sự
đổi chiều của điều khiển, thường được gọi là “Nguyên tắc Hollywood”- Đừng gọi cho chúng tôi, chúng tôi sẽ gọi cho bạn Kiến trúc này cho phép ứng dụng hợp với
các quy tắc tiêu chuẩn nhờ việc điều chỉnh từng bước các xử lý thông qua các đốitượng quản lý sự kiện mà được tham chiếu đến do cơ chế gửi kích họat ngược trởlại của framework Khi các sự kiện xảy ra, framework gửi lại kích hoạt bằng cáchchỉ dẫn phương pháp móc nối trên các đối tượng quản lý sự kiện đã được đăng kýtrước để thực hiện việc xử lý ứng dụng cụ thể dựa trên các sự kiện Việc đổi chiềuđiều khiển này cho phép framework định nghĩa một tập các phương pháp ứng dụng
cụ thể để đáp ứng với các sự kiện ở bên ngoài
1.2 Phân loại khung làm việc
Framework hướng đối tượng có thể được phân loại theo nhiều chiều khác
nhau, trong đó những chiều quan trọng nhất là vùng vấn đề mà framework trỏ tới,
cấu trúc bên trong của framework và việc nó dự định sử dụng như thế nào
Với cách phân loại thứ nhất, người ta chia các khung làm việc thành các
khung làm việc ứng dụng, khung làm việc miền ứng dụng và khung làm việc trợ giúp
Với phân loại theo cách thức dự định sử dụng, các khung làm việc chia thành
các khung làm việc hộp đen, các khung làm việc hộp trắng và các khung làm việc
hộp xám.
1.2.1 Phân loại framework theo vùng vấn đề
Việc phân loại theo vùng vấn đề chia các framework ba loại là các khung làm
việc ứng dụng, các khung làm việc miền ứng dụng và các khung làm việc hỗ trợ.
Trang 20Một khung làm việc ứng dụng là một tập của các thành phần với một thiết kế
ứng dụng có thể được sử dụng lại Điều này có nghĩa rằng, người dùng khôngnhững nhận được một tập con mã chức năng mà còn bắt đầu với cả một thiết kế vềcách mà chúng làm việc như thế nào Điều này cũng có nghĩa là, một frameworkứng dụng có thể cung cấp nhiều tính năng hơn các thư viện hàm, vì về cơ bản cácthư viện hàm là không phụ thuộc vào nhau
Loại thứ hai là phân loại khung làm việc theo vùng vấn đề của một miền ứng
dụng Các framework này đạt được kiến thức và sự tinh thông trong một vùng vấn
đề cụ thể
Loại cuối cùng theo cách phân loại này là các khung làm việc hỗ trợ Các
framework hỗ trợ là các framework mà phục vụ cho các dịch vụ mức thấp của hệthống như các trình điều khiển cho các thiết bị và bộ điều khiển truy nhập tệp Nhàphát triển ứng dụng sử dụng các framework hỗ trợ trực tiếp hoặc sử dụng các sựđiều chỉnh được tạo ra bởi các trình cung cấp của hệ thống Các framework hỗ trợ
có thể được tùy biến, ví dụ khi phát triển một hệ thống mới hoặc trình điều khiểnthiết bị mới
1.2.2 Phân loại framework theo cấu trúc nội bộ
Nếu như cấu trúc nội tại của framework được miêu tả thì nó có thể làm choviệc hiểu cách ứng xử của framework dễ dàng hơn Cấu trúc nội tại của mộtframework liên quan tới các khái niệm về các kiến trúc phần mềm Những kiến trúc
này được gọi là “các khung làm việc kiến trúc”, do chúng được thiết kế theo cách để
đạt được cấu trúc vững chắc của một kiến trúc phần mềm hướng đối tượng Nguyêntắc tổng thể cho cấu trúc nội tại của một framework được mô tả qua đặc trưng kiến
trúc của nó Các framework có tính kiến trúc đã được mô tả là:
Layered (kiến trúc phân tầng), giúp cho cấu trúc các ứng dụng có thể được
phân rã thành các nhóm của các công việc con với mức trừu tượng khác nhau định
vị ở tầng khác nhau
Pipes and Filters (kiến trúc ống và bộ lọc), có thể được dùng để cấu trúc các
ứng dụng có thể được chia thành một vài các công việc con hoàn toàn độc lập, đượcthực hiện theo trình tự nối tiếp hoặc song song đã được xác định một cách rõ ràng
Trang 21Model-View-Controller (kiến trúc MVC), định nghĩa một kiến trúc cho các
ứng dụng có tính tương tác, chia tách giữa giao diện của ứng dụng với các chứcnăng chủ yếu của nó: mô hình xử lý và dữ liệu
Presentation-Abstraction-Controller (kiến trúc trình diễn-Trừu tượng-Điều khiển), kiến trúc này là thích hợp để cấu trúc các hệ thống phần mềm mà có tính
tương tác cao với người sử dụng, cho phép những điều khiển và trình diễn của các
mô hình trừu tượng của hệ thống có thể được tạo bên ngoài các chức năng con vàđộc lập với mỗi cái khác
Reflective (kiến trúc phản ánh), có khả năng áp dụng cho các ứng dụng mà cần
phải cân nhắc về một sự thích nghi trong tương lai do sự thay đổi môi trường, côngnghệ và các yêu cầu khác, mà không cần phải thay đổi về kiến trúc và cách thựchiện của nó
Microkernel là phù hợp cho các hệ thống phần mềm cần cung cấp các khung
nhìn khác nhau dựa trên các chức năng của chúng và phải thích nghi với các yêucầu của hệ thống Ví dụ của microkernel của các hệ điều hành
Blackboard (kiến trúc bảng đen), giúp để cấu trúc các ứng dụng phức tạp mà
liên quan tới một vài hệ thống con chuyên biệt cho các lĩnh vực khác nhau Các hệthống con này phải hợp tác để xây dựng các giải pháp cho việc giải quyết các vấnđề
Broker (kiến trúc môi giới), cấu trúc các hệ thống phần mềm phân tán, trong
đó các thành phần tương tác khác nhau giao tiếp với nhau khi vận hành thông quatruyền thông như trong một mô hình chủ khách
Việc sử dụng các kiến trúc này như là một nguyên tắc thiết kế chủ yếu chomột framework Điều đó có nghĩa là, các kiến trúc này là các ứng cử viên tốt choviệc ứng dụng các mẫu thiết kế hướng đối tượng cũng như cho việc phát triểnframework
Trang 221.3 Các phương pháp phát triển framework
Quá trình phát triển một framework phụ thuộc vào kinh nghiệm của việc tổ chứccác thành phần trong miền vấn đề mà nó chỉ ra Tổ chức có nhiều kinh nghiệm hơn
có thể lựa chọn quy trình phát triển hiện đại hơn vì họ sẽ có ít vấn đề hơn với miềnvấn đề Một số quy trình khả thi cho việc phát triển framework đã được đưa ra:
1.3.1 Quy trình phát triển dựa trên các kinh nghiệm ứng dụng
Hướng phát triển framework mang tính thực dụng được miêu tả [10] Trướchết phát triển n ứng dụng, ít nhất từ hai ứng dụng trong miền vấn đề Khi chúng làmviệc đúng thì việc lắp lại đầu tiên trong quy trình bắt đầu như hình 3.3 Phân loạicác đặc điểm chung trong cả hai ứng dụng và kiết xuất chúng thành một
framework Để đánh giá liệu các đặc điểm được kiết xuất ra có đúng không, pháttriển lại các ứng dụng (n) dựa trên framework đó Điều này có lẽ khá dễ dàng nếucác đặc tính chung được phân loại đúng Nếu việc phát triển lại các ứng dụng không
dễ dàng thì việc viết lại framework là cần thiết và sử dụng kinh nghiệm đã có đểphát triển bản tiếp theo của framework Đây là cách thức cho lần lặp thứ hai và tất
cả các lần lặp tiếp theo cho ở trong hình 1.2 Dựa trên phiên bản mới của
framework, các ứng dụng mới có thể được phát triển Các kinh nghiệm đạt đượcthông qua các ứng dụng mới cũng được sử dụng như là đầu vào cho việc bảo trì framework theo tiến độ Toàn bộ quy trình được thể hiện trong hình 1.2.
Hình 1.2: Phát triển framework dựa trên kinh nghiệm ứng dụng [10]
Trang 231.3.2 Quy trình phát triển framework dựa trên phân tích miền vấn
đề
Một hướng tiếp cận phức tạp hơn cho việc phát triển một framework là phântích miền vấn đề Quy trình phát triển được chỉ ra trong hình 1.3 Hoạt động đầutiên đó là phân tích miền vấn đề để phân loại và hiểu các thành phần trừu tượng nổibật trong miền vấn đề Phân tích tên miền đòi hỏi phân tích các ứng dụng hiện có(đây là một nhiệm vụ khó thực hiện) và chỉ có thể nếu tổ chức có các ứng dụngđược phát triển trong miền vấn đề Việc phân tích các ứng dụng hiện có cũng sẽchiếm một tỷ lệ lớn ngân sách
Hình 1.3: Quy trình phát triển framework dựa trên phân tích miền vấn đề [10]
Sau khi các lớp trìu tượng được nhận biết, phát triển framework cùng với mộtứng dụng kiểm tra, (sử dụng mũi tên như trong hình 1.3), sau đó điều chỉnh khunglàm việc nếu cần thiết Tiếp theo, phát triển một ứng dụng thứ hai dựa trênframework này Thay đổi framework nếu cần thiết và sửa đổi ứng dụng đầu tiên để
nó có thể làm việc với những thay đổi đưa ra Hãy để framework vận hành thôngqua các hoạt động bảo trì có kế hoạch, trong khi đó tiếp tục phát triển thêm nhiềuứng dụng dựa trên nó
Trang 241.3.3 Quy trình phát triển framework sử dụng các mẫu thiết kế
Quy trình phát triển một framework dựa trên mẫu thiết kế thực dụng có thểđược nhận ra như chỉ rõ trong hình 1.4 Trước hết, phát triển một ứng dụng trongmiền vấn đề Thứ hai, thiết lập và đào tạo nhân viên theo bộ chuẩn của các mẫuthiết kế Lấy ứng dụng và áp dụng theo hệ thống mẫu thiết kế để tạo ra framework.Sau đó lặp lại giữa phát triển ứng dụng và framework có thể xảy ra Đồng thời trongquy trình này cũng tồn tại các hoạt động bảo trì framework theo kế hoạch
Hình 1.4: Quy trình phát triển framework sử dụng các mẫu thiết kế [10]
1.3.4 Quy trình phát triển framework chung
Các yếu tố chung của quy trình phát triển framework được chỉ trong hình 1.5:
− Phân tích tên miền vấn đề Điều này được thực hiện một cách hệ thống hoặcthông qua phát triển một hoặc một vài ứng dụng trong miền và lớp trìu tượngchính (key abstraction) được nhận ra
− Phiên bản đầu tiên của framework được phát triển nhằm tận dụng các lớp trìutượng chính (key abstraction) được tìm thấy
− Một hoặc có thể một vài các ứng dụng được phát triển dựa trên frameworknày Đây là hoạt động kiểm tra framework để xem liệu nó có thể tái sử dụng
Trang 25được hay không, và giống như hoạt động phát triển một ứng dụng dựa trênframework.
− Các vấn đề khi sử dụng khung làm việc trong việc tạo ra các ứng dụng đều có
và được giải quyết trong phiên bản tiếp theo của khung làm việc
− Sau khi lặp lại chu kỳ này một số lần, khung làm việc sẽ đạt được một cấp độchín muồi có thể chấp nhận được và có thể được đưa ra cho nhiều người dùngtái sử dụng trong tổ chức
Hình 1.5: Quy trình phát triển khung làm việc chung [10]
Trong thực tế, người ta không áp dụng mỗi phương pháp một cách riêng lẻ,
mà thường kết hợp các ý tưởng của các phương pháp trên, tùy thuộc vào lớp các bàitoán cụ thể và những khả năng có được để đưa ra một cách làm phù hợp và hiệuquả.
Trang 261.4 Giới thiệu khung làm việc Higgin Trust
1.4.1 Tổng quan về khung làm việc Higgin Trust
Higgins là một framework cho phép người dùng và doanh nghiệp tích hợpthông tin về nhận dạng, hiện trạng, các mối quan hệ giữa các hệ thống Sử dụng lớpcontext providers, hệ thống sẵn có cũng như hệ thống mới như các xí nghiệp, tổchức và các công nghệ liên lạc (như LDAP, email, IM,…) có thể gắn vào Higginsframework Sử dụng Higgins API có thể tích hợp ảo thông tin nhận dạng, hiện trạng
và mối quan hệ giữa các hệ thống phức hợp Higgins thiết kế với mục đích giúpngười phát triển ứng dụng truy cập thông tin thông qua trình duyệt, dịch vụ web Ứng dụng có thể sử dụng Higgins để tạo khung nhìn thống nhất về thông tinnhận dạng và các mối quan hệ Lĩnh vực tập trung nhất của Higgins là cung cấp cơ
sở cho nhận dạng thông tin người dùng và ứng dụng quản lý thông tin cá nhân.Higgins cung cấp sự tích hợp ảo, liên kết, quản lý và khả năng tìm kiếm cho thôngtin nhận dạng, các mối quan hệ giữa các hệ thống khác biệt
Các dịch vụ của Higgins dựa trên các plug-in ContextProviders làm cầu nối
giữa framework và hệ thống sẵn có, hoặc giữa framework đến các hệ thống sẽ xâydựng sau này Mỗi ContextProvider thi hành một context nào đó Context được hiểu
là “môi trường và hoàn cảnh xung quanh quyết định đến ý nghĩa của nhận dạng số
và các chính sách, giao thức chi phối sự tương tác giữa chúng”[eclipse.org/higgins]
Một Context có thể bao gồm thông tin về một số đối tượng đơn lẻ hoặc mô tảmột nhóm các đối tượng số như một đội dự án, một văn phòng, tổ chức, gia đình,nhóm khách hàng,… ContextProviders thường hoạt động như “cầu nối” giữaframework với hệ thống sẵn có “Cầu nối” này cung cấp kết nối đến kho lưu trữ nhưLDAP server, hệ thống quản lý nhận dạng, diễn đàn, và các mạng xã hội Nó cũng
có thể kết nối với các mạng giao tiếp như email, instance message,…
Kiến trúc dịch vụ của Higgins framework cho phép ứng dụng mở rộng phạm
vi truy cập đến các hệ thống ngoài mà không cần phải thay đổi bản thân ứng dụng
Trang 27Hình 1.6: Higgins Trust Framework
1.4.2 Các thành phần của Higgins
Higgins gồm 12 thành phần: Higgins Browser Extension, RP Enablement, Card Manager, RP Protocol Support, ISS Client UI, I-Card Selector Service (ISS),I-Card Registry, I-Card Provider, Token Service, Token Provider, Identity AttributeService (IdAS), Context Provider được tổ
I-chức như ở hình 1.7
a Browser Extension
Chúng ta sẽ lần lượt tìm hiểu các thành phần của Higgins framework
Hình 1.7: Kiến trúc của Higgins
Trang 28Higgins Browser Extension là một mở rộng trình duyệt Firefox viết bằngjavascript Khi Higgins Extension được cài đặt và trình duyệt duyệt đến một site đốitác, Higgins Browser Extension quản lý quyền truy cập và các tương tác liên quanđến định danh tương tác giữa site đối tác và dịch vụ Higgins.
b RP Enablement
RP Enablement là tập hợp các thành phần sử dụng để tạo site đối tác Cácthành phần con tách biệt trong mục này sẽ được tạo ra để hoạt động như các dịch vụtin tưởng cho lớp các giao thức khác nhau
Hình 1.8: RP Enablement
c I-Card Manager
Cung cấp giao diện quản lý web-based đến I-Card của người dùng và ưu tiên
dữ liệu ngữ cảnh Thành phần này được truy cập bởi một nút bấm được thêm vàothanh công cụ của trình duyệt
Hiện nay, thành phần này đang được phát triển trên ngôn ngữ java, các
thành phần con base-web sử dụng công nghệ JSP/Servlets, JSF, AJAX,JavaMail,…
Trang 29d RP Protocol Support
Cung cấp hỗ trợ cho client, bao gồm cả Higgins Browser Extension
Thành phần này hỗ trợ cho
− Giao diện người dùng
− Mẫu tương tác giữa các đối tác
− Hỗ trợ cho openID 2.0: openID là một framework mã nguồn mở để quản lý IDcho chủ yếu các website
e ISS Client UI
Cung cấp mọi giao diện người dùng và khả năng tạo mới thẻ CardSpace tươngthích Nó cung cấp chức năng tương tự như CardSpace trên Windows Vista ISSClient UI được gọi bởi RP Protocol Support trên máy khách của người dùng
f I-Card Selector Service
I-Card Selector Service ghép chính sách an ninh của đối tác tới một hoặcnhiều I-Card thỏa mãn chính sách đó Hay nói cách khác, I-Card Selector Service cốgắng đưa ra một I-Card thích hợp với nhu cầu của đối tác
g I-Card Registry
Thành phần Card Registry quản lý tập các Card của người dùng Mỗi Card được tạo và quản lý bởi một I-Card Provider và thi hành giao diện I-CardInterface
I-Các giao diện của I-Card Registry có hai phần:
− Một giao diện để quản lý I-Card như thêm mới, xóa bỏ và duyệt các I-Card
− Tập các giao diện thi hành bởi I-Card Provider
h I-Card Provider
I-Card Provider chịu trách nhiệm tạo và quản lý các I-Card thi hành giao diệnI-Card Interfaces Thành phần này cũng chịu trách nhiệm nhập I-Card từ các loại dữ
Trang 30liệu card khác nhau Lưu ý là I-Card Provider chỉ chịu trách nhiệm nhập dữ liệu,việc xuất dữ liệu được thi hành bởi chính lớp I-Card.
Higgins framework hiện đang thi hành các I-Card Provider sau:
− CardSpace Managed I-Card Provider
− CardSpace Personal I-Card Provider
− URI Managed I-Card Provider
− URI Personal I-Card Provider
k Token Service
Token Service tạo nhận dạng số dùng được cho đối tác từ dữ liệu yêu cầu Dữliệu yêu cầu có thể truyền bởi I-Card Provider đến Token Service sau đó đến TokenProvider hoặc Token Issuer có thể nhận dữ liệu từ I-Card Provider
Thuật ngữ Token Service trong Higgins còn được sử dụng thay cho SercurityToken Service (STS) Token Service thi hành OASIS WS-Trust chuẩn và cung cấp
hỗ trợ cho việc triển khai trong nhiều tình huống [eclipse.org]
Hình 1.9: Kiến trúc Token Service
Trang 31l Token Provider
Token Provider cung cấp việc đóng gói cho các token cho Token Service
m Identity Attribute Service
Để hỗ trợ môi trường động nơi nguồn của thông tin định danh có thể thay đổi,cần thiết phải cung cấp một phương thức chung cho việc truy cập thông tin địnhdanh và thuộc tính từ các kho định danh Identity Attribute Service cung cấp khungnhìn thống nhất về thông tin định danh Identity Atrribute Service bao gồm các dịch
vụ như: nạp ngữ cảnh, mở ngữ cảnh từ các ngữ cảnh khác, xác nhận thẩm quyềntrong quá trình ngữ cảnh mở, truy cập nội dung của ngữ cảnh mở và xem xét đốitượng số và các thuộc tính, các mối liên kết của đối tượng số bên trong các ngữcảnh Identity Attribute Service hỗ trợ quản lý các thuộc tính của đối tượng số liênkết bên trong các ngữ cảnh Các hàm giao diện của Identity Attribute Service có thểtruy cập được thông qua ngôn ngữ java hoặc ác ngôn ngữ khác cũng như thông quaWSDL và HTTP/XML
n Context Provider
Một context Provider hỗ trợ cho một hoặc nhiều loại ngữ cảnh của Higginsframework Một Context Provider chịu trách nhiệm quản lý dữ liệu bên trong, antoàn, mã hóa,… Context Provider cung cấp khả năng chuyển đổi dữ liệu một hoặchai chiều từ cấu trúc bên trong nó đến mô hình dữ liệu Identity Attribute Servicethông thường Trong nhiều trường hợp Context Provider hoạt động như cầu nối củacác dịch vụ sẵn có như hệ thống giao tiếp, mạng xã hội, dịch vụ cung cấp định danh,các trò chơi, ứng dụng doanh nghiệp,… Thêm vào các dịch vụ web, ContextProvider có thể nối liền ứng dụng phía client như email, instance message và cácứng dụng cộng tác khác
Hiện nay Higgins dự kiến phát triển khoảng 3 - 5 Context Provider với mụcđích các đối tác có thể sử dụng chúng cho dự án của họ
1.4.3 Mô hình dữ liệu của Higgins
Để xây dựng mô hình dữ liệu, Higgins đưa ra các khái niệm cơ bản, đưa ramục đích của mô hình từ đó xây thiết kế mô hình dữ liệu
Trang 32Chúng ta cần xem xét một số khái niệm cơ bản trong mô hình dữ liệu củaHiggins và nghiên cứu mục tiêu của mô hình.
a Các khái niệm dữ liệu cơ bản
Mỗi đối tượng số bên trong một ngữ cảnh có một định danh duy nhất làSubjectId Định danh này duy nhất bên trong không gian tên hoặc định nghĩa bởiContext C1 hoặc các Context C2 mà C1 kế thừa
Ví dụ, một Context bao gồm nhiều đối tượng số như: thư mục, nhóm dự án, hệthống giao tiếp,… Cũng có những Context thường bao gồm một đối tượng số duynhất như: thẻ tín dụng, thẻ nghiệp vụ, và các thiết bị an ninh khác,…
Digital Subject
Đối tượng số là một thực thể mô tả hoặc nằm trong lĩnh vực số đang đề cậpđến [originally from Kim's Laws, "person or thing" replaced with entity by PaulT]Đối tượng số sử dụng Higgins có những đặc điểm sau:
− Một đối tượng số gồm nhiều thuộc tính định danh, và có thể không có thuôctính nào cả
− Một vài thuộc tính định danh có thể là quan hệ tham chiếu đến đối tượng sốkhác trong cùng ngữ cảnh hoặc giữa các ngữ cảnh với nhau
− Do ngữ cảnh có thể là cấu trúc lồng, nên liên kết giữa các đối tượng số liênquan đến những ngữ cảnh đó cung cấp một cái nhìn tổng quan của một đốitượng số
Trang 33− Không có một ràng buộc ngầm định giữa các đối tượng số Ví dụ một người
có thể đòi hỏi tên của họ là Joe trong một đối tượng số này, nhưng trong đốitượng số khác tên của người đó là JoAnn
Giá trị của thuộc tính định danh có thể là một kiểu dữ liệu nguyên thủy, hoặc
dữ liệu phức như struct,…Có một thuộc tính định danh đặc biệt là SubjectRelationshop (quan hệ đối tượng) có giá trị là tham chiếu đến đối tượng số kháctrong cùng ngữ cảnh hay ngữ cảnh khác
Một vài thuộc tính định danh được định nghĩa bởi ngữ cảnh chứa đối tượng số
để đưa ra những giá trị khác nhau Ví dụ thuộc tính “thời tiết” có thể có các giá trị{“nắng”, “mưa”, “nhiều mây”},…
b Mục tiêu của mô hình
Mục tiêu đặt ra cho mô hình dữ liệu này là:
− Mô hình dễ dàng mở rộng, sau này dễ dàng thêm vào các thuộc tính và quan
hệ
− Cho phép các đối tượng được định danh duy nhất
− Các đối tượng có thuộc tính quan hệ tham chiếu đến các đối tượng khác, cácthuộc tính này được nhóm lại thành tập hoặc chuỗi
− Mọi đối tượng và thuộc tính của nó đều được gán địa chỉ
− Mọi thuộc tính được định danh bởi một địa chỉ URI toàn cục duy nhất
− Hỗ trợ đa ngữ cảnh
Trang 34− Mỗi ngữ cảnh có thể định danh duy nhất
− Các ngữ cảnh có thể liên kết một – một hoặc một – nhiều với các ngữ cảnhkhác
− Giản đồ mô tả phải khả thi
1.5 Khung làm việc View-Model-Controler (VMC)
1.5.1 MVC là gì?
MVC là chữ viết tắt của Model-View-Controller, một mẫu kiến trúc(architectural pattern) được tạo ra nhằm giải quyết các vấn đề phát sinh cũng nhưcác giải pháp tổ chức mã trong quá trình phát triển phần mềm Khi sử dụngđúng cách, mẫu MVC giúp cho người phát triển phần mềm cô lập các nguyên tắcnghiệp vụ và giao diện người dùng một cách rõ ràng hơn Phần mềm phát triển theomẫu MVC tạo nhiều thuận lợi cho việc bảo trì vì các nguyên tắc xử lý nghiệp vụ vàgiao diện ít có liên quan với nhau
1.5.2 Lịch sử MVC
Bắt đầu vào những năm 70 của thế kỷ 20, tại phòng thí nghiệm XeroxPARC ở Palo Alto Sự ra đời của giao diện đồ họa (Graphical User Interface) và lậptrình hướng đối tượng
(Object Oriented Programming) cho phép lập trình viên làm việc với những thànhphần đồ họa như những đối tượng đồ họa có thuộc tính và phương thức riêng của
nó Không dừng lại ở đó, những nhà nghiên cứu ở Xerox PARC còn đi xa hơn khicho ra đời cái gọi là kiến trúc MVC (viết tắt của Model – View – Controller) Kiếntrúc MVC đã được ứng dụng để xây dựng rất nhiều thư viện đồ họa khác nhau Tiêubiểu là bộ thư viện đồ họa của ngôn ngữ lập trình hướng đối tượng SmallTalk (cũng
do Xerox PARC nghiên cứu và phát triển vào thập niên 70 của thế kỷ 20) Ngàynay, trong nhiều các nền tảng lập trình chúng ta thấy sự có mặt của mô hình MVC,
có thể kể đến:
- Swing Components của Java
- Document View Architecture trong Microsoft Visual C++ (VC++)
- QT4(KDE)
Trang 35- Apple’s Cocoa (Core Data)
1.5.3 Vai trò của các thành phần M-V-C trong Web framework
+ Dispatcher: Lớp điều phối hướng các điều khiển đi mức cao hơn
+ Request: xử lý một phần dữ liệu đầu vào ở mức GET, POST
+ Session: xử lý một phần dữ liệu đầu vào ở mức SESSION
Tùy theo dữ liệu đầu vào, Controller sẽ thực hiện các phép lọc (với dịch vụ lấy
từ Model), các tính toán lựa chọn (Action Mapping) dựa trên kiến trúc và cấu hìnhnhằm xác định thành phần lớp chính sẽ thực hiện yêu cầu của người dùng.Hiểu một cách đơn giản, Controller là thành phần trung gian giữa View vàModel Nó nhận dữ liệu nhập vào qua View, sau đó gọi Model tương ứng rồi lấy kếtquả trả về từ Model này Tiếp theo, một View thích hợp sẽ được lựa chọn.Controller sẽ chuyển tiếp dữ liệu vào view để nó xử lý
Một số hoạt động thường thấy của Controller:
- Tạo form, gửi tin nhắn đến form để yêu cầu kiểm tra dữ liệu
Trang 36- Tạo các dịch vụ liên quan đến nghiệp vụ ứng dụng, yêu cầu các lớp dịch vụtương tác với nguồn dữ liệu để trả về hay thay đổi trạng thái dữ liệu: thực hiện cácthao tác chuyển đổi dữ liệu, kiểm tra quyền truy cập trên một hoạt động cụ thể,tương tác với database, tương tác với các web services.
- Tạo đối tượng view, gán các nguồn dữ liệu lấy được từ đối tượng dịch vụ vàocho view
b M - Model
Model là các lớp cung cấp dữ liệu, dịch vụ liên quan đến dữ liệu và các vấn đề
xử lý logic nghiệp vụ Model có thể:
- Đánh giá tính hợp lệ của dữ liệu
- Ví dụ kiểm tra dữ liệu vào có đúng với nguyên tắc của hệ thống không
- Chuyển đổi dữ liệu Ví dụ chuyển đổi định dạng file, chuyển đổi tỉ giá, chuyểnđổi ngôn ngữ…
- Đưa ra quyết định về nghiệp vụ Ví dụ đưa ra các dữ liệu, lời khuyên tư vấnđầu tư dựa trên dữ liệu đầu vào của người dùng và các dữ liệu đang có
- Thực hiện việc xử lý dữ liệu theo một quy trình
Do có hai vai trò tương đối tách biệt cho nên một Model thường được tách thànhcác lớp
Trang 37là một tầng dịch vụ nhằm có thể tái sử dụng giữa các Controller Khi Controller gọiModel thông qua các giao diện lập trình (API) của Model, nó cần biết một số ứng
xử chung của Model
các web framework, View gồm hai phần chính:
- Template file: định nghĩa cấu trúc và cách thức trình bày dữ liệu cho ngườidùng
Ví dụ: như bố cục, màu sắc, khung nhìn
- Phần Logic: xử lý cách áp dụng dữ liệu vào cấu trúc trình bày Logic này có thểbao gồm việc kiểm tra định dạng dữ liệu, chuyển đổi định dạng dữ liệu sang mộtsạng dữ liệu trung gian để có thể hiển thị với cấu trúc template đang có , kiểm tratrạng thái và đặc tính của dữ liệu để lựa chọn một cấu trúc hiện thị phù hợp Bảnthân View cũng là một tổ hợp của nhiều lớp và nó cũng có thể có View con để giảmtải trên một số lớp chính và để sử dụng lại mã Và do vậy tính logic của View có thể
là logic của một cây phân cấp Trong mô hình truyền thống, View có trách nhiệmchuyển đổi dữ liệu hay trạng thái của Model thành cấu trúc trực quan Do vậy dữliệu của Model cần được định nghĩa một cách hợp lý Sự tách biệt của hai thànhphần này sẽ giúp cho người lập trình phân định được một biên giới rõ ràng giữacách thức lưu trữ/lấy dữ liệu và cách trình bày dữ liệu Do vậy tính phức tạp củaquy trình lấy dữ liệu, xử lý dữ liệu cũng như (sự thay đổi của chúng theo thời gian)trước khi trả về sẽ không làm ảnh hưởng đến việc trình bày dữ liệu Rõ ràng sự khácbiệt về công nghệ lấy dữ liệu và công nghệ sinh trang không gây ảnh hưởng đếnứng dụng Điều này khá quan trọng trong việc tích hợp các ứng dụng Ngoài ra,
Trang 38cách làm này thực sự đảm bảo việc tách biệt vai trò của người thiết kế giao diện vớivai trò của lập trình viên thiên về dữ liệu Như vậy khi làm việc theo nhóm, ngườiquản trị dự án có thể tổ chức nhóm phát triển thành các nhóm kĩ năng và phát triểnứng dụng song song với nhau.
Các công nghệ thường được sử dụng ở View là HTML, CSS và JavaScrip
Hình 1.11: Biểu đồ tuần tự một chuỗi MVC đơn giản
Tóm lại, MVC chia trách nhiệm công việc thành ba phần riêng rẽ:
- Phát triển (development): Các nhà phát triển làm việc với model Đặc trưng củaphần.này là tận dụng một cách triệt để kiến thức, kỹ năng của các lập trình viên liênquan tới thuật toán xử lý dữ liệu, quản trị cơ sở dữ liệu
- Thiết kế (design): Các nhà thiết kế làm việc trực tiếp với lớp View, chịu tráchnhiệm tạo ra "cảm quan" cho ứng dụng Họ cần có kinh nghiệm làm việc vớiHTML, CSS, JavaScript và Graphic Design
- Hợp nhất (intergration): phần này tồn tại trong lớp Controller Mục đích chính
là gắn kết developer và designer với nhau Người hợp nhất không cần có nhiều kinhnghiệm làm việc với dữ liệu như lập trình viên nhưng cần nắm rõ cách tổ chức củamột ứng dụng
Mô hình MVC được áp dụng rất nhiều trong các Web framework hiệnnay Các PHP framework phổ biến nhất:
- Zend framework: là sản phẩm của Zend – công ty “bảo trợ” cho PHP Với cáctính năng mạnh mẽ, Zend framework thường được sử dụng cho các công ty lớn, và
Trang 39bạn cần phải có lượng kiến thức khá sâu rộng về PHP để có thể sử dụng được Zendframework.
- CakePHP: là một lựa chọn tốt cho những lập trình viên có kiến thức nâng cao
về PHP Nó dựa trên cùng một nguyên tắc thiết kế với Ruby on Rails (mộtframework dành cho các nhà phát triển các ứng dụng web bằn ngôn ngữRail) Với các hệ thống hỗ trợ, tính đơn giản và mỗi trường mở cao đã giúp choCakePHP trở thành một trong những framework phổ biến nhất hiện nay
- CodeIgniter: một MVC framework viết bằng PHP4 (gần đây đã tương thíchhoàn toàn với PHP 5.3.0 trong phiên bản 1.7.2) Được biết đến như một framework
dễ hiểu và dễ sử dụng CodeIgniter được Rasmus Lerdorf – cha đẻ của ngôn ngữPHP - đánh giá rất cao vì tính tinh giản về cấu trúc, đạt hiệu năng cao khi vận hành.Không giống như Symfony, PHP framework này phục vụ mục đích lý tưởng choviệc xây dưng các ứng dụng chia sẻ, lưu trữ Nó cung cấp các giải pháp đơn giản và
có một thư viện video hướng dẫn phong phú, diễn đàn hỗ trợ, cung cấp sẵn mộthướng dẫn sử dụng cho người mới bắt đầu PHP framework này rất phù hợp chomột người mới làm quen với framework
- Joomla! v1.5.x: một hệ quản trị nội dung nguồn mở được phát triển theo môhình MVC trong các phần mở rộng (extensions), bao gồm các thành phần(components) và các mô đun (modules)
Cảm thấy chưa thỏa mãn với mô hình hiện tại của các framework, chúng tôi đãnghiên cứu và phát triển được một framewok hoàn toàn mới, giải quyết được mọiyêu cầu trong các bài toàn phát triển web
Trang 40Chương 2: MÔ TẢ NGHIỆP VỤ, ĐẶC TẢ BÀI TOÁN TUYỂN SINH TRỰC TUYẾN TẠI CÁC TRƯỜNG ĐẠI HỌC
2.1 Bài toán tuyển sinh và những vấn đề đặt ra
Sau kỳ thi tốt nghiệp THPT, mùa tuyển sinh của các trường Đại học, Cao đẳngchính thức bắt đầu Các trường Đại học, Cao đẳng từ xưa đến nay, hàng năm vẫnphải thực hiện rất nhiều công việc chuẩn bị cho công tác tuyển sinh Do quy chếtuyển sinh của bộ Đại học thường có nhiều thay đổi, điều đó thực sự ảnh hưởng đếnchất lượng của công tác tuyển sinh, đặc biệt là việc thay đổi thích ứng của nhàtrường với các quy định mới đưa ra và thông tin kịp thời đến các thí sinh Sự kiệnnày đòi hỏi phải áp dụng công nghệ thông tin nhằm rút ngắn thời gian thực hiện cáchoạt động xử lý thông tin và trợ giúp việc giao tiếp một cách thuận lợi và nhanhchong giữa các đối tượng liên quan đến quá trình này Một trong các giải pháp đểkhắc phục cho hiện tượng này là sử dụng hệ thống tuyển sinh trực tuyến thông quawebsite Trong điều kiện kênh truyền thông internet đã được kết nối đến tất cả cáctrường, tuyển sinh trực tuyến thông qua website sẽ chiếm ưu thế và phổ dụng
Trong điều kiện mới, để thực hiện việc tuyển sinh có sử dụng trang web, nhàtrường phải thực hiện những nhiệm vụ sau đây:
1 Xác định chỉ tiêu tuyển sinh, có phân chia theo ngành đào tạo
2 Công bố yêu cầu tuyển sinh và tiếp nhận đăng ký qua trang web
3 Tổ chức thi tuyển
4 Tổng hợp kết quả xét tuyển
5 Công bố kết quả và gửi thông báo đến thí sinh
Trước đây chỉ tiêu tuyển sịnh của trường do Bộ Giáo dục và Đào tạo quy định.Gần đây, để phát huy khả năng tự chủ, bộ cho phép các trường tự xác định chỉ tiêutuyển sinh cho mình trên cơ sở vật chất và số lượng giáo viên của trường cùng địnhmức chuẩn mà bộ đưa ra [6]