Tác động lịch sử của Chuyến bay 501 của Ariane 5 là gì?


9

Sự tan rã của tên lửa Ariane 5 37 giây sau khi phóng trên hành trình đầu tiên của cô ( Chuyến bay 501 ) thường được gọi là một trong những lỗi phần mềm đắt nhất trong lịch sử 1 :

Cơ quan Vũ trụ châu Âu đã mất 10 năm và 7 tỷ đô la để sản xuất Ariane 5, một tên lửa khổng lồ có khả năng đưa một cặp vệ tinh nặng ba tấn lên quỹ đạo với mỗi lần phóng và dự định mang lại cho châu Âu quyền lực tối cao trong kinh doanh vũ trụ.

Tất cả chỉ cần để phát nổ tên lửa đó chưa đầy một phút trong hành trình đầu tiên của nó vào tháng 6 năm ngoái, rải rác đống lửa bốc lửa trên đầm lầy ngập mặn ở Guiana thuộc Pháp, là một chương trình máy tính nhỏ cố nhét một con số 64 bit vào không gian 16 bit.

Một lỗi, một sự cố. Trong tất cả các dòng mã bất cẩn được ghi lại trong biên niên sử của khoa học máy tính, mã này có thể có hiệu quả khủng khiếp nhất. Từ các cuộc phỏng vấn với các chuyên gia tên lửa và một phân tích được chuẩn bị cho cơ quan vũ trụ, một con đường rõ ràng từ một lỗi số học đến sự hủy diệt hoàn toàn xuất hiện.

Những thay đổi lớn nào đã làm thất bại 501 của Chuyến bay và các cuộc điều tra tiếp theo truyền cảm hứng cho việc nghiên cứu các hệ thống quan trọng và kiểm tra phần mềm an toàn?

Tôi không tìm kiếm lời giải thích về lỗi, nhưng để giải thích về tác động lịch sử của lỗi, về mặt nghiên cứu được lấy cảm hứng từ hoặc liên quan trực tiếp đến (các) cuộc điều tra về sự thất bại. Ví dụ, bài viết này kết luận:

Chúng tôi đã sử dụng phân tích tĩnh để:

  • kiểm tra khởi tạo biến
  • cung cấp danh sách đầy đủ các xung đột truy cập dữ liệu tiềm năng cho các biến được chia sẻ,
  • liệt kê đầy đủ các lỗi thời gian chạy tiềm năng từ ngữ nghĩa Ada.

Theo hiểu biết của chúng tôi, đây là lần đầu tiên các kỹ thuật phân tích tĩnh dựa trên boolean và không dựa trên boolean được sử dụng để xác nhận các chương trình công nghiệp.

Tương tự, bài viết này (pdf) ghi chú:

Các phân tích chương trình tĩnh dựa trên diễn giải trừu tượng đã được sử dụng để phân tích tĩnh phần mềm ADA nhúng của trình khởi chạy Ariane 5 và ARD. Bộ phân tích chương trình tĩnh nhằm mục đích tự động phát hiện tính khử, tiềm năng, không thể truy cập hoặc không thể truy cập của các lỗi thời gian chạy như vô hướng và điểm thay đổi, lỗi chỉ số mảng, phân chia bằng 0 và các số liệu liên quan đến số học, các biến số không liên quan cấu trúc dữ liệu được chia sẻ, vv. Máy phân tích có thể tự động phát hiện ra lỗi Ariane 501. Phân tích tĩnh của phần mềm quan trọng an toàn nhúng (như phần mềm avionic) rất hứa hẹn .

Tôi rất thích một lời giải thích kỹ lưỡng về tác động của sự kiện đơn lẻ này đối với các phương pháp và công cụ kiểm thử phần mềm.

1 Con số 7 tỷ đô la có thể đề cập đến tổng chi phí của dự án Ariane 5, Wikipedia báo cáo rằng sự thất bại dẫn đến khoản lỗ hơn 370 triệu đô la. Vẫn là một thất bại khá tốn kém nhưng không nơi nào gần con số 7 tỷ USD.


5
Xác định "tệ nhất" ... Tệ nhất vì nó đắt? Tôi không biết ... Tôi nghĩ rằng Therac-25 sẽ là một lỗi tồi tệ hơn nhiều nếu bạn là một trong những người phải chịu quá nhiều phóng xạ trong quá trình điều trị ung thư. users.csc.calpoly.edu/~jdalbey/Swe/Papers/THERAC25.html ; khóa học.cs.vt.edu / ~ cs3604 / lib / Terac_25 / Terac_1.html ; vi.wikipedia.org/wiki/Therac-25
Thất vọngWithFormsDesigner

2
@FrustratedWithFormsDesigner Trả lời câu hỏi của riêng bạn là hoàn toàn chấp nhận được , chúng tôi thậm chí có một tính năng gần đây khuyến khích tự trả lời. Tôi sẽ lái thử nó cho câu hỏi này, tuy nhiên vì đây là câu hỏi của cuộc thi (không phải là nó có cơ hội) nên tôi quyết định để người khác trả lời nó.
yannis

3
Chúng ta có thực sự muốn thiết lập các câu hỏi mô phạm trong phạm vi không? Nếu vậy, tôi có thể thấy một làn sóng các câu hỏi gây khó chịu nhẹ có nghĩa là dẫn chúng tôi đi đâu đó và dạy chúng tôi điều gì đó mà không cần OP thực sự cần câu trả lời. Tùy bạn, nhưng có vẻ rủi ro.
Corbin ngày

4
@gnat Không bao giờ nói đó là câu trả lời duy nhất , chỉ là một gợi ý rằng câu hỏi có câu trả lời để xoa dịu những cử tri thân thiết. Nhưng ở đây bạn đi: articles.adsabs.harvard.edu//full/1998ESASP.422..201L/... & dl.acm.org/citation.cfm?id=263750 (ACM tường phí)
Yannis

3
@FrustratedWithFormsDesigner: Đôi khi tôi có câu hỏi mà tôi nghĩ rằng tôi biết câu trả lời, nhưng tôi không chắc chắn. Vì vậy, tôi muốn hỏi họ, không được xác nhận luận án của tôi, mà là mở cho tất cả các loại câu trả lời tôi sẽ nhận được. Vì vậy, nói chung, tôi nghĩ sẽ hợp lý khi đặt câu hỏi ngay cả khi tôi đã có một số ý tưởng liên quan đến câu trả lời có thể.
Giorgio

Câu trả lời:


5

Về mặt kỹ thuật, đó là một trường hợp " thối phần mềm ". Phần mềm điều khiển chuyến bay được tái chế từ tên lửa Ariane 4 trước đó, một động thái hợp lý cho việc phát triển phần mềm tốn kém như thế nào, đặc biệt là khi phần mềm quan trọng phải được kiểm tra và xác minh theo các tiêu chuẩn khắt khe hơn nhiều so với hầu hết các phần mềm thương mại.

Thật không may, không ai bận tâm đến việc kiểm tra xem sự thay đổi trong môi trường vận hành sẽ có ảnh hưởng gì, hoặc nếu họ không thực hiện việc thử nghiệm theo một tiêu chuẩn đủ kỹ lưỡng.

Phần mềm được xây dựng để mong đợi các thông số nhất định sẽ không bao giờ vượt quá các giá trị nhất định (lực đẩy, gia tốc, mức tiêu thụ nhiên liệu, mức độ rung, v.v.). Trong chuyến bay bình thường trên Ariane 4, đây không phải là vấn đề vì những thông số đó sẽ không bao giờ đạt được giá trị không hợp lệ nếu không có gì đó bị sai một cách ngoạn mục. Tuy nhiên, Ariane 5 mạnh hơn rất nhiều và các phạm vi có vẻ ngớ ngẩn trên 4 có thể dễ dàng xảy ra trên 5.

Tôi không chắc chắn tham số nào đã vượt ra ngoài phạm vi (có thể là tăng tốc, tôi sẽ phải kiểm tra), nhưng khi có, phần mềm không thể đối phó và bị tràn số học mà đã xảy ra không đủ kiểm tra lỗi và mã khôi phục được thực hiện. Máy tính hướng dẫn bắt đầu gửi rác đến các gimbals vòi phun động cơ, lần lượt bắt đầu hướng vòi phun động cơ khá nhiều. Tên lửa bắt đầu rơi xuống và vỡ ra, và hệ thống tự hủy tự động phát hiện tên lửa hiện đang ở trong một thái độ không an toàn không thể phục hồi và hoàn thành công việc.

Thành thật mà nói, sự cố này có lẽ đã không dạy bất kỳ bài học mới nào, vì loại vấn đề đã được khai quật trước đây theo mọi cách của hệ thống, và đã có chiến lược để xử lý lỗi và tìm lỗi. Những gì sự cố đã làm là ram về nhà rằng việc lỏng lẻo trong việc thực hiện các chiến lược đó có thể gây ra hậu quả to lớn, trong trường hợp này là hàng triệu đô la phần cứng bị phá hủy, một số khách hàng cực kỳ tức giận và một danh tiếng xấu xí của Arianespace.

Trường hợp đặc biệt này đặc biệt rõ ràng vì một lối tắt được thực hiện để tiết kiệm tiền cuối cùng đã tiêu tốn một số tiền rất lớn, cả về tiền bạc và danh tiếng bị mất. Nếu phần mềm đã được kiểm tra mạnh mẽ trong môi trường giả lập Ariane 5 như khi nó được phát triển cho Ariane 4, thì lỗi chắc chắn sẽ xuất hiện từ lâu trước khi phần mềm được cài đặt trong phần cứng khởi chạy và ra lệnh một chuyến bay thực tế. Ngoài ra, nếu một nhà phát triển phần mềm đã cố tình ném một số đầu vào vô nghĩa vào phần mềm thì lỗi thậm chí có thể đã bị bắt trong kỷ nguyên Ariane 4, vì nó sẽ nhấn mạnh thực tế là việc khôi phục lỗi không đúng.

Vì vậy, trong ngắn hạn, nó không thực sự dạy những bài học mới, nhưng nó lan man về những nguy hiểm của việc không nhớ những cái cũ. Nó cũng chứng minh rằng môi trường trong đó một hệ thống phần mềm hoạt động cũng quan trọng như chính phần mềm. Chỉ vì phần mềm được xác minh chính xác cho môi trường X không có nghĩa là nó phù hợp với mục đích trong môi trường tương tự nhưng khác biệt Y. Cuối cùng, nó nhấn mạnh tầm quan trọng của việc phần mềm quan trọng đủ mạnh để xử lý các tình huống không nên có đã xảy ra.

Tương phản chuyến bay 501 với Apollo 11 và các sự cố máy tính của nó. Trong khi phần mềm LGC bị trục trặc nghiêm trọng trong quá trình hạ cánh, nó được thiết kế cực kỳ mạnh mẽ và có thể duy trì trạng thái hoạt động bất chấp các báo động phần mềm được kích hoạt, mà không gây nguy hiểm cho các phi hành gia mà vẫn có thể hoàn thành nhiệm vụ của nó


6
Người giới thiệu....?
Thất vọngWithFormsDesigner

2
Ký ức của riêng tôi về các bài giảng đạo đức kỹ thuật khi học khoa học máy tính ở trường đại học :)
GordonM

Nếu tôi nhớ chính xác, vấn đề xảy ra là do bỏ qua một số khẳng định tại một nơi được coi là ổn đối với Ariane 4, bởi vì máy tính (điều hướng quán tính) của nó sẽ bị quá tải khi các xác nhận được trình bày. Ariane 5 có máy tính mạnh hơn nhiều để thực hiện công việc có thể xử lý các xác nhận một cách dễ dàng, nhưng chúng không được kích hoạt lại.
Pavel

1

Nó chủ yếu là một vấn đề tái sử dụng và vấn đề quản lý chứ không phải vấn đề mã hóa. Từ những hồi ức của tôi (đáng kinh ngạc là có một số điều sai) của báo cáo.

  • một hệ thống con đã được thiết kế cho Ariane IV. Các quỹ đạo của Ariane IV không thể dẫn đến tràn và sau đó đã quyết định rằng nếu nó xảy ra, đó là một vấn đề phần cứng và tắt hệ thống con và đi đến phụ tùng là điều nên làm.

  • đối với Ariane V, người ta đã quyết định sử dụng lại hệ thống con đó và không xem xét các giả định và mã mà dựa vào thử nghiệm.

  • hơn nữa nó đã được quyết định bỏ thử nghiệm đầy đủ.

Các thông số chuyến bay khác nhau của Ariane V đã khiến tràn nước xảy ra. Tắt máy chính. Tắt máy dự phòng. Tự động hóa.

Những điều bổ sung tôi nhớ:

  • hệ thống con tại thời điểm tràn không còn hữu ích. Người ta có thể lập luận rằng sự thất bại của nó không nên kích hoạt quá trình tự động hóa. (Mặt khác, sự phức tạp thêm vào có thể là một nguồn gốc của vấn đề).

  • có dữ liệu gỡ lỗi được gửi đến xe buýt khi không nên. Tôi không nhớ cụ thể.


Ah, tôi biết lỗi là gì, đó không thực sự là câu hỏi của tôi. Tôi thường nghe nói rằng lỗi đã thay đổi cách tiếp cận kiểm thử phần mềm của chúng tôi và đó là những gì tôi đang hỏi về.
yannis


ISTR cơ chế đằng sau sự thất bại là mã đã ném một ngoại lệ tràn, mà người gọi đã không bắt được. Ngoại lệ được lan truyền cho đến khi nó được xử lý bởi trình xử lý ngoại lệ mặc định, đã hủy bỏ mô-đun vi phạm. Tuy nhiên, do ngoại lệ đã vi phạm quá nhiều cấp độ, "mô-đun vi phạm" tại thời điểm đó là toàn bộ RSI (hệ thống tham chiếu quán tính).
TMN

0

Như những người khác đã đề cập, nó đã khiến ngành công nghiệp nói chung kiểm tra lại khái niệm tái sử dụng và đặt nó trong một khung tham chiếu lớn hơn, theo đó các thành phần không được đánh giá một cách cô lập mà trong bối cảnh của toàn hệ thống. Điều này làm giảm đáng kể sự hấp dẫn của việc sử dụng lại, vì ngay cả khi một thành phần có thể được sử dụng lại mà không thay đổi, nó vẫn phải được phân tích với một loạt các giả định mới. Một hệ quả khác là phần cứng sao lưu chạy cùng một phần mềm không hấp dẫn lắm, vì hầu hết phần cứng hiện đại là những đơn đặt hàng có độ tin cậy cao hơn so với phần mềm hiện đại. Tôi đã nghe nói rằng một số hợp đồng quốc phòng yêu cầu hai hệ thống phần mềm riêng biệt được phát triển bởi các nhóm khác nhau sử dụng các công nghệ khác nhau làm việc từ cùng một đặc điểm kỹ thuật để xác minh thực hiện đúng.


2
Xin vui lòng tham khảo ...
yannis

1
Chủ yếu là một nửa nhớ từ một bài viết ACM cũ, nhưng một số thông tin thêm ở đây .
TMN

Ý tưởng về các máy tính riêng biệt, với mã được phát triển bởi các nhóm khác nhau đã được chương trình tàu con thoi vũ trụ sử dụng và thậm chí có thể sớm hơn.
mhoran_psprep

@mhoran_psprep: Đọc về thất bại của AT & T Exchange và kết quả của nó. Xin lỗi - không có tài liệu tham khảo, biết về nó từ bộ nhớ.
mattnz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.