1. Trang chủ
  2. » Công Nghệ Thông Tin

Giới thiệu công nghệ phần mềm

95 123 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 95
Dung lượng 0,98 MB

Nội dung

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 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 • chuyên 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 “Cơng nghệ phần mềm” 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ý 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 ñược 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 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 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 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 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 ngun 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 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 Nguyên 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ả yêu cầu • ngữ cảnh sử dụng • khả công nghệ 16 Công nghệ phần mềm Nguyên tắc Tổng quát 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) Nguyên 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 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 Total Function ñịnh nghĩa ánh xạ từ tất giá trị domain ñến range ký hiệu nghĩa 53 Total Function Ví dụ 54 27 Total Function Sử dụng để định nghĩa số Ví dụ 55 Các ký hiệu Tốn tử lơ-gíc Tập hợp Quan hệ Hàm 56 28 Thiết kế (6) 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 Thiết kế ? phân tích tốn/vấn ñề xuất phát từ yêu cầu mô tả nhiều giải pháp ñánh giá giải pháp, chọn giải pháp tốt mức trừu tượng ñịnh sử dụng mơ hình tính chất trả lời câu hỏi “như nào” mô tả chủ yếu cấu trúc bỏ qua chi tiết cài đặt • giải pháp trừu tượng ≠ giải pháp cụ thể Các giai ñoạn thiết kế Hoạt ñộng thiết kế xuất mơ hình phát triển khác Hai giai đoạn thiết kế Thiết kế kiến trúc • phân tích giải pháp thành thành phần • ñịnh nghĩa giao diện thành phần • ñịnh nghĩa phần vấn ñề ñược giải thành phần • thực nhiều mức trừu tượng Thiết kế chi tiết • thiết kế thuật tốn, cấu trúc liệu Các giai đoạn thiết kế Requirements specification Design activities Architectural design Abstract specificatio n Interface design Component design Data structure design Algorithm design System architecture Software specification Interface specification Component specification Data structure specification Algorithm specification Design products Các giai ñoạn thiết kế Architectural design xác ñịnh hệ thống Abstract specification ñặc tả hệ thống Interface design mô tả giao diện hệ thống Component design phân tích hệ thống thành thành phần Data structure design cấu trúc liệu lưu trữ liệu toán Algorithm design thiết kế thuật toán cho hàm/mơ-đun Tại phải thiết kế ? có kiến trúc tốt làm chủ cấu trúc hệ thống “chia ñể trị” ñạt ñược tiêu chuẩn chất lượng tái sử dụng / dễ keỉem thử / dễ bảo trì thiết kế hướng đến thay ñổi (design for change) Thiết kế thay đổi Thay đổi = tích chất đặc trưng phần mềm Dự báo thay ñổi cần thiết giảm chi phí bảo trì Dự báo thay đổi khó khăn thay đổi thường khơng xác định trước nhiều yếu tố thay ñổi lúc thời ñiểm thay ñổi khó biết trước Thiết kế thay đổi Các yếu tố thay ñổi thuật toán cấu trúc liệu biểu diễn liệu bên ngồi thiết bị ngoại vi mơi trường xã hội yêu cầu khách hàng Thiết kế hướng mơ-đun Phần mềm tập hợp gồm mơ-đun tương tác với Mơ-đun hóa đóng vai trị quan trọng để có phần mềm chất lượng với chi phí thấp Mục đích thiết kế hệ thống xác định mơ-đun xác định tương tác mơ-đun Các tiêu chuẩn phương pháp thiết kế Các tiêu chuẩn ñể ñánh giá phương pháp thiết kế hướng mơ-đun tính phân rã (modular decomposability) tính tổng hợp (modular composability) tính dễ hiểu (modular understandability) tính liên tục (modular continuity) tính bảo vệ (modular protection) 10 Các tiêu chuẩn phương pháp thiết kế tính phân rã (modular decomposability) phân rã vấn ñề thành vấn đề nhỏ giải vấn ñề cách ñộc lập phương pháp thiết kế từ xuống (todown design) thỏa mãn tiêu chuẩn 11 Các tiêu chuẩn phương pháp thiết kế tính tổng hợp (modular composability) mơ-đun dễ dàng ñược kết hợp với ñể tạo nên hệ thống có mối quan hệ chặt chẽ với tính tái sử dụng tính tổng hợp xung đột với tính phân rã • phân rã thành mơ-đun chun biệt thay mơ-đun tổng qt 12 Các tiêu chuẩn phương pháp thiết kế tính dễ hiểu (modular understandability) thiết kế mơ-đun cách dễ hiểu tính chất mơ-đun • mơ-đun hiểu ? • tên sử dụng có ý nghĩa ? • cso sử dụng thuật tốn phức tạp ? Ví dụ sử dụng “goto” chương trình vài nghìn dịng lệnh, khơng sử dụng hàm/thủ tục 13 Các tiêu chuẩn phương pháp thiết kế tính liên tục (modular continuity) thay ñổi ñặc tả yêu cầu dẫn ñến thay ñổi (hoặc số ít) mơ-đun Ví dụ ☺khơng sử dụng số chuỗi ký tự chương trình, ñược sử dụng ñã ñịnh nghĩa sử dụng mảng 14 Các tiêu chuẩn phương pháp thiết kế tính bảo vệ (modular protection) kiến trúc đươc thiết kế cho ñiều kiện bất thường xảy ra, (hoặc số ít) mơ-đun bị ảnh hưởng 15 Thiết kế kiến trúc Kiến trúc = tập hợp thành phần/mơ-đun quan hệ chúng thành phần/mơ-đun • hàm / nhóm hàm / lớp quan hệ • sử dụng / gọi / thừa kế 16 Chất lượng kiến trúc mơ-đun có tính kết cố cao (high cohesion) mơ-đun đơn vị lơ-gíc tồn mơ-đun ñóng góp thực mục tiêu liên kết lỏng lẽo (low coupling) mơđun ràng buộc, phụ thuộc lẫn dễ hiểu ñịnh nghĩa rỏ ràng mơ-đun quan hệ chúng 17 Các loại kiến trúc Ba loại mơ hình kiến trúc thường sử dụng chia liệu: mơ hình “Repository” chia dịch vụ, servers: mơ hình “ClientServer” mơ hình lớp (layered model) 18 Mơ hình “Repository” Ngun tắc liệu chia ñược tập trung CSDL hệ thống ñều truy cập vào CSDL chung Khi lượng liệu lớn cần chia hệ thống mơ hình “Repository” thường sử dụng 19 Mơ hình “Repository” Ví dụ kiến trúc cơng cụ CASE 20 10 Mơ hình “Repository” Ưu diểm đơn giản hiệu chia lượng liệu lớn ñộc lập hệ thống Hạn chế hệ thống phải thống mơ hình liệu “repository” khó khăn phân tán liệu 21 Mơ hình “Client-Server” Ngun tắc mơ hình phân tán: liệu xử lý ñược phân tán nhiều thành phần khác Hệ thống bao gồm servers cung cấp dịch vụ • có nhiều servers clients yêu cầu dịch vụ phương thức trao đổi • mạng hay máy tính 22 11 Mơ hình “Client-Server” Ví dụ 23 Mơ hình “Client-Server” Ưu ñiểm sử dụng hiệu mạng dễ dàng thêm server nâng cấp server phân tán liệu dễ dàng Hạn chế hệ thống quan lý liệu riêng • dẫn đến dư thừa khơng có kiến trúc tập trung ghi nhận dich vụ • khó khăn để xác định liệu hay dịch vụ sử dụng 24 12 Mô hình lớp Nguyên tắc tổ chức hệ thống thành tập hợp lớp lớp cung cấp tập hợp dịch vụ sử dụng để mơ tả quan hệ hệ thống giao diện lớp thay ñổi, lớp kế cận bị ảnh hưởng hỗ trợ mơ hình phát triển tăng trưởng 25 Mơ hình lớp Ví dụ: hệ thống quản lý phiên 26 13 ... chỉnh sửa: 3% Tốt: 2% Khủng hoảng phần mềm 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... 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? ?? 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...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

Ngày đăng: 03/12/2015, 16:21

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w