Chương 1 - TONG QUAT VE KY THUAT XAY DUNG PHAN ME CIWU LOI 1.1- Xây dựng phần mềm và các vấn đề gặp phải Như trên đã nói, việc xây dựng phần mêm khó tránh khỏi lỗi xây ra trong quá trình hoạt động. Cho dủ phần mềm đó dược thiết kế và phát triển bởi các nhà khoa học, các nhà lập trình suất sắc nhất và được sử dụng các công cụ trợ giúp hiện đại nhất thì cũng không thể nói rằng phần mềm không có lỗi. nữa, tăng cường tỉnh tin cậy của phần mềm lả một thách thức rất lớn nếu so sánh với việc làm đỏ đối với phần cựng. Thông thường lỗi phần cứng là các lỗi vật lý mà con người có thể biết rô đặc điểm hoặc có thé nhận biết trước dược lỗi phần cứng khi nó xây ra.
lrái lại, lỗi phần mềm không là lỗi vật lý, nó không bị cháy, nễ hoặc méo mó như phần cứng, nó Tất khó để nhìn thấy, nhận thức được vả quan trọng nhất là rất khó để khắc phục lãi phần mềm. Lỗi phần mễm xảy ra trong nhiều trường hợp khác nhau, có thể phần mềm được xây dựng theo đúng yêu cầu đặt ra nhưng bản thân yêu câu đó đã được hiểu sai so voi bai loan thực tế, cũng oó thể phần mềm được thiết kế và phát triển S81 SO VỚI YÊU. Có một điều cần lưu ¥ ting, không giếng như lỗi do phần cứng, đổi với lỗi phần mềm quá trình thay đối hoặc sửa chữa lỗi phân mễm có thể sinh ra các lỗi mới khác. Để khắc phục phần mềm có lỗi không chỉ đơn giản như phần cứng (thay thế phần cứng khác), vì việc này có thế làm phần mém cảng bị lỗi nhiều hơn.
ĐỀ giải quyết vẫn dé nay buộc người ta phãi nghĩ đến việc nghiên cửu các giải pháp kỹ thuật để phục vụ cho việc xây dựng phin mềm có khả năng chịu được lỗi. [2] ảnh giá và so sảnh các kỹ thuật xây dựng phân mềm chịn lẫt phan mém chiu 16i 14 mét day các hành động được thực hiện nhằm mục đích loại bố các trạng thái lỗi phần mềm (Grrors) trong quá trình hoạt động của phần mềm. Có hai dạng phục hồi lỗi đó là phục hổi quay lui (backward Tecovery) và phục hỗi tiến (forward recovery). - Phục hoi quay lui Ehi có lỗi xuất hiện trong một hệ thống phần mềm, hệ thống lúc này có trạng thái lỗi.
Việc phục hồi hệ thắng, như trên đã nói, là cố gắng dưa hệ thông quay trở về trạng thái không có lỗi (error-free). Kỹ thuật phục hồi quay lui thực hiện điều này bằng cách đưa hệ thống quay trở lại trạng thái trước đó, khi chưa có lỗi xây ra. Kỹ thuật này luồn mặc định rằng trạng thái của hệ thống trước đó không có lỗi. la gọi đó là điểm phục hồi hệ thống (checkpointing) đã được xác định trước.
Trạng thái của hệ thống tại điểm phục hồi này không bị ảnh hưởng bởi các lỗi vừa xây ra. Kỹ thuật phục hồi quay lui có một số ưu điểm sau: a Ap dung tốt đối với các lỗi chưa thể dự đoán có thể xây ra trong quá. trình hoat đông của phần mém. a Nguyén lý hoạt động của kỹ thuật nảy cho phép áp dụng rộng rãi mà không ần phái sửa dấi nhiều khi ứng dụng cho các phần mềm khác nhau.
a Kỹ thuật này được áp đụng mà không cần biết nội dung lỗi khi nó xảy ra. Yêu cầu duy nhất của kỹ thuật này là biết được trạng thái an toản trước trạng thái lỗi hiện tại. a_ Được áp dụng một cách trong suốt đôi với người sử đựng với bất kỳ lãi phần mềm nào a Áp dụng kỹ thuật phục hồi quay lui có thể loại bỏ bớt một số lỗi mà có thể sau khi được phục hồi lỗi sẽ bị mất di, có nghĩa là nếu chương trình thực hiện mả không xảy ra lỗi như trước. ảnh giá và so sảnh các kỹ thuật xây dựng phân mềm chịn lẫt Tuy nhiên kỹ thuật phục hồi quay lui cũng có một số nhược điểm nhất định: a_ Kỹ thuật này tiêu tốn nhiều tải nguyên hệ thống (thời gian, sự lính toán, sự lưu trữ.) a Thông thường hệ thẳng tạm thời dừng lại trong khi thực hiện phục héi a Nếu trong một hệ thống có nhiều tiến trình, một trong số đó sử dụng kỹ thuật phục hỗi quay lai thì hiệu ửng domino (vấn đề này sẽ dược nói đến ở phần sau) có thể xảy ra đối với toàn hệ thống.2 - Phục hỏi n Như đã nói ở trên, khi có lỗi xây ra trong hệ thống phần mềm, các kỹ thuật phục hỗồi sẽ tìm cách đưa hệ thống về trang thái không có lỗi.
Kỹ thuật phục hội tiến thực hiện việc nay bằng cách bổ qua bước phát sinh ra lỗi hoặc tìm một con đường khác để hệ thống tiếp tục hoạt đông với hy vọng con đường, mới không sinh ra lỗi. Kỹ thuật này có một số ưu điểm sau: a_ Kỹ thuật nảy áp dụng khá hiệu quả cho các hệ thống thời gian thực, tai vì khác với kỹ thuật phục hồi quay lui, nó không làm tổn thời gian chung của hệthống khi được kích hoạt. a Đối với các lỗi dược doán biết trước, sử dựng kỹ thuật này sẽ rất phủ hợp. Một số nhược điểm của kỹ thuật phục hẻi tiến: u Voi nguyén ly hoạt động như trên, kỹ thuật này chí được áp dựng cho từng hệ thống cụ thể với các yêu cầu cụ thể.
u_ Kỹ thuật này chí loại bỏ đi các lỗi đã dược nhận biết trước. Do đó yêu cầu tiên quyết của hệ thống khi áp dụng kỹ thuata nảy là phải hiểu biết một cách chỉ tiết các lỗi có thể gây ra cho hệ thống khi hoạt động ảnh giá và so sảnh các kỹ thuật xây dựng phân mềm chịn lẫt lỗi của hệ thống Trong thực tế các kỹ thuật như vậy đã được nhắc đến và nghiên cửu từ trên 20 năm nay. Hiện nay tổn lại rất nhiều kỹ thuật xây dựng phần mềm chịu lỗi được chia thành các nhóm như sau [8] a Nhém các kỹ thuật sử dụng một phiên bản phần mém (Single Version Software): Đây là các kỹ thuật cổ điển, luôn được áp dụng, trong khi phát triển bất kỳ phần mềm nào, ví đụ như kỹ thuật bắt lỗi, kỹ thuật quản lý ngoại lệ (exception handling) a Nhớm các kỹ thuật sử dụng nhiều phiên bản phần mềm (Multiple Version Software): Cac kf thuật này sử dụng nhiều phiên bản phần mềm được thiết kế khác nhau cùng thực hiện một công việc của bài toán. a Nhóm các kỹ thuật sử dụng nhiều dữ liệu làm đầu vào cho phần mém (Multi Data): Các kỹ thuật này sử dụng cách biển đổi từ một đữ liệu đầu vào duy nhất để cung cấp cho hệ thống, nhằm hy vọng rằng một trong số những dữ liệu đầu vào sau khi đã được biến đổi sẽ cho kết quả đầu ra như ý muốn.
Tom lại các kỹ thuật lập trình chịu lỗi được thiết kế nhằm mục đích cho phép hệ thống vẫn hoạt déng bình thường kể cả trong trường hợp có lỗi phát sinh sau quá trình phát triển hệ thông. Tuy nhiên các kỹ thuật lập trình chịu lỗi chỉ có tác dụng với giai đoạn mã hoá các yêu cầu phần mềm chứ không thể có tác dụng nếu người thiết kể và xây dựng hệ thống không hiểu yêu cầu bài toán thực tế đẫn đến mã hoá sai so với yêu cầu thực tế.3 - Phục hôi lỗi Phục hồi lỗi là một phẫn quan trọng trong quá trình xây dựng phần mềm chịu lỗi bao gỗm phát hiện lỗi, chẩn đoán nguyên nhân, thực hiện cô lập hay cách ly lỗi và phục hồi phần mềm lại tỉnh trạng mong muốn. Quá trình xây dựng ảnh giá và so sảnh các kỹ thuật xây dựng phân mềm chịn lẫt 1.2 - Các biện pháp để nâng cao tinh tin cậy của phần mêm 1.1 - Một số khái niệm Trước hết tìm hiểu một số khái niệm thường được sử dụng khi nói đến qua trình hoạt động cúa phần mềm bắt kỳ. Khái niệm dau tiên nói đến ở dây lá fault, đó chính là sự thiếu SÓT, SỰ Sai lầm mắc phải trong quả trình xây dựng phần mềm, nỏ chỉnh là nguyên nhân gây ra lỗi khi phần mềm hoạt động.
Error là một trạng thái lỗi được xác dịnh của phần mềm. Hrror có thể là niguyên nhân gây ra các error khác. Các fault cũng sẽ được nhận diện khi có một crror nảo đỏ xây ra 'riếp theo là khái niềm failue, nó xáy ra khi phần mềm thực hiện hành động, khác không thuộc trong các hành động, nằm trong dự định của nhà thiết kế khi thiết kế phần mềm. 'Irong thực tế các khải niêm trên có liên quan với nhau thanh một vỏng tròn, cái này là nguyễn nhân của cải kia, cái kia là hậu quả của cái này.
Các hiện pháp để nâng cao tính tin cây của phần mềm được chia thành hai nhóm chỉnh, nhóm thứ nhất áp dung trong qui trình xây dựng phần mễm (biên pháp tránh lỗi và biện pháp xây dựng phần mềm ohảu lỗi). Nhóm thứ hai được áp dụng sau khi phần mễm đã được xây dựng xong (biện pháp loại bỏ lỗi và biện pháp dự đoán lỗi). Tóm lại có các biện pháp sau được ap dụng để nang cao tính tin cây của phần mềm a Biện pháp tránh lỗi. a_ Biện pháp loại bỏ lỗi.
a_ Biện pháp dự đoán lỗi a_ Biện pháp xây dựng phần mềm chịu lỗi.2 - Biện pháp tránh lỗi Biện pháp này được thực hiên trong quá trình xây dựng phần mềm nhằm giảm bớt lỗi xây ra sau này khi phần mềm hoạt động. Nó góp phần xây dựng phần ảnh giá và so sảnh các kỹ thuật xây dựng phân mềm chịn lẫt 1.2 - Các biện pháp để nâng cao tinh tin cậy của phần mêm 1.1 - Một số khái niệm Trước hết tìm hiểu một số khái niệm thường được sử dụng khi nói đến qua trình hoạt động cúa phần mềm bắt kỳ. Khái niệm dau tiên nói đến ở dây lá fault, đó chính là sự thiếu SÓT, SỰ Sai lầm mắc phải trong quả trình xây dựng phần mềm, nỏ chỉnh là nguyên nhân gây ra lỗi khi phần mềm hoạt động. Error là một trạng thái lỗi được xác dịnh của phần mềm.
Hrror có thể là niguyên nhân gây ra các error khác. Các fault cũng sẽ được nhận diện khi có một crror nảo đỏ xây ra 'riếp theo là khái niềm failue, nó xáy ra khi phần mềm thực hiện hành động, khác không thuộc trong các hành động, nằm trong dự định của nhà thiết kế khi thiết kế phần mềm. 'Irong thực tế các khải niêm trên có liên quan với nhau thanh một vỏng tròn, cái này là nguyễn nhân của cải kia, cái kia là hậu quả của cái này.