Bài giảng Kỹ nghệ phần mềm (Nhập môn) - Nguyễn Quốc Toản - Chương 4: Lập trình hiệu quả

IV.1.Các đặc tr-ng ngôn ngữ lập trình

IV.1.1.Đặc tr-ng tâm lí

IV.1.2.Mô hình cú pháp/ngữ nghĩa

IV.1.3.H-ớng quan điểm kỹ nghệ

IV.1.4.Việc chọn ngôn ngữ

IV.1.5.Ngôn ngữ lập trình và kỹ nghệ phần mềm

IV.2.Nền tảng của ngôn ngữ lập trình

IV.2.1.Kiểu dữ liệu và định kiểu dữ liệu

IV.2.2 .Ch-ơng trình con

 IV.2.3.Cấu trúc điều khiển IV.2.4.Cách tiếp cận h-ớng đối t-ợng

 IV.2.5.Các lớp ngôn ngữ IV.2.6.Các công cụ lập trình

IV.3.Phong cách lập trình

IV.3.1.Tài liệu ch-ơng trình

 IV.3.2.Khai báo dữ liệu IV.3.3.Xây dựng câu lệnh IV.3.4.Vào/ra

IV.4.Tính hiệu quả

IV.4.1.Kỹ thuật lập trình h-ớng hiệu quả

IV.4.2.Độ tin cậy của phần mềm

IV.4.3.Tính di chuyển đ-ợc của hệ ứng dụng

IV.4.4.Một vài h-ớng dẫn lập trình h-ớng hiệu quả

IV.5.Thẩm định vàxác minh

IV.5.1.Đại c-ơng về việc thẩm định và xác minh

IV.4.2.Sơ l-ợc về tiến trình thử nghiệm

pdf22 trang | Chuyên mục: Công Nghệ Phần Mềm | Chia sẻ: dkS00TYs | Lượt xem: 1645 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Kỹ nghệ phần mềm (Nhập môn) - Nguyễn Quốc Toản - Chương 4: Lập trình hiệu quả, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ơng ứng với trắc đồ đó. 
iii) áp dụng các tr−ờng hợp thử ch−ơng trình, ghi lại độ dài thời gian thi hành giữa mỗi cặp 
thất bại quan sát đ−ợc, thích hợp hơn là dùng thời gian thô, với đơn vị thời gian thích 
hợp cho độ đo mức tin cậy. 
iv) Tính toán độ đo mức tin cậy sau một số đáng kể (về mặt thông kê) các thất bại đã quan 
sát đ−ợc. 
E) An toàn hệ thống. 
 Có những hệ thống mà thất bại của nó có thể gây ra một mối đe doạ tính mạng con 
ng−ời. Ví dụ về hệ thống an toàn sinh mệnh nh− vậy là hệ thống điều khiển máy bay. Có hai lớp 
phần mềm an toàn sinh mệnh: 
i) Các phần mềm an toàn sinh mệnh sơ cấp: là các phần mềm lồng nhúng trong một hệ 
phần cứng dùng để điều khiển quá trình khác mà sự làm việc sai sót của nó có thể trực tiếp gây ra 
 Ch−ơng IV - 
Nguyễn Quốc Toản- Nguyên văn Vỵ - Vu Đức Thi – Lê Đình Phùng 
107
th−ơng vong hoặc phá huỷ môi tr−ờng sống của con ng−ời. 
ii) Các phần mềm an toàn sinh mệnh thứ cấp: là các phần mềm có thể gián tiếp gây ra 
th−ơng vong. Ví dụ hệ thống phần mềm trợ giúp thiết kế kỹ thuật, hệ thống CSDL y tế liên quan đến 
các chất độc bảng A. 
 F) Thử nghiệm khiếm khuyết. 
 Thử nghiệm ch−ơng trình có hai mục đích: thứ nhất là chỉ ra rằng hệ thống là phù 
hợp với các đặc tả của nó. Thứ hai là thực hành hệ thống theo một cách sao cho các khuyết tật đ−ợc 
phơi ra. Các thử nghiệm với mục đích thứ nhất chính là các thẩm định, nó là các thử nghiệm để chấp 
nhận. Các thử nghiệm cho mục đích thứ hai lại khác hẳn: thử nghiệm thành công nhất là thử nghiệm 
phơi ra đ−ợc nhiều khuyết tật nhất. Các thử nghiệm có thể đ−ợc phát triển song song với việc thiết 
kế và thực hiện bởi những ng−ời không dính dáng tới việc thiết kế. 
IV.4.3.Tính di chuyển đ−ợc của hệ ứng dụng 
Tốc độ thay đổi công nghệ phần cứng nhanh đến mức mà máy tính là bị lỗi thời tr−ớc cá 
ch−ơng trình thi hành trên cái máy tính đó. Vậy là các hệ thống ứng dụng phải di chuyển đ−ợc sang 
các máy tính khác, trên môi tr−ờng khác. Độ di chuyển đ−ợc của một ứng dụng là tỷ lệ với khối 
l−ợng công việc cần phải tiến hành để ứng dụng đó thi hành đ−ợc trong một môi tr−ờng mới. Tính di 
chuyển đ−ợc có hai khía cạnh: 
-Tính vận chuyển: sự hoạt động của mã ch−ơng trình và dữ liệu kết hợp đ−ợc chuyển từ một 
môi tr−ờng này sang một môi tr−ờng khác. 
-Tính thích nghi; những thay đổi ch−ơng trình cần thiết để ch−ơng trình hoạt động trong một 
môi tr−ờng mới. 
IV.4.4.Một vài h−ớng dẫn lập trình h−ớng hiệu quả 
1.Tính hiệu quả 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à lôgic tr−ớc khi đi vào lập trình. 
• Tính 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 có 
hiệu quả 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“ 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ả. 
 Ch−ơng IV - 
Nguyễn Quốc Toản- Nguyên văn Vỵ - Vu Đức Thi – Lê Đình Phùng 
108
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êủ với một mức độ tiết kiệm nỗ lực trí tuệ. 
Một số h−ớng dẫn đơn giản để tăng c−ờng hiệu quả vào/ra: 
• Số các yêu cầu vào/ra nên giữ mức tối thiểu 
• Mọi 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. 
IV.5.Thẩm định và xác minh 
IV.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) Phát hiện 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. 
IV.5.2 Sơ l−ợc về tiến trình thử nghiệm 
 *Quá trình thử nghiệm: 
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 
 Ch−ơng IV - 
Nguyễn Quốc Toản- Nguyên văn Vỵ - Vu Đức Thi – Lê Đình Phùng 
109
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). 
 *Kế hoạch thử nghiệm. 
Thử hệ thống là rất đắt, đối với một vài hệ 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 nhiều đến việc thiết lập ra các mẫu cho quá trình thử nhiều hơn là mô tả 
các phép thử. 
 *Chiến l−ợc thử nghiệm. 
Có các chiến l−ợc thử nh− sau: 
1) Thử từ - trên - xuống: nên dùng cho 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ời gian thực. 
4) Thử gay cấn (á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 đến 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 4 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à 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à/hoặc tính hiệu quả 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 r−ớc lập trình nh− phân tích, xác định yêu cầu và đặc tả thiết kế chi tiết. 
? Củng cố 
 Ch−ơng IV - 
Nguyễn Quốc Toản- Nguyên văn Vỵ - Vu Đức Thi – Lê Đình Phùng 
110
1. Tóm l−ợc các đặc tr−ng của 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. Sơ l−ợc về những nội dung quan trọng về độ tin cậy phần mềm ? 
6. Nêu ra một vài h−ớng dẫn lập trình h−ớng hiệu quả? 
7. Mục tiêu, ý nghĩa, vai trò và nội dung của việc thẩm định và xác minh? 
8. Sơ l−ợc về tiến trình thử nghiệm ?(quá trình, kế hoạch, chiến l−ợc) 

File đính kèm:

  • pdfBài giảng Kỹ nghệ phần mềm (Nhập môn) - Nguyễn Quốc Toản - Chương 4 Lập trình hiệu quả.pdf