1. Trang chủ
  2. » Giáo án - Bài giảng

Giáo trình kỹ thuật phần mềm

78 439 1

Đ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

Kỹ thuật phần mềm Biên tập bởi: Nguyễn Việt Hà Kỹ thuật phần mềm Biên tập bởi: Nguyễn Việt Hà Các tác giả: Nguyễn Việt Hà Phiên trực tuyến: http://voer.edu.vn/c/a8d2857f MỤC LỤC Phần mềm kỹ nghệ phần mềm Phân tích đặc tả yêu cầu Thiết kế phần mềm Lập trình Xác minh thẩm định Quản lý dự án phát triển phần mềm Tham gia đóng góp 1/76 Phần mềm kỹ nghệ phần mềm 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 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: 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 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 2/76 • 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 • 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 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 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 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: 3/76 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) • Đặ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 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ẽ 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 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 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 4/76 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 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ụ 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 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 đủ 5/76 • Đá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ó 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 Đặ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 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 6/76 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 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 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 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: 7/76 • 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 • Cùng với phát triển phần cứng, quy mô độ phức tạp phần mềm ngày tăng Một số phần mềm đại có kích thước tính đơn vị triệu dòng lệnh (HĐH Unix, Windows ) Một vấn đề khó khăn sản xuất phần mềm lớn độ phức tạp tăng vọt, kinh nghiệm sản xuất sản phẩm nhỏ không ứng dụng cho môi trường làm việc theo nhóm phát triển sản phẩm lớn • Sự tinh vi lực phần cứng vượt xa khả xây dựng phần mềm để sử dụng tiềm Tất khó khăn thách thức nêu dẫn đến việc chấp nhận thực hành kỹ nghệ phần mềm để tạo nhanh phần mềm có lượng ngày cao, có quy mô số lượng ngày lớn có tính tương ứng với tiềm phần cứng Kỹ nghệ phần mềm Định nghĩa Một định nghĩa ban đầu kỹ nghệ phần mềm Fritz Bauer nêu là: Việc thiết lập sử dụng nguyên lý công nghệ đắn để thu phần mềm cách kinh tế vừa tin cậy vừa làm việc hiệu máy thực Kỹ nghệ phần mềm trình gồm loạt bước chứa đựng yếu tố chủ chốt: • Phương pháp • Công cụ • Thủ tục Các yếu tố giúp người quản lý kiểm soát tiến trình phát triển phần mềm, cung cấp cho người kỹ sư phần mềm tảng để xây dựng phần mềm chất lượng cao theo cách thức hiệu quả, giới hạn định Các phương pháp Chỉ cách làm mặt kỹ thuật để xây dựng phần mềm, sử dụng bước: lập kế hoạch, ước lượng dự án, phân tích yêu cầu hệ thống phần mềm, thiết kế cấu trúc liệu, kiến trúc chương trình thủ tục thuật toán, mã hóa kiểm thử bảo trì 8/76 • 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 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 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 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 Đối với hàm tính trị tuyệt đối số nguyên, chia miền đối số thành vùng: • Vùng liệu 62/76 • Vùng liệu nhỏ Do liệu đầu vào dể 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 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 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 • 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 64/76 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 đổ 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) 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 Thử nghiệ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 65/76 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 66/76 Quản lý dự án phát triển phần mềm Đạ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 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 67/76 • 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 Độ đ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 Đ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 68/76 - F: số giao diện ngoại lai (devices, systems) Độ đ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) Ướ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 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) 69/76 • • • • 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 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 = 152 ngườ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 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 70/76 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 • 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 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 71/76 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 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 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 72/76 • 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 73/76 Tham gia đóng góp Tài liệu: Kỹ thuật phần mềm Biên tập bởi: Nguyễn Việt Hà URL: http://voer.edu.vn/c/a8d2857f Giấy phép: http://creativecommons.org/licenses/by/3.0/ Module: Phần mềm kỹ nghệ phần mềm Các tác giả: Nguyễn Việt Hà URL: http://www.voer.edu.vn/m/7d6d9528 Giấy phép: http://creativecommons.org/licenses/by/3.0/ Module: Phân tích đặc tả yêu cầu Các tác giả: Nguyễn Việt Hà URL: http://www.voer.edu.vn/m/d52e8a32 Giấy phép: http://creativecommons.org/licenses/by/3.0/ Module: Thiết kế phần mềm Các tác giả: Nguyễn Việt Hà URL: http://www.voer.edu.vn/m/32bda8b7 Giấy phép: http://creativecommons.org/licenses/by/3.0/ Module: Lập trình Các tác giả: Nguyễn Việt Hà URL: http://www.voer.edu.vn/m/448a0000 Giấy phép: http://creativecommons.org/licenses/by/3.0/ Module: Xác minh thẩm định Các tác giả: Nguyễn Việt Hà URL: http://www.voer.edu.vn/m/7d78e4ca Giấy phép: http://creativecommons.org/licenses/by/3.0/ Module: Quản lý dự án phát triển phần mềm Các tác giả: Nguyễn Việt Hà URL: http://www.voer.edu.vn/m/698710e0 74/76 Giấy phép: http://creativecommons.org/licenses/by/3.0/ 75/76 Chương trình Thư viện Học liệu Mở Việt Nam Chương trình Thư viện Học liệu Mở Việt Nam (Vietnam Open Educational Resources – VOER) hỗ trợ Quỹ Việt Nam Mục tiêu chương trình xây dựng kho Tài nguyên giáo dục Mở miễn phí người Việt cho người Việt, có nội dung phong phú Các nội dung đểu tuân thủ Giấy phép Creative Commons Attribution (CC-by) 4.0 nội dung sử dụng, tái sử dụng truy nhập miễn phí trước hết trong môi trường giảng dạy, học tập nghiên cứu sau cho toàn xã hội Với hỗ trợ Quỹ Việt Nam, Thư viện Học liệu Mở Việt Nam (VOER) trở thành cổng thông tin cho sinh viên giảng viên Việt Nam Mỗi ngày có hàng chục nghìn lượt truy cập VOER (www.voer.edu.vn) để nghiên cứu, học tập tải tài liệu giảng dạy Với hàng chục nghìn module kiến thức từ hàng nghìn tác giả khác đóng góp, Thư Viện Học liệu Mở Việt Nam kho tàng tài liệu khổng lồ, nội dung phong phú phục vụ cho tất nhu cầu học tập, nghiên cứu độc giả Nguồn tài liệu mở phong phú có VOER có chia sẻ tự nguyện tác giả nước Quá trình chia sẻ tài liệu VOER trở lên dễ dàng đếm 1, 2, nhờ vào sức mạnh tảng Hanoi Spring Hanoi Spring tảng công nghệ tiên tiến thiết kế cho phép công chúng dễ dàng chia sẻ tài liệu giảng dạy, học tập chủ động phát triển chương trình giảng dạy dựa khái niệm học liệu mở (OCW) tài nguyên giáo dục mở (OER) Khái niệm chia sẻ tri thức có tính cách mạng khởi xướng phát triển tiên phong Đại học MIT Đại học Rice Hoa Kỳ vòng thập kỷ qua Kể từ đó, phong trào Tài nguyên Giáo dục Mở phát triển nhanh chóng, UNESCO hỗ trợ chấp nhận chương trình thức nhiều nước giới 76/76 [...]... nhìn chung về kỹ nghệ phần mềm Tiến trình phát triển kỹ nghệ phần mềm chứa ba giai đoạn chính bất kể mô hình kỹ nghệ phần mềm được chọn lựa Ba giai đoạn này là xác định, phát triển và bảo trì, được gặp phải trong mọi dự án phát triển phần mềm, bất kể tới miền ứng dụng, kích cỡ và độ phức tạp Giai đoạn xác định tập trung vào khái niệm cái gì Tức là trong khi xác định, người phát triển phần mềm cố gắng... phần mềm Phân tích yêu cầu là khâu kỹ thuật quan trọng đầu tiên để đảm bảo chất lượng (tính đáng tin cậy) của phần mềm Nếu xác định sai yêu cầu thì các bước kỹ thuật khác có tốt đến đâu thì phần mềm cũng sẽ không được đưa vào sử dụng Giai đoạn phát triển tập trung vào khái niệm thế nào Tức là, trong giai đoạn này người phát triển phần mềm từng bước xác định cách cấu trúc dữ liệu và kiến trúc phần mềm. .. hình xoắn ốc Kỹ thuật thế hệ thứ tư Thuật ngữ kỹ thuật thế hệ thứ tư (4GT - fourth generation technology) bao gồm một phạm vi rộng các công cụ phần mềm có các điểm chung: 1 Cho phép người phát triển xác định một số đặc trưng của phần mềm ở mức cao 2 Tự động sinh ra mã chương trình gốc theo nhu cầu của người phát triển Hiển nhiên là phần mềm được biểu diễn ở mức trừu tượng càng cao thì chương trình có thể... thiện mở rộng phần mềm ra ngoài các yêu cầu chức năng gốc của nó Tổng kết: Phần mềm đã trở thành phần tử chủ chốt của các hệ thống máy tính Phát triển phần mềm đã tiến hóa từ xây dựng một công cụ xử lý thông tin thành một ngành công nghiệp Phần mềm là phần tử lôgíc cho nên việc kiểm soát nó khó hơn nhiều so với phần tử vật lý Khó có thể tối ưu hóa đồng thời các tính năng cần có của phần mềm Ví dụ, các... hết các trường hợp là loại trừ lẫn nhau Thách thức lớn đối với việc phát triển phần mềm là chúng ta phải xây dựng phần mềm tốt theo một lịch trình và kinh phí định trước Kỹ nghệ phần mềm là một bộ môn tích hợp cả các phương pháp, công cụ và thủ tục để phát triển phần mềm máy tính Có một số mô hình khác nhau cho kỹ nghệ phần mềm, mỗi mô hình đều có những mặt mạnh và điểm yếu, nhưng nói chung tất cả đều... trúc phần mềm, thiết kế cấu trúc dữ liệu, thiết kế chi tiết các thủ tục, thiết kế giao diện và tương tác • Lập tư liệu thiết kế (là một phần của cấu hình phần mềm) để phê duyệt Mã hóa Biểu diễn thiết kế bằng một hay một số ngôn ngữ lập trình và dịch thành mã máy thực hiện được Kiểm thử Tiến trình kiểm thử bao gồm việc i) phát hiện và sửa lỗi phần logic bên trong chương trình hay còn gọi là lỗi lập trình, ... phần mềm Bảo trì sửa đổi làm 19/76 thay đổi phần mềm để sửa các khiếm khuyết (lỗi lập trình, thuật toán, thiết kế ) 2 Thích nghi: Qua thời gian, môi trường ban đầu (như CPU, hệ điều hành, ngoại vi) để phát triển phần mềm có thể sẽ thay đổi Bảo trì thích nghi thực hiện việc sửa đổi phần mềm để thích hợp với những thay đổi môi trường ngoài 3 Nâng cao: Khi phần mềm được dùng, khách hàng/người dùng sẽ nhận... phần mềm Như chúng ta đã biết, phần mềm hiện nay càng lớn, càng phức tạp Một mặt, năng lực của nhóm lập trình không phải là tuyến tính so với năng lực của từng cá nhân Độ phức tạp cũng tăng theo cấp số nhân, kéo theo chi phí cũng tăng theo cấp số nhân so với kích cỡ của chương trình cần phát triển Do đó, việc tìm cách giảm kích cỡ, độ phức tạp của chương trình là ưu tiên hàng đầu của kỹ nghệ phần mềm. .. làm bản mẫu cho kỹ nghệ phần mềm là cách tiếp cận tốt nhất khi: • Mục tiêu tổng quát cho phần mềm đã xác định, nhưng chưa xác định được input và output • Người phát triển không chắc về hiệu quả của thuật toán, về thích nghi hệ điều hành hay giao diện người máy cần có Khi đã có bản mẫu, người phát triển có thể dùng chương trình đã có hay các công cụ phần mềm trợ giúp để sinh ra chương trình làm việc... công cụ khác thì hệ thống hỗ trợ phát triển phần mềm đã được thiết lập và còn được gọi là kỹ nghệ phần mềm có máy tính hỗ trợ (CASE - Computer Aided Software Engineering) Các thủ tục Các thủ tục là chất keo dán các phương pháp và công cụ lại với nhau làm cho chúng được sử dụng hợp lý và đúng hạn trong quá trình phát triển phần mềm Thủ tục bao gồm: • Xác định ra trình tự các phương pháp sẽ được áp dụng

Ngày đăng: 08/06/2016, 21:02

Xem thêm: Giáo trình kỹ thuật phần mềm

TỪ KHÓA LIÊN QUAN

Mục lục

    Phần mềm và kỹ nghệ phần mềm

    Kỹ nghệ và phân tích hệ thống

    Phân tích yêu cầu phần mềm

    Phân tích và đặc tả yêu cầu

    Thiết kế phần mềm

    Xác minh và thẩm định

    Quản lý dự án phát triển phần mềm

    Tham gia đóng góp

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

TÀI LIỆU LIÊN QUAN

w