KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Mạng và truyền thông máy tính
HÀ NỘI - 2010 ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Lê Xuân Chính Tóm Tắt
Việc hướng dẫn du lịch ngày nay hết sức đa dạng, chúng ta có thể được hướng
dẫn thông qua internet, hướng dẫn viên, sách báo…Nhưng tất cả các cách trên đều có
một hạn chế đó là tính độc lập, như internet thì chúng ta luôn phải cần một chiếc máy
tính kết nối mạng, còn hướng dẫn viên thì ta luôn phải đi theo sát họ…Vì vậy việc
hướng dẫn du lịch qua mobile là một giải pháp tốt. Ứng dụng “Hướng dẫn du lịch qua
mobile theo ngữ cảnh” được viết lên nhằm mục đích hướng dẫn khách tham quan thu
được thông tin một cách chính xác nhất về địa điểm mà họ quan tâm. Ứng dụng tổ
chức dữ liệu dưới dạng cây, tùy vào ngữ cảnh mà người dùng đưa vào sẽ quyết định độ
chi tiết của thông tin trả về.
Sau hơn 5 tháng nghiên cứu dưới sự hướng dẫn của thầy ThS Nguyễn Việt Anh
và sự giúp đỡ của các bạn trong nhóm khóa luận. Bước đầu khóa luận đã thu được
những kết quả nhất định.
- Áp dụng xử lý dữ liệu theo ngữ cảnh vào bài toán du lịch.
- Tìm hiểu về J2ME, Webservice.
- Xây dựng thành công chương trình “Hướng dẫn du lịch qua mobile theo ngữ
cảnh”. Ứng dụng đã đáp ứng được những chức năng cần thiết nhất trong việc
hướng dẫn du lịch qua mobile theo ngữ cảnh.
Chương 3. J2ME 26
3.1. Giới Thiệu 26
3.2. Những phiên bản Java 26
3.3. Tại sao dùng J2ME? 27
3.3.1. Configurations (Cấu hình) 27
3.3.2. Profile 28
3.4. Cấu hình CONFIGURATION và PROFILE được phát triển như thế nào? 29
3.4.1. Máy ảo Java (JVM – Java Virtual Machines) 29
3.4.2. KVM và CLDC liên quan như thế nào? 29 3.5. Tính tương thích giữa những phiên bản Java 30
3.5.1. Ứng dụng J2SE sẽ tiếp tục chạy trên môi trường J2ME? 31
3.5.2. Những ứng dụng J2ME vẫn chạy trên J2SE? 31
3.6. Kết chương 31
Chương 4. Web service 32
4.1. Định nghĩa 32
4.2. Thành phần cơ bản của Web service 32
4.3. Hoạt động của Web service 32
4.3.1. SOAP 33
4.3.2. WSDL (Web Service Definition Language) 33
4.3.3. UDDI(Universal Description, Discovery, and Integration) 33
4.5. Các thành phần chính của Web Service 35
4.5.1. SOAP (Simple Object Access Protocol) 35
4.6. WSDL (Web Service Definition Language) 35
4.6.1. Cấu trúc file WSDL 37
Chương 5. Kết luận 38
5.1. Kết luận 38
5.1.1. Các kết quả đạt được 38
5.1.2. Các vấn đề chưa giải quyết được 38
Luận văn đã hoàn thành và có được kết quả nhất định, tuy nhiện vẫn không thể
tránh khỏi những sai sót. Rất mong sự cảm thông và đóng góp ý kiến nhiệt tình từ thầy
cô và các bạn.
Hà Nội, tháng 5 năm 2010
Lê Xuân Chính
1
Lời nói đầu
Mạng điện thoại di động xuất hiện tại Việt Nam từ đầu những năm 1990, và theo
thời gian số lượng nhà cung cấp dịch vụ và số lượng thuê bao tăng lên hàng ngày. Giờ
đây chiếc điện thoại di động không chỉ đơn thuần là gọi, nhắn tin và nghe mà nó còn là
một thiết bị giải trí đa phương tiện, tra cứu thông tin rất tiện lợi Việc xây dựng các
ứng dụng trên điện thoại đi động là một lĩnh vực mới, hứa hẹn nhiều thú vị và là một
xu thế tất yếu hiện nay. Các dịch vụ giá trị gia tăng trên điện thoại di động có thể nói là
một mảnh đất màu mỡ cho các doanh nghiệp cung cấp dịch vụ di động.
Ngày nay có hai hướng phát triển ứng dụng trên thiết bị di động chính là sử dụng
ngôn ngữ C++ trên nền hệ điều hành Symbian và J2ME. Các ứng dụng viết trên nền
Symbian có ưu thế truy cập trực tiếp các tài nguyên của điện thoại di động cũng như
hỗ trợ hệ thống tập tin, thư mục…Nhưng việc phát triển trên nền Symbian tương đối
phức tạp và dung lượng ứng dụng khá lớn. Có thể nói J2ME là một đối thủ của
Symbian API, J2ME có ưu điểm là nhỏ gọn, tiện dụng, hỗ trợ hầu hết các dòng điện
thoại hiện nay, kể cả điện thoại sử dụng hệ điều hành Symbian. J2ME không chỉ là
ngôn ngữ dùng để viết cho các ứng dụng di động, mà nó còn có thể lập trình cho các
thiết bị gia dụng, thẻ tín dụng điện tử, và các ứng dụng thông minh khác.
thêm video, cụ thể ở đây là ứng dụng sử dụng công nghệ Video Streaming, hiện còn
rất mới, đây là hướng đi hứa hẹn nhiều thành công.
Tuy đã đầu tư khá nhiều thời gian và công sức vào luận văn, nhưng không thể
tránh khỏi những sai sót, tôi rất mong nhận được những đóng góp và phản hồi từ thầy
cô và các bạn! Xin chân thành cảm ơn!
Lê Xuân Chính
3
Mục tiêu của đề tài
- Tìm hiểu ngôn ngữ lập trình J2ME.
- Tìm hiểu Web service.
- Tìm hiểu vể “xử lý dữ liệu theo ngữ cảnh”.
- Xây dựng ứng dụng demo “Hướng dẫn du lịch qua mobile theo ngữ cảnh”.
Chương 1. Xử lý dữ liệu theo ngữ cảnh trên mobile
1.1. Giới thiệu
Những khách du lịch bụi thường phải dựa vào bản đồ hoặc dựa vào những biển
1.3. Hướng dẫn du lịch theo ngữ cảnh
Một khách du lịch luôn muốn khám phá ngay địa điểm họ sắp tới. Họ có một hồ
sơ về sở thích, điểm xuất phát và kết thúc và một khoảng thời gian cho tour du lịch.
Những thông tin này cần được nạp vào hệ thống. Ngữ cảnh ở đây là tất cả những thông
tin hiện thời về một địa điểm nhất định, một khoảng thời gian nhất định. Thách thức
đặt ra là phải đưa ra một tour tối ưu dựa trên những thông tin cá nhân và ngữ cảnh.
Trong suốt quá trình tham quan, khách du lịch có thể được hướng dẫn để đi tới tổ hợp
các tòa nhà, địa điểm cần đến(Tour Building Block – TBB).
Khi khách du lịch bắt đầu chuyến du lịch, DTG có thể đo được tốc độ di chuyển
và cập nhật những thông tin này để có thể tính toán, sắp xếp lại tour du lịch. Ngay khi
khách du lịch tới một TBB, DTG có thể đưa ra thông tin giới thiệu phù hợp với hoàn
cảnh hiện tại. Một số khách du lịch có thể quyết định khám phá TBB bằng cách nhiều
cách, ví dụ như đi bộ, hoặc xem lướt qua… Trong trường hợp này, những thông tin
thêm phù hợp cũng sẽ được cung cấp. Ngay khi khách du lịch rời khỏi TBB, DTG sẽ
ngừng cung cấp thông tin về TBB này và nạp lại quá trình điều hướng, có thể sang
TBB tiếp theo. Trong trường hợp du khách dừng chân lại lâu hơn dự kiến ban đầu thì
thời gian còn lại phải được tính toán lại.
Trên đường tới TBB tiếp theo, du khách có thể sẽ bị phân tán bởi một điểm
tham quan khác hoặc đơn giản là 1 cửa hàng. Lúc này DTG sẽ tạm dừng những gợi ý
điều hướng và cung cấp những thông tin về bối cảnh hiện tại nếu có thể. Trong trường
hợp này, DTG sẽ phải chờ cho tới khi du khách rời khỏi điểm hiện tại và tính toán lại
thời gian.
1.4. Các chương trình liên quan
Tour Guides từ lâu đã trở thành 1 chủ đề rất quan trọng trong hoạt động nghiên
cứu. Cũng có nhiều chương trình được viết lên nhằm mục đích hướng dẫn theo ngữ
cảnh, các chương trình đều có đặc điểm riêng của nó nhưng đều có những hạn chế nhất
định, chỉ phục vụ cho những yêu cầu đặc biệt. Những dự án quan trọng sau đây cũng
xử lý những vấn đề tương tự DTG.
5
hướng đến là tạo ra một tour du lịch mang tính cá nhân hóa trong thời gian thực. Bên
cạnh đó, nó cũng chú trọng đến những bối cảnh thực tại như thời gian đóng/mở cửa
6
bằng cách luôn cập nhật thông tin qua web service. Những thách thức mà DTG cần
giải quyết là:
Thu thập những thông tin về sở thích cá nhân của khách du lịch để tạo 1
hồ sơ hoàn chỉnh.
Xếp hạng của TBBs(danh sách các địa điểm mà ta sẽ thăm) bằng cách
kết hợp ngữ nghĩa.
Đưa ra 1 tour du lịch trong thời gian sớm nhất có thể.
Nhận biết ngữ cảnh, môi trường.
Giám sát tour và điều hướng tour phù hợp.
1.5. Cấu trúc DTG
Mỗi địa điểm, giống như một thành phần có thể có của TBB, chúng là mô hình
ngữ nghĩa của một nhà cung cấp nội dung sử dụng Authoring tool DTG. Mỗi TBB sẽ
có một WS(Web Service) riêng của nó. Một dịch vụ được cung cấp giống như là nhà
hàng thì sẽ nằm trong hệ thống các các địa điểm nhà hàng và được quản lý bởi một
WS. WS sẽ cung cấp các mô hình ngữ nghĩa, các thông tin hiện thời như là giờ mở
cửa, đóng cửa, hình thức giao dịch của cửa hàng… Các WS c ủa các TBB sẽ được đăng
ký tại UDDI(Universal Description, Discovery, and Integration). Máy chủ DTG sẽ
thực hiện thuật toán phù hợp theo ngữ nghĩa để xếp hạng các điểm tham quan cho một
khách du lịch cụ thể.
Các thiết bị di động sẽ xác định được vị trí của nó, nếu ở trong thành phố thì sẽ
thông qua một hệ thống định vị toàn cầu GPS hoặc bên trong các tòa nhà như là bảo
tàng thì sẽ thông qua mạng WLAN, lưới hồng ngoại hoặc RFIDs.
7 Hình 1.1: Phát hiện đựa trên ngữ cảnh, môi trường
Khoảng thời gian sẵn có, các tour du lịch sẽ khác nhau về độ dài.
Vị trí hiện tại, điểm bắt đầu và điểm cuối là khác nhau.
Thời gian hiện tại(ngày hoặc mùa) . Ví dụ như thời gian đóng mở cửa
của các nhà hàng hoặc triển lãm.
Sở thích cá nhân. Các điểm thăm quan lựa chọn sẽ được thay đổi cho phù
hợp. Ngoài ra các DTG sẽ luôn giám sát các tour du lịch, bất kỳ sự thay
đổi về tốc dộ di chuyển thì DTG sẽ điều chỉnh thích hợp để du khách đến
được nơi đúng giờ.
Tốc dộ di chuyển và thời gian cho một tour sẽ đưa ra các chú ý về vấn đề
thời gian.
Hướng đi của du khách tại vị trí hiện tại có thể được thể hiện bằng các
hình ảnh trực quan trên màn hình điện thoại, và các thông tin phù hợp về
vị trí đó.
1.7. Kết luận
DTG sử dụng công nghệ tiên tiến để tạo ra các tour du lịch theo ngữ cảnh. Độc
lập với vị trí và thời gian, xác định thông tin cần thiết bằng cách xác định và truy vấn
đến các web service có sẵn. Nó hỗ trợ khách du lịch bằng cách đưa ra các dướng dẫn
chuyển hướng và cung cấp thông tin đúng lúc, đúng chỗ. Bất kỳ ảnh hưởng nào, hay
quyết định tự phát của khách du lịch sẽ được phản hồi về server.
9
Chương 2. Ứng dụng “hướng dẫn du lịch qua
mobile theo ngữ cảnh”
Mấy năm gần đây việc phát triển các ứng dụng trên điện thoại di động đã trở lên
phổ biến. Sự gia tăng về dung lượng bộ nhớ và tốc độ xử lý trên điện thoại đi động cho
Thời gian: Một ngữ cảnh hết sức quan trọng, nó là ngữ cảnh chính của chương
trình. Đi du lịch thì vấn đề là hết sức quan trọng và thời gian cũng là một ngữ
cảnh luôn thay đổi, vì vậy việc thích ứng với sự thay đổi về thời gian để đưa ra
một tour du lịch thích ứng là cần thiết.
Font: Đối tượng du lịch là rất da dạng trẻ, già… Ngoài chất lượng của thông tin
hướng dẫn thì vấn đề hiển thị cũng rất quan trọng, góp phần quan trọng vào sự
thân thiện của chương trình với người dùng. Không có gì khó chịu hơn là khi ta
mắt kém mà nhìn vào màn hình với những dòng chữ nhỏ, hay màn hình hiển thị
tương đối nhỏ mà chữ thì to choáng hết màn hình.
Profile: Đây là thông tin về người sử dụng, được lưu trong cơ sở dữ liệu trên
server. Để sử dụng chương trình thì người dùng phải đăng nhập vào hệ thống,
trong đó những thông tin được lưu trữ như là tên, tuổi, giới tính…Những yếu tố
này cũng là một thành phần ngữ cảnh của chương trình.
2.2. Mô hình kết nối
11 Hình 2.1: Mô hình kết nối
• Ứng dụng viết trên điện thoại di động sử dụng ngôn ngữ J2ME.
• Web server sử dụng JSP.
• Cơ sở dữ liệu sử dụng MySQL.
Ứng dụng viết trên điện thoại đóng vai trò là 1 client giao tiếp với server thông
gia GPRS được cài đặt trên điện thoại thông qua giao thức HTTP. Dựa vào các
request/response từ phía client thì server sẽ truy vấn đến cơ sở dữ liệu MySQL thông
qua các store procedures.
Khi người dùng chạy ứng dụng trên, và tiến hành đăng nhập vào chương trình,
khi người dùng có một thao tác bất kỳ trên ứng dụng và gửi 1 request đến server dưới
varchar
Mã đăng nhập chương trình của người
dùng
Khóa chính
password
varchar
Mật khẩu dùng để đăng nhập chương
trình
name
varchar
Họ tên đầy đủ của người dùng
age
int
Tuổi của người dùng
Sex
int
Giới tính của người dùng(1=Nam,
0=Nữ) Hình 2.2: Bảng user_name
Info: Bảng chứa thông tin về tất cả các địa điểm, địa danh có trong cơ sở dữ liệu.
Tên
Kiểu
Nội dung
Log: bảng chứa profile của người dùng.
Tên
Kiểu
Nội dung
Thuộc tính
id
varchar
Mã đăng nhập chương trình của người
dùng
Khóa chính
date
varchar
Ngày tháng của lần đăng nhập gần
nhất
route
varchar
Dấu vết lộ trình tham quan người
dùng
font
varchar
Font chữ của người dùng lựa chọn
time
int
Thời gian mà người dùng có thể thăm
quan
Khóa ngoài
getInfoID(String infoID): lấy ID của một thông tin.
getChildID(String infoID): lấy ID của một địa điểm con.
getFather(String infoID): trả về ID của địa điểm cha
getSize(String infoID): trả về số lượng các địa danh ở một mức thông tin
nào đó.
2.5. Cài đặt thuật toán
2.5.1. Các khái niệm cơ bản về cây
Chúng ta có thể xác định khái niệm cây bằng hai cách: đệ quy và không đệ quy.
Trước hết chúng ta đưa ra định nghĩa cây thông qua các khái niệm trong đồ thị định
hướng. Một ví dụ điển hình về cây là tập hợp các thành viên trong một dòng họ với
quan hệ cha-con. Trừ ông tổ của dòng họ này, mỗi một người trong dòng họ là con của
một người cha nào đó trong dòng họ. Biểu diễn dòng họ dưới dạng định hướng: quan
hệ cha-con được biểu diễn bởi các cung của đồ thị, nếu A là cha của B, thì trong đồ thi
có cung đi từ đỉnh A tới đỉnh B. Xem xét các đặc điểm của đồ thị định hướng này,
chúng ta có định nghĩa cây như sau:
Cây là một đồ thị định hướng thỏa mãn các tính chất sau:
Có một đỉnh đặc biệt gọi là gốc cây.
Mỗi đỉnh C bất kỳ không phải là gốc, tồn tại duy nhất một đỉnh P có
cung đi từ P đến C. Đỉnh P được gọi là cha của đỉnh C, và C là con của
P.
Có đường đi duy nhất từ gốc tới mỗi đỉnh của cây.
15 Hình 2.6
Một số thuật ngữ hay dùng liên quan đến cây.
Mở rộng của quan hệ cha-con. Là quan hệ tổ tiên-con cháu. Trong cây
nếu có đường đi từ đỉnh A đến đỉnh B thì A được gọi là tổ tiên của B,
hay B là con cháu của A. Chẳng hạn, gốc cây là tổ tiên của các đỉnh còn
trong đỉnh đó và một mảng child các con trỏ trỏ tới các đỉnh con. Giả sử, mỗi đỉnh chỉ
có nhiều nhất K đỉnh con, khi đó ta có thể mô tả mỗi đỉnh bởi cấu trúc sau:
const int K = 10;
template <class Item>
{
Item data;
Node* child [K];
};
Chúng ta có thể truy cập tới một đỉnh bất kỳ trong cây bằng cách đi theo các con
trỏ bắt đầu từ gốc cây. Vì vậy, ta cần có một con trỏ ngoài trỏ tới gốc cây, con trỏ root:
Node <Item>* root;
Hình 2.7: Cài đặt cây bởi mảng con trỏ.
A
B
D
C
E
F
G
root
17
Phương pháp 2 (chỉ ra con cả và em liền kề của mỗi đỉnh). Trong một cây, số
đỉnh con của các đỉnh có thể rất khác nhau. Trong trường hợp đó, nếu sử dụng mảng
con trỏ, sẽ lãng phí bộ nhớ. Thay vì sử dụng mảng con trỏ, ta chỉ sử dụng hai con trỏ:
con trỏ firstChild trỏ tới đỉnh con cả và con trỏ nextSibling trỏ tới em liền kề. Mỗi đỉnh
của cây được biểu diễn bởi cấu trúc sau:
từng địa danh và các địa điểm con của nó. Độ sâu của cây thông tin sẽ quyết định mức
độ chi tiết của thông tin, vì vậy việc chọn phương pháp triển khai cây thứ 2 là khả thi.
Hình 2.9: Ví dụ về một nhánh trong cây dữ liệu
Trên đây ta ví dụ một nhánh thông tin trong cơ sở dữ liệu của chương trình. Ở
đây “Lăng tẩm Huế ” là root của cây. Ta sẽ chọn “Lăng Tây Sơn” là nhánh để phát
triển.
Mũi tên màu xanh lam: là phương thức lấy về infoID các địa điểm cùng
mức.
Mũi tên màu đỏ: là phương thức lấy về infoID địa điểm con.
Mũi tên màu xanh lá cây: là phương thức lầy về infoID của địa điểm cha.
Cấu trúc một node.
19 Hình 2.10: Cấu trúc một node
infoID: ID của thông tin một địa điểm.
label: nhãn của thông tin.
image: ảnh đại diện của địa điểm.
content: nội dung thông tin về địa điểm đó.
brotherID: ID thông tin về địa điểm anh em cùng mức.
childID: ID thông tin về địa điểm con.