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. Cú hai loại phộp thử
i) Phộp thử thống kờ: để phản ỏnh tần suất cỏc input của người dựng thực và sau khi vận hành mỏy, cú thể cho ra một đỏnh giỏ độ tin cậy thao tỏc của hệ thống.
ii) Phộp thử khuyết tật: để bộc lộ cỏc khuyết tật trong hệ thống.
5.2 Sơ lược về tiến trỡnh kiểm thử phần mềm
• Quỏ trỡnh kiểm thử
Trừ cỏc hệ nhỏ, núi chung khụng nờn thử hệ thống nguyờn cả khối. Quỏ trỡnh thử cú thể chia làm 5 giai đoạn:
1) Thử đơn vị
2) Thử modul (chức năng) 3) Thử hệ con
4) Thử hệ thống
5) Thử sau lưng (alpha) và thử điều tra (beta)
Thử hệ thống là rất đắt, đối với một vài hệ thống thời gian thực cú cỏc ràng buộc thời gian phức tạp thỡ việc thử cú thể ngốn hết khoảng nửa tổng chi phớ phỏt triển. Vỡ thế mà phải lập kế hoạch thử và khống chế chi phớ thử
Việc thử liờn quan đến nhiều việc thiết lập cỏc mẫu cho quỏ trỡnh kiểm thử nhiều hơn là mụ tả cỏc phộp thử.
Chiến lược kiểm thử
Cỏc chiến lược như đó đề cập:
1. Thử từ trờn xuống: nờn dựng cỏc phỏt triển từ trờn xuống
2. Thử từ dưới lờn: việc thử từ dưới lờn luụn luụn là cần thiết cho cỏc thành phần hệ thống mức thấp.
3. Thử luồn sợi: dựng cho cỏc hệ thống thời gian thực
4. Thử gay cấn (thử ỏp lực): cho những hệ thống cú giới hạn tải, và phộp thử tăng dần tải cho tới khi hệ thống sập đổ để xỏc định độ chịu tải thực sự.
Túm tắt
Bước lập trỡnh của kỹ nghệ phần mềm là một tiến trỡnh dịch chuyển hoỏ. Thiết kế chi tiết được dịch sang một ngụn ngữ lập trỡnh mà cuối cựng được biến đổi thành cỏc lệnh mó mỏy thực hiện được. Cỏc đặc trưng tõm lý và kỹ thuật của ngụn ngữ lập trỡnh cú ảnh hưởng lớn tới quỏ trỡnh dịch và kiểm thử cũng như bảo trỡ phần mềm. Cỏc đặc trưng này cú thể được ỏp dụng vào ngụn ngữ lập trỡnh thuộc một trong bốn thế hệ ngụn ngữ.
Phong cỏch là một đặc tớnh quan trọng của chương trỡnh gốc và cú thể xỏc định ra tớnh dễ đọc của chương trỡnh. Cỏc yếu tố của phong cỏch bao gồm việc làm tài liệu bờn trong, phương phỏp khai bỏo dữ liệu, thủ tục xõy dựng cõu lệnh, và cỏc kỹ thuật lập trỡnh vào ra. Trong mọi trường hợp, tớnh đơn giản và rừ ràng là cỏc đặc trưng chớnh. Một nhõn tố của phong cỏch lập trỡnh là thời gian thực hiện và tớnh hiệu quả của bộ nhớ cần đạt tới. Mặc dầu tớnh hiệu quả cú thể là yờu cầu cực kỳ quan trọng, chỳng ta nờn nhớ rằng một chương trỡnh hiệu quả mà lại khụng dễ đọc thỡ cựng mang một giỏ trị đỏng hoài nghi.
Lập trỡnh là cốt lừi của tiến trỡnh phần mềm. Cỏc bước quan trọng chủ chốt phải hoàn tất trước lập trỡnh như phõn tớch, xỏc định yờu cầu và đặc tả của thiết kế chi tiết.
Củng cố
1. Túm lược cỏc đặc trưng ngụn ngữ lập trỡnh?
2. Nền tảng của ngụn ngữ lập trỡnh? (định kiểu dữ liệu, cơ chế chương trỡnh con, cấu trỳc điều khiển và cỏch tiếp cận hướng đối tượng)
3. Sơ lược về cỏc yếu tố trong phong cỏch lập trỡnh?
4. Sơ lược về kỹ thuật lập trỡnh hướng hiệu quả?
5. Nờu ra một vài hướng dẫn lập trỡnh hướng hiệu quả?
6. Mục tiờu, ý nghĩa vai trũ và nội dung của việc thẩm định và xỏc minh?
TÀI LIỆU THAM KHẢO
1. Kỹ nghệ phần mềm – Cỏch tiếp cận của người thực hành, Roger S.Pressman, Tập 1, Người dịch: Ngụ Trung Việt, NXB Giỏo dục, Năm 1997
2. Kỹ nghệ phần mềm – Cỏch tiếp cận của người thực hành, Roger S.Pressman, Tập 2, Người dịch: Ngụ Trung Việt, NXB Giỏo dục, Năm 1997
3. Kỹ nghệ phần mềm – Cỏch tiếp cận của người thực hành, Roger S.Pressman, Tập 3, Người dịch: Ngụ Trung Việt, NXB Giỏo dục, Năm 1997
4. Giỏo trỡnh Kỹ nghệ phần mềm, Nguyễn Văn Vỵ, Đại học Quốc gia Hà Nội, Năm 2001
5. Giỏo trỡnh Cụng nghệ phần mềm, Đại học Khoa học Tự nhiờn, Đại học Quốc gia Hà Nội, Năm 2000.
6. Software Engineering – A Practitioner’s Approach, Roger S.Pressman, Third Edition, McGraw-Hill.Inc, 1992.
7. The Unified Software Development Process, Ivar Jacobson, Grandy Booch, James Rumbaugh.