Bài giảng Đặc tả hình thức: Chương 1 cung cấp cho người học các kiến thức: Phần mềm, thiệt hại về tiền của do lỗi phần mềm, lỗi phần mềm gây thiệt hại về tính mạng, lỗi hệ thống phần mềm, phương pháp hình thức,...
Trang 1LOGO
Đặc tả hình thức
Nguyễn Thị Minh Tuyền
Tổng quan
Trang 2Phần mềm
v Phần mềm ngày càng có ảnh hưởng lớn đến mọi mặt của cuộc sống
§ Điều khiển quy trình (oil, gas, water, …)
§ Giao thông vận tải (điều khiển không lưu, …)
§ Chăm sóc y tế (quản lý bệnh nhân, điều khiển thiết bị,
…)
§ Tài chính (giao dịch tự động, bảo mật ngân hàng, …)
§ Phòng thủ (điều khiển vũ khí, tên lửa, …)
§ Sản xuất (lắp ráp, …)
v Lỗi phần mềm không những thiệt hại về
tiền của mà còn thiệt hại về cả tính mạng
con người!
Trang 3Thiệt hại về tiền của do lỗi phần mềm
v Hàng nghìn $ cho mỗi phút hệ thống sản xuất ngừng hoạt động
v Mất một lượng lớn tiền của và trí tuệ đầu
tư cho việc sửa lỗi
§ Vụ nổ Ariane 5
v Những thất bại về kinh doanh thương mại
do lỗi phần mềm
§ Ashton-Tate dBase
Trang 4Lỗi phần mềm gây thiệt hại về tính mạng
Những vấn đề tiềm tàng dễ thấy:
v Phần mềm được dùng để điều khiển nhà
máy điện hạt nhân
v Những hệ thống điều khiển không lưu
v Điều khiển phóng tàu vũ trụ
v Phần mềm nhúng trong xe hơi
v Một số ví dụ nổi tiếng:
§ Các lỗi trong máy bức xạ (radiation) Therac-25
§ Lỗi khi phóng tên lửa Patriot (1991)
Trang 5Lỗi hệ thống phần mềm
Những lỗi nhỏ có thể gây nên thảm họa
v Vụ nổ Ariane 5 (1996)
v Lỗi phóng tên lửa chặn Patriot (1991)
v Mars Climate Orbiter (1999)
v London Ambulance Dispatch System
v Denver Airport Luggage Handling System
v Lỗi FDIV ở Intel Pentium (1994)
v …
Trang 6Mars Climate Orbiter
Trang 7Nguyên nhân và thiệt hại
v Lỗi trong việc chuyển đổi đơn vị
§ Thay vì dùng đơn vị Newtons thì lại dùng pounds
v 125 triệu đô la
Trang 8Ariane 5
Trang 9Nguyên nhân và thiệt hại
v Chuyển đổi từ số floating-point 64 bit
thành giá trị nguyên có dấu 16 bit
v Thiệt hại 500 triệu đô la
Trang 10Lỗi phóng tên lửa Patriot
Nguồn : http://sydney.edu.au/
Trang 11Nguyên nhân và Thiệt hại
v Do sự tính toán không chính xác thời gian khởi động vì lỗi tính toán số học trên máy tính
v Đơn vị thời gian được tính bằng 1/10 giây
§ Số 1/10 không được biểu diễn chính xác bằng số
thực
v Chết 28 người, > 90 người bị thương
Trang 12Hours Seconds Calculated Time (sec) Inaccuracy (sec) Approx shift in Range Gate
Trang 13Tính toán chính xác
Trang 14Sau 8h hoạt động, sai số 20%
Trang 15Sau 100h hoạt động
Trang 16Sau khi tốt nghiệp ra trường bạn sẽ :
v Đa số : xây dựng phần mềm
v Có thể bạn sẽ tham gia phát triển những hệ thống trong các lĩnh vực vừa được đề cập ở trên
v Giả sử rằng tầm quan trọng của phần mềm tăng lên:
§ Bạn có thể phải chịu trách nhiệm các lỗi phần mềm
§ Công việc của bạn có thể phụ thuộc vào khả năng của bạn để tạo ra những hệ thống đáng tin cậy
Thử thách nào gặp phải khi phát triển
phần mềm có độ tin cậy cao?
Trang 17Đạt được độ tin cậy trong công nghệ
Một số chiến lược nổi tiếng để đạt được độ
tin cậy trong các lĩnh vực công nghệ:
v Ước lượng/tính toán chính xác
v Dư thừa phần cứng (“làm cho nó mạnh
hơn so với mức cần thiết”)
v Thiết kế mạnh (robust design)
v Tách biệt rõ ràng các hệ thống con
v Thiết kế dựa vào các pattern đã được
khẳng định là hoạt động tốt
Trang 18Tại sao những điều đó không hoạt động
tính chính xác(correctness)
đang ở trạng thái nửa vời
Trang 19Làm thế nào để đảm bảo tính chính xác
của phần mềm?
Inspection Để nhiều người xem chương trình và
thảo luận
v Ưu điểm: giảm được các lỗi khó thấy trong hệ thống
v Nhược điểm: không có cơ sở hình thức, không rõ ràng
Testing Chạy chương trình với các đầu vào mẫu và quan sát kết quả đầu ra
v Ưu điểm: chương trình được chỉ ra là nó hoạt động tốt trong một số trường hợp
§ Kiểm thử không thể bao phủ tất cả các trường hợp
§ Kiểm thử là “lao động chân tay”, do đó sẽ tốn kém
Trang 21Kiểm định hình thức (Formal verification)
v Bổ sung cho kiểm thử phần mềm
v Kiểm định hình thức theo kiểu chứng minh định lý (Theorem Proving)
Định lý:
Chương trình soft() chính xác khi:
v Với bất kỳ một mảng nguyên không rỗng a , hàm sort( a ) trả về một mảng nguyên đã được sắp
xếp, và mảng mới này là một hoán vị của a
v Phương pháp này khác với toán học:
§ Biểu diễn định lý trên dưới dạng logic
§ Chứng minh định lý đó với sự hỗ trợ của một automated
reasoner
Trang 22Phương pháp hình thức (Formal Method)
vào việc xem xét chương trình và việc thực
thi của nó dưới dạng những đối tượng toán
học và áp dụng các kỹ thuật toán học để đặc
tả và phân tích các thuộc tính (property) và
các hành vi (behavior) của các đối tượng
§ Tăng độ tin cậy và tính chính xác của chương trình
§ Đặc biệt là những hệ thống cần độ an toàn cao
Trang 23Phương pháp hình thức
v Phương pháp hình thức liên quan đến hai mô tả khác nhau của cùng một hệ thống
§ Mô tả trừu tượng S, gọi là đặc tả (specification)
§ Mô tả chi tiết hơn I, gọi là cài đặt (implementation)
v Kiểm định (verification):
§ Cho S và I, chứng tỏ rằng I là một cài đặt chính xác của S
§ Hay tổng quát hơn, S và I tương thích với nhau
Trang 24Phương pháp hình thức
v Hai framework ngôn ngữ:
§ Đặc tả được biểu diễn bằng ngôn ngữ đặc tả, thường được biểu diễn dưới hình thức logic hoặc khai báo tương đương
§ Cài đặt sử dụng ngôn ngữ lập trình
v Một Framework ngôn ngữ duy nhất:
§ S và I được biểu diễn sử dụng cùng một ngôn ngữ
§ Khi đó, ta sẽ nói về việc thiết lập refinement,
abstraction, equivalence, …
§ Framework này hỗ trợ quy trình phát triển nhiều
bước
S1 ! S2 ! ! Sn = I
Trang 25Phương pháp hình thức
v Là các phương pháp chính xác được dùng trong
việc phát triển và thiết kế hệ thống
v Sử dụng logic toán học và biểu tượng (symbol)
v Có thể tạo ra mô hình hình thức (formal model)
cho cả hai khía cạnh trên và sử dụng công cụ để chứng minh (prove) về mặt cơ chế rằng
§ mô hình thực thi hình thức của cài đặt thỏa mãn các yêu cầu hình thức của đặc tả
Trang 26Phương pháp hình thức
v Hỗ trợ cho các phương pháp phân tích và thiết kế khác
v Là phương pháp tốt để tìm ra lỗi phần
mềm (trong mã nguồn và trong đặc tả)
v Giảm thời gian phát triển (và kiểm thử)
v Có thể đảm bảo một số thuộc tính của mô hình hệ thống hình thức
v Chứng minh tự động sẽ là phương pháp lý tưởng
v Theorem prover
Trang 28§ Các thuộc tính phi chức năng
Thời gian thực, bộ nhớ, khả năng sử dụng, …
Trang 29Điểm chính của phương pháp hình thức
v Để chỉ ra tính chính xác (correctness) của toàn
bộ hệ thống (Tính chính xác là gì? Luôn luôn đi
Trang 30Lợi ích của việc sử dụng phương
kiểm tra yêu cầu
việc khớp đặc tả
Trang 31§ Cú pháp có thể được xử lý một cách máy móc và được kiểm tra
§ Ngữ nghĩa được định nghĩa chặt chẽ sử dụng phương tiện toán học
Trang 32v Hình thức hóa đặc tả hệ thống là khó!
Trang 33Khó khăn khi tạo ra các mô hình hình thức
Trang 34Khó khăn khi tạo ra các mô hình hình thức
Trang 35v Việc chứng minh các thuộc tính của hệ
thống có thể là một thử thách
Trang 36Lịch sử
v Những năm 80, kiểm định phần mềm được xem như “chết”
v Những năm 90, kiểm tra mô hình (model checkers) thành công
v Từ cuối những năm 90, mối quan tâm về kiểm định phần mềm tăng lên.
v Những ứng dụng mới như proof-carrying-code (PCC)
mãn một số thuộc tính về bảo mật/an toàn
v Những vấn đề mới chẳng hạn xem xét về vấn đề bảo mật
Phương pháp hình thức là chủ để “hot” trong nghiên cứu cũng như
trong công nghiệp
Trang 37Ngôn ngữ và hệ thống
Các ngôn ngữ đặc tả
(Abstract State Machines), OCL (Object Constraint Language for
UML),
Kiểm tra mô hình (Model Checker)
Hỗ trợ việc chứng minh (Proving Assistant)
Môi trường kiểm định
KIV (Karlsruhe Interactive Verifier), JIVE (Java Interactive Verification
Environment), LOOP, Krakatoa/Why, KeY, Mobius,
Trang 38Đặc tả hình thức
Pp hình thức trong công nghiệp
v Đường metro 14 ở Paris
§ Dự án Méteor
§ Hoàn toàn tự động
§ Phần quan trọng về độ an toàn của hệ thống này
được phát triển và thẩm định sử dụng B-Method
§ Tìm ra được rất nhiều lỗi trong quá trình chứng minh
v Airport shuttle ở sân bay Roissy
Charles de Gaulle (Paris)
§ B-Method
v Hệ thống tàu lửa ở Đan Mạch
§ Sử dụng phương pháp hình thức RAISE để mô hình hóa hệ thống kiểm tra những thuộc tính về an toàn
Trang 39§ Ngày càng được ứng dụng nhiều trong thực tế
§ Thời gian phát triển phần mềm ngắn hơn
§ Tăng chất lượng sản phẩm
pháp hình thức khác nhau, cho các giai đoạn phát triển phần mềm khác nhau
Trang 40LOGO