Kỹ thuật cải thiện độtincậy phần mềm

Một phần của tài liệu Nghiên cứu các phương pháp nâng cao độ tin cậy cho hệ thống tính toán qua cấu trúc hệ thống (Trang 54)

- Kiểm thử phần mềm: đƣợc sử dụng nhiều để kích hoạt, xác định vị trí và loại bỏ các khuyết tật phần mềm. Kiểm thử phần mềm vẫn đang trong giai đoạn sơ khai ban đầu, các thử nghiệm đƣợc tạo ra cho phù hợp với nhu cầu cụ thể trong dự án phát triển phần mềm khác nhau [11].

- Sử dụng các công cụ phân tích khác nhau nhƣ: phân tích xu hƣớng, phân tích lỗi cây, phân loại trực giao khiếm khuyết và các phƣơng pháp hình thức,… có thể đƣợc sử dụng để giảm thiểu khả năng xảy ra sai sót sau khi phát hành và do đó cải thiện độ tin cậy phần mềm.

- Thu thập và phân tích dữ liệu: sau khi triển khai các sản phẩm phần mềm thì có thể thu thập và phân tích dữ liệu các lĩnh vực để nghiên cứu hành vi của các khiếm khuyết phần mềm. Khả năng chịu lỗi kỹ thuật, dự báo lỗi/thất bại sẽ đƣợc phân tích kỹ thuật và các quy tắc hƣớng dẫn để giảm thiểu sự xuất hiện lỗi hoặc tác động của lỗi trên hệ thống.

- Độ tin cậy phần mềm là một phần của chất lƣợng phần mềm ngoài ra nó còn liên quan đến nhiều lĩnh vực chất lƣợng phần mềm.

Độ tin cậy truyền thống: nhiệm vụ ban đầu trong nghiên cứu độ tin cậy phần mềm dựa trên phép suy luận độ tin cậy truyền thống về phần cứng. Nhiều khái niệm và phƣơng pháp phân tích truyền thống đƣợc sử dụng trong việc đánh giá độ tin cậy có thể đƣợc sử dụng để đánh giá và cải thiện độ tin cậy phần mềm. Tuy nhiên, độ tin cậy phần mềm tập trung vào hoàn thiện thiết kế chứ không phải là sản xuất sản phẩm hoàn hảo nhƣ phƣơng pháp phân tích truyền thống độ tin cậy phần cứng [11].

Phần mềm chống chịu lỗi: là khả năng để cho phần mềm phát hiện và phục hồi từ một lỗi mà đang xảy ra hoặc đã xảy ra một trong hai thành phần: phần mềm hoặc phần cứng trong hệ thống; trong đó các phần mềm đang chạy để cung cấp dịch vụ phù hợp với các đặc điểm kỹ thuật. Phần mềm chống chịu lỗi

là một thành phần cần thiết để xây dựng thế hệ tiếp theo của hệ thống máy tính thích ứng cao và đáng tin cậy từ các hệ thống nhúng với các hệ thống kho dữ liệu. Ngoài ra, phần mềm chống chịu lỗi có độ tin cậy cao để xử lý những thất bại một cách không rõ ràng và không thể đoán trƣớc đƣợc bằng cách cung cấp một tập hợp các modul phần mềm có chức năng tƣơng đƣơng. Phần mềm chống chịu lỗi không phải là một giải pháp cho chính nó và khả năng chịu lỗi phần mềm chỉ là một phần cần thiết để tạo ra thế hệ tiếp theo của hệ thống.

Kiểm thử phần mềm: kiểm thử phần mềm đƣợc dùng nhƣ là một cách để đo lƣờng và cải thiện độ tin cậy phần mềm. Nó đóng một vai trò quan trọng trong giai đoạn thiết kế, xác nhận, thực hiện và giai đoạn phát hành. Nó không phải là một lĩnh vực đã phát triển hoàn thiện, nâng cao lĩnh vực này sẽ có tác động lớn đến ngành công nghiệp phần mềm.

Phần mềm tham gia vào rất nhiều lĩnh vực của nền sản xuất xã hội nên vấn đề liên quan đến phần mềm và chất lƣợng sản phẩm phần mềm có thể gây ra các vấn đề nghiêm trọng; ví dụ nhƣ phần mềm điều khiển nhà máy điện hạt nhân. Các lỗi trong phần mềm khác biệt rất nhiều so với lỗi trong phần cứng và các thành phần khác của hệ thống; chúng thƣờng có lỗi thiết kế và nhiều lỗi trong phần mềm có liên quan đến các vấn đề đặc tả. Thiệt hại do lỗi gây ra phần mềm ngày càng nhiều và hơn thế nữa là mối quan tâm của xã hội và vấn đề pháp lý.

Một trong những phƣơng pháp truyền thống để nâng cao độ tin cậy phần mềm là phƣơng pháp: N-phiên bản modul dự phòng, phƣơng pháp này rất có hiệu quả khi thực hiện một cách chính xác. Để sử dụng phƣơng pháp này chi phí rất tốn kém và thông thƣờng chỉ những hệ thống có nhiệm vụ quan trọng nhất sẽ sử dụng N-phiên bản module dự phòng; ví dụ trong ngành công nghiệp hàng không vũ trụ.

Ý tƣởng cơ bản của phƣơng pháp N-phiên bản module dự phòng là độ tin cậy hệ cấu trúc các modul song song. Những module hệ thống này có thể hỗ trợ thêm cho tính chính xác của hệ thống xuất phát từ những lỗi tiềm tàng trong giai đoạn thiết kế và đặc điểm kỹ thuật của dự án. Trong một hệ thống phần mềm N- phiên bản, mỗi module đƣợc thực hiện lên đến N thực thi khác nhau. Các

module độc lập thực hiện các nhiệm vụ song song tƣơng tự nhƣ nhau nhƣng kết quả trả về theo một cách khác nhau, mỗi module gửi kết quả thực thi của mình về cho hệ thống (kỳ vọng kết quả tất cả các phiên bản đều nhƣ nhau và chính xác), hệ thống sử dụng một số chƣơng trình bỏ phiếu để xác định kết quả đúng. Nếu hệ thống trên không bỏ phiếu có nghĩa là hệ thống dự phòng N- modul chỉ có thể tiếp cận giới hạn lý thuyết độ tin cậy cho một hệ thống song song đáng tin cậy hoàn toàn. Hệ thống có thể vƣợt qua những lỗi thiết kế có trong phần mềm bằng cách dựa trên khái niệm thiết kế đa dạng.

Một sự khác biệt quan trọng trong phần mềm N-phiên bản là thực tế hệ thống có thể bao gồm nhiều loại phần cứng và sử dụng nhiều phiên bản của phần mềm mục đích là để tăng sự đa dạng để tránh thất bại chế độ thông thƣờng. Sử dụng phần mềm N-phiên bản đƣợc khuyến khích mỗi phiên bản khác nhau đƣợc thực hiện càng đa dạng càng tốt, bao gồm bộ công cụ khác nhau, ngôn ngữ lập trình khác nhau và có thể môi trƣờng khác nhau. Các nhóm phát triển khác nhau nếu có ít sự tƣơng tác liên quan đến các chƣơng trình giữa chúng thì càng tốt.

Sự khác biệt giữa các phƣơng pháp phục hồi và khối phƣơng pháp N- phiên bản không phải là nhiều nhƣng điều đó rất quan trọng. Trong phƣơng pháp khối phục hồi truyền thống mỗi thành phần sẽ đƣợc thực hiện thay thế tuần tự cho đến khi tìm thấy một giải pháp có thể chấp nhận đƣợc xác định bởi hệ thống chính. Phƣơng pháp khối phục hồi đƣợc mở rộng để thực hiện bao gồm đồng thời các lựa chọn thay thế khác nhau. Phƣơng pháp dự phòng N-phiên bản thiết kế để hệ thống luôn luôn đƣợc thực hiện bằng phƣơng pháp sử dụng đồng thời N modul phần cứng.

Độ tin cậy của một hệ thống dự phòng N-phiên bản có thể đƣợc mô tả toán học nhƣ sau: 𝑃𝑠 𝑡 = 𝑛! 𝑛 − 𝑖 ! 𝑖! 𝑃𝑚 𝑛−𝑖 𝑡 [1 − 𝑃𝑚 𝑡 ]𝑖 (2.39) 𝑛−𝑚 𝑖=0 Trong đó: n: là số lƣợng các module dự phòng

m: là số lƣợng tối thiểu của các module bắt buộc phải hoạt động chính xác, bỏ qua sự sắp xếp bỏ phiếu.

Ví dụ: Xem xét một hệ thống gồm 5 module yêu cầu 3 module cho kết quả chính xác, giả thiết các module đều có một độ tin cậy là 0,95.

𝑅𝑠 𝑡 = 5! 5 − 𝑖 ! 𝑖! 𝑅𝑚 5−𝑖 𝑡 1 − 𝑅𝑚 𝑡 𝑖 2 𝑖=0 = 𝑅𝑚5 𝑡 + 5𝑅𝑚4 𝑡 1 − 𝑅𝑚 𝑡 + 10𝑅𝑚3 (𝑡)[1 − 𝑅𝑚(𝑡)]2 = 10(0,95)3 − 15 0,95 4 + 6(0,95)5 = 0,9988 2.7 Kết luận

Trong chƣơng hai của luận văn tôi đã trình bày các phƣơng pháp để nâng cao độ tin cậy của hệ thống bằng phƣơng pháp dự phòng cấu trúc.

Phƣơng pháp dự phòng đóng một vai trò quan trọng trong việc tăng cƣờng hệ thống đáng tin cậy. Vấn đề phân bổ dự phòng đã đƣợc phân tích cho nhiều cấu trúc khác nhau hệ thống. Một trong những hình thức thƣờng đƣợc sử dụng dự phòng là chế độ chờ dự phòng, tôi đã trình bày các phƣơng pháp dự phòng cấu trúc: hệ thống dự phòng cấu trúc có tải (còn gọi là dự phòng nóng), hệ thống dự phòng cấu trúc không tải (còn gọi là dự phòng lạnh), hệ thống dự phòng cấu trúc nhẹ tải(còn gọi là hệ thống dự phòng ấm) và hệ thống dự phòng bảo vệ tích cực.

Để nâng cao độ tin cậy của hệ thống ngoài các phƣơng pháp dự phòng cấu trúc hay còn gọi là dự phòng phần cứng thì chúng ta còn kết hợp sử dụng phƣơng pháp nâng cao độ tin cậy của phần mềm.

Độ tin cậy phần mềm là một phần quan trọng trong chất lƣợng phần mềm. Tuy nhiên nâng cao độ tin cậy phần mềm là khó khăn, khó khăn bắt nguồn từ sự hiểu biết và nắm bắt đầy đủ những thông tin về độ tin cậy phần mềm nói chung và đặc điểm của từng phần mềm nói riêng. Có rất nhiều phƣơng pháp và cách thức để nâng cao độ tin cậy của phần mềm tuy nhiên trong phạm vi của luận văn tôi chỉ trình bày sơ lƣợc một số vấn đề về độ tin cậy của phần mềm và đi sâu trình bày một phƣơng pháp N-phiên bản module dự phòng.

Ý tƣởng của phƣơng pháp dự phòng này giống nhƣ phƣơng pháp dự phòng cấu trúc song song. Những modul hệ thống này có thể hỗ trợ thêm cho tính chính xác của hệ thống xuất phát từ những lỗi tiềm tàng trong giai đoạn thiết kế và đặc điểm kỹ thuật của dự án. Mỗi modul trong hệ thống đƣợc thực hiện lên đến N thực thi khác nhau. Các modul độc lập thực hiện các nhiệm vụ song song tƣơng tự nhƣ nhau nhƣng kết quả trả về theo một cách khác nhau, sau đó mỗi modul gửi kết quả thực thi của mình về cho hệ thống và hệ thống sử dụng một số chƣơng trình bỏ phiếu để xác định kết quả trả lời đúng.

Nhƣ vậy, để nâng cao độ tin cậy của hệ thống thì kết hợp giữa các phƣơng pháp dự phòng cấu trúc hay còn gọi là dự phòng phần cứng và phƣơng pháp nâng cao độ tin cậy của phần mềm thì hệ thống sẽ hoạt động sẽ đảm bảo đƣợc độ tin cậy.

CHƢƠNG 3: XÂY DỰNG PHƢƠNG PHÁP NÂNG CAO ĐỘ TIN CẬY CHO HỆ THỐNG MÁY CHỦ DỰ PHÒNG

Một phần của tài liệu Nghiên cứu các phương pháp nâng cao độ tin cậy cho hệ thống tính toán qua cấu trúc hệ thống (Trang 54)