Vụ nổ tên lửa Ariane 5 chuyến bay 501 xảy ra sáng 4/6/1996 ở Kourou, Guyane thuộc Pháp, chỉ chưa đầy 40 giây sau khi cất cánh. Đây là một trong những ca nghiên cứu nổi tiếng nhất của ngành kỹ thuật phần mềm, vì nguyên nhân là một con số tràn ngăn, và vì mỗi quyết định dẫn đến nó từng có lý do đàng hoàng.

Tóm tắt nhanh

Theo báo cáo của hội đồng điều tra Lions, Ariane 5 hỏng vì hệ quy chiếu quán tính (SRI) mang từ Ariane 4 sang gặp một con số lớn hơn mức nó chứa nổi. Hai bộ SRI giống hệt nhau cùng tắt, máy tính chính nhận tín hiệu chẩn đoán như số liệu bay thật và bẻ lái hết cỡ. Câu hỏi lớn của câu chuyện là: ai đã quyết định không kiểm con số ấy, và vì sao lúc đó quyết định ấy nghe hợp lý?

Diễn biến chính

Sáng 4/6/1996 ở Kourou

Ariane 5, tên lửa lớn nhất châu Âu từng dựng, rời bệ phóng trước tiếng reo hò, mang theo bốn vệ tinh khoa học Cluster. Chưa đầy bốn mươi giây sau, ngọn lửa bẻ ngoặt sang một bên, tên lửa gãy đôi rồi hệ thống tự huỷ biến nó thành quả cầu lửa ở độ cao chừng bốn cây số.

Chiếc "tai trong" cũ trên một tên lửa mới

SRI là bộ phận cảm nhận độ nghiêng và hướng bay của tên lửa rồi báo cho máy tính chính. Ariane 5 giữ lại gần như nguyên phần cứng và phần mềm SRI của Ariane 4, vì nó đã bay tốt nhiều lần. Nhưng Ariane 5 có quỹ đạo khác, tốc độ dạt ngang tăng nhanh gấp năm lần. Các bên còn cùng thống nhất không đưa dữ liệu quỹ đạo của Ariane 5 vào đặc tả của SRI.

Thêm vào đó, một chức năng căn chỉnh vốn chỉ hữu ích khi tên lửa còn trên bệ vẫn chạy thêm khoảng bốn mươi giây sau khi cất cánh. Ở Ariane 4 nó có lý do, còn ở Ariane 5 thì được giữ lại vì tính đồng nhất.

Một đại gia đình và những bài toán lịch phóng

ESA bỏ tiền và đặt mục tiêu, giao việc quản lý chương trình cho CNES, còn các nhà thầu khắp châu Âu mỗi bên lo một mảnh. Đó là canh bạc của châu Âu trên thị trường phóng vệ tinh thương mại những năm chín mươi. Theo nhà báo James Gleick, Ariane 5 tốn khoảng mười năm và bảy tỉ đô la. Chuyến đầu tiên không chở hàng thương mại mà chở Cluster, bốn vệ tinh dùng để đo từ quyển, tấm khiên vô hình nơi gió Mặt Trời gặp từ trường Trái Đất.

Từng giây trên chuyến bay

Chức năng tính độ lệch ngang vẫn chạy. Trên Ariane 4 con số này luôn nhỏ, nhưng trên Ariane 5 nó phình to nhanh. Khi được chép từ ngăn lớn sang ngăn chỉ chứa tới 32.767, phép chép thất bại và Ada báo lỗi toán hạng. Trong bảy biến có nguy cơ tràn, bốn được bảo vệ và ba thì không; việc không bảo vệ ba biến này xuất phát từ mục tiêu giữ tải máy tính dưới 80% và từ lập luận rằng chúng bị giới hạn bởi vật lý. Lập luận ấy đúng với Ariane 4 nhưng không được ghi lại trong mã.

Đặc tả của chương trình quy định gặp lỗi bất ngờ thì SRI ghi lỗi rồi tự tắt, vì coi mọi trục trặc là hỏng hóc ngẫu nhiên. Ở giây 36,7, bộ SRI dự phòng tắt trước, rồi bộ đang làm việc tắt theo chưa đầy một phần mười giây sau. Trước khi im, nó gửi một chuỗi tín hiệu chẩn đoán mà máy tính chính đọc như số đo thật, nên bẻ vòi phun hết cỡ. Tên lửa nghiêng hơn hai mươi độ, tầng đẩy bị xé khỏi thân và mạch tự huỷ kích hoạt.

Bài thử bị bỏ năm 1992 và hội đồng Lions

Hai ngày sau vụ nổ, ESA và CNES lập hội đồng chín người do nhà toán học Jacques-Louis Lions chủ trì. Họ nộp báo cáo ngày 19/7/1996 với mười bốn khuyến nghị. Một trong những điểm đau nhất: năm 1992, khi lên kế hoạch mô phỏng dưới mặt đất, người ta không cắm SRI thật vào hệ thống thử mà dùng mô hình phần mềm, với lý do kỹ thuật hợp lệ. Hội đồng viết rằng nếu SRI thật và quỹ đạo thật được đưa vào, lỗi đã lộ từ trước; chạy lại bài thử sau tai nạn, sự cố tái hiện từng bước.

Sau thảm hoạ: Cluster II và Ariane 5 trở lại

Bốn vệ tinh không có bảo hiểm. Các nhà khoa học ráp vệ tinh Phượng Hoàng từ linh kiện dự trữ, đóng thêm ba chiếc nữa, lập thành Cluster II với tên Rumba, Salsa, Samba và Tango. Chúng được Soyuz đưa lên từ Baikonur giữa tháng 7 và đầu tháng 8 năm 2000, hoạt động tới tháng 9/2024. Ariane 5 bay lại cuối tháng 10/1997, về sau đưa kính viễn vọng James Webb lên trời và nghỉ hưu năm 2023 với danh tiếng đáng tin cậy.

Điều còn tranh cãi hoặc cần thận trọng

  • Mốc thời gian: có nguồn ghi 37 giây, nguồn khác ghi 40 giây, vì bấm giờ từ các mốc khác nhau.
  • Thiệt hại: các con số 370 triệu, 500 triệu, 7 tỉ đô la đo ba thứ khác nhau; báo cáo chính thức không đưa số thiệt hại.
  • Không có "lập trình viên cẩu thả": báo cáo không nêu tên ai và không coi đây là lỗi gõ nhầm. Bài của Gleick kể thứ tự hai SRI tắt khác báo cáo; theo báo cáo, bộ dự phòng tắt trước.
  • Ai có lỗi: năm sau, giới chuyên môn tranh luận. Bertrand Meyer nhấn vào việc dùng lại mã cũ mà không ghi rõ điều kiện đúng; người khác đổ cho quản lý rủi ro hoặc thiết kế hệ thống.
  • Giai thoại: các chi tiết như người phụ nữ mất chồng là nhà khoa học Cluster, hay tiếng loa phát lại trễ, là lời kể của Paul Murdin. Chuyện mã của SRI về sau được công cụ phân tích tự động dò lại cũng chỉ là lời kể, độ chắc thấp.

Vì sao câu chuyện này đáng nhớ?

Không ai làm bừa hay lười biếng. Một chức năng thừa vẫn chạy vì tính đồng nhất, một con số không được bảo vệ vì máy cần chừa sức, một quỹ đạo không được đưa vào vì thiết bị đã bay tốt, một bài thử bị bỏ vì lý do hợp lệ, hai bản sao giống nhau vì an toàn. Từng quyết định đều có lý, và chính vì thế không ai quay lại nhìn.

Bài học của hội đồng Lions: coi phần mềm là sai cho tới khi chứng minh được đúng, viết lý do biện minh ngay cạnh mã, và nhớ rằng dự phòng chỉ cứu được những hỏng hóc độc lập. Câu "nó đã chạy tốt" chỉ là lời khai về môi trường cũ. Kịch bản gợi ý điều này cũng áp dụng khi đem mô hình AI sang bệnh viện hay ngôn ngữ mới.

Câu hỏi thường gặp

Vì sao Ariane 5 nổ trong chuyến bay đầu tiên?

Theo báo cáo hội đồng điều tra, một con số tính trong ngăn lớn bị chép sang ngăn nhỏ hơn nên phát sinh lỗi toán hạng. Cả hai bộ SRI cùng tắt, và máy tính chính đọc tín hiệu chẩn đoán như số đo bay thật nên bẻ vòi phun hết cỡ.

Hội đồng Lions là gì?

Là hội đồng điều tra độc lập gồm chín người do ESA và CNES lập hai ngày sau vụ nổ, do nhà toán học Jacques-Louis Lions đứng đầu. Họ nộp báo cáo ngày 19/7/1996.

Chuyến bay 501 chở gì?

Tên lửa chở bốn vệ tinh khoa học Cluster, mỗi chiếc nặng khoảng 1,2 tấn, được thiết kế để bay thành đội hình tứ diện đo từ quyển Trái Đất theo ba chiều.

Vì sao hai bộ SRI dự phòng không cứu được tên lửa?

Hai bộ giống hệt nhau từ phần cứng đến mã nguồn. Lỗi này là lỗi thiết kế chứ không phải hỏng hóc ngẫu nhiên, nên bộ nào cũng gặp đúng con số ấy và tắt theo.

Cluster có được phóng lại không?

Có. Các nhà khoa học ráp thêm vệ tinh Phượng Hoàng từ linh kiện dự trữ và đóng thêm ba chiếc nữa, thành Cluster II. Bốn chiếc được Soyuz đưa lên từ Baikonur giữa tháng 7 và đầu tháng 8 năm 2000, hoạt động đến tháng 9/2024.

Con số thiệt hại của vụ nổ là bao nhiêu?

Không có con số thống nhất. Bạn sẽ gặp 370 triệu, 500 triệu hay 7 tỉ đô la, nhưng chúng đo những thứ khác nhau; 7 tỉ là chi phí cả chương trình. Báo cáo chính thức không nêu thiệt hại.

Nguồn tham khảo

  • J.-L. Lions và cộng sự, ARIANE 5 Flight 501 Failure: Report by the Inquiry Board (Paris, 19/7/1996)
  • ESA, thông cáo báo chí số 20-1996
  • James Gleick, bài trên New York Times Magazine, 1/12/1996
  • Paul Murdin, Journal of the British Astronomical Association 106(4), 1996
  • J.-M. Jézéquel và B. Meyer, IEEE Computer 30(1), 1997
  • ESA, trang dự án Cluster; Spaceflight Now

Bài viết tóm tắt từ video của kênh; nội dung mang tính giới thiệu.