I E= T*R
LINH KIỆN PHẦN MỀM, TRUY XUẤT DATABASE & KIỂM THỬ PHẦN MỀM
12.7 Các loại lỗi gặp phải khi viết phần mềm, tính chất của từng loại lỗi.
Sau khi viết code cho ứng dụng xong, ta sẽ thử chạy nó để xác định xem nó giải quyết đúng yêu cầu không. Thường ứng dụng chứa nhiều lỗi sai thuộc 1 trong 2 loại sau :
các lỗi về từ vựng (tên các phần tử, từ dành riêng,..) và cú pháp của các phần tử cấu thành ứng dụng. VB sẽ phát hiện các lỗi này dễ dàng và hiển thị thông báo lỗi cho ta xem xét và sửa chữa. Thường sau khi được VB thông báo về các lỗi này, ta dễ dàng sửa chúng.
các lỗi về giải thuật của ứng dụng. VB không thể phát hiện các lỗi này vì chúng thuộc phạm trù ngữ nghĩa. Ứng dụng sẽ chạy theo giải thuật được miêu tả, ta phải tự đánh giá tính đúng/sai về giải thuật, nhưng việc tìm lỗi giải thuật thường rất khó. Để giúp đỡ người lập trình dễ dàng tìm ra các lỗi giải thuật, VB cung cấp công cụ cho phép họ kiểm soát được qui trình chạy ứng dụng và truy xuất các biến dữ liệu của chương trình, công cụ này được gọi là 'Debug'.
12.8 Các trạng thái của phần mềm dưới sự điều khiển của công cụ "debug".
Trong quá trình debug, ứng dụng sẽ ở 1 trong 2 trạng thái sau :
Pause : trạng thái của ứng dụng trước khi chạy hay khi dừng lại theo 1 điều kiện dừng nào đó của người debug. VB sẽ ghi nhớ lệnh sắp thi hành trước khi dừng (lệnh đầu tiên của ứng dụng nếu nó chưa bắt đầu chạy). Do tính lịch sử, ta dùng thuật ngữ PC - program counter để nói về lệnh này. Ở trạng thái này, người debug có thể xem giá trị của các biến dữ liệu để biết ứng dụng chạy đúng hay sai theo yêu cầu rồi điều khiển việc thi hành tiếp theo của ứng dụng, lúc này ứng dụng sẽ chuyển sang trạng thái Running.
Running : trạng thái mà ứng dụng đang chạy các lệnh của nó đến khi nó gặp 1 điều kiện dừng đã thiết lập trước, lúc này ứng dụng sẽ chuyển về trạng thái Pause.
Trong quá trình debug, ứng dụng ở trạng thái Pause chủ yếu thời gian và người debug tương tác với ứng dụng chủ yếu ở trạng thái này. Mỗi khi ứng dụng được chạy tiếp, nó chuyển qua trạng thái Running, nhưng sẽ nhanh chóng chạy đến lệnh dừng và chuyển về trạng thái Pause (trừ phi bị 'block' chờ I/O hay bị 'loop' trong các vòng lặp vô tận).