Trỏnh lỗi

Một phần của tài liệu Giáo trình tóm tắt Công nghệ phần mềm docx (Trang 141 - 148)

II. Kỹ nghệ phần mềm

A. Trỏnh lỗi

Tất cả cỏc kỹ sư phần mềm hẳn đều muốn làm ra cỏc phần mềm khụng cú lỗi. Một quỏ trỡnh phỏt triển chỉ dựa vào việc phỏt hiện lỗi và khử lỗi chứ khụng để ý đến trỏnh lỗi là một quỏ trỡnh chưa thật tốt.

Phần mềm khụng cú lỗi núi ở đõy là phần mềm tuõn theo đỳng đặc tả. Núi chung, cú thể cú lỗi trong đặc tả hoặc cú thể khụng phản ỏnh đỳng cỏc nhu cầu của người sử dụng. Vậy là phần mềm khụng cú lỗi khụng nhất thiết là cỏc phần mềm luụn luụn hành xử như người dựng dự đoỏn.

Việc phỏt triển phần mềm khụng cú lỗi đũi hỏi chi phớ nhiều. Khi mà một số lỗi đó được thỏo khỏi chương trỡnh thỡ giỏ cả cho việc tỡm và thỏo cỏc lỗi cũn lại cú xu hướng tăng theo hàm số mũ. Do dú một tổ chức cú thể quyết định chấp nhận một vài lỗi cũn lưu lại. Tớnh về mặt giỏ cả thỡ thà rằng chịu tiền chi trả cho cỏc phớ tổn của hệ thống do cỏc lỗi đú gõy ra cũn hơn là đi điều tra và thỏo gỡ cỏc lỗi đú truớc khi phõn phối.

Trỏnh lỗi và phỏt triển phần mềm vụ lỗi dựa trờn: i) Sản phẩm của một đặc tả hệ thống chớnh xỏc.

ii) Chấp nhận một cỏch tiếp cận thiết kế phần mềm lựa chọn việc che dấu thụng tin và bao gúi thụng tin.

iii) Tăng cuờng duyệt lại trong quỏ trỡnh phỏt triển và thẩm định hệ thống phần mềm. iv) Chấp nhận triết lý chất lượng tổ chức: chất lượng là bỏnh lỏi của quy trỡnh xõy dựng phần mềm.

v) Việc lập kế hoạch cẩn thận cho việc thử nghiệm hệ thống để trưng ra cỏc lỗi mà cỏc lỗi này chưa được phỏt hiện trong quỏ trỡnh duyệt lại và để định lượng độ tin cậy của hệ thống. này chưa được phỏt hiện trong quỏ trỡnh duyệt lại và để định lượng độ tin cậy của hệ thống. Cú hai cỏch chớnh để hỗ trợ trỏnh lỗi:

Lập trỡnh cú cấu trỳc

Thuật ngữ này được đặt ra từ cuối những năm 60 và cú nghĩa là lập trỡnh mà khụng dựng

goto, lập trỡnh chỉ dựng cỏc vũng lặp while và cỏc phỏt biểu if để xõy dựng điều khiển và trong thiết kế thỡ dựng cỏch liếp cận từ trờn xuống (top down). Việc thừa nhận lập trỡnh cú cấu trỳc là quan trọng bởi vỡ nú là bước đầu tiờn bước từ cỏch tiếp cận khụng khuụn phộp tới phỏt triển phần mềm.

Lập trỡnh cú cấu trỳc buộc người lập trỡnh phải nghĩ cẩn thận về chương trỡnh của họ, và vỡ vậy nú ớt tạo ra sai lầm trong khi phỏt triển

Lập trỡnh cú cấu trỳc làm cho chương trỡnh cú thể được đọc một cỏch tuần tự và do đú dễ hiểu và dễ thanh tra. Tuy nhiờn nú chỉ là bước đầu tiờn trong viờc lập trỡnh nhằm đạt độ tin cậy tốt. Cú một số cấu trỳc cú ớch nhưng hay dẫn tới cỏc lỗi trong hệ thống như: cỏc số thực dấu phảy động, con trỏ, song song, đệ quy, cỏc ngắt, vỡ vậy người lập trỡnh nờn dựng chỳng một cỏch cẩn thận.

Phõn quyền truy cập dữ liệu

Nguyờn lý an ninh được thừa nhận bởi cỏc tổ chức vũ trang là một nguyờn lý nhu cầu để biết. Mỗi thành phần chương trỡnh chỉ được phộp truy cập đến dữ liệu nào cần thiết để thực hiện chức năng của nú.

Ưu điểm của việc che dấu thụng tin là cỏc thụng tin bị che dấu khụng thể bị sụp đổ bởi cỏc thành phần chương trỡnh mà được xem rằng khụng dựng thụng tin đú. Biểu diễn dữ liệu cú thể được thay đổi mà khụng phải thay đổi cỏc thành phần khỏc cú sử dụng thụng tin đú.

Ngay với một hệ vụ lỗi thỡ vẫn cần một tiện ớch thứ lỗi: đú là vỡ cú thể cú cỏc lỗi đặc tả. Một tiện ớch thứ lỗi là cần thiết cho một hệ thống đỏng tin.

Cú bốn hoạt động cần phải tiến hành nếu hệ thống là thứ lỗi i) Phỏt hiện lỗi.

ii) Định ra mức độ thiệt hại.

iii) Hồi phục sau khi gặp lỗi: hệ thống phải hồi phục về trạng thỏi mà nú biết là an toàn. Cũng cú thể là chỉnh lý trạng thỏi bị huỷ hoại (hồi phục tiến), cũng cú thể là lui về một trạng thỏi trước đú là an toàn (hồi phục lựi).

iv) Chữa lỗi: Cải tiến hệ thống để cho lỗi đú khụng xuất hiện nữa. Trong nhiều trường hợp sự thất bại của phần mềm là tàng hỡnh và gõy ra bởi một tổ hợp của thụng tin vào.

C. Xử lý bất thường

Một sai lầm nào đú hoặc một sự cố bất ngờ xuất hiện được gọi là một bất thường. Cỏc bất thường cú thể do phần cứng cũng cú thể do phần mềm. Khi mà một bất thường khụng dự đoỏn được thỡ bộ điều khiển sẽ chuyển cho cơ chế xử lý hệ thống bất thường. Nếu một bất thường đó được dự đoỏn thỡ mó phải bao gồm cả việc phỏt hiện và xử lý bất thường đú.

Hầu hết cỏc ngụn ngữ lập trỡnh là khụng cú cỏc tiện ớch để phỏt hiện và xử lý bất thường. Cỏc bất thường cú thể được ghi lại bằng cỏch dựng một biến Boolean nhằm chỉ ra rằng cú một bất thường đó xuất hiện.

D. Lập trỡnh phũng thủ

Lập trỡnh phũng thủ là cỏch phỏt triển chương trỡnh mà người lập trỡnh giả định rằng cỏc mõu thuẫn hoặc cỏc lỗi chưa được phỏt hiện cú thể tồn tại trong chương trỡnh. Phải cú phần mềm kiểm tra trạng thỏi hệ thống sau khi biến đổi và phải đảm bảo rằng sự biến đổi trạng thỏi là kiờn định. Nếu phỏt hiện một mõu thuẫn thỡ việc biến đổi trạng thỏi là phải rỳt lại và trạng thỏi phải trở về trạng thỏi đỳng đắn trước đú.

Lập trỡnh phũng thủ là một cỏch thử lỗi được tiến hành khụng cần bộ điều khiển thứ lỗi. Về cơ bản quỏ trỡnh vẫn là: phỏt hiện lỗi, đỏnh giỏ lỗi và trỏnh lỗi.

Núi chung một lỗi gõy ra một sự sụp đổ trạng thỏi được gỏn cỏc trị khụng hợp luật. Ngụn ngữ lập trỡnh như Ada cho phộp phỏt hiện ra cỏc lỗi đú ngay trong thời gian biờn dịch. Tuy nhiờn việc kiểm tra biờn dịch chỉ hạn chế cho cỏc giỏ trị tĩnh. Một cỏch để phỏt hiện lỗi trong chương trỡnh Ada là dựng cơ chế xử lý bất thường kết hợp với đặc tả miền giỏ trị.

Hồi phục lỗi là một quỏ trỡnh cải biến khụng gian trạng thỏi của hệ thống sao cho hiệu ứng của lỗi là nhỏ nhất và hệ thống cú thể tiếp tục vận hành, cú lẽ là trong một mức suy giảm. Hồi phục tiến liờn quan đến việc cố gắng chỉnh lại trạng thỏi hệ thống. Hồi phục lựi liờn quan đến việc lưu trạng thỏi của hệ thống ở một trạng đỳng đó biết.

Hồi phục tiến thường là một ứng dụng chuyờn biệt. Cú hai tỡnh thế khi đú hồi phục tiến cú thể thành cụng:

1. Khi dữ liệu đó bị sụp. Việc xử dụng kỹ thuật mó hoỏ bằng cỏch thờm cỏc dữ liệu dư thừa vào dữ liệu cho phộp sửa sai khi phỏt hiện lỗi.

2. Khi cấu trỳc nối bị suy sụp. Nếu cỏc con trỏ tiến và lựi đó cú trong cấu trỳc dữ liệu thỡ cấu trỳc đú cú thể được tỏi tạo nếu như cũn đủ cỏc con trỏ chưa bị sụp. Kỹ thuật này thường được dựng cho việc sửa chữa hệ thống tệp và cơ sở dữ liệu.

Hồi phục lựi là một kỹ thuật đơn giản liờn quan đến việc duy trỡ cỏc chi tiết của trạng thỏi an toàn và cất giữ trạng thỏi đú khi mà sai lầm đó bị phỏt hiện. Hầu hết cỏc hệ quản trị cơ sở dữ liệu đều cú bộ phục hồi lỗi. CSDL chỉ cập nhật dữ liệu một khi giao dịch đó hoàn tất và khụng phỏt hiện đựơc vấn đề gỡ. Nếu giao dịch thất bại thỡ CSDL khụng được cập nhật.

Một kỹ thuật khỏc là thiết lập cỏc điểm kiểm tra thường kỳ mà chỳng là cỏc bản sao của trạng thỏi hệ thống. Khi mà một lỗi được phỏt hiện thỡ trạng thỏi an toàn đú được tỏi lưu kho từ điểm kiểm tra gần nhất.

Trường hợp hệ thống dớnh lớu tới nhiều quỏ trỡnh hợp tỏc thỡ dóy cỏc giao tiếp cú thể là cỏc điểm kiểm tra của cỏc quỏ trỡnh đú khụng đồng bộ và để hồi phục thỡ mỗi quỏ trỡnh phải trở lại trạng thỏi ban đầu của nú.

E. Sử dụng lại

Một đặc trưng của cụng trỡnh học là sử dụng cỏch tiếp cận thiết kế hệ thống mà nú sử dụng tối đa cỏc thành phần đó tồn tại. Người kỹ sư thiết kế khụng đặc tả một thiết kế mà trong đú mỗi thành phần đó được chế tạo dựa vào thiết kế cỏc thành phần đó được nghiờn cứu hoặc thử nghiệm trong cỏc hệ thống khỏc.

Chưa cú một cơ sở chung nào về việc dựng lại cỏc thành phần phần mềm với tư liệu được phổ biến rộng rói được dựng để thiết kế phần mềm. Tuy vậy, chỳng ta cần quan tõm đến những vấn đề sau đõy:

Phõn loại thành phần dựng lại được

i) Cỏc hệ ứng dụng

ii) Cỏc hệ con. Thớ dụ hệ đo mẫu được phỏt triển như là một phần của hệ xử lý văn bản cú thể được dựng lại trong một hệ quản trị cơ sở dữ liệu,

iii) Cỏc modul hoặc cỏc đối tượng, iv) Cỏc hàm.

Phỏt triển phần mềm để dựng lại được

Việc sử dụng lại một cỏch hệ thống đũi hỏi một cơ sở dữ liệu được xếp theo danh mục của cỏc thành phần dựng lại được. Quan niệm sai lầm là cỏc thành phần này đó cú sẵn cú trong cỏc hệ thống đang tồn tại và một thư viện cỏc thành phần cú thể được tạo ra bằng cỏch trớch chỳng ra và viết tư liệu cho chỳng.

Sự thật cỏc thành phần được tạo ra như là một phần của một ứng dụng là khụng chắc sẽ dựng lại được. Cỏc thành phần này hướng về phục vụ cỏc yờu cầu của hệ thống mà thành phần ấy thuộc về. Để dựng lại được một cỏch cú hiệu quả, nú phải thực sự được sinh ra như là để thoả món một phổ rộng cỏc yờu cầu.

Việc phỏt triển cỏc thành phần khỏi quỏt là đắt hơn việc phỏt triển cỏc thành phần cho mọi mục đớch chuyờn biệt và do đú nú làm tăng chi phớ dự ỏn.

Để phỏt triển cỏc thành phần dựng lại được cần cú một quyết định chớnh sỏch cú tổ chức là chi phớ ngắn hạn giỳp cho cỏc mục tiờu lõu dài. Chớnh tổ chức chứ khụng phải cỏ nhõn cỏc nhà quản lý phải ra quyết định như vậy. Cỏc nhà quản lý cấp trờn thường miễn cưỡng ủng hộ chi phớ để dựng lại vỡ cỏc khú khăn trong định lượng cỏc ưu điểm trong tương lai của một thư việc cỏc thành phần dựng lại được.

Để đỏnh giỏ độ dựng lại được cần phải đặt ra hai cõu hỏi sau đõy:

i) Thành phần này biểu diễn một sự khỏi quỏt lĩnh vực ứng dụng tốt như như thế nào. ii) Thành phần đó được viết ra cú là khỏi quỏt và thớch nghi được hay khụng.

Phỏt triển phần mềm cú thành phần tỏi sử dụng là giảm được chi phớ và ngoài ra cũn cú 5 ưu điểm nữa:

i) Độ tin cậy của hệ thống được tăng lờn. ii) Cỏc rủi ro là giảm đi.

iii) Sử dụng hiệu quả cỏc chuyờn gia ứng dụng.

iv) Cỏc chuẩn tổ chức cú thể được bao gồm trong cỏc thành phần dựng lại được. v)Thời gian phỏt triển phần mềm cú thể được rỳt gọn.

4.2 Một vài hướng dẫn lập trỡnh hướng hiệu quả

1. Tớnh hiệu qủa của chương trỡnh

Tớnh hiệu quả của chương trỡnh gốc cú liờn hệ trực tiếp với tớnh hiệu quả của thuật toỏn được xỏc định trong thiết kế chi tiết. Tuy nhiờn, phong cỏch lập trỡnh cú thể cú một tỏc động đến tốc độ thực hiện và yờu cầu bộ nhớ. Tập hợp cỏc hướng dẫn sau đõy bao giờ cũng cú thể ỏp dụng được khi thiết kế chi tiết được dịch thành chương trỡnh:

Đơn giản hoỏ cỏc biểu thức số học và logic trước khi đi vào lập trỡnh.

Tớnh toỏn cẩn thận từng chu kỡ lồng nhau để xỏc định liệu cỏc cõu lệnh hay biểu thức cú thể được chuyển ra ngoài hay khụng.

• Khi cú thể, hóy trỏnh dựng mảng nhiều chiều .

• Khi cú thể hóy trỏnh việc dựng con trỏ và danh sỏch phức tạp.

• Dựng cỏc phộp toỏn số học nhanh.

• Khụng trộn lẫn cỏc kiểu dữ liệu cho dự ngụn ngữ cú cho phộp điều đú.

• Dựng cỏc biểu thức số học và logic bất kỡ khi nào cú thể được.

Nhiều trỡnh biờn dịch cú tớnh năng tối ưu tự động sinh ra chương trỡnh hiệu quả bằng cỏch dồn nộn cỏc biểu thức lặp, thực hiện tớnh chu trỡnh, dựng số học nhanh và ỏp dụng cỏc thuật toỏn liờn quan khỏc. Với những ứng dụng trong đú tớnh hiệu quả cú ý nghĩa quan trọng, những trỡnh biờn dịch như thế là cụng cụ lập trỡnh khụng thể thiếu được.

2. Hiệu quả bộ nhớ

Tớnh hiệu quả bộ nhớ phải được tớnh vào đặc trưng "phõn trang" (segment) của hệ điều hành. Núi chung, tớnh cục bộ của chương trỡnh hay việc bảo trỡ lĩnh vực chức năng qua cỏc kết cấu cú cấu trỳc là một phương phỏp tuyệt vời làm giảm việc phõn trang và do đú làm tăng tớnh hiệu quả.

Hạn chế bộ nhớ trong thế giới bộ vi xử lớ nhỳng là mối quan tõm rất thực tế, mặc dầu bộ nhớ giỏ thấp, mật độ cao vẫn đang tiến hoỏ nhanh chúng. Nếu yờu cầu hệ thống cần tới bộ nhớ tối thiểu (như sản phẩm giỏ thấp, khối lượng lớn) thỡ trỡnh biờn dịch ngụn ngữ cấp cao phải được trự tớnh cẩn thận với tớnh năng nộn bộ nhớ hay như một phương kế cuối cựng, cú thể phải dựng tới hợp ngữ.

Khụng giống như nhiều đặc trưng hệ thống khỏc phải trả giỏ lẫn nhau, cỏc kỹ thuật cho hiệu quả về thời gian thực hiện đụi khi cú thể dẫn tới hiệu quả bộ nhớ. Chẳng hạn, giới hạn việc dựng cỏc mảng ba hay bốn chiều làm nảy sinh thuật toỏn thõm nhập phần tử đơn, thuật toỏn nhanh và ngắn nhất. Lần nữa, chỡa khoỏ cho tớnh hiệu quả bộ nhớ là "giữ cho đơn giản".

3. Hiệu quả vào/ra

Cỏi vào do người dựng cung cấp và cỏi ra được tạo ra cho người dựng là hiệu quả khi thụng tin cú thể được cung cấp hay được hiểu với một mức độ tiết kiệm nỗ lực trớ tuệ.

• Số cỏc yờu cầu vào / ra nờn giữ mức tối thiểu

• Một sự việc vào/ra nờn qua bộ đệm để làm giảm phớ tổn liờn lạc

• Với bộ nhớ phụ (như đĩa) nờn lựa chọn và dựng phương phỏp thõm nhập đơn giản nhất chấp nhận được.

• Nờn xếp khối vào/ra với cỏc thiết bị bộ nhớ phụ.

• Việc vào / ra với thiết bị cuối hay mỏy in nờn nhận diện cỏc tớnh năng của thiết bị cú thể cải tiến chất lượng hay tốc độ

• Hóy nhớ rằng "siờu hiệu quả" của vào/ra là vụ nghĩa nếu nú khụng được hiểu rừ.

Thiết kế vào ra lập nờn phong cỏch và cuối cựng chi phối tớnh hiệu quả. Những hướng dẫn trỡnh bày trờn đõy là ỏp dụng được cho cả cỏc bước thiết kế và lập trỡnh cho tiến trỡnh kỹ nghệ phần mềm.

5 Thẩm định và xỏc minh

5.1 Đại cương về việc thẩm định và xỏc minh

Xỏc minh và thẩm định một hệ phần mềm là quỏ trỡnh liờn tục xuyờn suốt mọi giai đoạn của quỏ trỡnh phần mềm. Xỏc minh và thẩm định mang tớnh quỏ trỡnh nhằm đảm bảo phần mềm thoả món cỏc yờu cầu của khỏch hàng.

Xỏc minh và thẩm định là một quỏ trỡnh kộo dài suốt vũng đời. Nú bắt đầu khi duyệt xột yờu cầu.

Xỏc minh và thẩm định cú hai mục tiờu: i)Xỏc định cỏc khuyết tật trong hệ thống

ii) Đỏnh giỏ xem hệ thống cú dựng được hay khụng? Sự khỏc nhau giữa xỏc minh và thẩm định là

i) Thẩm định: xột xem cỏi được xõy dựng cú là sản phẩm đỳng khụng ? ii) Xỏc minh: xột xem cỏi được xõy dựng cú đỳng là sản phẩm khụng ?

Như vậy xỏc minh là kiểm tra xem chương trỡnh cú phự hợp với đặc tả hay khụng. Cũn thẩm định là kiểm tra xem chương trỡnh cú được như mong đợi của người dựng hay khụng.

Một phần của tài liệu Giáo trình tóm tắt Công nghệ phần mềm docx (Trang 141 - 148)

Tải bản đầy đủ (DOC)

(148 trang)
w