Phần mềm gì? Phần mềm gì? Bởi: Phạm Thị Quỳnh Khái niệm Phần mềm chương trình máy tính tài liệu liên quan đến như: yêu cầu, mô hình thiết kế, tài liệu hướng dẫn sử dụng… Do đó, thấy đặc điểm phần mềm trừu tượng vô hình Các sản phẩm phần mềm chia thành loại: - Sản phẩm đại trà (Generic Product): phát triển để bán thị trường, đối tượng người sử dụng tương đối đa dạng phong phú Những sản phẩm phần mềm thuộc loại thường phần mềm dành cho máy PC - Sản phầm theo đơn đặt hàng (Bespoke Product Customised Product): phát triển cho khách hàng riêng lẻ theo yêu cầu Ví dụ: Những hệ thống phần mềm chuyên dụng, hỗ trợ nghiệp vụ cho doanh nghiệp riêng lẻ … Một phần mềm tạo cách phát triển chương trình mới, thay đổi điều chỉnh hệ thống phần mềm đại trà tái sử dụng lại phần mềm tồn Công nghệ phần mềm gì? Công nghệ phần mềm quy tắc công nghệ (engineering discipline) có liên quan đến tất khía cạnh trình sản xuất phần mềm Các kỹ sư phần mềm nên tuân theo phương pháp luận có hệ thống có tổ chức công việc họ Đồng thời, họ nên sử dụng công cụ kỹ thuật thích hợp với vấn đề cần giải quyết, ràng buộc tài nguyên sẵn có Sự khác biệt công nghệ phần mềm khoa học máy tính? Khoa học máy tính đề cấp tới lý thuyết vấn đề bản; công nghệ phần mềm đề cập tới hoạt động xây dựng đưa phần mềm hữu ích 1/7 Phần mềm gì? Khi phát triển phần mềm trở lên mạnh mẽ lý thuyết khoa học máy tính không đủ để đóng vai trò tảng hoàn thiện cho công nghệ phần mềm Sự khác biệt công nghệ phần mềm công nghệ hệ thống? Đặt vấn đề - Học viên nghe nhắc tới Công nghệ hệ thống hay chưa? - Hãy trình bày số vấn đề có liên quan đến Công nghệ hệ thống - Công nghệ phần mềm có phải Công nghệ hệ thống không? Công nghệ hệ thống (hay gọi kỹ nghệ hệ thống) liên quan tới tất khía cạnh trình phát triển hệ thống dựa máy tính bao gồm: phần cứng, phần mềm, công nghệ xử lý Công nghệ phần mềm phần quy trình này, có liên quan tới việc phát triển hạ tầng phần mềm (software infrastructure), điều khiển, ứng dụng sở liệu hệ thống Kỹ sư hệ thống phải thực việc đặc tả hệ thống, thiết kế kiến trúc hệ thống, tích hợp triển khai Quy trình phần mềm gì? Đặt vấn đề - Hãy cho biết để sản xuất phần mềm, người ta phải thực công việc nào? Quy trình phần mềm tập hợp hành động mà mục đích xây dựng phát triển phần mềm Những hành động thường thực quy trình phần mềm bao gồm - Đặc tả: đặc tả hệ thống phải làm ràng buộc trình xây dựng hệ thống - Phát triển: xây dựng hệ thống phần mềm - Kiểm thử: kiểm tra xem liệu phần mềm thoả mãn yêu cầu khách hàng - Mở rộng: điều chỉnh thay đổi phần mềm tương ứng với thay đổi yêu cầu Những loại hệ thống khác cần quy trình phát triển khác Ví dụ, hệ thống thời gian thực yêu cầu phải hoàn thành đặc tả hệ thống trước chuyển sang giai 2/7 Phần mềm gì? đoạn xây dựng Nhưng với hệ thống thương mại điện tử, vừa đặc tả vừa xây dựng chương trình cách đồng thời Tuy nhiên, không sử dụng quy trình phát triển hệ thống thích hợp làm giảm chất lượng hệ thống tăng chi phí xây dựng Mô hình quy trình phát triển phần mềm gì? Mô hình quy trình phát triển phần mềm thể đơn giản quy trình phần mềm, biểu diễn từ góc độ cụ thể Sau số ví dụ mô hình quy trình phát triển phần mềm: - Mô hình luồng công việc (workflow): mô tả chuỗi hành động cần phải thực - Mô hình luồng liệu (data-flow): mô tả luồng thông tin - Mô hình Vai trò/Hành động (Role/action): vai trò người liên quan quy trình phần mềm nhiệm vụ người Ngoài ra, có số mô hình quy trình chung đễ xuất như: - Mô hình thác nước (waterfall) - Mô hình phát triển lặp lại (Iterative development) - Mô hình công nghệ phần mềm dựa thành phần (Component-based software engineering) Các chi phí công nghệ phần mềm Đặt vấn đề - Để xây dựng hệ thống phần mềm phải đầu tư cho hạng mục nào? - Tất hệ thống phần mềm có hạng mục chi phí hay không? Tại sao? Để xây dựng hệ thống phần mềm, thường phải đầu tư khoản ngân sách lớn Theo thống kê cho thấy, chi phí cho việc xây dựng phần mềm chiếm phần đáng kể GNP tất nước phát triển Chi phí phần mềm thường chiếm phần lớn chi phí hệ thống máy tính Chi phí phần mềm máy PC thường lớn chi phí phần cứng Chi phí phần mềm dành cho 3/7 Phần mềm gì? việc bảo trì phần mềm thường lớn chi phí xây dựng phần mềm Đối với hệ thống hoạt động thời gian dài, chi phí bảo trì thường lớn gấp nhiều lần so với chi phí xây dựng Xấp xỉ 60% chi phí chi phí xây dựng 40% chi phí kiểm thử Đối với phần mềm làm theo yêu cầu khách hàng, chi phí mở rộng thường vượt chi phí xây dựng Chi phí biến đổi tuỳ thuộc vào loại hệ thống xây dựng yêu cầu đặc điểm hệ thống như: hiệu độ tin cậy hệ thống Việc phân bổ chi phí phụ thuộc vào mô hình phát triển hệ thống sử dụng Sau bảng so sánh chi phí mô hình phổ biến nhất, thường sử dụng: Mô hình thác nước: Chi phí pha đặc tả, thiết kế, cài đặt, tích hợp kiểm thử xác định cách riêng rẽ Mô hình phát triển lặp lại Không thể phân biệt rõ chi phí cho pha quy trình Chi phí đặc tả giảm đặc tả bậc cao Tại bước lặp, pha quy trình xây dựng hệ thống thực lại nhằm thực yêu cầu hệ thống khác bước lặp 4/7 Phần mềm gì? Sau thực hết bước lặp, phải có chi phí kiểm thử toàn hệ thống Mô hình công nghệ phần mềm hướng thành phần Chi phí phụ thuộc nhiều vào việc tích hợp kiểm thử hệ thống Ngoài chi phí xây dựng, phải để phần lớn chi phí phục vụ cho việc thay đổi phần mềm sau đưa vào sử dụng Chi phí cải tiến phần mềm thay đổi phụ thuộc vào loại phần mềm Các phương pháp công nghệ phần mềm gì? Phương pháp công nghệ phần mềm bao gồm mô hình hệ thống, ký pháp, quy tắc, hướng dẫn thiết kế quy trình để xây dựng phần mềm cách dễ dàng, đảm bảo chất lượng cao chi phí hiệu Một số phương pháp công nghệ phần mềm đề xuất như: Phân tích hướng cấu trúc - tập trung vào việc xác định chức hệ thống; phương pháp 5/7 Phần mềm gì? hướng đối tượng - tập trung vào việc định nghĩa đối tượng cộng tác chúng CASE (Computer-Aided Software Engineering) Các hệ thống CASE thường sử dụng để hỗ trợ hoạt động quy trình xây dựng phần mềm Có hai loại CASE: - Upper-CASE: công cụ để hỗ trợ hoạt động đặ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ử Thế phần mềm tốt? Đặt vấn đề - Bạn có thường xuyên sử dụng phần mềm không? - Theo bạn, phần mềm tốt? Phần mềm phải đáp ứng chức theo yêu cầu, có hiệu tốt, có khả bảo trì, đáng tin cậy, người sử dụng chấp nhận - Khả bảo trì: phần mềm phải điều chỉnh mở rộng để thoả mãn yêu cầu thay đổi - Mức độ tin cậy: phần mềm phải tin cậy, bảo mật xác - Hiệu quả: phần mềm không nên sử dụng lãng phí tài nguyên hệ thống - Khả chấp nhận: người sử dụng phải chấp nhận phần mềm Điều có nghĩa phải dễ hiểu, sử dụng tương thích với hệ thống khác Thách thức công nghệ phần mềm? Đặt vấn đề - Nếu quan tâm đến phát triển công nghệ phần mềm, bạn cho biết thách thức mà công nghệ phần mềm phải đối mặt Công nghệ phần mềm kỷ 21 phải đối mặt với nhiều thách thức to lớn Với thách thức này, phải có giải pháp cụ thể 6/7 Phần mềm gì? - Không đồng nhất: phát triển kỹ thuật xây dựng phần mềm để giải không đồng môi trường thực tảng hạ tầng - Chuyển giao: phát triển kỹ thuật nhằm dẫn tới việc chuyển giao phần mềm tới người sử dụng nhanh - Độ tin cậy: phát triển kỹ thuật để chứng minh phần mềm người sử dụng tin tưởng 7/7 ... hệ thống máy tính Chi phí phần mềm máy PC thường lớn chi phí phần cứng Chi phí phần mềm dành cho 3/7 Phần mềm gì? việc bảo trì phần mềm thường lớn chi phí xây dựng phần mềm Đối với hệ thống hoạt... dựng, phải để phần lớn chi phí phục vụ cho việc thay đổi phần mềm sau đưa vào sử dụng Chi phí cải tiến phần mềm thay đổi phụ thuộc vào loại phần mềm Các phương pháp công nghệ phần mềm gì? Phương... trình phát triển phần mềm gì? Mô hình quy trình phát triển phần mềm thể đơn giản quy trình phần mềm, biểu diễn từ góc độ cụ thể Sau số ví dụ mô hình quy trình phát triển phần mềm: - Mô hình luồng