tiểu luận phát triển phần mềm tin cậy (dependable software)

15 564 2
tiểu luận phát triển phần mềm tin cậy (dependable software)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC CÔNG NGHỆ TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TIỂU LUẬN PHÁT TRIỂN PHẦN MỀM TIN CẬY (DEPENDABLE SOFTWARE) Giảng viên: Nhóm 20: TS Võ Đình Hiếu Nguyễn Trung Kiên (MHV: 12025228, kienntr@gmail.com) Hà nội, tháng 4/2013 Phát triển phần mềm tin cậy Dependable Software MỤC LỤC TỔNG QUAN PHÁT TRIỂN PHẦN MỀM TIN CẬY KẾT LUẬN 14 TÀI LIỆU THAM KHẢO 15 2/15 Phát triển phần mềm tin cậy Dependable Software TỔNG QUAN 1.1 Đặt vấn đề Như biết, hệ thống máy tính ứng dụng rộng rãi hoạt động kinh doanh tổ chức, doanh nghiệp sống cá nhân, với phát triển vấn đề bất cập phát sinh từ hệ thống lỗi phát sinh từ phần mềm tang theo Một lỗi phần mềm máy chủ công ty thương mại điện tử dẫn tới mát lượng vốn lớn công ty, chí khách hang công ty Một lỗi phần mềm nhúng hệ thống điều khiển ô tô khiến hãng sản xuất phải thực đợt truy hồi tốn kém, chí dẫn tới tai nạn giao thông Hay lây nhiễm mã độc hệ thống máy tính công ty cần đến hoạt động quét virus vất vả, với nguy liệu nhạy cảm lớn Chính hệ thống máy tính ngày quan trọng với công ty, cá nhân, hay phủ, nên đặc tính cần thiết hệ thống phần mềm phải tin cậy Để nghiên cứu đặc tính tin cậy nêu phần mềm, khái niệm “dependability” – tin cậy- đưa Jean-Claude Laprie (1995) [1], mở đầu cho tìm hiểu việc phát triển phần mềm tin cậy Và nghiên cứu, với thực tế ngày rằng, tính tin cậy hệ thống chí quan trọng chức chi tiết hệ thống Vì vậy, việc tìm hiểu phát triển phần mềm tin cậy trở thành yêu cầu cấp thiết lĩnh vực phát triển phần mềm nói chung Việc phát triển phần mềm tin cậy không đơn nhiệm vụ, công đoạn nhỏ lẻ mà trình đánh giá, phân tích, phát triển kiểm soát phần mềm Để làm rõ điều này, tập trung tìm hiểu tổng hợp kiến thức việc phát triển phần mềm tin cậy 3/15 Phát triển phần mềm tin cậy Dependable Software Xin chân thành cảm ơn TS Võ Đình Hiếu giúp đỡ hoàn thành tài liệu 1.2 Mục tiêu tài liệu Tài liệu làm rõ nội dung sau: - Khái niệm phần mềm tin cậy - Quy trình phát triển phần mềm tin cậy - Đề xuất đánh giá trạng phát triển phần mềm Việt Nam 1.3 Phạm vi tìm hiểu Trong khuôn khổ tiểu luận, xác định phạm vi tìm hiểu sau - Đối tượng tìm hiểu: tập trung vào quy trình phát triển phần mềm xoay quanh vấn đề phần mềm tin cậy Một quy trình đầy đủ, theo chuẩn ISO CMMI không đề cập - Phạm vi nội dung: nội dung nêu mức độ tổng quát, có tính lý thuyết cao, có số nội dung tìm hiểu chi tiết dựa tìm hiểu tài liệu kinh nghiệm cá nhân Đây guiline đầy đủ để phát triển phần mềm tin cậy 4/15 Phát triển phần mềm tin cậy Dependable Software PHÁT TRIỂN PHẦN MỀM TIN CẬY 2.1 Khái niệm tin cậy Có nhiều khái niệm tính cậy phần mềm, tìm kiếm công cụ google, trang wikipedia coi “tính tin cậy thước đo hệ thống độ sẵn sàng, tin tưởng khả hỗ trợ bảo trì hệ thống” Trong lĩnh công nghệ phần mềm, ta quan tâm đến khái niệm mô tả I Sommerville sau [2] Hình 01- Khái niệm tính tin cậy Có bốn nhân tố để xác định độ tin cậy phần mềm, Tính sẵn sàng (availability): hệ thống cung cấp chức dịch vụ hữu ích tới người dùng cách liên tục, vào thời gian Tính tin tưởng (reliability): giai đoạn bất kỳ, hệ thống hoạt động cung cấp dịch vụ xác với dự tính người dùng Tính an toàn (safely): hệ thống hoạt động không gấy tổn hại đến người môi trường xung quanh Tính bảo mật (security): hệ thống chống lại công 5/15 Phát triển phần mềm tin cậy Dependable Software hoạt động xâm hại khác 2.2 Quy trình phát triển phần mềm tin cậy Để xây dựng phần mềm có tính tin cậy cao, người phát triển cần đưa quy trình đầy đủ xuyên suốt từ lúc đặc tả yêu cầu, xây dựng giải pháp, phát triển kiểm thử phần mềm Mỗi giai đoạn có đặc điểm phương thức khác để xây dựng tính tin cậy 2.2.1 Đặc tả yêu cầu Đặc tả yêu cầu kiểm soát rủi ro hướng tiếp cận phổ biến người phát triển phần mềm có yêu cầu cao tính an toàn bảo mật Những yêu cầu cần mô tả rõ đặc bao gồm: o Cách thức hệ thống tự bảo vệ khỏi lỗi bên o Ngăn chặn lỗi hệ thống gây tổi hại tới môi trường xung quanh o Cách thức ngăn chặn công từ môi trường lên hệ thống o Phương thức khôi phục hệ thống xảy lỗi Để làm điều này, thông thường người phát triển trải qua bước phân tích sau: Hình 02- Quy trình đặc tả kiểm soát rủi ro Bước Định ranh rủi ro: thực mô tả rủi ro tiềm ẩn Bước Đánh giá rủi ro: phân lớp rủi ro 6/15 Phát triển phần mềm tin cậy Dependable Software Bước Phân tích rủi ro: tìm hiểu nguyên nhân thực gây rủi ro Bước Giảm thiểu rủi ro: đưa cách thức để đề phòng, giảm thiểu rủi ro Áp dụng phương thức tiếp cận trên, người phát triển cần mô tả đặc tính liên quan đến độ tin cậy phần mềm sau 2.2.1.1 Đặc tả tính an toàn Hệ thống xảy lỗi ảnh hưởng tới môi trường xung quanh, gây tổn thương chí ảnh hưởng tới tính mạng người môi trường Đặc tả tính an toàn việc yêu cầu để giảm thiểu nguy Thường đặc tả an toàn không quan tâm tới hoạt động thông thường hệ thống, nên mô tả hệ thống cần tắt có cố Do người phát triển cần có mô tả cân đối tính an toàn hoạt động cung cấp dịch vụ thông thường 2.2.1.2 Đặc tả tính tin tưởng Tính tin tưởng hệ thống phụ thuộc vào phần cứng, phần mềm, lực người điều hành Khác với tính an toàn hay bảo mật liên quan trực tiếp tới thiết kế hệ thống, đặc tả tính tin tưởng liên quan nhiều tới theo dõi hệ thống Ví dụ đặc tả yêu cầu hệ thống cần khởi động lại lần/ tuần, xay cố hệ thống cần phải ghi log thông tin Có số thước đo cho tính tin tưởng như: Probability of failure on demand (POFOD): khả lỗi thực thi yêu cầu Ví dụ POFOD = 0.001, nghĩa hệ thống có khả 1/1,000 xảy lỗi yêu cầu thực thi Rate of occurrence of failures (ROCOF): tỉ lệ xảy lỗi, tính theo 7/15 Phát triển phần mềm tin cậy Dependable Software thời gian Availability (AVAIL): độ sẵn sàng hệ thống Ví dụ 0.9999 có nghĩa hệ thống sẵn sàng 99,99% thời gian hoạt động 2.2.1.3 Đặc tả bảo mật Tính bảo mật giao thoa với tính an toàn hệ thống Thông thường đặc tả tính bảo mật mô tả trường hợp không chấp nhận hệ thống, ví dụ đặc tả không cho phép truy nhập chưa xác thực tới hệ thống 2.2.2 Xây dựng giải pháp 2.2.2.1 Xây dựng hệ thống bảo vệ Hệ thống bảo vệ thệ thống kết hợp với hệ thống khác Thường kiểm soát số tiến trình, ví dụ kiểm soát đoàn tàu không người lái, kiểm soát quy trình sản xuất tự động Việc kết hợp này, mô tả sơ đồ Hình 03- Xây dựng hệ thống bảo vệ 8/15 Phát triển phần mềm tin cậy Dependable Software 2.2.2.2 Kiến trúc tự giám sát Kiến trúc tự giám sát kiếm trúc hệ thống thiết kế để giám sát hoạt động thực thi số nhiệm vụ lỗi hệ thống phát Phương pháp chung thực việc chia hoạt động thành số kênh riêng biệt so sánh kết đầu kênh đó, giống nghĩa hoạt động bình thướng, có sai khác nghĩa hệ thống phát sinh lỗi Hình 04- Kiến trúc hệ thống tự giám sát 2.2.2.3 Kiến trúc hệ thống N-version Trước hết, ta tìm hiệu hệ thống TMR – triple modular redundancy, hệ thống mà thành phần phần cứng có ba (hoặc hơn) bảo Giá trị output thành phần chạy qua so sánh hoạt động theo chế “đa số phiếu”, tức có ba giá trị output giống giá trị đúng, có giá trị khác bị loại bỏ sửa lỗi 9/15 Phát triển phần mềm tin cậy Dependable Software Hình 05- Hệ thống TRM Tương tụ cách hoạt động vậy, hệ thống phần mềm chia thành N phiên chạy song song giới thiệu Avizienis (1985) [3] Một hệ thống phần mềm thược nhiều nhóm khác nhau, thường thực thi máy tính khác nhau, thực thi theo chế “đa số phiếu” Hình 06- Kiến trúc hệ thống N-version So sánh với hệ thống tự giám sát kiến trúc hệ thống N-version tốn việc phát triển phần mềm không cần hệ thống giám sát bên Tuy nhiên việc phần mềm thực nhiều nhóm khác lại khiến chi phí phát triển lớn 2.2.3 Lập trình Thông thường giai đoạn lập trình độ tin cậy phần mềm phụ thuộc nhiều vào trình độ lập trình viên Có nhiều cách thức lập trình, nhiều loại ngôn ngữ lập trình khách nhau, nhiên quan điểm phát triển phần mềm tin cậy số guide-line (hướng dẫn) hữu ích 2.2.3.1 Kiểm soát truy cập thông tin chương trình Chỉ cá nhân cần biết số thông tin phép truy cập 10/15 Phát triển phần mềm tin cậy Dependable Software thông đó, thành phần không liên quan khác không truy cập 2.2.3.2 Kiểm tra tất giá trị nhập vào Nên kiểm tra liệu đầu vào đọc từ môi trường Thông thường ta kiểm tra số yếu tố Kiểm tra phạm vi liệu (ví dụ từ 0.0 đến 1.0) Kiểm tra kích thước liệu (ví dụ tài khoản ngân hàng phải chữ số) Kiểm tra định dang liệu (ví dụ liệu email, tên người ) Kiểm tra ý nghĩa liệu (ví dự lượng điện tiêu thụ gia đình tháng thường tương đương nhau) 2.2.3.3 Cung cấp quy trình xử lý cho tất ngoại lệ Khi có ngoại lệ xảy ra, nên thực Báo cho thành phần mức cao biết ngoại lệ xảy cung cấp thông tin ngoại lệ Thực thi số xử lý liên quan tới ngoại lệ, khôi phục liệu Nên chuyển quyền điều khiển ngoại lệ tới hệ thống hỗ trợ chạy run-time 2.2.3.4 Hạn chế sử dụng cấu trúc dễ gây lỗi Một số cấu trúc ngôn ngữ lập trình dễ gây lỗi, nên ta cần hạn chế sử dụng, ví dụ như: Lệnh rẽ nhánh go-to Số dấu phẩy động Con trỏ Khởi tạo động nhớ Chạy song song Đệ quy 11/15 Phát triển phần mềm tin cậy Dependable Software Gọi ngắt hệ thống Thừa kế Đặt tên gọi liên kết (alias) 10.Dãy không xác định độ dài trước 11.Xử lý liệu input mặc định 2.2.3.5 Cung cấp khả khởi tạo lại Trong nhiều hệ thống, ta cần phải cung cấp khả khởi tạo lại, cách tạo liệu trước xử lý Các xử lý thực không thực trực tiếp lên liệu gốc Một số ví dụ nhứ Trong thương mại điện tử, cần lưu liệu form người dùng nhập vào, cho phép người dùng truy cập submit mà không cần nhập lại nhiều lần Trong giao dịch, cần tự động lưu liệu đề phòng xảy mát ta lấy lại liệu gần 2.2.3.6 Kiểm tra tất biên giới dãy Tất ngôn ngữ cho phép định nghĩa dãy, cấu trúc lưu liệu tương đồng truy cập số index Ta cần kiểm tra biên giới dãy tránh trường hợp xảy lỗi nhớ vượt giới hạn dãy 2.2.3.7 Đặt time-out gọi thành phần khác Nhiều hệ thống phân tán, thành phần đặt máy tính khác gọi chéo lẫn Khi thành phần A gọi tới B đợi phản hồi, B lại bị lỗi nên không phản hồi được, thành phần A không tiếp tục xử lý nhiều bị treo Để tránh xảy, ta cần đặt time-out trước gọi thành phần khác 12/15 Phát triển phần mềm tin cậy Dependable Software 2.2.3.8 Đặt tên số theo giá trị giới thực Việc đặt tên số theo giá trị mang theo có lợi ích nhứ Hạn chế lỗi sử dụng sai giá trị Khi giá trị thay đổi, ta cần đổi giá trị số mà tìm kiếm chương trình 13/15 Phát triển phần mềm tin cậy Dependable Software KẾT LUẬN Phần mềm tin cậy yêu cầu cần thiết nhiều lĩnh vực sống nay, nhiên việc phát triển phần mềm tin cậy vấn đề đơn giản Yêu cầu tính tin cậy phần mềm chí vượt qua yêu cầu chức phần mềm, đặc biệt lĩnh vực điều khiển tự động ô tô, máy bay, lĩnh vực chứng khoán, thương mại điện tử, y tế Chính thế, việc tìm hiểu, làm chủ bước ứng dụng phát triển phần mềm tin cận thách thức người phát triển phần mềm Tại Việt Nam nay, công nghệ thông tin giai đoạn phát triển, từ việc xây dựng phần mềm quản lý, điều hành cho đơn vị, tổ chức vừa nhỏ, dần chuyển sang hệ thống lớn cho tập đoàn, tổ chức phủ, hệ thống phục vụ lượng lớn người dùng viễn thông dịch vụ trực tuyến Chính vậy, trước yêu cầu phần mềm tin cậy chưa thực cấp thiết, yếu tố then chốt giai đoạn Môt doanh nghiệp phát triển phần mềm có thực tồn giai đoạn hay không, phụ thuộc phần vào tính tin cậy sản phẩm phần mềm họ tạo 14/15 Phát triển phần mềm tin cậy Dependable Software TÀI LIỆU THAM KHẢO [1] http://en.wikipedia.org/wiki/Dependability [2] I Sommerville, Software Engineering 9th, 2010, chapter 11.1 Dependability properties [3] http://en.wikipedia.org/wiki/N-version_programming I Sommerville, Software Engineering 9th, 2010 A Avizienis, J.-C Laprie and B Randell: Fundamental Concepts of Dependability Research Report No 1145, LAAS-CNRS, April 2001 15/15 [...]... không phải tìm kiếm cả chương trình 13/15 Phát triển phần mềm tin cậy Dependable Software 3 KẾT LUẬN Phần mềm tin cậy là một yêu cầu cần thiết trong rất nhiều lĩnh vực trong cuộc sống hiện nay, tuy nhiên việc phát triển phần mềm tin cậy không phải là một vấn đề đơn giản Yêu cầu về tính tin cậy của phần mềm thậm chí vượt qua cả yêu cầu về các chức năng trong phần mềm, đặc biệt trong các lĩnh vực điều khiển... vụ trực tuyến Chính vì vậy, trước đây yêu cầu về phần mềm tin cậy chưa thực sự cấp thiết, nhưng đây là sẽ một yếu tố then chốt trong giai đoạn tiếp theo Môt doanh nghiệp phát triển phần mềm có thực sự tồn tại được trong giai đoạn mới này hay không, phụ thuộc một phần vào tính tin cậy của các sản phẩm phần mềm do họ tạo ra 14/15 Phát triển phần mềm tin cậy Dependable Software 4 TÀI LIỆU THAM KHẢO 1 [1]... lĩnh vực chứng khoán, thương mại điện tử, y tế Chính vì thế, việc tìm hiểu, làm chủ và từng bước ứng dụng phát triển phần mềm tin cận là một thách thức đối với người phát triển phần mềm Tại Việt Nam hiện nay, nền công nghệ thông tin đang trong giai đoạn phát triển, từ việc xây dựng các phần mềm quản lý, điều hành cho các đơn vị, tổ chức vừa và nhỏ, đang dần chuyển sang các hệ thống lớn cho các tập... khi gọi các thành phần khác Nhiều hệ thống phân tán, các thành phần đặt trên các máy tính khác nhau và được gọi chéo lẫn nhau Khi thành phần A gọi tới B và đợi phản hồi, nhưng B lại bị lỗi nên không phản hồi được, thì thành phần A sẽ không tiếp tục xử lý được nữa và nhiều khi sẽ bị treo Để tránh xảy, ta cần đặt time-out trước khi gọi thành phần khác 12/15 Phát triển phần mềm tin cậy Dependable Software.. .Phát triển phần mềm tin cậy Dependable Software thông đó, nhưng thành phần không liên quan khác sẽ không được truy cập 2.2.3.2 Kiểm tra tất cả giá trị nhập vào Nên kiểm tra dữ liệu đầu vào ngay khi nó được đọc từ môi trường Thông thường... trúc trong các ngôn ngữ lập trình dễ gây lỗi, nên ta cần hạn chế sử dụng, ví dụ như: 1 Lệnh rẽ nhánh go-to 2 Số dấu phẩy động 3 Con trỏ 4 Khởi tạo động bộ nhớ 5 Chạy song song 6 Đệ quy 11/15 Phát triển phần mềm tin cậy Dependable Software 7 Gọi ngắt hệ thống 8 Thừa kế 9 Đặt tên gọi liên kết (alias) 10.Dãy không xác định độ dài trước 11.Xử lý dữ liệu input mặc định 2.2.3.5 Cung cấp khả năng khởi tạo lại... thụ gia đình trong các tháng thường là tương đương nhau) 2.2.3.3 Cung cấp quy trình xử lý cho tất cả ngoại lệ Khi có một ngoại lệ xảy ra, nên thực hiện 1 Báo cho các thành phần mức cao hơn biết ngoại lệ xảy ra và cung cấp các thông tin về ngoại lệ đó 2 Thực thi một số xử lý liên quan tới ngoại lệ, như khôi phục dữ liệu 3 Nên chuyển quyền điều khiển ngoại lệ tới hệ thống hỗ trợ chạy run-time 2.2.3.4 Hạn ... guiline đầy đủ để phát triển phần mềm tin cậy 4/15 Phát triển phần mềm tin cậy Dependable Software PHÁT TRIỂN PHẦN MỀM TIN CẬY 2.1 Khái niệm tin cậy Có nhiều khái niệm tính cậy phần mềm, tìm kiếm... 13/15 Phát triển phần mềm tin cậy Dependable Software KẾT LUẬN Phần mềm tin cậy yêu cầu cần thiết nhiều lĩnh vực sống nay, nhiên việc phát triển phần mềm tin cậy vấn đề đơn giản Yêu cầu tính tin cậy. .. lại công 5/15 Phát triển phần mềm tin cậy Dependable Software hoạt động xâm hại khác 2.2 Quy trình phát triển phần mềm tin cậy Để xây dựng phần mềm có tính tin cậy cao, người phát triển cần đưa

Ngày đăng: 07/11/2015, 17:33

Từ khóa liên quan

Mục lục

  • 1 TỔNG QUAN

    • 1.1 Đặt vấn đề

    • 1.2 Mục tiêu tài liệu

    • 1.3 Phạm vi tìm hiểu

    • 2 PHÁT TRIỂN PHẦN MỀM TIN CẬY

      • 2.1 Khái niệm tin cậy

      • 2.2 Quy trình phát triển phần mềm tin cậy

        • 2.2.1 Đặc tả yêu cầu

          • 2.2.1.1 Đặc tả tính an toàn

          • 2.2.1.2 Đặc tả tính tin tưởng

          • 2.2.1.3 Đặc tả bảo mật

          • 2.2.2 Xây dựng giải pháp

            • 2.2.2.1 Xây dựng hệ thống bảo vệ

            • 2.2.2.2 Kiến trúc tự giám sát

            • 2.2.2.3 Kiến trúc hệ thống N-version

            • 2.2.3 Lập trình

              • 2.2.3.1 Kiểm soát sự truy cập thông tin trong chương trình

              • 2.2.3.2 Kiểm tra tất cả giá trị nhập vào

              • 2.2.3.3 Cung cấp quy trình xử lý cho tất cả ngoại lệ

              • 2.2.3.4 Hạn chế sử dụng các cấu trúc dễ gây lỗi

              • 2.2.3.5 Cung cấp khả năng khởi tạo lại

              • 2.2.3.6 Kiểm tra tất cả biên giới của dãy

              • 2.2.3.7 Đặt time-out khi gọi các thành phần khác

              • 2.2.3.8 Đặt tên các hằng số theo giá trị của nó trong thế giới thực

              • 3 KẾT LUẬN

              • 4 TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

Tài liệu liên quan