Công nghệ phần mềm (hay còn gọi là kỹ nghệ phần mềm; tiếng Anh: software engineering) là sự vận dụng thực tế của những kiến thức khoa học trong việc thiết kế, cấu tạo của phần mềm cũng như những tài liệu liên quan trong việc phát triển, hoạt động và bảo dưỡng của nó. Công nghệ phần mềm bao gồm những kiến thức và ứng dụng của những nguyên tắc, phương pháp và công cụ cho kỹ thuật, quản lý sự phát triển phần mềm.

Các quá trình linh hoạt

Là quá trình mà trong đó cấu trúc khởi động sẽ nhỏ nhưng linh động và lớn dần của các đề án phần mềm nhằm tìm ra các khó khăn trước khi nó trở thành vấn đề có thể dẫn tới những hủy hoại. Quá trình này nhấn mạnh sự gọn nhẹ và tập trung hơn là các phương pháp truyền thống. Các quá trình linh hoạt dùng các thông tin phản hồi thay vì dùng các kế hoạch, như là một cơ chế diều khiển chính. Các thông tin phản hồi có được từ các thử nghiệm và các phiên bản phát hành của phần mềm tham gia.

Các quá trình linh hoạt thưòng có hiệu quả hơn các phương pháp cũ, nó dùng ít thời gian lập trình để sản xuất ra nhiều chức năng hơn, chất lượng cao hơn, nhưng nó không cung cấp một khả năng kế hoạch lâu dài.

Một cách ngắn gọn các phuơng pháp này cung ứng hiệu quả cao nhất cho vốn đầu tư, nhưng lại không định rõ hiệu quả gì.

Lập trình cực hạn, gọi tắt là XP, là loại quá trình linh hoạt được biết đến nhiều nhất. Trong XP, các pha được xúc tiến trong các bước cực nhỏ (hay liên tục) nếu so với các quá trình kiểu cũ, gọi là các “toán” xử lý. Bước đầu tiên (với chủ định là không hoàn tất) cho đến các bước có thể chỉ tốn một ngày hay một tuần, thay vì phải tốn nhiều tháng như trong phương pháp thác nước. Đầu tiên, một người viết các thử nghiệm tự động để cung cấp các mục tiêu cụ thể cho sự phát triển. Kế đến là giai đoạn viết mã (bởi một cặp lập trình viên); giai đoạn này hoàn tất khi mà các mã viết qua được tất cả các thử nghiệm và những người lập trình không tìm ra thêm được thử nghiệm cần thiết nào nữa. Thiết kế và kiến trúc được điều chỉnh và nâng cao ngay sau giai đoạn viết mã này bởi người đã viết mã trong giai đoạn trước. Hệ thống chưa hoàn tất nhưng hoạt động được này được khai thác hay được đem ra minh họa cho (một phần) người tiêu dùng mà trong số đó có người trong đội phát triển phần mềm. Thời điểm này những người thực nghiệm lại bắt đầu viết các thử nghiệm cho những phần quan trọng kế tiếp của hệ thống.

Tầm nhìn của các quá trình

Do bản chất không thể nắm bắt cụ thể của các hệ thống phần mềm, các nhà quản lý quá trình phần mềm cần các báo cáo, các hồ sơ và xem xét để theo dõi tiến độ cũng như những gì xảy ra của công việc. Hầu hết các tổ chức phát triển các phần mềm lớn dùng kiểu quá trình “định hướng chuyển giao được”. Mỗi thao tác phải kết thúc bằng một hồ sơ hay báo cáo nhằm làm cho quá trình phần mềm trở nên cụ thể hơn.

Lịch sử

Công nghệ phần mềm có một lịch sử khá sớm. Các công cụ được dùng cũng như các ứng dụng được viết đã tham gia vào kỹ nghệ phần mềm theo thời gian.

60 năm tuyến thời gian

  • Thập niên 1940: Các chương trình cho máy tính được viết bằng tay.
  • Thâp niên 1950: Các công cụ đầu tiên xuất hiện như là phần mềm biên dịch Macro Assembler và phần mềm thông dịch đã được tạo ra và sử dụng rộng rãi để nâng cao năng suất và chất lượng. Các trình dịch được tối ưư hoá lần đầu tiên ra đời.
  • Thập niên 1960: Các công cụ của thế hệ thứ hai như các trình dịch tối ưu hoá và công việc kiểm tra mẫu đã được dùng để nâng cao sản phẩm và chất lượng. Khái niệm công nghệ phần mềm đã được bàn thảo rộng rãi.
  • Thập niên 1970: Các công cụ phần mềm, chẳng hạn trong UNIX các vùng chứa mã, lệnh make, v.v. được kết hợp với nhau. Số lượng doanh nghiệp nhỏ về phần mềm và số lượng máy tính cỡ nhỏ tăng nhanh.
  • Thập niên 1980: các PC và máy trạm ra đời. Cùng lúc có sự xuất hiện của mô hình dự toán khả năng. Lượng phần mềm tiêu thụ tăng mạnh.
  • Thập niên 1990: Phương pháp lập trình hướng đối tượng ra đời. Các quá trình nhanh như là lập trình cực hạn được chấp nhận rộng rãi. Trong thập niên này, WWW và các thiết bị máy tính cầm tay phổ biến rộng rãi.
  • Hiện nay: Các phần mềm biên dịch và quản lý như là .NET, PHP và Java làm cho việc viết phần mềm trở nên dễ dàng hơn nhiều.

Hướng tương lai của kỹ nghệ phần mềm

Lập trình định dạng và các phương pháp linh hoạt sẽ giữ vai trò quan trọng trong tương lai của công nghệ phần mềm. ICSE 2005 đã tham gia theo dõi cả hai chủ đề này. (ICSE là dạng viết tắt của International Conference on Software Engineering tức là Hội nghị Quốc tế về Kỹ nghệ Phần mềm.)

  • Lập trình định dạng (aspect-oriented programming) sẽ giúp người lập trình ứng xử với các yêu cầu không liên quan đến các chức năng thực tế của phần mềm bằng cách cung ứng các công cụ để thêm hay bớt các khối mã ít bị thay đổi trong nhiều vùng của của mã nguồn. Lập trình định dạng mô tả các đối tượng và hàm nên ứng xử như thế nào trong một tình huống cụ thể.Thí dụ: Lập trình định dạng có thêm vào các cơ cấu kiểm soát hiệu chỉnh lỗi, biên bản và khoá cho tất cả các đối tượng của một số kiểu. Các nhà nghiên cứu đang tìm cách ứng dụng lập trình định dạng để thiết kế mã cho mục tiêu thông thường.
  • Phát triển phần mềm linh hoạt: nhằm hướng dẩn các đề án phát triển phần mềm mà trong đó bao gồm việc thoả mãn các nhu cầu thay đổi và sự cạnh tranh của thị trường một cách nhanh chóng. Các quá trình cồng kềnh, nặng về hồ sơ tính như là TickIT, CMM và ISO 9000 đang lu mờ dần tầm quan trọng.

Hội nghị Future of Software Engineering (FOSE) tin rằng ICSE 2000 đã hồ sơ hoá các tính năng hiện đại nhất của kỹ nghệ phần mềm và nêu ra nhiều vấn đề cần được giải quyết trong thập niên tới.

Đề án Feyerabend có ý định tìm hiểu tương lai của kỹ nghệ phần mềm qua tìm kiếm và xuất bản các ý kiến sáng tạo.

(theo Wikipedia)

FPT Aptech trực thuộc Tổ chức Giáo dục FPT có hơn 25 năm kinh nghiệm đào tạo lập trình viên quốc tế tại Việt Nam, và luôn là sự lựa chọn ưu tiên của các sinh viên và nhà tuyển dụng.
0981578920
icons8-exercise-96