Hoạt động công nghiệp phần mềm là gì?
Hoạt động công nghiệp phần mềm là hoạt động tư vấn, thiết kế, sản xuất, cung cấp sản phẩm và dịch vụ phần mềm, bao gồm sản xuất phần mềm đóng gói; sản xuất phần mềm theo đơn đặt hàng; sản xuất phần mềm nhúng; hoạt động gia công phần mềm và hoạt động cung cấp, thực hiện các dịch vụ phần mềm.
Phân loại nhóm sản phẩm phần mềm
Mục tiêu chính của ngành công nghệ phần mềm là sản xuất ra các sản phẩm phần mềm - dạng sản phẩm vô hình.
Sản phẩm phần mềm là các phần mềm được phân phối cho khách hàng cùng với các tài liệu mô tả phương thức cài đặt và cách thức sử dụng chúng.
Sản phẩm phần mềm được phân ra 2 nhóm chính:
- Sản phẩm tổng quát: là các phần mềm đứng riêng, được sản xuất bởi một tổ chức phát triển và bán vào thị trường cho bất kỳ khách hàng nào có khả năng tiêu thụ.
- Sản phẩm chuyên ngành: là phần mềm đặc thù ngành dọc được xây dựng riêng cho các tổ chức, tập đoàn có quy trình nghiệp vụ riêng, bao gồm các dạng độ sâu nhất (bespoke), hoặc nhóm các phần mềm đặc thù ngành (best-of-breed, best-of-suite). Loại phần mềm này được xây dựng thông qua các hợp đồng gia công trọn gói.
Cho đến thập niên 1980 hầu hết sản phẩm phần mềm đều làm theo đơn đặt hàng riêng. Nhưng kể từ khi có máy tính cá nhân (PC), tình hình hoàn toàn thay đổi. Các phần mềm được phát triển và bán cho hàng trăm ngàn khách hàng là chủ nhân của các máy tính và do đó giá bán các sản phẩm này ngày càng rẻ hơn. Microsoft là nhà sản xuất phần mềm lớn nhất hiện nay.
Có những loại sản phẩm phần mềm nào?
Các loại sản phẩm phần mềm bao gồm:
- Phần mềm hệ thống (System Software);
- Phần mềm ứng dụng (Application Software);
- Phần mềm nhúng (Firmware);
- Phần mềm trình điều khiển thiết bị (Driver Software);
- Phần mềm trung gian (Middleware);
- Phần mềm dạng dịch vụ (SaaS - Software as a service);
- Phần mềm tiện ích (Utility software or system support programs);
- Phần mềm công cụ (Tools),
- Các phần mềm khác.
Có những loại dịch vụ phần mềm nào?
Các loại dịch vụ phần mềm bao gồm:
- Dịch vụ quản trị, bảo hành, bảo trì hoạt động của phần mềm và hệ thống thông tin;
- Dịch vụ tư vấn, đánh giá, thẩm định chất lượng phần mềm;
- Dịch vụ tư vấn, xây dựng dự án phần mềm;
- Dịch vụ tư vấn định giá phần mềm;
- Dịch vụ chuyển giao công nghệ phần mềm;
- Dịch vụ tích hợp hệ thống phần mềm (Software Integration);
- Dịch vụ bảo đảm an toàn, an ninh cho sản phẩm phần mềm, hệ thống thông tin;
- Dịch vụ phân phối, cung ứng sản phẩm phần mềm;
- Dịch vụ bảo trì phần mềm (Software Maintenance)
- Dịch vụ bảo trì hệ thống (System Maintenance)
- Các dịch vụ phần mềm khác.
Các nghiệp vụ ngành chuyên sâu
Kỹ nghệ phần mềm có thể được chia thành 10 ngành chuyên sâu, đó là:
- Yêu cầu phần mềm: Khảo sát, thu thập, phân tích, đặc tả và phê chuẩn các yêu cầu đối với phần mềm.
- Thiết kế phần mềm: Việc thiết kế phần mềm thường được hoàn thành bằng các công cụ Computer-Aided Software Engineering (CASE) và sử dụng các tiêu chuẩn ngôn ngữ mô hình hóa, như Unified Modeling Language (UML).
- Phát triển phần mềm: Xây dựng phần mềm thông qua việc dùng các ngôn ngữ lập trình.
- Kiểm thử phần mềm: Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích tìm ra lỗi. Kiểm thử phần mềm mục đích để đảm bảo sản phẩm phần mềm đáp ứng chính xác, đầy đủ và đúng theo yêu cầu của khách hàng, yêu cầu của sản phẩm đã đặt ra.
- Bảo trì phần mềm: Các hệ thống phần mềm thường có nhiều vấn đề tiềm ẩn khi quy mô người dùng hoặc dữ liệu tăng lên theo thời gian, do đó cần được cải tiến trong tương lai.
- Quản lý dự án phần mềm: Quản lý hệ thống phần mềm vay mượn rất nhiều khái niệm từ quản lý dự án, nhưng có nhiều khác biệt nhỏ gặp trong phần mềm mà không gặp trong các ngành quản lý khác.
- Quy trình phát triển phần mềm: Quy trình xây dựng phần mềm là điều tranh cãi giữa các nhà thực hành; một số quy trình nổi tiếng là mô hình thác nước (Waterfall), mô hình xoắn ốc (Interative), mô hình tăng và lặp lại (Incremental), mô hình nhanh và tinh gọn (Rapid Development) mô hình phát triển chớp nhoáng (Big Bang) và mô hình phát triển linh hoạt (Agile).
- Chất lượng phần mềm: Là khả năng đáp ứng nhu cầu của người dùng về tính năng cũng như công dụng được nêu ra một cách tường minh hoặc không tường minh trong những ngữ cảnh xác định.
- Quản lý cấu hình phần mềm: Các hệ thống phần mềm rất phức tạp, cấu hình của chúng (ví dụ như kiểm soát phiên bản và mã nguồn) phải được quản lý bằng các phương thức chuẩn và có cấu trúc, thí dụ mô hình Git với các công cụ Github, Gitlab.