Giải thích:
− Web browser: là chƣơng trình duyệt web mà ngƣời quản trị sử dụng để thao tác với ứng dụng đặt tại máy chủ, thực hiện các thao tác quản lý phần mềm, khách hàng hay tƣơng tác với các tác tử di động.
− Cơ sở dữ liệu: gồm có một cơ sở dữ liệu tại máy chủ web để quản lý thông tin tập trung và nhiều cơ sở dữ liệu phân tán tại máy tính của khách hàng để các tác tử có thể truy xuất, cập nhật thông tin.
− Web server / Aglet: là máy chủ web và môi trƣờng thực thi tác tử. Nhận yêu cầu từ trình duyệt web để xử lý, đồng thời cũng là môi trƣờng để tác tử hoạt động, qua đó tƣơng tác, ra nhiệm vụ với các tác tử đang thực thi tại máy tính khách hàng.
− Môi trƣờng thực thi: là môi trƣờng nền Java để các tác tử có thể hoạt động tại máy tính khách hàng.
− Tác tử di động: là chƣơng trình thực hiện nhiệm vụ nhận phần mềm từ máy chủ và cập nhật vào máy tính khách hàng. Nó có thể di chuyển giữa các máy tính của khách hàng và chủ động thực hiện nhiệm vụ.
3.3.2. Thiết kế chức năng
3.3.2.1. Mô tả tổng quan các tình huống sử dụng
Người quản trị
Quản lý phần mềm
Tác tử di động Quản lý thông tin khách
hàng
Cập nhật phần mềm Quản lý tác tử di động
Hình 3.4. Tổng quan các tình huống sử dụng Giải thích:
− Nhóm tình huống “Quản lý phần mềm”: bao gồm các tình huống mà ngƣời quản trị tƣơng tác với hệ thống để thực hiện các chức năng thêm mới, xóa, sửa thông tin và cập nhật phiên bản mới phần mềm.
− Nhóm tình huống “Quản lý thông tin khách hàng”: bao gồm các tình huống mà ngƣời quản trị tƣơng tác với hệ thống để thực hiện các chức năng thêm mới khách hàng sử dụng phần mềm.
− Nhóm tình huống “Quản lý tác tử di động”: bao gồm các tình huống mà ngƣời quản trị tƣơng tác với hệ thống để khởi tạo tác tử, giao nhiệm vụ hoặc hủy các tác tử di động.
− Nhóm tình huống “Cập nhật phần mềm”: bao gồm các tình huống mà tác tử di động nhận lệnh hoặc tự quyết định cập nhật phần mềm tại máy tính của khách hàng.
3.3.2.2. Thiết kế chi tiết các tình huống sử dụng
− Tình huống sử dụng “Quản lý phần mềm”:
Thêm mới phần mềm
Người quản trị
Sửa thông tin phần mềm Xóa phần mềm Cập nhật phiên bản mới phần mềm «uses» «uses» «uses» «uses» Hình 3.5. Tình huống sử dụng “Quản lý phần mềm” Các tình huống cụ thể nhƣ sau:
Thêm mới phần mềm: là tình huống ngƣời quản trị thêm mới phần mềm vào danh sách quản lý, cho phép nhập mới các thông tin về phần mềm cũng nhƣ file cài đặt.
Sửa thông tin phần mềm: là tình huống ngƣời quản trị sửa thông tin về một phần mềm đang quản lý.
Xóa phần mềm: là tình huống ngƣời quản trị xóa bỏ phần mềm không quản lý nữa.
Cập nhật phiên bản mới phần mềm: là tình huống ngƣời quản trị cập nhật file cài đặt mới, thông tin về phiên bản mới của phần mềm.
− Tình huống sử dụng “Quản lý thông tin khách hàng”:
Thêm mới khách hàng
Người quản trị «uses»
Hình 3.6. Tình huống sử dụng “Quản lý thông tin khách hàng”
Đây là tình huống ngƣời quản trị thêm mới một khách hàng sử dụng phần mềm, cho phép cập nhật các thông tin quản lý về khách hàng thêm mới.
− Tình huống sử dụng “Quản lý tác tử di động”:
Khởi tạo tác tử di động
Người quản trị
Hủy tác tử di động
Đưa ra yêu cầu cập nhật phần mềm cho tác tử di động «uses» «uses» «uses» Hình 3.7. Tình huống sử dụng “Quản lý tác tử di động” Tình huống cụ thể nhƣ sau:
Khởi tạo tác tử di động: là tình huống mà ngƣời quản trị tạo mới tác tử để chuẩn bị thực hiện nhiệm vụ cập nhật phần mềm.
Hủy tác tử di động: là tình huống mà ngƣời quản trị hủy, kết thúc vòng đời của một tác tử di động.
Đƣa ra yêu cầu cập nhật phần mềm cho tác tử: là tình huống mà ngƣời quản trị có thể yêu cầu một số tác tử thực hiện việc cập nhật phần mềm theo một số tiêu chí. − Tình huống sử dụng “Cập nhật phần mềm”: Tác tử di động Cập nhật phần mềm Di chuyển Tạo mới tác tử khác Tự hủy tác tử «uses» «uses» «uses» «uses» Cập nhật thông tin khách hàng «uses» Hình 3.8. Tình huống sử dụng “Cập nhật phần mềm” Tình huống cụ thể nhƣ sau: Cập nhật phần mềm: là tình huống mà tác tử di động thực hiện nhiệm vụ cập nhật phần mềm tại máy tính của khách hàng.
Cập nhật thông tin khách hàng: là tình huống mà tác tử lấy thông tin của khách hàng tại máy tính của họ và cập nhật về máy chủ. Di chuyển: là tình huống mà tác tử tự động di chuyển giữa các
máy tính của khách hàng.
Tự hủy tác tử: là tình huống mà tác tử tự hủy khi đã hoàn thành nhiệm vụ.
3.3.3. Thiết kế cơ sở dữ liệu 3.3.3.1. Thiết kế chung 3.3.3.1. Thiết kế chung
Cơ sở dữ liệu của ứng dụng đƣợc chia thành 3 phần chính: - Dữ liệu về phần mềm
- Dữ liệu về khách hàng quản lý tập trung - Dữ liệu về tác tử di động
- Dữ liệu về phần mềm, khách hàng quản lý phân tán
3.3.3.2. Danh sách các bảng
− Bảng phan_mem: Lƣu trữ thông tin về phần mềm, các phiên bản và file cài đặt.
− Bảng khach_hang: Lƣu trữ thông tin về khách hàng
− Bảng khach_hang_phan_mem: Lƣu trữ thông tin về phiên bản phần mềm đƣợc cài đặt cho khách hàng, các thông tin khác nhƣ lần cuối cài đặt, tên máy, địa chỉ ip, tình trạng hiện tại…
− Bảng tac_tu_di_dong: Lƣu trữ thông tin về các tác tử di động đang hoạt động tại máy chủ và máy tính của khách hàng.
3.3.3.3. Quan hệ giữa các bảng
Hình 3.9. Quan hệ giữa các bảng trong cơ sở dữ liệu
3.3.3.4. Mô tả các bảng
- Bảng phan_mem:
Thuộc tính Kiểu dữ liệu Null Mô tả
phan_mem_id int No Là khóa chính của bảng
ten_phan_mem nvarchar(50) Yes Chứa tên phần mềm ma_phan_mem nvarchar(50) Yes Chứa mã phần mềm
phien_ban nvarchar(50) Yes Chứa phiên bản hiện tại của phần mềm
phiên bản mới - Bảng khach_hang:
Thuộc tính Kiểu dữ liệu Null Mô tả
khach_hang_id Int No Là khóa chính của bảng, chứa mã khách hàng
ten_khach_hang nvarchar(50) Yes Chứa tên khách hàng dia_chi nvarchar(50) Yes Chứa địa chỉ khách hàng
- Bảng khach_hang_phan_mem:
Thuộc tính Kiểu dữ liệu Null Mô tả
khach_hang_phan_mem_id Int No Là khóa chính của bảng
khach_hang_id Int Yes Chứa khóa ngoại, là mã
khách hàng
phan_mem_id Int Yes Chứa khóa ngoại là mã
sản phẩm
phien_ban_hien_tai nvarchar(50) Yes Chứa phiên bản hiện tại của phần mềm
may_tinh_cai_dat nvarchar(50) Yes Chứa tên máy tính khách hàng sử dụng để cài đặt phần mềm
ip_may_cai_dat nvarchar(50) Chứa địa chỉ ip của máy tính khách hàng cài đặt phần mềm
tinh_trang nvarchar(50) Chứa thông tin về tình
trạng của phần mềm đang vận hành tại máy tính khách hàng
- Bảng tac_tu_di_dong:
Thuộc tính Kiểu dữ liệu Null Mô tả
tac_tu_di_dong_id Int No Là khóa chính của bảng dinh_danh_tac_tu Int Yes Chứa định danh của tác tử tinh_trang nvarchar(50) Yes Chứa tình trạng của tác tử khach_hang_id Int Yes Chứa mã khách hàng mà tác tử
đang làm việc cùng
nhiem_vu Int Yes Chứa nhiệm vụ mà ngƣời quản
trị giao cho tác tử thực hiện với khách hàng
3.5. Kết quả đạt đƣợc
Kết quả sau khi lập trình theo thiết kế, ứng dụng phân tán cập nhật phần mềm đƣợc cài đặt sử dụng thử nghiệm. Phân hệ quản lý của ngƣời quản trị đƣợc cài đặt trên máy chủ có địa chỉ tên miền riêng. Các tác tử di động đƣợc thực thi, vận hành tại máy tính trạm có thể có kết nối internet hoặc không. Quá trình thử nghiệm ứng dụng vận hành tốt, đáp ứng yêu cầu đặt ra.
3.5.1. Mã nguồn một số module phần mềm
Module quản lý danh sách sản phẩm phần mềm: <table border="1">
<tr>
<td width="200px">Tên khách hàng</td> <td width="120px">Tên máy cài đặt</td> <td width="120px">Phiên bản hiện tại</td> <td width="120px">IP máy cài đặt</td> <td width="120px">Cập nhật lần cuối</td> <td width="120px">Tình trạng</td>
<?php
$software_id = filter_var($_POST["software_id"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH);
$sql="select * from client inner join client_software on client.client_id = client_software.client_id where software_id = ".$software_id ." and is_current = 1";
$conn = new mysqli($server,$username,$password,$databasename); mysqli_set_charset($conn, 'utf8');
if ($conn->connect_error){
die("connect database failed...".$conn->connect_error); } $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "<tr>"; echo "<td>".$row['client_name']."</td>"; echo "<td>".$row['client_machine']."</td>"; echo "<td>".$row['current_version']."</td>"; echo "<td>".$row['ip_installed']."</td>"; $date=date_create($row['time_installed']);
echo "<td>".date_format($date, 'd-m-Y H:i:s')."</td>"; echo "<td>".$row['status']."</td>"; echo "</tr>"; } } $conn->close();
?> </table>
Module kiểm tra phiên bản phần mềm:
url2request = url + getCurrentVersion();
WebRequest request = WebRequest.Create(url2request); WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); if (responseFromServer.Equals("1")) { updatesoftware(); } timer1.Interval = 30000; timer1.Start();
Module thực hiện tải phần mềm:
string remoteUri = serverName+softwareName; string fileName = getCurrentSoftware();
if (File.Exists(fileName)) File.Delete(fileName); WebClient myWebClient = new WebClient();
myWebClient.DownloadFile(remoteUri, fileName);
3.5.2. Một số hình ảnh giao diện phần mềm
Hình 3.10. Giao diện trang web quản lý danh sách phần mềm − Hình ảnh giao diện cập nhật phiên bản mới cho phần mềm:
Hình 3.11. Hình ảnh giao diện cập nhật phiên bản phần mềm
− Hình ảnh tác tử di động tại máy tính của khách hàng phát hiện có phiên bản mới của phần mềm:
Hình 3.12. Hình ảnh tác tử di động tìm thấy phiên bản mới phần mềm − Hình ảnh tác tử di động thông báo đang download phiên bản mới nhất của phần mềm:
− Hình ảnh tác tử di động thông báo đang cập nhật phần mềm:
Hình 3.14. Hình ảnh tác tử di động thông báo đang cập nhật phần mềm − Hình ảnh tác tử di động thông báo đã cập nhật thành công phần mềm:
Hình 3.15. Hình ảnh tác tử di động thông báo đã cập nhật thành công − Hình ảnh tại máy chủ thông báo tác tử di động hoạt động tại máy tính của khách hàng đã tìm thấy phiên bản mới:
HÌnh 3.16. Hình ảnh tại máy chủ thông báo tác tử đã tìm thấy phiên bản mới phần mềm.
− Hình ảnh tại máy chủ thông báo tác tử di động hoạt động tại máy tính khách hàng đang download phần mềm:
Hình 3.17. Hình ảnh tại máy chủ thông báo tác tử di động đang download phần mềm.
− Hình ảnh tại máy chủ thông báo tác tử di động hoạt động tại máy tính khách hàng đang thực hiện nhiệm vụ cập nhật phần mềm:
Hình 3.18. Hình ảnh tại máy chủ thông báo tác tử di động đang cập nhật − Hình ảnh tại máy chủ thông báo tác tử di động đã thực hiện thành công nhiệm vụ:
Hình 3.19. Hình ảnh tại máy chủ thông báo tác tử di động đã cập nhật thành công phiên bản mới phần mềm.
3.5.3. Đánh giá, so sánh với các phƣơng pháp khác
Kết quả của luận văn đã xây dựng đƣợc phần mềm cơ bản đáp ứng đƣợc các yêu cầu của bài toán phân tán cập nhật phần mềm. Phần mềm đã tự động nhận biết đƣợc có phiên bản mới của nhà cung cấp, đã tự động tải về và thực hiện cài đặt đồng thời cũng đồng bộ tình trạng cài đặt, cập nhật phần mềm lên máy chủ để ngƣời quản trị hệ thống có thể nhận biết, quản lý.
So sánh với các phƣơng pháp cập nhật truyền thống khác:
− Sản phẩm của luận văn có thể cập nhật từng phần của phần mềm.
− Sản phẩm của luận văn có khả năng mang phần mềm di chuyển trong mạng nội bộ và thực hiện cập nhật ngay cả khi các máy không đƣợc nối mạng internet.
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
Kết quả thực hiện luận văn đã tìm hiểu đƣợc các vấn đề về tác tử, tác tử di động, đặc điểm và thành phần của tác tử, sự phối hợp của tác tử trong hệ đa tác tử để xử lý các vấn đề trong thực tế. Tác tử với những ƣu điểm vƣợt trội về khả năng tự trị, tự chủ hành động mà không cần có sự can thiệp trực tiếp của con ngƣời.
Dựa vào kết quả nghiên cứu lý thuyết, đề tài đã xây dựng đƣợc ứng dụng phân tán cập nhật phần mềm với giao diện thân thiện, dễ sử dụng, các chức năng cơ bản đáp ứng đƣợc yêu cầu.
Tuy nhiên, do năng lực và thời gian làm luận văn có hạn nên sản phẩm vẫn còn một số hạn chế nhƣ chức năng cập nhật phần mềm còn chậm, chƣa phát huy hết khả năng của tác tử, tính di động chƣa thật sự cao.
Hƣớng phát triển của đề tài là khắc phục các hạn chế chƣa đạt đƣợc, từ đó xây dựng một ứng dụng hoàn chỉnh để có thể thƣơng mại hóa.
TÀI LIỆU THAM KHẢO
1. A. Fuggetta, G. Vigna, (1998), “Understanding Code Mobility”, IEEE Transactions on Software Engineering, 24(5),342-361.
2. D. B. Lange, M. Oshima (1998), Programming and Deploying Java Mobile Agents with Aglets, Addison-Wesley, USA.
3. Fabio Bellifemine, Giovanni Caire, Dominic Greenwood, (2007),
Developing Multi-Agent Systems with JADE, John Wiley and Sons Ltd.
4. Gerhard Weiss, (1999), “ Multiagent Systems: A Modern Approach to Distributed Artificial Intelligence”, The MIT Press.
5. N. R. Jennings, K. Sycara, M. Wooldridge. (1998), A Roadmap of Agent Research and Development, Journal of Autonomous Agents and Multi-Agent Systems, pp. 275-306.
6. http://en.wikipedia.org/wiki/Client-server 7. http://en.wikipedia.org/wiki/Software_agent