« Home « Kết quả tìm kiếm

Đánh giá,so sánh các kỹ thuật xây dựng phần mềm chịu lỗi


Tóm tắt Xem thử

- Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi MỞ ĐẦU Từ mấy thập kỷ nay, các hệ thống máy tính đã được ứng dụng trong rất nhiều lĩnh vực đời sống xã hội, nhiều các ngành công nghiệp phụ thuộc rất nhiều vào các hệ thống máy tính trong quá trình hoạt động của mình.
- Sự an toàn và tính tin cậy trong hoạt động của các hệ thống phần mềm là yêu cầu cơ bản và quan trọng nhất trong nhiều lĩnh vực công nghiệp có ứng dụng công nghệ thông tin, chẳng hạn các ngành công nghiệp như công nghiệp hàng không, công nghiệp dầu lửa, các hoạt động thương mại điện tử, ngân hàng điện tử, công nghiệp tự động hoá, các hệ thống phục vụ trong lĩnh vực quốc phòng, lĩnh vực nghiên cứu không gian, công nghiệp sản xuất hàng gia dụng (sản xuất máy giặt, sản xuất ôtô.
- Cùng với sự phát triển của khoa học công nghệ thì nhu cầu giải các bài toán trên các phần cứng có hiệu năng tính toán cao và phần mềm chất lượng ngày càng trở nên quan trọng.[4] Trong một số trường hợp, nếu hệ thống máy tính hoạt động không bình thường sẽ là nguyên nhân xảy ra các tai nạn thảm khốc, khó lường trước được hậu quả, gây thiệt hại lớn về người cũng như về tài sản.
- Bên cạnh phần cứng, trong các hệ thống máy tính, phần mềm chiếm vị trí vô cùng quan trọng đảm bảo cho hệ thống hoạt động một cách bình thường.[10] Kích cỡ và độ phức tạp của các hệ thống thông tin liên tục phát triển với một tốc độ chóng mặt trong những năm 90 của thế kỷ trước và xu hướng vẫn đó vẫn tiếp tục trong tương lai là điều tất yếu.
- Do đó việc phát sinh ra lỗi phần mềm trong quá trình hoạt động rất dễ xảy ra và trong thực tế cho dù có được xây dụng một cách cẩn thận bởi những nhóm lập trình chuyên nghiệp nhất thì phần mềm vẫn không thể không có lỗi.[2] Vấn đề đặt ra ở đây là làm sao để nâng cao độ tin cậy nhằm làm giảm bớt các trường hợp phát sinh lỗi của hệ thống phần mềm, trong đó độ tin cậy của phần Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi mềm là xác suất không xảy ra lỗi khi phần mềm hoạt động trong một khoảng thời gian nào đó trong một môi trường cụ thể.
- Để giải quyết một phần vấn đề đặt trên, luận văn này chọn nghiên cứu đề tài “Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi”.
- Chương 1: Tổng quát về kỹ thuật xây dựng phần mềm chịu lỗi.
- Chương này trình bày một số khái niệm và các phương pháp chung trong xây dựng phần mềm chịu lỗi.
- Chương 2: Trình bày các phương pháp xây dựng phần mềm chịu lỗi bao gồm hai nhóm kỹ thuật là nhóm các kỹ thuật đa thiết kế và nhóm các kỹ thuật đa dữ liệu.
- Chương 3: Đánh giá, so sánh hiệu quả hoạt động giữa các kỹ thuật xây dựng phần mềm chịu lỗi với nhau và trình bày một số kỹ thuật xây dựng phần mềm chịu lỗi khác được thiết kế dựa trên cơ sở những kỹ thuật cơ bản trước đó.
- Chương 4: Trình bày một số bài toán áp dụng cho các kỹ thuật xây dựng phần mềm chịu lỗi giúp hiểu thấu đáo hơn sự hoạt động cũng như tính hiệu quả của từng kỹ thuật xây dựng phần mềm chịu lỗi đối với các hệ thống phần mềm.
- Cuối cùng là một số kết luận trong xây dựng phần mềm chịu lỗi và các vấn đề cần quan tâm nghiên cứu ở các giai đoạn nghiên cứu tiếp theo.
- Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi Chương 1 - TỔNG QUÁT VỀ KỸ THUẬT XÂY DỰNG PHẦN MỀM CHỊU LỖI 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 đó đượ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.
- Thêm 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.
- Trá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ó rấ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 với bài toán thực tế, cũng có thể phần mềm được thiết kế và phát triển sai so với yêu cầu.
- Có một điều cần lưu ý rằng, 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 đề này 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 phần 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ịu lỗi 1.2 - Các biện pháp để nâng cao tính tin cậy của phần mềm 1.2.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 quá trình hoạt động của phần mềm bất kỳ.
- Khái niệm đầu tiên nói đến ở đâ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 định của phần mềm.
- Tiế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.
- Các biệ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 dụng trong quá 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 chị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 áp dụng để nâng cao tính tin cậy của phần mềm.
- Biện pháp xây dựng phần mềm chịu lỗi.
- 1.2.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ịu lỗi mềm tin cậy hơn thông qua các giai đoạn xây dựng phần mềm, bắt đầu từ thiết lập các yêu cầu kỹ thuật của phần mềm, cho đến khi thiết kế kiến trúc, lựa chọn các phương pháp lập trình phù hợp, lựa chọn ngôn ngữ lập trình, các công cụ trợ giúp phát triển phần mềm.
- Trong mỗi giai đoạn phát triển phần mềm đếu phải có những yêu cầu đòi hỏi phải được tuân thủ.
- Trong thực tế, thông thường việc xây dựng phần mềm do các kỹ sư phần mềm đảm nhiệm, họ không phải là người nắm vững hệ thống hiện tại, do đó sai sót ở giai đoạn này rất dễ xảy ra.
- 1.2.3 - Biện pháp loại bỏ lỗi Biện pháp này được thực hiện tại giai đoạn kiểm tra, kiểm soát phần mềm sau khi nó đã được phát triển.
- Một số biện pháp được sử dụng để loại bỏ lỗi phần mềm như biện pháp kiểm thử (testing) phần mềm, biện pháp kiểm tra lại mã nguồn của phần mềm.
- 1.2.4 - Biện pháp dự đoán lỗi Biện pháp này được sử dụng trong khi kiểm tra lại phần mềm sau khi được phát triển để dự đoán các lỗi của phần mềm có thể xảy ra trong quá trình hoạt động.
- Việc thực hiện biện pháp này dựa trên độ đo tính tin cậy của phần mềm.
- Nó sử dụng các công thức biểu diễn sự liên quan của fault và failure, đến môi trường hoạt động của phần mềm như hệ điều hành, dữ liệu của phần mềm… 1.2.5 - Biện pháp xây dựng phần mềm chịu lỗi Có một cách để giảm bớt tính rủi ro trong quá trình thiết kế phần mềm, do đó tăng cường tính ổn định của phần mềm đó là sử dụng các kỹ thuật xây dựng phần mềm có khả năng chịu lỗi.
- Với việc sử dụng các kỹ thuật này, khi có lỗi xảy ra trong hệ thống, nó sẽ cung cấp cho hệ thống các cơ chế chịu đựng được Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi lỗi của hệ thống.
- Hiện nay tồn tạ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.
- 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í dụ như kỹ thuật bắt lỗi, kỹ thuật quản lý ngoại lệ (exception handling.
- Nhóm các kỹ thuật sử dụng nhiều phiên bản phần mềm (Multiple Version Software): Các kỹ 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.
- 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 dữ 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.
- Tóm 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 độ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ế dẫn đến mã hoá sai so với yêu cầu thực tế.
- 1.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ịu lỗi phần mềm chịu lỗi là một dãy 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 (errors) trong quá trình hoạt động của phần mềm.
- 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.
- Kỹ thuật phục hồi quay lui có một số ưu điểm sau.
- Áp dụng tốt đối với các lỗi chưa thể dự đoán có thể xảy ra trong quá trình hoạt động của phần mềm.
- 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 cần phải sửa đổi nhiều khi ứng dụng cho các phần mềm khác nhau.
- Kỹ thuật này được áp dụng mà không cần biết nội dung lỗi khi nó xảy ra.
- Được áp dụng một cách trong suốt đối với người sử dụng với bất kỳ lỗi phần mềm nào.
- Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi 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.
- Kỹ thuật này tiêu tốn nhiều tài nguyên hệ thống (thời gian, sự tính toán, sự lưu trữ.
- 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 lui thì hiệu ứng domino (vấn đề này sẽ được nói đến ở phần sau) có thể xảy ra đối với toàn hệ thống.
- 1.3.2 - Phục hồi tiế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ề trạng thái không có lỗi.
- Kỹ thuật này có một số ưu điểm sau.
- Đối với các lỗi được đoá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.
- Với nguyên lý 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ể.
- Kỹ thuật này chỉ loại bỏ đi các lỗi đã được nhận biết trước.
- Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi 1.4 – Quan niệm “dự phòng” trong việc xây dựng phần mềm chịu lỗi Ý tưởng chính của việc xây dựng bất kỳ một hệ thống chịu lỗi nào đó là có sẵn một số tài nguyên để làm dự phòng cho hệ thống.
- được phần mềm đó sử dụng hoặc cũng có thể sử dụng thời gian để dự phòng cho hệ thống.
- Với trọng tâm nghiên cứu về vấn đề xây dựng phần mềm chịu lỗi thì các tài nguyên dự phòng chính cho một hệ thống phần mềm đó là dự phòng các chương trình và dự phòng dữ liệu.
- 1.4.1 - Dự phòng phần mềm Phần mềm ở đây bao gồm các chương trình, các module, các hàm hay các đối tượng được sử dụng trong hệ thống.
- Tuy nhiên, không như phần cứng là chỉ cần thay thế một phần cứng khác tương đương thì hệ thống sẽ hoạt động tốt trở lại, nếu phần mềm cũng được dự phòng như vậy thì nó chỉ làm cho hệ thống lại sinh ra lỗi như trước mà thôi.
- Do vậy thông thường những phần mềm dự phòng được xây dựng theo cách khác hẳn so với phần mềm chính thức.
- Các phần mềm dự phòng khác với phần mềm chính thức cả về phương pháp tiếp cận bài toán, về cách thiết kế bài toán, khác về ngôn ngữ lập trình và thậm chí khác cả về đội ngũ nhân sự phát triển hệ thống đó.
- 1.4.2 - Dự phòng dữ liệu Có một cách khác để xây dựng phần mềm chịu lỗi thông qua việc dữ liệu đầu vào của hệ thống được biến đổi một cách thích hợp sao cho dữ liệu đầu vào Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi không là nguyên nhân khiến hệ thống bị lỗi.
- 1.5 – Các phương pháp xây dựng phần mềm chịu lỗi 1.5.1 – Phương pháp đa thiết kế Kỹ thuật đa thiết kế thực hiện xây dựng nhiều biến thể phần mềm khác nhau nhằm phục vụ một công việc được bài toán đặt ra.
- Cần phải lưu ý rằng các biến thể phần mềm phải được thiết kế và phát triển hoàn toàn khác nhau, chứ không phải chỉ đơn thuần copy thành nhiều biến thể cùng một cách thiết kế và phát triển.
- Tại vì nếu thực hiện như vậy thì không những làm giảm tính tin cậy của phần mềm mà còn có thể làm tăng số lượng lỗi của phần mềm hiện tại.
- Với mục đích đó người xây dựng hệ thống hy vọng rằng các lỗi phát sinh ở một biến thể phần mềm này có thể không xảy ra với biến thể phần mềm khác, do vậy hệ thống vẫn tiếp tục thực hiện một cách bình thường.[4] Dữ liệu đầu vào được cung cấp cho các biến thể để các biến thể hoạt động.
- Trong thực tế có rất nhiều thuật toán sử dụng để xây dựng bộ quyết Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi định, tùy thuộc vào đặc điểm cũng như tình huống cụ thể của từng bài toán để chọn lựa giải thuật bộ quyết định cho phù hợp.
- Phương pháp đa thiết kế có thể áp dụng cho nhiều lớp trong một hệ thống, có thể áp dụng cho phần cứng, phần mềm ứng dụng, phần mềm hệ thống, hệ điều hành.
- Hình vẽ dưới đây minh họa cho kỹ thuật đa thiết kế: 1.5.2 – Phương pháp đa dữ liệu Ta có khái niệm failure domain, tức là tập các đầu vào gây ra lỗi phần mềm.
- Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi Đầu vào y có thể xấp xỉ x hoặc có thể nó chứa thông tin x ở một khuôn dạng khác.
- Hoặc có thể xây dựng một cấu trúc khác của kỹ thuật đa dữ liệu (Hình 1.4).
- Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi Ta thấy rằng, đối với kỹ thuật đa dữ liệu thì điều quan trọng nhất là làm sao để thiết kế được bộ biến đổi dữ liệu (Data re-expression algorimths).
- 1.5.3 – Phương pháp đa thời điểm Kỹ thuật đa thời điểm đưa ra ý tưởng loại bỏ lỗi phần mềm bằng cách thực hiện một sự kiện nào đó (trong hệ thống phần mềm) tại nhiều thời điểm khác nhau.
- Kỹ thuật này đặc biệt hiệu quả đối với những lỗi phần mềm xảy ra trong khoảng thời gian “ngắn”.
- Các phần mềm sử dụng kỹ thuật thiết kế này được sử dụng dữ liệu tại các thời điểm khác nhau, do vậy trong một số trường hợp thì kỹ thuật này cho kết quả tương tự kỹ thuật đa dữ liệu.
- Hình 1.5 minh hoạ cho kỹ thuật đa thời điểm.
- Đầu vào tại thời điểm it cho ra kết quả của nó, giả sử rằng kết quả này là sai, phầm mềm sẽ tiếp tục thực hiện với đầu vào tại thời điểm 1it, giả sử nó cho ra kết quả đúng thì phần mềm sẽ chấp nhập đầu vào tại thời điểm này.
- Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi 1.6 - Kết luận Nhu cầu nâng cao độ tin cậy của các hệ thống phần mềm ngày càng cấp bách đặc biệt là trong một số lĩnh vực khoa học ứng dụng công nghệ cao.
- Tuy nhiên thực tế trong quá trình hoạt động phần mềm rất thường xảy ra lỗi.
- Để nâng cao độ tin cậy của phần mềm người ta thường sử dụng các biện pháp sau.
- Biện pháp xây dựng phần mềm chịu lỗi (fault tolerance).
- Các kỹ thuật xây dựng phần mềm chịu lỗi thường sử dụng các phương pháp phục hồi trạng thái hệ thống như phương pháp phục hồi quay lui và phương pháp phục hồi tiến.
- Ngoài ra các kỹ thuật xây dựng phần mềm chịu lỗi được thiết kế dựa trên một số quan niệm về tính “dự phòng” trong hệ thống.
- Có nghĩa là người xây dựng Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi hệ thống sẽ xây dựng một số thành phần để “dự phòng” nhằm sử dụng đến khi cần thiết.
- Dựa trên những quan niệm nền tảng đó người ta đưa ra một số phương pháp xây dựng phần mềm chịu lỗi.
- Phương pháp đa thiết kế: Dựa trên ý tưởng xây dựng nhiều biến thể phần mềm dự phòng cùng giải quyết chung một bài toán đặt ra.
- Chương tiếp theo sẽ trình bày chi tiết sự hoạt động của các kỹ thuật thuộc hai nhóm phương pháp đa thiết kế và phương pháp đa dữ liệu.
- Đánh giá và so sánh các kỹ thuật xây dựng phần mềm chịu lỗi Chương 2 – CÁC KỸ THUẬT XÂY DỰNG PHẦN MỀM CHỊU LỖI 2.1 – Các kỹ thuật đa thiết kế Nguyên tắc cơ bản của kỹ thuật đa thiết kế là xây dựng nhiều thành phần phần mềm (software components) để giải quyết cùng một bài toán.
- Với việc sử dụng kỹ thuật này, người thiết kế phần mềm hy vọng rằng xác suất phần mềm bị lỗi sẽ giảm xuống.
- Tùy theo từng bài toán cụ thể mà nên ứng dụng kỹ thuật phù hợp.
- 2.1.1 - Kỹ thuật Recovery Blocks (RcB) Kỹ thuật RcB là một trong những kỹ thuật xây dựng phần mềm chịu lỗi cơ bản nhất.
- Bên cạnh tính chất “đa thiết kế”, RcB còn có thể được xem như là kỹ thuật xây dựng phần mềm chịu lỗi động, có nghĩa là việc chọn lựa kết quả của các biến thể được điều chỉnh phụ thuộc vào bộ kiểm tra chấp nhận kết quả (acceptance test - AT)

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt