Kĩ nghệ phần mềm và Khoa học máy tính/2

Một sinh viên năm thứ nhất hỏi tôi: “Tại sao một số người gọi chương trình đào tạo “Kĩ nghệ phần mềm” nhưng số khác lại gọi nó là “Khoa học máy tính” cái nào đúng? Sao tên khác nhau?”

Đáp: Có nhiều khác biệt giữa “Khoa học máy tính” và “Kĩ nghệ phần mềm”. Xin đọc các bài trước đây trên website SEGVN. Để hiểu tại sao có những cái tên khác nhau chúng ta cần quay trở lại lịch sử. Vào quãng sáu mươi hay bẩy mươi năm trước, khi máy tính vẫn còn là phát minh mới, chỉ vài nhà khoa học có thể dùng chúng trong phòng thí nghiệm. Vào thời đó, phần cứng là điều quan trọng nhất và lập trình là rất khó học. Các nhà khoa học người làm chương trình cho máy tính đã không tuân theo phương pháp luận nào mà chỉ “làm cái gì đó″ để làm cho máy tính làm việc. Viết mã và kiểm thử đã là những hoạt động chính và lĩnh vực này đã được đặt tên là “Khoa học máy tính”.

Trong thời gian này, do nhu cầu cao về những người lập trình máy tính, các đại học bắt đầu mở các khoa mới để đào tạp người phát triển phần mềm cho một bằng cấp có tên là “Khoa học máy tính”. Bởi vì đây vẫn còn là lĩnh vực tương đối mới, phần lớn những người dạy về máy tính đều là các giáo sư toán học, chương trình đào tạo tập trung nặng về toán học.

Khi máy tính được “thương mại hoá” để được dùng trong công nghiệp, nhiều máy tính hơn được cần tới, nhiều công ti máy tính được thành lập và cạnh tranh thành dữ dội. Với công nghệ điện tử tiến bộ trong chế tạo, chi phí phần cứng máy tính đi xuống và không còn là tài sản quan trọng nhất nữa. Ngược lại, phần mềm trở nên quan trọng hơn để làm cho máy tính thực hiện được nhiều chức năng chuyên dụng. Vào thời gian đó, đã có rất ít cách tiếp cận phát triển đúng, đại đa số công việc vẫn là trong viết mã và kiểm thử. Phần lớn các ứng dụng đã được phát triển với chi phí rất cao và mất thời gian lâu hơn để xây dựng. Khi kích cỡ phần mềm trở nên ngày càng lớn hơn và phức tạp hơn, nhiều ứng dụng thành khó bảo trì. Bởi vì kích cỡ lớn hàng triệu dòng mã, lỗi thành không thể sửa được điều gây ra tỉ lệ hỏng cao đáng kể. Khi nhiều công ti tuỳ thuộc vào máy tính để tự động hoá, lỗi trong ứng dụng phần mềm đã tạo ra tổn thất nhiều triệu đô la hàng năm. Tình huống này được gọi là ‘Khủng hoảng phần mềm’.

‘Khủng hoảng phần mềm’ đến điểm ngoặt làm cho mọi người phải nghĩ một cách nghiêm túc về qui trình phát triển phần mềm. Công nghiệp yêu cầu những giải pháp nào đó cần được áp dụng để đảm bảo việc thực hiện phần mềm được thành công, có hiệu quả chi phí. Nhiều người bắt đầu nghĩ về những ý tưởng mới của phát triển có hệ thống về phần mềm mà có thể chuyển giao đúng thời gian, theo lịch biểu, với chất lượng cao và chi phí hợp lí. Trong thời gian này, nhiều cách tiếp cận đã được phát minh và đóng góp cho tư duy hiện đại và tiên tiến về “giải pháp kĩ nghệ” cho qui trình phát triển phần mềm. Kĩ nghệ là kỉ luật tồn tại một thời gian dài, nó hội tụ vào ứng dụng các nguyên tắc khoa học như tư duy logic và thiết kế vào mục đích thực hành như làm cầu, đường, máy cơ khí với hiệu quả và hiệu lực lớn. Bằng việc áp dụng “nguyên lí kĩ nghệ” vào phát triển phần mềm, một lĩnh vực mới đã được tạo ra có tên là: ‘Kĩ nghệ phần mềm’.

Kĩ nghệ phần mềm chủ trương cách tiếp cận “Vòng đời” hệ thống trong mọi việc phát triển phần mềm. Nó chỉ ra rằng phần mềm có thể được xây dựng tuân theo nhiều pha với các hướng dẫn, kĩ thuật và công cụ để đảm bảo việc hoàn thành thành công của dự án. Có nhiều vòng đời cho mọi nhu cầu như ‘Thác đổ’, ‘Mô hình xoáy ốc’, ‘Xây dựng gia tăng’, v.v. để làm cho dễ phát triển và quản lí phần mềm. Những cách tiếp cận này cũng giúp cho những người quản lí hiểu vấn đề xuất hiện trong phát triển và điều phải làm để giải quyết chúng. Nguyên tắc kĩ nghệ cũng tuyên bố rằng chất lượng của sản phẩm phần mềm được xác định bởi qui trình tạo ra sản phẩm. Bằng việc hội tụ vào chất lượng của qui trình, chúng ta có thể có sản phẩm chất lượng cao hơn.

Khi phần mềm trở nên quan trọng hơn trong mọi ngành công nghiệp, đã có nhu cầu cao hơn nhiều về kĩ sư phần mềm và một số đại học bắt đầu cung cấp bằng cấp mới có tên là “Kĩ nghệ phần mềm”. Phần lớn những người dạy trong lĩnh vực này đều là các giáo sư kĩ nghệ cho nên chương trình đào tạo hội tụ nặng vào tư duy logic, giải quyết vấn đề, và qui trình phát triển. Từ đó, bằng kĩ nghệ phần mềm đã được thiết lập tại nhiều đại học. Phần lớn chương trình đào tạo dạy cả khoa học máy tính và các nguyên lí và thực hành kĩ nghệ. Bằng thạc sĩ kĩ nghệ phần mềm đã được lập ra tại đại học Seattle năm 1979 rồi Carnegie Mellon và Stanford đã thiết lập chúng như là chương trình đào tạo tốt nhất.

Từ đó bằng kĩ nghệ phần mềm đã thành sẵn có từ nhiều đại học hơn trên toàn thế giới. Ở châu Á, nó vẫn còn là lĩnh vực tương đối mới bởi vì giới hàn lâm truyền thống làm chậm việc chấp nhận thay đổi. Vào cuối những năm 1990, Hàn Quốc là nước đầu tiên đã chấp nhận chương trình đào tạo kĩ nghệ phần mềm, tiếp sau đó là Nhật Bản và Ấn Độ.

Về truyền thống, phần lớn người làm phần mềm tự gọi họ là người lập trình hay người phát triển phần mềm. Tuy nhiên, ở Mĩ và châu Âu, thuật ngữ “người lập trình” thường đã được dùng để chỉ những người không có bằng cấp hay giáo dục đúng, những người được đào tạo từ trường dạy nghề trong vài tháng và không thể làm công việc chất lượng tốt. Đáp ứng lại, nhiều người phần mềm tự gọi họ là người phát triển phần mềm hay kĩ sư phần mềm để tránh bị “gọi” là người lập trình. Trong nhiều công ti Mĩ, danh hiệu người phát triển nói tới những người có bằng khoa học máy tính và kĩ sư phần mềm nói tới những người có bằng kĩ sư phần mềm.

English version

Full article: Software Engineering and Computer Science

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

  • Tác phẩm: Khoa học máy tính
  • Biên tập: Kipkis.com
  • Nguồn: Blog của giáo sư John Vu, Carnegie Mellon University.