1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

15 565 2

Đ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

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 221,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

1 TỔNG QUAN 1.1 Đặt vấn đề Như chúng ta đã biết, hiện nay các hệ thống máy tính được ứng dụng rộng rãi trong hoạt động kinh doanh của các tổ chức, doanh nghiệp cũng như trong cuộc sống c

Trang 1

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:

TS Võ Đình Hiếu

Nhóm 20:

Nguyễn Trung Kiên (MHV:

12025228, kienntr@gmail.com)

Hà nội, tháng 4/2013

Trang 2

MỤC LỤC

1 TỔNG QUAN 3

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

3 KẾT LUẬN 14

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

Trang 3

1 TỔNG QUAN

1.1 Đặt vấn đề

Như chúng ta đã biết, hiện nay các hệ thống máy tính được ứng dụng rộng rãi trong hoạt động kinh doanh của các tổ chức, doanh nghiệp cũng như trong cuộc sống của mỗi cá nhân, cùng với sự phát triển đó thì các vấn đề bất cập phát sinh từ hệ thống và các lỗi phát sinh từ phần mềm cũng tang theo Một lỗi trong phần mềm trên máy chủ của một công ty thương mại điện tử có thể dẫn tới mất mát lượng vốn rất lớn của công ty, thậm chí của cả khách hang của công

ty đó Một lỗi trong phần mềm nhúng trong hệ thống điều khiển ô tô có thể khiến hãng sản xuất phải thực hiện đợt truy hồi tốn kém, thậm chí dẫn tới tai nạn giao thông Hay sự lây nhiễm các mã độc của một hệ thống máy tính trong công ty sẽ cần đến các hoạt động quét virus vất vả, cùng với nguy cơ mất các

dữ liệu nhạy cảm rất lớn

Chính vì các hệ thống máy tính ngày càng quan trọng đối với với các công

ty, cá nhân, hay chính phủ, nên một đặc tính rất cần thiết của hệ thống phần mềm là phải tin cậy Để nghiên cứu đặc tính tin cậy nêu trên của phần mềm, khái niệm “dependability” – tin cậy- được đưa ra bởi Jean-Claude Laprie (1995) [1], mở đầu cho các tìm hiểu về việc phát triển phần mềm tin cậy Và các nghiên cứu, cùng với thực tế ngày nay đã chỉ ra rằng, tính tin cậy của một

hệ thống giờ đây thậm chí đã quan trọng hơn cả những chức năng chi tiết của

hệ thống đó

Vì vậy, việc tìm hiểu và phát triển các phần mềm tin cậy trở thành một yêu cầu cấp thiết trong 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 thuần chỉ là một nhiệm vụ, một công đoạn nhỏ lẻ mà là cả một quá trình đánh giá, phân tích, phát triển và kiểm soát phần mềm Để làm rõ hơn điều này, chúng tôi đã tập trung tìm hiểu và tổng hợp các kiến thức cơ bản đối với việc phát triển phần mềm tin cậy

Trang 4

Xin chân thành cảm ơn TS Võ Đình Hiếu đã giúp đỡ chúng tôi hoàn thành tài liệu này

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

Tài liệu này sẽ làm rõ các nội dung như 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á đối với hiện trạng phát triển phần mềm tại Việt Nam hiện nay

1.3 Phạm vi tìm hiểu

Trong khuôn khổ một bài tiểu luận, chúng tôi xác định phạm vi tìm hiểu như sau

- Đối tượng tìm hiểu: chỉ 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 hoặc CMMI không được đề cập tại đây

- Phạm vi nội dung: các nội dung được nêu ra ở mức độ tổng quát, có tính

lý thuyết cao, có một số nội dung được tìm hiểu chi tiết dựa trên những tìm hiểu tài liệu và các kinh nghiệm cá nhân Đây không phải là một gui-line đầy đủ để phát triển được một phần mềm tin cậy

Trang 5

2 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 về tính cậy của phần mềm, có thể tìm kiếm bởi công

cụ google, như trang wikipedia coi “tính tin cậy là thước đo của hệ thống

về độ sẵn sàng, tin tưởng và khả năng 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 được mô tả bởi I Sommerville như sau [2]

Hình 01- Khái niệm tính tin cậy

Có bốn nhân tố cơ bản để xác định độ tin cậy của phần mềm, đó là

1 Tính sẵn sàng (availability): là một hệ thống cung cấp các chức năng dịch vụ hữu ích tới người dùng một cách liên tục, vào bất cứ thời gian nào

2 Tính tin tưởng (reliability): trong một giai đoạn bất kỳ, hệ thống sẽ hoạt động cung cấp dịch vụ chính xác và đúng với những dự tính của người dùng

3 Tính an toàn (safely): hệ thống hoạt động không gấy tổn hại đến con người cũng như môi trường xung quanh

4 Tính bảo mật (security): hệ thống có thể chống lại các tấn công hoặc

Trang 6

các 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 được một phần mềm có tính tin cậy cao, người phát triển cần đưa ra một quy trình đầy đủ và 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 và kiểm thử phần mềm đó Mỗi giai đoạn có các đặc điểm và phương thức khác nhau để 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 là hướng tiếp cận phổ biến của những người phát triển phần mềm có yêu cầu cao về tính an toàn và bảo mật Những yêu cầu cần mô tả rõ trong đặc này bao gồm:

o Cách thức hệ thống tự bảo vệ mình khỏi các lỗi bên trong

o Ngăn chặn các 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ác tấ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 khi xảy ra lỗi

Để làm được điều này, thông thường người phát triển trải qua các bước phân tích như sau:

Hình 02- Quy trình đặc tả kiểm soát rủi ro

Bước 1 Định ranh rủi ro: thực hiện mô tả các rủi ro tiềm ẩn

Bước 2 Đánh giá rủi ro: phân lớp các rủi ro

Trang 7

Bước 3 Phân tích rủi ro: tìm hiểu nguyên nhân thực sự gây ra rủi ro đó Bước 4 Giảm thiểu rủi ro: đưa ra 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ác đặc tính liên quan đến độ tin cậy của phần mềm như sau

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

Hệ thống khi xảy ra lỗi có thể ảnh hưởng tới môi trường xung quanh, gây tổn thương thậm chí ảnh hưởng tới tính mạng con người trong môi trường đó Đặc tả tính an toàn là việc chỉ ra các yêu cầu để giảm thiểu nguy cơ đó

Thường thì các đặc tả an toàn không quan tâm tới hoạt động thông thường của hệ thống, nên đôi khi nó mô tả hệ thống cần được tắt đi khi có

sự cố Do đó người phát triển cần có những mô tả cân đối giữa tính an toàn và các 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 của hệ thống phụ thuộc vào cả phần cứng, phần mềm, và năng lực của 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ụ như đặc tả yêu cầu hệ thống cần được khởi động lại 1 lần/ tuần, khi xay ra sự cố thì hệ thống cần phải ghi log thông tin

Có một số thước đo cho tính tin tưởng như:

1 Probability of failure on demand (POFOD): khả năng lỗi khi thực thi yêu cầu Ví dụ nếu POFOD = 0.001, nghĩa là hệ thống có khả năng 1/1,000 xảy ra lỗi khi một yêu cầu được thực thi

2 Rate of occurrence of failures (ROCOF): tỉ lệ xảy ra lỗi, tính theo

Trang 8

thời gian.

3 Availability (AVAIL): độ sẵn sàng hệ thống Ví dụ 0.9999 có nghĩa

là hệ thống luôn 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 đôi khi giao thoa với tính an toàn của hệ thống Thông thường đặc tả tính bảo mật mô tả các trường hợp không được chấp nhận của hệ thống, ví dụ như đặc tả không cho phép các truy nhập chưa được 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ệ là một thệ thống được kết hợp với các hệ thống khác Thường thì nó kiểm soát một số tiến trình, ví dụ như 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, được mô tả như sơ đồ dưới đây

Hình 03- Xây dựng hệ thống bảo vệ

Trang 9

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

Kiến trúc tự giám sát là kiếm trúc hệ thống được thiết kế để giám sát các hoạt động của chính nó và thực thi một số nhiệm vụ khi lỗi hệ thống được phát hiện Phương pháp chung thực hiện việc này là chia hoạt động thành một số kênh riêng biệt và so sánh kết quả đầu ra của các kênh đó, nếu giống nhau nghĩa là hoạt động bình thướng, còn nếu có sai khác nghĩa là 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 về hệ thống TMR – triple modular redundancy, là

hệ thống mà ở đó mỗi thành phần phần cứng đều có ba (hoặc hơn) bảo sao Giá trị output của mỗi thành phần được chạy qua bộ so sánh hoạt động theo cơ chế “đa số phiếu”, tức là nếu có 2 hoặc ba giá trị output giống nhau thì đó sẽ là giá trị đúng, nếu có giá trị khác đi thì nó sẽ bị loại

bỏ hoặc được sửa lỗi

Trang 10

Hình 05- Hệ thống TRM

Tương tụ cách hoạt động như vậy, hệ thống phần mềm chia thành N phiên bản chạy song song được giới thiệu bởi Avizienis (1985) [3] Một

hệ thống phần mềm sẽ được thược hiện bởi nhiều nhóm khác nhau, thường được thực thi trên các máy tính khác nhau, và cũng được thực thi theo cơ 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 thì kiến trúc hệ thống N-version tốn kém ít hơn trong việc phát triển phần mềm vì không cần hệ thống giám sát bên trong Tuy nhiên việc phần mềm được thực hiện bởi nhiều nhóm khác nhau lại khiến chi phí phát triển rất lớn

2.2.3 Lập trình

Thông thường trong giai đoạn lập trình thì độ tin cậy của phần mềm phụ thuộc khá nhiều vào trình độ của lập trình viên Có nhiều cách thức lập trình, cũng như nhiều loại ngôn ngữ lập trình khách nhau, tuy nhiên trên quan điểm phát triển phần mềm tin cậy thì một số guide-line (hướng dẫn) dưới đây là hữu ích

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

Chỉ nhưng cá nhân cần biết một số thông tin mới được phép truy cập các

Trang 11

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 ta kiểm tra một số yếu tố như

1 Kiểm tra phạm vi dữ liệu (ví dụ từ 0.0 đến 1.0)

2 Kiểm tra kích thước dữ liệu (ví dụ tài khoản ngân hàng phải là 8 chữ số)

3 Kiểm tra định dang dữ liệu (ví dụ dữ liệu email, tên người )

4 Kiểm tra ý nghĩa dữ liệu (ví dự lượng điện tiêu 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 chế sử dụng các cấu trúc dễ gây lỗi

Một số cấu 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

Trang 12

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

Trong rất nhiều hệ thống, ta cần phải cung cấp khả năng khởi tạo lại, bằng cách luôn tạo ra bản sao dữ liệu trước mỗi xử lý Các xử lý được thực hiện trên bản sao đó chứ không thực hiện trực tiếp lên dữ liệu gốc Một số ví dụ nhứ

1 Trong thương mại điện tử, cần lưu bản sao các dữ liệu trên form người dùng đã nhập vào, cho phép người dùng truy cập và submit mà không cần nhập lại nhiều lần

2 Trong các giao dịch, cần tự động sao lưu các dữ liệu đề phòng xảy ra mất mát thì ta có thể lấy lại dữ liệu gần nhất

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

Tất cả ngôn ngữ đều cho phép định nghĩa các dãy, là cấu trúc lưu các dữ liệu tương đồng được truy cập bằng chỉ số index Ta cần kiểm tra biên giới của dãy tránh trường hợp xảy ra lỗi bộ nhớ do vượt giới hạn dãy

2.2.3.7 Đặt time-out 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

Trang 13

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

Việc đặt tên các hằng số theo giá trị nó mang theo có các lợi ích nhứ

1 Hạn chế lỗi sử dụng sai giá trị

2 Khi giá trị thay đổi, ta chỉ cần đổi giá trị hằng số đó mà không phải tìm kiếm cả chương trình

Trang 14

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 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 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 đoàn,

tổ chức chính phủ, hoặc các hệ thống phục vụ lượng lớn người dùng như viễn thông và dịch 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

Trang 15

4 TÀI LIỆU THAM KHẢO

1 [1] http://en.wikipedia.org/wiki/Dependability

2 [2] I Sommerville, Software Engineering 9th, 2010, chapter 11.1

Dependability properties

3. [3] http://en.wikipedia.org/wiki/N-version_programming

4. I Sommerville, Software Engineering 9th, 2010

5. A Avizienis, J.-C Laprie and B Randell: Fundamental Concepts of Dependability Research Report No 1145, LAAS-CNRS, April 2001

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

HÌNH ẢNH LIÊN QUAN

Hình 01- Khái niệm tính tin cậy - tiểu luận phát triển phần mềm tin cậy (dependable software)
Hình 01 Khái niệm tính tin cậy (Trang 5)
Hình 02- Quy trình đặc tả kiểm soát rủi ro - tiểu luận phát triển phần mềm tin cậy (dependable software)
Hình 02 Quy trình đặc tả kiểm soát rủi ro (Trang 6)
Hình 03- Xây dựng hệ thống bảo vệ - tiểu luận phát triển phần mềm tin cậy (dependable software)
Hình 03 Xây dựng hệ thống bảo vệ (Trang 8)
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 - tiểu luận phát triển phần mềm tin cậy (dependable software)
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 (Trang 9)
Hình 05- Hệ thống TRM - tiểu luận phát triển phần mềm tin cậy (dependable software)
Hình 05 Hệ thống TRM (Trang 10)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w