Từ điển học thuật Kỹ thuật và công nghệ

Kỹ thuật phần mềm là gì? Các nghiên cứu khoa học liên quan

Tiếng AnhSoftware engineering

Kỹ thuật phần mềm là ngành kỹ thuật ứng dụng cách tiếp cận có hệ thống, có kỷ luật và có thể định lượng được vào toàn bộ vòng đời phát triển, vận hành, kiểm thử và bảo trì phần mềm máy tính đảm bảo chất lượng, đúng tiến độ và ngân sách.

350 lượt xem Cập nhật 11/9/2026

Giới thiệu về kỹ thuật phần mềm

Kỹ thuật phần mềm (Software engineering) Kỹ thuật phần mềm là ngành kỹ thuật ứng dụng cách tiếp cận có hệ thống, có kỷ luật và có thể định lượng được vào toàn bộ vòng đời phát triển, vận hành, kiểm thử và bảo trì phần mềm máy tính đảm bảo chất lượng, đúng tiến độ và ngân sách.

Khía cạnh trọng tâm của kỹ thuật phần mềm bao gồm việc phân tích yêu cầu, thiết kế kiến trúc, triển khai mã nguồn, kiểm thử chất lượng và bảo trì. Mỗi bước đều tuân theo tiêu chuẩn và thực tiễn tốt nhất (best practices) để đảm bảo phần mềm vận hành ổn định và đáp ứng đúng mục tiêu kinh doanh hoặc khoa học.

  • Đảm bảo tính nhất quán giữa các thành phần hệ thống.
  • Quản lý rủi ro và kiểm soát chất lượng trong quá trình phát triển.
  • Áp dụng quy trình chuẩn hóa (ví dụ: ISO/IEC 12207).

Lịch sử và sự phát triển

Khủng hoảng phần mềm (software crisis) xuất hiện vào cuối thập niên 1960, khi các dự án phần mềm lớn thường xuyên chậm tiến độ, vượt ngân sách hoặc không đáp ứng được yêu cầu đặt ra. Kết quả là nhu cầu về một ngành khoa học rõ ràng và kỷ luật hơn để quản lý vòng đời phần mềm đã trở nên cấp thiết.

Thập niên 1970 chứng kiến sự ra đời của mô hình Waterfall - một quy trình phát triển tuần tự gồm các giai đoạn rõ ràng: yêu cầu, thiết kế, triển khai, kiểm thử và bảo trì. Tiếp theo, mô hình V-Model và Spiral (xoắn ốc) được giới thiệu để xử lý hạn chế của Waterfall như tính linh hoạt thấp và khó phản hồi nhanh với thay đổi.

Cuối thập niên 1990, phương pháp Agile bắt đầu lan rộng với các framework như Scrum và Kanban, nhấn mạnh tính linh hoạt, giao tiếp liên tục và cải tiến lặp. DevOps xuất hiện sau đó nhằm tích hợp chặt chẽ giữa đội phát triển (Dev) và vận hành (Ops), tự động hóa quy trình triển khai và giám sát liên tục.

Định nghĩa và phạm vi

Kỹ thuật phần mềm bao gồm toàn bộ các hoạt động từ thu thập và phân tích yêu cầu đến thiết kế, lập trình, kiểm thử và bảo trì. Phạm vi nghiên cứu của ngành này không chỉ dừng ở việc viết mã, mà còn mở rộng đến quản lý dự án, đảm bảo chất lượng, đo lường hiệu suất và quản lý cấu hình.

Khác biệt cơ bản giữa kỹ thuật phần mềm và lập trình đơn thuần nằm ở mức độ kiểm soát quy trình và tiêu chuẩn hóa. Lập trình tập trung vào viết mã để giải quyết bài toán cụ thể, trong khi kỹ thuật phần mềm coi trọng việc lập kế hoạch, tài liệu hóa và tuân thủ quy trình chuẩn xuyên suốt chu trình phát triển.

Khía cạnh Mô tả
Quy trình Chuẩn hóa các bước phát triển theo ISO/IEC 12207
Công cụ Hỗ trợ quản lý mã nguồn, kiểm thử tự động, tích hợp liên tục
Chất lượng Đo lường qua metrics như độ phức tạp, coverage, defect rate

Các giai đoạn của vòng đời phát triển phần mềm

Phân tích yêu cầu (Requirements Analysis) là bước đầu tiên nhằm thu thập, phân tích và chuẩn hóa các yêu cầu chức năng và phi chức năng từ người dùng hoặc khách hàng. Kết quả của giai đoạn này là tài liệu yêu cầu chi tiết sẵn sàng cho thiết kế hệ thống.

Thiết kế hệ thống và thiết kế chi tiết (System & Detailed Design) chuyển đổi yêu cầu thành kiến trúc phần mềm, mô tả thành phần, giao diện, luồng dữ liệu và cấu trúc cơ sở dữ liệu. Các công cụ UML và các mẫu thiết kế (Design Patterns) đóng vai trò quan trọng trong giai đoạn này.

Triển khai (Implementation/Coding) bao gồm việc viết mã nguồn theo ngôn ngữ lập trình được lựa chọn, tuân thủ chuẩn coding style và sử dụng công cụ quản lý mã nguồn. Giai đoạn này cũng thường đi kèm kiểm thử đơn vị (Unit Testing) để đảm bảo chất lượng từng module.

  • Kiểm thử tích hợp (Integration Testing): Kiểm tra sự tương tác giữa các module.
  • Kiểm thử hệ thống (System Testing): Đánh giá toàn bộ hệ thống theo yêu cầu ban đầu.
  • Kiểm thử chấp nhận (Acceptance Testing): Do khách hàng hoặc bên thứ ba thực hiện.

Triển khai và bảo trì (Deployment & Maintenance) liên quan đến việc đưa phần mềm vào môi trường thực tế, giám sát, cập nhật và vá lỗi. Đối với hệ thống lớn, giai đoạn này có thể chiếm tới 60–70% tổng chi phí vòng đời phần mềm.

Phương pháp luận trong kỹ thuật phần mềm

Các phương pháp luận (methodologies) trong kỹ thuật phần mềm cung cấp khung làm việc (framework) để tổ chức và điều phối các hoạt động phát triển. Mỗi phương pháp luận xác định vai trò, quy trình và công cụ hỗ trợ nhằm tối ưu hóa chất lượng, thời gian và chi phí dự án.

Mô hình Waterfall: Quy trình tuần tự, từng bước rõ ràng từ khi thu thập yêu cầu đến khi bàn giao. Ưu điểm là dễ quản lý, tài liệu hóa tốt; nhược điểm là thiếu linh hoạt, khó phản hồi thay đổi.

Mô hình xoắn ốc (Spiral): Kết hợp cách tiếp cận lặp và quản lý rủi ro, cho phép đánh giá rủi ro liên tục và cải tiến qua từng vòng xoắn. Phù hợp với dự án lớn, nhiều biến động yêu cầu.

  • Mô hình lặp (Iterative): Phát triển theo chu kỳ nhỏ, mỗi lần lặp tạo ra phiên bản có thể sử dụng được.
  • Agile (Scrum, Kanban): Tập trung giao tiếp, phản hồi nhanh với khách hàng, cải tiến liên tục.
  • DevOps: Kết hợp phát triển và vận hành, tự động hóa CI/CD, giám sát và phản hồi realtime.
Phương pháp Ưu điểm Nhược điểm Ứng dụng
Waterfall Dễ quản lý; tài liệu hóa đầy đủ Kém linh hoạt; khó xoay chuyển khi thay đổi yêu cầu Dự án nhỏ, yêu cầu ổn định
Spiral Quản lý rủi ro tốt; linh hoạt Chi phí cao; phức tạp Dự án lớn, nhiều rủi ro
Agile Phản hồi nhanh; hiệu quả giao tiếp Cần kỷ luật cao; khó mở rộng Phát triển web, app
DevOps Tự động hóa; giảm thời gian triển khai Đòi hỏi hạ tầng; văn hóa tổ chức Hệ thống liên tục

Công cụ và kỹ thuật hỗ trợ

Để thực hiện các quy trình kỹ thuật phần mềm một cách hiệu quả, các đội ngũ sử dụng một loạt công cụ chuyên biệt:

  • Quản lý mã nguồn (Version Control): Git, Subversion cho phép theo dõi lịch sử thay đổi, hợp nhất nhánh và phối hợp giữa các lập trình viên.
  • CI/CD: Jenkins, GitLab CI/CD, CircleCI tự động xây dựng, kiểm thử và triển khai mã nguồn mỗi khi có thay đổi.
  • Quản lý yêu cầu và task: Jira, Azure DevOps, Trello giúp lập kế hoạch sprint, phân công nhiệm vụ và theo dõi tiến độ.
  • Phân tích tĩnh & động: SonarQube, Coverity, Fortify dùng để đánh giá chất lượng mã, phát hiện lỗ hổng bảo mật tự động.

Các công cụ này không chỉ tiết kiệm thời gian mà còn đảm bảo quy trình minh bạch, dễ kiểm soát và có bằng chứng cho việc tuân thủ tiêu chuẩn.

Quản lý chất lượng và bảo đảm chất lượng phần mềm

Chất lượng phần mềm được đảm bảo qua nhiều lớp kiểm thử và quy trình chất lượng:

  1. Kiểm thử đơn vị (Unit Testing): Xác minh từng thành phần nhỏ hoạt động đúng. Công cụ phổ biến: JUnit, NUnit.
  2. Kiểm thử tích hợp (Integration Testing): Đánh giá sự tương tác giữa các module. Ví dụ: TestNG, Postman cho API.
  3. Kiểm thử hệ thống (System Testing): Kiểm tra toàn bộ hệ thống so với yêu cầu ban đầu.
  4. Kiểm thử chấp nhận (User Acceptance Testing): Do khách hàng kiểm thử để phê duyệt sản phẩm.

Song song với kiểm thử, quy trình Đảm bảo chất lượng (QA) và Kiểm soát chất lượng (QC) sử dụng các tiêu chuẩn như CMMI, ISO 9001 để đánh giá và cải tiến liên tục.

Đo lường và đánh giá phần mềm

Đo lường phần mềm giúp đánh giá hiệu suất, độ phức tạp và chi phí bảo trì:

  • Độ phức tạp McCabe (Cyclomatic Complexity): Công thức: M=E−N+2PM = E - N + 2P (E: số cạnh, N: số node, P: số thành phần liên thông).
  • Function Points (FP): Đo lường chức năng người dùng nhìn thấy. Công thức đơn giản: FP=UFP×VAFFP = UFP \times VAF.
  • Lines of Code (LOC): Đếm số dòng mã – đơn giản nhưng dễ sai lệch nếu không chuẩn hóa.
Metric Ý nghĩa Ứng dụng
Cyclomatic Complexity Đo lường độ phức tạp điều khiển Ước tính công sức kiểm thử
Function Points Đánh giá quy mô chức năng Lập kế hoạch, ước tính chi phí
LOC Số dòng mã So sánh dự án tương đương

Xu hướng và thách thức hiện đại

Trong kỷ nguyên số, kỹ thuật phần mềm phải thích ứng với các xu hướng mới:

  • Microservices & Cloud-native: Phân tách hệ thống thành các dịch vụ nhỏ, dễ mở rộng, triển khai trên Kubernetes, Docker.
  • DevSecOps: Tích hợp bảo mật ngay từ giai đoạn phát triển, tự động quét lỗ hổng và kiểm tra tuân thủ.
  • AI/ML trong phát triển: Tự động sinh mã, kiểm thử bằng trí tuệ nhân tạo (ví dụ: GitHub Copilot, Test.ai).

Thách thức lớn nhất bao gồm bảo mật, tuân thủ quy định (GDPR, HIPAA), quản lý dữ liệu khối lượng lớn và đảm bảo tính bền vững (Green Software).

Kết luận và hướng nghiên cứu tương lai

Kỹ thuật phần mềm ngày càng quan trọng trong mọi lĩnh vực, từ tài chính, y tế đến giải trí. Việc kết hợp các phương pháp luận truyền thống và hiện đại giúp nâng cao chất lượng, giảm thiểu rủi ro và tối ưu chi phí.

Hướng nghiên cứu tương lai tập trung vào:

  • AI-augmented development: Sử dụng AI không chỉ hỗ trợ lập trình mà còn tự động kiểm thử, phát hiện lỗi, đề xuất thiết kế.
  • Sustainable Software Engineering: Phát triển phần mềm tiết kiệm năng lượng, giảm lượng carbon.
  • Human-Centered Software: Tối ưu trải nghiệm người dùng, khả năng truy cập cho mọi đối tượng.

Việc liên kết chặt chẽ giữa học thuật và thực tiễn sẽ tạo động lực thúc đẩy kỹ thuật phần mềm phát triển bền vững và vượt trội hơn trong tương lai.

Câu hỏi thường gặp

Sự khác biệt căn bản giữa mô hình Thác nước (Waterfall) và phương pháp Agile là gì?

Waterfall là mô hình tuần tự tuyến tính chặt chẽ, hoàn thành từng pha (yêu cầu, thiết kế, mã hóa, kiểm thử) trước khi sang pha tiếp theo; Agile phân chia dự án thành các chu kỳ lặp ngắn (sprints), thích ứng linh hoạt với thay đổi yêu cầu.

Các nguyên tắc thiết kế phần mềm SOLID gồm những gì?

Gồm 5 nguyên tắc: Đơn trách nhiệm (Single Responsibility), Đóng/Mở (Open/Closed), Thay thế Liskov, Phân tách giao diện (Interface Segregation), và Đảo ngược phụ thuộc (Dependency Inversion).

Phương pháp CI/CD (Continuous Integration / Continuous Delivery) đóng vai trò gì trong DevOps?

CI/CD tự động hóa toàn bộ quy trình biên dịch mã nguồn, chạy kiểm thử đơn vị tự động và đóng gói triển khai ứng dụng lên môi trường thử nghiệm và sản xuất, giúp rút ngắn chu kỳ phát hành phần mềm.

Các nghiên cứu khoa học về “Kỹ thuật phần mềm”

Công bố nổi bật trên thế giới và tại Việt Nam, kèm tóm tắt theo hướng chủ đề.

Mới nhất

  • Tôi có thực sự cần tất cả công việc này để tìm ra các lỗ hổng không?

    Dịch bởi AIDo I really need all this work to find vulnerabilities?

    Sarah Elder và cộng sự2022Empirical Software Engineering

    AI tóm tắt

    Thử nghiệm thực nghiệm trên hệ thống bệnh án điện tử mã nguồn mở so sánh hiệu năng của bốn kỹ thuật kiểm thử bảo mật SAST, DAST, EMPT và SMPT. Kết quả ghi nhận SAST phát hiện số lượng lỗ hổng nhiều nhất, trong khi EMPT tìm thấy nhiều lỗ hổng nghiêm trọng hơn với năng suất cao. Nhóm tác giả khuyến nghị quy trình kỹ thuật phần mềm cần kết hợp linh hoạt các phương pháp kiểm thử an ninh.

  • Gamification trong kỹ thuật phần mềm: vai trò trung gian của sự tham gia của lập trình viên và sự hài lòng trong công việc

    Dịch bởi AIGamification in software engineering: the mediating role of developer engagement and job satisfaction

    Klaas-Jan Stol và cộng sự2021Empirical Software Engineering

    AI tóm tắt

    Mô hình phương trình cấu trúc tích hợp dữ liệu khảo sát và nhật ký kiểm soát phiên bản tại một tổ chức phần mềm đánh giá tác động của gamification. Kết quả chỉ ra cơ chế trò chơi hóa thúc đẩy sự gắn kết của lập trình viên và có mối liên hệ tỷ lệ thuận với sự hài lòng nghề nghiệp. Nghiên cứu cung cấp bằng chứng thực nghiệm quan trọng cho công tác quản trị nhân sự trong kỹ thuật phần mềm hiện đại.

  • Nghiên cứu khám phá về việc giới thiệu và loại bỏ các loại nợ kỹ thuật khác nhau trong các khuôn khổ học sâu

    Dịch bởi AIAn exploratory study on the introduction and removal of different types of technical debt in deep learning frameworks

    Jiakun Liu và cộng sự2021Empirical Software Engineering

    AI tóm tắt

    Nghiên cứu khám phá qua khai thác lịch sử tập tin của 7 khuôn khổ học sâu điều tra động thái phát sinh và loại bỏ nợ kỹ thuật tự nhận. Kết quả cho thấy nợ thiết kế xuất hiện phổ biến nhất, nợ yêu cầu bị gỡ bỏ nhiều nhất và phần lớn khiếm khuyết được xử lý bởi chính người tạo ra. Báo cáo gợi ý các mẫu chu kỳ nợ giúp tinh gọn quy trình phát triển kỹ thuật phần mềm, cân bằng giữa tốc độ và chất lượng mã nguồn.

  • Những ai, cái gì, và cách thức trong nghiên cứu kỹ thuật phần mềm: một khung nghiên cứu xã hội-kĩ thuật

    Dịch bởi AIThe who, what, how of software engineering research: a socio-technical framework

    Margaret-Anne Storey và cộng sự2020Empirical Software Engineering

    AI tóm tắt

    Khung nghiên cứu xã hội - kỹ thuật Who-What-How được áp dụng qua phân tích nội dung 151 bài báo khoa học xuất bản tại ICSE và tạp chí EMSE. Kết quả chỉ rõ phần lớn công trình tuyên bố hướng tới người hưởng lợi con người nhưng chủ yếu tập trung vào các giải pháp kỹ thuật. Nhóm tác giả đề xuất tam giác hóa các chiến lược nghiên cứu nhằm tích hợp khía cạnh con người vào kỹ thuật phần mềm một cách cân bằng.

  • Cách nghiên cứu kỹ thuật phần mềm phù hợp với khoa học thiết kế: một bài đánh giá

    Dịch bởi AIHow software engineering research aligns with design science: a review

    Emelie Engström và cộng sự2020Empirical Software Engineering

    AI tóm tắt

    Đánh giá có hệ thống trên 38 công trình đạt giải thưởng khảo sát khả năng gắn kết giữa phương pháp design science và nghiên cứu học thuật. Phân tích phân loại 5 cụm công trình tiêu biểu, cho thấy lăng kính khoa học thiết kế làm nổi bật tính mới và độ chặt chẽ của các quy tắc công nghệ. Bài viết đề xuất chuẩn hóa phương pháp luận giúp nâng cao tính liên quan thực tiễn cho kỹ thuật phần mềm ứng dụng.

Trích dẫn nhiều nhất

  • Khả năng tái lập của các đánh giá công cụ thực nghiệm trong kỹ thuật phần mềm và hệ thống dựa trên mô hình với MATLAB/Simulink

    Dịch bởi AIReplicability of experimental tool evaluations in model-based software and systems engineering with MATLAB/Simulink

    Alexander Boll và cộng sựInnovations in Systems and Software Engineering3 trích dẫn

    AI tóm tắt

    Khảo sát thực nghiệm trên 65 công bố khoa học điều tra tính tái lập của các công cụ phát triển dựa trên mô hình với MATLAB/Simulink. Tác giả phát hiện chỉ 31% công cụ và 22% mô hình được công khai, khiến tỷ lệ tái lập về nguyên tắc chỉ đạt 9% và 0% hoàn toàn tái lập. Báo cáo đề xuất cộng đồng chuẩn hóa việc chia sẻ tài nguyên mở trong kỹ thuật phần mềm để nâng cao độ tin cậy thực nghiệm.

  • Mitigating the impact of mislabeled data on deep predictive models: an empirical study of learning with noise approaches in software engineering tasks

    Jian Shen và cộng sự2024Automated Software Engineering

    AI tóm tắt

    Đánh giá thực nghiệm trên hai tập dữ liệu chuẩn về phân loại lỗi và dự đoán khiếm khuyết khảo sát tác động của nhãn nhiễu mislabeled data đối với mô hình học sâu. Kết quả chỉ ra dữ liệu gán nhãn sai làm suy giảm nghiêm trọng độ chính xác dự báo, trong khi các kỹ thuật học với nhiễu hiện tại chưa đạt hiệu quả ổn định. Nhóm tác giả đề xuất phát triển thuật toán chuyên biệt cho kỹ thuật phần mềm, tính đến đặc thù cấu trúc tập dữ liệu.

  • Một phương pháp dựa trên số liệu để chọn lựa giữa các ứng viên tái cấu trúc khác nhau

    Dịch bởi AIA metrics-based approach for selecting among various refactoring candidates

    Nikolaos Nikolaidis và cộng sự2023Empirical Software Engineering

    AI tóm tắt

    Phân tích thực nghiệm trên bộ dữ liệu điểm chuẩn mã nguồn khảo sát tác động của tái cấu trúc đối với nợ kỹ thuật. Kết quả chỉ ra các lớp có độ chặt chẽ cao và kích thước lớn đem lại hiệu quả cải thiện chất lượng rõ nét nhất. Nhóm tác giả đề xuất phương pháp dựa trên số liệu giúp lập trình viên xác định thứ tự ưu tiên xử lý trong quy trình kỹ thuật phần mềm.

  • Nghiên cứu chất lượng yêu cầu: lý thuyết hài hòa, đánh giá và lộ trình

    Dịch bởi AIRequirements quality research: a harmonized theory, evaluation, and roadmap

    Julian Frattini và cộng sự2023

    AI tóm tắt

    Khung lý thuyết hài hòa được nhóm tác giả xây dựng qua bài bình luận nghiên cứu nhằm hệ thống hóa các khái niệm cốt lõi về chất lượng yêu cầu. Phân tích chỉ rõ các công bố hiện tại chủ yếu tập trung vào quy tắc chuẩn mực hình thức mà chưa kết nối tác động tới các pha sau trong kỹ thuật phần mềm. Nhóm nghiên cứu đề xuất lộ trình học thuật tích hợp giúp định hướng chuẩn hóa kỹ thuật yêu cầu.

  • Vấn đề tương tác không chắc chắn trong các hệ thống tự thích ứng

    Dịch bởi AIThe uncertainty interaction problem in self-adaptive systems

    Javier Cámara và cộng sự2022Software & Systems Modeling

    AI tóm tắt

    Nghiên cứu trường hợp kép trên hai lĩnh vực đại diện làm rõ cách các nguồn không chắc chắn tương tác và ảnh hưởng đến thuộc tính của hệ thống phần mềm tự thích ứng. Tác giả ghi nhận các yếu tố bất định trong mục tiêu và tài nguyên hiếm khi độc lập, mà thường kết hợp tạo biến đổi khó lường. Công trình đề xuất tiếp cận toàn diện vấn đề tương tác không chắc chắn trong kỹ thuật phần mềm nhằm xây dựng kiến trúc tự trị kiên cố.

Tài liệu tham khảo

  1. Gomes, Marinho (2023). AGILE SOFTWARE ARCHITECTURE INGLOBAL SOFTWARE DEVELOPMENT ENVIRONMENT:SYSTEMATIC LITERATURE MAPPING. International Journal of Software Engineering & Applications. DOI: 10.5121/ijsea.2023.14301
  2. El-Khawaga (2014). A Framework for Architecture-Centric Practices Integration into Agile Software Development [APIASD]. Software Engineering (Science Publishing Group). DOI: 10.11648/j.se.20140201.11
  3. Ibrahim Alzoubi, Qumer Gill, Al-Ani (2015). Distributed Agile Development Communication: An Agile Architecture Driven Framework. Journal of Software. DOI: 10.17706//jsw.10.6.681-694