Ứng dụng hiện thực giao diện đa ngơn ngữ, với mong muốn đem lại sự tiện lợi nhất cho người sử dụng chương trình. Hiện nay ứng dụng đã hiện thực giao diện cho hai ngơn ngữ Anh và Việt.
Hình 3.1.7 Chức năng thay đổi ngơn ngữ thể hiện
3.2 Hiện thực ứng dụng
3.2.1 Xác định yêu cầu
Chương trình được hiện thực với mục đích minh họa cho quá trình đĩng gĩi nội dung theo SCORM. Do đĩ yêu cầu chính của ứng dụng là hiện thực chức năng đĩng gĩi nội dung theo chuẩn SCORM. Do gĩi nội dung SCORM được mơ tả bởi tập tin manifest được dùng để mơ tả cho cấu trúc và các thành phần của gĩi nội dung. Do đĩ chức năng chủ yếu của chương trình là sẽ tương tác với tập tin manifest. Các thao tác chủ yếu này bao gồm các chức năng như thêm các thành phần vào tập tin manifest, xĩa các thành phần ra khỏi tập tin manifest, và sửa các thuộc tính cho các thành phần.
Sau khi thao tác trên các thành phần manifest của gĩi nội dung thì phải thực hiện chức năng chính tiếp theo là đĩng gĩi nội dung đểđưa ra một gĩi nội dung theo chuẩn SCORM đã mơ tả. Theo chuẩn SCORM quy định gĩi nội dung được đĩng gĩi theo dạng tập tin nén (tập tin cĩ phần mở rộng là ZIP). Do đĩ cần phải hiện thực quá trình nén tập tin cho gĩi nội dung.
Trước những yêu cầu đặt ra và kết hợp với các đặc tả của chuẩn SCORM cho gĩi nội dung, việc hiện thực ứng dụng gặp phải những khĩ khăn cần phải khắc phục:
− Do cấu trúc tập tin manifest quy định cĩ một số thành phần cĩ cấu trúc thẻ khơng giới hạn số cấp lồng nhau nên việc quản lý và tương tác đối với các thành phần này rất khĩ khăn.
− Các thành phần của manifest cĩ số lượng thuộc tính và các thẻ thành phần khá nhiều do đĩ gây khĩ khăn cho việc lựa chọn phương pháp hiện thực giao diện phù hợp giúp người sử dụng cĩ thể dễ dàng tương tác với các thành phần này.
− Số lượng thẻ trong một gĩi nội dung bình thường là tương đối nhiều và đối tượng người dùng của chương trình cĩ thể là những giáo viên hay giảng viên là những người sử dụng cĩ cấu hình máy khơng cao, do đĩ vấn đề về hiệu năng chương trình cũng là một vấn đề cần được chú ý đến.
3.2.2 Thiết kế chương trình
Chương trình được thiết kế với các chức năng cơ bản như tạo gĩi nội dung hay mở
gĩi nội dung. Để tăng tính tiện dụng khi sử dụng chương trình, nên các chức năng như mở gĩi nội dung hay tạo mới gĩi nội dung được thiết kế theo dạng wizard step by step (từng bước một) để hỗ trợ cho người sử dụng. Nhằm tránh những sai sĩt cho những người sử dụng chương trình lần đầu hay chưa am hiểu vềứng dụng.
Về phần tạo mới gĩi nội dung: gĩi nội dung cĩ thểđược tạo mới bằng hai cách:
− Là một gĩi mới hồn tồn: chương trình sẽ tựđộng tạo ra một số tập tin cấu hình cần thiết cho gĩi nội dung (bao gồm tập tin imsmanifest.xml và một số
tập tin schema và DTD)
− Là một gĩi mới được tạo trên nền tài nguyên đã cĩ sẵn: tài nguyên ở đây cĩ thể là một thư mục đã chứa sẵn các tập tin tài nguyên cần dùng cho gĩi nội dung (như tập tin hình ảnh, âm thanh, trang web,v..v..) sau khi người dùng trỏ đến thư mục chứa tài nguyên, chương trình sẽ tự động copy tồn bộ các tài nguyên đang chứa trong thư mục vào gĩi nội dung và tựđộng tạo thêm một số
tập tin cần thiết cho gĩi nội dung. Nếu tài nguyên là một gĩi nội dung khác thì chương trình sẽ tựđộng giải nén tài nguyên vào gĩi nội dung và tựđộng tạo một số tập tin cần thiết.
Về phần mở gĩi nội dung:để mở một gĩi nội dung cũng cĩ thểđược mở bằng hai cách:
− Từ một gĩi nội dung: chương trình sẽ giải nén gĩi nội dung vào thư mục đã
được người dùng chỉđịnh rồi sau đĩ sẽ tiến hành thực hiện theo quy trình mở
gĩi bằng tập tin manifest.
− Từ một tập tin manifest: chương trình đọc các thơng tin từ tập tin imsmanifest.xml để thể hiện lên cấu trúc cây thành phần của manifest.
Về phần tương tác với các thành phần của manifest: được thiết kế bao gồm một treeview thể hiện các thành phần của mainifest (như metadata, resource, organization,v.v…), các form thuộc tính tương ứng với các thành phần của manifest được bố trí nằm về phía phải của cây thành phần manifest, giúp người sử
dụng dễ dàng đối chiếu qua lại, và một hệ thống menu ngữ cảnh tương ứng dành cho các chức năng như tạo mới và xĩa các thành phần. Khi người dùng tương tác với các thành phần thơng qua các form hay menu ngữ cảnh thì chương trình sẽ tự động sinh ra, xĩa hay sửa những thẻ XML tương ứng theo những thay đổi của người dùng.
Về phần thêm các tài nguyên vào gĩi nội dung: chương trình sẽ cĩ một hộp thoại hỗ trợ cho thao tác này của người dùng. Người dùng cĩ thể thêm tài nguyên vào gĩi nội dung bằng ba cách.
− Chỉ thêm vào một tập tin duy nhất: chương trình sẽ tự động sao chép tập tin này vào gĩi nội dung.
− Thêm vào gĩi nội dung là nội dung của cả một gĩi khác: chương trình sẽ tự động giải nén nội dung của gĩi nội dung nhập vào.
− Thêm vào gĩi nội dung là một thư mục: người dùng hồn tồn cĩ thể chỉđịnh số lượng tập tin hay thư mục con sẽ thêm vào, chứ khơng cần thiết sẽ thêm vào tồn bộ nội dung của thư mục.
Xem các tập tin tài nguyên: Khi thêm tài nguyên vào gĩi nội dung, người dùng cĩ thể thêm bất kỳ tập tin nào cĩ định dạng bất kỳ nào vào gĩi nội dung, do chuẩn SCORM khơng cĩ quy định về định dạng của tài nguyên, nên tất cả các tập tin
đều cĩ thể là tài nguyên. Do đĩ chương trình sẽ và chỉ hỗ trợ xem một số tập tin cĩ định dạng thơng dụng. Chương trình cĩ hỗ trợ chức năng xem nội dung của các tài nguyên. Chương trình sẽ hỗ trợ xem một số định dạng cơ bản như tập tin web, tập tin hình ảnh, âm thanh, các tập tin xml, schema, DTD, các tập tin text, các
định dạng thơng dụng như PDF, DOC, PPT,.., đối với các định dạng cịn lại chương trình sẽ nhờ sự trợ giúp của hệđiều hành trên máy tính người dùng trợ
giúp để mở các định dạng này.
View source code: nhằm tăng sự thuận tiện khi tương tác với các thành phần manifest, chương trình hỗ trợ một tab page cho phép xem trước source code của tập tin manifest trong suốt quá trình tương tác, những tương tác này chỉđược thể
hiện trong tab page này và sẽ khơng cĩ ảnh hưởng đến tập tin vật lý trên máy, những thay đổi này chỉđược ghi xuống đĩa khi người dùng nhấn nút “lưu gĩi nội dung”. Source code của manifest sẽ được đánh số dịng và thể hiện theo dạng coloring code (hiển thị màu cho code) với các tập tin XML, schema và DTD để
người sử dụng dễ dàng trong việc theo dõi code.
Hỗ trợ giao diện đa ngơn ngữ: chương trình được thiết kế cĩ giao diện đa ngơn ngữ (cĩ hỗ trợ tiếng Việt) giúp cho người sử dụng nhanh chĩng tiếp cận và sữ
dụng được ứng dụng bằng chính ngơn ngữ quen thuộc của người dùng. Tập tin dùng để chứa các chỉ thị cho từng ngơn ngữ thể hiện là các tập tin XML được chứa trong thư mục lang của ứng dụng.
Ngồi ra, ứng dụng cịn hiện thực vài chức năng tiện ích khác để hỗ trợ cho các chức năng chính của chương trình như (sao chép, xĩa tập tin hay thư mục, hiện thực chức năng nén, giải nén tập tin ZIP,v.v…).
3.2.3 Giải pháp hiện thực
Trước những yêu cầu và khĩ khăn đặt ra, cũng đã cĩ nhiều biện pháp được đề xuất để
lựa chọn để giải quyết vấn đề chính đĩ là quản lý cấu trúc của tập tin XML này, trong
đĩ mơ hình DOM là giải pháp đã được lựa chọn, tuy đây khơng phải là một giải pháp hồn hảo do mơ hình DOM buộc phải load tất cả nội dung tập tin lên trên bộ nhớ
RAM cho nên sẽảnh hưởng nhiều đến hiệu năng của chương trình, và do giao diện chương trình khi tương tác cịn gồm một cây thể hiện cấu trúc của tập tin manifest và các form thể hiện thuộc tính của từng thẻ cho nên vấn đề tốc độ phải được ưu tiên giải quyết. Biện pháp mà chương trình đã sử dụng là đĩ là sử dụng mơ hình DOM và một số biện pháp hỗ trợ giúp cải thiện tốc độ là XPath và load từng phần cho cây của manifest để tránh tình trạng tốc độ của chương trình. Dựa vào đặc tính quản lý các thành phần theo mơ hình cây của mơ hình DOM để cĩ thể dễ dàng quản lý các thẻ và cũng như các tương tác (thêm, xĩa, sửa) trên các thành phần này.
Manifest file XMLDocumment
Component
TreeView Component Form Attribute
Load Load
Load
RichTextBox Component (View Source code)
Save
Save Add or Delete manifest component
Modify manifest component
Hình 3.2.1 Sơ đồ quy trình tương tác với các thành phần manifest
Quan sát trên hình 3.2.1, nhận thấy rằng, giải thuật chủ yếu của chương trình dựa vào mơ hình DOM mà ở đây được thể hiện bằng thành phần XMLDocument của .NET. Quá trình đọc tập tin manifest là quá trình load tồn bộ tập tin manifest vào thành
phần XMLDocument, tại đây theo khái niệm của DOM, tồn bộ các thẻ và thuộc tính nĩi riêng và các thành phần của tập tin manifest nĩi chung sẽđược quản lý theo sơđồ
hình cây do đối tượng XMLDocument quản lý. Mơ hình cây này sẽđược cụ thể hĩa bằng thành phần Treeview ở trên màn hình chính, giúp cho người dùng cĩ thể tương tác và quản lý các thành phần manifest, khi người dùng chọn một node trên thành phần TreeView tương đương với việc người dùng đã chọn lấy một thành phần manifest và ngay lập tức form chứa thuộc tính tương ứng sẽ xuất hiện và mọi thơng tin được load lên từ thành phần TreeView.
Do thực hiện theo cơ chế quản lý như trên, nên khi người thực hiện các thao tác như
thêm một thành phần manifest hay xĩa một thành phần manifest hoặc chỉnh sửa một thành phần manifest nào đĩ bằng cách tương tác lên thành phần TreeView hay trên các form thuộc tính thì chương trình sẽ thực hiện những dịng lệnh hết sức đơn giản như tạo thêm một element hay xĩa một element hoặc hiệu chỉnh một element trong XMLDocument ở vị trí tương ứng.
Trong khi tương tác với các thành phần của manifest, người dùng cĩ thể xem trước nội dung của tập tin manifest để xem những thay đổi của tập tin này trước những yêu cầu thay đổi của người dùng. Lúc này, chương trình chỉđơn giản là gọi phương thức Save của XMLDocument ra một thành phần RichTextBox để người dùng cĩ thể xem
được nội dung source code. Cịn nếu người dùng muốn lưu những thay đổi này xuống tập tin, thì chương trình cũng chỉ đơn giản là gọi phương thức Save của XMLDocument một lần nữa để ghi ra tập tin.
Do quá trình load nội dung của tập tin manifest lên bao gồm các quá trình load nội dung tập tin manifest vào thành phần XMLDocument để tạo cấu trúc DOM sau đĩ lại load tiếp lên trên thành phần TreeView để cho thể hiện cây thành phần manifest và sau đĩ lại load tiếp lên các form thuộc tính để cho thể hiện các giá trị của các thuộc tính tương ứng với các thành phần, nếu thực thi một loạt liên tục quá trình này thì ứng dụng sẽ chạy rất chậm. Do đĩ để khắc phục vấn đề về hiệu năng cho chương trình,
ứng dụng đã hiện thực giải pháp là load từng phần của mơ hình DOM lên TreeView khi cĩ sự tác động của người dùng. Khi người dùng click vào một node trên TreeView thì chương trình chỉ load các node con của thành phần đĩ trong mơ hình DOM, chứ khơng load hết tất cả các nút con và cháu. Tương tự như vậy các form thuộc tính chỉ được load dữ liệu khi cĩ sự kiện click tác động của người dùng lên thành phần trên TreeView. Những biện pháp này khi được sử dụng đã cải thiện rõ rệt về hiệu năng và tốc độ xử lý chương trình.
Ngồi chứng năng chính được trình bày trên, chương trình cũng phải hiện thực một số
chức năng cơ bản để tăng tính tiện dụng cho chương trình khi sử dụng. Và một trong những chức năng cơ bản mà chương trình phải hiện thực đĩ là chức năng mở gĩi nội dung. Quá trình mở một gĩi nội dung được mơ tả theo hình 3.2.2 dưới đây
Lựa chọn hình thức mở gĩi
Nhập tên gĩi và nơi chứa gĩi nội dung
Đọc các thành phần từ
tập tin manifest Giải nén gĩi nội dung
Hiện lên cây thành phần manifest
Từ tập tin manifest
Từ gĩi nội dung
Hình 3.2.2 Sơ đồ quy trình thực hiện hành động mở gĩi nội dung
Theo hình 3.2.2, thao tác chính yếu của chức năng mở gĩi nội dung sẽ là thao tác đọc các thành phần từ tập tin manifest đã cĩ, sau đĩ sẽ load lên TreeView. Về cơ bản chức năng này sẽ thực hiện những hành động chính sau đây: load tập tin manifest vào thành phần XMLDocument và sau đĩ sẽ load lên TreeView nút gốc của thành phần manifest. Quá trình mở một gĩi nội dung chỉ dừng lại ởđây, sau đĩ khi người dùng click vào cây thành phần sẽ chuyển qua quá trình thao tác với các thành phần manifest, lúc đĩ tùy theo hành động của người sử dụng chương trình sẽ load tiếp các nút con tương ứng để nối vào những nút đang cĩ. Quy trình thực hiện trên đã cải thiện
đáng kể tốc độ cho chương trình.
Vì khuơn khổ giới hạn của khĩa luận, do đĩ phần báo cáo vềứng dụng chỉ sẽ trình bày một số các chức năng cơ bản dưới dạng sơ đồ hoặc bằng các mơ tả sơ lược về
cách hiện thực. Chức năng sẽđược trình bày tiếp theo là chức năng tạo gĩi nội dung cũng được mơ tả theo sơđồ dưới đây:
Lựa chọn hình thức tạo Nhập tên gĩi và nơi chứa gĩi nội dung Lựa chọn tài nguyên Copy thư mục và tập tin vào nơi chứa Tạo các tập tin cấu hình tương ứng Giải nén gĩi vào nơi chứa Gĩi nội dung mới
Tạo từ tài nguyên
Từ thư mục
Từ gĩi nội dung Là gĩi mới
Hình 3.2.3 Sơ đồ quy trình thực hiện hành động tạo gĩi nội dung
Một chức năng tiếp theo khá là quan trọng của ứng dụng đĩ là chức năng đĩng gĩi nội dung. Nhiệm vụ của chức năng này là sẽ tập hợp tất cả các tài nguyên của người dùng cũng như các tập tin cấu hình cho gĩi vào một tập tin nén (tập tin ZIP). Do giải thuật nén và giải nén là một chức năng lớn nên ứng dụng chỉ sử dụng các hàm thư
viện cĩ sẵn của .NET 2.0. Tốc độ nén và giải nén tập tin của thư viện khá tốt và khơng giới hạn về số byte cĩ thể nén và giải nén.
3.3 Đánh giá ứng dụng
3.3.1 Ưu điểm và Khuyết điểm
Ưu điểm:
− Chương trình đĩng gĩi tuân theo chuẩn SCORM 2004 3rd, là chuẩn được tổ
chức ADL hỗ trợ và khuyến khích sử dụng tại thời điểm đang làm khĩa luận.
− Với tính chất của một ứng dụng minh họa thì chương trình đã đạt được mục tiêu là đĩng gĩi nội dung tuân theo chuẩn SCORM bằng việc sinh ra các thẻ
XML tương ứng bên trong tập tin manifest và cho phép thêm các tài nguyên vào gĩi.
− Chương trình cĩ hỗ trợ giao diện tiếng việt thân thiện, dễ sử dụng đối với những người dùng khơng am hiểu nhiều về SCORM.
− Chương trình đã xây dựng tương đối thành cơng về cấu trúc quản lý và xây dựng chương trình để hỗ trợ cho việc tương tác với các thành phần của tập tin manifest bao gồm việc tạo, xĩa và sửa các thẻ XML bên trong tập tin.
− Chương trình cĩ giao diện dễ sử dụng, thân thiện với người dùng, các biểu mẫu thuộc tính được bố trí bên phải của màn hình giúp người sử dụng cĩ thể