Chương trình kĩ nghệ phần mềm

Một người cha viết cho tôi: “Con tôi sắp vào đại học năm nay. Nó băn khoăn giữa Khoa học máy tính và Kĩ nghệ phần mềm và tôi không thể giải thích được sự khác biệt. Một cố vấn nhà trường bảo nó rằng chúng làn như nhau với cái tên khác nhau nhưng cố vấn khác bảo nó rằng chúng không như nhau. Vì có các đại học dạy Khoa học máy tính và đại học khác dạy Kĩ nghệ phần mềm, tôi cần quyết định về trường nào cho cháu theo học. Bạn tôi giới thiệu cho tôi về website của thầy nhưng tôi không chắc ngành nào sẽ là tốt hơn cho con trai tôi. Tôi cần giúp đỡ để chọn lĩnh vực đúng và trường đúng để cho con tôi vào học. Xin thầy giúp cho.”

Đáp: Có nhiều ý kiến về khác biệt giữa Khoa học máy tính và Kĩ nghệ phần mềm. Về căn bản đó là các từ khoá là “Khoa học” và “Kĩ nghệ” và nó có nghĩa là “Nhà khoa học nghiên cứu” và “Người kĩ sư xây dựng” cho nên định nghĩa chung là Khoa học máy tính là NGHIÊN CỨU về điều máy tính làm và mọi lí thuyết liên kết với hệ thống máy tính như cấu trúc dữ liệu, thuật toán v.v. Kĩ nghệ phần mềm là PHÁT TRIỂN sản phẩm phần mềm dựa trên các qui trình và kỉ luật liên kết với hệ thống phần mềm.

Để giúp bạn hiểu sự khác biệt, chúng ta phải quay lại lịch sử. Hệ thống máy tính điển hình bao gồm phần cứng và phần mềm nhưng chính phần mềm biểu thị cho mọi chức năng mà người dùng cần và khi nhu cầu thay đổi, phần mềm phải được cập nhật. Trong quá khứ, phần mềm là nhỏ và đơn giản cho nên viết phần mềm phần lớn dựa trên kĩ năng lập trình của nhà khoa học người hiểu vận hành của hệ thống máy tính. Khoa học máy tính được tạo ra để hội tụ vào các kĩ năng viết phần mềm dùng các ngôn ngữ lập trình (FORTRAN, COBOL, Pascal, C, C++ v.v.). Phần lớn đào tạo Khoa học máy tính đều dựa trên nhiều năm viết mã, học lí thuyết máy tính, hiểu cấu trúc dữ liệu, tạo ra thuật toán, dùng những công thức toán học nào đó và tổ chức cấu trúc dữ liệu v.v.

Khi phần mềm trở nên lớn hơn và phức tạp hơn, cách tiếp cận hội tụ chặt vào một mình viết mã là không đủ tốt. Khi nhiều dự án khoa học máy tính bị chậm trễ, tốn kém nhiều và khó bảo trì, một cách tiếp cận mới được cần tới để kiểm soát độ phức tạp và chất lượng của hệ thống phần mềm lớn và lĩnh vực Kĩ nghệ phần mềm được tạo ra. Mục đích của Kĩ nghệ phần mềm là phát triển phần mềm có chất lượng và có chi phi-hiệu quả mà dễ bảo trì và sử dụng.

Khoa học máy tính coi phần mềm như chương trình máy tính nhưng đây là cách nhìn rất hạn chế. Phần mềm không chỉ là chương trình mà còn là mọi tài liệu liên kết và dữ liệu cấu hình để làm cho những chương trình này vận hành một cách hiệu quả và đúng đắn. Kĩ nghệ phần mềm coi hệ thống phần mềm như một số các chương trình phần mềm tách rời (ứng dụng, điều hành, giao diện v.v.); các tệp cấu hình mà có thể được dùng để thiết lập các chương trình này; tài liệu hệ thống mô tả cấu trúc của hệ thống và cách chúng làm việc cùng nhau; tài liệu người dùng mô tả cách dùng hệ thống. Đào tạo Kĩ nghệ phần mềm do đó không chỉ hội tụ vào viết mã mà còn vào mọi hoạt động liên kết với phát triển hệ thống phần mềm. Sinh viên phải học về qui trình phần mềm hay tập các hoạt động được cần để xây dựng phần mềm chất lượng; kĩ nghệ về yêu cầu hệ thống phần mềm dựa trên nhu cầu người dùng; cách tiếp cận cấu trúc tới phát triển phần mềm bao gồm mô hình hoá, kí pháp, qui tắc, kiến trúc, thiết kế và hướng dẫn qui trình; cũng như các thuộc tính chất lượng như hiệu năng, tính đổi qui mô, tính bảo trì được, tính dùng được v.v.

Nói chung, kĩ sư phần mềm tuân theo cách tiếp cận hệ thống và có tổ chức cho công việc của họ vì đây là cách hiệu quả nhất để tạo ra phần mềm chất lượng. Vì phần mềm là phức tạp và lớn, họ bao giờ cũng làm việc trong tổ cho nên kĩ năng mềm cũng được dạy trong hầu hết các chương trình kĩ nghệ phần mềm.

Tác phẩm, tác giả, nguồn

  • Tác phẩm: Kĩ nghệ phần mềm
  • Nguồn: Blog của giáo sư John Vu, Carnegie Mellon University.
  • Wiki hóa: https://kipkis.com