Công nghệ phần mềm đóng vai trò quan trọng trong thế giới hiện đại, là nền tảng của mọi khía cạnh của cuộc sống và doanh nghiệp. Nó bao gồm quá trình phát triển, triển khai và duy trì các ứng dụng và hệ thống thông tin. Công nghệ phần mềm giúp tối ưu hóa quy trình làm việc, tăng cường hiệu suất và tạo ra sản phẩm và dịch vụ tiên tiến. Các ngôn ngữ lập trình như Java, Python và C++ đóng vai trò quan trọng trong việc xây dựng ứng dụng đa dạng từ ứng dụng di động đến hệ thống lớn. Công nghệ này không chỉ giúp giải quyết các thách thức kỹ thuật mà còn tạo ra những cơ hội sáng tạo, định hình tương lai kỹ thuật số và tạo nên những trải nghiệm người dùng độc đáo. Công nghệ phần mềm không chỉ là một công cụ, mà còn là động lực đằng sau sự phát triển toàn diện và tích hợp của xã hội hiện đại.
1/22/22 PHẦN MỀM VÀ KỸ NGHỆ PHẦN MỀM Lê Hoàn Khoa CNTT hoanle@epu.edu.vn HÀ NỘI - 2022 NỘI DUNG CHÍNH § Phần mềm vai trị phần mềm § Chất lượng phần mềm § Thách thức phát triển phần mềm § Khái niệm kỹ nghệ phần mềm § Định nghĩa phần mềm § Phân loại phần mềm § Vai trị phần mềm § Thực trạng sử dụng § Q trình tiến hố 1/22/22 PHẦN MỀM LÀ GÌ? Phần mềm gì? Phần mềm chương trình máy tính tài liệu liên quan như: u cầu, mơ hình thiết kế, tài liệu hướng dẫn sử dụng… 4 PHẦN MỀM LÀ GÌ? § Phần mềm góc nhìn người sử dụng: • Chương trình thực thi máy tính thiết bị chuyên dụng khác • Nhằm hỗ trợ cho nhà chuyên môn lĩnh vực chuyên ngành thực tốt thao tác nghiệp vụ 5 PHẦN MỀM LÀ GÌ? § Thành phần giao tiếp (Giao diện): § Cho phép tiếp nhận yêu cầu việc sử dụng phần mềm từ người sử dụng, từ thiết bị thu thập liệu, từ phần mềm khác § Cho phép trình bày kết § Thực yêu cầu cho người dùng § Điều khiển hoạt động thiết bị điều khiển (đóng/mở cửa, dừng hay cho chuyển động…) 6 1/22/22 PHẦN MỀM LÀ GÌ? § Mơi trường triển khai phần mềm: § Máy tính: Desktop, Laptop, Tablet PC… § Thiết bị chuyên dụng: PDA, Pocket PC, smartphone § Các thiết bị chuyên dụng khác: set-top box, router, § Hỗ trợ làm tốt thao tác nghiệp vụ: § Tin học hóa nghiệp vụ làm thủ cơng § Cải tiến chức nghiệp vụ thực máy tính § Đề ra, xây dựng triển khai chức nghiệp vụ 7 PHẦN MỀM LÀ GÌ? § Phần mềm góc nhìn chuyên viên Tin học: • Là hệ thống bao gồm thành phần bản: § Thành phần giao tiếp § Thành phần xử lý § Thành phần lưu trữ Cần xây dựng để thực theo yêu cầu người sử dụng 8 PHẦN MỀM L Gè? Đ Thnh phn giao tip (Giao din): ã Một cách tổng quát, thành phần giao tiếp cho phép nhập/xuất thơng tin với hình thức trình bày/giao tiếp tương ứng • Mục tiêu thành phần đưa thơng tin từ giới thực bên ngồi phần mềm (người sử dụng, thiết bị, phần mềm khác…) vào bên trong, ngược lại 9 1/22/22 PHẦN MỀM LÀ GÌ? § Thành phần xử lý: § Kiểm tra tính hợp lệ thơng tin nguồn cung cấp từ người dùng theo quy định ràng buộc giới thực o Ví dụ: cho mượn tối đa sách, lớp học khơng q 50 học sinh… § Tiến hành xử lý cho kết mong đợi theo quy định tính tốn có sẵn giới thực § Tiến hành xử lý theo thuật giải tự đề xuất 10 10 PHẦN MỀM LÀ GÌ? § Thành phần xử lý (tt): § Việc xử lý dựa thông tin nguồn từ người sử dụng cung cấp o Ví dụ: tính nghiệm phương trình bậc dựa hệ số nhập vào liệu lưu trữ có sẵn o Ví dụ: tính tiền phạt dựa ngày trả sách nhập vào thông tin loại sách lưu trữ § Việc xử lý cho kết dùng để xuất cho người dùng xem qua thành phần giao diện, hay lưu trữ lại qua thành phần lưu trữ, hai 11 11 PHẦN MỀM LÀ GÌ? § Một cách tổng qt, thành phần xử lý hệ thống chun xử lý tính tốn, biến đổi liệu § Dùng thơng tin nguồn từ thành phần giao diện (chức nhập) hay thành phần liệu (chức đọc); § Kiểm tra tính hợp lệ (chức kiểm tra) sau tiến hành xử lý (chức xử lý) – cần thiết § Để cho kết trình bày thơng qua thành phần giao diện (chức xuất) lưu trữ lại thành phần liệu (chức ghi) 12 12 1/22/22 PHẦN MỀM LÀ GÌ? § Thành phần lưu trữ (thành phần liệu) § Cho phép lưu trữ lại (chức ghi) kết xử lý o Ví dụ: Việc mượn sách kiểm tra hợp lệ, bảng lương tháng tính nhớ phụ với tổ chức lưu trữ xác định trước o Ví dụ: tập tin có cấu trúc, tập tin nhị phân, sở liệu 13 13 PHẦN MỀM LÀ GÌ? § Thành phần lưu trữ (thành phần liệu) § Cho phép truy xuất lại (chức đọc) liệu lưu trữ phục vụ cho hàm xử lý tương ứng § Một cách tổng quát thành phần liệu hệ thống chun đọc ghi liệu với mơ hình tổ chức lưu trữ liệu tương ứng § Mục tiêu thành phần chuyển đổi liệu nhớ nhớ phụ 14 14 PHÂN LOẠI PHẦN MỀM (1/3) (TRÊN QUAN ĐIỂM NGƯỜI DÙNG) § Phần mềm hệ thống: • Tập chương trình phục vụ cho chương trình • Tương tác trực tiếp với phần cứng • Phục vụ nhiều người dùng § Phần mềm thời gian thực: • Thu thập, xử lí kiện giới thực • Đáp ứng yêu cầu chặt chẽ thời gian • Thu thập liệu • Phân tích liệu • Kiểm sốt, điều khiển • Điều phối - 15 15 1/22/22 PHÂN LOẠI PHẦN MỀM (2/3) (TRÊN QUAN ĐIỂM NGƯỜI DÙNG) § Phần mềm nghiệp vụ • Xử lí thơng tin nghiệp vụ, thường gắn với CSDL • Xử lý giao tác (mạng máy tính bán hàng ) • Lĩnh vực ứng dụng lớn § Phần mềm khoa học kỹ thuật • Đặc trưng thuật tốn (tính tốn vật lí, mơ phỏng) • Địi hỏi lực tớnh toỏn cao Đ Phn mm nhỳng (embeded software) ã Chỉ đọc thiết bị khởi động, • Thực chức hạn chế (điều khiển sản phẩm) • Là kết hợp hệ thống thời gian thực 16 16 PHÂN LOẠI PHẦN MỀM (3/3) (TRÊN QUAN ĐIỂM NGƯỜI DÙNG) § Phần mềm máy tính cá nhân • Các toán nghiệp vụ nhỏ (ứng dụng văn phịng) • Giao diện đồ họa phát triển • Có nhu cầu cao § Phần mềm trí tuệ nhân tạo • Dùng thuật tốn phi số (logic): suy luận, tìm kiếm • Hệ chun gia, nhận dạng, trị chơi § Phần mềm cơng cụ cho kỹ nghệ phần mềm • Trình biên dịch, cơng cụ CASE 17 17 PHÂN LOẠI PHẦN MỀM (TRÊN QUAN ĐIỂM CỦA NGƯỜI PHÁT TRIỂN) § Sản phẩm đặt hàng (may đo) - Sản xuất theo đơn đặt hàng (HTTT quản lý ) - Đơn chiếc, yêu cầu đặc thù § Sản phẩm thương mại - Bán rộng rãi - Thỏa mãn yêu cầu chung số lớn users Mỗi loại có cách thức tiếp cận riêng, bước phân tích, bảo trì 18 18 1/22/22 VAI TRỊ CỦA PHẦN MỀM § Phần mềm có tầm quan trọng đặc biệt xã hội đại nhiều mặt: § Nền kinh tế § Xã hội § Các hệ thống tồn 19 VAI TRÒ CỦA PHẦN MỀM (1/2) § Nền kinh tế tất nước phụ thuộc vào phần mềm § Phần mềm sai hỏng, kinh tế tổn thất § Chi phí cho phần mềm chiếm tỷ trọng đáng kể GNP nước phát triển § Phần mềm tạo nên khác biệt tổ chức § Thay đổi phong cách làm việc § Quyết định suất tổ chức 20 20 KHĨ KHĂN VÀ THÁCH THỨC § Phát triển phần mềm coi lĩnh vực đầy khó khăn, thách thức (rủi ro cao): § Nhiều dự án lớn thất bại § Chi phí phát triển cao § Khơng đạt mục đích (khơng đưa vào sử dụng, hiệu thấp) 21 21 1/22/22 MỘT SỐ DỰ ÁN THẤT BẠI OS 360 • > 1M dịng lệnh • 1963~1966 (gấp đôi dự kiến) • 5000 năm công • 200 M USD OS/MVS (IBM 370) 7M dòng lệnh TSS 360 khởi động 10' Multics (Multiplexed Information and Computing Service) - 1965 ~2000 - http://www.multicians.org/ 22 22 TỔN THẤT DO LỖI PHẦN MỀM § 1978: vệ tinh phóng lên Kim bị hỏng lỗi phần mềm • lỗi câu lệnh FOR (Fortran) § 1996: vệ tinh Ariane hỏng lỗi phần mềm gây thiệt hại 500M$ • lỗi phép tốn số thực (Ada) 23 23 THỰC TRẠNG SỬ DỤNG Được sử dụng phân phối 5% Huỷ bỏ 17% Được sử dụng sau sửa đổi 6% Không phân phối 27% Được phân phối không sử dụng 45% 24 24 1/22/22 THỰC TRẠNG SỬ DỤNG § Bản chất vấn đề: § Tính phức tạp chất phần mềm § Yêu cầu sử dụng phần mềm không ngừng thay đổi § Sự tiến nhanh hạ tầng - phần cứng tiến hóa phần mềm tất yếu 25 25 TIẾN HĨA CỦA PHẦN MỀM 1960s § § § § § § GIAI ĐOẠN Đa nhiệm, đa người sử dụng Hệ thống thời gian thực; Xuất lưu trữ trực tuyến (CSDL) Ngơn ngữ có cấu trúc: PLI, Fortran, COBOL Lập trình có phương pháp Phát triển hệ thống chưa có phương pháp 1970s GIAI ĐOẠN Phần cứng thay đổi liên tục Xử lí theo lô Sản xuất đơn Ngôn ngữ: mã máy, đặc thù cho máy § Lập trình theo năng, chưa có phương pháp § § § § 1990s GIAI ĐOẠN • Phần cứng phát triển • Xuất mạng máy tính hệ thống phân tán • Ngơn ngữ lập trình bậc cao, hướng đối tượng • Phát triển hệ thống có phương pháp cơng cụ 26 TIẾN HĨA CỦA PHẦN MỀM § Phần mềm ngày phức tạp § Unix : M dịng lệnh § Windows 2K : ~100 M dịng lệnh § Lý • Năng lực máy tính ngày mạnh • Các hệ thống liên kết lại • Nhu cầu người dùng ngày lớn 27 27 1/22/22 CHI PHÍ CỦA PHẦN MỀM § Phần mềm trở thành ngành cơng nghiệp khổng lồ • Phí phát triển OS 360 (1963~1966) : 200M$ • Chi phí phần mềm năm 1985 : 70B$ • Chi phí cho phần mềm năm 2000 : 770B$ (mức tăng 12%/năm) § Năng suất lập trình thấp • Phát triển phần mềm mang nặng tính thủ cơng • Giá thành cao 28 28 THÁCH THỨC ĐỐI VỚI PHẦN MỀM § Khả xây dựng phần mềm khơng đáp ứng kịp nhu cầu tăng nhanh (có internet, lĩnh vực xã hội) § Qui mơ độ phức tạp ngày tăng khiến chi phí phát triển, bảo trì ngày tốn § Sự tinh vi phần cứng vượt xa khả tạo phần mềm để khai thác Cần có phương pháp, công cụ phát triển phần mềm 29 29 KHÓ KHĂN TRONG PHÁT TRIỂN PHẦN MỀM "Khó sản xuất phần mềm có chất lượng theo lịch trình & kinh phí cho trước" Phần mềm phần tử logic: khơng kiểm sốt theo phương pháp thơng thường • sản xuất (rủi ro, tính thủ cơng) • bảo trì (lớn, phức tạp, thay đổi nhanh) • kiểm sốt chất lượng ( làm thủ công, nhiều người, nhiều công đoạn) 30 30 10 1/22/22 C § Chất lượng phần mềm góc nhìn người sử dụng § Chất lượng phần mềm góc nhìn người phát triển § Yếu tố ảnh hưởng tới chất lượng phần mềm § Khủng hoảng phát triển phần mềm 31 CHẤT LƯỢNG PHẦN MỀM Tính đắn: Con người - Đầy đủ - Chính xác Tính đắn Phần mềm Phần mềm khác Phần cứng Dưới góc nhìn Người sử dụng 32 32 CHẤT LƯỢNG PHẦN MỀM Tính tiện dụng Tính tiện dụng: Con người - Dễ học Tính đắn - Dễ sử dụng - Giao diện trực quan - Tự nhiên Phần mềm Phần mềm khác Phần cứng Dưới góc nhìn Người sử dụng 33 33 11 1/22/22 CHẤT LƯỢNG PHẦN MỀM Tính hiệu quả: Tính đắn Tính tiện dụng Con người - Tối ưu sử dụng CPU* - Tối ưu sử dụng nhớ* - Tối ưu sử dụng thiết bị Phần mềm Tính hiệu Phần mềm khác Phần cứng Dưới góc nhìn Người sử dụng 34 34 CHẤT LƯỢNG PHẦN MỀM Tính tương thích: Tính đắn Tính tiện dụng Con người Tính hiệu - Import/Export liệu - Tương tác Phần mềm Phần mềm khác Phần cứng Tính tương thích Dưới góc nhìn Người sử dụng 35 35 CHẤT LƯỢNG PHẦN MỀM Tính tiến hóa: tính chất quan trọng xem xét ngành Công nghệ Phần mềm Con người Tính đắn Tính tiện dụng Tính hiệu Tính tương thích Tính tiến hóa Phần mềm Phần mềm khác Phần cứng Dưới góc nhìn Người sử dụng 36 36 12 1/22/22 CHẤT LƯỢNG PHẦN MỀM Con người Tính tiến hóa Tính đắn Tính tiện dụng Tính hiệu Tính tương thích ……… Phần mềm Phần mềm khác Phần cứng Dưới góc nhìn Người sử dụng 37 37 CHẤT LƯỢNG PHẦN MỀM GIÁ CẢ HỢP LÝ! ??? Con người Tính tiến hóa Tính đắn Tính tiện dụng Tính hiệu Tính tương thích Phần mềm Phần mềm khác Phần cứng Dưới góc nhìn Người sử dụng 38 38 CHẤT LƯỢNG PHẦN MỀM § Khó tối ưu đồng thời thuộc tính Ví dụ: hiệu dễ bảo trì, dễ sử dụng § Chi phí cho tối ưu khơng tuyến tính giá thành § Yêu cầu cân đối, thỏa hiệp: hiệu 39 39 13 1/22/22 CHẤT LƯỢNG PHẦN MỀM Dưới góc nhìn người phát triển vTính dễ kiểm tra: Làm cho việc kiểm tra phần mềm (có phù hợp yêu cầu) dễ dàng vTính dễ sửa lỗi: Việc phát xác “vị trí lỗi” sửa lỗi nhanh vTính dễ bảo trì: Cập nhật phần mềm nhanh, xác hạn chế tối đa ảnh hưởng đến thành phần khác vTính tái sử dụng: Các thành phần thực dùng lại phần mềm lớp (hoặc lĩnh vực) với thời gian cơng sức ……… 40 40 CHẤT LƯỢNG PHẦN MỀM Yếu tố khái niệm phần mềm tốt Hiệu suất xử lý Tính dễ hiểu Đặc trưng gần Các tiêu Thời gian (Phần cứng phát triển) 41 41 KHỦNG HOẢNG PHÁT TRIỂN PHẦN MỀM § Số lượng phần mềm tăng vọt (do phát triển phần cứng: tăng khả năng, giá thành hạ) § Có q nhiều khuyết điểm phần mềm dùng xã hội: • Thực khơng u cầu (tính tốn sai, khơng ổn định…) • Thời gian bảo trì nâng cấp q lâu, chi phí cao, hiệu thấp • Khó sử dụng, Thực chậm • Khơng chuyển đổi liệu phần mềm • … 42 42 14 1/22/22 KHỦNG HOẢNG PHÁT TRIỂN PHẦN MỀM § Một số kết luận: § Việc tăng vọt số lượng phần mềm điều hợp lý cịn tiếp diễn § Các khuyết điểm phần mềm có nguồn gốc từ phương pháp, cách thức quy trình tiến hành xây dựng phần mềm: § Cảm tính: người theo phương pháp riêng § Thơ sơ, đơn giản: tập trung vào việc lập trình mà quan tâm đến công việc cần làm khác (khảo sát trạng, phân tích u cầu, thiết kế…) § Thủ cơng: cịn thiếu cơng cụ hỗ trợ quy trình phát triển 43 43 K § Định nghĩa § Các yếu tố § Lịch sử phát triển 44 ĐỊNH NGHĨA KỸ NGHỆ PHẦN MỀM § Kỹ nghệ phần mềm (Software Engineering - SE) • • Bauer [1969]: SE 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 đáng tin cậy vừa hiệu Parnas [1987]: SE việc xây dựng phần mềm nhiều phiên nhiều người • Sommerville [1995]: SE nguyên lý kỹ nghệ liên quan đến tất mặt (lý thuyết, phương pháp công cụ) sản phẩm phần mềm 45 45 15 1/22/22 § IEEE [1993] SE: Việc áp dụng phương pháp tiếp cận có hệ thống, lượng hóa phát triển, vận hành bảo trì phần mềm; Nghiên cứu phương pháp tiếp cận dùng (1) § Pressman [1995]: SE mơn tích hợp qui trình, phương pháp, công cụ để phát triển phần mềm máy tính 46 46 ĐỊNH NGHĨA KỸ NGHỆ PHẦN MỀM § Cơng nghệ (kỹ nghệ) phần mềm ngành khoa học nghiên cứu việc xây dựng phần mềm có chất lượng cao thời gian chi phí thực hợp lý 47 47 CÁC YẾU TỐ CƠ BẢN CỦA KỸ NGHỆ PHẦN MỀM 01 PHƯƠNG PHÁP CÔNG CỤ Phần mềm, phần cứng hỗ trợ Cách thức xây dựng phần mềm 03 02 QUY TRÌNH Các bước cần thực hiện, mốc thời gian sản phẩm cần đạt 48 48 16 1/22/22 CÁC PHƯƠNG PHÁP – METHODS (1) § Cách làm cụ thể để xây dựng phần mềm § Mỗi cơng đoạn làm phần mềm có phương pháp riêng • • • • phương pháp phân tích (xác định, đặc tả) phương pháp thiết kế (mơ hình, thuật tốn, liệu ) phương pháp lập trình (hướng đối tượng) phương pháp kiểm thử (chức năng, cấu trúc) 49 49 CÁC PHƯƠNG PHÁP – METHODS (2) § Phương pháp hướng cấu trúc thường bao gồm: • Mơ hình hệ thống: thường mơ tả đồ thị • Các ký pháp: giúp mơ tả mơ hình • Các quy tắc: ràng buộc mơ hình • Các đề xuất: lời khuyên cho thiết kế tốt • Hướng dẫn tiến trình: hoạt động cần thực 50 50 CÁC CƠNG CỤ – TOOLS § Cung cấp trợ giúp tự động/bán tự động cho phương pháp § Computer Aided Software Engineering – CASE • Các cơng cụ chuẩn hóa để hỗ trợ cơng đoạn khác q trình phát triển phần mềm § Ví dụ: • • Compiler, debugger Công cụ sinh giao diện (C Builder, ) • Hỗ trợ phân tích, thiết kế (Rwin, Modeler (Oracle Designer, Rational Rose, ) 51 51 17 1/22/22 QUY TRèNH - PROCEDURES Đ Qui trỡnh qun lý: ã Xác định trình tự thực cơng việc • Xác định tài liệu, sản phẩm cần bàn giao, cách thức thực • Định mốc thời gian (milestones) sản phẩn bàn giao 52 52 LỊCH SỬ PHÁT TRIỂN KỸ NGHỆ PHẦN MỀM (1/4) ü Đề xướng, hình thành (70s) § Các phương pháp lập trình cấu trúc liệu • • • • • Khái niệm tính mơđun Khái niệm thiết kế, lập trình top-down, chi tiết hóa bước (N With) Lập trình có cấu trúc (Dijkstra) Phương pháp luận qui trình thiết kế; phương pháp phân chia mơ đun Trừu tượng hóa liệu (Liskov) 53 53 LỊCH SỬ PHÁT TRIỂN KỸ NGHỆ PHẦN MỀM (2/4) ü Tăng trưởng (nửa đầu 80s) § Xuất phương pháp phát triển hệ thống • Cơng nghệ CSDL(Mơ hình quan hệ) • Phân thích thiết kế hướng cấu trúc § Các cơng cụ phát triển • Cơng cụ trợ giúp phân tích thiết kế • Bộ khởi tạo chương trình (giao diện đồ họa,biên dịch) • Các ngơn ngữ bậc cao (FoxPro, SQL ) § Bắt đầu quan tâm đến quản lý làm phần mềm • Các độ đo phần mềm 54 54 18 1/22/22 LỊCH SỬ PHÁT TRIỂN KỸ NGHỆ PHẦN MỀM (3/4) ü Phát triển (từ 80s) § Hồn thiện cơng nghệ cấu trúc, đời cơng nghệ hướng đối tượng • • • • • Nhiều mơ hình hướng cấu trúc triển khai chuẩn hóa CASE hồn thiện, đạt mức tự động hóa cao Ngơn ngữ hệ đời (LIPS, PROLOG, ) Công nghệ hướng đối tượng bắt đầu phát triển: o Quy trình RUP o Ngơn ngữ mơ hình hóa thống (UML) o Các cụng cụ phần mềm đầy đủ (ROSE, JBUILDER, ) Sử dụng lại chiếm vị trí quan trọng phát triển 55 55 LỊCH SỬ PHÁT TRIỂN KỸ NGHỆ PHẦN MỀM (4/4) ü Phát triển (từ 80s)(t) § Phát triển mơ hình quản lý • Chuẩn quản lý cơng nhận (CMM, IS9000-03) • Nhiều mơ hình tổ chức làm phần mềm đề xuất • Nhiều cơng cụ trợ giúp quản lý dự án hồn thiện 56 56 TIẾN TRÌNH PHÁT TRIỂN PHẦN MỀM (1/3) § Là khoảng thời gian tính từ phần mềm đề suất bỏ đi: cụ thể từ đặt hàng, phát triển, sử dụng đến bị loại bỏ § Vịng đời phần mềm phân chia thành pha xác định yêu cầu, phát triển, vận hành bảo trì Phạm vi, thứ tự pha khác tùy theo mơ hình, dự án cụ thể 57 57 19 1/22/22 TIẾN TRÌNH PHÁT TRIỂN PHẦN MỀM (3/3) XÁC ĐỊNH YÊU CẦU PHÁT TRIỂN BẢO TRÌ § Phân tích hệ thống § Thiết kế § Sửa lỗi § Lập kế hoạch § Mã hóa § Thích nghi § Phân tích u cầu § Kiểm thử § Nâng cao § Dự phịng 58 XÁC ĐỊNH YÊU CẦU § Xác định: Hệ thống làm gì? Những ràng buộc cần tn thủ? § Phân tích hệ thống: vai trị phần mềm cần phát triển hệ thống § Lập kế hoạch: ước lượng cơng việc, lập lịch biểu, phân cơng cơng việc § Phân tích u cầu • • Xác định u cầu chi tiết (chức năng, ràng buộc) Đặc tả yêu cầu 61 61 PHÁT TRIỂN Tiến hành sản xuất phần mềm nào? Thiết kế (design) Mã hóa (coding) Dịch yêu cầu thành thiết kế (kiến trúc, liệu, thủ tục xử lý, giao diện) Chuyển thiết kế thành chương trình máy tính (trong ngơn ngữ lập trình) Kiểm thử (testing) Phát sửa lỗi chương trình (lỗi lập trình, lỗi thiết kế kiểm thử đơn vị, kiểm thử tích hợp) 62 62 20 1/22/22 BẢO TRÌ Hồn thiện hệ thống sau đưa vào hoạt động? ü Sửa lỗi: Sửa lỗi phần mềm ü Thích nghi: Sửa đổi để thích nghi với mơi trường thay đổi ü Nâng cao: Thêm chức mới, hồn thiện chức cũ 63 63 TIẾN TRÌNH PHẦN MỀM – SOFTWARE PROCESS § Tiến trình phần mềm tập hoạt động có mục tiêu nhắm phát triển làm tiến hóa phần mềm § Các hoạt động chung nhất: • Đặc tả: xác định yêu cầu • Triển khai: tạo phần mềm • Thẩm định: kiểm tra xem phần mềm đáp ứng yêu cầu khách hàng khơng? • Tiến hóa phần mềm: Thay đổi phần mềm nhằm đáp ứng yêu cầu thay đổi 64 64 MƠ HÌNH TIẾN TRÌNH PHẦN MỀM SOFTWARE PROCESS MODEL § Mơ hình tiến trình phần mềm cách biểu diễn trừu tượng tiến trình phần mềm đơn giản hóa thể góc nhỡn no ú Đ Cỏc gúc nhỡn tin trỡnh: ã Luồng cơng việc: trình tự hoạt động • Luồng liệu: luồng liệu di chuyển • Vai trò/hành động: hành vi tác nhân 65 65 21 1/22/22 CHI PHÍ CỦA KỸ NGHỆ PHẦN MỀM § Chi phí kỹ nghệ phần mềm: gồm khoản chi liên quan đến phát triển phần mềm § Chi phí phụ thuộc vào: • Loại hệ thống phát triển (đơn giản, phức tạp) • Yêu cầu đặt cho hệ thống (nhiều, ít) • Các thuộc tính mức độ hoàn thiện hệ thống (độ tin cậy, an tồn, bảo mật) • Năng lực tổ chức phát triển 66 66 CHI PHÍ KỸ NGHỆ PHẦN MỀM § Chi phí phần mềm thường chiếm phần lớn chi phí hệ thống máy tính § Chi phí phần mềm máy PC thường lớn chi phí phần cứng § Chi phí biến đổi tuỳ thuộc vào loại hệ thống xây dựng yêu cầu đặc điểm hệ thống 67 PHÂN BỔ CHI PHÍ TRONG KỸ NGHỆ PHẦN MỀM § Việc phân bổ chi phí phụ thuộc vào mơ hình phát triển hệ thống sử dụng § Chi phí phục vụ cho việc thay đổi, cải tiến phần mềm sau đưa vào sử dụng § Ngồi ra, bảo trì chiếm 50% kinh phí dự án 68 22 1/22/22 PHÂN BỔ NỖ LỰC PHÁT TRIỂN TRONG KỸ NGHỆ PHẦN MỀM 69 69 KỸ NGHỆ HỆ THỐNG vs KỸ NGHỆ PHẦN MỀM § Kỹ nghệ hệ thống liên quan đến tất mặt việc phát triển hệ thống dựa máy tính: phần cứng, phần mềm, tổ chức, quản lý § Kỹ nghệ phần mềm phần kỹ nghệ hệ thống § Kỹ sư hệ thống bao gồm tất người tham gia hoạt động tạo lên hệ thống: đặc tả, thiết kế kiến trúc, tích hợp, triển khai … Kỹ nghệ hệ thống Kỹ nghệ phần mềm 70 70 KHOA HỌC MÁY TÍNH vs KỸ NGHỆ PHẦN MỀM § Khoa học máy tính liên quan đến vấn đề lý thuyết tảng cho máy tính § Kỹ nghệ phần mềm liên quan đến thực tiễn việc phát triển xuất phần mềm hiệu § Lý thuyết khoa học máy tính khơng đủ cho hoạt động kỹ nghệ phần mềm Khoa học máy tính Kỹ nghệ phần mềm §71 71 23 1/22/22 CÂU HỎI ƠN TẬP Định nghĩa mơ hình tiến trình? Các mơ hình nhận từ nhìn nhận nào? Chi phí SE gồm thành phần phụ thuộc vào gì? Kỹ nghệ hệ thống gì? Quan hệ với kỹ nghệ phần mềm sao? Khoa học máy tính gì? Quan hệ kỹ nghệ phần mềm nào? 72 72 CÂU HỎI ÔN TẬP Các giai đoạn lịch sử phát triển kỹ nghệ phần mềm? đặc trưng giai đoạn (sản phẩm, phương pháp, cơng cụ, quản lý tổ chức làm việc)? Định nghĩa kỹ nghệ phần mềm? Giải thích nội dung yếu tố SE? Lấy ví dụ minh hoạ phương pháp, công cụ qua phương pháp thiết kế hướng cấu trúc? Tiến trình phần mềm gì? Các bước chung tiến trình gì? 73 73 CÂU HỎI THẢO LUẬN 74 74 24