ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trần Hoài Nam
FRAMEWORK VÀ ỨNG DỤNG CHO MỘT LỚP
BÀI TOÁN QUẢN LÝ
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội - 2012
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trần Hoài Nam
FRAMEWORK VÀ ỨNG DỤNG CHO MỘT LỚP
BÀI TOÁN QUẢN LÝ
Ngành: Công Nghệ Thông Tin
Chuyên ngành: Công Nghệ Phần Mềm
Mã số: 60.48.10
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HOC: PGS. TS Nguyễn Văn Vỵ
Hà Nội - 2012
3
MỤC LỤC
LỜI CAM ĐOAN ............................................................................................................1
LỜI CẢM ƠN ..................................................................................................................2
MỤC LỤC .......................................................................................................................3
BẢNG CHỮ VIẾT TẮT .................................................................................................5
DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ ....................................................................5
MỞ ĐẦU .................................................................................................................... - 7 1. Cơ sở khoa học và thực tiễn của đề tài ............................................................. - 7 2. Đối tƣợng và phạm vi nghiên cứu .................................................................... - 7 3. Cấu trúc của luận văn ....................................................................................... - 7 Chƣơng 1: TỔNG QUAN VỀ KHUNG LÀM VIỆC ................................................ - 9 1.1. Khái niệm về khung làm viêc ........................................................................ - 9 1.1.1. Định nghĩa về khung làm việc ............................................................... - 9 1.1.2. Cấu trúc của một khung làm việc ........................................................ - 10 1.1.3. Phân biệt khung làm việc với các khái niệm khác .............................. - 11 1.1.4. Các đặc điểm của khung làm việc ....................................................... - 13 1.2. Phân loại khung làm việc ............................................................................ - 14 1.2.1. Phân loại khung làm việc theo vùng vấn đề ........................................ - 14 1.2.2. Phân loại khung làm việc theo cấu trúc nội bộ.................................... - 15 1.3. Các qui trình phát triển khung làm việc ...................................................... - 16 1.3.1. Quy trình phát triển dựa trên các ứng dụng kinh nghiệm.................... - 16 1.3.2. Quy trình phát triển dựa trên phân tích vấn đề miền ........................... - 17 1.3.3. Quy trình phát triển sử dụng các mẫu thiết kế..................................... - 17 1.3.4. Quy trình phát triển khung làm việc chung ......................................... - 18 1.4. Phƣơng pháp phát triển khung làm việc ...................................................... - 19 1.4.1. Chuẩn bị cho việc phát triển khung làm việc ...................................... - 20 1.4.2. Thu thập yêu cầu và phân tích ............................................................. - 21 1.4.3. Thiết kế khung làm việc ...................................................................... - 26 1.4.4. Triển khai khung làm việc ................................................................... - 31 1.4.5. Xác minh và thẩm định tính hợp lệ ..................................................... - 32 1.4.6. Các vấn đề trong việc phát triển khung làm việc ................................ - 32 Chƣơng 2: KHUNG LÀM VIỆC CỦA BÀI TOÁN ĐẦU TƢ CHO SẢN XUẤT
NÔNG NGHIỆP ....................................................................................................... - 34 2.1. Vấn đề đặt ra trong sản xuất nông nghiệp và bài toán đầu tƣ ..................... - 34 -
4
2.2. Bài toán đầu tƣ cho sản xuất mía đƣờng ..................................................... - 36 2.2.1. Mô tả bài toán ...................................................................................... - 36 2.2.2. Biểu đồ hoạt động của quy trình đầu tƣ .............................................. - 37 2.2.3. Xác định mô hình miền lĩnh vực đầu tƣ trồng mía .............................. - 38 2.3. Bài toán đầu tƣ cho chăn nuôi bò sữa .......................................................... - 40 2.3.1. Mô tả bài toán ...................................................................................... - 40 2.3.2. Biểu đồ hoạt động của quy trình đầu tƣ .............................................. - 41 2.3.3. Xác định mô hình miền lĩnh vực đầu tƣ chăn nuôi ............................. - 42 2.4. Tổng quát hóa mô hình miền lĩnh vực của đầu tƣ trong nông nghiệp......... - 44 2.4.1. Những vấn đề cần khái quát hóa ......................................................... - 44 2.4.2. Các đối tƣợng nghiệp vụ cần bổ sung ................................................. - 45 2.4.3. Mô hình miền lĩnh vực cho lớp bài toán đầu tƣ trong nông nghiệp .... - 45 2.5. Chuyển mô hình nghiệp vụ sang mô hình lớp thiết kế ................................ - 45 2.5.1. Biểu đồ lớp cho khối lập dự án và ký kết hợp đồng ............................ - 48 2.5.2. Biểu đồ lớp cho khối triển khai thực hiện đầu tƣ ............................... - 49 2.5.3. Biểu đồ lớp thiết kế cho khối thu hoạch sản phẩm.............................. - 49 2.5.4. Biểu đồ lớp thiết kế cho khối kết toán và thanh lý hợp đồng .............. - 50 2.6. Áp dụng mẫu cho thiết kế ............................................................................ - 50 2.6.1. Áp dụng mẫu chiến lƣợc cho khối lựa chọn chiến lƣợc ...................... - 51 2.6.2. Áp dụng mẫu chiến lƣợc cho khối thực hiện đầu tƣ ........................... - 52 2.6.3. Áp dụng mẫu chiến lƣợc cho khối thu hoạch sản phẩm...................... - 53 Chƣơng 3: TRIỂN KHAI ỨNG DỤNG VÀ CÀI ĐẶT CHO BÀI TOÁN ĐẦU TƢ
TRỒNG MÍA ............................................................................................................ - 54 3.1. Mô tả bài toán quản lý đầu tƣ vùng nguyên liệu ......................................... - 54 3.2. Làm thích nghi khung làm việc đối với bài toán đầu tƣ trồng mía ............. - 54 3.2.1. Sửa đổi tên gọi và thuộc tính của các lớp cho phù hợp với nghiệp vụ - 54 3.2.2. Bổ sung các lớp giao diện cho thiết kế ................................................ - 55 3.3. Cài đặt và sử dụng khung làm việc ............................................................. - 57 3.4. Giới thiệu chƣơng trình thử nghiệm ............................................................ - 57 3.4.1. Kiến trúc của hệ thống chƣơng trình ................................................... - 57 3.4.2. Một số giao diện của chƣơng trình ...................................................... - 58 3.5. Hiệu quả chƣơng trình đạt đƣợc .................................................................. - 60 KẾT LUẬN .............................................................................................................. - 61 TÀI LIỆU THAM KHẢO ........................................................................................ - 62 -
5
BẢNG CHỮ VIẾT TẮT
Tên đầy đủ
Viết tắt
Ajax
Asynchronous JavaScript and XML
API
Application Programming Interface
CL
Chiến Lƣợc
CSDL
Cơ Sở Dữ Liệu
MVC
Model-View-Controller
ROI
Return On Investement
DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ
Hình 1.1. Mối quan hệ giữa các thành phần trong một khung làm việc[3]...................... - 10 Hình 1.2. Quy trình phát triển khung dựa trên kinh nghiệm về ứng dụng [8] ................. - 16 Hình 1.3. Quy trình phát triển khung làm việc dựa trên phân tích miền vấn đề [8] ........ - 17 Hình 1.4. Quy trình phát triển khung làm việc sử dụng các mẫu thiết kế [8] .................. - 18 Hình 1.5. Quy trình phát triển khung làm việc chung [8] ................................................ - 19 Hình 1.6. Quá trình phát triển khung làm việc [1] ........................................................... - 20 Hình 1.7. Các quá trình con và sản phẩm của pha Thu thập yêu cầu và Phân tích [1] .... - 22 Hình 1.8. Sự phân chia các yêu cầu [1] ............................................................................ - 23 Hình 1.9. Mối quan hệ giữa mô hình Ca sử dụng và các mô hình khác [1] ..................... - 24 Hình 1.10. Khung làm việc là phần chung của các ứng dụng trong một miền [1]........... - 27 Hình 1.11. Các hoạt động trong pha thiết kế khung làm việc [7] .................................... - 28 Hình 1.12. Các hoạt động trong pha thiết kế kiến trúc [1] ............................................... - 29 Hình 1.13. Nguyên tắc định nghĩa sự công tác giữa các lớp trừu tƣợng [1] .................... - 30 Hình 2.1. Mô hình đầu tƣ cho sản xuất nông nghiệp để nhận sản phẩm.......................... - 35 Hình 2.2. Biểu đồ hoạt động quá trình đầu tƣ cho sản xuất mía đƣờng ........................... - 37 Hình 2.3. Biểu đồ miền lĩnh vực đầu tƣ trồng mía ........................................................... - 39 Hình 2.4. Biểu đồ hoạt động quá trình đầu tƣ cho chăn nuôi bò sữa ............................... - 41 Hình 2.5. Biểu đồ miền lĩnh vực của bài toán đầu tƣ chăn nuôi bò ................................. - 43 -
6
Hình 2.6. Mô hình miền lĩnh vực cho lớp các bài toán đầu tƣ trong nông nghiệp........... - 47 Hình 2.7. Biểu đồ lớp thiết kế khối lập dự án và ký hợp đồng ........................................ - 48 Hình 2.8. Biểu đồ lớp thiết kế khối thực hiện đầu tƣ ....................................................... - 49 Hình 2.9. Biểu đồ lớp thiết kế khối thu hoạch sản phẩm ................................................. - 49 Hình 2.10. Biểu đồ lớp thiết kế khối thanh lý hợp đồng .................................................. - 50 Hình 2.11. Biểu đồ lớp thiết kế khối lựa chọn chiến lƣợc ban đầu .................................. - 51 Hình 2.12. Biểu đồ lớp thiết kế khối lựa chọn chiến lƣợc sau áp dụng mẫu ................... - 52 Hình 2.13. Biểu đồ lớp thiết kế khối thực hiên đầu tƣ sau áp dụng mẫu ......................... - 52 Hình 2.14. Biểu đồ lớp thiết kế khối thu hoạch tƣ sau áp dụng mẫu ............................... - 53 Hình 3.1. Biểu đồ lớp thiết kế khối lập dự án ký kết hợp đồng của bài toán trồng mía .. - 55 Hình 3.2. Biểu đồ lớp thiết kế khối lập triển khai thực hiện đầu tƣ bài toán trồng mía ... - 56 Hình 3.3. Biểu đồ lớp thiết kế khối thu hoạch sản phẩm bài toán trồng mía ................... - 56 Hình 3.4. Giao diện quản lý chính của phần mềm ........................................................... - 58 Hình 3.5. Quản lý hợp đồng trồng mía ............................................................................. - 59 Hình 3.6. Chi tiết hợp đồng đầu tƣ trồng mía................................................................... - 59 Hình 3.7. Quản lý thông tin thửa ruộng............................................................................ - 60 -
-7-
MỞ ĐẦU
1. Cơ sở khoa học và thực tiễn của đề tài
Phần lớn chi phí và các hoạt động liên tục trong phát triển phần mềm là tái tìm
kiếm và tái tạo tạo lại các thành phần cốt lõi. Đặc biệt tính không đồng nhất của các
phần cứng, cùng với sự đa dạng của hệ điều hành và nền tảng truyền thông làm cho
khó khăn để xây dựng chính xác các ứng dụng sao cho dễ dàng thích nghi, thay đổi,
hiệu quả và ít tốn kém từ các khoản ban đầu.
Mô hình khung làm việc (Framework) hƣớng đối tƣợng là một công nghệ đầy
hứa hẹn cho thiết kế và triển khai phần mềm, hƣớng đến làm giảm chi phí, thời gian và
nâng cao chất lƣợng của phần mềm bằng cách sử dụng lại. Sử dụng khung làm việc là
tái sử dụng “phần cốt lõi” của một lớp bài toán đã đƣợc xây dựng sẵn, sau đó sửa đổi,
làm thích nghi nó và bổ sung những thành phần còn thiếu để đƣợc một ứng dụng đầy
đủ cho bài toán cụ thể thuộc về lớp bài toán của khung làm việc.
Khung làm việc hƣớng đối tƣợng ngày nay đã và đang phát triển một cách mạnh
mẽ, nó là hƣớng phát triển khuôn mẫu dùng chung cho một lớp bài toán có những đặc
thù riêng. Cơ sở của nó là phân tích thiết kế hƣớng đối tƣợng và việc sử dụng các mẫu
có khả năng thích nghi cao khi tính đến các tình huống có thể xẩy ra của các bài toán
cụ thể sẽ gặp. Ngày nay có nhiều khung làm việc đã đƣợc phát triển để phục vụ cho tin
học hóa các lớp bài toán khác nhau. Nhờ vậy mà tacó thể giải quyết đƣợc nhiều bài
toán thực tế một cách nhanh chóng và hiệu quả. Đề tài “Framework và ứng dụng cho
một lớp bài toán quản lý” đã đƣợc tôi chọn làm đề tài luận văn của mình.
2. Đối tượng và phạm vi nghiên cứu
Trong luận văn, sau khi đã cứu tổng quan về “khung làm việc” hƣớng đối tƣợng,
dựa trên ý tƣởng chung của một số phƣơng pháp phát triển một khung làm việc, xây
dựng một khung làm việc cho một lớp bài toán “đầu tƣ trong sản xuất nông nghiệp”và
sử dụng khung làm việc này để triển khai một ứng dụng cụ thể. Vì thời gian và khuôn
khổ hạn chế của luận văn, luận văn sẽ không đi sâu trình bày một cách chi tiết về mặt
kỹ thuật các bƣớc xây dựng khung làm việc, vì nhƣ vậy sẽ rất dài và không đủ thời
gian, mà chỉ mô tả khái quát cách làm và đƣa ra kết quả thực hiện của mỗi bƣớc và kết
quả cuối cùng hƣớng đến.
3. Cấu trúc của luận văn
Cấu trúc của luận văn bao gồm các phần sau:
–
Mở đầu: Giới thiệu cơ sở khoa học và thực tiễn của đề tài.
-8–
Chương 1: Giới thiệu tổng quan về khung làm việc hướng đối tượng, bao gồm
các khái niệm, đặc điểm và phân loại khung làm việc hƣớng đối tƣợng.
Chƣơng cũng nêu ra các phƣơng pháp để phát triển một khung làm việc.
–
Chương 2: Phát triển khung làm việc cho lớp bài toán đầu tư trong nông
nghiệp: chƣơng này đƣa ra mô tả khái quát về bài toán đầu tƣ cho nông
nghiệp, cho phép ta nhận biết cấu trúc tổng thể của lớp bài toán đầu tƣ. Nó là
cơ sở để có thể triển khai khung làm việc cho lớp bài toán có cùng cấu trúc
chung này. Tiếp theo nghiên cứu hai bài toán đầu tƣ cụ thể điển hình trong
sản xuất nông nghiệp, từ đó khái quát hóa để đƣợc phần chung cốt lõi của hai
bài toán. Với phần chung này, sử dụng các mẫu thiết kế cấu trúc lại phần cốt
lỗi thành một khung để có khả năng làm thích nghi nó cho những bài toán cụ
thể khác nhau của lớp.
–
Chương 3: Triển khai ứng dụng và cài đặt khung làm việc cho bài toán đầu
tư trồng mía: Xác định các đối tƣợng, yêu cầu cụ thể của bài toán, tìm ra các
lớp của khung cần sửa đổi để phù hợp với bài toán này. Đồng thời bổ sung
thêm vào khung các lớp giao diện vào-ra, để cập nhật dữ liệu vào và đƣa các
dữ liệu ra cho bài toán mía đƣờng và đƣa ra đƣợc một thiết kế đầy đủ. Lựa
chọn môi trƣờng và ngôn ngữ cài đặt, chuyển thiết kế thành chƣơng trình và
chạy thử nghiệm với các dữ liệu thực.
–
Kết luận: Nêu ra những kết quả đã thực hiện trong luận văn và hƣớng phát
triển tiếp tục.
-9-
Chương 1: TỔNG QUAN VỀ KHUNG LÀM VIỆC
1.1. Khái niệm về khung làm viêc
Thiết kế phần mềm là công việc khó và việc thiết kế của phần mềm để có thể sử
dụng lại còn khó 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ái niệm khung
làm việc đƣợc mong đợi sẽ làm tăng tính hiệu quả trong quá trình phát triển phần mềm
của các kỹ sƣ phần mềm.
Khung làm việc định 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 bởi Johnson và Foote 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 cho các giải pháp cho loạt các vấn đề liên quan” [8].
Một định nghĩa tƣơng tự cũng đã đƣợc Johnson đƣa ra năm 1991
“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ể” [8].
Ngoài ra còn một số các định nghĩa khác nhƣ
“Một khung làm việc 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 khung làm việc để tạo ra
một ứng dụng cụ thể” [1].
“Một khung làm việc hƣớng đối tƣợng là một loại kiến trúc phần mềm có thể sử
dụng lại đƣợc cả thiết kế và mã nguồn” [2].
“Một khung làm việc là một tập các đối tƣợng mà cộng tác với nhau để tạo ra
một tập các đáp ứng cho một ứng dụng hoặc một vùng hệ thống con” [1].
“Một khung làm việc 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ể” [8].
Dựa trên các định nghĩa, chúng ta có thể định nghĩa lại khung làm việc định
hƣớng đối tƣợng nhƣ sau
1.1.1. Định nghĩa về khung làm việc
Một khung làm việc bao gồm một tập các lớp mà các thể hiện của chúng cộ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ột khung làm việc. Hơn
- 10 nữa, các khung làm việc đƣợ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ế.[8]
1.1.2. Cấu trúc của một khung làm việc
Một khung làm việc hƣớng đối tƣợng bao gồm 5 thành phần sau [3]:
–
Các tài liệu thiết kế
–
Các giao diện
–
Các lớp trừu tượng
–
Các thành phần
–
Các lớp
hình 1.1 thể hiện mối quan hệ giữa các thành phần khác nhau trong một khung làm
việc:
Các tài liệu
thiết kế
phản ánh
Các giao diện
triển khai
Các lớp trừu tƣợng
triển khai
thừa kế
Các thành phần
là một phần của
Các lớp
Hình 1.1. Mối quan hệ giữa các thành phần trong một khung làm việc [3].
Các thành phần của một khung làm việc đƣợc mô tả nhƣ sau:
Các tài liệu thiết kế: các tài liệu thiết kế của một khung làm việc có thể bao gồm các
lƣợc đồ lớp đƣợc mô tả bằng văn bản, hoặc có thể chi là một vài ghi chú về ý tƣởng
nảy sinh trong đầu tác giả.
Các giao diện: các giao diện mô tả đáp ứng 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 một hệ thống, ví dụ nhu
- 11 các vai trò trong một mẫu thiết kế. Một vai trò đại diện cho một nhóm nhỏ của các
phƣơng pháp trong giao diện mà liên quan tới phƣơng pháp khác.
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 đối xử mà sẽ là chung cho
một nhóm 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à thành phần của” giữa các lớp và các thành
phần. Nếu bản thân các lớp có một API (Application Programming Interface – giao
diện lập trình ứng dụng) đƣợc định nghĩa đầy đủ thì tập kết quả 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ành phầ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ấu vớ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 không phụ thuộc và đƣợc tổ hợp bằng các hã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 giao diện lập trình ứng dụng (API) đƣợc công khai của nó
không đƣợc đƣa ra trong các giao diện của một khung làm việc. Một cách điển hình là
các lớp đƣợc sử dụng bởi các thành phần để đại diện cho chức năng, ví dụ một ngƣời
phát triển ứng dụng sử dụng khung làm việc thƣờ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 khung làm việc: Một khung làm việc hƣớng đối
tƣợng làm việc bằng cách cung cấp một đặc tả rõ ràng của các tƣơng tá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ờ nhữ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ột khung làm việc định nghia 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 khung làm việc.
Các thành phần ứng dụng có thể vẫn còn chứng minh 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úng chuyển qua. Các bộ phận phụ thuộc có thể
đƣợc giới thiệu nhƣ là các thành phần của khung làm việc. Sự thi hành các thành phần
này có thể cùng khung làm việc xác định mộ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 khung làm việc với các khái niệm khác
Một mẫu thiết kế khác với một khung làm việc ở ba điểm [1]:
Thứ nhất, một mẫu thiết kế là trừu tƣợng hơn một khung làm việc, bởi vì một
khung làm việc đƣợc bao gồm cả mã, trong khi đó chỉ có các ví dụ của các mẫu thiết
- 12 kế mới đƣợc mã hóa. Các mẫu thiết kế thậm 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ế. Điều này
không là một trƣờng hợp cho các khung làm việc.
Thứ hai, các mẫu thiết kế là những kiến trúc nhỏ hơn so với các khung làm
việc. Do vậy, một khung làm việc có thể chứa một số các mẫu thiế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 khung làm việc đƣợc chuyên môn hóa hơn so với các mẫu thiết
kế. Các khung làm việc 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ụng trong bất kỳ miền ứng dụng
nào.
Các ngôn ngữ mẫu khác với khung làm việc 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 khung làm việc
hƣớng đối tƣợng là một thiết kế. Các ngôn ngữ mẫu bổ sung cho một khung làm việc,
do chúng có thể hƣớng dẫn các kỹ sƣ phần mềm sử dụng khung làm việc nhƣ thế nào,
và mô tả tại sao nó lại đƣợc thiết kế nhƣ vậy.
Một ứng dụng hƣớng đối tƣợng khác với một khung làm việc ở 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 một yêu cầu cụ thể.
Khung làm việc đạt đƣợc các tính năng của một ứng dụng nhƣng nó không thể thi
hành 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 khung làm việc 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ực hiệ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 các
phƣơng pháp trong thƣ viện lớp để thực hiện một số hoạt động. Trong khi đó các
khung làm việc định nghĩa khung cho một ứng dụng thực tế và điều khiển luồng điều
khiển trong ứng dụng. Các khung làm việc có thể khác so với thƣ viện lớp, nhƣng
chú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ức nă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 ứng dụng.
Các khung làm việc 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 khung làm việc 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 khung làm việc 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ùy
biế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ự
- 13 đị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
khung làm việc 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 khung làm việc thì sẽ có đƣợc sự linh động cao hơn và với một khung làm việc
đƣợ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 ứng dụng
đã đƣợc tùy biến rõ rệt hơn.
1.1.4. Các đặc điểm của khung làm việc
Một khung làm việc hƣớng đối tƣợng có bốn đặc điểm chính [1] 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 khung làm việc tăng cƣờng khả năng môđun hóa bằng
cá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ắc
chắ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ách cụ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 khung làm việc còn
tăng cƣờ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 khung làm
việc thúc đẩy kiến thức của miền ứng dụng và ƣu tiên nỗ lực của các nhà phát triển
kinh nghiệm để tránh việc tạo và làm hợp lệ 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ác thách thức 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ản xuấ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ả, độ tin cậy và tính sẵn sàng của
phần mềm.
Về khả năng mở rộng, một khung làm việc tăng cƣờng khả năng mở rộng bằng
cách cung cấp các điểm nóng tƣờng minh mà cho phép các ứng dụng mở rộng các giao
diện chắc chắn và cách ứng xử của vùng ứng dụng với các sự thay đổi đƣợc yêu cầu
bởi các trƣờng hợp của ứng dụng trong một ngữ cảnh cụ thể. Khả năng mở rộng của
khung làm việc là cần thiết để đảm bảo các sự điều chỉnh có tính thời gian của các dị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 thời gian chạy của một khung làm việc 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 bằng cách điều chỉnh từng bƣớc xử lý, bằng các đối tƣợng quản lý sự
kiện mà đƣợc viện dẫn thông qua cơ chế gửi kích họat lại của khung làm việc. Khi các
- 14 sự kiện xảy ra, khung làm việc gửi lại kích hoạt bằng cách viện 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, cái mà thực hiện việc xử
lý ứng dụng cụ thể trên các sự kiện. Đổi chiều điều khiển cho phép khung làm việc
đị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
Khung làm việc 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à khung làm việc trỏ tới,
cấu trúc bên trong của khung làm việc 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, các khung làm việc miền ứng dụng và các 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 [6] và các khung làm việc
hộp xám.
1.2.1. Phân loại khung làm việc theo vùng vấn đề
Việc phân loại theo vùng vấn đề chia các khung làm việc thành ba loại [4] 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ợ.
Mộ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ông nhữ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 khung làm việc ứ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ác thƣ 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 khung làm việc 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 khung
làm việc hỗ trợ là các khung làm việc 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 tin. Nhà
phát triển ứng dụng sử dụng các khung làm việc 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 khung làm việc 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ển thiết
bị mới.
- 15 1.2.2. Phân loại khung làm việc theo cấu trúc nội bộ
Nếu nhƣ cấu trúc nội tại của khung làm việc đƣợc miêu tả thì nó có thể làm cho
việc hiểu cách ứng xử của khung làm việc dễ dàng hơn. Cấu trúc nội tại của một
khung làm việc 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 chính của một kiến trúc phần mềm hƣớng đối tƣợng. Nguyên tắc
tổng thể cho cấu trúc nội tại của một khung làm việc đƣợc mô tả bởi khung làm việc
có tính kiến trúc của nó. Các khung làm việc có tính kiến trúc đã đƣợc mô tả [1] là:
Layered (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 (Ống và bộ lọc), có thể đƣợc dùng để cấu trúc các ứng dụng
mà có thể đƣợc chia thành một vài các công việc con hoàn toàn độc lập, đƣợc thự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.
Model-View-Controller (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ức năng chủ yếu của
nó.
Presentation-Abstraction-Controller (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 bầy 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 (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ông nghệ và các
yêu cầu, mà không cần có phải thay đổi về kiến trúc và cách thực hiệ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êu cầu
của hệ thống. Ví dụ của microkernel là các hệ điều hành.
Blackboard (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 (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 qua truyề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 cho một
khung làm việc. Điều đó có nghĩa là, các kiến trúc này là các ứng cử viên tốt cho việc
- 16 ứng dụng các mẫu thiết kế hƣớng đối tƣợng cũng nhƣ cho việc phát triển khung làm
việc.
1.3. Các qui trình phát triển khung làm việc
Quá trình phát triển một khung làm việc phụ thuộc vào kinh nghiệm của việc tổ
chức trong miền vấn đề mà khung làm việc 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ền vấn
đề. Một số quy trình khả thi cho việc phát triển khung làm việc đã đƣợc đƣa ra:
1.3.1. Quy trình phát triển dựa trên các ứng dụng kinh nghiệm
Hƣớng phát triển khung làm việc mang tính thực dụng đƣợc miêu tả: Trƣớc hết
phát triển n ứng dụng, ít nhất từ hai ứng dụng trong tên miền vấn đề. Khi chúng làm
việc đúng thì việc lắp lại đầu tiên trong quy trình bắt đầu nhƣ hình 1.2. Phân loại các
đặc điểm chung trong cả hai ứng dụng và kiết xuất chúng thành một khung làm việc.
Để đánh giá liệu các đặc điểm đƣợc kiết xuất ra có đúng không, phát triển lại các ứng
dụng (n) dựa trên khung làm việc đó. Điều này có lẽ khá dễ dàng nếu cá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 khung làm việc là cần thiết và sử dụng kinh nghiệm đã có để phát triển
bản tiếp theo của khung làm việc. Đây là 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 khung làm việc, các ứng dụng mới
có thể đƣợc phát triển. Các kinh nghiệm đạt đƣợc thô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ì khung làm việc theo tiến độ. Toàn bộ
quy trình đƣợc thể hiện trong hình 1.2.
Sự phát triển đầu tiên
của n ứng dụng
Phát triển ứng dụng
1. Các thành phần chung.
2. Kinh nghiệm
1.
dụng
sử sử
1. Tái
Tái phát
pháttriển
triểnn nứng
ứng
dụng
dụng khung làm việc. 2.Phát
dụng khung làm việc. 2. Phát
triển n+1, n+2, … ứng dụng sử
triển khung
n+1, n+2,
… ứng dụng sử
dụng
làm việc.
dụng khung làm việc.
Phát triển khung làm việc
Bảo trì các hoạt động dựa trên
kinh nghiệm.
Hình 1.2. Quy trình phát triển khung dựa trên kinh nghiệm về ứng dụng [8].
- 17 1.3.2. Quy trình phát triển dựa trên phân tích vấn đề miền
Một hƣớng tiếp cận phức tạp hơn cho việc phát triển một khung làm việc là
phân tích miền vấn đề. Quy trình phát triển đƣợc chỉ ra trong hình 1.3. Hoạt động đầu
tiê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
(abstraction) nổi bậ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 khung làm việc dựa trên phân tích miền vấn đề [8].
Sau khi các lớp trìu tƣợng đƣợc nhận biết, phát triển khung làm việc 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 khung
là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ên khung làm
việc đó. Thay đổi khung làm việc nếu cần thiết và sửa đổi ứng dụng đầu tiên do đó nó
làm việc với những thay đổi đƣa ra trong khung làm việc. Hãy để khung làm việc liên
quan, thông qua các hoạt động bảo trì có kế hoạch, trong khi đó phát triển thêm nhiều
ứng dụng dựa trên khung làm việc.
1.3.3. Quy trình phát triển sử dụng các mẫu thiết kế
Quy trình phát triển một khung làm việc 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 trong tên
miề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ẫu thiết
- 18 kế. Lấy ứng dụng và áp dụng theo hệ thống mẫu thiết kế để tạo ra khung làm việc. Sau
đó lặp lại giữa phát triển ứng dụng và khung làm việc có thể xảy ra. Đồng thời trong
quy trình này cũng tồn tại các hoạt động bảo trì khung làm việc theo kế hoạch.
Hình 1.4. Quy trình phát triển khung làm việc sử dụng các mẫu thiết kế [8].
1.3.4. Quy trình phát triển khung làm việc chung
Các yếu tố chung của quy trình phát triển đƣợc chỉ ra trong hình 1.5:
–
Phân tích miền vấn đề. Điều này đƣợc thực hiện một cách hệ thống hoặc
thông qua phát triển một hoặc một vài ứng dụng trong tên miền và lớp trìu
tƣợng chính (key abstraction) đƣợc nhận ra.
–
Phiên bản đầu tiên của khung làm việc đƣợc phát triển nhằm tận dụng các lớp
trìu tƣợ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 khung làm
việc. Đây là hoạt động kiểm tra của khung làm việc. Việc kiểm tra một khung
làm việc để xem liệu nó có thể tái sử dụng hay không là hoạt động giống nhau
nhƣ phát triển một ứng dụng dựa trên khung làm việc.
- 19 –
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 độ
chin muồi có thể chấp nhận đƣợc và có thể đƣợc đƣa ra cho nhiều ngƣời dùng
tá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 [8].
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ài toán
cụ thể và những khả năng có đƣợc để đƣa ra một cách làm phù hợp và hiệu quả.
1.4. Phương pháp phát triển khung làm việc
Có một vài điểm khác nhau giữa việc phát triển khung làm việc và phát triển một
ứng dụng chuẩn bình thƣờng. Trong đó điểm khác nhau quan trọng và đáng chú ý nhất
là cần phải xây dựng khung làm việc sao cho có thể bao gồm các khái niệm xác đáng
trong một miền ứng dụng.
- 20 Hình 1.6 dƣới đây cho ta thấy rõ quá trình phát triển khung làm việc [1]:
Phân tích miền ứng dụng : đây là giai đoạn chuẩn bị
Thu thập các yêu cầu phân tích: phân tích để xác định yêu cầu
Thiết kế khung làm việc: thiết kế kiến trúc các thành phần của một khung làm
việc
Triển khai khung làm việc: triển khai các thành phần của thiết kế
Kiểm thử: kiểm thử khung làm việc đánh giá sự đáp ứng yêu cầu của nó.
Hình 1.6. Quá trình phát triển khung làm việc [1].
1.4.1. Chuẩn bị cho việc phát triển khung làm việc
Phân tích sơ qua về miền ứng dụng sẽ giúp ta có thêm kiến thức về miền ứng
dụng của khung làm việc nhằm xây dựng một khung làm việc. Việc phân tích này nhƣ
sự khởi đầu cho quá trình phát triển khung làm việc. Công việc của nó chính là nhận ra
phần lõi của các lớp và các đối tƣợng chung cho các ứng dụng trong miền đƣợc phân
- Xem thêm -