Tổng quan về giáo trình

Giáo trình Kỹ nghệ Phần mềm do TS. Hoàng Xuân Thảo chủ biên, cùng sự tham gia biên soạn của TS. Trương Thị Thu Hà và ThS. Nguyễn Hồng Vân, được phát hành năm 2018 bởi Khoa Công nghệ Thông tin – Trường Đại học Kinh doanh và Công nghệ Hà Nội. Giáo trình được xây dựng làm tài liệu học tập và giảng dạy chính thức cho học phần chuyên ngành Kỹ nghệ phần mềm thuộc chương trình đào tạo trình độ đại học ngành Công nghệ thông tin.

Mục tiêu học tập của giáo trình nhằm trang bị cho người học hệ thống tri thức tổng quan và chuyên sâu về toàn bộ tiến trình sản xuất một sản phẩm phần mềm. Sau khi hoàn thành học phần, người học nắm vững các phương pháp luận, quy trình quản lý, kỹ thuật phân tích, mô hình hóa, thiết kế kiến trúc, cài đặt mã nguồn, kiểm thử và bảo trì hệ thống một cách có tổ chức, đáp ứng các tiêu chuẩn kỹ thuật thực tế.

Cấu trúc giáo trình gồm 7 chương được tổ chức tuần tự theo vòng đời kỹ nghệ phần mềm. Cách tiếp cận của tài liệu đi từ các khái niệm tổng quan, quy trình quản lý dự án đến từng giai đoạn kỹ thuật cụ thể trong chu trình phát triển.

Điểm đặc sắc của giáo trình thể hiện ở tính hệ thống hóa cao, kết hợp giữa cơ sở lý thuyết chuẩn mực quốc tế (như định nghĩa của Fritz Bauer, mô hình xoắn ốc của Boehm năm 1988, tiêu chuẩn SRS theo IEEE, nghiên cứu của Heninger năm 1980 và Sommerville) với các quy trình kỹ thuật trực quan. Nội dung cung cấp các bảng phân loại, lược đồ tiến trình chi tiết, hỗ trợ người học chuyển hóa các yêu cầu bài toán thành sản phẩm công nghệ hoàn chỉnh.


Nội dung kiến thức cốt lõi

Các chương/chủ đề chính

Giáo trình gồm 7 chương bám sát các giai đoạn phát triển phần mềm:

  • Chương 1: Giới thiệu chung về kỹ nghệ phần mềm: Trình bày định nghĩa phần mềm (gồm chương trình, cấu trúc dữ liệu và tài liệu), đặc trưng, các giai đoạn tiến hóa từ thập niên 1950 đến sau 1990, tiêu chuẩn đánh giá phần mềm (tính bảo trì, độ tin cậy, tính hiệu quả, tính tiện dụng). Giới thiệu 3 yếu tố cốt lõi (phương pháp, công cụ, thủ tục) và 4 mô hình tiến trình: Thác nước (Waterfall), Bản mẫu (Prototyping), Xoắn ốc (Spiral của Boehm 1988), Công nghệ thế hệ thứ tư (4GT).
  • Chương 2: Quản lý dự án phần mềm: Khái quát về dự án, vai trò quản lý dự án, phương pháp đo lường phần mềm (trực tiếp và gián tiếp); quy trình 6 bước phân tích và quản lý rủi ro; kỹ thuật lập lịch dự án bằng sơ đồ mạng PERT, CPM và bảng phân rã công việc (WBS); hệ thống 9 nhóm hoạt động quản trị dự án; cấu trúc 6 kế hoạch dự án chính và quy trình quản lý cấu hình theo cơ chế check-out/check-in.
  • Chương 3: Phân tích và đặc tả yêu cầu phần mềm: Phân định hai mức độ (xác định yêu cầu và đặc tả yêu cầu); quy trình nghiên cứu khả thi trên 4 khía cạnh (kinh tế, kỹ thuật, pháp lý, hoạt động); quy trình phân tích yêu cầu 6 bước; kỹ thuật mô hình hóa luồng dữ liệu (DFD); phân loại yêu cầu chức năng và phi chức năng; so sánh phương pháp đặc tả phi hình thức và đặc tả hình thức; 4 tiêu chí thẩm định yêu cầu; quy trình làm bản mẫu và cấu trúc tài liệu đặc tả SRS theo chuẩn IEEE.
  • Chương 4: Thiết kế phần mềm: Trình bày nền tảng thiết kế (trừu tượng hóa dữ liệu/thủ tục, làm mịn top-down, mô đun hóa, che giấu thông tin); các tiêu chuẩn đánh giá chất lượng (7 mức kết dính từ gom góp đến chức năng, độ ghép nối, tính dễ hiểu, tính thích nghi); các giai đoạn thiết kế (sơ bộ, chi tiết) và phân nhánh kỹ thuật (dữ liệu, kiến trúc, thủ tục, giao diện); hai chiến lược thiết kế: hướng chức năng (DFD, biểu đồ cấu trúc, từ điển dữ liệu) và hướng đối tượng (lớp, tương tác, kế thừa); các mô hình kiến trúc (kho dữ liệu, Client-Server, kiến trúc phân lớp); nguyên tắc thiết kế giao diện người dùng.
  • Chương 5: Lập trình phần mềm: Khái niệm chuyển đổi thiết kế thành mã nguồn; tiêu chí đánh giá và lựa chọn ngôn ngữ lập trình theo miền ứng dụng (C, C++, Java, Ada, COBOL, Smalltalk, LISP, PROLOG, ASP, JavaScript, Perl); quy chuẩn phong cách lập trình (chú thích mở đầu, chú thích chức năng, chuẩn hóa khai báo); kỹ thuật lập trình tránh lỗi (lập trình thứ lỗi với cơ chế hồi phục tiến/lùi, lập trình phòng thủ); tối ưu hóa hiệu quả thực thi chương trình, quản lý bộ nhớ phân trang và xử lý vào/ra (I/O).
  • Chương 6: Kiểm thử: Trình bày tiến trình kiểm thử, kế hoạch kiểm thử, các phương pháp và chiến lược kiểm thử nhằm phát hiện lỗi logic bên trong lẫn chức năng bên ngoài, thẩm định mức độ đáp ứng yêu cầu người dùng.
  • Chương 7: Bảo trì phần mềm: Định nghĩa, đặc điểm, các dạng công việc bảo trì, đánh giá khả năng bảo trì và kiểm soát các hiệu ứng lề (side effects) sau bàn giao hệ thống.

Progression logic của giáo trình đi từ nhận thức tổng quan về quy trình và mô hình quản lý, chuyển tiếp sang phân tích bài toán thực tế, mô hình hóa giải pháp thiết kế, hiện thực hóa bằng mã nguồn và khép lại ở công tác kiểm thử, chuyển giao, duy trì hệ thống.

Kiến thức nền tảng được xây dựng

  • Fundamental theories: Lý thuyết vòng đời phát triển phần mềm; định nghĩa kỹ nghệ phần mềm của Fritz Bauer; lý thuyết quản lý rủi ro trong mô hình xoắn ốc của Boehm; lý thuyết hệ thống phân rã cấu trúc và hướng đối tượng.
  • Core principles: Nguyên tắc che giấu thông tin (information hiding); nguyên lý mô đun hóa "chia để trị"; nguyên tắc đo lường phần mềm trực tiếp và gián tiếp; cơ chế kiểm soát mã nguồn theo nguyên tắc phiên bản sai phân (delta storage) và check-out/check-in.
  • Essential frameworks: Khung 9 lĩnh vực quản lý dự án phần mềm; khung quy trình phân tích yêu cầu 6 bước; chuẩn định dạng tài liệu đặc tả yêu cầu phần mềm IEEE; mô hình phân cấp chất lượng kết dính 7 mức (gom góp, logic, thời điểm, thủ tục, truyền thông, tuần tự, chức năng); các kiến trúc hệ thống chuẩn (Repository/Kho dữ liệu, Khách - Chủ/Client-Server, Kiến trúc phân lớp).

Kỹ năng phát triển

  • Technical skills: Kỹ năng vẽ biểu đồ luồng dữ liệu (DFD), lập từ điển dữ liệu (Data Dictionary), xây dựng biểu đồ cấu trúc (Structure Chart); kỹ năng thiết kế kiến trúc và giao diện người dùng; kỹ năng áp dụng các kỹ thuật lập trình thứ lỗi (fault tolerance), xử lý ngoại lệ và tối ưu hóa I/O bộ đệm; kỹ năng vận hành công cụ quản lý cấu hình và lập lịch PERT/CPM.
  • Analytical skills: Năng lực phân tích tính khả thi 4 phương diện (kinh tế, kỹ thuật, pháp lý, hoạt động); năng lực nhận diện, đánh giá trọng số và quản trị rủi ro; kỹ năng thẩm định tính đầy đủ, nhất quán của yêu cầu kỹ thuật; năng lực đánh giá độ phức tạp và độ đo kết dính - ghép nối trong mô đun phần mềm.
  • Practical competencies: Khả năng lập kế hoạch dự án kỹ thuật, thiết lập tài liệu đặc tả yêu cầu chuẩn IEEE, tổ chức viết mã nguồn dễ bảo trì với tài liệu nội bộ chuẩn tắc, và xây dựng quy trình kiểm soát phiên bản phần mềm.

Phương pháp giảng dạy và học tập

Giáo trình định hướng phương pháp tiếp cận sư phạm theo tiến trình kỹ thuật có cấu trúc. Giảng viên sử dụng tài liệu để hướng dẫn sinh viên nắm bắt lý thuyết nền tảng gắn liền với quy chuẩn công nghiệp, đồng thời rèn luyện kỹ năng thực hành phân tích mô hình hóa.

Hệ thống bài tập và thực hành được tích hợp qua các nội dung kỹ thuật trọng tâm:

  • Practical exercises: Xây dựng bảng phân rã công việc (WBS), tính toán đường găng CPM và sơ đồ mạng PERT trong quản lý tiến độ; thực hành khảo sát và vẽ biểu đồ luồng dữ liệu (DFD) với các ký hiệu quy chuẩn (tác nhân, xử lý, luồng dữ liệu, kho dữ liệu); thiết lập từ điển dữ liệu; phân tích ngữ nghĩa danh từ/động từ trong câu yêu cầu để xác định lớp và phương thức đối tượng; thực hành viết mã nguồn theo phong cách chuẩn (chú thích mở đầu, chú thích chức năng).
  • Case studies & Prototyping: Thực hành quy trình làm bản mẫu (prototyping) 6 bước nhằm thu thập và tinh chỉnh các yêu cầu chưa tường minh với khách hàng; áp dụng mô hình kiến trúc Client-Server hoặc kiến trúc kho dữ liệu vào bài toán cụ thể.

Phương pháp đánh giá kết quả học tập được xác lập thông qua:

  • Đánh giá khả năng thẩm định tài liệu yêu cầu theo 4 tiêu chí cốt lõi: tính thỏa mãn người dùng, tính nhất quán, tính đầy đủ và tính hiện thực.
  • Đánh giá độ đo phần mềm qua kiểm tra trực tiếp (dòng lệnh, tốc độ, bộ nhớ, khuyết tật) và gián tiếp (chức năng, chất lượng, độ phức tạp, độ tin cậy).
  • Đánh giá thiết kế mã nguồn dựa trên các cấp độ kết dính mô đun và kỹ năng cài đặt giải pháp dung thứ lỗi.

Hướng dẫn tự học: Sinh viên cần đọc tài liệu tuần tự theo từng chương, đối chiếu các sơ đồ tiến trình với tiêu chuẩn SRS của IEEE, tự thực hiện các bài tập phân tích DFD và kiểm tra việc tuân thủ các nguyên tắc viết câu lệnh đơn giản, rõ ràng, tránh kiểm tra điều kiện phức tạp phủ định khi lập trình.


Điểm nổi bật và cập nhật

Giáo trình ghi nhận và hệ thống hóa sự tiến hóa của kỹ nghệ phần mềm qua 4 giai đoạn lịch sử rõ rệt:

Giai đoạn Đặc điểm kỹ thuật & Công nghệ Mô hình phát triển & Ứng dụng
1950 - giữa 1960 Phần cứng hạn chế, môi trường phát triển cá nhân, không có tài liệu Phần mềm theo đơn đặt hàng, chuyên dụng
Giữa 1960 - cuối 1970 Đa chương trình, đa người dùng, xuất hiện tương tác người - máy Phần mềm thời gian thực, DBMS thế hệ đầu
Cuối 1970 - 1990 Mạng máy tính phát triển, máy trạm/PC bùng nổ, vi xử lý công nghiệp Phần mềm quản lý dữ liệu, phần mềm nhúng, công cụ CASE, phương pháp hướng cấu trúc hoàn thiện
Sau 1990 Trí tuệ nhân tạo, mạng nơ-ron nhân tạo, hệ chuyên gia Phương pháp tiếp cận hướng đối tượng (OOP) thay thế hướng chức năng, dịch vụ Web

Giáo trình cập nhật các xu hướng ứng dụng công nghệ thực tế bao gồm:

  • Tích hợp công nghệ thế hệ thứ tư (4GT): Giới thiệu mô hình 4GT với khả năng sử dụng ngôn ngữ phi thủ tục truy vấn CSDL, bộ sinh báo cáo, bộ sinh chương trình tự động nhằm nâng cao năng suất lập trình.
  • Phổ hệ ngôn ngữ đa miền: Cung cấp định hướng lựa chọn ngôn ngữ lập trình theo từng miền ứng dụng cụ thể: C cho phần mềm hệ thống; Ada, C, C++ và hợp ngữ cho hệ thống thời gian thực; Java, C++ cho phần mềm nhúng; Smalltalk, C++, Java cho hướng đối tượng; LISP, PROLOG, OPS5 cho trí tuệ nhân tạo; ASP, JavaScript, PERL cho lập trình web.
  • Gắn kết thực tiễn công nghiệp: Áp dụng chuẩn IEEE trong cấu trúc tài liệu đặc tả yêu cầu; giới thiệu cơ chế quản lý cấu hình phần mềm hiện đại bằng lưu trữ sai phân tập trung và quy trình check-out/check-in; hệ thống hóa 9 nhóm hoạt động quản lý dự án tương thích với các khung quản trị dự án công nghiệp.

Đối tượng sử dụng giáo trình

Giáo trình được biên soạn phục vụ các nhóm đối tượng cụ thể sau:

  • Sinh viên đại học ngành Công nghệ thông tin: Dành cho sinh viên các năm chuyên ngành (năm thứ 3 hoặc năm thứ 4) đang theo học môn Kỹ nghệ phần mềm. Tài liệu cung cấp toàn diện kiến thức để sinh viên thực hiện bài tập lớn, đồ án môn học và quy trình xây dựng phần mềm chuẩn tắc.
  • Điều kiện tiên quyết (Prerequisites): Người học cần hoàn thành các học phần cơ sở ngành bao gồm Cơ sở lập trình, Cấu trúc dữ liệu và giải thuật, Cơ sở dữ liệu, và có hiểu biết cơ bản về lập trình hướng đối tượng.
  • Giảng viên chuyên ngành: Sử dụng làm tài liệu giảng dạy chính, xây dựng khung đề cương chi tiết học phần, hướng dẫn thực hành phân tích - thiết kế hệ thống và định chuẩn khung đánh giá các giai đoạn phát triển phần mềm của sinh viên.
  • Kỹ sư phần mềm và người tự học: Phục vụ kỹ sư phân tích nghiệp vụ, lập trình viên, kỹ sư hệ thống làm tài liệu tham chiếu chuẩn về cấu trúc tài liệu đặc tả SRS, phương pháp quản lý rủi ro dự án, các nguyên lý kiến trúc và quy trình bảo trì hệ thống.

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

1. Giáo trình này phù hợp với ai?

Giáo trình được thiết kế trực tiếp cho sinh viên hệ đại học chuyên ngành Công nghệ thông tin, giảng viên giảng dạy môn Kỹ nghệ phần mềm và các kỹ sư phần mềm cần tài liệu tham chiếu quy trình sản xuất phần mềm chuẩn mực.

2. Cần kiến thức nền nào để học môn này?

Người học cần có kiến thức nền tảng về lập trình (như ngôn ngữ C, C++, Java hoặc Pascal), nắm vững cấu trúc dữ liệu, giải thuật và các khái niệm cơ bản về hệ quản trị cơ sở dữ liệu.

3. Điểm khác biệt của giáo trình này so với các tài liệu khác là gì?

Tài liệu tích hợp cân đối giữa lý thuyết quy trình quản lý dự án (WBS, CPM, PERT, 9 nhóm hoạt động quản trị) với kỹ thuật chuyên sâu (7 mức kết dính mô đun, 4 mô hình tiến trình, phân tích DFD, lập trình thứ lỗi, lập trình phòng thủ) và trích dẫn chuẩn mực quốc tế (Fritz Bauer, Boehm 1988, IEEE, Heninger 1980, Sommerville).

4. Làm sao để tự học giáo trình đạt hiệu quả cao?

Người học nên bám sát lộ trình 7 chương, vừa học lý thuyết vừa thực hành cụ thể: vẽ biểu đồ DFD cho một bài toán thực tế, soạn thảo tài liệu đặc tả yêu cầu theo chuẩn IEEE, phân loại mô đun thiết kế theo bảng mức độ kết dính, và áp dụng các nguyên tắc chuẩn hóa mã nguồn khi lập trình.

5. Giáo trình có những tài liệu mẫu và công cụ hỗ trợ nào?

Giáo trình cung cấp các mẫu biểu cụ thể: bảng 9 hoạt động quản lý dự án, bảng 6 kế hoạch dự án, định dạng tài liệu đặc tả yêu cầu SRS theo chuẩn IEEE, hệ thống ký hiệu biểu đồ luồng dữ liệu (DFD), và cấu trúc chú thích chuẩn cho mã nguồn chương trình.


Kết luận

Giáo trình Kỹ nghệ Phần mềm của Khoa Công nghệ Thông tin – Trường Đại học Kinh doanh và Công nghệ Hà Nội là tài liệu học thuật có cấu trúc chuẩn tắc, phản ánh đầy đủ các giai đoạn cốt lõi trong chu trình kỹ nghệ và quản lý phần mềm.

Lộ trình học tập đề xuất cho người học:

  1. Giai đoạn 1 (Chương 1 - 2): Nắm vững các mô hình tiến trình phát triển và nguyên lý quản lý dự án, phân tích rủi ro, quản lý cấu hình.
  2. Giai đoạn 2 (Chương 3 - 4): Làm chủ kỹ thuật khảo sát tính khả thi, phân tích yêu cầu, xây dựng tài liệu SRS theo chuẩn IEEE, thiết kế kiến trúc và mô đun hóa hệ thống.
  3. Giai đoạn 3 (Chương 5 - 7): Hiện thực hóa mã nguồn với kỹ thuật tránh lỗi, tiến hành kiểm thử logic/chức năng và thực thi quy trình bảo trì, kiểm soát hiệu ứng lề.

Tài liệu là nền tảng học thuật quan trọng, cung cấp hệ thống phương pháp luận hoàn chỉnh cho công tác đào tạo và nghiên cứu kỹ thuật phần mềm ở bậc đại học.