Kỹ thuật phần mềm (tiếng Anh: software engineering) là quá trình áp dụng các phương pháp có hệ thống và khoa học để phát triển, duy trì và cải thiện phần mềm. Ngành học này bao gồm kiến thức và công cụ để xác định yêu cầu phần mềm, thiết kế, xây dựng, kiểm thử (software testing), và duy trì phần mềm. Kỹ sư phần mềm cũng tích hợp kiến thức từ các lĩnh vực như kỹ thuật máy tính, khoa học máy tính, quản lý, toán học, quản lý dự án, đảm bảo chất lượng, công thái học phần mềm (software ergonomics), và kỹ thuật hệ thống (systems engineering).
Đặc điểm lịch sử
Cơ hội nghề nghiệp
Các lĩnh vực chuyên sâu
Kỹ thuật phần mềm có thể được phân thành 10 lĩnh vực chuyên sâu, bao gồm:
- Yêu cầu phần mềm: Phân tách, phân tích, đặc tả và phê duyệt các yêu cầu đối với phần mềm.
- Thiết kế phần mềm: Thiết kế phần mềm thường được thực hiện bằng các công cụ Computer-Aided Software Engineering (CASE) và áp dụng các tiêu chuẩn định dạng như Unified Modeling Language (UML).
- Phát triển phần mềm: Tạo dựng phần mềm thông qua việc sử dụng các ngôn ngữ lập trình.
- Kiểm thử phần mềm: Quá trình thực thi chương trình với mục đích phát hiện lỗi. Kiểm thử nhằm đảm bảo sản phẩm phần mềm đáp ứng chính xác, đầy đủ và đúng yêu cầu của khách hàng.
- Bảo trì phần mềm: Các hệ thống phần mềm thường cần cải tiến liên tục sau khi hoàn tất. Lĩnh vực này xem xét và xử lý các vấn đề đó.
- Quản lý cấu hình phần mềm: Do sự phức tạp của hệ thống phần mềm, cấu hình của chúng phải được quản lý bằng các phương pháp chuẩn và có tổ chức.
- Quản lý kỹ thuật phần mềm: Quản lý hệ thống phần mềm vay mượn nhiều khái niệm từ quản lý dự án, nhưng cũng có những khác biệt nhỏ so với 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 gây tranh cãi giữa các nhà thực hành; một số quy trình nổi bật là Mô hình Thác nước, Mô hình Xoắn ốc, Phát triển Tăng tiến và Lặp, và Phát triển Linh hoạt.
- Các công cụ kỹ thuật phần mềm, xem bài Computer Aided Software Engineering
- Chất lượng phần mềm
Các lĩnh vực liên quan
Kỹ thuật phần mềm liên quan đến các ngành khoa học máy tính, quản lý, và kỹ thuật hệ thống.
- Phần mềm
- Sản xuất phần mềm
- Thiết kế phần mềm
- Kiểm thử phần mềm
- Bảo trì phần mềm
- Quản lý dự án phần mềm
- Chất lượng hệ thống phần mềm
Xem thêm
- Pressman, Roger S (2005). Kỹ thuật phần mềm: Cách tiếp cận của Nhà thực hành (ấn bản 6). Boston, Mass: McGraw-Hill. ISBN 0072853182.
- Sommerville, Ian (2007) [1982]. Kỹ thuật phần mềm (ấn bản 8). Harlow, England: Pearson Education. ISBN 0-321-31379-8.
- Jalote, Pankaj (2005) [1991]. Phương pháp Tích hợp trong Kỹ thuật phần mềm (ấn bản 3). Springer. ISBN 0-387-20881-X.
- Ghezzi, Carlo (2003) [1991]. Các nguyên tắc cơ bản của Kỹ thuật phần mềm. Mehdi Jazayeri, Dino Mandrioli (ấn bản 2). Pearson Education @ Prentice-Hall.
Các liên kết hữu ích
Công nghệ phần mềm |
---|
Những lĩnh vực chính của khoa học máy tính | |
---|---|
Các nền tảng toán học | Logic toán · Lý thuyết tập hợp · Lý thuyết số · Lý thuyết đồ thị · Lý thuyết kiểu · Lý thuyết thể loại · Giải tích số · Lý thuyết thông tin · Đại số · Nhận dạng mẫu · Nhận dạng tiếng nói · Toán học tổ hợp · Đại số Boole · Toán rời rạc |
Lý thuyết phép tính | Độ phức tạp Kolmogorov · Lý thuyết Automat · Lý thuyết tính được · Lý thuyết độ phức tạp tính toán · Lý thuyết điện toán lượng tử |
Các cấu trúc dữ liệu và các giải thuật | Phân tích giải thuật · Thiết kế giải thuật · Hình học tính toán · Tối ưu hóa tổ hợp |
Các ngôn ngữ lập trình và Các trình biên dịch | Các bộ phân tích cú pháp · Các trình thông dịch · Lập trình cấu trúc · Lập trình thủ tục · Lập trình hướng đối tượng · Lập trình hướng khía cạnh · Lập trình hàm · Lập trình logic · Lập trình máy tính · Lập trình mệnh lệnh · Lập trình song song · Lập trình tương tranh · Các mô hình lập trình · Prolog · Tối ưu hóa trình biên dịch |
Tính song hành, Song song, và các hệ thống phân tán | Đa xử lý · Điện toán lưới · Kiểm soát song hành · Hiệu năng hệ thống · Tính toán phân tán |
Công nghệ phần mềm | Phân tích yêu cầu · Thiết kế phần mềm · Các phương pháp hình thức · Kiểm thử phần mềm · Quy trình phát triển phần mềm · Các phép đo phần mềm · Đặc tả chương trình
|
Kiến trúc hệ thống | Kiến trúc máy tính · Tổ chức máy tính · Các hệ điều hành · Các cấu trúc điều khiển · Cấu trúc bộ nhớ lưu trữ · Vi mạch · Thiết kế ASIC · Vi lập trình · Vào/ra dữ liệu · VLSI design · Xử lý tín hiệu số |
Viễn thông và Mạng máy tính | Audio máy tính · Chọn tuyến · Cấu trúc liên kết mạng · Mật mã học |
Các cơ sở dữ liệu và Các hệ thống thông tin | Hệ quản trị cơ sở dữ liệu · Cơ sở dữ liệu quan hệ · SQL · Các giao dịch · Các chỉ số cơ sở dữ liệu · Khai phá dữ liệu · Biểu diễn và giao diện thông tin · Các hệ thống thông tin · Khôi phục dữ liệu · Lưu trữ thông tin · Lý thuyết thông tin · Mã hóa dữ liệu · Nén dữ liệu · Thu thập thông tin |
Trí tuệ nhân tạo | Lập luận tự động · Ngôn ngữ học tính toán · Thị giác máy tính · Tính toán tiến hóa · Các hệ chuyên gia · Học máy · Xử lý ngôn ngữ tự nhiên · Robot học |
Đồ họa máy tính | Trực quan hóa · Hoạt họa máy tính · Xử lý ảnh |
Giao diện người-máy tính | Khả năng truy cập máy tính · Giao diện người dùng · Điện toán mang được · Điện toán khắp mọi nơi · Thực tế ảo |
Khoa học tính toán | Cuộc sống nhân tạo · Tin sinh học · Khoa học nhận thức · Hóa học tính toán · Khoa học thần kinh tính toán · Vật Lý học tính toán · Các giải thuật số · Toán học kí hiệu |
Chú ý: khoa học máy tính còn có thể được chia thành nhiều chủ đề hay nhiều lĩnh vực khác dựa theo Hệ thống xếp loại điện toán ACM. |
Chuyên ngành chính của Tin học |
---|