Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 13

Software Engineering

Verification and Validation


Nội dung
• Verification & validation
• Software inspections
• Automated static analysis
Verification vs validation
• Verification:
"Are we building the product right?”
– The software should conform to its specification
– (Phần mềm nên nhất quán với đặc tả yêu cầu)
• Validation:
"Are we building the right product?”
– The software should do what the user really requires
– (Phần mềm nên thỏa mãn yêu cầu của người dùng)

V&V
The V&V process
• V&V phải được áp dụng ở mọi giai đoạn của
tiến trình làm phần mềm
• Mục tiêu
– Phát hiện lỗi;
– Đánh giá xem hệ thống có hữu ích (thỏa mãn yêu
cầu người dùng) và có khả năng sử dụng trong môi
trường vận hành không.
Static and dynamic verification
• Software inspections (static verification)
– Kiểm tra mã trước khi chạy
• Có thể được hỗ trợ bởi công cụ phân tích mã
• Software testing – kiểm thử phần mềm
(dynamic verification)
– Kiểm tra bằng cách chạy chương trình
• Hệ thống được thực hiện với dữ liệu kiểm thử và hành
vi của hệ thống được quan sát.
Inspections and testing
• Inspections và testing là bổ sung cho nhau
• Cả hai nên được thực hiện trong quy trình
• Inspections có thể kiểm tra tính nhất quán
(conformance) của phần mềm so với đặc tả
– Không phải là nhất quán với yêu cầu của người dùng
• Không thể kiểm tra một số yêu cầu phi chức năng
– Vd, hiệu năng, khả năng sử dụng
Software inspections
• Không yêu cầu thực hiện chương trình
• Có thể được áp dụng cho bất kỳ thể hiện nào của hệ
thống
– Tài liệu yêu cầu, thiết kế,…
Cần chuẩn bị gì cho hoạt động
inspection?
• Tài liệu về phần mềm
• Mã nguồn (nếu phát hiện lỗi trong mã)
• Đội thực hiện phải nắm được chuẩn của tổ
chức
• An error checklist
Program inspections
• Phát hiện các loại lỗi
– Biến chưa được khai báo trước khi dùng
– Biến chưa được khởi tạo trước khi dùng
– Biến được khai báo 2 lần mà không có câu lệnh gán giá trị
xen giữa
– Đoạn mã không tuân theo chuẩn
– Chỉ số của mảng
– Cấp phát bộ nhớ (con trỏ) int f() {
– Điều kiện kết thúc vòng lặp int x;
int y = x * 2;
– Danh sách tham số trong lời gọi hàm return y;
– Giá trị trả về của hàm không được sử dụng }

– Hàm không bao giờ được gọi, …


Automated static analysis
Công cụ phần mềm hỗ trợ phân tích mã và phát hiện lỗi
• Control flow analysis
– Finds unreachable code
• Data use analysis
– Detects
• Uninitialised variables
• Variables written twice without an intervening use
• Variables declared but never used, etc.
• Interface analysis
– Checks the consistency of methods declarations and
their use
LINT static analysis
1. #include <stdio.h>
2. printarray (int Anarray) {
3. printf(“%d”,Anarray);
4. }
5. main () {
6. int Anarray[5];
7. int i; char c;
8. printarray (Anarray, i, c);
9. 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. 1 used inconsistently lint_ex.c(2) :: lint_ex.c(8)
printarray, arg. 1 used inconsistently lint_ex.c(2) :: lint_ex.c(9)
printf returns value which is always ignored
Cùng nhìn lại
• Verification & validation
– Verification chỉ ra tính nhất quán của phần mềm với đặc tả
– Validation chỉ ra phần mềm thỏa mãn sự mong đợi của
người dùng
• Static verification là kỹ thuật kiểm tra và phân tích
mã để phát hiện lỗi
– Không chạy chương trình
Cùng nhìn lại
• Program inspections là các kỹ thuật hiệu quả để phát
hiện lỗi
– Mã chương trình được kiểm tra để phát hiện lỗi
• Bộ phân tích tĩnh được sử dụng để nhận ra các đoạn
mã bất thường, từ đó tìm ra lỗi.

You might also like