TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM
NGUYỄN THIỆN CHƯƠNG
- 0012013
PHẠM TUẤN SƠN
- 0012085
XÂY DỰNG ỨNG DỤNG TỪ ĐIỂN
TRÊN POCKET PC
LUẬN VĂN CỬ NHÂN TIN HỌC
GIÁO VIÊN HƯỚNG DẪN
Th.S NGUYỄN TẤN TRẦN MINH KHANG
GV TRẦN MINH TRIẾT
NIÊN KHÓA 2000 - 2004
LỜI CÁM ƠN
Chuùng em xin chaân thaønh caùm ôn Khoa Coâng Ngheä Thoâng Tin, tröôøng
Ñaïi Hoïc Khoa Hoïc Töï Nhieân TpHCM ñaõ taïo ñieàu kieän toát cho chuùng em thöïc
hieän ñeà taøi luaän vaên toát nghieäp naøy.
Chuùng em xin chaân thaønh caùm ôn Thaày Nguyeãn Taán Traàn Minh Khang vaø
Thaày Traàn Minh Trieát ñaõ taän tình höôùng daãn, chæ baûo chuùng em trong suoát
thôøi gian thöïc hieän ñeà taøi.
Chuùng em xin chaân thaønh caùm ôn quyù Thaày Coâ trong Khoa ñaõ taän tình
giaûng daïy, trang bò cho chuùng em nhöõng kieán thöùc quyù baùu trong nhöõng naêm
hoïc vöøa qua.
Chuùng con xin noùi leân loøng bieát ôn saâu saéc ñoái vôùi OÂng Baø, Cha Meï ñaõ
chaêm soùc, nuoâi daïy chuùng con thaønh ngöôøi.
Xin chaân thaønh caùm ôn caùc anh chò vaø baïn beø ñaõ uûng hoä, giuùp ñôõ vaø ñoäng
vieân chuùng em trong thôøi gian hoïc taäp vaø nghieân cöùu.
Maëc duø chuùng em ñaõ coá gaéng hoaøn thaønh luaän vaên trong phaïm vi vaø khaû
naêng cho pheùp nhöng chaéc chaén seõ khoâng traùnh khoûi nhöõng thieáu soùt. Chuùng
em kính mong nhaän ñöôïc söï caûm thoâng vaø taän tình chæ baûo cuûa quyù Thaày Coâ
vaø caùc baïn.
Nhoùm thöïc hieän
Nguyeãn Thieän Chöông vaø Phaïm Tuaán Sôn
07/2004
i
MỞ ĐẦU
Ngày nay, trên tất cả các lãnh vực của đời sống kinh tế, xã hội, Công nghệ
thông tin được xem là một trong những ngành công nghệ mũi nhọn, đóng vai trò hết
sức quan trọng, có thể tạo ra những bước đột phá mạnh mẽ.
Công nghệ thông tin đang phát triển từng ngày, cả trong kĩ thuật phần cứng lẫn
lĩnh vực phần mềm. Kích thước cũng như khả năng của các thiết bị ngày càng được
cải thiện rất nhiều. Từ các máy tính có kích thước rất lớn như Mainframe, hiện nay,
trên thế giới đã xuất hiện các loại thiết bị hỗ trợ cá nhân di động, gọi là PDA
(Personal Digital Assistant), hết sức nhỏ gọn và tiện lợi, đặc biệt đối với những
người có nhu cầu di chuyển nhiều. Các thiết bị thông minh, không dây và thuận tiện
này đang ngày càng khẳng định vị trí của mình với những đặc tính của nó.
Pocket PC là một dạng thiết bị PDA rất phổ biến và đang được sử dụng rộng
rãi trên thế giới với nhiều tiện lợi và các phần mềm hữu ích. Trên môi trường này,
đã có rất nhiều ứng dụng được phát triển với mục đích hỗ trợ tối đa người sử dụng
thường xuyên phải di chuyển nhiều, như sổ tay điện tử, xem phim, nghe nhạc, bản
đồ du lịch điện tử...
Tại thị trường Việt Nam, các thiết bị PDA cũng đang ngày càng trở nên phổ
biến hơn. Trong đó, Pocket PC chiếm thị phần sử dụng cao hơn cả. Vì vậy, có thể
nói việc tạo ra các sản phẩm phần mềm, các ứng dụng mang thương hiệu Việt Nam
trên Pocket PC nói riêng và trên PDA nói chung là một hướng phát triển đầy hứa
hẹn trong tương lai.
Bên cạnh đó, trong giai đoạn hội nhập quốc tế ở Việt Nam hiện nay, thì các
nhu cầu về ngoại ngữ là hết sức quan trọng .Từ đó, chúng em nhận thấy rằng việc
cho ra đời một ứng dụng Từ điển trên Pocket PC là rất cần thiết.
Với những nhận thức và suy nghĩ trên, chúng em đã quyết định tập trung thực
hiện đề tài “Xây dựng ứng dụng Từ điển trên Pocket PC”
ii
Nội dung của Luận văn gồm 10 chương :
Chương 1. Tổng quan: giới thiệu vai trò của Từ điển và các thiết bị di động
trong đời sống hằng ngày, nêu lên nhu cầu thực tế và l ý do thực hiện đề tài, đồng
thời giới thiệu sơ lược về đề tài và mục tiêu phải đạt được.
Chương 2. Tổng quan về PDA và Hệ điều hành Windows CE: trình bày
tổng quan về các thiết bị PDA, các hệ điều hành trên PDA và hệ điều hành nhúng
Windows CE.
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net
Compact Framework: trình bày tổng quan về Pocket PC, các môi trường lập trình
trên Pocket PC và môi trường .Net Compact Framework.
Chương 4. Một số vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC:
trình bày các vấn đề liên quan trực tiếp đến việc xây dựng ứng dụng.
Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ diển
trên Pocket PC: nêu các vấn đề và giải pháp trong tổ chức lưu trữ dữ liệu Từ điển
trên Pocket PC.
Chương 6. Giới thiệu ứng dụng “CSPocketDict”: trình bày các yêu cầu của
người sử dụng và giới thiệu các chức năng của ứng dụng “CSPocketDict”.
Chương 7. Phân tích - Thiết kế: trình bày các hồ sơ phân tích và thiết kế của
ứng dụng “CSPocketDict”.
Chương 8. Ứng dụng hỗ trợ Quản lý dữ liệu Từ điển “CSDictManager”:
trình bày các hồ sơ phân tích và thiết kế của ứng dụng CSDictManager.
Chương 9. Cài đặt và thử nghiệm: mô tả cách cài đặt cụ thể và đánh giá hiệu
quả của ứng dụng và hướng dẫn cách sử dụng chương trình.
Chương 10. Tổng kết: tóm lại các vấn đề đã giải quyết và nêu ra một số
hướng phát triển trong tương lai.
iii
MỤC LỤC
DANH MỤC CÁC HÌNH ....................................................................................... vi
DANH MỤC CÁC BẢNG ...................................................................................... ix
Chương 1 Tổng quan ............................................................................................1
Vai trò của Từ điển ...................................................................................1 Vai trò các thiết bị di động .......................................................................1 Nhu cầu thực tế và lý do thực hiện đề tài .................................................2 Một số vấn đề và mục tiêu của đề tài .......................................................3 1.1 1.2 1.3 1.4
Chương 2 Tổng quan về PDA và Hệ điều hành Windows CE .........................4
Tổng quan về PDA ...................................................................................4 Một số hệ điều hành nhúng cho thiết bị PDA ........................................10 Tổng quan về hệ điều hành Windows CE ..............................................10 2.1 2.2 2.3
Chương 3 Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework .............................................................................................................16
Tổng quan về Pocket PC ........................................................................16 Một số công cụ phát triển trên Pocket PC 2002 .....................................19 Công cụ lập trình Microsoft eMbedded Visual C++ 3.0........................19 Môi trường lập trình .Net Compact Framework.....................................22 3.1 3.2 3.3 3.4
Chương 4 Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC ......29
Đặc trưng của một ứng dụng Từ điển.....................................................29 Giới hạn về bộ xử lý ...............................................................................30 Giới hạn về bộ nhớ và khả năng lưu trữ .................................................32 Hạn chế về khả năng tương tác giữa người dùng và thiết bị ..................34 Kết luận...................................................................................................35 4.1 4.2 4.3 4.4 4.5
Chương 5 Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC .............................................................................................................36
Tổ chức cấu trúc dữ liệu lưu trữ .............................................................36 Tổ chức cấu trúc dữ liệu hỗ trợ tìm kiếm nhanh ....................................41 5.1 5.2
Chương 6 Giới thiệu ứng dụng Từ điển “CSPocketDict”...............................46
Yêu cầu của người sử dụng ....................................................................46 Các chức năng của ứng dụng..................................................................46 6.1 6.2
Chương 7 Phân tích – Thiết kế ..........................................................................51
Mô hình Use-Case ..................................................................................51 Thiết kế dữ liệu.......................................................................................60 7.1 7.2
iv
7.3 7.4 Thiết kế xử lý..........................................................................................62 Thiết kế giao diện ...................................................................................71
Chương 8 Xây dựng ứng dụng hỗ trợ quản lý dữ liệu Từ điển “CSDictManager” ...................................................................................................83
8.1 8.2 8.3 8.4 8.5 Giới thiệu ................................................................................................83 Mô hình Use-Case ..................................................................................83 Thiết kế dữ liệu.......................................................................................87 Thiết kế xử lý..........................................................................................88 Một số màn hình giao diện .....................................................................90
Chương 9 Cài đặt và thử nghiệm ......................................................................93
9.1 9.2 9.3 Cài đặt.....................................................................................................93 Thử nghiệm.............................................................................................95 Hướng đẫn sử dụng.................................................................................96
Chương 10 Tổng kết........................................................................................103
10.1 10.2 Kết luận.................................................................................................103 Hướng phát triển...................................................................................104
Phụ lục A Danh sách các hỗ trợ và không hỗ trợ trên .NET Compact Framework ...........................................................................................................105
Phụ lục B Các hình thức lưu trữ trên Windows CE .....................................107
Phụ lục C Chuẩn nén Gzip...............................................................................110
Tài liệu tham khảo ................................................................................................118
v
DANH MỤC CÁC HÌNH
Hình 2.1: Thiết bị PDA ..............................................................................................5
Hình 2.2: Bàn phím ảo của Pocket PC.......................................................................8
Hình 2.3: Biểu tượng của Windows CE....................................................................10
Hình 2.4: Kiến trúc của hệ điều hành Windows CE .Net ........................................11
Hình 3.1: Giao diện Pocket PC 2003 .......................................................................17
Hình 3.2: Một số thiết bị Pocket PC ........................................................................18
Hình 3.3: Sự phụ thuộc thiết bị khi lập trình với eVC++ 3.0 ..................................21
Hình 3.4: Kiến trúc của .Net Compact Framework .................................................22
Hình 3.5: Không gian tên và các lớp của .Net Compact Framework ......................24
Hình 3.6: Ghi chú hỗ trợ .Net Compact Framework trong MSDN .........................25
Hình 4.1: Tình trạng bộ nhớ trên Pocket PC............................................................32
Hình 4.2: Một số thẻ nhớ cho PDA..........................................................................33
Hình 5.1: Biểu đồ nén dữ liệu Từ điển Anh – Việt..................................................39
Hình 5.2: Biểu đồ nén dữ liệu Từ điển Việt – Anh..................................................39
Hình 5.3: Biểu đồ thời gian đọc dữ liệu của tập tin không nén và tập tin nén chuẩn
Dictzip................................................................................................................40
Hình 5.4: Tổ chức tập tin chỉ mục hỗ trợ truy xuất tập tin dữ liệu Từ điển.............42
Hình 5.5: Cách tìm kiếm chỉ mục của 1 từ với bảng băm 2 kí tự .............................44
Hình 5.6: Biểu đồ minh họa thời gian tìm kiếm 100 từ ngẫu nhiên trong tập tin chỉ
mục của 2 bộ dữ liệu Từ điển Anh – Việt, Việt – Anh......................................45
Hình 5.7: Thời gian tìm kiếm 100 từ trong tập tin chỉ mục của 2 bộ dữ liệu Từ điển
Anh – Việt, Việt – Anh......................................................................................45
Hình 6.1: Chức năng tra từ.......................................................................................47
Hình 6.2: Chức năng quản lý Từ điển......................................................................48
Hình 6.3: Chức năng phát âm ..................................................................................48
Hình 6.4: Chức năng lọc từ theo từ loại...................................................................49
Hình 6.5: Chức năng Click&See..............................................................................49
Hình 7.1: Lược đồ chính của mô hình Use case ......................................................51
vi
Hình 7.2: Sơ đồ lớp các đối tượng ...........................................................................60
Hình 7.3: Sơ đồ tuần tự “Tìm kiếm từ chính xác” ...................................................63
Hình 7.4: Sơ đồ tuần tự “Tìm kiếm từ có các kí tự đại diện” ..................................64
Hình 7.5: Sơ đồ tuần tự “Tìm kiếm từ trong cụm từ”..............................................65
Hình 7.6: Sơ đồ tuần tự “Xem nghĩa của từ” ...........................................................66
Hình 7.7: Sơ đồ tuần tự “Nghe phát âm từ”.............................................................67
Hình 7.8: Sơ đồ tuần tự “Lọc danh sách từ” ............................................................68
Hình 7.9: Sơ đồ tuần tự “Thêm Từ điển”.................................................................69
Hình 7.10: Sơ đồ tuần tự “Xóa Từ điển” .................................................................70
Hình 7.11: Màn hình chính ......................................................................................72
Hình 7.12: Các thành phần của thanh trình đơn ......................................................74
Hình 7.13: Các thành phần của Thanh công cụ .......................................................75
Hình 7.14: Màn hình quản lý dữ liệu Từ điển..........................................................76
Hình 7.15: Các thành phần của Thanh công cụ .......................................................77
Hình 7.16: Màn hình chọn tập tin dữ liệu Từ điển ..................................................78
Hình 7.17: Màn hình thay đổi các thông số .............................................................80
Hình 7.18: Màn hình thay đổi các thông số hiển thị ................................................81
Hình 7.19: Màn hình thay đổi đường dẫn tới các tập tin dữ liệu .............................82
Hình 8.1: Lược đồ chính của mô hình Use case của ứng dụng CSDictManager ....83
Hình 8.2: Sơ đồ lớp của ứng dụng CSDictManager ................................................87
Hình 8.3: Sơ đồ tuần tự “Nạp dữ liệu Từ điển” của ứng dụng CSDictManager .....89
Hình 8.4: Sơ đồ tuần tự “Cập nhật từ” của ứng dụng CSDictManager ...................90
Hình 8.5: Màn hình chính của ứng dụng CSDictManager .......................................91
Hình 8.6: Màn hình biên soạn từ của ứng dụng CSDictManager.............................92
Hình 9.1: Mô hình cài đặt ứng dụng Từ điển...........................................................94
Hình 9.2: Giao diện chính ........................................................................................96
Hình 9.3: Hướng dẫn các chức năng màn hình chính.............................................97
Hình 9.4: Hướng dẫn các chức năng màn hình quản lý Từ điển .............................99
Hình 9.5: Hướng dẫn chức năng màn hình chọn tập tin Từ điển...........................100
vii
Hình 9.6: Hướng dẫn chức năng màn hình thay đổi định dạng của phần hiển thị nội
dung nghĩa của từ.............................................................................................101
Hình 9.7: Hướng dẫn chức năng màn hình điều chỉnh đường dẫn ........................102
viii
DANH MỤC CÁC BẢNG
Bảng 3.1: Hỗ trợ các tập ký tự khác nhau trên các hệ điều hành họ Microsoft.......28
Bảng 5.1: Thời gian truy xuất dữ liệu 100 từ ngẫu nhiên của Từ điển Anh – Việt .40
Bảng 7.1: Danh sách các Actor................................................................................51
Bảng 7.2: Danh sách các Use case chính .................................................................52
Bảng 7.3: Danh sách các lớp....................................................................................61
Bảng 7.4: Danh sách các xử lý chính.......................................................................62
Bảng 7.5: Danh sách các màn hình giao diện chính ................................................71
Bảng 7.6: Các thành phần của của màn hình chính .................................................73
Bảng 7.7: Các thành phần của thanh trình đơn ........................................................75
Bảng 7.8: Các thành phần của thanh công cụ ..........................................................75
Bảng 7.9: Các thành phần của màn hình quản lý dữ liệu Từ điển ...........................77
Bảng 7.10: Các thành phần của thanh công cụ ........................................................77
Bảng 7.11: Các thành phần của màn hình chọn tập tin dữ liệu Từ điển ..................79
Bảng 7.12: Các thành phần của màn hình thay đổi thông số...................................80
Bảng 7.13: Các thành phần của màn hình thay đổi các thông số hiển thị ...............81
Bảng 7.14: Các thành phần của màn hình thay đổi đường dẫn tới các tập tin dữ liệu
...........................................................................................................................82
Bảng 8.1: Danh sách các Actor của ứng dụng CSDictManager ..............................84
Bảng 8.2: Danh sách các Use case chính của ứng dụng CSDictManager ...............84
Bảng 8.3: Danh sách các lớp chính của ứng dụng CSDictManager ........................87
Bảng 8.4: Danh sách các xử lý chính của ứng dụng CSDictManager .....................88
Bảng 8.5: Danh sách các màn hình giao diện chính của ứng dụng CSDictManager
...........................................................................................................................90
Bảng 9.1: Các thành phần trong mô hình cài đặt .....................................................94
Bảng 9.2: Một số thử nghiệm trên máy ảo................................................................95
Bảng 9.3: Một số thử nghiệm trên máy thật .............................................................96
ix
Chương 1. Tổng quan
Chương 1 Tổng quan
1.1 Vai trò của Từ điển
Ngày nay, khái niệm Từ điển đã trở nên quá quen thuộc với chúng ta. Nó là
một công cụ tra cứu rất hữu ích phục cho nhu cầu học tập, nghiên cứu, cũng như
giao tiếp hằng ngày.
Từ khi có sự xuất hiện của chiếc máy tính cá nhân (PC – Personal Computer),
thì Từ điển lại được nâng lên một tầm cao mới. Hàng loạt các ứng dụng Từ điển
được ra đời cung cấp cho người sử dụng không chỉ những chức năng tra cứu mà còn
những âm thanh, hình ảnh minh họa kèm theo. Có thể nói các ứng dụng Từ điển đã
giải phóng con người khỏi phải lật từng trang giấy để tra từ. Người ta chỉ đơn giản
nhập vào từ muốn biết nghĩa. Công việc tìm kiếm còn lại thuộc về máy tính.
Trong thời đại mở cửa, hội nhập quốc tế hiện nay, có thể nói Từ điển đã trở
thành một cẩm nang không thể thiếu.
1.2 Vai trò các thiết bị di động
Hiện nay, trên thế giới, các loại thiết bị hỗ trợ cá nhân di động (PDA-Personal
Digital Assistant) xuất hiện ngày càng nhiều. Do những đặc tính của nó, hết sức nhỏ
gọn và tiện lợi, đặc biệt đối với những người có nhu cầu di chuyển nhiều, các thiết
bị thông minh, không dây và nhỏ gọn này đang ngày càng khẳng định vị trí của nó
trên thị trường.
Pocket PC là một dạng thiết bị PDA rất phổ biến và đang được sử dụng rộng
rãi trên thế giới với nhiều tiện lợi và các phần mềm hữu ích. Trên môi trường này,
đã có rất nhiều ứng dụng được phát triển với mục đích hỗ trợ tối đa người sử dụng
thường xuyên phải di chuyển nhiều, như sổ tay điện tử, xem phim, nghe nhạc, bản
1
đồ du lịch điện tử...
Chương 1. Tổng quan
Trong khi đó, ở Việt Nam hiện nay, mặc dù số lượng người sử dụng PDA
(cũng như Pocket PC) cũng đang tăng dần nhưng do các yêu tố khách quan như: sử
dụng phức tạp, không có nhiều dịch vụ hỗ trợ, giá cao... đã gây ra những trở ngại
khiến cho chúng chưa được chuộng dùng.
Mặc dù vậy, thiết bị này vẫn được đánh giá là đối thủ của điện thoại di động
trong tương lai với tính hiện đại, tiện dụng và thời trang.
1.3 Nhu cầu thực tế và lý do thực hiện đề tài
Ngày nay, thế giới ngày càng biến động một cách nhanh chóng kéo theo công
việc ngày càng có tính di động cao. Con người không chỉ ngồi làm việc một chỗ mà
luôn có nhu cầu đi lại rất nhiều nơi. Trước thực tế đó, các thiết bị PDA (sẽ được
trình bày rõ trong Chương 2) ra đời và phục vụ hết sức hiệu quả cho con người.
Trong bối cảnh như vậy thì vai trò của một cuốn cẩm nang như Từ điển là rất cần
thiết. Nhưng chẳng lẽ lúc nào người ta cũng phải mang theo một cuốn Từ điển dày
cộm hay cả chiếc máy tính cồng kềnh để phục vụ cho các vấn đề về ngôn ngữ? Từ
đó, những ý nghĩ về việc xây dựng một ứng dụng Từ điển cho các thiết bị PDA
được hình thành. Trên thế giới đã xuất hiện rất nhiều ứng dụng như thế như: Oxford
American Dictionary, eDictionary, BDicty, …
Ở Việt Nam cũng vậy, mặc dù các thiết bị PDA vào nước ta muộn hơn nhưng
chúng đang ngày càng phổ biến. Hơn nữa, nước ta lại đang ở giai đoạn đầu của quá
trình hội nhập, nên những vấn đề về ngôn ngữ lại càng rõ rệt. Hiện nay, ở nước ta
các ứng dụng Từ điển cho PDA cũng có nhưng chưa nhiều, đặc biệt các Từ điển
trên Pocket PC (một loại thiết bị PDA được sử dụng phổ biến nhất ở nước ta hiện
nay, sẽ được trình bày ở Chương 3) lại càng ít.
Từ những thực tế và lý do trên, chúng em quyết định tiến hành xây dựng một
ứng dụng Từ điển trên Pocket PC để phục vụ các nhu cầu giao tiếp, học tập, nghiên
2
cứu, đặc biệt cho những người có tính di động cao trong công việc.
Chương 1. Tổng quan
1.4 Một số vấn đề và mục tiêu của đề tài
Do được thiết kế nhỏ gọn nhằm phù hợp với mục đích giúp người sử dụng lưu
trữ các thông tin cá nhân, công việc cần thiết cũng như các phần mềm tối thiểu nên
việc xây dựng ứng dụng Từ điển trên Pocket PC gặp phải các vấn đề về tối ưu hoá
bộ nhớ cũng như tốc độ xử lý và thường có tốc độ chậm hơn nhiều so với các ứng
dụng trên PC thông thường. Ngoài ra, do khả năng lưu trữ có giới hạn, việc tổ chức
dữ liệu cho ứng dụng Từ điển trên môi trường này cũng gặp không ít khó khăn.
Do đó, đề tài phải giải quyết một số công việc chính như sau: • Tìm hiểu về PDA, hệ điều hành nhúng Windows CE, Pocket PC và khả
năng lập trình trên môi trường này để thấy được sự khác biệt về trong mô
hình với Windows trên Desktop, đồng thời cũng nắm được những khó
khăn và hạn chế.
• Dựa vào những hiểu biết này, nghiên cứu, đề ra giải pháp tổ chức lưu trữ
dữ liệu một cách hiệu quả.
• Sau đó, xây dựng và thử nghiệm ứng dụng Từ điển trên Pocket PC, đồng
thời cũng xây dựng một ứng dụng hỗ trợ việc quản lý dữ liệu từ điển trên
3
Desktop.
Chương 2. Tổng quan về PDA và Hệ điều hành Windows CE
Chương 2 Tổng quan về PDA và Hệ điều hành
Windows CE
2.1 Tổng quan về PDA
2.1.1 Giới thiệu về các thiết bị PDA
Ngày nay Công nghệ thông tin đang ngày càng phát triển, có tác động ngày
càng mạnh mẽ đến công việc cũng như cuộc sống của con người. Bắt đầu từ chiếc
máy tính đồ sộ vào đầu thế kỷ 20 rồi đến chiếc máy vi tính và sau này là chiếc máy
tính cá nhân (PC) đã tạo nên một cuộc cách mạng trên tất cả các lĩnh vực của cuộc
sống và khoa học giúp cho con người tăng được đáng kể tốc độ và năng suất làm
việc của mình trong công sở. Hơn thế nữa, sự ra đời của các thiết bị cầm tay
(handheld devices) trong những năm đầu thập kỉ 80 còn tạo ra những điều kỳ diệu
mới cho cuộc sống và công việc của con người. Việc phải mang 1 cái máy Fax cồng
kềnh hay 1 quyển sách nhỏ để ghi sổ điện thoại và những công việc sẽ phải làm khi
đi công tác đã khiến cho các nhà kinh doanh phải rất khó khăn trong việc liên lạc
với thế giới xung quanh bằng những chiếc máy điện thoại cố định hay việc phải xử
lý các công việc cần sự linh động hoặc với những công việc cần phải chia nhỏ để có
thể làm việc với nó mọi lúc mọi nơi. Và công nghệ di động ra đời giúp giải quyết
các vấn đề này. Các thiết bị tính toán di động có kiến trúc giống như máy để bàn
hoàn toàn tương thích các phần mềm có sẵn và có thể làm việc không cần đến
nguồn điện trực tiếp trong nhiều giờ liền. Và trong số những thiết bị đó thì PDA nổi
lên như những đại diện mang đầy đủ các đặc tính thích hợp nhất để đáp ứng các nhu
cầu của người sử dụng.
2.1.1.1 Khái niệm
PDA là gì? PDA - Personal Digital Assistant – là thiết bị trợ giúp kỹ thuật số
4
cá nhân, được xây dựng trên nền tảng là một máy tính cá nhân bỏ túi đầy đủ phần
Chương 2. Tổng quan về PDA và Hệ điều hành Windows CE
cứng và phần mềm dễ dàng sử dụng, khởi động ngay lập tức khi bật máy, làm việc
mọi lúc mọi nơi. Ðiều đã làm PDA trở nên gần gũi là sự kết hợp gắn bó giữa sức
mạnh của máy tính để bàn và khả năng di chuyển cao của PDA. Giữa chúng có một
mối liên hệ chặt chẽ qua hàng loạt các thiết bị phụ trợ trao đổi thông tin dễ dàng sử
dụng.
Hình 2.1: Thiết bị PDA
2.1.1.2 Các thế hệ máy
Lần đầu tiên xuất hiện PDA chỉ đơn giản là một chiếc máy tính cầm tay với
các ứng dụng cơ bản như đồng hồ, máy tính, danh bạ điện thoại, lịch làm việc, sổ
địa chỉ…Chiếc máy PDA thật sự đầu tiên ra đời năm 1984 là Psion 1 từ hãng UK
Technologies có kích thước 142mm x 78mm x 29.3mm, và chỉ nặng 225 grams,
được làm từ công nghệ 8 bit, với 10K bộ nhớ, màn hình 16-ký tự LCD, có một đồng
hồ và lịch kèm theo một bộ các hàm tính toán toán học. Các hỗ trợ kèm theo chiếc
máy này là các thư viện toán học và lập trình với OPL. Ðến cuối thập niên 80 Psion
2 ra đời có 64K ROM, 32K RAM màn hình 4x20 kí tự. Thế hệ Psion Seria 3a ra đời
5
vào năm 1993 được xây dựng trên nền tảng công nghệ 16 bit có màn hình 40 kí tự
Chương 2. Tổng quan về PDA và Hệ điều hành Windows CE
và 8 dòng LCD với bàn phím 58 phím. Ðây là sự đột phá lớn của PDA khi nó có
khả năng chuyển giao và đồng bộ hoá dữ liệu với máy tính để bàn. Cùng với sự phát
triển của thị trường máy tính, năm 1997 Seria 5 ra đời với khả năng tính toán 32 bit
đánh dấu bước ngoặc của PDA.
Phát triển từ thị trường của Psion, năm 1993, Apple ra đời sản phẩm Newton
MessagePad. Việc nhập liệu bằng các bàn phím tí hon đã hạn chế rất nhiều sự phát
triển của PDA. Do đó Apple đã cải tiến, áp dụng nhiều công nghệ mới như đưa ra
công nghệ màn hình điều khiển trực tiếp bằng tay, và công nghệ nhận dạng chữ viết
tay phát triển một cách nhanh chóng.
Tháng 3 năm 1995, Palm Pilot, một PDA được thiết kế để làm việc một cách
hợp lý khi di chuyển, được Palm Computing Corp giới thiệu. Thay vì theo bước
Apple trong việc tạo nhiều tính năng cho Newton, Palm quyết định gây sự chú ý
của thị trường bằng một chiếc máy có tốc độ cao và hiệu quả dựa trên những tính
năng cơ bản như việc ghi chú, quản lý các mối quan hệ, thời gian và công việc một
cách tốt nhất. Palm Pilot với công nghệ nhận dạng chữ viết tay Graffiti đã trở nên
thật sự phổ biến như là một chiếc máy tính bỏ túi với màn hình nhạy cảm có thể ghi
lại những hoạt động hàng ngày của bạn và kết nối với PC. Palm Pilot đã trở thành
chuẩn mực của thế hệ PDA thứ 2, có khả năng kết nối với PC, màn hình nhạy cảm,
nhận dạng chữ viết tay. Các modul của Pilot được thiết kế cho phép dễ dàng gắn
thêm hay gỡ bỏ các thiết bị phụ trợ để tạo dáng vẻ hấp dẫn như 1 thứ đồ trang trí.
Nó nổi bật ở tính thiết thực, dễ sử dụng, và thoải mái khi di chuyển. Palm Pilot đã
bán được hơn 1 triệu cái trong năm đầu tiên.
Năm 1997, Microsoft cho ra đời PDA đầu tiên chạy hệ điều hành Microsoft
Windows CE. Những chiếc PDA đầu tiên này có hình dáng to lớn, giống như 1
chiếc mini-laptop nhưng dần dần kích thước được thu nhỏ lại và được gọi là
Handheld PC. Chiếc PDA đầu tiên dùng Windows CE không được sử dụng rộng rãi
như Palm vì thiếu tính di động và quá phức tạp. Đến năm 2000, Microsoft đưa ra
6
phiên bản PDA mới là Pocket PC. Pocket PC với giao diện thân thiện, dễ sử dụng,
Chương 2. Tổng quan về PDA và Hệ điều hành Windows CE
đòi hỏi ít thao tác hơn đã nhanh chóng được nhiều người sử dụng. Các thế hệ
Pocket PC tiếp theo đã được trang bị phần cứng mạnh hơn và nhiều công nghệ mới
đã thực sự trở thành thiết bị hỗ trợ cá nhân tiện lợi và trung tâm giải trí.
PDA sẽ sử dụng SD (Secure Digital) để phát triển tiềm năng trong tương lai.
Thị trường PDA thật sự rất hứa hẹn. Kích thước nhỏ gọn và tiết kiệm điện năng,
những lợi thế của PDA, tỏ ra rất phù hợp với việc truyền dẫn không dây và việc sử
dụng máy dựa trên máy chủ. PDA sẽ ngày càng nhỏ và nhẹ hơn, thực hiện được
nhiều chức năng hơn. Rất có thể trong tương lai PDA sẽ sử dụng năng lượng mặt
trời, cho phép làm việc ngay cả khi đang di chuyển với việc truy nhập Internet
không dây. Dữ liệu sẽ được đảm bảo hơn với việc lưu trữ từ xa. Trên thực tế, chúng
ta đã thấy các thiết bị dùng công nghệ BlueTooth và WAP cho phép trao đổi thông
tin, truy cập Internet không dây với các thiết bị BlueTooth khác mà không phải lo
nghĩ gì về sự tương thích đang là một trở ngại ở các tia hồng ngoại đang dùng trong
các máy PDA. Sự phát triển của Personal Area Network (PAN) của cơ quan nghiên
cứu mối quan hệ giữa máy tính với con người của IBM (IBM Research’s Human
Computer Interaction) chia thành các bước khác nhau trong việc tái phát minh ra
PDA. PDA có thế trở thành một phần của cơ thể con người, cho phép trao đổi, truy
cập dữ liệu với những thao tác đơn giản hay truy cập Internet thông qua ý nghĩ có
thể trở thành hiện thực trong tương lai gần khi mà con người có thể cấy ghép các
thiết bị điện tử vào cơ thể. Sự tích hợp nhiều tính năng khác nhau trong PDA sẽ
mang đến cho người sử dụng nhiều tiện như sử dụng PDA như là một thiết bị điều
khiển từ xa tất cả các thiết bị trong nhà...Việc nhận dạng giọng nói và chữ viết cũng
sẽ được cải tiến đáng kể.
2.1.1.3 Các thành phần
2.1.1.3.1 Màn hình
Kế thừa các tính năng ưu việt của công nghệ điện tử di động, PDA được trang
bị màn hình tinh thể lỏng (TFT) tốt nhất, chịu đựng được môi trường rung và va
7
đập, màu sắc và ánh trung thực, tiêu tốn ít năng lượng nhất. Hiện có hai công nghệ
Chương 2. Tổng quan về PDA và Hệ điều hành Windows CE
khác nhau để sản xuất màn hình. Thông thường là công nghệ chiếu sáng nền, các
máy sử dụng công nghệ này cho phép người dùng dễ dàng quan sát các ứng dụng
trên màn hình, nhưng tốn pin. Trong khi đó với công nghệ màn hình phản chiếu, dù
vẫn có chiếu sáng nền nhưng máy chỉ hoạt động tốt khi ở ngoài trời hoặc những nơi
có ánh sáng tốt. Pocket PC có kích thước màn hình chuẩn là 320x240. Trong khi đó
các máy Palm có độ phân giải đa dạng hơn: từ độ phân giải căn bản là 160x160
pixel và tối đa là 320x480 pixel.
2.1.1.3.2 Pin
Hầu hết các máy sử dụng pin có thể nạp lại, tiêu biểu trong số này có pin
lithium-ion, là loại pin có hiệu suất cao nhất hiện nay, nhưng đa số cá loại máy đơn
sắc và các model rẻ tiền đều dùng pin AAA. Với các máy có màn hình đơn sắc, có
thể dùng hơn một tháng mới hết pin, trong khi chỉ dùng được khoảng hơn 10 giờ
đối với các loại máy có màn hình màu.
2.1.1.3.3 Nhận dạng chữ viết tay và nhập dữ liệu
Đây là một trong những yếu tố quyết định của PDA, công nghệ này xây dựng
dựa trên việc người dùng sử dụng cây bút gọi là stylus viết trực tiếp lên màn hình và
PDA nhận dữ liệu chuyển chúng thành các văn bản hoặc lưu trữ chúng giống như
các cuốn sổ tay điện tử, công nghệ Graffiti được ứng dụng rộng rãi. Người dùng
cũng có thể nhập liệu bằng một bàn phím vật lý nhỏ được thiết kế rời hay bằng bàn
phím ảo (Onscreen Keyboard) trên màn hình cảm ứng.
8
Hình 2.2: Bàn phím ảo của Pocket PC
Chương 2. Tổng quan về PDA và Hệ điều hành Windows CE
2.1.1.3.4 Liên lạc, kết nối
Phụ thuộc vào các hãng sản xuất và model. Các PDA hiện nay đều có thể kết
nối với nhau hoặc với PC qua cổng serial, hồng ngoại, modem trong kết nối qua
đường điện thoại và cả điện thoại di động. IrDA và Bluetooth sẽ là giao tiếp chuẩn
cho PDA.
2.1.1.3.5 Thiết bị mở rộng
Hầu hết các PDA đều có khe cắm mở rộng dùng cho việc nâng cấp bộ nhớ hay
mở rộng chức năng như modem, wire Ethernet và Wifi, máy ảnh số. Các PDA
thông thường dùng SD card (Security Digital) và một số ít khác dùng CF (Compact
Flash) hoặc có cả hai loại.
2.1.1.3.6 Hệ điều hành
Các PDA sử dụng hệ điều hành Palm chiếm tỉ lệ lớn, được số lượng ngày càng
tăng với các sàn phẩm của Sony, IBM, Handspring...Từ các phiên bản hệ điều hành
nhúng Windows CE ban đầu, Microsoft đã cải tiến và cho ra đời hệ điều hành
Pocket PC với nhiều cải tiến và đang dần được sử dụng rộng rãi trong các PDA.
EPOC là hệ điều hành truyền thống trên PDA của Psion chiếm 70% thị trường
(1999). EPOC với những ưu điểm đã được sự ủng hộ mạnh mẽ của Nokia,
Motorolla, Erisson và Symbian đang hoà nhập PDA và điện thoại di động qua hàng
loạt các công nghệ không dây tiên tiến. Một số ít PDA vừa xuất hiện như Sharp
Zaurus SL-5500 hay SL-5600 được cài đặt hệ điều hành Linux.
2.1.1.3.7 Các phần mềm ứng dụng
Bộ phần mềm quản lý thông tin cá nhân, còn gọi là PIM (Personal Information
Management), là linh hồn của PDA, bao gồm các chương trình nhỏ về các công
việc chủ yếu như: lập lịch làm việc, danh bạ điện thoại, ghi chú, thư điện tử. Ngoài
ra còn có nhiều ứng dụng tiện ích khác như: quản lý tập tin, đồng hồ, máy tính, soạn
thảo văn bản, bảng tính, phần mềm tài chính, Từ điển… Ngoài ra còn có hàng loạt
9
sản phẩm phần mềm về các công việc chuyên môn được viết riêng cho PDA như
Chương 2. Tổng quan về PDA và Hệ điều hành Windows CE
tìm đường bằng GIS kết hợp GPS, thu thập các số liệu điều tra hiện trường, điều
khiển các dây chuyền sản xuất...
2.1.2 Các hạn chế của PDA
Các PDA được thiết kế nhỏ gọn, tiết kiệm pin nên có nhiều hạn chế như dung
lượng bộ nhớ nhỏ, tốc độ xử lý chậm, tương tác người dùng không tiện lợi. Các hạn
chế này gây nhiều khó khăn cho việc phát triển ứng dụng phần mềm cho nó.
Tuy vậy, với nhiều tiện lợi, tính nhỏ gọn, các PDA vẫn đang ngày càng được
sử dụng rộng rãi. Đối với nhiều người, PDA là thiết bị không thể thiếu để quản lý
thông tin cá nhân, lập lịch làm việc, hỗ trợ công việc, giải trí…
2.2 Một số hệ điều hành nhúng cho thiết bị PDA
Khi nói đến thiết bị máy tính thì ta không thể không nhắc đến các hệ điều hành
được sử dụng trên thiết bị đó. Hệ điều hành của máy tính được ví như dòng máu
chảy trong cơ thể của một con người. Nếu không có hệ điều hành thì máy tính
không thể vận hành được. Các thiết bị PDA cũng vậy. Hầu hết các PDA sử dụng
một trong 3 hệ điều hành : Windows CE (Microsoft), EPOC (Symbian) và PalmOS.
Đã bắt đầu có một số sản phẩm PDA được giới thiệu cùng với Linux. Trong đó,
Windows CE và EPOC là hai hệ điều hành được sử dụng nhiều nhất trong các thiết
bị PDA.
2.3 Tổng quan về hệ điều hành Windows CE
10
Hình 2.3: Biểu tượng của Windows CE
Chương 2. Tổng quan về PDA và Hệ điều hành Windows CE
2.3.1 Giới thiệu
Windows CE là một hệ điều hành nhúng do Microsoft phát triển năm 1996,
được tích hợp vào các thiết bị giải trí, các máy subnotebook, máy tính cầm tay
(handheld PC, palm-size PC…); các điện thoại di động; các hệ thống thông tin, giải
trí trên xe hơi (AutoPC); cũng như các thiết bị công nghiệp, …
Do được thiết kế như là một phiên bản hệ điều hành Windows 32 bit thu nhỏ,
Windows CE rất quen thuộc đối với các hãng phát triển phần mềm, các lập trình
viên cũng như đối với người sử dụng Windows. Windows CE là một trong hai hệ
điều hành nhúng chiếm thị phần cao nhất hiện nay.
2.3.2 Đặc điểm
Hình 2.4: Kiến trúc của hệ điều hành Windows CE .Net
2.3.2.1 Tính nhỏ gọn
Đây là đặc điểm quan trọng nhất của hệ điều hành Windows CE. Mục đích của
việc tạo ra một hệ điều hành Windows CE nhỏ gọn là để giảm bớt những phần cứng
cần thiết (như RAM, ROM, CPU và vô số các thành phần khác) sao cho phù hợp
11
với những thiết bị điện tử giá thành rẻ, tính năng cao chẳng hạn như PDA, … Hệ
Chương 2. Tổng quan về PDA và Hệ điều hành Windows CE
điều hành Windows CE nhỏ nhất chỉ dưới 500K (không có màn hình hiển thị và các
trình điều khiển thiết bị). Mặc dù nhỏ gọn nhưng Windows CE thực sự là một hệ
điều hành giàu tính năng và có thể cấu hình lại.
2.3.2.2 Tính khả điều chỉnh lại
Windows CE là một hệ điều hành có tính “lắp ráp”, có thể điều chỉnh lại.
Không giống như phiên bản Windows trên desktop được phát triển như là một tập
cố định các tập tin, Windows CE được tạo nên từ các module (là các tập tin chương
trình .exe, và các tập tin thư viện .dll), và một số module này được tạo ra từ hai hay
nhiều component (bao gồm các hàm API hay các tính năng của hệ điều hành).
Để tạo ra một phiên bản Windows CE đáp ứng một mục đích sử dụng nào đó
(như để tích hợp vào một thiết bị mới), những nhà phát triển có thể sử dụng công cụ
Platform Builder của Microsoft để điều chỉnh lại hệ điều hành bằng cách thêm hay
bớt các module khác nhau.
2.3.2.3 Tính khả chuyển đổi
Cũng giống như phiên bản Windows trên desktop, hầu hết các chương trình
ứng dụng lẫn các trình điều khiển thiết bị (hai thách thức chính dẫn đến sự thành
công của một hệ điều hành) của Windows CE đều được xây dựng trên nền tảng giao
diện lập trình Win32 API . Hơn nữa, phần lớn chúng được kế thừa, đơn giản hóa từ
phiên bản hệ điều hành Windows trên desktop. Do đó, có thể chuyển mã nguồn từ
desktop sang Windows CE, cũng như có thể chuyển mã nguồn giữa các thiết bị
được xây dựng trên các CPU khác nhau nhưng cùng sử dụng hệ điều hành Windows
CE.
2.3.2.4 Tính tương thích
Thông thường thì một hệ điều mới luôn duy trì tính tương thích với các hệ
điều hành trước nó. Windows CE không phải là một trường hợp ngoại lệ. Để đạt
12
được điều này thì tính chuyển đổi của Windows CE được nâng lên một bước, đó là
Chương 2. Tổng quan về PDA và Hệ điều hành Windows CE
có thể chia sẻ mã nguồn giữa desktop và các thiết bị thông minh càng dễ dàng càng
tốt.
Hơn nữa, tính tương thích của Windows CE còn thể hiện ở việc tạo các giao
diện lập trình có tính tương thích, nghĩa là giữ cho các giao diện lập trình trên thiết
bị càng nhất quán với trên desktop càng tốt. Chẳng hạn, mặc dù Windows CE hỗ trợ
một số lượng các hàm Win32 ít hơn desktop nhiều nhưng tất cả những hàm được hỗ
trợ có thể thực hiện những công việc tương đương trên desktop càng nhiều càng tốt.
2.3.2.5 Tính kết nối
Windows CE làm cho các thiết bị thông minh có thể kết nối tới các thiết bị
dùng hệ điều hành Windows CE khác, tới các mạng cục bộ (cả kết nối có đường
dẫn lẫn kết nối khộng dây), và kết nối vào mạng Internet. Hơn nữa, các thiết bị
chuyên biệt cho Windows CE còn có thể kết nối tới các mạng cá nhân (PAN –
Personal Area Network), các mạng nội bộ (LAN – Local Area Network), và các
mạng diện rộng (WAN – Wide Area Network).
Khi đề cập đến kết nối thì tính bảo mật luôn có tầm quan trọng nhất. Do đó,
các thiết bị chuyên biệt cho Windows Ce cũng cho phép thiết lập các kết nối riêng,
an toàn, bảo mật tới một mạng LAN thành viên ở xa qua Internet sử dụng giao thức
Point – to – Point Tunneling Protocol (PPTP) để thiết lập một mạng riêng ảo có tính
bảo mật (Virtual Private Network – VPN). Ngoài ra, Windows Ce còn cung cấp các
tính năng khác cho việc truyền thông an toàn trên mạng như: Secure Socket Layer
(SSL), hỗ trợ Cryptography API; xác nhận Kerberos and NTLM, và hỗ trợ tường
lửa IP.
Nói chung, khi có mối quan hệ client/server thì Windows Ce hỗ trợ kết nối ở
phía client.
2.3.2.6 Hỗ trợ phát triển hệ thống thời gian thực
Bắt đầu từ phiên bản Windwos CE 3.0, thì Windows CE được tích hợp một tập
13
các tính năng quan trọng để hỗ trợ cho việc phát triển các hệ thống thời gian thực
Chương 2. Tổng quan về PDA và Hệ điều hành Windows CE
như: hỗ trợ 256 độ ưu tiên cho tiến trình (Windows CE luôn hỗ trợ lập trình đa tiến
trình), hỗ trợ các yêu cầu ngắt lồng nhau.
Có thể nói Windows CE là hệ điều hành hỗ trợ mạnh các tính năng về thời
gian thực như:
• Đảm bảo các chặn trên cho việc lập lịch tiến trình có độ ưu tiên cao – chỉ
đối với tiến trình có độ ưu tiên cao nhất trong tất cả các tiến trình được lập
lịch.
• Đảm bảo chặn trên trễ cho việc thực hiện các chuỗi dịch vụ ngắt có độ ưu
tiên cao (ISRs – Interrupt Service Routines). Nhân hệ điều hành có một vài
nơi ở đó các ngắt bị khóa trong một khoảng thời gian ngắn, có giới hạn.
• Kiểm soát chặt chẽ bộ lập lịch và cách mà nó lập lịch các tiến trình.
2.3.3 Một số phiên bản của Windows CE
Hiện thời, có khá nhiều sự lẫn lộn quanh các phiên bản của Windows CE cũng
như cách gọi tên. Sau đây là một vài phiên bản hiện thời của Windows CE:
• Windows CE .NET 4.2: Phiên bản mới nhất hiện nay cung cấp nhiều hàm
thư viện hơn nhưng đòi hỏi cấu hình phần cứng cao hơn. Một trong những
tính năng mới của Windows CE .NET là tích hợp sẵn .NET Compact
Framework, cho phép phát triển ứng dụng không phụ thuộc phần cứng và
hệ điều hành.
• Windows CE 3.0: Phiên bản này được thiết kế để cung cấp các đặc tính
của một hệ điều hành thời gian thực và một số phát triển khác. Thiết bị
Pocket PC (phiên bản 2002 trở về trước) sử dụng một dạng biến thể phiên
bản này.
• Windows CE 2.12: Được sử dụng chủ yếu bởi các nhà sản xuất thiết bị
nhúng dùng Microsoft Platform Builder. Phiên bản này không nhắm tới
các thiết bị cho người tiêu thụ cuối.
• Windows CE 2.21: Phiên bản của Windows CE dùng cho các thiết bị
14
Windows Handheld và Palm-size.
Chương 2. Tổng quan về PDA và Hệ điều hành Windows CE
2.3.4 Các biến thể của Windows CE
Hiện nay, Windows CE có nhiều biến thể cho phù hợp với từng loại thiết bị
PDA: Handheld PC, Pocket PC, SmartPhone. Trong năm 2003, Microsoft đã cho ra
đời hai phiên bản biến thể mới nhất của Windows CE là Pocket PC 2003 và
15
Smartphone 2003.
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework
Chương 3 Tổng quan về Pocket PC và
môi trường lập trình .Net Compact Framework
3.1 Tổng quan về Pocket PC
3.1.1 Giới thiệu
Khi nói về Pocket PC ta cần phân biệt hai khái niệm. Đó là hệ điều hành
Pocket PC (Pocket PC Operating System) và thiết bị Pocket PC (Pocket PC–
device).
• Hệ điều hành Pocket PC: là một phiên bản của hệ điều hành Windows CE
cho các thiết bị di động được Microsoft giới thiệu vào đầu năm 2000. • Thiết bị Pocket PC: là một PDA, là một thiết bị cầm tay (palm–size) sử
dụng hệ điều hành Pocket PC.
Một thiết bị Pocket PC luôn đi kèm với một phiên bản của hệ điều hành
Pocket PC.
3.1.2 Hệ điều hành Pocket PC
Hệ điều hành Pocket PC được thiết kế với các tính năng và giao diện dành
riêng cho các thiết bị hỗ trợ cá nhân PDA và máy tính cầm tay (handheld PC). Có
thể hiểu hệ điều hành Pocket PC là một phiên bản của hệ điều hành Windows CE
được cài đặt nhằm tối ưu cho các thiết bị này.
Hệ điều hành Pocket PC giải quyết được nhiều thiếu sót đã làm giảm thành
công của hệ điều hành Windows CE, như giao diện quá phức tạp, tốc độ chậm, khả
năng lưu trữ kém, nguồn cung cấp năng lượng không tốt, …
Phiên bản mới nhất là hệ điều hành Pocket PC 2003, một thể hiện của hệ điều
16
hành Windows CE 4.2.
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework
Hình 3.1: Giao diện Pocket PC 2003
3.1.3 Thiết bị Pocket PC
Ra đời vào những năm 90 của thế kỉ 20, thiết bị Pocket PC là một dạng thiết bị
PDA sử dụng hệ điều hành Pocket PC.
Với thiết bị Pocket PC thì mục đích của Microsoft là tạo ra một máy tính đa
năng mà có thể đặt trong lòng bàn tay.
Các thiết bị Pocket PC do nhiều hãng như Compag, HP, Casio sản xuất.
Thiết bị Pocket PC có tốc độ và bộ nhớ gấp vài lần so với các thiết bị sử dụng
hệ điều hành PalmOS. Chúng cũng có độ phân giải màn hình lớn hơn (320x240) và
gần như hiển thị được tất cả các màu. Khả năng thể hiện và ghi âm đã trở thành
chuẩn. Hơn nữa, thiết bị Pocket PC sử dụng các chuẩn cắm công nghiệp, có tính
17
tương thích và có một số hình thức thêm các phần (module) mở rộng (thường dưới
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework
hình thức các thẻ Compact Flash) như các thẻ nhớ (storage card), hay modem kết
nối Internet, …Tất cả các hệ thống có thể giao tiếp qua cổng hồng ngoại (IR–
Infrared), và chúng cũng có thể kết nối với desktop qua cổng USB dùng cáp nối.
Microsoft đã thêm các tính năng mới cho thiết bị Pocket PC với hệ điều hành
Pocket PC (lưu trong ROM) chứa phiên bản thu gọn của một số phần mềm như:
Pocket Internet Explorer, Pocket Word và Excel, Outlook, Microsoft Reader, Media
Player, File Manager, Notepad và Calculator, …cũng như gói phần mềm
ActiveSync giữa thiết bị Pocket PC và các máy trạm.
Các phần mềm khác phải được lưu trong Systems RAM (đóng vai trò là sự
kết hợp giữa hệ thống tập tin và bộ nhớ hỗn tạp). Microsoft cũng cung cấp một số
phần mềm miễn phí như: Pocket Streets, Transcriber (bộ giải mã chữ viết tay) và
Games (như Freecell). Nhiều phần mềm khác của hãng thứ ba cũng được tích hợp
sẵn như: Databases, Picture Viewers, …
Với tất cả những tính năng trên thì Pocket PC thực sự là một trong những thiết
bị PDA được sử dụng phổ biến nhất ở Việt Nam hiện nay, cũng như trong tương lai.
Nhưng do điều kiện không cho phép nên ứng dụng Từ điển chỉ được phát triển trên
Pocket PC 2002.
18
Hình 3.2: Một số thiết bị Pocket PC
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework
Ghi chú:
Từ đây, trong luận văn, khi đề cập đến Pocket PC xin hiểu đây là thiết bị
Pocket PC (ứng dụng được xây dựng trên phiên bản hệ điều hành Pocket PC 2002,
được phát triển trên nhân hệ điều hành nhúng Windows CE 3.0). Ngoài ra, do là
một biến thể của Windows CE 3.0, nên khi đề cập tới các vấn đề liên quan như khả
năng lập trình, hạn chế về tốc độ, giải pháp của Windows CE… xin hiểu đó là các
vấn đề gặp phải với hệ điều hành Pocket PC.
3.2 Một số công cụ phát triển trên Pocket PC 2002
Là một lập trình viên thì khi tìm hiểu một thiết bị mới, cũng như một hệ điều
hành mới, vấn đề được quan tâm nhất chính là khả năng lập trình, phát triển ứng
dụng trên thiết bị, hệ điều hành đó. Đối với Pocket PC 2002 thì hiện nay tất cả các
phần mềm hay ứng dụng đều được phát triển bằng hai công cụ chính là:
• Microsoft eMbedded Visual C++ 3.0. • .Net Compact Framework.
Mỗi công cụ đều có những điểm mạnh, yếu đặc trưng của nó. Vì vậy, khi phát
triển ứng dụng trên Pocket PC cần xem xét, cân nhắc việc kết hợp giữa 2 bộ công
cụ này.
3.3 Công cụ lập trình Microsoft eMbedded Visual C++ 3.0
3.3.1 Khái quát
Microsoft eMbedded Visual Tools 3.0 là một môi trường “tất cả trong một”
cho sự phát triển cơ sở Windows CE (tương tự như bộ Visual Studio). Nó cuộn sang
một gói đơn tất cả hỗ trợ mà thường đòi hỏi 4 sản phẩm riêng rẽ. Không giống như
sản phẩm phát triển chương trình trước đó của Windows CE, nó không đơn giản
một add-on vào công cụ tồn tại cho Visual C++ và Visual Basic. Thay thế vào đó,
19
nó cung cấp tất cả những gì bạn cần từ cả 2 môi trường đơn và gói độc lập.
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework
3.3.2 Một số đặc điểm nổi bật
Microsoft eMbedded Visual C++ 3.0 là một chương trình mạnh nhất cho các
nhà lập trình xây dựng chương trình phầm mềm ứng dụng cho các thiết bị sử dụng
Windows CE. IDE đứng độc lập mang đến một mức độ mới cho sản phẩm cho sự
phát triển Windows CE, không có sự thỏa hiệp mềm dẻo nào, thực thi, hoặc kiểm
soát.
Với eMbedded Visual C++, các nhà phát triển có thể đạt được các điều sau: • Có một sự thuận lợi của một môi trường phát triển quen thuộc bằng việc
xây dựng các chương trình ứng dụng trên Windows CE sử dụng bộ tích
hợp điện tử độc lập được thiết kế nhắm tới sự phát triển Windows CE; • Truy nhập Windows CE - cung cấp những tài liệu cụ thể nhằm tạo ra các
bộ phát triển phần mềm nền mà bạn đã cài đặt ở nơi làm việc của bạn. • Tiết kiệm thời gian và tiền bạc bằng việc sử dụng các phiên bản Windows
CE của Microsoft Foundation Classes và Active Template Library;
• Xây dựng những giải pháp công nghệ với các khả năng qua các ADO cho
Windows CE, xử lý các tác vụ qua MTS - Microsoft Transaction Server,
và sự tích hợp gần gũi hơn với các dịch vụ của hệ điều hành Windows
CE.
Đạt tới sự truy nhập trực tiếp vào các tính năng dưới hệ điều hành không cần
sự mã hóa thêm vào, cung cấp điều khiển đầy đủ trên các thiết bị phần cứng và hệ
điều hành chủ. Truy nhập vào mọi tính năng của mọi sự hoán vị của hệ điều hành
Windows CE để xây dựng nhanh nhất, thiết thực nhất cho các chương trình ứng
dụng Windows CE. Là công cụ đầu tiên để lập trình cho các thiết bị mới nhất và thú
vị nhất với Windows CE, sử dụng các giả lập SDK Windows CE cho eMbedded
Visual C++.
Tham gia lập trình ngay từ đầu và có thể xây dựng các chương trình tốt cho hệ
điều hành tiếp theo. Mở rộng các lựa chọn phát triển hướng tới toàn bộ những nhóm
20
người dùng mới và trang bị những chương trình tương tự như trong máy tính để bàn
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework
nhưng chạy trong Windows CE như trình duyệt Internet, các xử lý giao dịch công
việc cụ thể (task-specific business processes), hoặc chương trình giải trí. Xây dựng
các chương trình phục vụ sự lưu động cao, với tính năng có thể truy nhập từ xa dữ
liệu lưu trữ và truyền tải với các mạng chủ.
Với những tính năng như vậy thì Microsoft eMbedded Visual C++ 3.0 thường
được sử dụng để phát triển các ứng dụng đòi hỏi phải can thiệp sâu xuống hệ thống,
có tốc độ xử lý đặc biệt.
Tuy nhiên, việc sử dụng Microsoft eMbedded Visual C++ 3.0 tương đối rắc
rối và phức tạp. Hơn nữa, đây là một công cụ phát triển phụ thuộc thiết bị và hệ
điều hành, nghĩa là muốn ứng dụng chạy được trên nền nào thì ứng dụng phải được
biên dịch chính xác trên nền đó. Đó là một khó khăn đối với những người bắt đầu
làm quen với việc lập trình trên Pocket PC nói riêng và trên các thiết bị PDA nói
chung.
21
Hình 3.3: Sự phụ thuộc thiết bị khi lập trình với eVC++ 3.0
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework
3.4 Môi trường lập trình .Net Compact Framework
3.4.1 .Net Compact Framework là gì
.Net Compact Framework (.Net CF) là một giao diện lập trình, một thư viện
thực thi được tạo ra như là sự kết hợp giữa hai công nghệ của Microsoft: Window
CE và .Net.
Nói cách khác, .Net Compact Framework là một tập con của .Net Framework.
Nó bao gồm các thư viện lớp cơ sở và có thêm một số thư viện chuyên cho việc
phát triển trên các thiết bị PDA. .Net Compact Framework được thiết kế để cho
phép các ứng dụng .Net chạy được trên tất cả các thiết bị PDA mà không lệ thuộc
hệ điều hành.
.NET Compact Framework
Applications
Platform Specific Class Libs
Base Class Libs Managed
t s o H n i a m o D p p A
Native Execution Engine (MSCOREE.DLL)
Platform Adaptation Layer
Host Operating System
22
Hình 3.4: Kiến trúc của .Net Compact Framework
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework
3.4.2 Một số đặc điểm của .Net Compact Framework
3.4.2.1 Độc lập với thiết bị và hệ điều hành
Hoạt động gần giống nguyên tắc với một máy ảo nhưng được thiết kế để tận
dụng tối đa tài nguyên của thiết bị nhúng, .NET Compact Framework cho phát triển
một ứng dụng .NET viết một lần, chạy ở mọi nơi.
Cần lưu ý rằng do các máy PDA sử dụng rất nhiều chủng loại CPU khác nhau
như ARM4, ARM4I, Xscale… các chương trình cũng cần được biên dịch thành
nhiều tập tin .EXE ứng với mỗi chủng loại CPU. Khi cài đặt, chương trình đóng gói
setup sẽ kiểm tra và chép tập tin .EXE phù hợp với loại CPU được sử dụng trong
thiết bị. Đối với ứng dụng .NET, chương trình có thể chạy trên bất kỳ loại CPU nào.
Hiện tại .NET Compact Framework chỉ mới được viết cho các máy PDA sử dụng hệ điều hành Windows CE1. Kế hoạch xây dựng .NET CF cho các hệ điều
hành nhúng khác đang được xây dựng, bắt đầu từ Embedded Linux.
Đây là một trong những ưu điểm nổi trội của việc chọn lựa .NET Compact
Framework để phát triển ứng dụng trên Pocket PC.
3.4.2.2 Được xây dựng dựa trên những thừa hưởng từ .Net Framework
.NET Compact Framework (.NET CF) là thư viện .NET Framework đã được
Microsoft thiết kế lại để chạy hiệu quả trong điều kiện tài nguyên giới hạn của các
thiết bị PDA.. Nó bao gồm 18 thư viện với dung lượng khoảng 2,5MB trong khi
.Net Framework phiên bản 1.1 gồm 86 thư viện chiếm khoảng 40MB.
Tất cả các thành phần chuẩn “phổ biến” của .Net Framework trên desktop đều
có thể tìm thấy trong .Net Compact Framework.
Các tập tin thực thi sử dụng tập chỉ dẫn CIL để đưa chúng vào bộ nhớ và được
biên dịch JIT (Just In Time - cơ chế chỉ biên dịch các phần cần thiết để chạy chương
máy tính để bàn có cài đặt .NET Framework.
23
1 Do .NET CF là một phần của .NET Framework, các ứng dụng .NET dược viết cho PDA vẫn chạy tốt trên
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework
trình) sang những chỉ dẫn ngôn ngữ máy bởi cơ chế thực thi ngôn ngữ chung (CLR
- Common Language Runtime) của .Net Compact Framework.
.Net CF cũng cung cấp cơ chế quản lý bộ nhớ giống như trên desktop như: cấp
phát bộ nhớ, quản lý bộ nhớ Heap, và cơ chế dọn rác tự động.
Compact Framework cũng hỗ trợ tất cả các chuẩn trong nền tảng ngôn ngữ
chung (CLI – Common Language Infrastructure), gồm hệ thống kiểu chung
(Common Type System) cũng như đặc tả kiểu chung (Common Language
Specification). Mặc dù bộ khung này không phong phú bằng trên desktop, nhưng
các thao tác trong thời gian thực thi cơ bản là chính xác.
3.4.2.3 Duy trì sự nhất quán với Desktop
Các lập trình viên đã quen với các ứng dụng .Net trên desktop sẽ cảm thấy gần
gũi với .Net Compact Framework vì cả hai bộ khung chia sẻ tất cả các kiểu giá trị
cơ bản, hầu hết các không gian tên (namespaces) và nhiều lớp chung.
SSyysstteemm..WWeebb
SSyysstteemm..WWiinnddoowwss..FFoorrmmss
(cid:122) Services
(cid:122) UI
Design
Component Model
(cid:122) HTML Controls (cid:122) Web Controls
(cid:122) Description (cid:122) Discovery (cid:122) Protocols
Cache
Security
SSyysstteemm..DDrraawwiinngg Printing
Drawing 2D
Session State
Imaging
Configuration
Text
SSyysstteemm..XXMMLL
SSyysstteemm..DDaattaa
ADO.NET
XML Document
SQL Client
Serialization
Design
SQL ServerCE
Xslt/XPath
Reader/Writers
SSyysstteemm
Collections
IO
Configuration
(cid:122) Runtime
Security
Net
Service Process
Diagnostics
Text
Reflection
(cid:122) Interop Services (cid:122) Remoting (cid:122) Serialization
Globalization
Resources
Threading
24
Hình 3.5: Không gian tên và các lớp của .Net Compact Framework
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework
Tuy nhiên, hầu hết các lớp trên .Net Compact Framework có số thuộc tính,
phương thức, sự kiện ít hơn. Đây cũng chính là một khó khăn cho các lập trình viên
khi tiếp cận với .Net Compact Framework. Họ phải mất thời gian để thích nghi với
“sự thiếu sót”.
Các ứng dụng .Net CF cũng được xây dựng trên môi trường Visual Studio .Net
như các ứng dụng .Net. Một chương trình viết bằng .Net CF có thể chạy được trên
desktop mà không cần bất kỳ sự thay đổi nào.
Tính nhất quán cao của chúng cho phép trên cùng một tài liệu hỗ trợ cả hai bộ
khung. Các thành phần nào của lớp được hỗ trợ trên .Net CF sẽ được ghi chú là
“Supported by the .Net Compact Framework”.
Hình 3.6: Ghi chú hỗ trợ .Net Compact Framework trong MSDN
3.4.2.4 Chạy tốt trên các thiết bị nhúng di động
Hai thách thức chính khi phát triển các ứng dụng trên các thiết bị PDA là kích
thước và tốc độ.
Vấn đề đặt ra là làm sao để có thể sử dụng được bộ thư viện đồ sộ 25+ MB của
desktop Framework trên các thiết bị di động mà khả năng lưu trữ rất giới hạn (từ
32MB đến 64MB). Hướng giải quyết được đưa ra là rút gọn desktop Framework từ
25+ MB xuống chỉ còn 2MB bằng nhiều cách khác nhau:
• Nếu có hai hay nhiều cách để thực hiện một tác vụ nào đó thì hầu hết
25
chúng được loại bỏ.
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework
• .Net CF loại bỏ các tính năng trung tâm trên desktop như kéo thả (drag-
and-drop), các control phức tạp như RichTextBox (.Net CF chỉ hỗ trợ một
phần các Control trên desktop. Xem Phụ lục A ). Với các Control được hỗ
trợ thì chỉ những tính năng cơ bản nhất được giữ lại, một tập con “PMEs”
– Properties, Methods và Events (Xem Phụ lục A ) .
Vấn đề còn lại là về mặt tốc độ. Thậm chí những CPU nhanh nhất trên các
thiết bị nhúng di động cũng chậm hơn các CPU trên một hệ thống desktop trung
bình. Để đạt được những yêu cầu về mặt tốc độ, .Net CF được đo đạc và chuyển đổi
sao cho các control chủ yếu dựa trên Win32 (native control). Tuy nhiên do các
control Win32 ở dạng unmanaged code mà Compact Framework code lại chạy dưới
dạng managed code nên cũng phải tốn chi phí để vượt qua ranh giới giữa managed
và unmanaged code. Vì vậy để tăng tốc độ của các control thì .Net CF chỉ chấp
nhận một tập con các thông điệp Win32 được kiểm soát chặt chẽ.
3.4.2.5 Thể hiện phong phú trên các Platform khác nhau
Trong mọi trường hợp, Compact Framework dựa trên các native control để
thực hiện phần chính của công việc. Điều này rõ ràng là đem lại những lợi ích về
mặt kích thước và tốc độ. Hơn nữa, ứng với mỗi Platform nó có còn cung cấp một
chuẩn giao diện (look-and-feel) đáng tin cậy cho các ứng dụng Compact
Framework trên đó.
Ví dụ, lớp MainMenu của .Net CF sẽ cung cấp các thể hiện khác nhau ứng với
từng Platform. Đối với các ứng dụng trên Pocket PC, trình đơn này xuất hiện ở phía
dưới của của sổ. Còn trên các thiết bị Windows CE.NET không phải là Pocket PC
(non-Pocket PC), cũng với các ứng dụng đó nhưng trình đơn lại xuất hiện phía trên
của cửa sổ giống như các ứng dụng trên Windows CE.NET chuẩn. Mặc dù sự cài
đặt bên dưới của trình đơn Win32 là khác nhau nhưng các nhà phát triển không thể
26
thấy được sự khác nhau đó thông qua các lớp MainMenu và MenuItem của .Net CF.
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework
3.4.2.6 Duy trì chuẩn giao diện (look-and-feel) của từng Platform
Vấn đề nảy sinh từ những khác nhau không rõ ràng trong cách cài đặt các
native control. Có nhiều sự khác nhau rất nhỏ, hầu như không thể nhận thấy được
như thêm một pixel ở đây, bớt một pixel ở kia. Những khác nhau như vậy là không
thể thấy được khi nhìn vào hai ứng dụng chạy trên hai thiết bị khác nhau. Nhưng
khi hai ứng dụng chạy trên cùng một thiết bị thì những khác nhau đó trở nên rõ
ràng. .Net CF đảm bảo rằng các chuẩn look-and-feel trên các Platform khác nhau
được duy trì. Còn đối với người sử dụng thì không thể phân biệt được một cách trực
quan giữa ứng dụng Compact Framework và các ứng dụng không Framework.
3.4.3 Một số hạn chế của .Net Compact Framework:
Như đã nói, .Net Compact Framework là một tập con, được đơn giản hóa từ
.Net Framework trên Desktop. Do đó, việc thiếu sót một số đặc tính sẽ gây ra những
khó khăn nhất định đối với các lập trình viên đã quen với môi trường .Net
Framework trên Desktop. Trong một số trường hợp, người dùng có thể tìm thấy sự
hỗ trợ trong các thư viện Win32 bằng cách sử dụng khai báo P/Invoke. Còn trong
trường hợp xấu nhất, thì bạn phải nghĩ đến cách cài đặt lại một đặc tính thiếu sót
nào đó.
.Net Compact Framework không hỗ trợ các module IL (Intermediate Language
- Ngôn ngữ trung gian) tiền biên dịch, mà tất cả sự chuyển đổi từ IL sang Native
code được thực hiện lúc thực thi chương trình như là JITted code (Just In Timed
code – những đoạn code nào cần thiết để chạy ứng dụng mới được biên dịch).
Đối với XML Web Services, .Net Compact Framework chỉ hỗ trợ cơ chế gọi
thủ tục từ xa, mà không hỗ trợ cơ chế .Net Remoting, một cơ chế mềm dẻo hơn
Web Services bởi vì một đối tượng có thể thực hiện nội bộ trên cùng một máy, hoặc
27
là thực hiện từ xa trên một máy được nối mạng.
Chương 3. Tổng quan về Pocket PC và môi trường lập trình .Net Compact Framework
∗ hỗ trợ tập ký tự Unicode. Bảng
Các thư viện cơ sở trên Windows CE chủ yếu
sau đây tóm tắt sự hỗ trợ các tập ký tự khác nhau trên các hệ điều hành họ
Microsoft
Hệ điều hành Hỗ trợ ANSI (các ký tự một/nhiều – Byte) Hỗ trợ Wide (ký tự Unicode)
Có Không**
Có Có
** Với thư viện Microsoft Unicode (MSUL) thì có hỗ trợ sẵn Unicode.
Windows 98, Me WindowsNT, Windows2000, WindowsXP, WindowsServer2000 Windows CE.Net Không Có
Bảng 3.1: Hỗ trợ các tập ký tự khác nhau trên các hệ điều hành họ Microsoft
Thế giới máy tính đang chuyển dần sang sử dụng ký tự Unicode. Windows CE
chỉ hỗ trợ Unicode, điều này có nghĩa là các hàm Win32 trên Windows CE chỉ chấp
nhận các ký tự Unicode. Vấn đề nảy sinh khi đọc các tập tin không phải dạng
Unicode, hay truyền thông với các máy khác bằng các ký tự không phải là Unicode
(non-Unicode). Chẳng hạn, hầu hết các trang Web đều không gửi các ký tự
Unicode. Trong trường hợp này, bạn cần phải chuyển đổi giữa Unicode và các tập
ký tự khác (được hỗ trợ bởi lớp System.Text).
Hệ thống registry trên Windows CE cũng quan trọng như trên Desktop.Mặc dù
được nhấn mạnh là quan trọng nhưng, .Net Compact Framework không hỗ trợ các
lớp truy cập registry. Các lớp Registry và RegistryKey không được hỗ trợ bởi
Compact Framework. Tuy nhiên, bạn có thể dùng P/Invoke để truy cập đến registry.
viện wininet.dll, hỗ trợ cả ANSI lẫn Unicode.
28
∗ Nói “chủ yếu” là bởi vì có một số thư viện hướng mạng (network-oriented), gồm các thư viện socket và thư
Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC
Chương 4 Các vấn đề khi xây dựng ứng dụng
Từ điển trên Pocket PC
Khi bắt đầu xây dựng bất cứ một ứng dụng nào thì một trong những điều đầu
tiên cần quan tâm chính là các đặc tính của nó. Sau đó, ta cũng cần phải chú ý đến
môi trường cài đặt ứng dụng để có thể nắm bắt được các khó khăn, hạn chế khi tiến
hành cài đặt ứng dụng này.
4.1 Đặc trưng của một ứng dụng Từ điển
Để xây dựng một ứng dụng Từ điển hiệu quả, ta cần quan tâm 2 đặc tính quan
trọng sau đây:
• Tốc độ xử lý nhanh. Có thể nói thao tác cơ bản nhất của một ứng dụng Từ
điển là tra cứu. Do đó, việc tìm kiếm phục vụ cho thao tác tra cứu xảy ra
hết sức thường xuyên, yêu cầu nhanh chóng hiện kết quả cho người sử
dụng.
• Dữ liệu lưu trữ lớn. Từy theo các loại Từ điển khác nhau mà có kích thước
lưu trữ khác nhau. Nhưng nhìn chung, thường thì dữ liệu lưu trữ của một
Từ điển là khá lớn. Bên cạnh đó, ta cũng cần quan tâm đến số lượng các
phần tử trong một Từ điển.
Ngoài ra yêu cầu dễ sử dụng cũng là một đặc tính quan trọng không chỉ riêng
với ứng dụng Từ điển.
Với những tính chất cơ bản trên, thì việc khảo sát các đặc trưng của Pocket
PC, đồng thời phân tích các vấn đề phát sinh khi xây dựng một ứng dụng Từ điển
trên Pocket PC là rất cần thiết để từ đó đưa ra những giải pháp phù hợp (sẽ được
29
trình bày trong Chương 5).
Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC
4.2 Giới hạn về bộ xử lý
Đặc điểm chung của các bộ xử lý trên thiết bị PDA là tiết kiệm pin, nhỏ gọn,
nhất là không đòi hỏi các thiết bị giải nhiệt chuyên dụng. Ngoài ra, vì lý do tối ưu
giữa chi phí sản xuất và nhu cầu sử dụng chủ yếu của các thiết bị PDA, bộ xử lý cho
PDA thường có tốc độ thấp và không ứng dụng hoặc ứng dụng hạn chế một số công
nghệ tăng tốc xử lý dùng cho các bộ xử lý Pentium.Pocket PC sử dụng một loại
CPU khác với CPU thông thường.
Máy Pocket PC 2002 sử dụng CPU StrongARM hoặc XScale của Intel. Các
CPU này được gọi là các bộ xử lý RISC (Reduced Instruction Set Computer) vì nó
chỉ thực hiện một lệnh trong một chu kì CPU. (Mỗi chu kì CPU trong một giây gọi
là 1 Hertz hay 1 Hz). Máy PC thông thường của chúng ta sử dụng bộ xử lý CISC
(Complex Instruction Set Computer), đòi hỏi nhiều chu kì CPU để xử lý một lệnh
xác định. Do đó, các bộ xử lý RISC như StrongARM theo lý thuyết, có thể tính toán
lên tới 206 triệu lệnh một giây nếu nó xử lý ở tốc độ 206 Mhz.
Các bộ xử lý StrongARM và XScale cũng xử lý các lệnh 32bit, giống như PC
thông thường. Tuy nhiên, lại có một khác biệt lớn trong việc xử lý kích thước lệnh.
Bộ xử lý CISC cho phép lệnh có thể có chiều dài biến đổi, vì vậy, nó phải tính toán
kích thước của dữ liệu cần đọc khi xử lý lệnh. Trong kiến trúc RISC, mỗi lệnh 32bit
sẽ có 32 dữ liệu đi kèm. Vì vậy, bộ xử lý luôn biết được phải đọc bao nhiêu dữ liệu.,
đây là một điểm mạnh của kiến trúc này.
Độ rộng của bus cùng với tốc độ bus cũng có một ảnh hướng lớn đến tốc độ xử
lý và tính toán của máy tính. Độ rộng của bus chỉ ra số lượng bit (hay byte) dữ liệu
có thể đọc từ / ghi lên RAM vào bộ vi xử lý. Còn tốc độ bus chỉ ra dữ liệu có thể
được đọc từ RAM vào bộ vi xử lý với độ nhanh như thế nào. Ta có thể hình dung,
độ rộng bus như số làn giao thông trên xa lộ, còn tốc độ bus như giới hạn về tốc độ
khi lưu thông. Hiện nay, StrongARM và XScale sử dụng bus tốc độ 100Mhz và
thiết kế hiện nay của Pocket PC cho phép dùng bus 16bit. Điều này có nghĩa là tốc
30
độ bus tối đa là 200MB/giây.
Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC
Vấn đề đặt ra ở đây là như vậy, bộ vi xử lý có thể đạt được tốc độ xử lý bao
nhiêu. Do chúng ta cần đọc 8bytes dữ liệu trước khi xử lý một lệnh, nên giả sử
chúng ta có được tốc độ bus tối đa là 200MB/giây, thì thực sử, bộ xử lý chỉ thi hành
được 25 triệu lệnh.
Ngoài ra, lại có một vấn đề khác, đó là cache. Cache là một loại RAM đặc biệt
được chứa bên trong CPU và xử lý với cùng tốc độ của CPU. Cache trong bộ xử lý
StrongARM là 16K cho mã chương trình và 8K cho dữ liệu, cache trong XScale là
32K cho mã chương trình và 32K cho dữ liệu. Nếu dữ liệu và mã chương trình cần
xử lý được chứa trọn trong cache, hệ thống sẽ có thể thi hành với tốc độ thật của
CPU. Như vậy, tốc độ của ứng dụng có thể được thi hành sẽ có thể tăng từ 25 lên
206 triệu lệnh một giây, tuỳ theo chương trình và dữ liệu có vừa với kích thước
cache không. Tốc độ của hệ thống cũng phụ thuộc vào nguồn cung cấp năng lượng,
do đó, khi sử dụng Pocket PC, ta có thể nhận thấy sự khác biệt về tốc độ khi thực
thi chương trình.
Bây giờ, sử dụng các để so sánh về hiệu suất hoạt động giữa máy Desktop PC
và Pocket PC. Xét các hệ thống Desktop PC sử dụng bus 100-133 Mhz. Pentium IV
có thể sử dụng DDR RAM hoặc RAM BUS (RD RAM) có tốc độ từ 200-800Mhz.
Vì vậy, chỉ xét trên phương diện RAM, nếu sử dụng RAM 133Mhz, hiệu suất
Desktop PC đã tăng 1/3 lần (25 lên 33 triệu lệnh một giây). Tốc độ CPU của
Desktop cũng lớn hơn rất nhiều khi hiện tại đã đạt tới tốc độ trên 3Ghz dẫn đến hiệu
suất toàn hệ thống cao hơn.
Khi xây dựng ứng dụng Từ điển trên Pocket PC, đặc điểm về bộ xử lý của
Pocket PC ảnh hưởng rất lớn đến tốc độ xử lý, hiển thị các từ trong Từ điển cũng
như nghĩa của chúng. Để giải quyết vấn đề này, ta cần có những giải pháp phù hợp
để tăng hiệu năng của ứng dụng, giúp người sử dụng có thể sử dụng được chương
31
trình với tốc độ chấp nhận được.
Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC
4.3 Giới hạn về bộ nhớ và khả năng lưu trữ
Các Pocket PC thông thường có ROM ít nhất là 8MB, RAM ít nhất là 8MB.
Các Pocket PC chuyên dụng có ROM ít nhất là 12MB, RAM ít nhất là 16MB. Tuy
nhiên, yêu cầu về dung lượng của RAM và ROM tuỳ thuộc vào loại CPU sử dụng,
những thành phần mà nhà sản xuất hỗ trợ trên Pocket PC và tuỳ thuộc vào loại
Pocket PC.
Do hạn chế về nguồn năng lượng pin và kích thước của thiết bị, Pocket PC
không sử dụng các thiết bị lưu trữ như đĩa cứng hay đĩa mềm mà nó sử dụng một cơ
chế gọi là Bộ lưu trữ đối tượng (Object store). Object store là một vùng RAM được
người dùng định nghĩa, dùng để lưu trữ các tập tin, các thông tin registry và các
database (gọi là Object Store dạng Storage). Vùng RAM còn lại dùng làm bộ nhớ
cho các chương trình được thực thi (gọi là Object Store dạng Program). Object store
vẫn lưu giữ được thông tin của các ứng dụng và dữ liệu ngay cả khi năng lượng
cung cấp chính bị mất nhờ nguồn pin dự trữ. Có thể xem object store như là đĩa
cứng trên thiết bị dùng Windows CE. Vì các end-user không biết về object store nên
Microsoft đã cung cấp trình WinCE Explorer để đọc nội dung của nó (tương tự như
Microsoft Windows Explorer để đọc nội dung của đĩa cứng trên máy desktop PC).
32
Hình 4.1: Tình trạng bộ nhớ trên Pocket PC
Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC
Để cung cấp thêm khả năng lưu trữ cho Pocket PC (cũng nhu các thiết bị PDA
khác), hấu hết các máy đều cho phép gắn thêm các thẻ nhớ (Flash Memory Card)
đóng vai trò một bộ nhớ ngoài. Đặc điểm chung của các thẻ nhớ là có tốc độ chậm
hơn nhiều so với bộ nhớ RAM nhưng giá thành rẻ và cơ động, có thể dùng chung
cho các thiết bị điện tử khác. Ta có thể tận dụng khả năng lưu trữ của thẻ nhớ để
giảm bớt hạn chế về khả năng lưu trữ của Pocket PC.
Hình 4.2: Một số thẻ nhớ cho PDA
Những hạn chế về bộ nhớ trên Pocket PC ảnh hưởng rất nhiều đến việc tổ chức
dữ liệu Từ điển của ứng dụng. Giải pháp gắn thêm các thẻ nhớ để tăng khả năng lưu
trữ cho Pocket PC là không khả thi do các thẻ nhớ có tốc độ chậm trong khi ứng
dụng Từ điển lại có tần suất truy cập dữ liệu rất lớn, đòi hỏi tốc độ nhanh. Một giải
pháp khác được đưa ra là nén dữ liệu Từ điển. Phương pháp này có vẻ khả thi hơn.
Tuy nhiên, cái giá phải trả là phải truy cập dữ liệu nén. Điều này cũng ảnh hưởng
nhiều đến tốc độ của ứng dụng. Vì vậy, việc dung hòa giữa tốc độ xử lý và dữ liệu
lưu trữ của ứng dụng là một trong những vấn đề quan trọng nhất khi xâ dựng ứng
dụng Từ điển trên Pocket PC. Chi tiết về việc giải quyết vấn đề này sẽ được trình
bày cụ thể trong Chương 5.
Ngoài ra, ta còn phải xem xét đến hình thức lưu trữ dữ liệu Từ điển. Trên
Pocket PC, có 2 hình thức lưu trữ dữ liệu chính, đó là lưu trữ dưới dạng Tập tin và
dưới dạng Cơ sở dữ liệu (xem chi tiết ở phần Phụ lục B ). Cũng như trên desktop,
33
cơ sở dữ liệu thường được dùng để lưu các cấu trúc dữ liệu biến động, có nhu cầu
Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC
truy xuất phức tạp,…trong khi dữ liệu Từ điển lại có cấu trúc dữ tĩnh, truy xuất
tương đối đơn giản Hơn nữa, cơ sở dữ liệu trên Pocket PC (SQLCE) chưa được sử
dụng rộng rãi. Hiện nay, có rất ít ứng dụng sử dụng cơ sở dữ liệu trên Pocket PC.
Do đó việc chọn tập tin là hình thức lưu trữ dữ liệu của ứng dụng Từ điển là hợp lý.
4.4 Hạn chế về khả năng tương tác giữa người dùng và thiết bị
Hạn chế về khả năng tương tác người dùng tuy không làm cản trở đến hiệu quả
thi hành chương trình nhưng lại gây khó khăn cho công việc thiết kế giao diện
chương trình. Việc xác định rõ các hạn chế về khả năng tương tác người dùng giúp
chúng ta xây dựng các ứng dụng trên Pocket PC thân thiện, tiện dụng với người
dùng hơn.
4.4.1 Màn hình hiển thị nhỏ
Do đặc tính nhỏ gọn, nên nên màn hình hiển thị của Pocket PC thường có kích
thước nhỏ. Với màn hình quá nhỏ, sẽ rất khó để vừa hiển thị danh sách các từ và
nghĩa của nó trong Từ điển, vừa bố trí tất cả các chức năng trên các thanh công cụ,
thanh thực đơn. Giải pháp thường thấy trong các ứng dụng trên Pocket PC là sử
dụng tối đa các popup menu, context menu, dropdown toolbar button để người dùng
chọn lựa chức năng. Chỉ có các chức năng thường xuyên sử dụng mới được thiết kế
nằm sẵn trên màn hình như chức năng tra nghĩa của từ, chức năng phát âm, …
4.4.2 Bàn phím
Pocket PC không có bàn phím vật lý mà sử dụng một bàn phím ảo (Hình 2.2:
Bàn phím ảo của Pocket PC). Khi được kích hoạt, bàn phím ảo sẽ chiếm một phần của màn hình (khoảng 1/3) và có thể sẽ che đi các nút chức năng, ô nhập liệu quan
trọng.
Các ứng dụng cho Pocket PC khi thiết kế phải lưu ý đến trường hợp này để có
34
thiết kế giao diện phù hợp. Microsoft khuyến cáo các lập trình viên thiết kế các ô
Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC
nhập liệu (cần đến bàn phím) ở phía trên, tránh tình trạng khi bật bàn phím ảo để
nhập liệu lại không thể nhìn thấy ô này.
4.5 Kết luận
Sau khi phân tích các đặc tính của một ứng dụng Từ điển cũng như các hạn
chế của Pocket PC, ta có thể đưa ra một số vấn đề cần phải giải quyết như sau:
• Mâu thuẫn giữa yêu cầu xử lý nhanh của ứng dụng Từ điển với hạn chế về
tốc độ xử lý của Pocket PC.
• Mâu thuẫn giữa khối lượng dữ liệu lớn của ứng dụng Từ điển với hạn chế
về khả năng lưu trữ của Pocket PC.
• Mâu thuẫn giữa tính tiện dụng của chương trình và hạn chế về khả năng
tương tác người dùng.
35
Chương sau sẽ đưa ra giải pháp khả thi để giải quyết các vấn đề chính trên.
Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC
Chương 5 Một số giải pháp chính cho việc xây
dựng ứng dụng Từ điển trên Pocket PC
Dữ liệu của ứng dụng Từ đỉển này được chuyển từ 2 bộ Từ điển Anh-Việt
(68.998 từ) và Việt-Anh (91.146 từ) của phần mềm “English Study 4.0”. Những so
sánh và khảo sát dưới đây đều dựa vào 2 bộ dữ liệu này. Các số liệu đo thử nghiệm
được thực hiện trên máy Pocket PC HP Jornada 928, bộ nhớ 61.64 MB.
Khi tổ chức lưu trữ dữ liệu cho ứng dụng Từ điển, ta phải giải quyết 2 vấn đề
chính :
• Tổ chức cấu trúc dữ liệu lưu trữ. • Tổ chức cấu trúc dữ liệu khác hỗ trợ cho việc tìm kiếm nhanh.
5.1 Tổ chức cấu trúc dữ liệu lưu trữ
Ứng dụng Từ điển có chứa khối lượng dữ liệu rất lớn. Dữ liệu này bao gồm số
lượng lớn các mục từ lưu trữ liên tiếp trong tập tin. Các mục từ có kích thước động.
Vấn đề đặt ra là các mục từ phải được lưu trữ hiệu quả và dễ dàng truy cập nhanh
chóng. Ta lần lượt xét qua các cách tổ chức để chọn ra được cách tối ưu.
5.1.1 Tổ chức các mục từ có kích thước bằng nhau
Cách tổ chức này qui định tất cả các mục từ đều có kích thước xác định bằng
nhau. Cách này có ưu điểm là dễ dàng truy cập đến một mục từ khi biết thứ tự của
nó nhưng có khuyết điểm lớn là gây lãng phí không gian lưu trữ. Các mục từ có
kích thước biến động nhiều. Nếu ta đặt kích thước xác định cho tất cả các mục từ thì
sẽ có rất nhiều mục từ không dùng hết phần kích thước đó và dữ liệu của ta có kích
thước dư thừa, không hiệu quả. Ví dụ với dữ liệu Từ điển Anh –Việt, mục từ lớn
nhất có kích thước 20.000 bytes được lấy làm kích thước cho tất cả các mục từ, suy
ra kích thước của Từ điển này là 1.28 GB. Con số này là không thực tế cho ứng
36
dụng Từ điển trên Pocket PC.
Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC
5.1.2 Tổ chức các mục từ có kích thước biến đổi
Các mục từ có kích thước biến đổi được lưu liêp tiếp sát nhau. Các mục từ
được lưu với kích thước thực của chúng nên tránh được lãng phí như cách trên.
Nhưng ta phải lưu thêm thông tin để truy cập đến chúng. Dữ liệu cho ứng dụng Từ
điển này sẽ được lưu trữ theo cách này. Ví dụ với cách tổ chức này, Từ điển Anh –
Việt có kích thước 10 MB và Từ điển Việt – Anh có kích thước 2.8 MB.
5.1.3 Nén dữ liệu
Ứng dụng Từ điển trên Pocket PC yêu cầu kích thước lưu trữ dữ liệu càng nhỏ
càng tốt. Nên ta phải tiến hành nén dữ liệu trên. Khi dữ liệu bị nén thì kích thước
lưu trữ giảm xuống nhưng cũng làm giảm tốc độ truy xuất. Ta phải áp dụng phương
pháp nén sao cho vẫn đảm bảo được tốc độ truy xuất hợp lý.
Có 2 cách nén dữ liệu: • Nén toàn bộ: áp dụng các thuật toán như Zip, Gzip, Huffman… để nén
toàn bộ tập tin dữ liệu. Ưu điểm của cách này là dữ liệu được nén nhỏ tối
ưu. Nhưng khi yêu cầu truy cập đến các mục từ thì dữ liệu phải được giải
nén toàn bộ nên làm ứng dụng chậm và tốn nhiều bộ nhớ cho lưu trữ dữ
liệu giải nén.
• Nén từng khối: dữ liệu được nén lại theo từng khối một. Khi cần truy xuất
đến entry nào ta chỉ cần giải nén khối dữ liệu tương ứng. Nhưng do nén
theo từng phần nên tỉ lệ nén sẽ thấp hơn nén toàn bộ. Ví dụ với dữ liệu Từ
điển Anh – Việt được nén theo từng mục từ với thuật toán Zip sẽ có kích
thước 8 MB, chỉ nén được khoảng 20%.
Ta chỉ có thể áp dụng phương pháp nén từng khối. Ta phải áp dụng cách nén
dung hòa giữa tỉ lệ nén cao và tốc độ truy cập dữ liệu ngẫu nhiên nhanh. Trong các
chuẩn nén hiện nay, chuẩn nén Dictzip với đặc điểm nén dữ liệu theo từng khối và
37
cho phép truy cập dữ liệu ngẫu nhiên nên thỏa yêu cầu ta đề ra.
Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC
Chuẩn nén Dictzip:
Chuẩn nén Dictzip được giới thiệu lần đầu tiên vào năm 1996 bởi Rickard E.
Faith. Nó được phát triển với nguồn mở và phiên bản mới nhất là 1.25.
Cấu trúc lưu trữ: • Dictzip dựa vào chuẩn Gzip (tham khảo “Phụ lục C : Chuẩn nén Gzip”)
nên hoàn toàn tương thích với Gzip. Một phần thông tin mở rộng được
thêm vào tập tin nén Gzip để có thể lưu thêm dữ liệu vào phần đầu tập tin
nén. Các chương trình giải nén tập tin Gzip đều giải nén được tập tin
Dictzip nhưng chúng sẽ bỏ qua phần thông tin thêm này. Một số chương
trình sẽ đọc phần thông tin thêm này và cho phép truy xuất dữ liệu ngẫu
nhiên trong tập tin.
• Cấu trúc phần thông tin thêm:
o Khi bit FLG.FEXTRA được đặt (tham khảo “Phụ lục C : Chuẩn nén
Gzip”), một trường mở rộng có kích thước XLEN được thêm vào
phần đầu tập tin.
o SI1, SI2 là 2 byte nhận dạng. Trong trường hợp này thì SI1 là ‘R’ và
SI2 là ‘A’ (Random Access – Truy cập ngẫu nhiên). LEN lưu kích
thước phần dữ liệu liền sau nó. Phần này có cấu trúc :
o VER cho biết phiên bản của kiểu lưu dữ liệu. Với VER là 1 thì các giá
trị được lưu dài 2 byte và là số nguyên không dấu. Dữ liệu khi nén
được chia thành các khối có kích thước tối đa 64 KB.Trường CHLEN
cho biết chiều dài của khối dữ liệu. Trường CHCNT cho biết số lượng
38
khối dữ liệu đã lưu. Trường sau cùng (CHCNT words of data) cho
Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC
biết kích thước của từng khối dữ liệu sau khi giải nén. Khi truy cập
ngẫu nhiên, vị trí và kích thước dữ liệu được đưa vào và chương trình
sẽ dựa vào đó để lấy được một hay nhiều khối dữ liệu tương ứng và
giải nén chúng.
Đặc điểm: • Kích thước lưu trữ: qua nhiều khảo sát với dữ liệu Từ điển dạng text, quá
trình nén các khối 64KB với chế độ nén LZ77 cao nhất thì kích thước tập
tin nén Dictzip chỉ lớn hơn 4% so với tập tin được nén hoàn toàn. Dưới đây
là biểu đồ minh họa tỉ lệ nén của 2 bộ dữ liệu Từ điển Anh – Việt, Việt –
12
10
10
)
B M
8
Chưa nén
6
Nén Zip
Nén Dictzip
3,33
4
3,17
( c ớ ư h t h c í K
2
0
Anh:
4
3,5
)
2,76
3
B M
2,5
Chưa nén
Nén Zip
2
Nén Dictzip
1,5
0,859 0,878
( c ớ ư h t h c í K
1
0,5
0
Hình 5.1: Biểu đồ nén dữ liệu Từ điển Anh – Việt
39
Hình 5.2: Biểu đồ nén dữ liệu Từ điển Việt – Anh
Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC
• Truy cập ngẫu nhiên: dữ liệu nén có thể được truy xuất ngẫu nhiên. Khi
cần truy xuất, từng khối có kích thước tối đa 64KB tương ứng sẽ được đọc
lên và giải nén. Vì vậy nó sẽ chậm hơn so với truy xuất dữ liệu trong tập
tin không nén (không phải giải nén khi đọc) nhưng lại nhanh hơn nhiều so
với truy xuất dữ liệu trong tập tin nén hoàn toàn (phải tốn 1 khoảng thời
gian đáng kể để giải nén toàn bộ tập tin). Dưới đây là biểu đồ minh họa
thời gian đọc dữ liệu của 100 từ ngẫu nhiên (theo thứ tự abc) trong Từ điển
Anh – Việt được lưu trong tập tin không nén và tập tin nén bằng chuẩn
140
120
100
) s m
80
i
60
Dictzip Không nén
( n a g i
40
ờ h T
20
0
Từ
1
11 21 31 41 51 61 71
81 91
Dictzip.
Hình 5.3: Biểu đồ thời gian đọc dữ liệu của tập tin không nén và tập tin nén chuẩn Dictzip
Thời gian(ms)
Lớn nhất Nhỏ nhất Trung bình Cách lưu
Không nén 2 7,34 29
Nén Dictzip 1 26,90 128
40
Bảng 5.1: Thời gian truy xuất dữ liệu 100 từ ngẫu nhiên của Từ điển Anh – Việt
Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC
Nhận xét:
• Trong phần lớn các trường hợp, thời gian truy xuất tập tin nén Dictzip lớn
hơn so với tập tin không nén.
• Một số trường hợp truy xuất dữ liệu tập tin nén Dictzip nhanh hơn tập tin
không nén.
• Thời gian trung bình truy cập tập tin không nén là 7,34 ms và tập tin nén
Dictzip là 26,9 ms. Tỉ lệ chênh lệch tương đối lớn nhưng khoảng thời gian
chênh lệch là rất nhỏ (19,56 ms) và có thể chấp nhận được.
Kết luận: chuẩn nén Dictzip đã thỏa mãn các yêu cầu mà ta đề ra là dữ liệu
được tổ chức sao cho dung hòa giữa tỉ lệ nén cao và tốc độ truy cập ngẫu nhiên
nhanh. Do đó dữ liệu của ứng dụng Từ điển này sẽ được lưu trữ theo chuẩn nén
Dictzip.
5.2 Tổ chức cấu trúc dữ liệu hỗ trợ tìm kiếm nhanh
Để truy xuất đến dữ liệu Từ điển được lưu và nén dạng Dictzip trên, ta cần lưu
thông tin về vị trí và chiều dài dữ liệu của từng từ. Phần thông tin này sẽ được tổ
chức lưu trữ chung với những thông tin khác như từ, từ loại...Vấn đề đặt ra là ta
phải tổ chức lưu trữ hợp lý để truy xuất được hiệu quả và đảm bảo yêu cầu tốc độ
cho ứng dụng Từ điển.
5.2.1 Tổ chức lưu trữ tập tin chỉ mục
Tập tin chỉ mục là tập tin có chứa thông tin về vị trí của 1 mẩu tin trong 1 tập
tin khác (thường có kích thước lớn hơn nhiều so với tập tin chỉ mục) để giúp cho
việc truy xuất các mẩu tin này được dễ dàng và nhanh chóng.
Ta sẽ tổ chức 1 tập tin chỉ mục để hỗ trợ việc truy xuất tập tin dữ liệu Từ điển.
Các thông tin như từ, từ loại, vị trí, kích thước dữ liệu được tổ chức thành các mẩu
41
tin và lưu trữ tuần tự.
Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC
...
Vị trí nghĩa
Mẩu tin i
Từ
Từ loại
Nghĩa
Kích thước nghĩa
Vị trí nghĩa
Kích thước nghĩa
File chỉ mục
Mẩu tin
File nghĩa
Hình 5.4: Tổ chức tập tin chỉ mục hỗ trợ truy xuất tập tin dữ liệu Từ điển
Để truy xuất nghĩa 1 từ, ta tiến hành tìm kiếm trong tập tin chỉ mục để lấy ra
được mẩu tin tương ứng. Từ vị trí nghĩa và kích thước nghĩa trong mẩu tin này, ta
đọc được phần nghĩa trong tập tin dữ liệu nghĩa của Từ điển.
Tốc độ tra cứu từ của ứng dụng Từ điển phụ thuộc vào cách truy xuất tập tin
chỉ mục này. Ta có thể áp dụng các cách sau:
• Tiến hành tìm kiếm tuần tự trên tập tin chỉ mục để lấy ra được mẩu tin
thích hợp. Cách này có độ phức tạp là O(n), rất chậm, không tối ưu và
không đáp ứng yêu cầu tốc độ của ứng dụng.
• Đọc tất cả các mẩu tin và xây dựng thành một cây tìm kiếm. Cách này khai
thác được ưu điểm về tốc độ tìm kiếm của các loại cây tìm kiếm nhưng có
nhược điểm là chiếm rất nhiều bộ nhớ cho việc lưu trữ cây. Ví dụ với dữ
liệu Từ điển Anh – Việt gồm 68.998 từ thì ta cần khoảng 3,4 MB để tổ
chức cây trong bộ nhớ. Với dung lượng bộ nhớ giới hạn của Pocket PC thì
cách này không thể áp dụng được.
• Băm nhỏ tập tin chỉ mục để thu hẹp phạm vi tìm kiếm. Sau đó tiến hành
42
tìm kiếm trên vùng vừa giới hạn.
Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC
Trong 3 cách trên thì giải pháp băm là hiệu quả nhất cho vấn đề ta đặt ra. Với
giải pháp băm, phạm vi tìm kiếm được giới hạn nên thỏa mãn yêu cầu tiết kiệm bộ
nhớ và tốc độ tìm kiếm. Vậy ta phải tiến hành băm tập tin chỉ mục này để giải quyết
vấn đề tốc độ tra cứu từ của ứng dụng.
5.2.2 Tổ chức băm tập tin chỉ mục
Băm tập tin chỉ mục nhằm làm nhỏ phạm vi tìm kiếm. Do tập tin chỉ mục của
ta được tổ chức thành các mục từ tăng dần theo thứ tự abc nên ta sẽ băm theo các
chữ cái đầu của từ.
Ta có thể tiến hành băm 1 hay nhiều cấp tương ứng với 1 hay nhiều kí tự đầu
của từ. Ta thử xem xét các khả năng:
• Băm 1 cấp: các mục từ có cùng 1 kí tự đầu tiên sẽ thuộc 1 nhóm. Với Từ
=
998,68
26
2654
điển Anh – Việt 68.998 từ bắt đầu bằng 26 chữ cái thì trung bình mỗi
nhóm phân hoạch sẽ có từ. Phạm vi tìm kiếm vẫn còn rất
lớn. Ta nên phân hoạch nhỏ hơn nữa.
2 =
998,68
26
102
• Băm 2 cấp: các mục từ có cùng 2 kí tự đầu tiên sẽ thuộc 1 nhóm. Tương tự
như trên thì trung bình mỗi nhóm phân hoạch có từ.
Phạm vi tìm kiếm đã được giới hạn đáng kể.
998,68
26
4
• Băm 3 cấp: các mục từ có cùng 3 kí tự đầu tiên sẽ thuộc 1 nhóm. Tương tự
3 = từ. Phạm
như trên thì trung bình mỗi nhóm phân hoạch có
vi tìm kiếm là rất nhỏ. Cách này không thể áp dụng được vì tập tin chỉ mục
bị chia quá vụn ,việc duy trì bảng băm tốn nhiều bộ nhớ, bảng băm xuất
hiện quá nhiều tổ hợp 3 kí tự vô nghĩa và rất dễ biến động khi ta thêm từ
mới.
43
Nhận xét: • Ta chỉ có thể băm tập tin chỉ mục theo 1 cấp hay 2 cấp.
Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC
• Mỗi phần tử trong bảng băm bao gồm khóa là 1 kí tự (2 byte) hay 2 kí tự
(4 byte), vị trí bắt đầu (4 byte) và kích thước (4 byte) của các mục từ trong
tập tin chỉ mục tương ứng với khóa. • Xét cụ thể Từ điển Anh – Việt trên:
o Bảng băm 1 cấp có kích thước lưu trữ là (2+4+4)*26 = 260 byte với
phạm vi tìm kiếm trong tập tin chỉ mục là 2654 từ.
o Bảng băm 2 cấp có kích thước lưu trữ là (4+4+4)*26*26 = 8112 byte
với phạm vi tìm kiếm trong tập tin chỉ mục là 102 từ.
Mặc dù bảng băm 2 cấp có kích thước lớn hơn nhiều so với băm 1 cấp
nhưng kích thước lưu trữ của nó vẫn là rất nhỏ (tương đương 8 KB). Như vậy,
băm 2 cấp sẽ hiệu quả hơn băm 1 cấp. Ta sẽ áp dụng cách băm 2 cấp cho tập
tin chỉ mục.
Hình dưới đây minh họa các tìm kiếm 1 từ trong tập tin chỉ mục với bảng băm
Từ
g o o d
Vị trí chỉ mục
...
...
...
Khóa
g
go... go...
Vị trí chỉ mục
o
Kích thước chỉ mục
...
Kích thước chỉ mục
go...
Bảng băm
File chỉ mục
2 cấp :
44
Hình 5.5: Cách tìm kiếm chỉ mục của 1 từ với bảng băm 2 kí tự
Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC
Cách tìm kiếm 1 từ : • Từ 2 kí tự đầu tiên của từ, ta lấy được 1 phần tử tương ứng trong bảng băm • Với vị trí và kích thước chỉ mục trong phần tử này, ta đọc được 1 tập hợp
các mục từ trong tập tin chỉ mục.
• Tiến hành tìm kiếm nhị phân mục từ của từ này trên tập hợp vừa đọc được.
Dưới đây là kết quả kiểm nghiệm tìm kiếm 100 từ ngẫu nhiên (theo thứ tự abc)
trong tập tin chỉ mục của 2 bộ dữ liệu Từ điển Anh – Việt (68.998 từ), Việt – Anh
600
500
400
) s m
Anh - Việt
i
300
Việt - Anh
( n a g i
200
ờ h T
100
Từ
0
1
10 19 28 37 46 55 64 73 82 91 100
(91.146 từ) với bảng băm và tập tin chỉ mục vừa tổ chức:
Hình 5.6: Biểu đồ minh họa thời gian tìm kiếm 100 từ ngẫu nhiên trong tập tin chỉ mục của 2 bộ dữ liệu Từ điển Anh – Việt, Việt – Anh.
Thời gian(ms)
Lớn nhất Nhỏ nhất Trung bình Từ điển
Anh – Việt 284 13 57,71
Việt – Anh 541 11 102,04
45
Hình 5.7: Thời gian tìm kiếm 100 từ trong tập tin chỉ mục của 2 bộ dữ liệu Từ điển Anh – Việt, Việt – Anh
Chương 6. Giới thiệu ứng dụng Từ điển “CSPocketDict”
Chương 6 Giới thiệu ứng dụng Từ điển
“CSPocketDict”
6.1 Yêu cầu của người sử dụng
Trong thời đại thông tin ngày nay thì tính di động trong công việc là rất lớn.
Đồng thời, việc du lịch qua các nước khác cũng dần trở thành một nhu cầu tinh thần
đối với những người có điều kiện. Do đó, việc di chuyển qua lại giữa các quốc gia
ngày càng trở nên thường xuyên. Vậy thì làm cách nào ta có thể hiểu được ngôn
ngữ của các quốc gia khác nhau? Chẳng lẽ với mỗi quốc gia lại phải mang theo một
loại Từ điển. Như vậy thật là bất tiện.
Chính vì những lý do trên mà nhu cầu của một ứng dụng Từ điển trên các thiết
bị PDA là rất cần thiết. Hiện nay, trên thế giới cũng như ở Việt Nam cũng đã có
một số ứng dụng Từ điển trên các thiết bị PDA. Còn đối với Viêt Nam, do hiện nay
(và có thể là cả trong tương lai nữa) Pocket PC là thiết bị PDA phổ biến nhất nên
chúng em quyết định tìm hiểu và xây dựng một ứng dụng Từ điển riêng cho mình
trên Pocket PC.
6.2 Các chức năng của ứng dụng
Do thời gian có hạn nên ứng dụng Từ điển được xây dựng bao gồm một số
46
chức năng chính như sau:
Chương 6. Giới thiệu ứng dụng Từ điển “CSPocketDict”
6.2.1 Tra từ
Hình 6.1: Chức năng tra từ
6.2.1.1 ExactSearch
Được sử dụng khi người dùng biết chính xác từ mình muốn tra. Cho phép tra
nghĩa của từ được nhập vào với điều kiện từ muốn tra nghĩa phải được nhập một
cách chính xác.
6.2.1.2 WildcardSearch
Được sử dụng khi người dùng không nhớ chính xác từ mình muốn tra. Cho
phép từ muốn tra nghĩa có thể chứa các ký tự thay thế như:
• “?” : thay thế cho một ký tự. • “*” : thay thế cho một chuỗi ký tự.
6.2.1.3 PhraseSearch
Được sử dụng khi người dùng muốn tra nghĩa của một cụm từ mà chỉ nhớ một
vài từ trong cụm từ đó. Cho phép người dùng tra cứu nghĩa của một cụm từ trong đó
47
có chứa từ được nhập vào.
Chương 6. Giới thiệu ứng dụng Từ điển “CSPocketDict”
6.2.2 Quản lý Từ điển
Đây là chức năng cho phép người sử dụng có thể thêm/xóa vào/khỏi ứng dụng
một hay nhiều bộ dữ liệu Từ điển khác nhau phục vụ cho nhu cầu tra cứu đa ngôn
ngữ. Người sử dụng có thể chọn một bộ Từ điển để tra nghĩa của từ.
Hình 6.2: Chức năng quản lý Từ điển
6.2.3 Phát âm
Cho phép phát âm từ được tra bằng hai thứ ngôn ngữ: tiếng Anh và tiếng Việt.
48
Hình 6.3: Chức năng phát âm
Chương 6. Giới thiệu ứng dụng Từ điển “CSPocketDict”
6.2.4 Lọc từ theo từ loại
Được sử dụng khi người dùng chỉ muốn hiển thị danh sách các từ theo một
loại từ nào đó.
Hình 6.4: Chức năng lọc từ theo từ loại
6.2.5 Click&See
Cho phép người dùng có thể tra nghĩa của từ trong các ứng dụng khác
49
Hình 6.5: Chức năng Click&See
Chương 6. Giới thiệu ứng dụng Từ điển “CSPocketDict”
6.2.6 Click&Hear
Được sử dụng khi người dùng muốn nghe một từ hay đoạn văn bản trong bất
kỳ ứng dụng nào. Ứng dụng hỗ trợ đọc hai thứ tiếng: tiếng Anh và tiếng Việt.
Ngoài ra, ứng dụng còn có một số chức năng khác như: các chức năng về giao
diện sử dụng (thay đổi Font chữ, thay đổi cách hiển thị, …), các chức năng thêm,
50
xóa, sửa từ trong Từ điển (trên phân hệ Desktop).
Chương 7. Phân tích – Thiết kế
Chương 7 Phân tích – Thiết kế
7.1 Mô hình Use-Case
ChooseDictionary
(from Use cases)
AddDictionary
DeleteDictionary
(from Use cases)
(from Use cases)
ChangeSettings
SearchMeanings
(from Use cases)
(from Use cases)
Click&Hear
User
Pronounce
(from Use cases)
(from Use cases)
(from Actors)
Click&See
PartOfSpeechFilter
(from Use cases)
(from Use cases)
NextWord
PrevousPage
(from Use cases)
(from Use cases)
NextPage
PreviousWord
(from Use cases)
(from Use cases)
7.1.1 Lược đồ chính của mô hình Use-Case
Hình 7.1: Lược đồ chính của mô hình Use case
7.1.1.1 Danh sách Actor
Actor Ý nghĩa
STT 1 User Người sử dụng.
51
Bảng 7.1: Danh sách các Actor
Chương 7. Phân tích – Thiết kế
7.1.1.2 Danh sách Use-Case chính
STT Use-Case Ý nghĩa
1 AddDictionary
2 ChooseDictionary
3 DeleteDictionary
4 SearchMeanings
5 6 Pronounce PartOfSpeechFilter
7 Click&See
8 Click&Hear
9 10 NextWord PreviousWord
11 NextPage
12 PreviousPage
13 ChangeSettings Thêm một bộ dữ liệu Từ điển vào dữ liệu của ứng dụng Chọn một bộ dữ liệu Từ điển để sử dụng Loại bỏ một bộ dữ liệu Từ điển ra khỏi dữ liệu của ứng dụng Tìm kiếm nghĩa của một từ theo các tiêu chuẩn khác nhau Phát âm từ được chọn Lọc danh sách các từ hiển thị theo loại từ Tra nghĩa của từ trên các ứng dụng khác nhau Đọc từ hay đoạn văn được chọn trong các ứng dụng khác nhau Tra cứu lại từ đã tra sau đó. Tra cứu lại từ đã tra trước đó. Di chuyển đến trang kế tiếp trong danh sách các từ được hiển thị Di chuyển đến trang trước trong danh sách các từ được hiển thị Thay đồi các thông số hiển thị và đường dẫn đến các bộ dữ liệu Từ điển
Bảng 7.2: Danh sách các Use case chính
7.1.2 Đặc tả một số Use-Case chính
7.1.2.1 Đặc tả Use-Case “AddDictionary”
7.1.2.1.1 Tóm tắt
Use-Case này cho phép người sử dụng thêm vào một bộ dữ liệu Từ điển mới.
Ứng dụng có thể có nhiều bộ từ dữ liệu Từ điển khác nhau.
7.1.2.1.2 Dòng sự kiện
7.1.2.1.2.1 Dòng sự kiện chính
1. Use case này bắt đầu khi người sử dụng chọn chức năng quản lý Từ điển.
2. Người sử dụng chọn chức năng quản lý Từ điển.
52
3. Hệ thống hiển thị hộp thoại quản lý Từ điển.
Chương 7. Phân tích – Thiết kế
4. Người dùng nhấn nút chọn tập tin Từ điển.
5. Hệ thống hiển thị hộp thoại chọn tập tin Từ điển.
6. Người dùng chọn tập tin Từ điển.
7. Hệ thống hiện ra tên tập tin Từ điển được chọn.
8. Người dùng nhấn nút OK xác nhận việc chọn Từ điển.
9. Hệ thống trở về hộp thoại quản lý Từ điển và hiện các thông tin về Từ điển
được chọn.
10. Người dùng nhấn nút OK để chấp nhận sử dụng bộ Từ điển được chọn.
11. Hệ thống thêm bộ Từ điển vừa được chọn vào danh sách các Từ điển và trở
về màn hình chính.
7.1.2.1.2.2 Các dòng sự kiện khác
Người dùng chưa chọn tập tin Từ điển
Nếu người dùng chưa chọn tập tin Từ điển nào mà xác nhận việc chọn Từ điển
thì hệ thống sẽ yêu cầu người dùng chọn tập tin Từ điển.
Người dùng không xác nhận việc chọn Từ điển
Nếu người dùng không xác nhận việc chọn Từ điển thì hệ thống sẽ không
thêm bộ dữ liệu đã chọn và kết thúc Use case.
7.1.2.1.3 Các yêu cầu đặc biệt
Không có.
7.1.2.1.4 Điều kiện tiên quyết
Không có.
7.1.2.1.5 Điều kiện kết thúc
Nếu Use case thực hiện thành công thì một bộ dữ liệu sẽ được thêm vào dữ
liệu của ứng dụng.
7.1.2.1.6 Điềm mở rộng
53
Không có.
Chương 7. Phân tích – Thiết kế
7.1.2.2 Đặc tả Use-Case “SearchMeanings”
7.1.2.2.1 Tóm tắt
Use-Case này cho phép người sử dụng tra nghĩa của từ. Người sử dụng có thể
tra nghĩa theo 3 mức độ:
• Biết chính xác từ muốn tra. • Chỉ nhớ một vài ký tự trong từ muốn tra. • Chỉ nhớ một vài từ trong cụm từ muốn tra.
7.1.2.2.2 Dòng sự kiện
7.1.2.2.2.1 Dòng sự kiện chính
1. Người sử dụng nhập vào từ muốn tra hoặc chọn từ muốn tra trong danh sách
các từ có trong Từ điển.
2. Người sử dụng chọn một trong ba mức độ: tra từ chính xác (ExactSearch),
tra từ tương đối (WildcardSearch), tra cụm từ có có chứa vài từ đã biết
(PhraseSearch).
3. Người sử dụng nhấn nút tìm kiếm, hệ thống sẽ thực hiện 1 trong 3 dòng sự
kiện phụ sau:
Nếu người sử dụng chọn mức độ tra từ chính xác thì thực hiện dòng sự kiện
phụ “ExactSearch”.
Nếu người sử dụng chọn mức độ tra từ tương đối thì thực hiện dòng sự kiện
phụ “WildcardSearch”.
Nếu người sử dụng chọn mức độ tra tra cụm từ có có chứa vài từ đã biết thì
thực hiện dòng sự kiện phụ “PhraseSearch”.
ExactSearch
1. Hệ thống xác nhận kiểu tra từ chính xác được sử dụng.
2. Hệ thống tìm trong tập tin dữ liệu từ cần tra một cách chính xác.
3. Hệ thống xuất nghĩa của từ cần tra ra màn hình.
54
WildcardSearch
Chương 7. Phân tích – Thiết kế
1. Hệ thống xác nhận kiểu tra từ tương đối được sử dụng.
2. Hệ thống tìm trong tập tin dữ liệu từ cần tra một cách tương đối theo các qui
định sau:
o “?”: thay thế cho một ký tự.
o “*”: thay thế cho một chuỗi ký tự.
3. Hệ thống hiển thị danh sách các từ tìm được.
4. Người sử dụng chọn trong danh sách từ muốn tra nghĩa.
5. Hệ thống xuất nghĩa của từ cần tra ra màn hình.
PhraseSearch
1. Hệ thống xác nhận kiểu tra từ được sử dụng.
2. Hệ thống tìm trong tập tin dữ liệu từ các cụm từ có chứa các từ được nhập
vào.
3. Hệ thống hiển thị danh sách các cụm từ tìm được.
4. Người sử dụng chọn cụm từ muốn tra trong danh sách.
5. Hệ thống xuất nghĩa của cụm từ cần tra ra màn hình.
7.1.2.2.2.2 Các dòng sự kiện khác
Từ nhập vào không có trong Từ điển
Nếu hệ thống tìm không thấy từ do người dùng nhập vào thì sẽ xuất thông báo
không tìm thấy và chấm dứt luồng sự kiện phụ này.
7.1.2.2.3 Các yêu cầu đặc biệt
Không có.
7.1.2.2.4 Điều kiện tiên quyết
Người dùng phải chọn trước một bộ dữ liệu Từ điển để tra cứu.
7.1.2.2.5 Điều kiện kết thúc
Nếu Use Case thực hiện thành công thì nghĩa của từ muốn tra sẽ hiển thị.
7.1.2.2.6 Điềm mở rộng
55
Không có.
Chương 7. Phân tích – Thiết kế
7.1.2.3 Đặc tả Use-Case “Pronounce”
7.1.2.3.1 Tóm tắt
Use-Case này cho phép người sử dụng nghe được cách phát âm của từ đang
được hiển thị.
7.1.2.3.2 Dòng sự kiện
7.1.2.3.2.1 Dòng sự kiện chính
1. Hệ thống xác nhận từ đang được hiển thị trên màn hình.
2. Hệ thống ánh xạ từ đã được xác nhận trong bước 1 thành tên tập tin âm thanh
tương ứng.
3. Hệ thống tiến hành phát tập tin âm thanh được ánh xạ trong bước 2.
7.1.2.3.2.2 Các dòng sự kiện khác
Không có
7.1.2.3.3 Các yêu cầu đặc biệt
Không có.
7.1.2.3.4 Điều kiện tiên quyết
Người dùng phải chọn trước từ muốn nghe phát âm và từ muốn nghe là tiếng
Việt và tiếng Anh.
7.1.2.3.5 Điều kiện kết thúc
Nếu Use case thực hiện thành công thì từ muốn nghe sẽ được phát âm.
7.1.2.3.6 Điềm mở rộng
Không có.
7.1.2.4 Đặc tả Use-Case “PartOfSpeechFilter”
7.1.2.4.1 Tóm tắt
Use-Case này cho phép người sử dụng lọc danh sách các từ hiển thị theo loại
56
từ.
Chương 7. Phân tích – Thiết kế
7.1.2.4.2 Dòng sự kiện
7.1.2.4.2.1 Dòng sự kiện chính
1. Use case này bắt đầu khi người sử dụng chọn loại từ.
2. Người dùng chọn loại từ trong thực đơn loại từ.
3. Hệ thống đặt lại bộ lọc từ theo loại từ được chọn
4. Hệ thống nạp lại danh sách từ và hiển thị ra màn hình.
7.1.2.4.2.2 Các dòng sự kiện khác
Không có.
7.1.2.4.3 Các yêu cầu đặc biệt
Không có.
7.1.2.4.4 Điều kiện tiên quyết
Không có.
7.1.2.4.5 Điều kiện kết thúc
Nếu Use case thực hiện thành công thì danh sách các từ được lọc sẽ hiển thị.
7.1.2.4.6 Điềm mở rộng
Không có.
7.1.2.5 Đặc tả Use-Case “Click&See”
7.1.2.5.1 Tóm tắt
Use-Case này cho phép người sử dụng tra nghĩa của từ trong các ứng dụng
khác.
7.1.2.5.2 Dòng sự kiện
7.1.2.5.2.1 Dòng sự kiện chính
1. Người sử dụng đánh dấu (tô đen) từ muốn tra nghĩa trong bất kỳ ứng dụng
nào.
57
2. Người sử dụng nhấn nút tra chéo.
Chương 7. Phân tích – Thiết kế
3. Hệ thống xác định xác định cửa sổ ứng dụng nào đang được kích hoạt, đồng
thời xác định từ (hay cụm từ) nào đang được đánh dấu (tô đen).
4. Hệ thống tiến hành tìm từ (hay cụm từ) xác định được trong bước 3 trong bộ
dữ liệu Từ điển hiện tại.
5. Hệ thống xuất nghĩa của từ (hay cụm từ) tìm được ra màn hình.
7.1.2.5.2.2 Các dòng sự kiện khác
Chưa đánh dấu từ muốn tra chéo
Nếu chưa có từ nào được đánh dấu thì hệ thống sẽ hiển thị thông báo lỗi và kết
thúc Use case.
Từ nhập vào không có trong Từ điển
Nếu từ được đánh dấu không có trong Từ điển thì hệ thống sẽ hiển thị thông
báo lỗi và kết thúc Use case.
7.1.2.5.3 Các yêu cầu đặc biệt
Không có.
7.1.2.5.4 Điều kiện tiên quyết
Người dùng phải chọn trước một bộ dữ liệu Từ điển để tra cứu.
7.1.2.5.5 Điều kiện kết thúc
Nếu Use case thực hiện thành công thì nghĩa của từ muốn tra chéo sẽ được
hiển thị.
7.1.2.5.6 Điềm mở rộng
Không có.
7.1.2.6 Đặc tả Use-Case “Click&Hear”
7.1.2.6.1 Tóm tắt
Use-Case này cho phép người sử dụng nghe một từ hay một đoạn văn trong
58
ứng dụng khác nhau.
Chương 7. Phân tích – Thiết kế
7.1.2.6.2 Dòng sự kiện
7.1.2.6.2.1 Dòng sự kiện chính
1. Người sử dụng đánh dấu (tô đen) từ hay đoạn muốn nghe trong bất kỳ ứng
dụng nào.
2. Người sử dụng nhấn nút tra nghe.
3. Hệ thống xác định xác định cửa sổ ứng dụng nào đang được kích hoạt, đồng
thời xác định từ (hay đoạn) nào đang được đánh dấu (tô đen).
4. Hệ thống ánh xạ từ (hay các từ trong đoạn) đã được xác nhận trong bước 3
thành tên tập tin âm thanh tương ứng.
5. Hệ thống tiến hành phát tập tin âm thanh được ánh xạ trong bước 4.
7.1.2.6.2.2 Các dòng sự kiện khác
Chưa đánh dấu từ muốn tra chéo
Nếu chưa có từ nào được đánh dấu thì hệ thống sẽ hiển thị thông báo lỗi và kết
thúc Use case.
Từ nhập vào không có trong dữ liệu âm thanh
Nếu từ được đánh dấu không có trong dữ liệu âm thanh thì hệ thống sẽ không
đọc từ đó.
7.1.2.6.3 Các yêu cầu đặc biệt
Không có.
7.1.2.6.4 Điều kiện tiên quyết
Từ hay đoạn muốn nghe phải là tiếng Việt hặoc tiếng Anh.
7.1.2.6.5 Điều kiện kết thúc
Nếu Use case thực hiện thành công thì nghĩa của từ muốn tra chéo sẽ được
hiển thị.
7.1.2.6.6 Điềm mở rộng
59
Không có.
Chương 7. Phân tích – Thiết kế
7.2 Thiết kế dữ liệu
MainForm
CSDictOpenFileDlg
CSDictManagerForm
CSDictSettingsForm
11
CSDictRegistry
CSDictIndex
CSDictHandle
CSDictHash
Flite
VNTextToSpeech
1..*1..*
1 1
1..*1..*
CSDictHTMLGen
Zlib
CSDictHashLetter1
HashLetterComparer
CSDictHashLetter2
Utility
CSDictHashLetter
11
CSDictInf o
7.2.1 Sơ đồ lớp
60
Hình 7.2: Sơ đồ lớp các đối tượng
Chương 7. Phân tích – Thiết kế
7.2.2 Mô tả các lớp chính
STT Lớp đối tượng Loại Ý nghĩa
1 CSDictHandle Control Lớp xử lý chính của Từ điển
2 CSDictHash Control Lớp xử lý bảng băm
3 CSDictHashLetter Control Lớp xử lý băm kí tự
4 CSDictHashLetter1 Control Lớp xử lý băm kí tự thứ 1
5 CSDictHashLetter2 Control Lớp xử lý băm kí tự thứ 2
CSDictHTMLGen Control Lớp xử lý phát sinh mã HTML 6 cho hiển thị nội dung Từ điển
CSDictIndex Control Lớp xử lý cho chỉ mục của Từ 7 điển
CSDictInfo Entity Lớp dữ liệu lưu thông tin của bộ 8 Từ điển đang dùng
9 CSDictManagerForm Boundary Màn hình quản lý các bộ Từ điển
10 CSDictOpenFileDlg Boundary Màn hình chọn tập tin Từ điển
CSDictRegistry Control Lớp xử lý lưu thông tin Từ điển 11 vào registry hệ thống
CSDictSettingsForm Boundary Màn hình thay đổi các tham số 12 ứng dụng
13 Flite Control Lớp xử lý phát âm tiếng Anh
14 HashLetterComparer Control Lớp xử lý so sánh kí tự băm
15 MainForm Boundary Màn hình chính của ứng dụng
Utility Control Lớp chứa các hàm xử lý dùng 16 chung cho nhiều lớp
17 VNTextToSpeech Control Lớp xử lý phát âm tiếng Việt
Zlib Control Lớp xử lý đọc tập tin dữ liệu Từ 18 điển nén dạng Dictzip
61
Bảng 7.3: Danh sách các lớp
Chương 7. Phân tích – Thiết kế
7.3 Thiết kế xử lý
7.3.1 Danh sách các xử lý chính
STT Xử lý Mô tả Use-Case tương ứng
1 XL1 Tìm kiếm từ chính xác ExactSearch
2 XL2 Tìm kiếm từ có kí tự đại diện WildcardSearch
3 XL3 Tìm kiếm từ trong cụm từ PhraseSearch
4 XL4 Xem nghĩa của từ ViewMeaning
5 XL5 Nghe phát âm từ Pronounce
6 XL6 Lọc danh sách từ PartOfSpeechFilter
7 XL7 Thêm Từ điển AddDictionary
8 XL8 Xóa Từ điển DeleteDictionary
62
Bảng 7.4: Danh sách các xử lý chính
Chương 7. Phân tích – Thiết kế
7.3.2 Mô tả các xử lý chính
: User
: DictHandle
: MainForm
: DictData
1.// Search( )
1.1.// GetWord()
1.2.// SearchWord()
1.2.1.// GetWordList()
1.2.2.// SearchWord()
1.2.3.// LoadWordMeaning( )
1.3.// ShowWordMeaning()
7.3.2.1 XL1 – Tìm kiếm từ chính xác
63
Hình 7.3: Sơ đồ tuần tự “Tìm kiếm từ chính xác”
Chương 7. Phân tích – Thiết kế
: User
: DictHandle
: MainForm
: DictData
1.// WildcardSearch()
1.1.// GetWord()
1.2.// WildcardSearch()
1.2.1.// GetWordList()
1.2.2.// SearchMatchWord()
1.3.// ShowWordList()
7.3.2.2 XL2 – Tìm kiếm từ có các kí tự đại diện
64
Hình 7.4: Sơ đồ tuần tự “Tìm kiếm từ có các kí tự đại diện”
Chương 7. Phân tích – Thiết kế
: User
: DictHandle
: MainForm
: DictData
1.// PhraseSearch()
1.1.// GetWord()
1.2.// PhraseSearch()
1.2.1.// GetWordList()
1.2.2.// SearchMatchWord()
1.3.// ShowWordList()
7.3.2.3 XL3 – Tìm kiếm từ trong cụm từ
65
Hình 7.5: Sơ đồ tuần tự “Tìm kiếm từ trong cụm từ”
Chương 7. Phân tích – Thiết kế
: User
: DictHandle
: MainForm
: DictData
1.//ViewWordMeaning()
1.1.// GetWord()
1.2.// SearchWord()
1.2.1.// GetWordList()
1.2.2.// SearchWord()
1.2.3.// LoadWordMeaning( )
1.3.// ShowWordMeaning()
7.3.2.4 XL4 – Xem nghĩa của từ
66
Hình 7.6: Sơ đồ tuần tự “Xem nghĩa của từ”
Chương 7. Phân tích – Thiết kế
: User
: SpeechHandle
: MainForm
: SpeechData
1.// Pronounce()
1.1.// GetWord()
1.2.// Pronounce()
1.2.1.// LoadSpeechData()
1.2.2.// Pronounce()
7.3.2.5 XL5 – Nghe phát âm từ
67
Hình 7.7: Sơ đồ tuần tự “Nghe phát âm từ”
Chương 7. Phân tích – Thiết kế
: User
: DictHandle
: MainForm
: DictData
1.// FilterWordList( )
1.1.// GetFilter()
1.2.// SetFilter()
1.3.// LoadWordList()
1.3.1// GetWordList()
1.3.2.// FilterWordList()
1.4.// ShowWordList()
7.3.2.6 XL6 – Lọc danh sách từ
68
Hình 7.8: Sơ đồ tuần tự “Lọc danh sách từ”
Chương 7. Phân tích – Thiết kế
: User
: DictHandle
: MainForm
: DictManagerForm
: OpenFileForm
: DictCollection
1.// OpenDictManager()
1.1// Show()
1.1.1.// LoadDictionary List()
1.1.1.1.// LoadDictionary List()
1.1.2.// ShowDictionary List( )
2.// SelectDictionary ()
2.1.// Show()
2.2.// OpenDictFile()
2.3.// Close()
2.4.// GetDictFile( )
2.5.// AddDictionary ()
2.5.1.// AddDictionary ()
2.6.// ShowDictionary List( )
7.3.2.7 XL7 – Thêm Từ điển
69
Hình 7.9: Sơ đồ tuần tự “Thêm Từ điển”
Chương 7. Phân tích – Thiết kế
: User
: DictHandle
: MainForm
: DictManagerForm
: DictCollection
1.// OpenDictManager()
1.1.// Show()
1.1.1.// LoadDictionaryList()
1.1.1.1.// LoadDictionaryList()
1.1.2.// ShowDictionaryList( )
2.// SelectDictionary()
2.1.// LoadDictInformation( )
2.1.1.// LoadDictInformation( )
2.2.// ShowDictInformation( )
3.// DeleteDictionary()
3.1.// DeleteDictionary()
3.1.1.// DeleteDictionary( )
3.2.// ShowDictionaryList( )
7.3.2.8 XL8 – Xóa Từ điển
70
Hình 7.10: Sơ đồ tuần tự “Xóa Từ điển”
Chương 7. Phân tích – Thiết kế
7.4 Thiết kế giao diện
7.4.1 Danh sách các màn hình giao diện chính
STT Màn hình Mô tả
1 Màn hình chính của ứng dụng
2
3 Màn hình quản lý dữ liệu Từ điển Màn hình chọn tập tin dữ liệu Từ điển
4 Màn hình thay đổi các thông số Chứa các chức năng chính của ứng dụng như : tra từ, quản lý Từ điển, phát âm, click&see, click&hear, lọc từ theo loại từ, thay đổi các thông số, … Chứa các chức năng thêm, xóa dữ liệu Từ điển. Chứa chức năng chọn tập tin dữ liệu Từ điển để thêm vào bộ dữ liệu của ứng dụng. Chứa các chức năng thay đổi các thông số hiển thị (font chữ, cách hiển thị), và đường dẫn tới bộ dữ liệu Từ điển đang được sử dụng.
Bảng 7.5: Danh sách các màn hình giao diện chính
7.4.2 Mô tả các màn hình giao diện chính
7.4.2.1 Màn hình chính của ứng dụng
7.4.2.1.1 Mô tả
Chứa các chức năng chính của ứng dụng như : tra từ, quản lý Từ điển, phát âm,
71
click&see, click&hear, lọc từ theo loại từ, thay đổi các thông số, …
Chương 7. Phân tích – Thiết kế
(3)
(1)
(2)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
Hình 7.11: Màn hình chính
7.4.2.1.2 Các thành phần
STT Kiểu Mô tả
1 NotificationIcon Tra nghĩa từ và nghe đọc từ hay đoạn văn trong các ứng dụng khác.
2
ComboBox Nhập hay chọn từ muốn tra cứu nghĩa.
3 Button Tra cứu nghĩa.
72
Button Hiển thị ContextMenu chuyển đổi các bộ dữ liệu Từ điển. 4
Chương 7. Phân tích – Thiết kế
5
ContextMenu Chuyển đổi các bộ dữ liệu Từ điển.
6
ListBox Hiển thị danh sách các từ trong Từ điển.
7 Spliter Thay đổi khung nhìn
8
HTMLViewer Hiển thị nghĩa của từ được chọn.
9
Chứa các chức năng chính của ứng dụng. Menu 1
10
Toolbar 2 Chứa một số chức năng thường được sử dụng để thao tác nhanh chóng.
Bảng 7.6: Các thành phần của của màn hình chính
1 Các thành phần của thanh trình đơn
73
Chương 7. Phân tích – Thiết kế
Hình 7.12: Các thành phần của thanh trình đơn
STT Menu Menu Items Menu Items Mô tả
1 Dict
1.1 Manager
1.2 Settings
1.3 1.4 1.5 Help About Exit
2 Search
2.1 Filter
Quản lý các thông tin chung của ứng dụng. Quản lý các bộ dữ liệu Từ điển. Thay đổi các thông số giao diện và đường dẫn tới tập tin dữ liệu đang được sử dụng. Giúp đỡ sử dụng ứng dụng. Giới thiệu về tác giả. Thoát khỏi ứng dụng. Quản lý việc tra cứu nghĩa của ứng dụng. Lọc các từ trong danh sách theo từ loại. Không lọc. All Chỉ hiển thị danh từ. Noun Verb Chỉ hiển thị động từ. Preposition Chỉ hiển thị giới từ. Adj/ Adv Others 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6
2.2 Exact Search
2.3 Wildcard Search
2.4 Phrase Search
3 View
74
3.1 Tile Chỉ hiển thị tính từ và trạng từ. Hiển thị các loại từ khác. Tìm kiếm chính xác từ được nhập vào. Tìm kiếm tương đối từ được nhập vào (từ nhập vào có thề có các ký tự thay thế: ?, *). Tìm kiếm cụm từ có chứa một vài từ được nhập vào. Điều chỉnh các kiểu khung nhìn khác nhau. Phần danh sách từ và phần nội dung xếp kề nhau.
Chương 7. Phân tích – Thiết kế
3.2 Cascade
3.3 Clear Type Phần danh sách từ và phần nội dung xếp tầng. Áp dụng định dạng font chữ mịn cho phần hiển thị nội dung nghĩa của từ.
Bảng 7.7: Các thành phần của thanh trình đơn
2 Các thành phần của thanh công cụ
Hình 7.13: Các thành phần của Thanh công cụ
STT Hình Kiểu Mô tả
1 ToolbarButton Di chuyển tới trang tiếp theo trang hiện hành.
2 ToolbarButton Di chuyển tới trang trước trang hiện hành.
3 ToolbarButton Tra cứu lại từ đã tra sau đó.
4 ToolbarButton Tra cứu lại từ đã tra trước đó.
5 ToolbarButton Phát âm từ hiện hành.
Bảng 7.8: Các thành phần của thanh công cụ
7.4.2.2 Màn hình quản lý dữ liệu Từ điển
7.4.2.2.1 Mô tả
75
Chứa các chức năng thêm, xóa dữ liệu Từ điển.
Chương 7. Phân tích – Thiết kế
Hình 7.14: Màn hình quản lý dữ liệu Từ điển
7.4.2.2.2 Các thành phần
Kiểu Mô tả
STT 1 PictureBox Tiêu đề cho màn hình quản lý Từ điển.
2 Label
3 Button Thêm các tập tin dữ liệu Từ điển.
76
4 Button Xóa các tập tin dữ liệu Từ điển.
Chương 7. Phân tích – Thiết kế
5
ListBox Danh sách các tập tin dữ liệu Từ điển được chọn.
6 Label
7
TextBox Thông tin về các tập tin dữ liệu Từ điển được chọn.
8 Toolbar1 Chứa các chức năng xác nhận/ hủy bỏ việc thêm/ xóa dữ liệu Từ điển.
Bảng 7.9: Các thành phần của màn hình quản lý dữ liệu Từ điển
1 Các thành phần của thanh công cụ
Hình 7.15: Các thành phần của Thanh công cụ
STT Kiểu Mô tả
Hình 1 ToolbarButton Xác nhận việc thêm/xóa dữ liệu Từ điển.
2 ToolbarButton Hủy bỏ việc thêm/ xóa dữ liệu Từ điển.
77
Bảng 7.10: Các thành phần của thanh công cụ
Chương 7. Phân tích – Thiết kế
7.4.2.3 Màn hình chọn tập tin dữ liệu Từ điển
7.4.2.3.1 Mô tả
Chứa chức năng chọn tập tin dữ liệu Từ điển để thêm vào dữ liệu của ứng
dụng.
Hình 7.16: Màn hình chọn tập tin dữ liệu Từ điển
7.4.2.3.2 Các thành phần
Kiểu Mô tả
STT 1 PictureBox Tiêu đề cho màn hình chọn tập tin dữ liệu Từ điển
2
78
TreeView Hiển thị cây thư mục để người dùng chọn tập tin dữ liệu Từ điển.
Chương 7. Phân tích – Thiết kế
3 Label
4 ComboBox Bộ lọc các kiều tập tin.
5
ListView Danh sách (tên, kích thước) các tập tin được chọn.
6 Label
7 TextBox Đường dẫn đầy đủ của tập tin được chọn.
8 Xác nhận việc chọn các tập tin. Button
9 Hủy bỏ việc chọn các tập tin. Button
Bảng 7.11: Các thành phần của màn hình chọn tập tin dữ liệu Từ điển
7.4.2.4 Màn hình thay đổi các thông số
7.4.2.4.1 Mô tả
Chứa các chức năng thay đổi các thông số hiển thị (font chữ, cách hiển thị), và
79
đường dẫn tới bộ dữ liệu Từ điển đang được sử dụng.
Chương 7. Phân tích – Thiết kế
(1)
(2)
Hình 7.17: Màn hình thay đổi các thông số
7.4.2.4.2 Các thành phần
Kiểu Mô tả
STT 1 TabPage Chọn các chức năng thay đổi thong số hiển thị hay đường dẫn tới các tập tin dữ liệu
2 Toolbar Xác nhận các thay đổi
Bảng 7.12: Các thành phần của màn hình thay đổi thông số
80
Màn hình thay đổi các thông số hiển thị
Chương 7. Phân tích – Thiết kế
Hình 7.18: Màn hình thay đổi các thông số hiển thị
Các thành phần
STT 1 2 3 4 5 6 7 8 9 Kiểu Label ComboBox Lable ComboBox CheckBox Label Button TextBox Button Mô tả Chọn font Chọn kích thước Kiểu hiển thị mịn Chọn hình nền Hiển thị mẫu Chấp nhận thay đổi
81
Bảng 7.13: Các thành phần của màn hình thay đổi các thông số hiển thị
Chương 7. Phân tích – Thiết kế
(3)
(1)
(2)
(4)
(5)
(8)
(6)
(7)
(9)
Màn hình thay đổi đường dẫn tới các tập tin dữ liệu
Hình 7.19: Màn hình thay đổi đường dẫn tới các tập tin dữ liệu
Các thành phần
STT 1 2 3 4 5 6 7 8 9 Kiểu Group Label Text Button Group Label Text Button Button Mô tả Nhóm đường dẫn tới tập tin dữ liệu từ điển Đường dẫn tới tập tin dữ liệu từ điển Chọn đường dẫn tới tập tin dữ liệu từ điển Nhóm đường dẫn tới tập tin dữ liệu âm thanh tiếng Việt Đường dẫn tới tập tin dữ liệu âm thanh tiếng Việt Chọn đường dẫn tới tập tin dữ liệu âm thanh tiếng Việt Chấp nhận thay đổi
82
Bảng 7.14: Các thành phần của màn hình thay đổi đường dẫn tới các tập tin dữ liệu
Chương 8. Xây dựng ứng dụng hỗ trợ quản lý dữ liệu Từ điển “CSDictManager”
Chương 8 Xây dựng ứng dụng hỗ trợ quản lý
dữ liệu Từ điển “CSDictManager”
8.1 Giới thiệu
Đây là ứng dụng được xây dựng trên Desktop nhằm mục đích hỗ trợ cho ứng
dụng Từ điển “CSPocketDict”. Ứng dụng cho phép người sử dụng tạo mới một bộ
Từ điển, và thêm, xóa, sửa các từ trong các bộ dữ liệu Từ điển có sẵn.
8.2 Mô hình Use-Case
CreateNewDictionary
LoadDictionary
PartOfSpeechFilter
User
ShowWordMeanings
RemoveWord
AddNewWord
UpdateWord
8.2.1 Lược đồ chính của mô hình Use Case
83
Hình 8.1: Lược đồ chính của mô hình Use case của ứng dụng CSDictManager
Chương 8. Xây dựng ứng dụng hỗ trợ quản lý dữ liệu Từ điển “CSDictManager”
8.2.1.1 Danh sách các Actor
Actor Ý nghĩa
STT 1 User Người sử dụng.
Bảng 8.1: Danh sách các Actor của ứng dụng CSDictManager
8.2.1.2 Danh sách các Use Case chính
Use-Case Ý nghĩa
STT 1 CreateNewDictionary
2 LoadDictionary
3 4 5 6 7 ShowWordMeanings AddNewWord UpdateWord RemoveWord PartOfSpeechFilter Tạo ra một bộ Từ điển rỗng. Nạp một bộ Từ điển có sẵn để thêm, xóa, sửa các từ. Hiển thị nghĩa của từ được chọn. Thêm một từ mới vào bộ Từ điển có sẵn. Cập nhật một từ trong bộ Từ điển có sẵn. Xóa một từ trong bộ Từ điển có sẵn. Lọc danh sách các từ hiển thị theo loại từ
Bảng 8.2: Danh sách các Use case chính của ứng dụng CSDictManager
8.2.2 Đặc tả một số Use Case chính
8.2.2.1 Đặc tả Use-Case “LoadDictionary”
8.2.2.1.1 Tóm tắt
Use-Case này cho phép người sử dụng nạp một bộ Từ điển có sẵn để thêm,
xóa, sửa các từ.
8.2.2.1.2 Dòng sự kiện
8.2.2.1.2.1 Dòng sự kiện chính
Use case này bắt đầu khi người sử dụng chọn chức năng nạp một Từ điển.
6. Người sử dụng chọn chức năng nạp Từ điển.
7. Hệ thống hiển thị hộp thoại “Open” yêu cầu người dùng chọn tập tin Từ
điển.
84
8. Người dùng chọn tập tin Từ điển và nhấn nút chọn.
Chương 8. Xây dựng ứng dụng hỗ trợ quản lý dữ liệu Từ điển “CSDictManager”
9. Hệ thống trở về màn hình chính và hiển thị danh sách các từ trong Từ điển
đã chọn và nghĩa của từ đầu tiên.
8.2.2.1.2.2 Các dòng sự kiện khác
Người dùng chưa chọn tập tin Từ điển
Nếu người dùng chưa chọn tập tin Từ điển nào mà xác nhận việc chọn Từ điển
thì hệ thống sẽ yêu cầu người dùng chọn tập tin Từ điển.
Người dùng không xác nhận việc chọn Từ điển
Nếu người dùng không xác nhận việc chọn Từ điển thì hệ thống sẽ không nạp
bộ dữ liệu đã chọn và kết thúc Use case.
8.2.2.1.3 Các yêu cầu đặc biệt
Không có.
8.2.2.1.4 Điều kiện tiên quyết
Không có.
8.2.2.1.5 Điều kiện kết thúc
Nếu Use case thực hiện thành công thì hệ thống sẽ nạp bộ Từ điển được chọn..
8.2.2.1.6 Điềm mở rộng
Không có.
8.2.2.2 Đặc tả Use-Case “UpdateWord”
8.2.2.2.1 Tóm tắt
Use-Case này cho phép người sử dụng cập nhật một từ trong bộ Từ điển đã
được nạp.
8.2.2.2.2 Dòng sự kiện
8.2.2.2.2.1 Dòng sự kiện chính
85
Chương 8. Xây dựng ứng dụng hỗ trợ quản lý dữ liệu Từ điển “CSDictManager”
10. Use case này bắt đầu khi người sử dụng chọn chức năng cập nhật từ.
11. Người sử dụng chọn chức năng cập nhật từ.
12. Hệ thống hiển thị hộp thoại cập nhật từ và nạp nội dung của từ được chọn lên
màn hình để người dùng sữa chữa.
13. Người dùng tiến hành sữa chữa nội dung của từ được chọn.
14. Sau khi sữa chữa xong người dùng nhấn nút lưu.
15. Hệ thống sẽ lưu từ được cập nhật vào Từ điển và trở về màn hình chính
8.2.2.2.2.2 Các dòng sự kiện khác
Người dùng không xác nhận việc cập nhật từ
Nếu người dùng không xác nhận việc cập nhật từ thì hệ thống sẽ không lưu
các sữa chữa của từ vào Từ điển và kết thúc Use case.
8.2.2.2.3 Các yêu cầu đặc biệt
Không có.
8.2.2.2.4 Điều kiện tiên quyết
Người dùng phải chọn trước một bộ Từ điển.
8.2.2.2.5 Điều kiện kết thúc
Nếu Use case thực hiện thành công thì hệ thống sẽ cập nhật từ đã sửa vào Từ
điển..
8.2.2.2.6 Điềm mở rộng
86
Không có.
Chương 8. Xây dựng ứng dụng hỗ trợ quản lý dữ liệu Từ điển “CSDictManager”
8.3 Thiết kế dữ liệu
1 1
1 1
MainForm
MessageBoxForm
EditorForm
CSDictControl
1 1
11
CSDictHandle
CModifyHandle
8.3.1 Sơ đồ lớp
Hình 8.2: Sơ đồ lớp của ứng dụng CSDictManager
8.3.2 Mô tả các lớp chính
STT Lớp đối tượng Loại Ý nghĩa
Boundary Lớp màn hình chính của ứng dụng
1 MainForm 2 Boundary Lớp màn hình chỉnh sửa từ
Boundary User control Từ điển
Boundary Lớp màn hình thông báo EditorForm 3 CSDictControl 4 MessageBoxForm
Lớp xử lý chính cho lớp màn hình Control 5 CModifyHandle chỉnh sửa từ
Lớp xử lý chính cho lớp màn hình Control 6 CSDictHandle chính của ứng dụng
87
Bảng 8.3: Danh sách các lớp chính của ứng dụng CSDictManager
Chương 8. Xây dựng ứng dụng hỗ trợ quản lý dữ liệu Từ điển “CSDictManager”
8.4 Thiết kế xử lý
8.4.1 Danh sách các xử lý chính
STT Xử lý Mô tả Use-Case tương ứng
1 XL1 Tạo ra một bộ Từ điển rỗng. CreateNewDictionary
Nạp một bộ Từ điển có sẵn để thêm, 2 XL2 LoadDictionary xóa, sửa các từ.
3 XL3 Hiển thị nghĩa của từ được chọn. ShowWordMeanings
Thêm một từ mới vào bộ Từ điển có 4 XL4 AddNewWord sẵn.
Cập nhật một từ trong bộ Từ điển có 5 XL5 UpdateWord sẵn.
6 XL6 Xóa một từ trong bộ Từ điển có sẵn. RemoveWord
Lọc danh sách các từ hiển thị theo loại 7 PartOfSpeechFilter XL7 từ
88
Bảng 8.4: Danh sách các xử lý chính của ứng dụng CSDictManager
Chương 8. Xây dựng ứng dụng hỗ trợ quản lý dữ liệu Từ điển “CSDictManager”
8.4.2 Mô tả một số xử lý chính
: MainForm
: EditorForm
: DictData
: User
: CModifyHandle
: MessageBoxForm
1: //Update
2: //ShowEditorForm
3: // LoadWordMeanings
4: // SearchWord
5: // ShowWordMeanings
6: // Save
7: // Save
8: // Successful
8.4.2.1 XL2 – Nạp dữ liệu Từ điển
89
Hình 8.3: Sơ đồ tuần tự “Nạp dữ liệu Từ điển” của ứng dụng CSDictManager
Chương 8. Xây dựng ứng dụng hỗ trợ quản lý dữ liệu Từ điển “CSDictManager”
: User
: CSDictHandle
: MainForm
: CSDictControl
: DictData
1: // Load
2: // LoadDictionnary
3: // LoadDictionnary
4: // GetDictionaryInfos
5: // ShowWordList
6: // ShowFirstWordMeanings
8.4.2.2 XL5 – Cập nhật từ
Hình 8.4: Sơ đồ tuần tự “Cập nhật từ” của ứng dụng CSDictManager
8.5 Một số màn hình giao diện
8.5.1 Danh sách các màn hình giao diện
STT Màn hình
1 Màn hình chính của ứng dụng
2 Màn hình biên soạn từ Mô tả Chứa các chức năng chính của ứng dụng như : tạo mới một bộ Từ điển, và thêm, xóa, sửa các từ trong các bộ dữ liệu Từ điển có sẵn., … Cho phép chỉnh sửa nội dung của một từ.
90
Bảng 8.5: Danh sách các màn hình giao diện chính của ứng dụng CSDictManager
Chương 8. Xây dựng ứng dụng hỗ trợ quản lý dữ liệu Từ điển “CSDictManager”
8.5.2 Mô tả các màn hình giao diện chính
8.5.2.1 Màn hình chính của ứng dụng
Chứa các chức năng chính của ứng dụng như : tạo mới một bộ Từ điển, và
thêm, xóa, sửa các từ trong các bộ dữ liệu Từ điển có sẵn., …
91
Hình 8.5: Màn hình chính của ứng dụng CSDictManager
Chương 8. Xây dựng ứng dụng hỗ trợ quản lý dữ liệu Từ điển “CSDictManager”
8.5.2.2 Màn hình biên soạn từ
Cho phép chỉnh sửa nội dung của một từ.
92
Hình 8.6: Màn hình biên soạn từ của ứng dụng CSDictManager
Chương 9. Cài đặt và thử nghiệm
Chương 9 Cài đặt và thử nghiệm
9.1 Cài đặt
9.1.1 Công cụ và Môi trường phát triển ứng dụng
Ứng dụng CSPocketDict được xây dựng trên các công cụ và môi trường sau:
• Công cụ phân tích và thiết kế:
o Rational Rose 2003
• Môi trường cài đặt Ứng dụng:
o Microsoft Windows ME, Windows XP
• Môi trường lập trình:
o .Net Compact Framwork 1.0 SP2
o Microsoft eMbedded Visual C++ 3.0
• Môi trường thử nghiệm và cài đặt:
o Máy ảo giả lập (emulator) Pocket PC 2002 trên hệ điều hành
Microsoft Windows XP.
o Máy Pocket PC HP Jornada 928 bộ nhớ 61.64 MB.
Ngoài ra, trong quá trình phát triển ứng dụng CSPocketDict , chúng em còn sử
dụng và tham khảo thêm các bộ thư viện nguồn mở sau đây:
• Bộ thư viện nén/giải nén Zlibce. • Bộ thư viện OpenNetCF. • Bộ thư viện phát âm Flite.
9.1.2 Mô hình cài đặt (Implementation Model)
93
9.1.2.1 Mô hình
Chương 9. Cài đặt và thử nghiệm
CSDictManager Application
Zlibce
Data
Font
Library
CSOpe nNetCF
CSPocketDict Application
Flite
GUI
Voice
Hình 9.1: Mô hình cài đặt ứng dụng Từ điển
9.1.2.2 Các thành phần trong mô hình cài đặt
Kiểu Mô tả
STT 1 Package
2 Package Tên CSPocketDict Application CSDictManage rApplication Chứa chương trình ứng dụng Từ điển CSPocketDict.exe (trên Pocket PC) Chứa chương trình ứng dụng quản lý dữ liệu Từ điển CSDictManager.exe (trên desktop)
2 Data 3 Font 4 GUI 5 Voice 6 7 8 9 Package Chứa các bộ dữ liệu Từ điển. Package Chứa font hiển thị tiếng Việt. Package Chứa các thành phần giao diện của ứng dụng Package Chứa các tập tin âm thanh tiếng Việt. Package Chứa các bộ thư viện Library Zlibce DLL CSOpenNetCF DLL DLL Flite Bộ thư viện nén/ giải nén dữ liệu Từ điển. Bộ thư viện . Bộ thư viện phát âm tiếng Anh.
94
Bảng 9.1: Các thành phần trong mô hình cài đặt
Chương 9. Cài đặt và thử nghiệm
9.2 Thử nghiệm
9.2.1 Máy ảo
Một số thử nghiệm ứng dụng CSPocketDict trên máy ảo giả lập (emulator)
Pocket PC 2002:
STT Tính năng thử nghiệm Đánh giá
Thời gian nạp vào và hiển thị nhanh. Nạp vào và hiển thị danh sách 1 Không hiển thị tốt tiếng Việt với font chữ từ của từ điển Unicode.
2 Tìm kiếm từ Tốc độ tìm kiếm nhanh.
Tốc độ hiển thị nhanh. Nội dung nghĩa dài
sẽ được hiển thị ra từ từ theo từng đoạn 3 Hiển thị nghĩa của từ với tốc độ chấp nhận được. Không hiển
thị tốt tiếng Việt với font chữ Unicode.
Bảng 9.2: Một số thử nghiệm trên máy ảo
9.2.2 Máy thật
Một số thử nghiệm ứng dụng CSPocketDict trên máy Pocket PC HP Jornada
928 với bộ nhớ 61.64MB:
STT Tính năng thử nghiệm Đánh giá
Thời gian nạp vào và hiển thị danh sách
khoảng 2000 từ trung bình mất 2 giây. Nạp vào và hiển thị danh sách 1 Hiển thị tốt tiếng Việt với font chữ từ của từ điển
Unicode.
2 Tìm kiếm từ Tốc độ tìm kiếm nhanh
Tốc độ hiển thị nhanh. Nội dung nghĩa dài
sẽ được hiển thị ra từ từ theo từng đoạn 3 Hiển thị nghĩa của từ với tốc độ chấp nhận được. Hiển thị tốt
95
tiếng Việt với font chữ Unicode.
Chương 9. Cài đặt và thử nghiệm
Phát âm tiếng Việt rõ.
4 Phát âm Phát âm tiếng Anh khá, có giọng điệu
nhưng tiếng hơi nhỏ (8 KHz/Mono).
Bảng 9.3: Một số thử nghiệm trên máy thật
Nhận xét:
CSPocketDict đã được thử nghiệm trên máy ảo Pocket PC 2002 và máy HP
Jornada 928. Kết quả thử nghiệm phản ánh ở hai bảng trên cho thấy chương trình
hoạt động ổn định và đạt kết qủa tốt. Vì vậy việc ứng dụng chương trình vào sử
dụng trên các máy Pocket PC trên thực tế là khả thi.
9.3 Hướng đẫn sử dụng
9.3.1 Tra cứu từ trên màn hình chính
Khởi động CSPockectDict, màn hình chính hiện ra như sau:
96
Hình 9.2: Giao diện chính
Chương 9. Cài đặt và thử nghiệm
Yêu cầu nạp nghĩa của từ vừa nhập
Tra chéo từ trong ứng dụng khác
Thay đổi bộ từ điển
Nơi nhập từ cần tra nghĩa
Danh sách các từ
Thanh phân chia, kéo để thay đổi kích thước 2 vùng
Phát âm từ đang hiển thị
Nội dung nghỉa của từ
Xem nghĩa của từ đã tra phía sau
Trình đơn chính
Xem nghĩa của từ đã tra phía trước
Quay lui về danh sách từ trước đó
Nạp danh sách từ tiếp theo
Hình 9.3: Hướng dẫn các chức năng màn hình chính
, danh sách từ sẽ tự động liệt kê Khi cần tra từ thì gõ vào ô
để hiển thị nghĩa của danh sách các từ gần sát với từ đang chọn. Sau đó nhấn vào
từ vừa nhập, hay chọn từ trong danh sách để hiển thị nghĩa của nó.
Nhấn vào hay để hiển thị danh sách từ phía trước hay tiếp theo danh
sách hiện hành. Nhấn vào hay để xem từ đã tra phía trước (undo) hay phía
sau (redo).
Nhấn vào để nghe phát âm từ đang hiển thị.
Kéo thanh phân chia ở giữa màn hình lên hay xuống để thay đổi kích thước
97
vùng hiển thị nghĩa và danh sách từ
Chương 9. Cài đặt và thử nghiệm
Khi cần thay đổi bộ Từ điển khác thì nhấn vào ,
một trình đơn sẽ hiện ra với danh sách các bộ Từ điển đã
được thêm vào. Chọn bộ Từ điển cần dùng hay chọn mục
để xem thông tin, thêm hay xóa các bộ Từ
điển trong ứng dụng.
9.3.2 Trình đơn chính
Trình đơn Dict: • Settings: chỉnh các tham số của ứng dụng • Manager: quản lý các bộ Từ điển • Help: xem trang trợ giúp • About: xem thông tin về ứng dụng và tác giả • Exit: thoát khỏi ứng dụng
Trình đơn Tool: • Exact Search: tìm kiếm chính xác từ gõ vào • Wildcard Search: tìm kiếm mở rộng từ có chứa 2
kí tự đại diện :
o ‘?’: đại diện 0 hay 1 kí tự
o ‘*’: đại diện 0 hay nhiều kí tự
• Phrase Search: tìm kiếm mở rộng các cụm từ có chứa từ nhập vào • Pronounce: phát âm từ đang hiển thị • Filter: lọc danh sách từ
o All: không lọc.
o Noun: chỉ hiển thị danh từ.
o Verb: chỉ hiện thị động từ.
o Preposition: chỉ hiển thị giới từ.
o Adj/Adv: chỉ hiển thị tính từ hay trạng từ.
98
o Others: hiển thị các loại từ khác với các loại ở trên.
Chương 9. Cài đặt và thử nghiệm
Trình đơn View: • Tile: phần danh sách từ và phần nội dung từ xếp kề
nha
• Cascade: phần danh sách từ và phần nội dung từ
xếp tầng
• Clear Type: áp dụng định dạng font chữ mịn cho phần hiển thị nội dung
nghĩa của từ.
Chọn thêm từ điển
Xóa từ điển đang chọn
Danh sách các tập tin thông tin từ điển đã thêm
Liệt kê thông tin từ điển
Thoát, có lưu các thay đổi
Thoát, không lưu các thay đổi
9.3.3 Quản lý Từ điển
99
Hình 9.4: Hướng dẫn các chức năng màn hình quản lý Từ điển
Chương 9. Cài đặt và thử nghiệm
Để thêm 1 bộ Từ điển vào ứng dụng, nhấn vào để mở hộp thoại chọn tập
tin của bộ Từ điển cần thêm.
Để xóa 1 bộ từ điển ra khỏi ứng dụng, chọn tập tin thông tin Từ điển trong
danh sách và nhấn ..
Nhấn để lưu các thay đổi và thoát. Nhấn để thoát mà không cần lưu
thay đổi.
9.3.4 Chọn tập tin Từ điển
100
Hình 9.5: Hướng dẫn chức năng màn hình chọn tập tin Từ điển
Chương 9. Cài đặt và thử nghiệm
để danh sách chỉ hiển thị các tập Chọn bộ lọc
tin thông tin từ điển. Chọn thư mục có chứa dữ liệu từ điển trong danh sách thư
mục. Các tập tin thông tin từ điển sẽ tự động hiện ra trong danh sách tập tin nếu có.
để chọn thêm bộ từ điển Nhấn vào tập tin từ điển muốn chọn rồi nhấn vào nút
này vào ứng dụng.
Nếu muốn thoát mà không chọn thêm bộ từ điển thì nhấn vào nút .
Font chữ
Cỡ chữ
Kiểu chữ mịn
Màu nền
Mẫu hiển thị
Áp dụng
Thoát
9.3.5 Thay đổi các tham số
101
Hình 9.6: Hướng dẫn chức năng màn hình thay đổi định dạng của phần hiển thị nội dung nghĩa của từ
Chương 9. Cài đặt và thử nghiệm
Mở hộp thọai chọn đường dẫn
Đường dẫn mặc định có chứa các bộ từ điển
Áp dụng
Đường dẫn đến dữ liệu âm thanh phát âm tiếng Việt
Thoát
102
Hình 9.7: Hướng dẫn chức năng màn hình điều chỉnh đường dẫn
Chương 10. Tổng kết
Chương 10 Tổng kết
10.1 Kết luận
Dựa trên cơ sở tìm hiểu về cách thức xây một ứng dụng Từ điển hiệu quả
cũng như tìm hiểu các môi trường phát triển ứng dụng trên Pocket PC, đề tài đã đạt
được mục tiêu đề ra là xây dựng được một ứng dụng Từ điển, cụ thể là Từ điển
Anh-Việt, Việt-Anh, trên nền Pocket PC 2002 với môi trường phát triển .Net
Compact Framework.
Ứng dụng được tổ chức thành hai phần: • CSPocketDict: Ứng dụng Từ điển được cài đặt trên môi trường Pocket PC
2002.
• CSDictManager: Chương trình được cài đặt trên desktop cho phép thêm,
xóa, sửa nội dung của các bộ dữ liệu Từ điển.
Mặc dù thời gian thực hiện đề tài có hạn nhưng chúng em cũng đã cố gắng
xây dựng ứng dụng Từ điển với những chức năng sao cho người dùng có thể sử
dụng thuận tiện, đơn giản và nhanh chóng nhất, phù hợp với dạng thiết bị PDA cầm
tay và nhu cầu di chuyển thường xuyên của người sử dụng. Người sử dụng có thể
tra cứu nghĩa của từ một cách nhanh chóng, nghe cách phát âm của từ đó bằng 2 thứ
ngôn ngữ là tiếng Việt và tiếng Anh. Ứng dụng cũng đem lại sự tiện dụng tối đa cho
người dùng bằng 2 chức năng Click&See và Click&Hear. Với 2 chức năng này, thì
người dùng có thể tra nghĩa của từ cũng như nghe đọc một từ hay một đoạn văn
trong bất cứ ứng dụng nào. Ngoài ra, ứng dụng còn hỗ trợ cho phép người dùng
chọn các bộ dữ liệu Từ điển khác nhau để phục vụ cho nhu cầu tra cứu.
Chúng em hy vọng rằng trong thời gian tới ứng dụng “CSPocketDict” sẽ
được cài đặt hoàn chỉnh hơn, cung cấp thêm nhiều tính năng hiệu quả và tiện dụng
103
hơn, đáp ứng được nhu cầu đi lại thường xuyên của người sử dụng.
Chương 10. Tổng kết
10.2 Hướng phát triển
10.2.1 Hoàn thiện ứng dụng hơn nữa
Tiếp tục bổ sung thêm các bộ dữ liệu Từ điển, đặc biệt là các Từ điển chuyên
môn. Thêm các công cụ biên soạn, xây dựng Từ điển. Tích hợp vào các ứng dụng
có sẵn như Pocket Word, Pocket Exel, …để tăng cường các thao tác biên soạn như
sửa lỗi chính tả.
10.2.2 Phát triển ứng dụng trên các thiết bị PDA khác
Với nền tảng cấu trúc dữ liệu được tổ chức khá tốt cũng như áp dụng các kỹ
thuật tăng tốc xử lý cho các thiết bị giới hạn về bộ nhớ và khả năng xử lý thì có thể
nói việc phát triển ứng dụng Từ điển trên các thiết bị PDA sử dụng các hệ điều hành
khác như Palm OS là tương đối dễ dàng và nhanh chóng.
10.2.3 Tích hợp với các hệ thống Web
Qua quá trình thực hiện đề tài, ngoài việc xây dựng các giải pháp tối ưu để
nhúng ứng dụng Từ điển vào Pocket PC, các kết quả tìm hiểu cũng cho thấy xu
hướng tận dụng kết nối mạng internet để phát triển các ứng dụng giao diện Web
(Mobile Web-based Application). Do các xử lý truy vấn dữ liệu cũng như lưu trữ
đều nằm ở phía server, nên ứng dụng Từ điển có thể chạy trên các máy PDA có cấu
104
hình thấp hơn, bao gồm cả các máy điện thoại di động có hỗ trợ WAP/GPRS.
Phụ lục A . Danh sách các hỗ trợ và không hỗ trợ trên .NET Compact Framework
Phụ lục A Danh sách các hỗ trợ và không hỗ trợ
trên .NET Compact Framework
Danh sách các control được hỗ trợ và không được hỗ trợ trên .Net Compact Framework
Hỗ trợ
STT Tên Không hỗ trợ Tên STT
1 Button 2 CheckBox 3 ComboBox 4 ContextMenu 5 DataGrid 6 DomainUpDown 7 FileOpenDialog 8 HScrollBar 9 ImageList 10 Label 11 ListBox 12 ListView 13 FileSaveDialog STT Tên 14 MainMenu 15 NumericUpDown 16 Panel 17 PictureBox 18 ProgressBar 19 RadioButton 20 StatusBar 21 TabControl 22 TextBox 23 Timer 24 ToolBar 25 TreeView 26 VschollBar 1 CheckedListBox 2 ColorDialog ErrorProvider 3 4 FontDialog 5 GroupBox 6 HelpProvider 7 LinkLabel 8 NotificationBubble 9 NotifyIcon 10 PrintControl 11 RichTextBox 12 Spliter 13 ToolTip
Danh sách các thuộc tính, phương thức, sự kiện được hỗ trợ trên .Net Compact Framework STT Phương thức Thuộc tính Sự kiện
BringToFront Dispose CreateGraphics Focus Hide Invalidate PointToClient PointToScreen Refresh SendToBack Show Update
105
1 Bounds 2 ClientRectangle 3 Capture 4 ClientSize 5 ContextMenu 6 Controls 7 DataBindings 8 Enabled 9 Focused 10 Font 11 Location 12 MouseButtons 13 Parent 14 Size 15 Text 16 Visible Click Disposed EnabledChanged KeyDown KeyUp MouseDown MouseMove MouseUp Paint ParentChange Resize TextChanged
Phụ lục A . Danh sách các hỗ trợ và không hỗ trợ trên .NET Compact Framework
Danh sách các thuộc tính, phương thức, sự kiện không được hỗ trợ trên .Net Compact Framework STT Phương thức Thuộc tính
106
1 AccessibilityObject Contains 2 AllowDrop 3 Anchor 4 BackGroundImage 5 CanFocus 6 CanSelect 7 CausesValidation 8 Container 9 ContainsFocus 10 Created 11 Disposing 12 Dock 13 Handle 14 HasChildren 15 16 17 CreateControl DoDragDrop FindForm GetContainerControl GetNextControl PerformLayout PreProcessMessage ResetBackColor ResetCursor ResetFont ResumeLayout Scale SetBounds SuspendLayout Sự kiện BackColorChanged BackGroundImageChanged CauseValidationChanged ChangeUICures ContextMenuChanged ControlAdded ControlRemoved CursorChanged DockChanged DoubleClick DragDrop DragEnter DragLeave DragOver Enter FontChanged Invalidated
Phụ lục B . Các hình thức lưu trữ trên Windows CE
Phụ lục B Các hình thức lưu trữ trên Windows CE
Tập tin trên Windows CE
Windows CE cung cấp một tập các hàm API cho phép lập trình viên truy xuất
các tập tin cả trên ROM lẫn trên RAM.
Điểm khác biệt chủ yếu đầu tiên mà ta cần lưu ý là object store trên Windows
CE là việc thiếu các kí tự ổ đĩa. Windows CE sử dụng các thư mục dưới thư mục
gốc cho việc cài đặt các thiết bị của người dùng. Ví dụ, nếu người dùng gắn một
flash card vào máy, Windows CE sẽ tạo ra một thư mục /Storage Card 1. Cứ mỗi
flash card được gắn vào, con số này sẽ tăng lên (/Storage Card 2,…)
Đường dẫn tới tập tin được giới hạn bởi MAX_PATH (có thể dài tối đa 260 kí
tự, giống như trên Windows) Tuy nhiên, trên Windows CE không có khái niệm thư
mục hiện hành, ta phải truy xuất các tập tin bằng các đường dẫn dầy đủ của nó.
Trên Windows CE 2.0, các tập tin có kích thước tối đa là 4MB và số lượng tối
đa trong object store là 65535. Trên Windows CE 3.0, kích thước tối đa cho một tập
tin là 32MB, số lượng tối đa đối tượng lưu trữ trong object store là gần 4.000.000.
Vì các tập tin có thể được lưu trữ trong cả RAM lẫn ROM, nên Windows CE
cũng đã hỗ trợ một số thuộc tính tập tin như:
FILE_ATTRIBUTE_NORMAL là thuộc tính mặc định của tập tin
FILE_ATTRIBUTE_READONLY thiết lập thuộc tính chỉ đọc cho tập tin
FILE_ATTRIBUTE_ARCHIVE thiết lập thuộc tính lưu trữ cho tập tin
FILE_ATTRIBUTE_SYSTEM thiết lập thuộc tính hệ thống cho tập tin
FILE_ATTRIBUTE_HIDDEN thiết lập thuộc tính ẩn cho tập tin
FILE_ATTRIBUTE_INROM chỉ ra tập tin được lưu trữ trong ROM
FILE_ATTRIBUTE_DIRECTORY chỉ ra tập tin là một thư mục
FILE_ATTRIBUTE_TEMPORARY chỉ ra tập tin nằm trên một thiết bị do
107
người dùng cài đặt như một PC card…
Phụ lục B . Các hình thức lưu trữ trên Windows CE
Cơ sở dữ liệu trên Windows CE
Có thể xem Database trên Windows CE như một dạng tập tin đặc biệt, có tổ
chức và cung cấp sẵn các thao tác. Giống như các cơ sở dữ liệu khác, Windows CE
Database API giúp cho việc lưu trữ và tổ chức dữ liệu trở nên đơn giản hơn. Các
ứng dụng internal như Contacts, Tasks… trên Windows CE là các ứng dụng sử
dụng Database API để lưu trữ thông tin.
Mỗi database là một tập các record chứa một hay nhiều thuộc tính thông tin và
giá trị của nó.
Database tạo bằng Database API có một số giới hạn: • Số thứ tự sắp xếp tối đa là 4 • Kích thước tối đa của thuộc tính là 64KB • Kích thước tối đa của record là 128KB • Database của Windows CE chỉ có một cấp • Không hỗ trợ khoá (locking) database, chỉ cung cấp notification khi thay
đổi xảy ra
• Các record không được chứa các record khác hay chia xẻ giữa các database
với nhau
Các database phức tạp có quan hệ cũng không được hỗ trợ trên Pocket PC và
Windows CE 3.0. Thay vào đó, Database API nên được dùng để lưu trữ các thông
tin quan hệ đơn giản như danh sách mua hàng, hay thông tin liên lạc cá nhân…
Mỗi thuộc tính của database được định nghĩa với một kiểu dữ liệu xác định.
Các kiểu dữ liệu được hỗ trợ trên database của Windows CE gồm:
Thuộc tính Mô tả
108
CEVT_BLOB CEVT_FILETIME CEVT_I2 CEVT_I4 CEVT_LPWSTR CEVT_U12 CEVT_U14 Một khối nhớ, lưu trữ theo cấu trúc CEBLOB Cấu trúc FILETIME Số nguyên 16-bit có dấu Số nguyên 32-bit có dấu Một chuỗi null-terminated Số nguyên 16-bit không dấu Số nguyên 32-bit không dấu
Phụ lục B . Các hình thức lưu trữ trên Windows CE
CEVT_BOOL CEVT_R8 Giá trị luận lý (có từ Windows CE 2.1) Số thực double 64-bit có dấu (có từ Windows CE 2.1)
Bắt đầu từ Windows CE 2.1, database có thể nằm trên các thiết bị ngoài như
flash card. Người sử dụng có thể mount database để sử dụng trên thiết bị,
Database trên windows CE hỗ trợ các thao tác: Tạo database, mở database, sắp
xếp trên database, đọc dữ liệu từ database, ghi xuống database, tìm kiếm trên
109
database.
Phụ lục C . Chuẩn nén Gzip
Phụ lục C Chuẩn nén Gzip
Gzip (viết tắt của GNU zip) được phát triển bởi Jean-loup Gailly và Mark
Adler. Gzip với đặc điểm là nguồn mở, phân phối tự do, tỉ lệ nén cao nên được sử
dụng rất nhiều trên internet.
Định dạng của tập tin nén theo chuẩn Gzip
• Các qui ước chung:
o Ký hiệu cho 1 byte:
o Ký hiệu cho một số lượng byte có thể thay đổi :
o Các byte lưu trong máy tính không theo “thứ tự bit”, bởi vì chúng
luôn được xem như là 1 đơn vị. Tuy nhiên, khi 1 byte được xem như 1
con số nguyên có giá trị từ 0 đến 255 thì nó sẽ có 1 bit cao nhất (ở vị
trí cao nhất) và 1 bit thấp nhất (ở vị trí thấp nhất), và do chúng ta ghi
các số theo thứ tự con số có vị trí cao nhất ở bên trái, nên chúng ta
cũng ghi các byte với bit cao nhất nằm ở bên trái. Trong hình dưới
đây, chúng ta sẽ đánh số các bit của một byte sao cho bit 0 là bit thấp
nhất:
o Trong máy tính, một số có thể chiếm nhiều byte. Tất cả các số chiếm
nhiều byte trong định dạng được mô tả ở đây được lưu theo thứ tự:
byte đầu tiên là byte thấp (được lưu tại địa chỉ bộ nhớ thấp hơn). Ví
110
dụ, số 520 được lưu như sau:
Phụ lục C . Chuẩn nén Gzip
• Định dạng tập tin : một tập tin Gzip bao gồm một chuỗi các “thành phần”
(các tập dữ liệu nén). Định dạng của từng thành phần sẽ được trình bày
trong phần dưới đây. Các thành phần chỉ đơn giản sắp xếp liên tiếp nhau
trong tập tin, mà không có các thông tin gì thêm ở trước, giữa, hay sau
chúng.
• Định dạng các thành phần
o Mỗi thành phần có cấu trúc như sau:
o Nếu cờ FLG.FEXTRA đặt:
o Nếu cờ FLG.FNAME đặt:
+====================================================+ |...chú thích cho tập tin, chuỗi kết thúc bằng 0... | (tiếp-->) +====================================================+
111
o Nếu cờ FLG.FCOMMENT đặt :
Phụ lục C . Chuẩn nén Gzip
o Nếu cờ FLG.FHCRC đặt:
• Các thành phần:
o ID1 (IDentification 1), ID2 (IDentification 2): chúng có giá trị cố
định ID1 = 31 (0x1f, \037), ID2 = 39 (0x8b, \213), để xác định tập tin
có định dạng Gzip.
o CM (Compression Method): xác định phương pháp nén được dùng
trong tập tin. CM = 0 – 7 là không nén. CM = 8 xác định phương pháp
nén “deflate”, thường được Gzip sử dụng.
(cid:131) bit 0
FTEXT
(cid:131) bit 1
FHCRC
(cid:131) bit 2
FEXTRA
(cid:131) bit 3
FNAME
(cid:131) bit 4
FCOMMENT
(cid:131) bit 5
không dùng
(cid:131) bit 6
không dùng
(cid:131) bit 7
không dùng
o FLG (FLaGs) : Byte cờ này được chia thành các bit riêng rẽ như sau:
Nếu cờ FTEXT đặt, tập tin có dạng văn bản ASCII. Đây là một
112
chỉ định tùy chọn, mà bộ nén dữ liệu có thể đặt bằng cách kiểm tra
Phụ lục C . Chuẩn nén Gzip
một số lượng nhỏ dữ liệu đầu vào để xác định có bất kỳ ký tự nào
không phải là ký tự ASCII xuất hiện hay không. Trong trường hợp
nghi ngờ là có, cờ FTEXT xóa, xác định đây là dữ liệu nhị phân. Đối
với những hệ thống có các định dạng tập tin khác nhau cho văn bản
ASCII và dữ liệu nhị phân, bộ giải nén có thể dùng cờ FTEXT để
chọn định dạng gần đúng nhất. Chúng ta nên cân nhắc việc không xác
định thuật toán được dùng để đặt bit này, bởi vì bộ nén dữ liệu luôn
luôn có quyền xóa nó và bộ giải nén luôn luôn có quyền bỏ qua nó và
để cho vài chương trình khác kiểm soát các vấn đề về sự chuyển đổi
dữ liệu.
Nếu cờ FHCRC đặt, CRC16 cho header của Gzip xuất hiện ngay
phía trước dữ liệu nén. CRC16 gồm 2 byte thấp của CRC32 (Cờ
FHCRC luôn không đặt cho các phiên bản Gzip trước phiên bản 1.2.4.
Trong phiên bản 1.2.4 nó được mô tả khác ở trên)
Nếu cờ FEXTRA đặt, các trường mở rộng tùy chọn xuất hiện
như được mô tả trong phần sau.
Nếu cờ FNAME đặt, tên tập tin gốc xuất hiện, kết thúc bằng byte
zero. Tên tập tin phải gồm các ký tự ISO 8859-1 (LATIN-1); trên các
hệ điều hành sử dụng bộ ký tự EBCDIC hay bất kỳ bộ ký tự nào khác
cho tên tập tin, thì tên tập tin phải được chuyển sang tập ký tự ISO
LATIN-1. Đây là tên gốc của tập tin được nén, bỏ đi đường dẫn, và
nếu tập tin được nén ở hệ thống tập tin cho phép tên không phân biệt
chữ hoa chữ thường, thì tên này sẽ được chuyển về chữ thường. Sẽ
không có tên tập tin gốc nào nếu dữ liệu được nén từ một nguồn nào
đó chứ không phải là từ một tập tin có tên; ví dụ, nếu nguồn nén là
đầu vào chuẩn trên hệ thống Unix, thì sẽ không có tên tập tin.
Nếu cờ FCOMMENT đặt, thì một chú thích kết thúc bằng zero
113
xuất hiện. Chú thích này không được thông dịch, nó chỉ làm cho
Phụ lục C . Chuẩn nén Gzip
người ta dễ hiểu hơn. Chú thích phải gồm các ký tự ISO 8859-1
(LATIN-1), ký tự xuống dòng là 10 .
Các bit FLG không dùng phải là zero.
o MTIME (ModificationTIME) : Cho biết thời điểm chỉnh sửa tập tin
gốc được nén gần đây nhất, dùng định dạng Unix (số giây bắt đầu từ 0
giờ ngày 1/1/1970) (chú ý rằng điều này có thể phát sinh các vấn đề
trong MS – DOS và các hệ thống khác sử dụng múi giờ cục bộ chứ
không phải là múi giờ toàn cầu). Nếu dữ liệu nén không phải là từ một
tập tin, thì MTIME sẽ được đặt theo thời điểm bắt đầu nén. MTIME =
0 có nghĩa là tập tin nén không lưu thông tin thời gian.
o XFL (eXtra FLags): Những cờ này có sẵn để các phương pháp nén cụ
thể sử dụng. Phương pháp “deflate” (CM=8) đặt những cờ này như
sau:
(cid:131) XFL = 2 – bộ nén dữ liệu sử dụng thuật toán nén chậm nhất,
nhưng nén tối đa dữ liệu.
(cid:131) XFL = 4 – bộ nén dữ liệu sử dụng thuật toán nén nhanh nhất
o OS (Operating System): Xác định kiểu hệ thống tập tin mà việc nén
dữ liệu được thực hiện. Điều này có thể hữu dụng trong việc xác định ký
hiệu kết thúc dòng cho các tập tin văn bản. Những giá trị được định nghĩa
hiện thời như sau:
(cid:131) 0 – Hệ thống tập tin FAT (MS-DOS, OS/2, NT/Win32).
(cid:131) 1 – Amiga.
(cid:131) 2 – VMS (hay OpenVMS).
(cid:131) 3 – Unix.
(cid:131) 4 – VM/CMS
(cid:131) 5 – Atari TOS
114
(cid:131) 6 – Hệ thống tập tin HPFS (OS/2, NT)
Phụ lục C . Chuẩn nén Gzip
(cid:131) 7 – Macintosh
(cid:131) 8 – Z-System
(cid:131) 9 – CP/M
(cid:131) 10 – TOPS-20
(cid:131) 11 – Hệ thống tập tin NTFS (NT)
(cid:131) 12 – QDOS
(cid:131) 13 – Acorn RISCOS
(cid:131) 255 – không xác định
o XLEN (eXtra LENgth) : Nếu cờ FLG.FEXTRA đặt, cờ này xác định
chiều dài của các trường phụ tùy chọn. Xem chi tiết bên dưới.
o CRC32 (CRC-32): Chứa một giá trị kiểm tra độ dư vòng của dữ liệu
chưa nén được tính tùy theo thuật toán CRC-32 được dùng trong chuẩn
ISO 3309.
o ISIZE (Input SIZE): Chứa kích thước của dữ liệu gốc đầu vào (chưa
nén) modulo cho 2^32
(cid:153) Trường phụ
Nếu bit FLG.FEXTRA đặt, một “trường mở rộng” xuất hiện trong header với
kích thước là XLEN byte. Nó bao gồm một chuỗi các trường con có dạng như sau:
SI1 và SI2 là 2 byte định dạng cho trường con phía sau, cụ thể là 2 ký tự
ASCII có vài giá trị gợi nhớ. LEN là chiều dài của dữ liệu trường con không tính 4
byte đầu tiên.
115
Thuật toán nén (deflate)
Phụ lục C . Chuẩn nén Gzip
Thuật toán nén được Gzip (cũng như zip và zlib) sử dụng là một biến thể của
LZ77 (Lempel-Ziv 1977). Nó tìm các chuỗi lặp lại trong dữ liệu đầu vào. Lần xuất
hiện thứ 2 của một chuỗi được thay thế bởi một con trỏ tới chuỗi trước, dưới dạng
một cặp (khoảng cách, chiều dài). Các khoảng cách có giới hạn là 32K byte, và
chiều dài có giới hạn là 258K byte. Khi 1 chuỗi không xuất hiện ở bất cứ đâu trong
32K byte trước, thì nó sẽ được xem như là 1 dãy các byte theo từng chữ. (Ở đây,
‘chuỗi’ phải là 1 dãy tùy ý các byte, và không bị giới hạn bởi các ký tự đánh dấu).
Các chiều dài được nén bằng cây Huffman và các khoảng cách được nén bằng
1 loại cây khác. Các cây được lưu dưới hình thức “thỏa thuận” tại đầu mỗi block.
Các block có thể có kích thước bất kỳ (ngoại trừ các dữ liệu được nén cho 1 block
phải cố định trong bộ nhớ). Một block được kết thúc khi thủ tục deflate() xác định
rằng block đó đã có ích để bắt đầu 1 block khác với các cây mới. (Điều này hơi
giống với nén LZW).
Các chuỗi lặp lại được tìm thấy bằng cách dùng bảng băm. Tất cả các chuỗi
đầu vào có chiều dài là 3 được chèn vào bảng băm. Chỉ số băm được tính cho 3 byte
tiếp theo. Nếu chuỗi móc xích cho chỉ số này khác rỗng, thì tất cả các chuỗi trong
móc xích được so sánh với chuỗi hiện tại, và đoạn giống nhau dài nhất sẽ được
chọn.
Các chuỗi móc xích được tìm kiếm bắt đầu với các chuỗi gần nhất, có các
khoảng cách nhỏ và do đó thuận tiện cho nén Huffman. Các chuỗi móc xích được
liên kết đơn. Không có thao tác xóa khỏi chuỗi móc xích, thuật toán chỉ đơn giản
loại bỏ các chuỗi giống nhau đã quá cũ.
Để tránh trường hợp xấu nhất, các chuỗi móc xích rất dài được cắt một cách
tùy ý tại 1 độ dài nào đó được xác định bởi 1 tùy chọn trong lúc thực thi (các tham
số chỉ mức độ nén trong hàm deflateInit). Vì vậy, deflate() không phải luôn tìm thấy
các đoạn giống nhau dài nhất có thể có nhưng nhìn chung, là tìm thấy các đoạn
116
giống nhau có độ dài vừa đủ.
Phụ lục C . Chuẩn nén Gzip
Hàm deflate() cũng làm trì hoãn việc lựa chọn các đoạn giống nhau với 1 cơ
chế “tìm kiếm tham lam”. Sau khi, 1 đoạn giống nhau có chiều dài là N được tìm
thấy, hàm deflate() sẽ tiếp tục tìm đoạn giống nhau dài hơn từ byte tiếp theo. Nếu có
một đoạn dài hơn được tìm thấy, thì đoạn tìm thấy trước đó sẽ bị cắt bỏ chỉ còn 1
byte và quá trình tìm kiếm tham lam lại được tiếp tục. Ngược lại, đoạn giống nhau
ban đầu sẽ được giữ lại và việc tìm kiếm đoạn giống nhau tiếp theo chỉ tiến hành
trong N bước nữa.
Việc tìm kiếm tham lam phụ thuộc vào tham số lúc thực thi qui định. Nếu đoạn
giống nhau hiện tại đã đủ dài thì hàm deflate() sẽ giảm việc tìm kiếm đoạn dài hơn,
vì thế tăng tốc độ nén. Nếu tỉ lệ nén quan trọng hơn tốc độ thì hàm deflate() cố gắng
hoàn thành việc tìm kiếm thứ 2 ngay cả khi đoạn giống nhau đầu tiên đã dủ dài.
Cơ chế tìm kiếm tham lam không được thực hiện ở mức độ nén nhanh nhất
(tham số chỉ mức độ có giá trị từ 1 đến 3). Với các mức độ nén nhanh này, các
chuỗi mới được chèn vào bảng băm chỉ khi nào không có đoạn giống nhau nào được
tìm thấy hay khi đoạn giống nhau không quá dài. Điều này làm giảm tỉ lệ nén nhưng
117
tiết kiệm được thời gian do cả thao tác chèn và tìm kiếm đều ít hơn.
Tài liệu tham khảo
Tài liệu tham khảo
[1] T.S. Dương Anh Đức - Th.S. Trần Hạnh Nhi, “Nhập môn Cấu trúc dữ
liệu và thuật toán”
[2] Lê Thụy Anh, “Nhúng ứng dụng GIS vào thiết bị PDA”, luận án Thạc sĩ
Tin học, 2003
[3] Võ Sỹ Nam - Đỗ Lệnh Hùng Sơn, “Xây dựng một ứng dụng bản đồ trên
máy pocket pc 2002 (Windows CE 3.0) cho phép hiển thị một bản đồ điện
tử và cung cấp một số chức năng tìm kiếm thông tin”, Luận văn cử nhân
tin học, Đại học Khoa học Tự nhiên Tp.Hồ Chí Minh, 2003
[4] Paul Yao - David Durant, “Programming the .NET Compact Framework
in C#”
[5] Microsoft, Microsoft Developer Network, 10-2003
[6] Jason P.Nottingham - Steven Makofsky - Andrew Tucker, “Teach
Yourself Windows CE Programming in 24 hours”, SAMS - 2001
[7] “GZIP file format specification version 4.3” (RFC1952)
[8] “DEFLATE Compressed Data Format Specification” (RFC1951)
[9] Dictzip – Linux Man Page
Website:
[10] http://www.paulyao.com/cfbook
[11] http://www.pocketpcdn.com
[12] http://www.opennetcf.org
[13] http://www.cegadgets.com/wincedevfaq
118
[14] http://codeproject.com/netcf
Tài liệu tham khảo
[15] http://msdn.microsoft.com/mobility/default.aspx
[16] http://www.microsoft.com/windows/embedded
[17] http://www.gzip.org
[18] http://www.zlib.net
119
[19] http://www.speech.cs.cmu.edsu/flite/

