1. Trang chủ
  2. » Công Nghệ Thông Tin

bài giảngkỹ nghệ phần mềm (Nguyễn Việt Dũng)

75 302 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

công nghệ thông tin ngày càng phát triển. đi theo đó là công nghệ máy tính, mà gắn với máy tính là 2 công nghệ phần cứng và phần mềm. tài liệu của tác giả Nguyễn Việt Hà là tài liệu có uy tín và được sử dụng rông rãi. với chuyên nghành công nghệ phần mềm, tác giả sẽ mang đến cho bạn những kiến thức cơ bản và nền tảng nhất cho chuyền nghành công nghệ phần mềm

Bài giảng Kỹ nghệ phần mềm Nguyễn Việt Hà Bộ môn Công nghệ phần mềm Mục lục Phần mềm kỹ nghệ phần mềm 1.1 Tầm quan trọng tiến hóa phần mềm 1.1.1 Tiến hóa phần mềm 1.1.2 Sự ứng dụng phần mềm 1.2 Khó khăn, thách thức phát triển phần mềm 1.2.1 Phần mềm phần mềm tốt 1.2.2 Đặc trng phát triển vận hành phần mềm 1.2.3 Nhu cầu độ phức tạp 1.3 Kỹ nghệ phần mềm 1.3.1 Định nghĩa 1.3.2 Mô hình vòng đời cổ điển 1.3.3 Mô hình làm mẫu 1.3.4 Mô hình xoắn ốc 1.3.5 Kỹ thuật hệ thứ t 1.3.6 Mô hình lập trình cực đoan 1.3.7 Tổ hợp mô hình 1.3.8 Tính khả thị trình kỹ nghệ 1.3.9 Vấn đề giảm kích cỡ phần mềm 1.4 Cái nhìn chung kỹ nghệ phần mềm Phân tích đặc tả yêu cầu 2.1 Đại cơng phân tích đặc tả 2.2 Nghiên cứu khả thi 2.3 Nền tảng phân tích yêu cầu 2.3.1 Các nguyên lý phân tích 2.3.2 Mô hình hóa 2.3.3 Ngời phân tích 2.4 Xác định đặc tả yêu cầu 2.4.1 Xác định yêu cầu i 1 4 7 10 11 12 13 14 14 15 18 18 19 21 21 21 24 24 24 http://www.ebook.edu.vn 2.5 2.6 2.4.2 Đặc tả yêu cầu 2.4.3 Thẩm định yêu cầu Làm mẫu trình phân tích 2.5.1 Các bớc làm mẫu 2.5.2 Lợi ích hạn chế phát triển Định dạng đặc tả yêu cầu mẫu Thiết kế phần mềm 3.1 Khái niệm thiết kế phần mềm 3.1.1 Khái niệm 3.1.2 Tầm quan trọng 3.1.3 Quá trình thiết kế 3.1.4 Cơ sở thiết kế 3.1.5 Mô tả thiết kế 3.1.6 Chất lợng thiết kế 3.2 Thiết kế hớng chức 3.2.1 Cách tiếp cận hớng chức 3.2.2 Biểu đồ luồng liệu 3.2.3 Lợc đồ cấu trúc 3.2.4 Các từ điển liệu 3.3 Thiết kế hớng đối tợng 3.3.1 Cách tiếp cận hớng đối tợng 3.3.2 Ba đặc trng thiết kế hớng đối tợng 3.3.3 Cơ sở thiết kế hớng đối tợng 3.3.4 Các bớc thiết kế 3.3.5 Ưu nhợc điểm thiết kế hớng đối tợng 3.3.6 Quan hệ thiết kế lập trình hớng đối tợng 3.3.7 Quan hệ thiết kế hớng đối tợng hớng chức 3.4 Thiết kế giao diện ngời sử dụng 3.4.1 Một số vấn đề thiết kế 3.4.2 Một số hớng dẫn thiết kế Lập trình 4.1 Ngôn ngữ lập trình 4.1.1 Đặc trng ngôn ngữ lập trình 4.1.2 Lựa chọn ngôn ngữ lập trình 4.1.3 Ngôn ngữ lập trình và ảnh hởng 4.2 Phong cách lập trình ii tới kỹ nghệ phần mềm 25 26 26 27 27 28 32 32 32 32 33 34 35 36 39 39 40 40 40 40 40 41 41 42 42 43 43 44 45 46 48 48 48 49 50 50 http://www.ebook.edu.vn 4.3 4.4 4.2.1 Tài liệu chơng trình 4.2.2 Khai báo liệu 4.2.3 Xây dựng câu lệnh 4.2.4 Vào/ra Lập trình tránh lỗi 4.3.1 Lập trình thứ lỗi 4.3.2 Lập trình phòng thủ Lập trình hớng hiệu thực 4.4.1 Tính hiệu chơng trình 4.4.2 Hiệu nhớ 4.4.3 Hiệu vào/ra Xác 5.1 5.2 5.3 minh thẩm định Đại cơng Khái niệm phép thử Thử nghiệm chức thử nghiệm 5.3.1 Thử nghiệm chức 5.3.2 Thử nghiệm cấu trúc 5.4 Quá trình thử nghiệm 5.4.1 Thử nghiệm gây áp lực 5.5 Chiến lợc thử nghiệm 5.5.1 Thử nghiệm dới lên 5.5.2 Thử ngiệm xuống Quản lý dự án phát triển phần mềm 6.1 Đại cơng 6.2 Độ đo phần mềm 6.2.1 Đo kích cỡ phần mềm 6.2.2 Độ đo dựa thống kê 6.3 Ước lợng 6.4 Quản lý nhân 6.5 Quản lý cấu hình 6.6 Quản lý rủi ro iii cấu trúc 51 51 52 52 53 54 54 55 55 56 56 57 57 58 58 58 60 60 61 61 61 62 63 63 64 64 65 65 66 67 68 http://www.ebook.edu.vn Danh mục hình 1.1 1.2 1.3 Mô hình vòng đời cổ điển Mô hình làm mẫu Mô hình xoắn ốc 10 11 2.1 2.2 2.3 2.4 Quá trình hình thành yêu cầu Ký pháp DFD Biểu đồ luồng liệu hệ thống bán vé tầu Mô hình thực thể quan hệ ngời - phơng tiện giao thông 19 22 23 24 3.1 3.2 Vai trò thiết kế phần mềm trình kỹ nghệ Tính môđun chi phí phần mềm 33 35 iv http://www.ebook.edu.vn Danh mục bảng biểu 1.1 Năng lực biểu diễn ngôn ngữ 15 6.1 COCOMO - Các tham số sở 65 v http://www.ebook.edu.vn Chơng Phần mềm kỹ nghệ phần mềm 1.1 Tầm quan trọng tiến hóa phần mềm Máy tính khác với máy móc thông thờng điểm thực nhiệm vụ khác cách sử dụng phần mềm khác Tức phần mềm tạo khác biệt máy tính định lực máy tính Cho đến năm 1990, xu hớng ngành công nghiệp máy tính phát triển phần cứng nhằm giảm giá thành hệ thống tăng lực xử lý nh lu trữ liệu Do nhu cầu phần mềm tăng lên nhanh chóng, thách thức hay mục tiêu ngành công nghiệp máy tính cải thiện chất lợng giảm giá thành phần mềm Có thể nói khả phần cứng biểu thị cho tiềm hệ thống phần mềm chế giúp khai thác tiềm Chúng ta xem xét tầm quan trọng phần mềm khía cạnh tiến hóa phạm vi ứng dụng chúng 1.1.1 Tiến hóa phần mềm Sự tiến hóa phần mềm gắn liền với tiến hóa phần cứng chia làm giai đoạn: a Những năm đầu (từ 1950 đến 1960): - Giai đoạn phần cứng thay đổi liên tục, số lợng máy tính phần lớn máy đợc đặt hàng chuyên dụng cho ứng dụng đặc biệt - Phơng thức xử lý theo lô (batch), tức gói chơng trình có sử dụng kết lại thành khối dể tăng tốc độ thực - Thời kỳ lập trình máy tính đợc coi nghệ thuật theo năng, cha có phơng pháp hệ thống Việc phát triển phần mềm cha đợc quản lý - Môi trờng lập trình có tính chất cá nhân; thiết kế, tiến trình phần mềm không tờng minh, thờng tài liệu Sản xuất có tính đơn chiếc, theo đơn đặt hàng Ngời lập trình thờng ngời sử dụng kiêm việc bảo trì sửa lỗi http://www.ebook.edu.vn b Thời kỳ trải rộng từ năm 1960 đến năm 1970: - Các hệ thống đa nhiệm, đa ngời sử dụng (ví dụ: Multics, Unix, ) xuất dẫn đến khái niệm tơng tác ngời máy Kỹ thuật mở giới cho ứng dụng đòi hỏi mức độ tinh vi cho phần mềm phần cứng - Nhiều hệ thống thời gian thực với đặc trng thu thập, phân tích biến đổi liệu từ nhiều nguồn khác phản ứng (xử lý, tạo output) khoảng thời gian định xuất - Tiến lu trữ trực tuyến làm xuất hệ hệ quản trị CSDL - Số lợng hệ thống dựa máy tính phát triển, nhu cầu phân phối mở rộng, th viện phần mềm phát triển, quy mô phần mềm ngày lớn làm nẩy sinh nhu cầu sửa chữa gặp lỗi, cần sửa đổi ngời dùng có yêu cầu hay phải thích nghi với thay đổi môi trờng phần mềm (phần cứng, hệ điều hành, chơng trình dịch mới) Công việc bảo trì phần mềm tiêu tốn nhiều công sức tài nguyên đến mức báo động c Thời kỳ từ năm 1970 đến đầu năm 1990: - Hệ thống phân tán (bao gồm nhiều máy tính, máy thực chức liên lạc với máy khác) xuất làm tăng quy mô độ phức tạp phần mềm ứng dụng chúng - Mạng toàn cục cục bộ, liên lạc số giải thông cao phát triển mạnh làm tăng nhu cầu thâm nhập liệu trực tuyến, nảy sinh yêu cầu lớn phát triển phần mềm quản lý liệu - Công nghệ chế tạo vi xử lý tiến nhanh khiến cho máy tính cá nhân, máy trạm để bàn, thiết bị nhúng (dùng cho điều khiển robot, ô tô, thiết bị y tế, đồ điện gia dụng, ) phát triển mạnh khiến cho nhu cầu phần mềm tăng nhanh - Thị trờng phần cứng vào ổn định, chi phí cho phần mềm tăng nhanh có khuynh hớng vợt chi phí mua phần cứng d Thời kỳ sau 1990: - Kỹ nghệ hớng đối tợng cách tiếp cận nhanh chóng thay nhiều cách tiếp cận phát triển phần mềm truyền thống lĩnh vực ứng dụng - Sự phát triển Internet làm cho ngời dùng máy tính tăng lên nhanh chóng, nhu cầu phần mềm ngày lớn, quy mô độ phức tạp hệ thống phần mềm tăng đáng kể - Phần mềm trí tuệ nhân tạo ứng dụng thuật toán phi số nh hệ chuyên gia, mạng nơ ron nhân tạo đợc chuyển từ phòng thí nghiệm ứng dụng thực tế mở khả xử lý thông tin nhận dạng kiểu ngời 1.1.2 Sự ứng dụng phần mềm Chúng ta chia phần mềm theo miền ứng dụng thành loại nh sau: a Phần mềm hệ thống - Là tập hợp chơng trình đợc viết để phục vụ cho chơng trình khác http://www.ebook.edu.vn - Xử lý cấu trúc thông tin phức tạp nhng xác định (trình biên dịch, trình soạn thảo, tiện ích quản lý tệp) - Đặc trng tơng tác chủ yếu với phần cứng máy tính - Phục vụ nhiều ngời dùng - Cấu trúc liệu phức tạp nhiều giao diện b Phần mềm thời gian thực Phần mềm điều phối, phân tích kiểm soát kiện giới thực chúng xuất đợc gọi phần mềm thời gian thực Điển hình phần mềm điều khiển thiết bị tự động Phần mềm thời gian thực bao gồm thành tố: - Thành phần thu thập liệu để thu định dạng thông tin từ môi trờng - Thành phần phân tích để biến đổi thông tin theo yêu cầu ứng dụng - Thành phần kiểm soát đa đáp ứng môi trờng - Thành phần điều phối để điều hòa thành phần khác cho trì việc đáp ứng thời gian thực Hệ thống thời gian thực phải đáp ứng ràng buộc thời gian chặt chẽ c Phần mềm nghiệp vụ Là phần mềm phục vụ hoạt động kinh doanh hay nghiệp vụ tổ chức, doanh nghiệp Đây coi lĩnh vực ứng dụng phần mềm lớn Điển hình hệ thống thông tin quản lý gắn chặt với CSDL, ứng dụng tơng tác nh xử lý giao tác cho điểm bán hàng d Phần mềm khoa học công nghệ - Đợc đặc trng thuật toán (tính toán ma trận số, mô ) - Thờng đòi hỏi phần cứng có lực tính toán cao e Phần mềm nhúng - Nằm nhớ đọc đợc dùng để điều khiển sản phẩm hệ thống cho ngời dùng thị trờng công nghiệp - Có đặc trng phần mềm thời gian thực phần mềm hệ thống f Phần mềm máy tính cá nhân - Bùng nổ từ xuất máy tính cá nhân, giải toán nghiệp vụ nhỏ nh xử lý văn bản, trang tính, đồ họa, quản trị CSDL nhỏ - Yếu tố giao diện ngời-máy đợc trọng g Phần mềm trí tuệ nhân tạo - Dùng thuật toán phi số để giải vấn đề phức tạp mà tính toán hay phân tích trực tiếp không quản lý - Các ứng dụng là: hệ chuyên gia (hệ sở tri thức), nhận dạng (hình ảnh tiếng nói), chứng minh định lý chơi trò chơi, mô Ngoài ra, kể đến dạng phần mềm đặc biệt phần mềm phục vụ kỹ nghệ phần mềm Đó phần mềm nh chơng trình dịch, phần mềm gỡ rối, công cụ hỗ trợ phân tích thiết kế (CASE) Các phần mềm xuất dới dạng phần mềm máy tính cá nhân, phần mềm hệ thống phần mềm http://www.ebook.edu.vn nghiệp vụ 1.2 Khó khăn, thách thức phát triển phần mềm Từ năm 60, nhiều dự án phần mềm lớn không thành công nh dự án OS 360 (tiêu tốn số tiền thời gian gấp nhiều lần dự kiến) TSS 360 (không đạt tiêu kỹ thuật, hầu nh không hoạt động) IBM Do đó, việc phát triển phần mềm đợc nhận thức lĩnh vực đầy khó khăn chứa nhiều rủi ro Chúng ta xem xét khó khăn thách thức khía cạnh đặc trng, qui mô nhu cầu phần mềm 1.2.1 Phần mềm phần mềm tốt Phần mềm thông thờng đợc định nghĩa bao gồm: - lệnh máy tính nhằm thực chức xác định - cấu trúc liệu cho phép chơng trình thao tác với liệu - tài liệu giúp cho ngời dùng vận hành đợc phần mềm Bốn thuộc tính chủ chốt mà hệ phần mềm tốt phải có là: Có thể bảo trì đợc: phần mềm tuổi thọ dài phải đợc viết đợc lập t liệu cho việc thay đổi tiến hành đợc mà không tốn Đây đợc coi đặc tính chủ chốt phần mềm tốt Để bảo trì đợc, phần mềm phải có thiết kế tốt có tính modun hóa cao, đợc viết ngôn ngữ bậc cao đợc lập tài liệu (tài liệu phân tích, thiết kế, thích mã nguồn, hớng dẫn ngời dùng ) đầy đủ Đáng tin cậy: phần mềm phải thực đợc điều mà ngời tiêu dùng mong mỏi không thất bại nhiều điều đợc đặc tả Điều có nghĩa phần mềm phải thỏa mãn đợc nhu cầu ngời dùng Để đạt đợc yếu tố đáng tin cậy, trớc tiên ngời phát triển cần phải hiểu cách đắn yêu cầu ngời dùng sau cần thỏa mãn đợc yêu cầu thiết kế cài đặt tốt Có hiệu quả: phần mềm hoạt động phải không lãng phí tài nguyên hệ thống nh nhớ, xử lý Nếu phần mềm chạy chậm hay đòi hỏi nhiều nhớ dù có đợc cài đặt nhiều chức không đợc đa vào sử dụng Tuy nhiên, ngoại trừ phần mềm nhúng hay thời gian thực đặc biệt, ngời ta thờng không cực đại hóa mức độ hiệu việc phải dùng đếm kỹ thuật đặc thù cài đặt ngôn ngữ máy khiến cho chi phí tăng cao phần mềm khó thay đổi (tính bảo trì kém) Dễ sử dụng: giao diện ngời sử dụng phải phù hợp với khả kiến thức ngời dùng, có tài liệu hớng dẫn tiện ích trợ giúp Đối tợng http://www.ebook.edu.vn biết Hồi phục tiến thờng chuyên biệt ứng dụng Có hai tình chung mà hồi phục tiến thành công: 1) Khi liệu mã bị sụp đổ: Việc sử dụng kỹ thuật mã hóa thích hợp cách thêm liệu d thừa vào liệu cho phép sửa sai phát lỗi 2) Khi cấu trúc nối bị sụp đổ: Nếu trỏ tiến lùi có cấu trúc liệu cấu trúc tái tạo nh đủ trỏ cha bị sụp Kỹ thuật thờng đợc dùng cho việc sửa chữa hệ thống tệp sở liệu Hồi phục lùi kỹ thuật đơn giản liên quan đến việc trì chi tiết trạng thái an toàn cất giữ trạng thái mà sai lầm bị phát Hầu hết hệ quản trị sở liệu có hồi phục lỗi CSDL cập nhật liệu giao dịch hoàn tất không phát đợc vấn đề Nếu giao dịch thất bại CSDL không đợc cập nhật Một kỹ thuật khác thiết lập điểm kiểm tra thờng kỳ mà chúng trạng thái hệ thống Khi mà lỗi đợc phát trạng thái an toàn đợc tái lu kho từ điểm kiểm tra gần Trờng hợp hệ thống dính líu tới nhiều trình hợp tác dãy giao tiếp điểm kiểm tra trình không đồng để hồi phục trình phải trở lại trạng thái ban đầu 4.4 Lập trình hớng hiệu thực 4.4.1 Tính hiệu chơng trình Tính hiệu chơng trình gốc có liên hệ trực tiếp với tính hiệu thuật toán đợc xác định thiết kế chi tiết Tuy nhiên, phong cách lập trình có tác động đến tốc độ thực yêu cầu nhớ Tập hợp hớng dẫn sau áp dụng đợc thiết kế chi tiết đợc dịch thành chơng trình: - Đơn giản hóa biểu thức số học lôgic trớc vào lập trình - Tính cẩn thận chu kỳ lồng để xác định liệu câu lệnh hay biểu thức đợc chuyển hay không - Khi có thể, tránh dùng mảng nhiều chiều - Khi tránh việc dùng trỏ danh sách phức tạp - Dùng phép toán số học nhanh - Không trộn lẫn kiểu liệu, cho dù ngôn ngữ có cho phép điều - Dùng biểu thức số học logic đợc Nhiều trình biên dịch có tính tối u tự động sinh chơng trình hiệu cách dồn nén biểu thức lặp, thực tính chu trình, dùng số học nhanh áp dụng thuật toán có hiệu liên quan khác Với ứng dụng tính hiệu có ý nghĩa quan trọng, trình biên dịch nh công cụ lập trình thiếu đợc 55 http://www.ebook.edu.vn 4.4.2 Hiệu nhớ Tính hiệu nhớ phải đợc tính vào đặc trng phân trang hệ điều hành Nói chung, tính cục chơng trình hay việc bảo trì lĩnh vực chức qua kết cấu có cấu trúc phơng pháp tuyệt vời làm giảm việc phân trang làm tăng tính hiệu Hạn chế nhớ phát triển phần mềm nhúng mối quan tâm thực tế, nhớ giá thấp, mật độ cao tiến hóa nhanh chóng Nếu yêu cầu hệ thống cần tới nhớ tối thiểu (nh sản phẩm giá thấp, khối lợng lớn) 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én nhớ, hay nh phơng kế cuối cùng, phải dùng tới hợp ngữ 4.4.3 Hiệu vào/ra Các thiết bị vào thờng có tốc độ chậm nhiều so với khả tính toán máy tính tốc độ truy cập nhớ Việc tối u vào làm tăng đáng kể tốc độ thực Một số hớng dẫn đơn giản để tăng cờng hiệu vào/ra: Số 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 đệm để làm giảm phí tổn liên lạc Với nhớ phụ (nh đĩa) nên lựa chọn dùng phơng pháp thâm nhập đơn giản chấp nhận đợc Nên xếp khối vào/ra với thiết 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 tính thiết bị cải tiến chất lợng hay tốc độ Tổng kết Bớc lập trình tiến trình dịch (chuyển hóa) thiết kế chi tiết thành chơng trình mà cuối đợc biến đổi thành lệnh mã máy thực đợc Các đặc trng ngôn ngữ lập trình có ảnh hởng lớn đến trình xây dựng, kiểm thử nh bảo trì phần mềm Phong cách lập trình định tính dễ hiểu chơng trình gốc Các yếu tố phong cách bao gồm việc làm tài liệu bên trong, phơng pháp khai báo liệu, thủ tục xây dựng câu lệnh, kỹ thuật lập trình vào/ra Lập trình cần hớng tới hiệu thực hiện, tức tích kiệm tài nguyên phần cứng (mức độ sử dụng CPU, nhớ ) Mặc dầu tính hiệu yêu cầu quan trọng, nên nhớ chơng trình hoạt động hiệu mà lại không dễ hiểu dẫn đến khó bảo trì giá trị bị hạn chế 56 http://www.ebook.edu.vn Chơng Xác minh thẩm định 5.1 Đại cơng Xác minh thẩm định kiểm tra việc phát triển phần mềm Là công việc xuyên suốt trình phát triển phần mềm, không khâu kiểm thử có mã nguồn Xác minh (verification) kiểm tra xem sản phầm có với đặc tả không, trọng vào việc phát lỗi lập trình Thẩm định (validation) kiểm tra xem sản phẩm có đáp ứng đợc nhu cầu ngời dùng không, có hoạt động hiệu không, tức trọng vào việc phát lỗi phân tích, lỗi thiết kế Tóm lại, mục đích thẩm định xác minh phát sửa lỗi phần mềm đánh giá tính dùng đợc phần mềm Có hai khái niệm thẩm định/xác minh tĩnh thẩm định/xác minh động Thẩm định xác minh tĩnh kiểm tra mà không thực chơng trình, ví dụ nh xét duyệt thiết kế, xét duyệt yêu cầu, nghiên cứu mã nguồn, sử dụng biến đổi hình thức (suy luận) để kiểm tra tính đắn chơng trình Thẩm định xác minh tĩnh đợc tiến hành khâu vòng đời phần mềm Về lý thuyết, phát đợc hầu hết lỗi lập trình, nhiên phơng pháp đánh giá đợc tính hiệu chơng trình Thẩm định xác minh động kiểm tra thông qua việc thực chơng trình, đợc tiến hành sau phát triển chơng trình (mã nguồn) Hiện kỹ thuật kiểm tra Cả hai hớng nêu quan trọng chúng bổ khuyết lẫn Trong chơng này, sâu vào tìm hiểu thẩm định xác minh động, gọi thử nghiệm (kiểm thử) chơng trình Có hai loại thử nghiệm (động) là: thử nghiệm (tìm) khuyết tật: đợc thiết kế để phát khuyết tật hệ thống (đặc biệt lỗi lập trình) 57 http://www.ebook.edu.vn thử nghiệm thống kê: sử dụng liệu (thao tác) phổ biến ngời dùng (dựa thống kê) để đánh giá tính dùng đợc hệ thống Thử nghiệm cần phải có tính lặp lại: thử nghiệm phải lặp lại đợc để phát thêm lỗi kiểm tra xem lỗi đợc sửa hay cha Bất sửa mã chơng trình phải thử nghiệm lại (kể thử nghiệm thành công) tính hệ thống: việc thử nghiệm phải tiến hành cách có hệ thống để đảm bảo kiểm thử đợc trờng hợp, tiến hành thử nghiệm cách ngẫu nhiên không đảm bảo đợc điều đợc lập tài liệu: để kiểm soát xem đợc thực hiện, kết nh 5.2 Khái niệm phép thử Một phép thử đợc gọi thành công phát khiếm khuyết phần mềm Chú ý phép thử chứng minh đợc tồn lỗi hệ thống không chứng minh đợc hệ thống lỗi Một phép thử (ca thử nghiệm) bao gồm - tên mô đun thử nghiệm - liệu vào - liệu mong muốn (đúng) - liệu thực tế (khi tiến hành thử nghiệm) Các ca thử nghiệm nên đợc thiết kế tạo tài liệu phân tích thiết kế, viết xong mã nguồn 5.3 Thử nghiệm chức thử nghiệm cấu trúc Có hai kỹ thuật thử nghiệm tìm khuyết tật thử nghiệm chức thử nghiệm cấu trúc 5.3.1 Thử nghiệm chức Thử ngiệm chức (functional testing) gọi thử nghiệm hộp đen (black box testing) thử nghiệm sử dụng ca thử nghiệm đợc thiết kế dựa đặc tả yêu cầu, tài liệu ngời dùng nhằm mục đích phát khiếm khuyết Thử nghiệm chức nhìn nhận mô đun đợc thử nghiệm nh hộp đen, quan tâm đến chức (hành vi) mô đun, tức kiểm tra xem có hoạt động với đặc tả hay không Các ca kiểm thử bao gồm trờng hợp bình thờng không bình thờng (dữ liệu không hợp lệ ) mô đun 58 http://www.ebook.edu.vn Thông thờng, thử nghiệm với liệu, chiến lợc chung thiết kế liệu thử nghiệm phân hoạch (dữ liệu) tơng đơng Phân hoạch tơng đơng chia miền liệu vào thành vùng, mà vùng chứa liệu có hành vi Do đó, vùng liệu cần xây dựng ca thử nghiệm Thêm vào ca sử dụng biên giới vùng Theo kinh nghiệm, sai sót lập trình thờng sảy liệu biên Ví dụ, hàm tính trị tuyệt đối số nguyên, chia miền đối số thành vùng: - vùng liệu - vùng liệu < Do liệu đầu vào để kiếm thử 100, -20, Ngoài ca thử nghiệm trên, thông thờng cần kiểm tra với liệu đặc thù nh: - biên số máy tính (ví dụ -32768, 32767) - 0, số âm, số thập phân - input - input ngẫu nhiên - input sai kiểu Thử nghiệm chức giúp - phát thiếu sót chức - phát khiếm khuyết - sai sót giao diện mô đun - không hiệu chơng trình - lỗi khởi tạo, lỗi kết thúc Tuy nhiên thử nghiệm chức dựa đặc tả nên kiểm thử đợc trờng hợp không đợc khai báo đặc tả, không đảm bảo thử hết đợc khối mã nguồn mô đun Thử nghiệm chức không phát đợc đoạn mã yếu (có khả sinh lỗi với trạng thái đặc biệt hệ thống), nhiều trờng hợp việc đảm bảo xây dựng đầy đủ ca thử nghiệm khó khăn Ví dụ, hàm tính trị tuyệt đối sau thoát đợc thử nghiệm chức có lỗi int abs(int n) { if (n>0) return n; else (ny) { if (x>z) return x; else return z; } else { if (y > z) return y; else return z; } } Trong ví dụ có đờng cần ca thử nghiệm để thử nghiệm tất đờng Thử nghiệm cấu trúc xem xét chơng trình mức độ chi tiết phù hợp kiểm tra mô đun nhỏ Tuy nhiên thử nghiệm cấu trúc không đầy đủ kiểm thử hết lệnh không chứng tỏ kiểm thử hết trờng hợp Có khả tồn tổ hợp lệnh khác gây lỗi Ngoài ra, kiểm thử hết đờng vòng lặp lớn Tóm lại, thử nghiệm chức thử nghiệm cấu trúc quan trọng chúng bổ khuyết lẫn 5.4 Quá trình thử nghiệm Quá trình thử nghiệm chia làm giai đoạn nh sau: thử nghiệm đơn vị: bớc thử nghiệm chức (hàm) nhằm mục đích phát lỗi lập trình, thờng sử dụng nhiều thử nghiệm cấu trúc thử nghiệm mô đun: thử nghiệm mô đun (liên kết số hàm) thử nghiệm hệ con: hệ thống bao gồm số hệ độc lập bớc tiến hành thử nghiệm với hệ riêng biệt 60 http://www.ebook.edu.vn thử nghiệm hệ thống (tích hợp): thử nghiệm hoạt động tổng thể hệ thống, kiểm tra tính đắn giao diện, tính đắn với đặc tả, tính dùng đợc Chủ yếu sử dụng thử nghiệm chức thử nghiệm nghiệm thu (alpha): thử nghiệm đợc tiến hành nhóm nhỏ ngời sử dụng dới hớng dẫn ngời phát triển, sử dụng liệu thực, thẩm định tính dùng đợc hệ thống thử nghiệm beta: mở rộng thử nghiệm alpha, đợc tiến hành với số lớn ngời sử dụng hớng dẫn ngời phát triển, kiểm tra tính ổn định, điểm tốt không tốt hệ thống Các bớc thử nghiệm ban đầu nặng kiểm tra lỗi lập trình (xác minh), bớc thử nghiệm cuối thiên kiểm tra tính dùng đợc hệ thống (thẩm định) Ngoài bớc hay khái niệm thử nghiệm khác đợc gọi thử nghiệm quay lui Thử nghiệm quay lui đợc tiến hành sửa mã chơng trình: - sửa lỗi - nâng cấp chơng trình 5.4.1 Thử nghiệm gây áp lực Đối với số hệ thống quan trọng, ngời ta tiến hành thử nghiệm gây áp lực (stress testing) Đây loại (bớc) thử nghiệm đợc tiến hành có phiên làm việc, nhằm tìm hiểu hoạt động hệ thống trờng hợp tải trọng lớn (dữ liệu lớn, số ngời sử dụng lớn, tài nguyên hạn chế ) Mục đích thử nghiệm áp lực - tìm hiểu giới hạn chịu tải hệ thống - tìm hiểu đặc trng hệ thống đạt vợt giới hạn chịu tải (khi bị sụp đổ) Ngoài thử nghiệm áp lực nhằm xác định trạng thái đặc biệt nh tổ hợp số điều kiện dẫn đến sụp đổ hệ thống; tính an toàn liệu, dịch vụ hệ thống sụp đổ 5.5 Chiến lợc thử nghiệm Khi thử nghiệm hệ thử nghiệm hệ thống (tích hợp), có chiến lợc thử nghiệm thử nghiệm dới lên (bottom-up testing) thử nghiệm xuống (top-down testing) 5.5.1 Thử nghiệm dới lên Thử nghiệm dới lên tiến hành thử nghiệm với mô đun mức độ thấp trớc Mô đun thợng cấp (mô đun gọi) đợc thay chơng trình kiểm thử có nhiện vụ 61 http://www.ebook.edu.vn đọc liệu kiểm thử, gọi mô đun cần kiểm thử kiểm tra kết Nhợc điểm thử nghiệm dới lên - phát chậm lỗi thiết kế - chậm có phiên thực đợc hệ thống 5.5.2 Thử ngiệm xuống Thử nghiệm xuống tiến hành thử nghiệm với mô đun mức cao trớc, mô đun mức thấp đợc tạm thời phát triển với chức hạn chế, có giao diện giống nh đặc tả Mô đun mức thấp đơn giản trả lại kết với vài đầu vào định trớc Thử nghiệm xuống có u điểm - phát sớm lỗi thiết kế, thiết kế, cài đặt lại với giá rẻ - có phiên hoạt động sớm (với tính hạn chế) sớm tiến hành thẩm định Nhợc điểm kiểm thử xuống chức mô đun cấp thấp nhiều phức tạp khó mô đợc, dẫn đến không kiểm thử đầy đủ chức phải đình kiểm thử mô đun cấp thấp xây dựng xong 62 http://www.ebook.edu.vn Chơng Quản lý dự án phát triển phần mềm 6.1 Đại cơng Quản lý dự án tầng phát triển phần mềm Chúng ta gọi tầng quản lý bớc kỹ thuật sở kéo dài suốt vòng đời phần mềm Mục tiêu việc quản lý dự án phát triển phần mềm đảm bảo cho dự án thời hạn không vợt dự toán đầy đủ chức định thỏa mãn yêu cầu khách hàng (tạo sản phẩm tốt) Quản lý dự án bao gồm pha công việc sau thiết lập: viết đề án ớc lợng chi phí phân tích rủi ro lập kế hoạch chọn ngời theo dõi kiểm soát dự án viết báo cáo trình diễn sản phẩm Tiến hành quản lý dự án ngời quản lý dự án, có nhiệm vụ quyền hạn nh sau Thời gian - tạo lập kế hoạch, điều chỉnh kế hoạch - kiểm tra/đối chiếu tiến trình với kế hoạch - giữ độ mềm dẻo định kế hoạch - phối thuộc tiến trình Tài nguyên: thêm tiền, thêm thiết bị, thêm ngời Sản phẩm: thêm bớt chức sản phẩm Rủi ro: phân tích tìm phơng pháp xử lý, chấp nhận số rủi ro 63 http://www.ebook.edu.vn Ngoài ra, ngời quản lý dự án cần phải quan tâm đến phối thuộc với dự án khác thông tin cho ngời quản lý cấp Phơng pháp tiếp cận ngời quản lý dự án hiểu rõ mục tiêu (tìm cách định lợng mục tiêu có thể) hiểu rõ ràng buộc (chi phí, lịch biểu, tính ) lập kế hoạch để đạt dợc mục tiêu ràng buộc giám sát điều chỉnh kế hoạch tạo môi trờng làm việc ổn định, động cho nhóm Quản lý tồi dẫn đến chậm trễ dự án, tính yếu tăng chi phí phát triển Một ví dụ kinh điển quản lý tồi dự án hệ điều hành OS360 IBM bị chậm năm so với kế hoạch 6.2 Độ đo phần mềm Để quản lý cần định lợng đợc đối tợng quản lý cần quản lý, phần mềm qui trình phát triển Chúng ta cần đo kích cỡ phần mềm, chất lợng phần mềm, suất phần mềm 6.2.1 Đo kích cỡ phần mềm Có hai phơng pháp phổ biến để đo kích cỡ phần mềm đo số dòng lệnh (LOC Lines Of Code) đo điểm chức (FP - Function Points) Độ đo LOC tơng đối trực quan, nhiên phụ thuộc nhiều vào ngôn ngữ lập trình cụ thể Từ kích cỡ phần mềm (LOC), tính số giá trị nh - Hiệu = KLOC/ngời-tháng - Chất lợng = số khiếm khuyết/KLOC - Chi phí = giá thành/KLOC Các thông số dự án phát triển khứ đợc dùng dể phục vụ cho ớc lợng cho phần mềm phát triển Điểm chức FP đợc tính dựa đặc tả yêu cầu độc lập với ngôn ngữ phát triển Tuy nhiên lại có phụ thuộc vào tham số đợc thiết lập dựa kinh nghiệm Mô hình sở tính điểm chức F P = a1I + a2O + a3E + a4L + a5F, - I : số Input - O: số Output - E: số yêu cầu - L: số tệp truy cập - F: số giao diện ngoại lai (devices, systems) 64 http://www.ebook.edu.vn 6.2.2 Độ đo dựa thống kê Ngời ta thiết lập số độ đo phần mềm dựa thống kê nh sau: - Độ tin cậy MTBF - Mean Time Between Failure: thời gian chạy liên tục hệ thống - Thời gian khôi phục hệ thống MTTR - Mean Time To Repair - Tính sẵn có M T B F /(M T B F + M T T R ) 6.3 Ước lợng Công việc ngời quản lý dự án ớc lợng - ớc lợng kích cỡ, chi phí, thời gian tiến hành dự án Việc thông thờng đợc tiến hành cách phân rã phần mềm cần phát triển thành khối nhỏ áp dụng kinh nghiệm (các thông số nh kích cỡ, chi phí, lực nhân viên ) phần mềm phát triển để ớc lợng, đánh giá công việc Một mô hình ớc lợng hay đợc dùng mô hình COCOMO - Constructive Cost Model ớc lợng chi phí từ số dòng lệnh Dùng mô hình ta ớc lợng thông số sau: - Nỗ lực phát triển E = aL b - Thời gian phát triển T = cE d - Số ngời tham gia N = E /T Trong a,b,c,d tham số tùy thuộc vào loại dự án (xem bảng 6.1) Điểm đáng ý từ nỗ lực phát triển suy thời gian số ngời tham gia vào dự án Bảng 6.1: COCOMO - Các tham số sở a b c d organic 3.2 1.05 2.5 0.38 semi-detached 3.0 1.12 2.5 0.35 embeded 2.8 1.2 2.5 0.32 Các bớc tiến hành COCOMO nh sau: - thiết lập kiểu dự án (organic: đơn giản, semi-detached: trung bình, embeded: phức tạp) - xác lập mô đun ớc lợng dòng lệnh - tính lại số dòng lệnh sở tái sử dụng - tính nỗ lực phát triển E cho mô đun - tính lại E dựa độ khó dự án (mức độ tin cậy, kích cỡ CSDL, yêu cầu tốc độ, nhớ, ) - Tính thời gian số ngời tham gia 65 http://www.ebook.edu.vn Ví dụ: Phần mềm với 33.3 nghìn dòng lệnh tham số a,b,c,d lần lợt 3.0, 1.12, 2.5, 0.35, ta tính đợc: E = 3.0 33.31.12 = 152 ngời-tháng T = 2.5 E 0.35 = 14.5 tháng N = E /D 11 ngời Cần nhớ đo phần mềm công việc khó khăn hầu hết thông số không đo đợc cách trực quan khó thẩm định đợc thông số mô hình tổng quát kỹ thuật đo thay đổi Chúng ta kiểm soát đợc trình sản xuất phần mềm không ớc lợng (đo) Một mô hình ớc lợng nghèo nàn mô hình phải liên tục ớc lợng lại dự án tiến triển 6.4 Quản lý nhân Chi phí (trả công) ngời phần chi phí xây dựng phần mềm Ngoài ra, lực ngời phát triển phần mềm lại biến thiên, kéo theo phức tạp tính toán chi phí Phát triển phần mềm đợc tiến hành theo nhóm Kích thớc tốt nhóm từ đến ngòi Phần mềm lớn thờng đợc xây dựng nhiều nhóm nhỏ Một nhóm phát triển gồm loại thành viên sau: ngời phát triển chuyên gia miền ứng dụng ngời thiết kế giao diện thủ th phần mềm (quản lý cấu hình phần mềm) ngời kiểm thử Một nhóm phát triển cần có ngời quản lý, ngời có vai trò lãnh đạo mặt kĩ thuật Một đặc trng làm việc theo nhóm trao đổi thông tin (giao tiếp) thành viên nhóm Thời gian dùng cho việc giao tiếp chiếm đến nửa tổng thời gian dành cho pháp triển phần mềm Ngoài ra, thời gian không dùng cho phát triển sản phẩm chiếm phần lớn thời gian lại ngời lập trình Một ngời đồng thời làm việc cho nhiều nhóm (dự án) phần mềm khác Điều làm cho việc tính toán giá thành phần mềm phức tạp Cần ghi nhớ, sản xuất phần mềm - Năng lực thành viên không đồng - Ngời tốt (nhất) sản xuất lần trung bình, ngời không cho kết 66 http://www.ebook.edu.vn - Một số công việc khó ngời Không nên tăng số thành viên cách vô ý thức, nh làm tăng phức tạp giao tiếp thành viên, khiến công việc nhiều chậm lại Một số việc (phức tạp, đăc thù) nên để ngời làm 6.5 Quản lý cấu hình Quản lý cấu hình phần mềm (còn gọi quản lý mã nguồn) công việc quan trọng sản xuất phần mềm Mã nguồn (và liệu) sản phẩm dự án phần mềm Quản lý cấu hình đợc tự động hóa thông qua công cụ Nhiệm vụ công cụ quản lý là: lu trữ mã nguồn tạo điểm truy cập (phiên thống nhất) cho ngời lập trình sửa đổi, thêm bớt mã nguồn Do dễ dàng: kiểm soát đợc tính thống mã nguồn kiểm soát đợc sửa đổi, lý sửa đổi, lý lịch lần sửa đổi dễ dàng lu trữ truy cập tới phiên khác phần mềm tối u hóa vùng đĩa cần thiết cho lu trữ Phơng thức hoạt động công cụ là: quản lý tập chung (mã nguồn, t liệu, công cụ phát triển ) tệp đợc tạo lần nhất, phiên sửa đổi ghi lại sai phân gốc sử dụng phơng pháp check out/check in sửa đổi tệp Thông thờng, ngời phát triển muốn sửa đổi mã nguồn thực thao tác check out tệp Khi tệp bị check out ngời phát triển khác mở tệp dới dạng đọc Khi kết thúc sửa đổi ghi tệp vào CSDL, ngời sửa đổi tiến hành check in để thông báo kết thúc công việc sửa đổi, đồng thời ghi lại thông tin liên quan (lý sửa đổi ) đến sửa đổi Dữ liệu đợc lu trữ dự án thông thờng bao gồm: mã nguồn liệu t liệu công cụ phát triển (chơng trình dịch ), thờng cần để đảm bảo tơng thích với phiên cũ, để đảm bảo chơng trình đợc tạo lại (khi sửa lỗi ) nh phân phát cho khách hàng ca kiểm thử Một số công cụ quản lý cấu hình phổ biến RCS, CVS HĐH Solaris SourceSafe Microsoft 67 http://www.ebook.edu.vn 6.6 Quản lý rủi ro Quản lý rủi ro công việc đặc biệt quan trọng khó khăn phát triển phần mềm Có nguyên nhân (rủi ro) sau dẫn đến chấm dứt dự án: chi phí phát triển cao chậm so với lịch biểu tính so với yêu cầu Quản lý rủi ro bao gồm công việc sau: dự doán rủi ro đánh giá khả xảy thiệt hại tìm giải pháp khắc phục Dới rủi ro thờng xẩy phát triển phần mềm phơng pháp khắc phục chúng: thiếu ngời phát triển: sử dụng ngời tốt nhất; xây dựng nhóm làm việc; đào tạo ngời kế hoạch, dự toán không sát thực tế: ớc lợng phơng pháp khác nhau; lọc, loại bỏ yêu cầu không quan trọng phát triển sai chức năng: chọn phơng pháp phân tích tốt hơn; phân tích tính tổ chức/mô hình nghiệp vụ khách hàng phát triển sai giao diện: phân tích thao tác ngời dùng; tạo kịch cách dùng; tạo mẫu yêu cầu cao: lọc bớt yêu cầu; phân tích chi phí/lợi ích thay đổi yêu cầu liên tục: áp dụng thiết kế che dấu thông tin; phát triển theo mô hình tiến hóa 68 http://www.ebook.edu.vn Tài liệu tham khảo [1] Kent Beck, Extreme Programming Explained, Addison-Wasley, 2000 [2] Bruce Eckel, Thinking in Java, 3rd ed., 2002 [3] Mike Gancarz, The Unix Philosophy, Digital Press, 1994 [4] Roger S Pressman (dịch: Ngô Trung Việt), Kỹ nghệ phần mềm, Tập I,II,III, NXB Giáo dục, 1997 [5] Walker Royce, Software Project Management - A Unified Framework, AddisonWesley, 1998 [6] Stephen R Schach, Classical and Object-Oriented Software Engineering with UML and C++, 4th ed., McGraw-Hill, 1999 [7] Ian Sommerville, Software Engineering, 6th ed., Addison-Wasley, 2001 [8] Nguyễn Quốc Toản, Bài giảng Nhập môn Công trình học phần mềm, Khoa Công nghệ, 1999 [9] Lê Đức Trung, Công nghệ phần mềm, NXB Khoa học Kỹ thuật, 2001 [10] Ngô Trung Việt, Nguyễn Kim ánh (biên soạn), Nhập môn Công nghệ phần mềm, NXB Khoa học kỹ thuật, 2003 [11] Nguyễn Văn Vỵ, Phân tích thiết kế hệ thống thông tin đại, NXB Thống kê, 2002 69 http://www.ebook.edu.vn

Ngày đăng: 16/09/2016, 11:03

Xem thêm: bài giảngkỹ nghệ phần mềm (Nguyễn Việt Dũng)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w