Bài 1 - Giới thiệu chung về công nghệ phần mềm. Bài giảng khái quát chung về bộ môn công nghệ phần mềm, trong đó bao gồm các nội dung như: Định nghĩa phần mềm, phân loại phần mềm, công nghệ phần mềm, các giai đoạn phát triển phần mềm, mô hình thác nước, các mô hình tiến hóa.. Cuối bài giảng có câu hỏi ôn tập nhằm giúp cho sinh viên nắm vững được kiến thức hơn. Mời các bạn cùng tham khảo.
Giới thiệu chung Công nghệ phần mềm BM CNPM – Khoa CNTT – HVKTQS 10/2012 Tài liệu tham khảo môn học R Pressman, Kỹ nghệ phần mềm Tập 1, 2, NXB Giáo dục, Hà Nội, 1997 (Người dịch: Ngô Trung Việt) R Pressman, Software Engineering: A Practioner’s Approach 5th Ed., McGraw-Hill, 2001 I Sommerville, Software Engineering 5th Ed., Addison-Wesley, 1995 Pankaj Jalote, An Integrated Approach to Software Engineering, Third Edition, Springer Wendy Boggs, Michael Boggs Mastering UML with Rational Rose 2002 Copyright © 2002 SYBEX Inc Đồn Văn Ban Phân tích, Thiết kế Lập trình Hướng đối tượng 1997 Nxb Thống kê Việt nam Giới thiệu chung Định nghĩa phần mềm phân loại phần mềm Khái niệm Công nghệ phần mềm Lịch sử tiến triển Công nghệ phần mềm Các giai đoạn sản xuất phần mềm thông thường bao gồm: Phân tích (yêu cầu) Thiết kế (xác định chức năng, development) Sửa chữa Chuyển giao Quá trình phần mềm (software process) Quá trình phát triển phần mềm: water fall, unified, agile CASE tools : Khái niệm CASE Tools Phân loại CASE Tools Định nghĩa phần mềm Phần mềm máy tính sản phẩm kỹ sư phần mềm thiết kế xây dựng, bao gồm yếu tố sau: (1) chương trình máy tính (các tập lệnh) cung cấp chức mong muốn cụ thể đó, (2) cấu trúc liệu trợ giúp CT thao tác với thông tin, (3) tài liệu mô tả hoạt động sử dụng CT Định nghĩa phần mềm Phần mềm đối tượng logic, không giống phần cứng Việc phát triển phần mềm không theo cách thức truyền thống sản phẩm Phần mềm không bị hỏng hóc theo thời gian “Custom-built” Phân loại phần mềm Nhóm chương trình dịch: ngơn ngữ có chương trình dịch riêng Nhóm chương trình hệ thống (bao gồm phần mềm hđh): Gồm có chương trình soạn thảo văn bản, chương trình đồ hoạ, hệ điều hành, … Nhóm tiện ích trị chơi: chương trình xử lí bảng tính điện tử, chương trình tìm diệt virus, tất trị chơi Nhóm hệ quản trị CSDL Phân loại phần mềm Nhóm chương trình ứng dụng có tính hệ thống: Nhóm chương trình xử lí liệu đa năng: Chương trình hệ chun gia, hệ mơ phỏng, hệ tự động thiết kế, dạy học tự học Chương trình xử lí nhận dạng, phân tích, tổng hợp tiếng nói, hình ảnh Tất chương trình điều khiển qui trình cơng nghiệp Nhóm phần mềm thời gian thực Nhóm phần mềm nhúng Nhóm phần mềm thông minh Công nghệ phần mềm Công nghệ phần mềm lĩnh vực nghiên cứu tin học nhằm đưa nguyên lý, phương pháp, công cụ, phương tiện giúp cho việc thiết kế cài đặt sản phẩm phần mềm đạt yêu cầu sau cách tốt nhất: Phải có tính đắn khoa học Dễ tiếp cận cải tiến Phổ dụng Độc lập với thiết bị Công nghệ phần mềm Công nghệ phần mềm thiết lập sử dụng nguyên lý kỹ thuật đắn để xây dựng phần mềm cách kinh tế, tin cậy, làm việc máy tính Mơ hình RUP Là mơ hình dành riêng cho hướng ĐT Có đặc trưng: Lấy kiến trúc làm trung tâm Điều khiển ca sử dụng Lặp lại tăng dần Tương đồng với mô hình xoắn ốc, nhiên bước lặp RUP, nội dung hoạt động có nội dung riêng gắn với ngơn ngữ mơ hình hóa thống UML Giai đoạn: Inception phase (giai đoạn khởi động) Elaboration phase (giai đoạn soạn thảo) Construction phase (giai đoạn xây dựng) Transition phase (giai đoạn chuyển giao) Production phase (software monitoring and support) Mơ hình UP (RUP) UP Work Products • Inception phase – Vision document – Initial use-case model – Inital project glossary – Inital business case – Inital risk assessment UP products (tiếp) • Elaboration phase – Use-case model – Functional and nonfunctional requirements – Analysis model – Software architecture description – Inital risk assessment – Project plan (phases and iterations) – Business model – Prototypes description – Executable architectural prototype – Preliminary design model – Revise risk list – Project plan (iteration plan, workflow, milestones) – Preliminary user manual UP products (tiếp) • Construction phase – Design model – Software components – Integrated software increment – Test plan – Test cases – Support documentation (user, installation, increment) • Transition phase – Delivered software increment – Beta test reports increment – User feedback Mơ hình phát triển nhanh RAD Là phương pháp luận gộp hoạt động phân tích, thiết kế, xây dựng vào loạt vòng lặp phát triển ngắn Hướng đến nhu cầu đưa người dụng tham gia vào PTTK cách sử dụng CASE Đáp ứng nhu cầu hiệu chi phí bảo trì thấp Thích hợp cho đội phát triển nhỏ Phát triển hệ thống hình thức hố Được mơ tả với bước: Tư tưởng biểu diễn đặc tả yêu cầu ký pháp toán học Áp dụng biến đổi khác để chuyển từ đặc tả hình thức -> chương trình Khi chuyển đổi biểu diễn đặc tả chi tiết dần ln đảm bảo tính đắn=> Chương trình triển khai đặc tả Ưu điểm: Xác định yêu cầu Đặc tả hình thức Biến đổi hình thức Kiểm thử tích hợp hệ thống Có thể áp dụng chứng minh tính đắn đặc tả Chứng minh chương trình đáp ứng yêu cầu đặc tả cho Chi phí đặc tả cao, chi phí sau lại nhỏ nhiều so với phương pháp khác Dễ theo dõi bước nhỏ trình chuyển đổi Nhược điểm: Việc đặc tả địi hỏi trình độ trừu tượng cao Việc chứng minh đắn khó khăn Phương pháp tương đối khó Mơ hình hướng thành phần Dựa kỹ thuật tái sử dụng cách có hệ thống, tích hợp từ nhiều thành phần tồn thành phần thương mại Các trạng thái quy trình bao gồm: Phân tích thành phần sẵn có Điều chỉnh yêu cầu Thiết kế hệ thống với kỹ thuật tái sử dụng Xây dựng tích hợp hệ thống Các mơ hình AGILE Các PP Agile phát triển vào năm 90s nhằm khắc phục trì trệ/khóa khăn việc tài liệu hóa q trình PT phần mềm Nguyên lý PP AGILE: Sự làm việc phần mềm thước đo tiến dự án Để dự án tiến triển, phần mềm nên phát triển chuyển giao nhanh chóng bước nhỏ Những thay đổi muộn u cầu ln hoan nghênh (mơ hình phát triển chia nhỏ giúp chấp nhận chúng) Giao tiếp trực tiếp ưa chuộng giao tiếp văn Thông tin phản hồi liên tục tham gia khách hàng cần thiết cho việc phát triển phần mềm chất lượng tốt Thiết kế đơn giản hoàn thiện dần theo thời gian cách tiếp cận tốt so với thiết kế tổng quát phức tạp từ đầu để xử lý tất tình xảy Ngày bàn giao sản phẩm định nhóm cá nhân tài có quyền (và khơng bị chi phối người khác) CASE tools Là phần mềm khác xây dựng sở mơ hình phương pháp cụ thể Cung cấp trợ giúp cho việc tự động hay bán tự động hóa hoạt động phát triển phần mềm Có mức: bàn thợ môi trường phát triển, tất gọi kỹ nghệ phần mềm có trợ giúp máy tính (CASE) Bàn thợ (workbench): Thơng tin chúng tạo dùng cho công cụ khác hay giai đoạn phát triển Môi trường (Environment): Hệ thống trợ giúp phát triển phần mềm Tại CASE quan trọng? CASE tools Các hệ thống CASE thường sử dụng để hỗ trợ hoạt động quy trình phát triển phần mềm Có hai loại CASE: Upper-CASE: cơng cụ để hỗ trợ hoạt động ban đầu đặc tả yêu cầu thiết kế Lower-CASE: công cụ để hỗ trợ hoạt động sau lập trình, gỡ lỗi kiểm thử Ngơn ngữ mơ hình hóa thống (UML – Unified Modeling Language) cung cấp ngôn ngữ chung cho tất giai đoạn phát triển phần mềm hướng đối tượng: Một số công cụ dựa ngôn ngữ ngày Rational Rose, PowerDesigner Một môi trường CASE chuẩn bao gồm: Một kho chứa (repository) Công cụ đồ họa (Graphic drawing tools) Phần mềm soạn thảo văn (Text Definition software) Phần mềm giao diện kho chứa (Repository interface software) Phần mềm đánh giá (Evaluative software) Giao diện người sử dụng (Human Interface) Phân loại công cụ phát triển phần mềm Công cụ đơn: Bộ soạn thảo, Chương trình dịch Bàn thợ: Phân tích thiết kế (Bàn thợ đơn phương pháp, Bàn thợ đa phương pháp) Lập trình (Bàn thợ cho mục đích chung, Bàn thợ cho ngơn ngữ cụ thể) Kiểm thử Mơi trường phát triển: Mơi trường tích hợp, Mơi trường cho tiến trình Một số CASE Tool thường dùng Soạn thảo biểu đồ Cơng cụ phân tích mơ hình kiểm tra Ngôn ngữ truy vấn Công cụ tạo định nghĩa báo cáo Công cụ định nghĩa form Bộ dịch Công cụ tạo mã lệnh tự động Câu hỏi Tìm hiểu ảnh hưởng phần mềm lên xã hội kỷ nguyên thông tin Tài liệu tham khảo giảng R Pressman, Kỹ nghệ phần mềm Tập 1, 2, NXB Giáo dục, Hà Nội, 1997 (Người dịch: Ngô Trung Việt) R Pressman, Software Engineering: A Practioner’s Approach 5th Ed., McGraw-Hill, 2001 Chapters 1, 2, 10, 20, 31 I Sommerville, Software Engineering 5th Ed., Addison-Wesley, 1995 Chapters 1, 2, 3, 27, 28 Wendy Boggs, Michael Boggs Mastering UML with Rational Rose 2002 Copyright ©2002 SYBEX Inc ... Thống kê Việt nam Giới thiệu chung Định nghĩa phần mềm phân loại phần mềm Khái niệm Công nghệ phần mềm Lịch sử tiến triển Công nghệ phần mềm Các giai đoạn sản xuất phần mềm thông thường... nghiệp Nhóm phần mềm thời gian thực Nhóm phần mềm nhúng Nhóm phần mềm thông minh Công nghệ phần mềm Công nghệ phần mềm lĩnh vực nghiên cứu tin học nhằm đưa nguyên lý, phương pháp, công cụ, phương... nghĩa phần mềm Phần mềm đối tượng logic, không giống phần cứng Việc phát triển phần mềm không theo cách thức truyền thống sản phẩm Phần mềm không bị hỏng hóc theo thời gian “Custom-built”