Công nghệ phần mềm

Công nghệ phần mềm (tiếng Anh: software engineering) là sự áp dụng một cách tiếp cận có hệ thống, có kỷ luật, và định lượng được cho việc phát triển, sử dụng và bảo trì phần mềm.[1] Ngành học kỹ sư phần mềm bao trùm kiến thức, các công cụ, và các phương pháp cho việc định nghĩa yêu cầu phần mềm, và thực hiện các tác vụ thiết kế, xây dựng, kiểm thử (software testing), và bảo trì phần mềm.[2] Kỹ sư phần mềm còn sử dụng kiến thức của 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, quản lý chất lượng, công thái học phần mềm (software ergonomics), và kỹ sư hệ thống (systems engineering).[2]

Lịch sử

Nghề nghiệp

Các 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à:[3]

  1. Yêu cầu phần mềm: Phân tách, phân tích, đặc tả và phê chuẩn các yêu cầu đối với phần mềm.
  2. 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 định dạng, như Unified Modeling Language (UML).
  3. 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.
  4. Kiểm thử phần mềm: Kiểm thử phần mềm là quá trình thực thi 1 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.
  5. Bảo trì phần mềm: Các hệ thống phần mềm thường có nhiều vấn đề và cần được cải tiến trong một thời gian dài sau khi đã được hoàn tất vào lần đầu tiên. Lĩnh vực con này xem xét các vấn đề đó.
  6. Quản lý cấu hình phần mềm: Bởi vì 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ảnmã nguồn) phải được quản lý bằng các phương pháp chuẩn và có cấu trúc.
  7. Quản lý kĩ nghệ 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.
  8. 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, 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.
  9. Các công cụ kĩ thuật phần mềm, xem bài Computer Aided Software Engineering
  10. Chất lượng phần mềm

Các ngành liên quan

Kĩ nghệ phần mềm liên quan đến các ngành khoa học máy tính, khoa học quản lý, và kĩ nghệ hệ thống.[4][5]

Tham khảo

  1. ^ "IEEE Standard Glossary of Software Engineering Terminology," IEEE std 610.12-1990, 1990.
  2. ^ a b “Guide to the Software Engineering Body of Knowledge”. 6 tháng 2 năm 2004. Truy cập ngày 13 tháng 2 năm 2007.
  3. ^ SWEBOK executive editors, Alain Abran, James W. Moore; editors, Pierre Bourque, Robert Dupuis. (2004). Pierre Bourque and Robert Dupuis (biên tập). Guide to the Software Engineering Body of Knowledge - 2004 Version. IEEE Computer Society. tr. 1–1. ISBN 0-7695-2330-7.Quản lý CS1: nhiều tên: danh sách tác giả (liên kết)
  4. ^ Ian Sommerville (2004). Software Engineering. 7th edition. Chapter 1. Bezien 20 Okt 2008.
  5. ^ Table 2 in Chapter 1,“Guide to the Software Engineering Body of Knowledge”. ngày 6 tháng 2 năm 2004. Lưu trữ bản gốc ngày 18 tháng 1 năm 2008. Truy cập ngày 21 tháng 2 năm 2008.

Xem thêm

Đọc thêm

  • Pressman, Roger S (2005). Software Engineering: A Practitioner's Approach (ấn bản 6). Boston, Mass: McGraw-Hill. ISBN 0072853182.
  • Sommerville, Ian (2007) [1982]. Software Engineering (ấn bản 8). Harlow, England: Pearson Education. ISBN 0-321-31379-8.
  • Jalote, Pankaj (2005) [1991]. An Integrated Approach to Software Engineering (ấn bản 3). Springer. ISBN 0-387-20881-X.[liên kết hỏng]
  • Ghezzi, Carlo (2003) [1991]. Fundamentals of Software Engineering. Mehdi Jazayeri, Dino Mandrioli (ấn bản 2). Pearson Education @ Prentice-Hall.

Liên kết ngoài

  • x
  • t
  • s
Công nghệ phần mềm
Các lĩnh vực
Các khái niệm
Mô hình hóa dữ liệu • Kiến trúc doanh nghiệp • Chi tiết hóa chức năng • Ngôn ngữ mô hình hóa • Mô hình lập trìnhPhần mềmKiến trúc phần mềm • Phương pháp học phát triển phần mềm • Quy trình phát triển phần mềmChất lượng phần mềm • Bảo đảm chất lượng phần mềm • Khảo cổ học phần mềm • Phân tích có cấu trúc
Các định hướng
Định hướng khía cạnh • Định hướng đối tượng • Ontology • Định hướng dịch vụ • Vòng đời phát triển hệ thống
Các mô hình
Các mô hình phát triển
Linh hoạt • Mô hình lặp • RUP • Scrum • Mô hình xoắn ốcMô hình thác nướcXP • V-Model • Mô hình tăng tiến • Mô hình nguyên mẫu
Các mô hình khác
Automotive SPICE • CMMI • Mô hình dữ liệu • Mô hình hàm • Mô hình thông tin • Mô hình hóa meta • Mô hình đối tượng • Mô hình hệ thống • Mô hình quan sát
Các ngôn ngữ mô hình hóa
IDEF • UML
Các kỹ sư
phần mềm
Kent Beck • Grady Booch • Fred Brooks • Barry Boehm • Ward Cunningham • Ole-Johan Dahl • Tom DeMarco • Martin Fowler • C. A. R. Hoare • Watts Humphrey • Michael A. Jackson • Ivar Jacobson • Craig Larman • James Martin • Bertrand Meyer • David Parnas • Winston W. Royce • Colette Rolland • James Rumbaugh • Niklaus Wirth • Edward Yourdon • Victor Basili
Các lĩnh vực liên quan
Khoa học máy tínhKỹ nghệ máy tính • Kỹ nghệ doanh nghiệp • Lịch sử • Quản lýToán họcQuản lý dự ánQuản lý chất lượngCông thái học phần mềm • Kỹ nghệ hệ thống
  • x
  • t
  • s
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
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
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
Các trình biên dịch
Tính song hành,
Song song,
và các hệ thống 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 · LISP · Mẫu thiết kế · Tối ưu hóa phần mềm
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
Mạng máy tính
Các cơ sở dữ liệu
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.
  • x
  • t
  • s
Chuyên ngành chính của Tin học
Công nghệ thông tin
Hệ thống thông tin
Khoa học máy tính
Kỹ thuật máy tính
Kỹ nghệ phần mềm
Mạng máy tính
Tin học kinh tế
  • x
  • t
  • s
Giám đốc công nghệ thông tin · Tin học kinh tế · Quản lý công nghệ thông tin
Quản lý
Quản lý mạng
Quản trị hệ thống
Hoạt động vận hành
  • Bảo trì thiết bị
  • Bảo vệ hệ thống
  • Đối phó sự cố
  • Kế hoạch dự phòng
Hoạt động kỹ thuật
  • Hỗ trợ kỹ thuật
  • Kiểm soát truy cập
  • Kiểm tra hệ thống
  • Xác thực người dùng
Hoạt động an toàn
  • An ninh nhân sự
  • An ninh hệ thống
  • Nhận thức an toàn
  • Rủi ro hệ thống
Quản lý hệ thống
  • Bàn dịch vụ
  • Quản lý cấu hình
  • Quản lý công suất
  • Quản lý dịch vụ
  • Quản lý hạ tầng
  • Quản lý khôi phục
  • Quản lý người dùng
  • Quản lý sự cố
  • Quản lý tính liên tục
  • Quản lý tính sẵn sàng
  • Tổ chức công việc
  • Tổ chức hỗ trợ
Kỹ năng lãnh đạo
  • Kỹ năng cộng tác nhóm
  • Kỹ năng đàm phán
  • Kỹ năng giải quyết vấn đề
  • Kỹ năng giao tiếp
  • Kỹ năng gọi thoại
  • Kỹ năng huấn luyện
  • Kỹ năng lắng nghe
  • Kỹ năng phân công ủy thác
  • Kỹ năng phỏng vấn tuyển dụng
  • Kỹ năng quản lý thời gian
  • Kỹ năng tạo động lực
  • Kỹ năng tư duy
  • Kỹ năng thiết kế quy trình
  • Kỹ năng thuyết trình
  • Kỹ năng viết tài liệu kỹ thuật
Ứng dụng
Các lĩnh vực liên quan
Quản trị kinh doanh