Bài giảng Nhập môn công nghệ phần mềm - Chương 1: Giới thiệu công nghệ phần mềm cung cấp cho người đọc các kiến thức: Lịch sử phát triển phần mềm và khủng hoảng phần mềm, công nghệ phần mềm, chất lượng phần mềm, phân loại phần mềm. Mời các bạn cùng tham khảo.
Giới thiệu cơng nghệ phần mềm (1) Nguyễn Thanh Bình Khoa Công nghệ Thông tin Trường ðại học Bách khoa ðại học ðà Nẵng Nội dung Lịch sử phát triển phần mềm khủng hoảng phần mềm ? Công nghệ phần mềm Khái niệm Mục đích Ngun tắc Chất lượng phần mềm Phân loại phần mềm CuuDuongThanCong.com https://fb.com/tailieudientucntt Lịch sử phát triển phần mềm 1946, máy tính điện tử đời 1950, máy tính thương mại hóa Phần mềm bắt ñầu ñược phát triển Những năm 1960 thất bại phát triển phần mềm • sản phẩm phần mềm phức tạp • nhiều lỗi • tổ chức sản xuất: giá thành, tiến ñộ, Người ta nói đến “Khủng hoảng phần mềm” Lịch sử phát triển phần mềm Từ thủ cơng đến cơng nghệ • Chương trình nhỏ • khơng chun nghiệp • người làm • người sử dụng = người phát triển • sản phẩm = mã nguồn • tiến trình phát triển đơn giản • Dự án lớn • chun nghiệp • nhiều người làm • khách hàng & nhà cung cấp • nhiều sản phẩm • tiến trình phát triển phức tạp 1968, hội thảo khoa học ñầu tiên “Công nghệ phần mềm” CuuDuongThanCong.com https://fb.com/tailieudientucntt Khủng hoảng phần mềm Về mặt sản phẩm chất lượng sản phẩm phần mềm • • • • • khơng đáp ứng u cầu thực tế khó sử dụng khơng tin cậy khó bảo trì khách hàng khơng hài lịng Khủng hoảng phần mềm Về mặt quản lý Kế hoạch • khơng đánh giá giá thành • khơng tiến độ • chi phí phát triển / chi phí bảo trì Về mặt pháp lý • hợp đồng khơng rỏ ràng, khơng chặt chẽ Nhân lực • đào tạo • giao tiếp Thiếu tiêu chuẩn ñánh giá sản phẩm Thiếu quy trình quản lý CuuDuongThanCong.com https://fb.com/tailieudientucntt Khủng hoảng phần mềm ðiều tra General Acounting Office (1982) nhiều án với tổng vốn đầu tư $68.000.000 Khơng giao sản phẩm: 29% Khơng sử dụng: 47% Bỏ cuộc: 19% ðược sử dụng sau ñã chỉnh sửa: 3% Tốt: 2% Khủng hoảng phần mềm CuuDuongThanCong.com https://fb.com/tailieudientucntt Công nghệ phần mềm Khái niệm Công nghệ phần mềm nghiên cứu phát triển phương pháp, kĩ thuật công cụ nhằm xây dựng phần mềm cách kinh tế, có độ tin cậy cao hoạt ñộng hiệu thiết kế, xây dựng, bảo trì phần mềm ph c t p, b n v ng ch t lư ng Công nghệ phần mềm Mục đích Mục đích áp dụng thực tế • • • • kiến thức khoa học, nguyên tắc kinh tế, nguyên tắc quản lí, kỹ thuật cơng cụ thích hợp để sản xuất bảo trì phần mềm nhằm bảo đảm yêu cầu (FQCD): • phần mềm tạo phải ñáp ứng ñược yêu cầu người sử dụng • phần mềm phải ñạt ñược tiêu chuẩn chất lượng • giá thành phải nằm giới hạn ñặt • tiến ñộ xây dựng phần mềm phải ñảm bảo 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Công nghệ phần mềm Nguyên tắc Các nguyên tắc Chặt chẽ (rigor and formality) Chia nhỏ (separation of concerns) Mơ-đun hóa (modularity) Trừu tượng (abstraction) Phịng ngừa thay đổi (anticipation of change) Tổng qt hóa (generality) Giải bước (incrementality) 11 Cơng nghệ phần mềm Nguyên tắc Chặt chẽ (rigor and formality) sử dụng mơ hình lý thuyết tốn học áp dụng cho tất bước, tất sản phẩm Ví dụ • “chọn z giá trị lớn x y” • z = max(x, y) 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt Công nghệ phần mềm Nguyên tắc Chia nhỏ (separation of concerns) Làm chủ ñộ phức tạp • tập trung lĩnh vực lúc Chia vấn đề thành phần nhỏ • Giải phần nhỏ đơn giản • “chia ñể trị” (divide and conquer) Có thể chia nhỏ theo • thời gian: lập kế hoạch • khái niệm: giao diện / thuật tốn • xử lý: chia xử lý 13 Cơng nghệ phần mềm Ngun tắc Mơ-đun hóa (modularity) Chia nhỏ độ phức tạp • dễ hiểu • dễ quản lý hệ thống phức tạp Quan hệ mật thiết với nguyên tắc “chia nhỏ” Các phương pháp mơ-đun hóa • chiến lược từ xuống (top-down) • chiến lược từ lên (bottom-up) Chất lượng mơ-đun hóa • liên kết lỏng lẻo (low coupling) • kết cố cao (high cohesion) 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt Công nghệ phần mềm Nguyên tắc Trừu tượng (abstraction) Loại bỏ khơng quan trọng Chỉ xem xét yếu tố quan trọng Sử dụng mơ hình • mơ hình cho người sử dụng • mơ hình cho ngưới phát triển Ví dụ • ngơn ngữ lập trình / cấu trúc phần cứng • xây dựng tài liệu • ñặc tả bới ñiều kiện trước sau 15 Công nghệ phần mềm Ngun tắc Phịng ngừa thay đổi (anticipation of change) phần mềm sản phẩm thường xuyên phải thay đổi dự báo yếu tố thay đổi • ảnh hưởng thay đổi thường gặp • đặc tả u cầu • ngữ cảnh sử dụng • khả cơng nghệ 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt Công nghệ phần mềm Nguyên tắc Tổng qt hóa (generality) xem xét vấn đề ngữ cảnh tổng quát giải vấn ñề lớn mục đích • tái sử dụng dễ dàng • sử dụng cơng cụ có sẵn • sử dụng design patterns • chi phí tăng cao 17 Công nghệ phần mềm Nguyên tắc Giải bước (incrementality) Ngun tắc • • • • xác định phần (tập con) phát triển ñánh giá bắt ñầu lại Áp dụng cho • phát triển sản phẩm • mơ đặc tả / kiến trúc / • mơ hình phát triển • mơ hình lặp 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chất lượng phần mềm Tính đắn (correctness) thực ñúng ñặc tả chức (functional specification) Tính tin cậy (reliability) đáp ứng u cầu đặt Tính bền vững (robustness) hoạt động tốt ñiều kiện sử dụng khác 19 Chất lượng phần mềm Tính hiệu (efficiency) sử dụng hiệu nguồn tài nguyên (bộ nhớ, CPU, ) Tính thân thiện (user friendlyness) dễ sử dụng Tính dễ kiểm tra (verifiability) dễ kiểm tra chất lượng 20 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chất lượng phần mềm Tính dễ bảo trì (maintainability) dễ xác ñịnh sửa lỗi dễ tạo phiên có mở rộng Tính tái sử dụng (reusability) dễ tái sử dụng phần mềm Tính khả chuyển (portability) dễ sử dụng mơi trường 21 Chất lượng phần mềm Tính dễ hiểu (understandability) dễ hiểu ñối với người sử dụng người phát triển Tính hợp tác (interoperability) dễ hợp tác với phần mềm khác Sản xuất hiệu (productivity) tiến trình sản xuất phần mềm phải hiệu 22 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chất lượng phần mềm Khả giao sản phẩm ñúng hạn (timeliness) giao sản phẩm theo gói Tính suốt (visibility) người phát triển/người quản lý • hiểu rỏ tiến ñộ phát triển • hiểu rỏ ảnh hưởng định khách hàng • hiểu rỏ tiến ñộ phát triển • hiểu rỏ ảnh hưởng ñịnh 23 Chất lượng phần mềm Sự thỏa hiệp tiêu chuẩn chất lượng tính thân thiện / tính bền vững tính khả chuyển / tính hiệu 24 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt Phân loại phần mềm Các hệ thống thông tin (Information Systems) quản lý thông tin sở liệu + giao tác Các hệ thống thời gian thực (Real-Time System) hệ thống hoạt ñộng cần phải trả lời kiện với thời gian ñược quy ñịnh nghiêm ngặt 25 Phân loại phần mềm Các hệ thống phân tán (Distributed Systems) mạng máy tính phân tán liệu phân tán xử lí Các hệ thống nhúng (Emmbedded Systems) giao tiếp với hệ thống/mạch ñiện tử 26 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... Khủng hoảng phần mềm CuuDuongThanCong.com https://fb.com/tailieudientucntt Công nghệ phần mềm Khái niệm Công nghệ phần mềm nghiên cứu phát triển phương pháp, kĩ thuật công cụ nhằm xây dựng phần mềm...Lịch sử phát triển phần mềm 19 46, máy tính điện tử đời 19 50, máy tính thương mại hóa Phần mềm bắt ñầu ñược phát triển Những năm 19 60 thất bại phát triển phần mềm • sản phẩm phần mềm phức tạp •... triển phức tạp 19 68, hội thảo khoa học ñầu tiên ? ?Công nghệ phần mềm” CuuDuongThanCong.com https://fb.com/tailieudientucntt Khủng hoảng phần mềm Về mặt sản phẩm chất lượng sản phẩm phần mềm • •