CHƯƠNG II THIẾT KẾ CÔNG CỤ CSLAB TRÊN DỰ ÁN SAKA

Một phần của tài liệu Phát triển công cụ hỗ trợ biên dịch và kiểm thử trên hệ thống sakai (Trang 36)

II.1. Các chức năng chính

4.1-25- Usecase Model

Hình “4.1-25- Usecase Model” mô tả các chức năng chính của chương trình a. Tổng quát

 Quản lý nội dung bài thực hành

 Lưu trữ và quản lý nội dung bài làm của sinh viên và kết quả trả về từ Test Server

b. Về phía giảng viên

 Xem danh sách tất cả bài thực hành

 Tạo mới bài thực hành

 Cấu hình quá trình biên dịch và kiểm thử cho bài thực hành

 Xóa, sửa nội dung bài thực hành

 Xem thông tin bài thực hành, tình trạng bài thực hành, thống kê

 Xem bài làm, kết quả và tình trạng làm bài của sinh viên c. Về phía sinh viên

 Xem danh sách và tình trạng các bài thực hành đang kích hoạt

 Thực hiện và lưu trữ bài làm

 Biên dịch, kiểm thử bài làm và lưu trữ kết quả

 Một số tiện ích của một môi trường phát triển tích hợp như tô màu các từ khóa cho mã nguồn, hỗ trợ phím tab trong khung nhập liệu

II.2. Cấu trúc công cụ CSLab

a. Công cụ CSLab được thiết kế hoàn toàn nằm trên SAKAI Server mà không cần cài đặt bất cứ phần nào trên Test Server. Tuy nhiên, do sử dụng cơ chế SSH để truyền nội dung qua Test Server nên Test Server yêu cầu phải được cài đặt sẵn dịch vụ SSH như hình “4.2-26-Cấu trúc Công cụ CSLab và hệ thống các máy chủ”

4.2-26-Cấu trúc Công cụ CSLab và hệ thống các máy chủ

b. Về phía SAKAI Server: công cụ CSLab gồm 3 thành phần chính

 CSLab Front-End: thực hiện các chức năng quản lý, cung cấp giao diện, … tương tác trực tiếp với người dùng

 Storage Component: thực hiện các chức năng ghi, chép, quản lý tập tin … trong chương trình

 SSH Component: đóng vai trò như một SSH client, dùng để kết nối đến SSH Server, thực hiện các tác vụ truyền nhận tập tin, thực thi câu lệnh trên Test

Server…

c. Về phía Test Server: hoàn toàn được xem như một đối tác thứ ba. Mọi cấu hình trên Test Server đều phải được cấu hình bởi giảng viên (người tạo bài thực hành) và sau đó cung cấp các cấu hình đó cho công cụ CSLab trong quá trình tạo bài thực hành. Các thông tin cấu hình cần thiết bao gồm

 Địa chỉ IP / hostname của Test Server

 Port dành cho dịch vụ SSH

 Vị trí để các tập tin bài làm khi công cụ CSLab upload lên

 Số lượng connection tối đa cho một bài thực hành khi kết nối đến Test Server

 Thời gian tối đa chờ 1 câu lệnh hoàn thành

 Nội dung các câu lệnh cần thực thi

 Tài khoản cho sinh viên đăng nhập vào Test Server. Tài khoản này khác với tài khoản của sinh viên trên SAKAI và không công bố cho sinh viên biết tài khoản này mà chỉ được chương trình sử dụng ngầm bên dưới

II.3. Hoạt động của công cụ CSLab

a. Hoạt động của chương trình được bắt đầu khi giảng viên thực hiện quá trình tạo nội dung bài thực hành cho đến khi giảng viên quyết định xóa bài thực hành đã tạo

 Đầu tiên, giảng viên cấu hình sẵn cho Test Server, cài đặt môi trường cần thiết cho quá trình biên dịch và kiểm thử, tạo tài khoản đăng nhập

 Giảng viên vào công cụ CSLab, bắt đầu quá trình tạo bài thực hành mới. Trong quá trình đó, giảng viên cung cấp các thông tin về Test Server cần thiết cho công cụ

 Sau khi giảng viên hoàn tất quá trình tạo bài thực hành, công cụ hiện trang xem thông tin tổng quát cho giảng viên

 Sau đó, khi bài thực hành bắt đầu có hiệu lực, sinh viên có thể vào công cụ CSLab để xem danh sách các bài thực hành đang có hiệu lực và làm bài

 Sau khi làm bài, sinh viên có thể thực hiện chức năng kiểm tra bài làm

 Khi chức năng kiểm tra bài làm được chọn, công cụ sẽ lấy các thông tin cần thiết và gởi bài làm của sinh viên qua Test Server

 Trên Test Server, bài làm của sinh viên sẽ được biên dịch, kiểm thử thông quá các đoạn script được thực thi và trả về tập tin kết quả cho công cụ CSLab

 Công cụ CSLab sẽ trình bày các thông tin khác được in ra màn hình từ chương trình của sinh viên và nội dung file kết quả. Nội dung file kết quả được lưu lại bởi công cụ

 Gỉang viên có thể xem thông tin tình trạng bài thực hành bất kỳ lúc nào. Tình trạng bài thực hành bao gồm tình trạng làm bài, nội dung làm bài và kết quả làm bài của sinh viên nếu đã có sinh viên làm bài trên bài thực hành đó

 Khi bài thực hành hết hạn, giảng viên có thể sửa đổi nội dung bài thực hành cũ thành 1 bài thực hành mới hoặc xóa bài thực hành cũ đi. Khi xóa bài thực hành, chương trình xem như kết thúc đối với bài thực hành đó

 Quá trình trên được mô tả ở hình “4.3-27-Lược đồ tuần tự hoạt động của hệ thống”:

4.3-27-Lược đồ tuần tự hoạt động của hệ thống

b. Công cụ CSLab lưu trữ nội dung bài thực hành và các thông tin khác dưới hình thức các tập tin object của các đối tượng Serializable mà không lưu trữ dưới dạng cơ sở dữ liệu của SAKAI. Lựa chọn trên nhằm vào mục tiêu giảm lỗi của chương trình khi còn ở giai đoạn đầu. Khi phát triển công cụ ở các phiên bản sau, ta có thể

chuyển sang thiết kế với cơ sở dữ liệu Các đối tượng được lưu bao gồm:

 LabInfo: lưu trữ các thông tin cơ bản của bài thực hành. Đối tượng này được tạo ngay từ bước 1 của quá trình tạo bài thực hành và chỉ được xóa khi bài thực hành bị xóa bởi giảng viên.

 DependencyInfo: lưu trữ nội dung các tập tin source code chỉ mang tính chất tham khảo, không thể thay đổi bởi sinh viên. Mỗi đối tượng là nội dung 1 tập tin source code. Đối tượng này được tạo từ bước 2 trong quá trình tạo bài thực hành và chỉ được xóa khi bài thực hành bị xóa hay thay đổi bởi giảng viên.

 SubmissionInfo: lưu trữ nội dung các tập tin source code mà sinh viên cần hoàn thiện, đây cũng là nơi lưu trữ nội dung làm bài của sinh viên. Mỗi đối tượng là nội dung 1 tập tin source code. Đối tượng này được tạo từ bước 3 trong quá trình tạo bài thực hành và chỉ đước xóa khi bài thực hành bị xóa bởi giảng viên và được lưu vào thư mục Base Submissions.

• Khi sinh viên truy cập bài thực hành này lần đầu tiên, các đối tượng trong thư mục Base Submissions sẽ được load lên. Sau đó, các đối tượng này được lưu vào thư mục Submissions của riêng sinh viên đó trong bài thực hành

• Ở các lần truy cập sau, đối tượng được lưu trong thư mục Submissions của sinh viên đó sẽ được load lên

• Các đối tượng này chỉ được xóa khi bài thực hành bị xóa hay thay đổi bởi giảng viên

 ConfigInfo: lưu trữ các thông tin cơ bản về Test Server trong suốt quá trình thực hiện SSH session. Nội dung thông tin này được upload lên SAKAI dưới dạng 1 tập tin config. Đối tượng này được tạo từ bước 4 trong quá trình tạo bài thực hành và chỉ được xóa khi bài thực hành bị xóa hay thay đổi bởi giảng viên.

 ShellInfo: lưu trữ một tập các câu lệnh đơn để thực thi sau khi kết nối vào Test Server. Trong một bài thực hành có thể có nhiều tập câu lệnh, xem như có nhiều kịch bản khác nhau cho quá trình biên dịch, kiểm thử. Nội dung thông tin này được upload lên SAKAI dưới dạng 1 tập tin shell script. Đối tượng này được tạo từ bước 6 trong quá trình tạo bài thực hành và chỉ được xóa khi bài thực hành bị xóa hay thay đổi bởi giảng viên.

 UserInfo: lưu trữ tài khoản dùng để đăng nhập vào Test Server cho từng tài khoản SAKAI của sinh viên. Nội dung thông tin này được upload lên SAKAI dưới dạng 1 tập tin mapping. Đối tượng này được tạo từ bước 5 trong quá trình tạo bài thực hành và chỉ được xóa khi bài thực hành bị xóa hay thay đổi bởi giảng viên.

 ResultInfo: lưu lại nội dung tập tin được tạo nên bởi quá trình biên dịch, chạy thử trên Test Server. Tập tin kết quả này được chỉ định bởi giảng viên trong

quá trình tạo bài thực hành và được lấy về sau khi chương trình thực thi quá trình Test được gọi bởi sinh viên. Đối tượng này chỉ được xóa khi bài thực hành bị xóa hay thay đổi bởi giảng viên.

 SSHPermission: dùng để quản lý số lượng connection tối đa cho từng bài thực hành. Mỗi đối tượng là duy nhất cho mỗi bài thực hành và hoàn toàn độc lập với nhau. Đối tượng này được tạo ra khi có sinh viên đầu tiên thực hiện việc kiểm tra bài làm và sẽ tồn tại suốt quá trình bài thực hành còn hiệu lực. Đối tượng này không được lưu xuống thành 1 tập tin và bị xóa sau ngày deadline của bài thực hành.

Vòng đời các đối tượng được mô tả một cách tổng quan qua hình “4.3-28-Vòng đời các đối tượng”:

c. Nội dung các tập tin mà giảng viên cần cung cấp trong quá trình tạo bài thực hành

 Tập tin config: tập tin dùng để configure các thông tin liên quan đến Test Server

4.3-29-Nội dung tập tin config

#: ký tự đánh dấu dòng comment

host: tên hoặc địa chỉ Ip của Test Server

port: port của dịch vụ SSH Server trên Test Server

srcLocation: thư mục chưa các tập tin source được upload bởi CSLab, bắt buộc kết thúc bằng dấu “/”

rslLocation: tên tập tin result cần download về cho sinh viên, khi thuộc tính được để trống, chương trình sẽ không download tập tin về

threshold: số lượng connection tối đa cho mỗi bài thực hành đến Test Server

 Tập tin user mapping: tập tin mapping SAKAI user và Login user trên Test Server

• Cú pháp:<SAKAI userID>:<Login username>:<password của Login user>

4.3-30-Nội dung tập tin mapping

 Tập tin script: các câu lệnh được thực thi trên Test Server • Mỗi câu lệnh là 1 dòng

• Không thể ghi các câu lênh for, do, while,… trên nhiều dòng

• Các câu lệnh độc lập nhau và luôn có vị trí dòng lệnh là thư mục home của user

4.3-31-Nội dung tập tin script

 Các tập tin dependencies và submissions • Các tập tin code của chương trình

• Dependencies: các tập tin tham khảo, không cần sinh viên chỉnh sửa • Submissions: các tập tin cần sinh viên thực hiện, có thể có nội dung trước

d. Các tập tin object được lưu lại thành 1 cây thư mục như hình “4.3-32-Thư mục lưu trữ dữ liệu của chương trình”. Gốc của cây thư mục được admin của SAKAI Server xác định trong quá trình cài đặt tool

4.3-32-Thư mục lưu trữ dữ liệu của chương trình

 Thư mục của Site:

• Nằm dưới thư mục gốc REPOSITORY • Được đặt tên theo SiteID

• Chứa tất cả các bài thực hành được tạo trong site

 Thư mục của Lab:

• Nằm dưới thư mục của Site • Được đặt tên theo LabID

• Chứa tất cả các dữ liệu của bài la cũng như bài làm và kết quả của sinh viên đã làm bài thực hành này.

 Thư mục Upload Files của Lab: • Nằm dưới thư mục của Lab

• Là thư mục để tạm các tập tin được upload trong quá trình tạo lab. Các tập tin này được xóa ngay lập tức sau khi chương trình đọc xong nội dung tập tin và ghi thành các object.

 Thư mục METADATA của Lab: • Nằm dưới thư mục của Lab

• Chứa các thông tin chung về nội dung bài thực hành như đối tượng LabInfo, đối tượng ConfigInfo, thư mục Scripts, thư mục Base Submissions, thư mục Dependencies

• Chứa các đối tượng ShellInfo dùng trong quá trình Test lab của sinh viên

 Thư mục Dependencies của Lab

• Nằm dưới thư mục METADATA của Lab

• Chứa các đối tượng DependencyInfo dành cho sinh viên tham khảo trong quá trình làm bài

 Thư mục Base Submissions của Lab • Nằm dưới thư mục METADATA của Lab

• Chứa các SubmissionInfo được tạo mẫu bởi giảng viên trong quá trình tạo bài thực hành. Các đối tượng này được load khi sinh viên lần đầu truy cập vào bài thực hành.

 Thư mục của Student

• Nằm dưới thư mục của Lab • Được đặt tên theo UserID

• Chứa đối tượng UserInfo và các thư mục Submissions, Result

 Thư mục Submissions của Student • Nằm dưới thư mục của Student

• Chứa các đối tượng SubmissionsInfo được lưu xuống trong quá trình làm bài của sinh viên

 Thư mục Result của Student • Nằm dưới thư mục của Student

• Chứa đối tượng ResultInfo được lưu xuống sau quá trình Test lab của sinh viên

 Thư mục TEMP

• Nằm dưới thư mục gốc REPOSITORY

• Là thư mục tạm chứa các thư mục lab đang trong quá trình tạo (đang trong Wizard). Mục đ1ich của thư mục này là để tách các bài thực hành đang tạo với các bài thực hành đã tạo xong.

• Cấu trúc thư mục TEMP giống như cấu trúc thư mục gốc REPOSITORY với các thư mục của Lab cũng nằm bên dưới thư mục của Site, bên dưới thư mục Lab cũng là các thư mục của Student, METADATA

• Các thư mục lab này sẽ được dời sang thư mục của Site ngay khi quá trình tạo Lab hoàn tất.

4.3-33-Hoạt động của chương trình đối với giảng viên

 Ở hình “4.3-33-Hoạt động của chương trình đối với giảng viên”

 Khi giảng viên truy cập vào công cụ, trang chính được load với danh sách các bài thực hành hiện hành trong site và nút Add được available

 Từ đây giảng viên có thể tạo bài thực hành mới với nút Add hay lựa chọn 1 bài thực hành để kích hoạt các chức năng khác

 Khi bài thực hành được lựa chọn, các chức năng khác được available gồm: • Chỉnh sửa bài thực hành đang được lựa chọn

• Xóa bài thực hành đang được lựa chọn

• Xem nội dung tổng quát bài thực hành đang được lựa chọn • Xem thống kê tình trạng bài thực hành đang được lựa chọn

 Quá trình tạo hay chỉnh sửa bài thực hành được thực hiện thông qua 1 wizard gồm 6 bước như hình “4.3-34-Dòng chảy quá trình tạo bài thực hành”:

• Nhập thông tin chung về lab – tên, mô tả (đề bài), ngày bắt đầu và ngày kết thúc

• Upload các tập tin dependencies – các tập tin source code trong chương trình không cần sinh viên thay đổi, có tính chất tham khảo. Khi click vào link “Click to Import Tập tin”, chương trình chuyển qua trang upload mutiple tập tin. Giảng viên sẽ upload từng tập tin bằng cách nhấn nút “Upload” và kết thúc nằng nút “Done”

• Upload các tập tin submissions – các tập tin source code mà sinh viên cần thay đổi, có thể chứa code mẫu bên trong. Cũng như trên, khi click vào link “Click to Import Tập tin”, chương trình chuyển qua trang upload mutiple tập tin.

• Upload tập tin mapping user để chương trình login vào Test Server cho từng user

• Upload các tập tin script thực thi các công việc biên dịch, chạy thử, … bên Test Server để ra kết quả cuối

 Sau khi xong 6 bước trong wizard, chương trình sẽ load trang Lab Summary cho giảng viên thấy rõ nội dung bài thực hành đã làm. Trang Lab Summary cũng có thể được load khi giảng viên lựa chọn xem thông tin tổng quát bài thực hành đang được chọn

 Từ trang Lab Summary, giảng viên có thể thực hiện các chức năng • Chỉnh sửa bài thực hành hiện tại

• Xóa bài thực hành hiện tại

• Xem thống kê tình trạng bài thực hành hiện tại

Một phần của tài liệu Phát triển công cụ hỗ trợ biên dịch và kiểm thử trên hệ thống sakai (Trang 36)