ĐỒ ÁN TIN HỌC (SOFTWARE PROJECT)
IT3124- ĐỒ ÁN TIN HỌC (SOFTWARE PROJECT) LỚP KSCLC – K56, NĂM HỌC 2013-2014 Giảng viên: PGS TS.Huỳnh Quyết Thắng BM Công nghệ phần mềm Viện CNTT-TT, ĐHBK HN Chương I - TỔNG QUAN VỀ XÂY DỰNG PHẦN MỀM 1.1 Khái niệm định nghĩa 1.2 Quy trình thiết kế xây dựng chương trình phần mềm: mô hình, nhiệm vụ 1.3 Các kỹ thuật tiêu biểu thiết kế xây dựng chương trình phần mềm 1.4 Các thuộc tính chất lượng thiết kế xây dựng chương trình phần mềm KHÁI NIỆM VỀ PHẦN MỀM Các phần mềm ược viết để thể thuật toán nhằm giải toán, đáp ứng yêu cầu chức hiệu cần thiết Các cấu trúc liệu phù hợp lựa chọn cho chương trình thao tác hiệu Các tài liệu mô tả toàn toán, thuật toán, chương trình cách sử dụng Kỹ (skills) tác giả thể Phần mềm thể khía cạnh phương pháp xử lý thông tin toàn phương pháp ĐẶC TÍNH CỦA PHẦN MỀM Phần mềm phát triển (development), không chế tạo (manufacture) theo nghĩa cổ điển Phần mềm không “tự hỏng" thoái hoá theo thời gian không thích nghi với nghiệp vụ công nghệ thường xuyên thay đổi Phần lớn phần mềm xây dựng theo yêu cầu khách hàng, có nguy không hiểu khách hàng người phát triển Sự phức tạp tính thay đổi chất phần mềm Ngày phần mềm phát triển theo nhóm PHÂN BIỆT PHẦN CỨNG VÀ PHẦN MỀM PHẦN CỨNG 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 PHẦN MỀM Trừu tượng Vô hình Sản xuất người Định tính Không hao mòn PHẦN MỀM ỨNG DỤNG Có nhiều phần mềm máy tính viết để giúp giải công việc hàng ngày hoạt động nghiệp vụ soạn thảo văn bản, quản lý học sinh, quản lý kết học, lập thời khoá biểu, quản lý chi tiêu cá nhân Những phần mềm gọi phần mềm ứng dụng Phần mềm đặt hàng, Có phần mềm ứng dụng viết theo đơn đặt hàng riêng có tính đặc thù cá nhân hay tổ chức, Người phát triển phần mềm phải hỗ trợ trực tiếp trình làm phần mềm vận hành sau Phần mềm đóng gói, Có phần mềm thiết kế dự yêu cầu chung hàng ngày nhiều người người hay tổ chức cụ thể Nhà sản xuất bán để người dùng tự cài đặt, bảo trì trực tiếp tới ngừơi MỘT SỐ LOẠI PHẦN MỀM ỨNG DỤNG Cách phân chia giải thích khái niệm loại có giao Phần mềm thời gian thực (Real-time SW) Phần mềm nghiệp vụ (Business SW) Phần mềm tính toán KH&KT (Eng.&Scie SW) Phần mềm nhúng (Embedded SW) Phần mềm Web (Web-based SW) Phần mềm trí tuệ nhân tạo (AI SW) Tiện ích (Utility) Phần mềm phát triển (Development SW) TIỆN ÍCH Tiện ích loại phần mềm ứng dụng không hướng vào hoạt động nghiệp vụ mà hướng vào cải thiện hiệu làm việc người máy tính Ví dụ: soạn thảo định dạng text tuý, kiểm tra định dạng đĩa, chép liệu, quét virus, đọc nội dung file, cải thiện giao diện (nhu Norton Commander trước đây) Thông thường hệ điều hành cung cấp số tiện ích PHẦN MỀM PHÁT TRIỂN Đối với người làm tin học lĩnh vực phát triển phần mềm phần mềm ứng dụng sản phẩm mục tiêu cuối họ Để hỗ trợ cho việc làm sản phẩm phần mềm, người ta lại dùng phần mềm khác gọi phần mềm công cụ Điều giống để chế tạo động ô tô ta dùng máy công cụ Các phần mềm dịch tự động thuật toán viết hệ thống quy ước thành chương trình mã máy mà máy tính thi hành được, phần mềm hỗ trợ tổ chức liệu, phần mềm phát lỗi lập trình sửa lỗi (debuger) thuộc phần mềm công cụ Do phần mềm công cụ dùng với mục đích phát triển phần mềm nên ta gọi phần mềm công cụ phần mềm phát triển PHẦN MỀM HỆ THỐNG Có chương trình phải thường trực phải cung cấp dịch vụ theo yêu cầu chương trình khác mà trước yêu cầu xuất Các chương trình trở thành môi truờng làm việc cho phần mềm khác Những phần mềm gọi chung phần mềm hệ thống Phần mềm hệ thống quan trọng hệ điều hành (operating system) Hệ điều hành có chức điều hành toàn hoạt động máy tính suốt trình làm việc Hệ điều hành phần mềm hệ thống Còn có nhiều phần mềm thường trực cung cấp môi trường làm việc cho phần mềm khác, ví dụ phần mềm gõ bàn phím theo kiểu tiếng Việt Một cài đặt ta gõ tiếng Việt từ nhiều phần mềm khác 10 Mô hình xoắn ốc (Spiral model) Xác định mục tiêu, phương án ràng buộc Đánh giá phương án Chu trình Thiết kế tạo lập nguyên mẫu Thử nghiệm nguyên mẫu 30 30 Mô hình xoắn ốc (Spiral model) Được đề nghị Berry Boehm, 1988 Mỗi vòng lặp biểu diễn gia đoạn chu trình Mỗi chu kỳ có tầng, tầng ¼ cung Ưu điểm: • • • Tạo mẫu sớm Cho phép người dùng tham gia vào giai đoạn Ưu tiên thực trước chức quan trọng Nhược điểm: • • Đánh giá rũi ro tốn nhiều chi phí Phức tạp, khó quản lý, khó thuyết phục khách hàng Sử dụng khi: • • Những dự án có độ rũi ro cao, dự án cần nhiều thời gian Kết hợp lặp mô hình tạo mẫu mô hình thác nước 31 Mô hình chữ V (V-model) Tinh thần chủ đạo Vmodel hoạt động kiểm thử phải tiến hành song song (theo khả có thể) từ đầu chu trình với hoạt động phát triển 32 Mô hình tiến hóa (Evolutionary) 33 Phát triển dựa thành phần Định nghĩa mục tiêu Lựa chọn thành phần phù hợp Thương lượng Phân loại thành phần Đối sánh Giảm 70% thời gian, 84% chi phí 34 RUP/UML Rational Unified Process Kỹ thuật hệ thứ Bao gồm giai đoạn đan xen nhiều dòng hoạt động • Phân tích yêu cầu • Mô hình hóa nghiệp vụ • Thiết kế • Cài đặt, vận hành, triển khai Mỗi giai đoạn hình thành từ bước lặp (iteration) 35 36 37 Các bước lặp (iteration) Khởi tạo (inception) • • • • Xác định phạm vi dự án Chi phí, thời gian Rũi ro, môi trường Thay đổi bổ sung • • Tinh chế kiến trúc, yêu cầu Đánh giá độ rũi ro, thành phần sử dụng • • • Đánh giá tài nguyên, kiểm soát thực tối ưu hóa Hoàn thành sản phẩm Đánh giá sản phẩm so với yêu cầu • • • Cài đặt; kiểm thử Tiếp nhận ý kiến Bảo trì Tinh chế (elaboration) Xây dựng (construction) Chuyển giao (transition) 38 Phương pháp phát triển phần mềm linh hoạt Agile software development chủ yếu tập trung: • Thích ứng thay dự đoán • Hướng đến người thay quy trình ASD đề cao tính chủ động sáng tạo trao đổi thông tin thành viên 39 Chương I - TỔNG QUAN VỀ XÂY DỰNG PHẦN MỀM 1.1 Khái niệm định nghĩa 1.2 Quy trình thiết kế xây dựng chương trình phần mềm: mô hình, nhiệm vụ 1.3 Các kỹ thuật tiêu biểu thiết kế xây dựng chương trình phần mềm 1.4 Các thuộc tính chất lượng thiết kế xây dựng chương trình phần mềm 40 Các kỹ thuật tiêu biểu TK XD phần mềm Các chiến lược chung/General Strategies: Chia để trị / divide-and-conquer Kỹ thuật tinh chỉnh / stepwise refinement Thiết kế Top-down Thiết kế bottom-up Kỹ thuật trừu tượng liệu/data abstraction che dấu thông tin/information hiding Kỹ thuật lặp tăng trưởng dần (iterative and incremental approach) 41 Các kỹ thuật tiêu biểu TK XD phần mềm Các phương pháp: Function-oriented (structured) Design Object-oriented Design Data-structure Centered Design Component-based Design (CBD) 42 Chương I - TỔNG QUAN VỀ XÂY DỰNG PHẦN MỀM 1.1 Khái niệm định nghĩa 1.2 Quy trình thiết kế xây dựng chương trình phần mềm: mô hình, nhiệm vụ 1.3 Các kỹ thuật tiêu biểu thiết kế xây dựng chương trình phần mềm 1.4 Các thuộc tính chất lượng thiết kế xây dựng chương trình phần mềm 43 ĐẶC TÍNH CHẤT LƯỢNG PHẦN MỀM THEO ISO/IEC 9126 Chức Functionality Phù hợp,Chính xác, Liên tác,Tuân thủ chuẩn, An toàn (Suitability, Accuracy, Interoperability, Compliance, Security) Tin cậy Reablility It trục trặc, Kháng lỗi, Khả khôi phục được: (Maturity, Fault Tolerance, Recoverability) Dễ dùng Usability Dễ hiểu, Dễ học, Dễ thao tác: (Understandability, Learnability, Operability ) Hiệu Efficiency Đáp ứng thời gian, Đáp ứng tài nguyên: (Time Behavior, Resource Behavior ) Bảo trì Maintainability Phân tích được, Thay đổi được, Kiểm thử được, Ổn đinh (Analysability, Changeability, Stability, Testabilty) Khả chuyển Portability Thích nghi được, Cài đặt được, Khớp , Thay (Adaptability, Installability, Conformance, Replaceablity ) 44