1. Trang chủ
  2. » Tất cả

11-ch22-verification validation-se8

28 5 0

Đ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

Cấu trúc

  • Công nghệ phần mềm

  • Mục tiêu

  • Các chủ đề

  • Thẩm định và kiểm định– V&V

  • Quy trình V&V

  • Static and dynamic V&V

  • Kiểm định

  • Các kĩ thuật thẩm định

  • Lựa chọn kĩ thuật

  • Lập kế hoạch V&V

  • The V-model of development

  • Cấu trúc của một test plan

  • Software inspections Duyệt phần mềm

  • Program inspections Kiểm tra chương trình

  • Chuẩn bị trước khi kiểm tra

  • The inspection process

  • Inspection procedure Quy trình kiểm tra

  • Inspection roles

  • Inspection checklists

  • Inspection rate

  • Tự động hóa phân tích tĩnh

  • Static analysis checks

  • LINT static analysis

  • Sử dụng static analysis

  • Verification and formal methods Kiểm định và các phương pháp hình thức

  • Ưu/Nhược điểm của các phương pháp hình thức

  • Tóm tắt

  • Bài tập về nhà

Nội dung

Công nghệ phần mềm Thẩm định kiểm định Mục tiêu • Thẩm định kiểm định phần mềm gì? – Phân biệt • Quy trình kiểm tra chương trình vai trị thẩm định kiểm định • Kĩ thuật kiểm định phân tích tĩnh Các chủ đề • Lập kế hoạch thẩm định kiểm định • Software inspections • Phân tích tĩnh tự động hóa Thẩm định kiểm định– V&V • Thẩm định - Validation: "Are we building the right product?” Phát biểu tốn có phản ánh xác tốn thực hay khơng? Ta xét đến nhu cầu tất stakeholder chưa? • Kiểm định - Verification: "Are we building the product right?” Thiết kế có tn theo theo đặc tả khơng? Cài đặt có thỏa mãn đặc tả khơng? Hệ thống giao cho khách hàng có thực mà ta nói làm? Các mơ hình u cầu ta có qn với khơng? Source: Steve Eas Quy trình V&V • Quy trình kéo dài tồn chu trình sống – V&V phải áp dụng bước quy trình phần mềm • Hai mục tiêu – Phát khiếm khuyết hệ thống; – Đánh giá xem hệ thống có hữu ích dùng tình vận hành hay không Static and dynamic V&V Software inspections Requirement specification Software inspections High-level design Formal specification Detailed design Program Program testing Kiểm định • Kiểu truyền thống (code verification) – Kiểm thử chương trình – testing – Duyệt chương trình – inspection, reviews • Dựa vào mơ hình (model-based verification) – Các use case có thỏa mãn yêu cầu không? – goal analysis – Mô hình lớp đối tượng có thỏa mãn use case khơng? – robustness analysis – Mã chương trình có qn với mơ hình hay khơng? – consistency checking Các kĩ thuật thẩm định Source: Steve Eas Lựa chọn kĩ thuật Lập kế hoạch V&V • V&V quy trình tốn kém, chiếm đến 50% tổng chi phí • Lập kế hoạch tốt để thu hiệu cao quy trình kiểm thử (testing) duyệt (inspection) • Cần bắt đầu sớm quy trình phát triển • Kế hoạch cần xác định cân kiểm thử duyệt 10 Program inspections Kiểm tra chương trình • Cách tiếp cập chuẩn hóa cho việc duyệt tài liệu • Mục tiêu để phát khiếm khuyết (không phải để sửa) • Các khiếm khuyết lỗi lơ-gic, bất thường mã mà dấu hiệu lỗi – Biến chưa khởi tạo – Không theo chuẩn int f() { – } int x; int y = x * 2; return y; 14 Chuẩn bị trước kiểm tra • Phải có đặc tả xác • Đội kiểm tra phải quen với chuẩn tổ chức • Mã chương trình tài liệu khác phải cú pháp đủ nội dung • Cần chuẩn bị error checklist • Quản lý – Khơng dùng kiểm tra để khen/chê nhân viên • tìm thủ phạm 15 The inspection process Follow-up Planning Rework Overview Individual preparation Inspection meeting 16 Inspection procedure Quy trình kiểm tra Trình bày tổng quan hệ thống cho đội kiểm tra Mã chương trình tài liệu có liên quan giao trước cho đội kiểm tra Thực kiểm tra ghi lại lỗi phát Sửa lỗi phát Một tái kiểm tra cần không cần đến 17 Inspection roles Author or owner The programmer or designer responsible for producing the program or document Responsible for fixing defects discovered during the inspection process Inspector Finds errors, omissions and inconsistencies in programs and documents May also identify broader issues that are outside the scope of the inspection team Reader Presents the code or document at an inspection meeting Scribe Records the results of the inspection meeting Chairman or moderator Manages the process and facilitates the inspection Reports process results to the Chief moderator Chief moderator Responsible for inspection process improvements, checklist updating, standards development etc 18 Inspection checklists • Checklist cho lỗi thường gặp • Error checklist phụ thuộc ngơn ngữ lập trình – vd C++: rò rỉ nhớ, trỏ lạc • Nói chung, ngơn ngữ định kiểu (type checking) yếu checklist dài – Java: định kiểu mạnh – PHP: định kiểu yếu • Ví dụ: khởi tạo, tên hằng, kết thúc vòng lặp, giới hạn mảng, v.v 19 Inspection rate • Inspection quy trình tốn – Trình bày tổng quan: 500 lệnh/giờ – Cá nhân kiểm tra: 125 lệnh/giờ – Kiểm tra buổi gặp: 90-125 lệnh/giờ • Kiểm tra 500 dịng lệnh tốn tổng cộng khoảng 40 làm việc (man/hour) 20 Tự động hóa phân tích tĩnh • Static analyser công cụ phần mềm để xử lý mã nguồn dạng text • Chúng phân tích text chương trình để phát lỗi tiềm tàng – Errors and warnings • Hiệu việc hỗ trợ inspection – Hỗ trợ không thay 21 Static analysis checks Các dạng lỗi Static analysis check Data faults (Lỗi liệu) Biến dùng trước khởi tạo Biến khai báo không dùng Biến gán liền hai lần mà khơng dùng đến Có thể vượt ngồi mảng Biến chưa khai báo Control faults (Lỗi điều khiển) Lệnh không chạy đến Rẽ nhánh không điều kiện vào vòng lặp Input/output faults (Lỗi vào liệu) Biến output hai lần liên tiếp mà không gán trị Interface faults (Lỗi giao diện) Kiểu tham số không khớp Số tham số không khớp không dùng đến kết trả hàm Hàm thủ tục không gọi Storage management faults Con trỏ không gán (Lỗi quản lý lưu trữ) Các phép tính trỏ 22 LINT static analysis #include printarray (int Anarray) { printf(“%d”,Anarray); } main () { int Anarray[5]; int i; char c; printarray (Anarray, i, c); printarray (Anarray) ; 10.} lint_ex.c(8): warning: c may be used before set lint_ex.c(8): warning: i may be used before set printarray: variable # of args lint_ex.c(2) :: lint_ex.c(8) printarray, arg used inconsistently lint_ex.c(2) :: lint_ex.c(8) printarray, arg used inconsistently lint_ex.c(2) :: lint_ex.c(9) printf returns value which is always ignored 23 Sử dụng static analysis • Đặc biệt giá trị cho ngôn ngữ định kiểu yếu (weak typing) – Nhiều lỗi trình biên dịch khơng phát – C, C++ • Ít hiệu cho ngơn ngữ định kiểu mạnh – Trình biên dịch phát nhiều lỗi – Java, C# 24 Verification and formal methods Kiểm định phương pháp hình thức • Các phương pháp hình thức (PPHT) để phát triển phần mềm dựa vào biểu diễn toán học phần mềm, thường dạng đặc tả hình thức (dùng đặc tả tốn học) • Các ppht quan tâm đến: phân tích tốn học đặc tả, biến đổi đặc tả thành biểu diễn chi tiết tương đương ngữ nghĩa, chứng minh tương đương ngữ nghĩa – chứng minh chương trình tuân theo đặc tả tốn học 25

Ngày đăng: 22/05/2017, 10:59

w