Bài giảng Nhập môn Công nghệ phần mềm - Chương 1: Tổng quan về công nghệ phần mềm (Phần 1)
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn Công nghệ phần mềm - Chương 1: Tổng quan về công nghệ phần mềm (Phần 1)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_nhap_mon_cong_nghe_phan_mem_chuong_1_tong_quan_ve.ppt
Nội dung text: Bài giảng Nhập môn Công nghệ phần mềm - Chương 1: Tổng quan về công nghệ phần mềm (Phần 1)
- Chương 1 Tổng quan về công nghệ phần mềm
- Nội dung I. Các khái niệm II. Quy trình xây dựng phần mềm III.Nghề nghiệp kỹ sư phần mềm
- I. Các khái niệm 1. Khoa học, kỹ thuật, công nghệ 2. Phần mềm a. Phần mềm tốt b. Phần mềm đủ hay thiếu và nguyên nhân c. Tiến hóa của phần mềm d. Các loại phần mềm 3. Công nghệ phần mềm (SE)
- Các khái niệm Khoa học (science) Kỹ thuật (technology) Công nghệ (engineering) Phần mềm (software) Công nghệ phần mềm (software engineering)
- Phần mềm Software = Computer Program + associated documentation Loại sản phẩm phần mềm Generic Product: là sản phẩm đóng gói và bán rộng rãi trên thị trường. Bespoke Product: là sản phẩm được phát triển theo yêu cầu đặc thù của từng khách hàng.
- Đặc tính của sản phẩm phần mềm tốt Maintainability: phần mềm có thể thay đổi thuận tiện theo yêu cầu của người dùng Dependability: tính ổn định, bảo mật và an toàn của phần mềm. Không gây tổn hại về vật chất hay kinh tế cho hệ thống. Efficiency: Sử dụng hiệu quả tài nguyên của hệ thống cho công việc Usability: giao diện và phương thức phải phù hợp với người dùng đồng thời đáp ứng đúng yêu cầu của người dùng
- Phần mềm-đủ hay thiếu Phần mềm được viết ngay từ khi có những máy tính programable đầu tiên. Được quan tâm và phát triền từ rất sớm Có rất nhiều phần mềm đã được viết → Không thiếu phần mềm Thực tế việc sản xuất phần mềm không đáp ứng kịp yêu cầu của người sử dụng: Không đủ về số lượng Thiếu về chất lượng Không kịp về thời gian → Phần mềm không đáp ứng đủ cho người dùng
- Nguyên nhân khách quan Số lượng phần mềm phải được hiểu là số đầu/loại phần mềm được sử dụng cho từng mục tiêu ứng dụng. Nhu cầu sử dụng phần mềm là rất lớn Nhiều ngành nghề cần dùng phần mềm máy tính Mỗi ngành nghề cần nhiều loại phần mềm khác nhau Mội loại phần mềm cần nhiều cấp độ khác nhau theo trình độ người dùng
- Nguyên nhân khách quan Chất lượng phần mềm cũng chưa đáp ứng tốt hoàn toàn người sử dụng: Tính customize rất cao của sản phẩm phần mềm. Trình độ sử dụng khác nhau và điều kiện hạ tầng ứng dụng khác nhau Nhu cầu phần mềm thường rất cấp bách Tầm nhìn và chiến lược chưa đầu đủ của người sử dụng Không có kế hoạch lâu dài Phải thay đổi theo từng đối tượng người dùng
- Nguyên nhân chủ quan Tính chuyên nghiệp trong sản xuất phần mềm chưa cao: Các dữ liệu quan sát được (1979) Theo kiểm toán Mỹ 50% vượt ngân sách 60% trễ 40% không đúng yêu cầu trong đó 22% phải thiết kế lại toàn bộ và 29% thất bại hoàn toàn Theo thống kê của Tom de Marco (1979) 25% hệ phần mềm lớn thất bại
- Nguyên nhân chủ quan Theo thống kê của Copets Jones (1991) Trung bình các hệ thông tin quản lý trể 1 năm Vượt ngân sách 100%
- Nguyên nhân chủ quan Lý do của những hệ quả trên Phát triển phần mềm giống như một nghệ thuật, chưa được xem như một ngành khoa học Quy trình phát triển phần mềm chưa được thống nhất Phải viết lại phần mềm mỗi khi có sự thay đổi về ngôn ngữ, phần cứng hoặc hệ điều hành Chưa đạt được 1 chuẩn cho việc đo lường hiệu suất và sản phẩm
- Nguyên nhân chủ quan Độ phức tạp của phần mềm quá cao đối với 1 “kiến trúc sư” Kỹ thuật đặc tả để lại sự nhập nhằng trong các yêu cầu phần mềm Làm việc nhóm không đúng kỷ luật gây ra các lỗi → Cần phải có một/nhiều chuẩn quy trình trong sản xuất phần mềm để nâng cao tính chuyên nghiệp của nền sản xuất đặc biệt nầy: Cần công nghệ cho công nghiệp phần mềm
- Tiến hóa của phần mềm Phần mềm vốn dĩ là phức tạp. Yêu cầu sử dụng phần mềm không ngừng thay đổi Sự tiến bộ nhanh của hạ tầng – phần cứng →Sự tiến hóa phần mềm là tất yếu Xu hướng chung: Phần mềm ngày càng phức tạp Chi phí phần mềm ngày càng cao Phần mềm trở thành ngành công nghiệp khổng lồ Năng suất lập trình thấp, giá thành cao
- Tiến hóa của phần mềm Giai đoạn thứ nhất: (1955 - khoảng 1965-1970) Tính toán và quản lý rời rạc Đặc tả bằng ngôn ngữ thường Xử lý theo lô Môi trường lập trình có tính cá nhân Sản xuất đơn chiếc Ngôn ngữ: mã máy, đặc thù cho từng máy Lập trình: là một nghệ thuật theo bản năng, chưa có phương pháp
- Tiến hóa của phần mềm Giai đoạn 2: (từ khoảng 1970 - 1985) Hệ thống thời gian thực ‰Mạng cục bộ nối các CSDL Đặc tả chú trọng đến input/output và luồng chuyển dữ liệu Thiết kế chú trọng đến cấu hình hệ thống. Giải thuật và dữ liệu có cấu trúc Ngôn ngữ: có cấu trúc: Algo60, Fortran, COBOL Hệ điều hành DOS, UNIX
- Tiến hóa của phần mềm Giai đoạn 3: (Khoảng 1985 - 2000) ‰PC phát triển mạnh. Mạng diện rộng, Internet Đặc tả hướng đối tượng, các CASE phát triển ‰Thiết kế chú trọng đến tính mô-đun, hướng đối tượng, giao thức (protocol) và giao diện (interface) Ngôn ngữ: Ngôn ngữ bậc cao, hướng đối tượng Phát triển HT: có phương pháp, công cụ tự động
- Tiến hóa của phần mềm Thời gian thực, PC, nối mạng Tính toán quản lý đa nhiệm, nối diện rộng, Yêu cầu nhỏ mạng cục bộ, Internet CSDL Đặc tả Ngôn ngữ Đầu vào + đầu ra; dòng Hướng đối tượng, thường chuyển dữ liệu vòng đời PM, CASE Thiết kế Giải thuật Cấu hình hệ thống, cấu Tinh môđun, đối trúc GT và DL tượng, giao thức, giao diện Cài đặt Ct đơn giản; HĐH, hệ thống CSDL Dùng lại PM đóng xữ lý Batch thường trực gói, ngôn ngữ hướng đối tượng 55 60 65 70 75 80 85 90 95 2000
- Các loại phần mềm Phần mềm hệ thống Các chương trình viết để phục vụ cho chương trình khác Xử lý thông tin phức tạp nhưng xác định (như hệ điều hành, trình biên dịch ) Đặc trưng bởi tương tác chủ yếu với phần cứng máy tính Phục vụ nhiều người dùng. Cấu trúc dữ liệu phức tạp, nhiều giao diện ngoài Phần mềm ứng dụng
- Các ứng dụng Một ứng dụng (application) là một tập hợp các chương trình thực hiện tự động hóa một số các nhiệm vụ nghiệp vụ. Mọi ứng dụng đều có đặc điểm chung và một số đặc điểm riêng. Các đặc điểm chung thường là: Đặc tính (Characteristics) Tính hồi tiếp (Responsiveness) Kiểu của (loại) ứng dụng (Type)
- Đặc tính của ứng dụng Dữ liệu Đầu vào. Đầu ra. Lưu trữ và tìm kiếm Xử lý Ràng buộc Thứ tự trước, thứ tự sau, thời gian, cấu trúc, điểu khiển, suy diễn Giao diện Người sử dụng, thủ công, tự động
- Ràng buộc về thời gian Thời gian xử lý Thời gian phân chia cho một quá trình xử lý Thời gian yêu cầu với các quy trình xử lý bên ngoài Thời gian xử lý đồng bộ Thời gian trả lời cho quá trình xử lý với giao diện bên ngoài
- Ràng buộc về suy diễn Ràng buộc về suy diễn có thể xẩy ra với các ứng dụng Ràng buộc về suy diễn liên quan đến tri thức hệ thống và giới hạn trên loại tri thức nầy. Ràng buộc về suy diễn liên quan đến công cụ ngôn ngữ nào đã xây dựng nên hệ thống
- Khả năng hồi đáp Là thời gian sử dụng và đáp ứng yêu cầu từ người dùng của ứng dụng. Chia làm 3 loại: Xử lý theo lô (batch oriented) Xử lý trực tuyến (on-line) Xử lý thời gian thực (realtime)
- So sánh 3 mô hình xử lý Mục so sánh Theo lô Trực tuyến Thời gian thực Tổng số dữ liệu Lớn Nhỏ-lớn Trung bình Giám sát dữ liệu Không Có Có Tỷ lệ cập nhật dữ Cao Tháp-Cao Cao liệu lưu trữ Hỏi Theo lô Trực tuyến Trực tuyến Báo cáo Dài, hình thức Ngắn, không hình Ngắn, không hình thức thức Dự phòng/khôi Lưu file ra dĩa Sử dụng 1 trong Sử dụng 1 trong phục các cách sau: lưu các cách sau: lưu file ra dĩa, ghi file ra dĩa, ghi nhật ký giao dịch, nhật ký giao dịch, tạo bảng ghi trạng tạo bảng ghi trạng thái trước và sau, thái trước và sau, tạo file ảnh tạo file ảnh
- So sánh 3 mô hình xử lý Mục so sánh Theo lô Trực tuyến Thời gian thực Chi phí xây dựng Thấp Trung bình Cao Chi phí hoạt động Thấp Trung bình khá Cao Tận dụng Tài nguyên máy Thời gian Thời gian Độ phức tạp xây dựng Đơn giản Vừa Phức tạp Tốc độ xử lý các giao dịch Nhanh Chậm Trung bình Tốc độ xử lý 1 giao dịch Chậm Trung bình Nhanh Sử dụng hệ thống quản lý Có thể hay không Có khả năng Có CSDL và giao tiếp dữ liệu Đồng bộ hoạt động Chậm Trung bình nhanh
- Kiểu của ứng dụng Ứng dụng hướng giao dịch (Transaction Processing Systems-TPS) Hệ thông tin quản lý (Management Information System-MIS) Hệ hỗ trợ ra quyết định (Decision Supports System-DSS) Hệ thông tin thi hành (Executive Information system-EIS) Hệ hỗ trợ quyết định theo nhóm (Group DSS) Hệ chuyên gia (Expert System –ES) Các hệ thống nhúng (Embedded systems)
- Hệ TPS
- Cấu trúc TPS trực tuyến
- Cấu trúc TPS theo lô
- Hệ MIS
- Cấu trúc MIS
- Hệ DSS
- Cấu trúc DSS
- Cấu trúc ES
- Công nghệ phần mềm – định nghĩa Bauer [1969]: SE là việc thiết lập và sử dụng các nguyên lý công nghệ đúng đắn để thu được phần mềm 1 cách kinh tế vừa tin cậy vừa làm việc hiệu quả trên các máy thực. ‰Parnas [1987]: SE là việc xây dựng phần mềm nhiều phiên bản bởi nhiều người. Sommerville [1995]: SE là một nguyên lý kỹ nghệ liên quan đến tất cả các mặt (lý thuyết, phương pháp và công cụ) của sản phần mềm
- Công nghệ phần mềm – định nghĩa ‰IEEE [1993]: 1. Việc áp dụng phương pháp tiếp cận có hệ thống, bài bản và được lượng hóa trong phát triển, vận hành và bảo trì phần mềm; 2. Nghiên cứu các phương pháp tiếp cận được dùng trong (1) Pressman [1995]: SE là bộ môn tích hợp cả qui trình, các phương pháp, các công cụ để phát triển phần mềm máy tính
- Công nghệ phần mềm – định nghĩa ‰‰Là một quá trình kỹ nghệ gồm ba mặt: Thủ tục (procedures) Phương pháp (methods) Công cụ (tools) Nhằm tạo ra phần mềm hiệu quả,với các giới hạn cho trước
- Khái niệm Thủ tục Xác định trình tự thực hiện các công việc Xác định các tài liệu, sản phẩm cần bàn giao và cách thức thực hiện Định các mốc thời gian (millestones) và sản phẩm bàn giao
- Khái niệm Phương pháp 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ó các phương pháp riêng Phương pháp phân tích Phương pháp thiết kế Phương pháp lập trình Phương pháp kiểm thử
- Khái niệm Công cụ Cung cấp sự trợ giúp tự động / bán tự động cho từng phương pháp Computer Aided Software Engineering –CASE- các công cụ phần mềm được chuẩn hóa để trợ giúp các công đoạn khác nhau trong quá trình phát triển Compiler, debugger Hỗ trợ phân tích, thiết kế (Rwin,Modeler, Oracle Designer, Rational Rose, )
- Cụ thể Efficiency: Phần mềm được sản xuất trong thời gian và điều kiện vừa phải. Phần mềm vận hành đúng mức độ yêu cầu về công việc và thời gian. Reliablity: Phần mềm vận hành ổn định và tương tác được với các hệ thống ứng dụng Usability: Phần mềm có thể dùng được bởi người sử dụng và với môi trường mà người sử dụng đang có. Chú ý tới giao diện, điều kiện hệ thống,
- Cụ thể Modifiability: Phần mềm có thể được thay đổi dể dàng, nhanh chóng khi yêu cầu của người sử dụng thay đổi. Portability: Phần mềm có thể chuyển đổi dễ dàng sang các hệ thống khác mà không cần phải điều chỉnh lớn. Chỉ cần recompile nều cần thiết là tốt nhất. Testability: Phần mềm có thể được kiểm tra dễ dàng. Tốt nhất là được modul hóa.
- Cụ thể Reusability: Phần mềm hay một phần có thể được tái sử dụng cho các ứng dụng khác. Các modul có thiết kế tốt, độc lập và giao tiến đơn giản, cả về tình tương thích công nghệ phát triển Maintainability: thiết kế của phần mềm có thể được hiểu dễ dàng cũng như chuyển giao thuận tiện cho người khác trong quá trình điều chỉnh, nâng cấp hay thay đổi theo yêu cầu.
- Cụ thể Interoperability: Phần mềm vận hành ổn định và đúng như mong đợi. Trên hệ thống nhiều người dùng (multi users) phần mềm vẫn hoạt động được với các vận hành khác của hệ thống. Correctness: Phần mềm phải tính toán đúng và tạo ra kết quả đúng và đúng với mục tiêu ứng dụng của người dùng. Các yêu cầu khác: Đúng tiến độ. Sử dụng hợp lý nguồn nhân lực phát triển. Chi phí phát triển thấp nhất
- Lịch sử phát triển Đề xướng, hình thành (70s) Các phương pháp lập trình và cấu trúc dữ liệu Khái niệm về tính môđun Khái niệm thiết kế,lập trình top-down, chi tiết hóa từng bước (N. With) Lập trình có cấu trúc (Dijkstra) Phương pháp luận về qui trình thiết kế;phương pháp phân chia mô đun Trừu tượng hóa dữ liệu (Liskov
- Lịch sử phát triển Tăng trưởng (nửa đầu 80s) Xuất hiện các phương pháp phát triển hệ thống Công nghệ CSDL (mô hình quan hệ) Phân tích, thiết kế hướng cấu trúc Các bộ 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 (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
- Lịch sử phát triển Phát triển (từ giữa 80s) Hoàn thiện công nghệ cấu trúc, ra đời công nghệ đối tượng Nhiều mô hình hướng cấu trúc được chuẩn hóa CASE hoàn thiện, đạt mức tự động hóa cao Công nghệ hướng đối tượng bắt đầu phát triển: Quy trình RUP Ngôn ngữ mô hình hóa thống nhất(UML) Các công cụ phần mềm đầy đủ (ROSE, JBULDER, ) Sử dụng lại chiếm vị trí quan trọng trong phát triển
- Lịch sử phát triển Phát triển các mô hình quản lý Chuẩn quản lý được công nhận (CMM, SO9000-03) Nhiều mô hình tổ chức làm phần mềm được đề xuất Nhiều công cụ trợ giúp quản lý dự án hoàn thiện