bài giảng kỹ thuật phần mềm

77 280 0
bài giảng kỹ thuật phần mềm

Đ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

ĐẠI HỌC QUỐC GIA HÀ NỘI Trường Đại học Công nghệ Nguyễn Việt Hà Bài giảng Kỹ thuật phần mềm MỤC LỤC Chương - Phần mềm kỹ nghệ phần mềm .1 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 a Những năm đầu (từ 1950 đến 1960): b Thời kỳ trải rộng từ năm 1960 đến năm 1970: c Thời kỳ từ năm 1970 đến đầu năm 1990: d Thời kỳ sau 1990: 1.1.2 Sự ứng dụng phần mềm a Phần mềm hệ thống b Phần mềm thời gian thực c Phần mềm nghiệp vụ d Phần mềm khoa học công nghệ e Phần mềm nhúng f Phần mềm máy tính cá nhân g Phần mềm trí tuệ nhân tạo 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 trưng phát triển vận hành phần mềm a Phần mềm không chế tạo theo nghĩa cổ điển b Phần mềm không hỏng thoái hóa theo thời gian c Phần lớn phần mềm xây dựng từ đầu, lắp ráp từ thành phần có sẵn 1.2.3 Nhu cầu độ phức tạp 1.3 Kỹ nghệ phần mềm 1.3.1 Định nghĩa a Các phương pháp b Các công cụ c Các thủ tục 1.3.2 Mô hình vòng đời cổ điển a Kỹ nghệ phân tích hệ thống b Phân tích yêu cầu phần mềm c Thiết kế d Mã hóa e Kiểm thử f Bảo trì 1.3.3 Mô hình làm mẫu 10 1.3.4 Mô hình xoắn ốc 11 1.3.5 Kỹ thuật hệ thứ tư 13 1.3.6 Mô hình lập trình cực đoan 14 a) Tạo ca thử nghiệm trước tiên 14 http://www.ebook.edu.vn - i- b) Lập trình đôi 14 1.3.7 Tổ hợp mô hình 15 1.3.8 Tính khả thị trình kỹ nghệ 15 1.3.9 Vấn đề giảm kích cỡ phần mềm 16 1.4 Cái nhìn chung kỹ nghệ phần mềm 17 Chương - Phân tích đặc tả yêu cầu 20 2.1 Đại cương phân tích đặc tả 20 2.2 Nghiên cứu khả thi 21 2.3 Nền tảng phân tích yêu cầu 23 2.3.1 Các nguyên lý phân tích 23 2.3.2 Mô hình hóa 24 2.3.3 Người phân tích 26 2.4 Xác định đặc tả yêu cầu 27 2.4.1 Xác định yêu cầu 27 2.4.2 Đặc tả yêu cầu 27 2.4.3 Thẩm định yêu cầu 28 2.5 Làm mẫu trình phân tích 29 2.5.1 Các bước làm mẫu 29 2.6 Định dạng đặc tả yêu cầu 31 Chương - Thiết kế phần mềm 34 3.1 Khái niệm thiết kế phần mềm 34 3.1.1 Khái niệm 34 3.1.2 Tầm quan trọng 34 3.1.3 Quá trình thiết kế 35 3.1.4 Cơ sở thiết kế 36 3.1.5 Mô tả thiết kế 37 3.1.6 Chất lượng thiết kế 38 3.2 Thiết kế hướng chức 41 3.2.1 Cách tiếp cận hướng chức 41 3.2.2 Biểu đồ luồng liệu 42 3.2.3 Lược đồ cấu trúc 42 3.2.4 Các từ điển liệu 42 3.3 Thiết kế hướng đối tượng 43 3.3.1 Cách tiếp cận hướng đối tượng 43 3.3.2 Ba đặc trưng thiết kế hướng đối tượng 43 3.3.3 Cơ sở thiết kế hướng đối tượng 43 3.3.4 Các bước thiết kế 44 3.3.5 Ưu nhược điểm thiết kế hướng đối tượng 45 3.3.6 Quan hệ thiết kế lập trình hướng đối tượng 45 3.3.7 Quan hệ thiết kế hướng đối tượng hướng chức 46 3.4 Thiết kế giao diện người sử dụng 46 3.4.1 Một số vấn đề thiết kế 48 3.4.2 Một số hướng dẫn thiết kế 48 http://www.ebook.edu.vn - ii- Chương - Lập trình .50 4.1 Ngôn ngữ lập trình 50 4.1.1 Đặc trưng ngôn ngữ lập trình 50 4.1.2 Lựa chọn ngôn ngữ lập trình 51 4.1.3 Ngôn ngữ lập trình và ảnh hưởng tới kỹ nghệ phần mềm 52 4.2 Phong cách lập trình 52 4.2.1 Tài liệu chương trình 53 4.2.2 Khai báo liệu 53 4.2.3 Xây dựng câu lệnh 54 4.2.4 Vào/ra 54 4.3 Lập trình tránh lỗi 54 4.3.1 Lập trình thứ lỗi 56 4.3.2 Lập trình phòng thủ 56 4.4 Lập trình hướng hiệu thực 57 4.4.1 Tính hiệu chương trình 57 4.4.2 Hiệu nhớ 58 4.4.3 Hiệu vào/ra 58 Chương - Xác minh thẩm định .60 5.1 Đại cương 60 5.2 Khái niệm phép thử 61 5.3 Thử nghiệm chức thử nghiệm cấu trúc 61 5.3.1 Thử nghiệm chức 61 5.3.2 Thử nghiệm cấu trúc 62 5.4 Quá trình thử nghiệm 63 5.4.1 Thử nghiệm gây áp lực 64 5.5 Chiến lược thử nghiệm 64 5.5.1 Thử nghiệm lên 64 5.5.2 Thử ngiệm xuống 65 Chương - Quản lý dự án phát triển phần mềm 66 6.1 Đại cương 66 6.2 Độ đo phần mềm 67 6.2.1 Đo kích cỡ phần mềm 67 6.2.2 Độ đo dựa thống kê 68 6.3 Ước lượng 68 6.4 Quản lý nhân 69 6.5 Quản lý cấu hình 70 6.6 Quản lý rủi ro 71 Tài liệu tham khảo 73 http://www.ebook.edu.vn - iii- 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ý lưu 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 đặ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 coi nghệ thuật “theo năng”, chưa có phương pháp hệ thống Việc phát triển phần mềm chưa 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 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 trưng 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 http://www.ebook.edu.vn -1- - Tiến lưu 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ố hệ chuyên gia, mạng nơ ron nhân tạo 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 sau: a Phần mềm hệ thống - Là tập hợp chương trình viết để phục vụ cho chương trình khác - Xử lý cấu trúc thông tin phức tạp xác định (trình biên dịch, trình soạn thảo, tiện ích quản lý tệp) http://www.ebook.edu.vn -2- - Đặc trưng 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 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 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 trưng 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 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 trưng 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ỏ 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 trọng http://www.ebook.edu.vn -3- 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 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ạng phần mềm máy tính cá nhân, phần mềm hệ thống phần mềm 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 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, không hoạt động) IBM Do đó, việc phát triển phần mềm 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 trưng, 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 đị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 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 viết lập tư liệu cho việc thay đổi tiến hành mà không tốn Đây 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, viết ngôn ngữ bậc cao 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 điều mà người tiêu dùng mong mỏi không thất bại nhiều điều đặc tả Điều có nghĩa phần mềm phải thỏa mãn nhu cầu người dùng Để đạt 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 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ớ, xử lý Nếu phần mềm chạy chậm hay đòi hỏi nhiều nhớ dù có http://www.ebook.edu.vn -4- cài đặt nhiều chức không đư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 phần mềm nghiệp vụ thường người không am hiểu máy tính, họ xa lánh phần mềm khó học, khó sử dụng Có thể thấy rõ, việc tối ưu hóa đồng thời thuộc tính khó khăn Các thuộc tính mẫu thuẫn lẫn nhau, ví dụ tính hiệu tính dễ sử dụng, tính bảo trì Quan hệ chi phí cải tiến hiệu thuộc tính tuyến tính Nhiều cải thiện nhỏ thuộc tính đắt Một khó khăn khác việc phát triển phần mềm khó định lượng thuộc tính phần mềm Chúng ta thiếu độ đo chuẩn chất lượng phần mềm Vấn đề giá phải tính đến xây dựng phần mềm Chúng ta xây dựng phần mềm dù phức tạp đến đâu không hạn chế thời gian chi phí Điều quan trọng phải xây dựng phần mềm tốt với giá hợp lý theo lịch biểu định trước 1.2.2 Đặc trưng phát triển vận hành phần mềm Chúng ta thấy khó khăn hàng đầu việc phát triển phần mềm tính chất phần mềm hệ thống logic, hệ thống vật lý Do có đặc trưng khác biệt đáng kể với đặc trưng phần cứng Dưới yếu tố tạo phức tạp trình phát triển sử dụng, bảo trì phần mềm a Phần mềm không chế tạo theo nghĩa cổ điển Phần mềm được thiết kế, phát triển phần cứng, không định hình trước Chỉ phát triển xong người ta có sản phẩm cụ thể hiểu có hiệu hay không Tức bước trung gian, khó kiểm soát chất lượng phần mềm Giá thành phần cứng chủ yếu bị chi phối giá thành nguyên vật liệu tương đối dễ kiểm soát Trong đó, giá thành phần mềm chủ yếu tập chung vào chi phí nhân công Quá trình phát triển phần mềm phụ thuộc vào người (hiểu biết, khả vận dụng, kinh nghiệm cách thức quản lý) tiến hành phát triển điều kiện môi trường (kỹ thuật, xã hội) đa dạng không ngừng thay đổi Do khó ước lượng chi phí hiệu phần mềm http://www.ebook.edu.vn -5- b Phần mềm không hỏng thoái hóa theo thời gian Phần mềm không cảm ứng tác động môi trường vốn gây cho phần cứng bị mòn cũ đi, thoái hóa theo thời gian Thực tế, phần mềm trải qua thời gian sử dụng cần phải thay đổi (bảo trì) để đáp ứng nhu cầu thay đổi tổ chức sử dụng Mỗi thay đổi, xuất thêm số khiếm khuyết tránh làm cho số lỗi tiềm ẩn phần mềm tăng lên Dần dần, phần mềm bị thoái hóa tỷ lệ sai hỏng ngày tăng lên đến mức gây thiệt hại chấp nhận Việc bảo trì phần mềm phức tạp nhiều có chất khác hẳn so với bảo trì phần cứng phức tạp hệ thống phần mềm sẵn phần thay cho phận bị lỗi Chúng ta không thay phận bị lỗi có sẵn mà thực tế phải tạo môđun Do đó, thông thường có nhà sản xuất phần mềm bảo trì (sửa chữa) hỏng hóc Sẽ khó ước lượng chi phí cho bảo trì phần mềm c Phần lớn phần mềm xây dựng từ đầu, lắp ráp từ thành phần có sẵn • Phần mềm danh mục thành phần cố định phần cứng • Phần mềm thường đặt hàng theo đơn vị hoàn chỉnh, theo yêu cầu riêng khách hàng • Phần mềm lắp ráp theo khuôn mẫu có sẵn Yêu cầu với phần mềm thay đổi theo môi trường cụ thể mà xây dựng Môi trường phần mềm (gồm phần cứng, phần mềm nền, người tổ chức) định dạng từ trước lại thay đổi thường xuyên Những yếu tố dẫn đến chi phí cho phần mềm cao khó đảm bảo lịch biểu cho phát triển phần mềm 1.2.3 Nhu cầu độ phức tạp Tuy ngành công nghiệp máy tính bước sang giai đoạn phát triển thứ tư thách thức phát triển phần mềm máy tính không ngừng gia tăng nguyên nhân sau: - Khả xây dựng chương trình không giữ nhịp với nhu cầu phần mềm tăng lên nhanh chóng, đặc biệt Internet phát triển số lượng người dùng tăng cao Ngày nay, sản xuất phần mềm trở thành ngành công nghiệp không lồ suất không cao, không đáp ứng đòi hỏi xã hội điều ảnh hưởng lớn đến giá thành chất lượng phần mềm Ngoài ra, tồn nhiều chương trình thiết kế lập tài liệu sơ sài khiến cho việc bảo trì khó khăn tài nguyên Phát triển phần mềm dễ bảo trì để thay hệ thống cũ trở thành nhu cầu cấp bách http://www.ebook.edu.vn -6- 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ế http://www.ebook.edu.vn - 59 - 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 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 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ụ 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 tiến hành khâu vòng đời phần mềm Về lý thuyết, phát hầu hết lỗi lập trình, nhiên phương pháp đánh giá 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, 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: thiết kế để phát khuyết tật hệ thống (đặc biệt lỗi lập trình) • 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 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 để phát thêm lỗi kiểm tra xem lỗi sửa hay chưa Bất sửa mã chương trình phải thử nghiệm lại (kể thử nghiệm thành công) http://www.ebook.edu.vn - 60 - • 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ử trường hợp, tiến hành thử nghiệm cách ngẫu nhiên không đảm bảo điều • Được lập tài liệu: để kiểm soát xem thực hiện, kết 5.2 Khái niệm phép thử Một phép thử gọi thành công phát khiếm khuyết phần mềm Chú ý phép thử chứng minh tồn lỗi hệ thống không chứng minh hệ thống lỗi Một phép thử (ca thử nghiệm) bao gồm - Tên mô đun thử nghiệm - Dữ liệu vào - Dữ liệu mong muốn (đúng) - Dữ liệu thực tế (khi tiến hành thử nghiệm) Các ca thử nghiệm nên 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 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 thử nghiệm 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 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 = http://www.ebook.edu.vn - 61 - - 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 - Không có 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 - Sự 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ử trường hợp không khai báo đặc tả, không đảm bảo thử hết khối mã nguồn mô đun Thử nghiệm chức không phát đ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 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 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 • 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 Chủ yếu sử dụng thử nghiệm chức • Thử nghiệm nghiệm thu (alpha): thử nghiệm tiến hành nhóm nhỏ người sử dụng hướng dẫn người phát triển, sử dụng liệu thực, thẩm định tính dùng hệ thống http://www.ebook.edu.vn - 63 - • Thử nghiệm beta: mở rộng thử nghiệm alpha, 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 hệ thống (thẩm định) Ngoài bước hay khái niệm thử nghiệm khác gọi thử nghiệm quay lui Thử nghiệm quay lui tiến hành sửa mã chương trình: - Khi sửa lỗi - Khi 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 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 trưng 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 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 lên (bottomưup testing) thử nghiệm xuống (topưdown testing) 5.5.1 Thử nghiệm lên Thử nghiệm 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) thay chương trình kiểm thử có nhiện vụ đọ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 lên - Phát chậm lỗi thiết kế - Chậm có phiên thực hệ thống http://www.ebook.edu.vn - 64 - 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 tạm thời phát triển với chức hạn chế, có giao diện giống đặ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 http://www.ebook.edu.vn - 65 - 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 • Đúng 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 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 http://www.ebook.edu.vn - 66 - 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 đố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ị - 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ứ dùng dể phục vụ cho ước lượng cho phần mềm phát triển Điểm chức FP 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ố thiết lập dựa kinh nghiệm Mô hình sở tính điểm chức FP = a1I+ a2O + a3 E + a4 L + a5F, Trong - I : số Input - O: số Output - E: số yêu cầu - L: số tệp truy cập http://www.ebook.edu.vn - 67 - - F: số giao diện ngoại lai (devices, systems) 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ê 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 TBF/(M TBF + M TTR) 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 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ố 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 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 = aLb - Thời gian phát triển T = cEd - 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ở organic semiưdetached embeded a 3.2 3.0 2.8 b 1.05 1.12 1.2 c 2.5 2.5 2.5 d 0.38 0.35 0.32 Các bước tiến hành COCOMO 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ớ, ) http://www.ebook.edu.vn - 68 - - Tính thời gian số người tham gia Ví dụ: Phần mềm với 33.3 nghìn dòng lệnh tham số a,b,c,d 3.0, 1.12, 2.5, 0.35, ta tính được: E = 3.0*33.31.12 = 152ngườiưtháng T = 2.5*E 0.35 = 14.5 tháng N = E/D ˜ 11ngườ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ách trực quan •Rất khó thẩm định thông số • Không có mô hình tổng quát • Các kỹ thuật đo thay đổi Chúng ta kiểm soát 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 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 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 trưng 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) http://www.ebook.edu.vn - 69 - 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 - 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, 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 tự động hóa thông qua công cụ Nhiệm vụ công cụ quản lý là: • Lưu 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 tính thống mã nguồn • Kiểm soát sửa đổi, lý sửa đổi, lý lịch lần sửa đổi • Dễ dàng lưu 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 lưu 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 ) • Các tệp 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ạ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 http://www.ebook.edu.vn - 70 - Dữ liệu lưu trữ dự án thông thường bao gồm: • Mã nguồn • Dữ 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 tạo lại (khi sửa lỗi ) phân phát cho khách hàng • Các 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 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 • Quá 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 http://www.ebook.edu.vn - 71 - • 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 http://www.ebook.edu.vn - 72 - 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, Addison- Wesley, 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 http://www.ebook.edu.vn - 73 -

Ngày đăng: 14/12/2016, 10:25

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan