Bài giảng Công nghệ phần mềm - Phần 1: Giới thiệu chung về công nghệ phần mềm cung cấp cho người học các kiến thức: Bản chất phần mềm, những vấn đề trong phát triển phần mềm, quy trình phát triển phần mềm. Mời các bạn cùng tham khảo.
9/6/2011 PHẦN I: GIỚI THIỆU CHUNG VỀ CÔNG NGHỆ PHẦN MỀM I Bản chất phần mềm Định nghĩa chung phần mềm Kiến trúc phần mềm Các khái niệm Đặc tính chung phần mềm Thế phần mềm tốt ? Các ứng dụng phần mềm II Những vấn đề phát triển phần mềm III Quy trình phát triển phần mềm 1 Định nghĩa chung phần mềm • Phần mềm (Software - SW) khái niệm đối nghĩa với phần cứng (Hardware - HW), nhiên, khái niệm tương đối • Từ xưa, SW thứ cho khơng bán kèm theo máy (HW) • Dần dần, giá thành SW ngày cao cao HW CuuDuongThanCong.com https://fb.com/tailieudientucntt 9/6/2011 Các đặc tính SW HW Hardware • Vật “cứng” • Kim loại • Vật chất • Hữu hình • Sản xuất cơng nghiệp máy móc • Định lượng • Hỏng hóc, hao mịn Software • Vật “mềm” • Kỹ thuật sử dụng • Trừu tượng • Vơ hình • Sản xuất người • Định tính • Khơng hao mịn Định nghĩa • Phần mềm – Các lệnh (chương trình máy tính) thực cung cấp chức kết mong muốn – Các cấu trúc liệu làm cho chương trình thao tác thơng tin thích hợp – Các tư liệu mơ tả thao tác cách sử dụng chương trình CuuDuongThanCong.com https://fb.com/tailieudientucntt 9/6/2011 Định nghĩa • Trong hệ thống máy tính, trừ bỏ thiết bị loại phụ kiện phần cịn lại phần mềm (SW) • Nghĩa hẹp: SW dịch vụ chương trình để tăng khả xử lý phần cứng máy tính (như hệ điều hành - OS) • Nghĩa rộng: SW tất kỹ thuật ứng dụng để thực dịch vụ chức cho mục đích phần cứng SW theo nghĩa rộng • Khơng SW SW ứng dụng • Phải gồm khả năng, kinh nghiệm thực tiễn kỹ kỹ sư (người chế phần mềm): Know-how of Software Engineer • Là tất kỹ thuật làm cho sử dụng phần cứng máy tính đạt hiệu cao CuuDuongThanCong.com https://fb.com/tailieudientucntt 9/6/2011 Phần mềm ? Nhóm Kỹ thuật, Phương pháp luận • • • Nhóm chương trình Nhóm tư liệu • Kinh nghiệm kỹ sư, know-how Các khái niệm trình tự cụ thể hóa hệ thống Các phương pháp tiếp cận giải vấn đề Các trình tự thiết kế phát triển chuẩn hóa Các phương pháp đặc tả yêu cầu, thiết kế hệ thống, thiết kế chương trình, kiểm thử, tồn quy trình quản lý phát triển phần mềm Phần mềm ? Nhóm Kỹ thuật, Phương pháp luận Nhóm chương trình Nhóm tư liệu Kinh nghiệm kỹ sư, know-how • • • Là phần giao diện với phần cứng, tạo thành từ nhóm lệnh thị cho máy tính biết trình tự thao tác xử lý liệu Phần mềm bản: với chức cung cấp môi trường thao tác dễ dàng cho người sử dụng nhằm tăng hiệu xử lý phần cứng (ví dụ OS chương trình hệ thống) Phần mềm ứng dụng: dùng để xử lý nghiệp vụ thích hợp (quản lý, kế tốn, ), phần mềm đóng gói, phần mềm người dùng, CuuDuongThanCong.com https://fb.com/tailieudientucntt 9/6/2011 Phần mềm ? Nhóm Kỹ thuật, Phương pháp luận • • Nhóm chương trình Nhóm tư liệu Kinh nghiệm kỹ sư, know-how Những tư liệu hữu ích, có giá trị cao cần thiết để phát triển, vận hành bảo trì phần mềm Để chế phần mềm với độ tin cậy cao cần tạo tư liệu chất lượng cao: đặc tả yêu cầu, mô tả thiết kế loại, điều kiện kiểm thử, thủ tục vận hành, hướng dẫn thao tác Phần mềm ? Nhóm Kỹ thuật, Phương pháp luận Nhóm chương trình Nhóm tư liệu Kinh nghiệm kỹ sư, know-how • Phần mềm phụ thuộc nhiều vào ý tưởng (idea) kỹ (know-how) người/nhóm tác giả • Khả hệ thống hóa trừu tượng • Khả lập trình • Kỹ cơng nghệ • Kinh nghiệm làm việc • Tầm bao quát • 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt 9/6/2011 Kiến trúc phần mềm • Phân cấp System Subsystem Master files Subsystem Job unit Program Program Temporary files Module Module Arguments Jobstep unit Arguments Subroutine Member unit Common Module Phần mềm Nhìn từ phương diện cấu trúc • Cấu trúc chiều đứng (Vertical structure) System A Fuction – Subsystem Function B Subsystem Function C – • Program D Fuction Program E Function Function Module F Function Module G Cấu trúc chiều ngang (Horizontal structure) Function H Subroutine kiến trúc chức mà phần mềm có điều kiện phân cấp chức Thiết kế chức – CuuDuongThanCong.com Cấu trúc phần mềm: – Theo chiều đứng: sâu phức tạp Theo chiều ngang: rộng nhiều chức năng, qui mơ lớn https://fb.com/tailieudientucntt 9/6/2011 Phần mềm Nhìn từ phương diện thủ tục • System • Subsystem Master files Subsystem Program Module • Program Temporary files Arguments Module Arguments Subroutine Common Module • Quan hệ thứ tự thành phần cấu thành phần mềm Thuật toán với phép lặp, rẽ nhánh, điều khiển luồng xử lý (quay lui hay bỏ qua) Cấu trúc lôgic biểu thị chức có phần mềm trình tự thực chúng Thiết kế cấu trúc trước sang chức 13 Từ phương pháp luận phần mềm sang kỹ thuật phần mềm • Khi chế tác phần mềm cần nhiều phương pháp: – Phương pháp luận (Methodology): chuẩn mực để chế tạo phần mềm với tiêu định tính – Các phương pháp kỹ thuật (Techniques): trình tự cụ thể để chế tạo phần mềm cách tiếp cận khoa học mang tính định lượng 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt 9/6/2011 Từ phương pháp luận phần mềm sang kỹ thuật phần mềm Phân tích cấu trúc Mơđun Thiết kế cấu trúc Tinh chỉnh bước Lập trình cấu trúc Trừu tượng hóa Dữ liệu trừu tượng Che giấu t.tin Hướng đối tượng Khái niệm phần mềm 15 3.1 Tính mơđun (Modularity) • • Quan hệ môđun ? qua đối số (arguments) SW Phân chia chiều rộng Tính độc lập dần Phân chia chiều sâu – Theo chiều sâu – Theo chiều rộng Cấu trúc rộng chiều ngang Cấu trúc sâu chiều đứng • Là khả phân chia phần mềm thành môđun ứng với chức năng, đồng thời cho phép quản lý tổng thể: khái niệm phân chia trộn (partion and merge) Hai phương pháp phân chia môđun theo chiều Điều khiển phức tạp dần 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt 9/6/2011 3.2 Tinh chỉnh bước (Step refinement) • Cách tiếp cận từ xuống (top-down approach) Thế giới bên ngồi Trừu tượng hóa mức cao: Thế giới bên ngoài, trạng thái chưa rõ ràng Chi tiết hóa Đặc tả yêu cầu dần bước Ngơn ngữ chương trình Trừu tượng hóa mức trung gian: Xác định yêu cầu đặc tả định nghĩa yêu cầu Trừu tượng hóa mức thấp: Từng lệnh chương trình viết ngơn ngữ thủ tục 17 Ví dụ: Trình tự giải vấn đề từ mức thiết kế chương trình đến mức lập trình • Bài tốn: từ nhóm N số khác tăng dần, tìm số có giá trị K (nhập từ ngồi vào) in vị trí • Giải bước từ khái niệm đến chi tiết hóa câu lệnh ngơn ngữ lập trình • Chọn giải thuật tìm kiếm nhị phân (pp nhị phân) 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt 9/6/2011 Cụ thể hóa thủ tục qua chức Bài tốn cho Nhập giá trị K Nhận giá trị nhóm N số Tìm kiếm giá trị (pp nhị phân) In vị trí (nếu có) 19 Cụ thể hóa bước Tìm kiếm giá trị (pp nhị phân) Xác lập phạm vi mảng số Lặp lại xử lý tìm kiếm giá trị K phạm vi tìm kiếm Lặp lại tìm kiếm K phạm vi tìmkiếm Tìm vị trí phân đôi mảng So sánh K với giá trị Đặt lại phạm vi tìm kiếm 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt 10 9/6/2011 Những điểm chung phương thức sử dụng CMM 75 4.2 Mơ hình tuyến tính • Cơng nghệ học Hệ thống / Thơng tin mơ hình hóa (System / Information engineering and modeling): thiết lập yêu cầu, ánh xạ số tập yêu cầu sang phần mềm trình tương tác phần cứng, người CSDL Phân tích Thiết kế Lập trình Kiểm thử Cơng nghệ học Hệ thống / Thơng tin 76 CuuDuongThanCong.com https://fb.com/tailieudientucntt 38 9/6/2011 4.2 Mơ hình tuyến tính Tạo mã / lập trình (Code generation / programming): Chuyển thiết kế thành chương trình máy tính ngơn ngữ Nếu thiết kế chi tiết hóa lập trình túy học Phân tích Thiết kế Kiểm thử (Testing): Kiểm tra chương trình mơđun lơgic bên chức bên ngoài, nhằm phát lỗi đảm bảo với đầu vào xác định cho kết mong muốn Lập trình Kiểm thử Cơng nghệ học Hệ thống / Thơng tin 77 4.2 Mơ hình tuyến tính • Hỗ trợ / Bảo trì (Support / Maintenance): Đáp ứng thay đổi, nâng cấp phần mềm phát triển thay đổi môi trường, nhu cầu Phân tích Thiết kế Lập trình Kiểm thử Công nghệ học Hệ thống / Thông tin 78 CuuDuongThanCong.com https://fb.com/tailieudientucntt 39 9/6/2011 Điểm yếu Mơ hình tuyến tính • Thực tế dự án tuân theo dịng mơ hình, mà thường có lặp lại (như mơ hình Boehm) • Khách hàng tuyên bố rõ ràng xong hết u cầu • Khách hàng phải có lịng kiên nhẫn chờ đợi thời gian định có sản phẩm Nếu phát lỗi nặng thảm họa! 79 4.3 Mơ hình chế thử (Prototyping model) Tạo / sửa mẫu Nghe Khách trình bày Khách kiểm tra mẫu 80 CuuDuongThanCong.com https://fb.com/tailieudientucntt 40 9/6/2011 Mơ hình chế thử: Khi ? • Khi rõ mục đích chung chung phần mềm, chưa rõ chi tiết đầu vào hay xử lý chưa rõ yêu cầu đầu • Dùng “Hệ sơ khai” để thu thập yêu cầu người dùng qua thiết kế nhanh • Các giải thuật, kỹ thuật dùng làm mẫu chưa nhanh, chưa tốt, miễn có mẫu để thảo luận gợi yêu cầu người dùng 81 4.4 Mơ hình phát triển ứng dụng nhanh (Rapid Application Development: RAD) • Là quy trình phát triển phần mềm gia tăng, tăng dần bước (Incrimental software development) với chu trình phát triển ngắn (60-90 ngày) • Xây dựng dựa hướng thành phần (Componentbased construction) với khả tái sử dụng (reuse) • Gồm số nhóm (teams), nhóm làm RAD theo pha: Mơ hình nghiệp vụ, Mơ hình liệu, Mơ hình xử lý, Tạo ứng dụng, Kiểm thử đánh giá (Business, Data, Process, Appl Generation, Test) 82 CuuDuongThanCong.com https://fb.com/tailieudientucntt 41 9/6/2011 Mơ hình phát triển ứng dụng nhanh Team #3 Business Modeling Data Team #2 Modeling Business Process Modeling Modeling Application Data Team #1 Generation Modeling Testing & Business Process Turnover Modeling Modeling Application Generation Testing & Process Turnover Data Modeling Modeling Application Generation Testing & Turnover 60 - 90 days RAD: Business modeling • Luồng thơng tin mơ hình hóa để trả lời câu hỏi: – – – – – Thông tin điều khiển xử lý nghiệp vụ ? Thơng tin sinh ra? Ai sinh ? Thơng tin đến đâu ? Ai xử lý chúng ? 84 CuuDuongThanCong.com https://fb.com/tailieudientucntt 42 9/6/2011 RAD: Data and Process modeling • Data modeling: đối tượng liệu cần để hỗ trợ nghiệp vụ (business) Định nghĩa thuộc tính đối tượng xác lập quan hệ đối tượng • Process modeling: Các đối tượng liệu chuyển sang luồng thông tin thực chức nghiệp vụ Tạo mô tả xử lý đễ cập nhật (thêm, sửa, xóa, khơi phục) đối tượng liệu 85 RAD: Appl Generation and Testing • Application Generation: Dùng kỹ thuật hệ để tạo phần mềm từ thành phần có sẵn tạo thành phần tái dụng lại sau Dùng cơng cụ tự động để xây dựng phần mềm • Testing and Turnover: Kiểm thử thành phần kiểm chứng giao diện (các thành phần cũ kiểm thử dùng lại) 86 CuuDuongThanCong.com https://fb.com/tailieudientucntt 43 9/6/2011 RAD: Hạn chế ? • Cần nguồn nhân lực dồi để tạo nhóm cho chức • Yêu cầu hai bên giao kèo thời gian ngắn phải có phần mềm hồn chỉnh, thiếu trách nhiệm bên dễ làm dự án đổ vỡ • RAD tốt cho ứng dụng, với ứng dụng khơng thể mơđun hóa địi hỏi tính cao • Mạo hiểm kỹ thuật cao khơng nên dùng RAD 87 Mở đầu • Phần lớn hệ phần mềm phức tạp tiến hóa theo thời gian: môi trường thay đổi, yêu cầu phát sinh thêm, hồn thiện thêm chức năng, tính • Các mơ hình tiến hóa (evolutionary models) có tính lặp lại Kỹ sư phần mềm tạo phiên (versions) ngày hồn thiện hơn, phức tạp • Các mơ hình tiêu biểu: – – – – Incremental Spiral WINWIN spiral Concurrent development model 88 CuuDuongThanCong.com https://fb.com/tailieudientucntt 44 9/6/2011 Mơ hình gia tăng (The incremental model) • Kết hợp mơ hình ý tưởng lặp lại chế mẫu • Sản phẩm lõi với yêu cầu hệ thống phát triển • Các chức với yêu cầu khác phát triển thêm sau (gia tăng) • Lặp lại quy trình để hồn thiện dần 89 Mơ hình gia tăng Gia tăng Phân tích Thiết kế Lập trình Xuất xưởng Kiểm thử System/info Engineering Gia tăng Phân tích Gia tăng Thiết kế Phân tích Gia tăng Lập trình Kiểm thử Xuất xưởng Thiết kế Lập trình Kiểm thử Xuất xưởng Phân tích Thiết kế Lập trình Kiểm thử XX Calendar time 90 CuuDuongThanCong.com https://fb.com/tailieudientucntt 45 9/6/2011 Mơ hình xoắn ốc (spiral) Lập kế hoạch Phân tích rủi ro Giao tiếp khách hàng Khái niệm Kỹ nghệ Làm Nâng cấp Bảo trì Khách hàng đánh giá Xây dựng & Xuất xưởng 91 Mơ hình xoắn ốc (tiếp) • Giao tiếp khách hàng: người phát triển khách hàng để tìm hiểu yêu cầu, ý kiến • Lập kế hoạch: Xác lập tài ngun, thời hạn thơng tin khác • Phân tích rủi ro: Xem xét mạo hiểm kỹ thuật mạo hiểm quản lý • Kỹ nghệ: Xây dựng hay số biểu diễn ứng dụng 92 CuuDuongThanCong.com https://fb.com/tailieudientucntt 46 9/6/2011 Mơ hình xoắn ốc (tiếp) • Xây dựng xuất xưởng: xây dựng, kiểm thử, cài đặt cung cấp hỗ trợ người dùng (tư liệu, huấn luyện, ) • Đánh giá khách hàng: Nhận phản hồi người sử dụng biểu diễn phần mềm giai đoạn kỹ nghệ cài đặt 93 Mơ hình xoắn ốc: Mạnh yếu? • Tốt cho hệ phần mềm quy mô lớn • Dễ kiểm soát mạo hiểm mức tiến hóa • Khó thuyết phục khách hàng phương pháp tiến hóa xoắn ốc kiểm sốt • Chưa dùng rộng rãi mơ hình tuyến tính chế thử 94 CuuDuongThanCong.com https://fb.com/tailieudientucntt 47 9/6/2011 Mơ hình xoắn ốc WINWIN • Nhằm thỏa hiệp người phát triển khách hàng, hai “Thắng” (win-win) – Khách có phần mềm thỏa mãn u cầu – Người phát triển có kinh phí thỏa đáng thời gian hợp lý • Các hoạt động xác định hệ thống: – Xác định cổ đông (stakeholders) – Xác định điều kiện thắng cổ đông – Thỏa hiệp điều kiện thắng bên liên quan 95 Mơ hình xoắn ốc WINWIN Xác định điều kiện thắng cổ đơng 3a Hịa hợp điều kiện thắng 3b Thiết lập mục tiêu mức tiếp ràng buộc, dự kiến Xác định mức tiếp cổ đơng Đánh giá tiến trình dự kiến sản phẩm, giải rủi ro Xét duyệt đánh giá Kiểm định sản phẩm quy trình Xác định mức tiếp sản phâm quy trình, kể phân chia nhỏ 96 CuuDuongThanCong.com https://fb.com/tailieudientucntt 48 9/6/2011 Mơ hình phát triển đồng thời (concurrent development) • Xác định mạng lưới hoạt động đồng thời (Network of concurrent activities) • Các kiện (events) xuất theo điều kiện vận động trạng thái hoạt động • Dùng cho loại ứng dụng cho hình ảnh xác trạng thái trạng dự án • Thường dùng phát triển ứng dụng khách/chủ (client/server applications): hệ thống thành phần cấu thành hệ thống phát triển đồng thời 97 Component-based model • Gắn với công nghệ hướng đối tượng (Object-oriented technologies) qua việc tạo lớp (classes) có chứa liệu giải thuật xử lý liệu • Có nhiều tương đồng với mơ hình xoắn ốc • Với ưu điểm tái sử dụng thành phần qua Thư viện / kho lớp: tiết kiệm 70% thời gian, 80% giá thành, số sản xuất 26.2/16.9 • Với UML chuẩn công nghiệp triển khai 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt 49 9/6/2011 Mơ hình dựa thành phần Lập kế hoạch Phân tích rủi ro Giao tiếp khách hàng Xác định thành phần ứng viên Xây dựng bước lặp thứ n hệ thống Khách hàng đánh giá Kỹ nghệ Xây dựng & Xuất xưởng Tìm thành phần từ thư viện Đặt thành phần vào thư viện Lấy thành phần có Xây dựng thành phần kh.có 99 4.7 Mơ hình RUP (Rational Unified Process) • SV tự nghiên cứu 100 CuuDuongThanCong.com https://fb.com/tailieudientucntt 50 9/6/2011 4.8 Các kỹ thuật hệ (Fourth generation techniques) • Tập hợp cơng cụ cho phép xác định đặc tính phần mềm mức cao, sau sinh tự động mã nguồn dựa theo đặc tả • Các cơng cụ 4GT điển hình: ngơn ngữ phi thủ tục cho truy vấn CSDL; tạo báo cáo; xử lý liệu; tương tác hình; tạo mã nguồn; khả đồ họa bậc cao; khả bảng tính; khả giao diện Web; vv 101 4GT: Tại ? • Từ thu thập yêu cầu sản phẩm: đối thoại khách người phát triển quan trọng • Khơng nên bỏ qua khâu thiết kế 4GT áp dụng để triển khai thiết kế qua 4GL • Mạnh: giảm thời gian phát triển tăng suất • Yếu: 4GT khó dùng ngơn ngữ lập trình, mã khó tối ưu khó bảo trì cho hệ thống lớn cần kỹ kỹ sư phần mềm • Tương lai: 4GT với mơ hình theo thành phần 102 CuuDuongThanCong.com https://fb.com/tailieudientucntt 51 9/6/2011 Sản phẩm quy trình (Product and process) • Quy trình yếu sản phẩm khó mà tốt, song khơng nên coi trọng q mức vào quy trình mức vào sản phẩm • Sản phẩm quy trình cần coi trọng 103 CuuDuongThanCong.com https://fb.com/tailieudientucntt 52 ... tiến trình Năm 19 91, phát triển thành mơ hình thục khả (CMM) Phiên CMM 1. 0 phát triển vào năm 19 9 1- 1992 Trong phần tìm hiểu CMM 1. 1 59 a Tại phải sử dụng mô hình CMM cơng nghệ làm phần mềm Khó... phẩm phần mềm công cụ khác làm tăng suất sản xuất phần mềm đáng kể ICSE tổ chức lần năm 19 81 1982 với 10 00 người tham dự năm Nhật Bản sang “Kế hoạch phát triển kỹ thuật bảo trì phần mềm” (19 811 985)... 20 9/6/2 011 PHẦN I: GIỚI THIỆU CHUNG VỀ CÔNG NGHỆ PHẦN MỀM I Bản chất phần mềm II Những vấn đề phát triển phần mềm III.Quy trình phát triển phần mềm Sự tiến triển phương pháp thiết kế phần mềm