Bài giảng Công nghệ phần mềm - Huỳnh Xuân Hiệp - Bài 1: Phạm vi của công nghệ phần mềm
? Thuật ngữ công nghệ phần mềm (software engineering-SE) đ-ợc đề xuất
bởi một nhóm nghiên cứu của NATO vào năm 1967
? Hội nghị về SE đ-ợc tổ chức tại Garmisch-Đức năm 1968 nhằm giải quyết
vấn đề khủng hoảng phần mềm
? Cuộc khủng hoảng vẫn còn kéo dài đến nay vì hai lý do:
? tiến trình sản xuất phần mềm có những thuộc tính và vấn đề riêng
? sự trì trệ của phần mềm (software depression) với thời gian kéo dài
và những dự đoán nghèo nàn
? Sự phát triển của phầncứng và hệ điều hành
? hệ điều hành đa nhiệm (1960s)
? bộ nhớ ảo (1970s)
? đa xử lý (multiprocessor)
? hệ điều hành phân tán (mạng),.
? Vấn đề bảo trì phần mềm
Huỳnh Xuân Hiệp - CNPM 1 KHOA CÔNG NGHệ THÔNG TIN Bộ môn Hệ thống thông tin & Toán ứng dụng bμi giảng công nghệ phần mềm (COURSE OF SOFTWARE ENGIINEERIING) Th.s Huỳnh Xuân Hiệp Điện thoại: 84.71.831301 E-mail: hxhiep@ctu.edu.vn Huỳnh Xuân Hiệp - CNPM 2 TàI LIệU THAM KHảO 1. [Schach1999] Stephen R. Schach, Classical and object-oriented software engineering, McGRAW-HILL Inc, 1999,1996. 2. [Quang2000] Tr−ơng Minh Nhật Quang, Bμi giảng Công nghệ phần mềm, Đại Học Cần Thơ, 2000. 3. [Tuyền2000] Tr−ơng Thị Thanh Tuyền, Bμi giảng Công nghệ phần mềm, Đại Học Cần Thơ, 2000. 4. [Pressman1997] Roger S.Pressman, Software engineering, McGRAW- HILL Inc, 1997. (Sách dịch – Ngô Trung Việt) Huỳnh Xuân Hiệp - CNPM 3 nội dung môn học Phần 1 Giới thiệu về chu trình sống của phần mềm 1 Phạm vi của công nghệ phần mềm 2 Tiến trình phần mềm 3 Các mô hình chu trình sống của phần mềm 4 Nhóm làm việc và các công cụ nghề nghiệp 5 Kiểm thử 6 Giới thiệu về đối t−ợng 7 Một số vấn đề : sử dụng lại, dễ di chuyển và vận hành t−ơng tác 8 Hoạch định và −ớc l−ợng Phần 2 Các giai đoạn trong chu trình sống của phần mềm 9 Phân tích yêu cầu 10 Đặc tả 11 Thiết kế 12 Phân tích h−ớng đối t−ợng 13 Cài đặt 14 Cài đặt và tích hợp 15 Bảo trì Huỳnh Xuân Hiệp - CNPM 4 P h ầ n 1 giới thiệu về chu trình sống của phần mềm (IINTRODUCTIION TO THE SOFTWARE LIIFE CYCLE) Huỳnh Xuân Hiệp - CNPM 5 1 phạm vi của công nghệ phần mềm(SCOPE OF SOFTWARE ENGINEERING) Nội dung: Lịch sử Kinh tế Bảo trì Đặc tả và thiết kế Đội ngũ lập trình Mô hình h−ớng đối t−ợng Thuật ngữ Huỳnh Xuân Hiệp - CNPM 6 1.1 Lịch sử (historical aspects) Thuật ngữ công nghệ phần mềm (software engineering-SE) đ−ợc đề xuất bởi một nhóm nghiên cứu của NATO vào năm 1967 Hội nghị về SE đ−ợc tổ chức tại Garmisch-Đức năm 1968 nhằm giải quyết vấn đề khủng hoảng phần mềm Cuộc khủng hoảng vẫn còn kéo dài đến nay vì hai lý do: tiến trình sản xuất phần mềm có những thuộc tính và vấn đề riêng sự trì trệ của phần mềm (software depression) với thời gian kéo dài và những dự đoán nghèo nàn Sự phát triển của phần cứng và hệ điều hành hệ điều hành đa nhiệm (1960s) bộ nhớ ảo (1970s) đa xử lý (multiprocessor) hệ điều hành phân tán (mạng),... Vấn đề bảo trì phần mềm Huỳnh Xuân Hiệp - CNPM 7 1.2 Kinh tế (economic aspects) Sự lựa chọn kỹ thuật thực hiện nhanh hơn để giảm giá thành Sự ảnh h−ởng của kỹ thuật mới lên công ty phần mềm khó bảo trì thời gian huấn luyện kinh nghiệm làm việc trên kỹ thuật mới ch−a nhiều Phụ thuộc vào sự lựa chọn của khách hàng Luật bản quyền Huỳnh Xuân Hiệp - CNPM 8 1.3 Bảo trì (maintenance aspects) Chu trình sống của phần mềm yêu cầu đặc tả (phân tích) thiết kế cài đặt tích hợp bảo trì kết thúc hoạt động Các dự án khác nhau từ 1976 đến 1981 132 dự án gần đây nhất của Hewlett-Packard Giai đoạn yêu cầu và đặc tả 21% 18% Giai đoạn thiết kế 18 19 Giai đoạn cài đặt 36 34 Giai đoạn tích hợp 24 29 Hình 1.2 Một số so sánh trên các dự án Bảo trì 67% Yêu cầu 2% Đặc tả (Phân tích) 5% Thiết kế 6% Viết mã lệnh cho mô-đun 2% Kiểm thử mô-đun 7% Tích hợp 8% Hình 1.1 Giá thành của các giai đoạn trong chu trình sống của phần mềm Huỳnh Xuân Hiệp - CNPM 9 1.4 Đặc tả và thiết kế (specification and design aspects) Sai sót tại các giai đoạn tr−ớc sẽ ảnh h−ởng đến các giai đoạn sau, tạo ra các lỗi. Công việc sửa chữa các lỗi càng sớm càng tốt là rất quan trọng 400 368 350 300 250 200 200 các dự án từ 1974 đến 1980 150 IBM AS/400 [Kan và al., 1994] 100 52 50 30 4 10 G i á g ầ n đ ú n g ( x ấ p x ỉ ) đ ể t ì m k i ế m v à c h ỉ n h s ử a m ộ t l ỗ i 1 3 Yêu cầu Thiết kế Tích hợp Đặc tả Cài đặt Bảo trì Hình 1.4 Giá phải trả để điều chỉnh lỗi Huỳnh Xuân Hiệp - CNPM 10 1.5 Đội ngũ lập trình (team programming aspects) Hình thành từng nhóm làm việc chuyên biệt trong từng lĩnh vực. Một số vấn đề nảy sinh nh−: cách chia xẻ các phần công việc mối quan hệ, sự giao tiếp giữa các thành viên với nhau Kỹ thuật tổ chức và quản lý đội ngũ phát triển phần mềm lập trình viên đặc tả viên thiết kế viên,... Sự ràng buộc lẫn nhau giữa các thành viên cùng nhóm, khác nhóm,... Cách đánh giá thời gian làm việc Cách đánh giá hiệu quả công việc Cách đánh giá về kinh nghiệm thực hiện công việc Huỳnh Xuân Hiệp - CNPM 11 1.6 Mô hình h−ớng đối t−ợng (the object-oriented paradigm) Dữ liệu và tác động có vai trò quan trọng nh− nhau. Một số tên gọi khác: thiết kế h−ớng trách nhiệm (responsibility-driven design)[Wirfs- Brock, Wilkerson và Wiener, 1990] thiết kế theo hợp đồng [Meyer, 1992a] (a) (b) Hình 1.4 So sánh hai ph−ơng pháp cài đặt (a) cấu trúc và (b) h−ớng đối t−ợng tài khoản tiền gửi rút tiền gửi tiền xác định tồn khoản tài khoản tiền gửi rút tiền gửi tiền xác định tồn khoản thông báo thông báo thông báo Huỳnh Xuân Hiệp - CNPM 12 H−ớng cấu trúc H−ớng đối t−ợng 1. Yêu cầu 2. Đặc tả (phân tích) 3. Thiết kế 4. Cài đặt 5. Tích hợp 6. Bảo trì 7. Kết thúc hoạt động 1. Yêu cầu 2. (*) Đặc tả (phân tích) h−ớng đối t−ợng 3. (*)Thiết kế h−ớng đối t−ợng 4. (*)Lập trình h−ớng đối t−ợng 5. Tích hợp 6. Bảo trì 7. Kết thúc hoạt động Hình 1.5 So sánh chu trình sống giữa h−ớng cấu trúc và h−ớng đối t−ợng H−ớng cấu trúc H−ớng đối t−ợng 2. Đặc tả (phân tích) • xác định sản phẩm phải làm gì 3. Thiết kế • thiết kế kiến trúc (tạo các mô- đun ) • thiết kế chi tiết 4. Cài đặt • cài đặt trên ngôn ngữ lập trình thích hợp 2. (*) Đặc tả (phân tích) h−ớng đối t−ợng • xác định sản phẩm phải làm gì • tạo các đối t−ợng 3. (*)Thiết kế h−ớng đối t−ợng • thiết kế chi tiết 4. (*)Lập trình h−ớng đối t−ợng • cài đặt trên ngôn ngữ lập trình h−ớng đối t−ợng thích hợp Hình 1.6 Sự khác nhau giữa h−ớng cấu trúc và h−ớng đối t−ợng Huỳnh Xuân Hiệp - CNPM 13 1.7 Thuật ngữ (terminology) Phần mềm (software) mã lệnh d−ới dạng máy có thể đọc đ−ợc các dạng tài liệu đặc tả, thiết kế, luật và sổ sách về chi phí kế hoạch quản lý dự án phần mềm và các tài liệu quản lý khác các dạng tài liệu h−ớng dẫn sử dụng Ch−ơng trình (program), là một đoạn mã lệnh có thể tự thực thi đ−ợc Hệ thống (system), là tập hợp các ch−ơng trình liên quan với nhau Sản phẩm (product) một mẩu bình th−ờng của phần mềm kết quả đạt đ−ợc sau một tiến trình (process) phát triển phần mềm Sản xuất phần mềm (software production) bao gồm hai giai đoạn: phát triển phần mềm (software development) bảo trì (maintenance) Huỳnh Xuân Hiệp - CNPM 14 Tập hợp các kỹ thuật (methodology, paradigm) Lỗi (error) hay có lỗi (bug) Thuộc tính (attribute), là thành phần dữ liệu của một đối t−ợng. Còn gọi là: trạng thái biến (state variable) trong ngữ cảnh h−ớng đối t−ợng thể hiện biến (instance variable,field) trong Java tr−ờng (field,member) trong C++ Ph−ơng thức (method). Còn gọi là: hàm thành viên (member function) trong C++ tr−ờng (field) trong Java Khi một ph−ơng thức bên trong một đối t−ợng đ−ợc kích hoạt, ta gọi là gửi một thông báo (sending a message) đến đối t−ợng
File đính kèm:
- Bài giảng Công nghệ phần mềm - Huỳnh Xuân Hiệp - Bài 1 Phạm vi của công nghệ phần mềm.pdf