6. Kết quả nghiên cứu, đóng góp khoa học của luận án
2.2.4.3. Kết quả thực nghiệm trên hệthống thi lập trình trực tuyến BKOJ
"Hệ thống thi trực tuyến" (online judge) là hệ thống thi tự động nhằm kiểm tra các đáp án được gửi đến cho một vấn đề nào đó và từ đó tạo ra các thông tin đầu ra. Bộ phận này kiểm tra đầu ra đó xem có tương thích với một tập các đầu ra được chứng mình và lưu trữ, từ đó đưa ra kết quả cho người dùng: Chấp nhận (Accepted), Wrong Answer (Câu trả lời sai), Runtime Error (Lỗi thời gian chạy), v.v..
Hệ thống thi trực tuyến sẽ được đặt trong một máy chủ chứa mô tả về các vấn đề khác nhau trong các ngữ cảnh khác nhau, cũng chính là các tập dữ liệu cho hệ thống thi. Người dùng có thể đăng kí miễn phí và sử dụng để giải quyết các vấn đề của họ. Họ có thể gửi nhiều giải pháp đến khi nhận được thông tin khả quan, có thể là thời gian cần thiết để chạy sau khi cải thiện mã nguồn chương trình hoặc các thuật toán được sử dụng để giải quyết các thách thức. Hiện tại tồn tại khá nhiều hệ thống thi trực tuyến trên Internet: UVA Online Judge, Sphere Online Judge, BKOJ Online Judge. BKOJ là một hệ thống thi trực tuyến của trường Đại học Bách Khoa
Đ ều kho n I ① = 0.10 ② = 0.15 ③ = 0.20 Độ tin cậy ① ② ③ ① ② ③ Đ ều kho n II ① = 0.10 ② = 0.15 ③ = 0.20 Độ tin cậy
58
Hà Nội, được xây dựng nhằm hỗ trợ đào tạo cho các đội ACM/ICPC của trường. Như đã mô tả khi mô hình hóa hệ thống, chúng ta xét đến một hệ thống hoạt động theo cơ chế client-server, trong đó phần mềm đặt tại server sẽ phục vụ các yêu cầu được gửi đến từ client. Do đó, việc lựa chọn một hệ thống thi trực tuyến như BKOJ là hoàn toàn hợp lý.
Hình 2.18. Sơ đồ khối của hệ thống BKOJ
Hình 2.19. Triển khai BKOJ trên hệ thống BKCloud
Admin User
Server
Local Area Network (LAN)
Database MySQL Linux server C/C++ code Backend PHP Jquery Library Frontend CSIM Admin User
59
BKOJ bao gồm hai phần chính: trang web (frontend - bộ phận cuối) và lõi (backend - bộ phận xử lý) được minh họa như Hình 2.18.
Phần trang web hoạt động như là một hệ thống quản trị thông tin phân tán, thực hiện việc quản trị thông tin bao gồm đăng kí người dùng, gửi vấn đề, gửi giải pháp, thay đổi vấn đề, v.v.. Có hai nhóm đối tượng thao tác lên trang web gồm: người quản trị và người dùng thông thường. Khi cài đặt, chúng tôi sử dụng ngôn ngữ lập trình PHP với sự hỗ trợ của thư viện JQuery.
Hệ thống sử dụng hệ quản trị cơ sở dữ liệu MySQL trong việc lưu trữ thông tin trong kết nối giữa hai bộ phận.
Bộ phận xử lý thực hiện việc xử lý các thông tin lưu trữ trong cơ sở dữ liệu MySQL. Chúng tôi cài đặt ngôn ngữ lập trình C/C++ trên hệ điều hành Linux. Bộ phận lõi chính là nhân của BKOJ cung cấp phương thức để kiểm định tất cả các giải pháp được gửi đến bởi người dùng. BKOJ được cài đặt trên nền tảng BKCloud như là một phần mềm dịch vụ từ năm 2012. Hình 2.19 trình bày việc triển khai BKOJ bao gồm các khối Server cài đặt bộ phận xử lý kết quả, Database cài đặt cơ sở dữ liệu với hệ quản trị MySQL và bộ phận quản trị/sử dụng thực hiện các công việc thông qua mạng Internet.
Bảng 2.1. Thông tin về cuộc thi ảo triển khai trên BKOJ
Server Software Apache/2.2.14
Document Path /JudgeOnline/status.php Concurrency Level 500
Time taken for tests 32,239 seconds Complete requests 1000
Failed requests 207 (Connect: 0, Receive: 0, Length: 207, Exceptions: 0) Total transferred 7262294 bytes
HTML transferred 6956196 bytes Requests per second 31.02[#/sec] (mean) Time per request 16119.251[ms] (mean)
Time per request 32.239[ms] (mean, across all concurrent requests)
Connection Times(ms)
min median max
Connect 1 229 3000
Processing 296 2009 32200
Waiting 0 1002 15725
Trong thực nghiệm này, chúng tôi chỉ xem xét việc áp dụng điều khoản I cho BKOJ. Nghiên cứu thực hiện một cuộc thi ảo bao gồm 500 phép thử nghiệm trong 8 giờ. Cuộc thi sử dụng dữ liệu thu thập từ các cuộc thi nội bộ tại trường trong giai đoạn 2012 đến 2013. Các thông tin cơ bản được trình bày trong Bảng 1.3. Tham số của các mô hình là:
60
lần lượt có giá trị 96(h), 144(h), 192(h), 384(h) (với h = giờ). Từ các tham số ở trên, chúng tôi tính toán được và vẽ ra đường cong liên tục về mặt lý thyết mô tả độ sẵn sàng, độ an toàn và độ tin cậy của hệ thống tương ứng ở Hình 2.20, Hình 2.21 và Hình 2.22. Bên cạnh đó, từ các kết quả thực nghiệm, chúng tôi xác định được các hình thoi đen mô tả giá trị thực của các độ đo liên quan tới hệ thống BKOJ. Kết quả thực nghiệm cho thấy rằng các đường cong lý thuyết phù hợp với giá trị thực tế, từ đó khẳng định giá trị thực tế của phương pháp này để đánh giá các đặc tính chất lượng trong một hệ thống trẻ hóa bằng cách sử dụng mô hình Markov.
Hình 2.20. Độ sẵn sàng của BKOJ dưới điều khoản I
Hình 2.21. Độ an toàn của BKOJ dưới điều khoản I
61
Từ những lý thuyết được kiểm tra trên mô phòng và kết quả thực nghiệm thực tế tại một dự án phần mềm cụ thể, như đã được trình bày trong tiểu mục, chúng tôi rút ra các nhận xét sau:
Chúng tôi đã giới thiệu việc ứng dụng mô hình toán học Markov và lý thuyết về trẻ hóa phần mềm nhằm đánh giá một nhóm thuộc tính chất lượng của phần mềm. Trong hướng tiếp cận này, chúng tôi sử dụng hai mô hình xích Markov tương ứng với hai điều khoản I và II. Các khai triển toán học được xác nhận bằng các kết quả thực nghiệm tính toán bằng Matlab về hệ thống BKOJ SaaS cài đặt trên BKCloud.
Chúng tôi đề xuất các hướng mở rộng bao gồm: (1) Tìm hiểu mối quan hệ giữa nhóm thuộc tính trên với các kĩ thuật chịu lỗi của phần mềm cho môi trường đám mây. Việc đánh giá về thuộc tính của hệ thống chịu lỗi có thể giúp ước tính chi phí xây dựng của hệ thống có áp dụng cơ chế trẻ hóa. (2) Đánh giá về các thuộc tính của phần mềm trẻ hóa cài đặt theo cơ chế Client-Server với hàng đợi ( ) và phần mềm chịu lỗi phân tán.
Kết quả nghiên cứu trong mục 2.2 được công bố trong công trình số 3 (năm 2014) trong danh mục các công trình đã công bố của luận án.