II. Kỹ nghệ phần mềm
b) Tờn người xột duyệt (kiểm toỏn) và ngày thỏng
c) Ngày thỏng sửa đổi và mụ tả sửa đổi.
Cỏc chỳ thớch chức năng được nhỳng vào bờn trong thõn của chương trỡnh gốc và được dựng để mụ tả cho cỏc hàm xử lý. Bờn cạnh đú lời chỳ thớch mụ tả nờn:
• Mụ tả cỏc khối chương trỡnh thay vỡ chỳ thớch cho từng dũng.
• Dựng dũng trống hay tụt lề để cho lời chỳ thớch cú thể được thuận tiện với chương trỡnh.
• Phải đỳng đắn: một lời chỳ thớch khụng đỳng hay gõy ra hiểu sai thỡ cũn tồi tệ hơn là khụng cú chỳ thớch nào cả.
Với những tờn gọi tượng trưng đỳng đắn và việc chỳ thớch tốt, việc làm tài liệu bờn trong thớch hợp sẽ được bảo đảm.
Khi một thiết kế thủ tục chi tiết được biểu diễn bằng cỏch dựng một ngụn ngữ thiết kế chương trỡnh thỡ tài liệu thiết kế cú thể được nhỳng trực tiếp vào trong văn bản chương trỡnh gốc như những cõu chỳ thớch. Kỹ thuật này đặc biệt cú ớch khi việc làm tài liệu được thực hiện trong hợp ngữ và giỳp đảm bảo rằng cả chương trỡnh thiết kế sẽ được bảo trỡ khi những thay đổi được thực hiện cho cả hai.
Tổ chức trực quan của chương trỡnh gốc như trong bản in là một đúng gúp quan trọng cho tớnh dễ đọc. Việc tụt lề chương trỡnh gốc chỉ ra kết cấu và khối logic của chương trỡnh sao cho những thuộc tớnh này là thấy được so với lề trỏi. Giống như việc chỳ thớch, cỏch tiếp cận tốt nhất là nờn để mở cho tranh luận. Việc tụt lề thủ cụng cú thể trở nờn phức tạp khi cú sự sửa đổi chương trỡnh và kinh nghiệm chỉ ra rằng khi đó tớch luỹ đủ hiểu biết thỡ sẽ tăng cuờng được việc để lề cho khớp. Cú lẽ cỏch tiếp cận tốt nhất là dựng bộ định dạng chương trỡnh tự động (như cụng cụ CASE: Visual Basic, Visual Studio, Edit Plus …) sẽ đặt đỳng việc tụt lề cho chương tỡnh gốc. Bằng cỏch xoỏ bỏ đi gỏnh nặng của việc làm tụt lề cho người lập trỡnh, cú thể cải thiện khuụn dạng chương trỡnh với tương đối ớt cụng sức.
3.2 Khai bỏo dữ liệu
Độ phức tạp và việc tổ chức cấu trỳc dữ liệu được xỏc định trong bước thiết kế. Phong cỏch khai bỏo dữ liệu được thiết lập khi chương trỡnh được sinh ra. Một số hướng dẫn tương đối đơn giản cú thể được lập ra để làm cho dữ liệu được dễ hiểu hơn và đơn giản hơn khi bảo trỡ.
Thứ tự khai bỏo dữ liệu nờn được chuẩn hoỏ cho dự ngụn ngữ lập trỡnh khụng cú yờu cầu bắt buộc nào về diều đú. Chẳng hạn, thứ tự khai bỏo cho một modul FOTRAN cú thể là:
1. Mọi khai bỏo tường minh (để cú chất lượng cao, mọi biến đều nờn khai bỏo):INTEGER, REAL, DOUBLE, PRECISION,... INTEGER, REAL, DOUBLE, PRECISION,...
2. Mọi khối dữ liệu toàn cục: COMMON/tờn khối/... 3. Mọi mảng cục bộ: DIMENSION tờn mảng và chiều 3. Mọi mảng cục bộ: DIMENSION tờn mảng và chiều 4. Mọi khai bỏo tệp: DEFINE, OPEN, CLOSE
Thứ tự tạo ra cỏc thuộc tớnh để dễ tỡm, cho phộp xỳc tiến kiểm thử, gỡ lỗi và bảo trỡ.
Khi cú nhiều tờn biến được khai bỏo trong một cõu lệnh thỡ việc sắp xếp theo trật tự chữ cỏi cho cỏc tờn gọi cú cựng cú giỏ trị. Tương tự, dữ liệu toàn cục cú nhón (như khối chung trong FOTRAN) cũng nờn được lập thứ tự theo bảng chữ.
Nếu thiết kế cú mụ tả trước cấu trỳc dữ liệu phức tạp thỡ nờn chỳ thớch những điểm đặc thự cố hữu trong việc cài đặt ngụn ngữ lập trỡnh. Chẳng hạn, cấu trỳc dữ liệu danh sỏch múc nối trong C hay kiểu dữ liệu người dựng xỏc định trong PASCAL cú thể yờu cầu tài liệu bổ sung cú chứa trong lời chỳ thớch của nú.
3.3 Xõy dựng cõu lệnh
Việc xõy dựng luồng logic phần mềm được thiết lập trong khi thiết kế việc xõy dựng từng cõu lệnh tuy nhiờn lại là một phần của bước lập trỡnh. Việc xõy dựng cõu lệnh nờn tuõn theo một qui tắc quan trọng: mỗi cõu lệnh nờn đơn giản và trực tiếp chương trỡnh khụng nờn bị xoắn tớt để đạt tớnh hiệu quả.
Nhiều ngụn ngữ lập trỡnh cho phộp nhiều cõu lệnh trờn một dũng. Khớa cạnh tiết kiệm khụng gian của tớnh năng này khú mà biện minh bởi tớnh khú đọc nảy sinh.
Cấu trỳc chương trỡnh và cỏc phộp toỏn điều kiện được chứa trong đoạn trờn đều bị che lấp bởi cỏch xõy dựng nhiều cõu lệnh trờn một dũng.
Cỏch xõy dựng cõu lệnh đơn và việc tụt lề minh hoạ cho cỏc đặc trưng logic và chức năng của đoạn này. Cỏc cõu lệnh chương trỡnh gốc riờng lẻ cú thể được đơn giản hoỏ:
• Việc trỏnh dựng cỏc phộp kiểm tra dữ liệu phức tạp
• Khử bỏ cỏc phộp kiểm tra điều kiện phủ định
• Dựng dấu ngoặc để làm sỏng tỏ cỏc biểu thức số học hay logic
• Dựng dấu cỏch và/hoặc cỏc ký hiệu dễ đọc để làm sỏng tỏ nội dung cõu lệnh.
• Suy nghĩ: Liệu ta cú thể hiểu được điều này nếu ta khụng là người lập trỡnh cho nú khụng?
• Từng hướng dẫn trờn đều cố gắng "giữ cho đơn giản"
3.4 Vào/ra
Phong cỏch vào và ra được thiết lập trong khi phõn tớch thiết kế yờu cầu phần mềm, khụng phải khi lập trỡnh. Tuy cỏch thức vào và ra được cài đặt cú thể là đặc trưng xỏc định việc cộng đồng người sử dụng chấp nhận hệ thống. Phong cỏch vào ra sẽ thay đổi theo mức độ tương tỏc con người. Với vào ra theo lụ thỡ cỏch tổ chức cỏi vào logic, kiểm tra lỗi vào/ra cú nghĩa, phục hồi lỗi vào/ra tốt và định dạng bỏo cỏo ra hợp lý là đặc trưng mong muốn. Với cỏi vào/ra tương ứng, một sơ đồ đưa vào cú hướng dẫn, đơn giản, viờc kiểm tra lỗi kỹ lưỡng và phục hồi chỳng, cỏi ra và sự nhất quỏn của định dạng vào ra trở thành mối quan tõm chủ yếu.
Bất kể tới bản chất theo lụ hay tương tỏc của phần mềm, một số hướng dẫn phong cỏch vào/ra nờn được xột tới trong khi thiết kế và lập trỡnh:
• Làm hợp lệ mọi cỏi vào
• Kiểm tra sự tin cậy của cỏc tổ hợp khoản mục vào quan trọng.
• Giữ cho định dạng cỏi vào đơn giản.
• Dựng cỏc chỉ bỏo cuối dữ liệu thay vỡ yờu cầu người dựng xỏc định số cỏc khoản mục
• Đặt nhón cho yờu cầu cỏi vào tương tỏc, xỏc định chọn lựa cú sẵn hay gắn cỏc giỏ trị
• Giữ cho định dạng cỏi vào thống nhất khi một ngụn ngữ lập trỡnh cú cỏc yờu cầu định dạng nghiờm ngặt
Phong cỏch của vào/ra bị ảnh hưởng bởi nhiều đặc trưng khỏc như thiết bị vào/ra (như kiểu thiết bị cuối hay trạm làm việc, thiết bị đồ hoạ mỏy tớnh, chuột v.v...), độ phức tạp của người dựng là mụi trường truyền thống.
4 Tớnh hiệu quả
Trong hệ thống kỹ nghệ tốt, cú một khuynh hướng tự nhiờn là dựng cỏc tài nguyờn chủ chốt một cỏch hiệu quả. Cỏc chu trỡnnh bộ xử lớ và vị trớ bộ nhớ thường được coi như cỏc tài nguyờn chủ chốt. Thứ nhất, tớnh hiệu quả là một yờu cầu hoàn thiện và do đú nờn được thiết lập trong phõn tớch yờu cầu phần mềm. Thứ hai là tớnh hiệu quả được cải thiện với thiết kế tốt. Thứ ba là tớnh hiệu quả của chương trỡnh và tớnh đơn giản của chương trỡnh đi đụi với nhau. Núi chung, khụng nờn gạt bỏ tớnh rừ ràng, dễ đọc hay tớnh đỳng đắn chỉ để cú được sự cải thiện nho nhỏ về tớnh hiệu quả.
4.1 Kỹ thuật lập trỡnh hướng hiệu qủa
Lập trỡnh là một nghề thủ cụng. Nú phụ thuộc vào kỹ xảo cỏ nhõn người lập trỡnh, sự chỳ ý đến cỏc chi tiết và kiến thức về việc sử dụng cỏc cụng cụ sẵn cú theo cỏch thức tốt nhất. Trong phần này chỉ tập trung vào một vài kỹ thuật chuyờn biệt được dựng nhằm đạt được một hệ thống tin cậy, khả chuyển và dựng lại được cỏc thành phần.
Nhu cầu cỏc hệ thống đỏng tin đang tăng lờn, hiển nhiờn là vỡ cỏc hệ thống mỏy tớnh đó lan khắp nơi. Hiện thời cú hai kỹ thuật để viết cỏc chương trỡnh đỏng tin: trỏnh lỗi và thứ 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