TỔNG QUAN HỌC THUẬT: GIÁO TRÌNH CÔNG NGHỆ PHẦN MỀM

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

Giáo trình môn học: Công nghệ phần mềm (Mã số mô đun: Mh 25) là tài liệu đào tạo chuyên môn được biên soạn bởi Chủ biên Th.S Nguyễn Trung Cương và Th.S Nguyễn Xuân Khôi, ban hành phục vụ chương trình đào tạo nghề Lập trình máy tính ở trình độ Cao đẳng và Trung cấp tại Trường Cao đẳng Cơ giới Ninh Bình (thuộc Bộ Nông nghiệp và Phát triển Nông thôn). Môn học có tổng thời lượng 60 giờ (bao gồm 36 giờ lý thuyết, 20 giờ thực hành và 4 giờ kiểm tra tích hợp). Trong tiến trình đào tạo, môn học được bố trí giảng dạy sau khi sinh viên đã hoàn thành các học phần cơ sở về lập trình và hệ quản trị cơ sở dữ liệu, đóng vai trò kết nối kiến thức lập trình đơn lẻ vào quy trình kỹ nghệ hệ thống.

Mục tiêu học tập của giáo trình hướng tới việc trang bị cho người học:

  • Hệ thống hóa các khái niệm nền tảng về phần mềm, công nghệ phần mềm và các tiến trình phát triển phần mềm;
  • Năng lực phân tích, lựa chọn và thực thi mô hình phát triển phần mềm tương thích với yêu cầu cụ thể của từng hệ thống;
  • Kỹ năng khảo sát, xác định, phân tích và tư liệu hóa đặc tả yêu cầu; nhận diện rõ phạm vi cũng như các ràng buộc kỹ thuật của sản phẩm;
  • Phương pháp thiết kế kiến trúc, tổ chức module, xây dựng tài liệu kỹ thuật và hướng dẫn sử dụng phần mềm;
  • Năng lực thực hành kiểm thử, bảo trì và đánh giá độ tin cậy của chương trình theo các tiêu chuẩn kỹ thuật.

Cấu trúc giáo trình tiếp cận kỹ nghệ phần mềm theo mô hình ba tầng: Quy trình (Process), Phương pháp (Methods) và Công cụ (Tools). Toàn bộ nội dung tập trung vào việc chuẩn hóa các công đoạn phát triển, từ khâu xác định bài toán, lập kế hoạch quản trị, thiết kế cấu trúc dữ liệu và điều khiển, cho đến giai đoạn kiểm thử và bảo trì sản phẩm hoàn chỉnh.


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

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

Giáo trình được cấu trúc thành 5 bài học chính, phản ánh trình tự logic của vòng đời phát triển phần mềm:

[Bài 1: Khái niệm & Kỹ nghệ] 
[Bài 2: Tiến trình & Quản lý dự án] 
[Bài 3: Phân tích & Đặc tả yêu cầu] 
[Bài 4: Thiết kế kiến trúc & Module] 
[Bài 5: Kiểm thử, Độ tin cậy & Bảo trì]
  1. Bài 1: Phần mềm và kỹ nghệ phần mềm (5 giờ lý thuyết): Định nghĩa phần mềm, kỹ nghệ phần mềm, mô hình ba tầng (Quy trình - Phương pháp - Công cụ), chu kỳ vòng đời (Phát triển - Vận hành - Bảo trì - Loại bỏ), vai trò của nhóm phát triển, phân loại 12 vị trí nghề nghiệp trong hệ thống thông tin (Lập trình viên, Kỹ sư phần mềm, Kỹ sư tri thức, Chuyên gia ứng dụng, Quản trị dữ liệu, DBA, Kỹ sư AI, Nhà tư vấn, Kỹ sư truyền thông, Chuyên gia mạng cục bộ, Lập trình viên hệ thống, Chuyên gia hỗ trợ phần mềm) và phương pháp luận xã hội trong tương tác với người dùng.
  2. Bài 2: Tiến trình phần mềm (10 giờ: 6 LT, 4 TH): Hệ thống 11 tiêu chuẩn chất lượng sản phẩm phần mềm (Tính đúng, Tính khoa học, Tính tin cậy, Tính kiểm thử được, Tính hữu hiệu, Tính sáng tạo, Tính an toàn, Tính toàn vẹn, Tính đối xứng và đầy đủ chức năng, Tính tiêu chuẩn và tính chuẩn, Tính độc lập, Tính dễ phát triển); quy trình quản trị dự án, lập kế hoạch và ước lượng thời gian lịch trình; ma trận phân loại chiến lược cài đặt (theo lô, trực tuyến, thời gian thực) theo thời gian lưu hành và dung lượng giao dịch; tiêu chí lựa chọn mô hình vòng đời (thác nước, làm mẫu, hướng đối tượng).
  3. Bài 3: Phân tích đặc tả yêu cầu (11 giờ: 5 LT, 4 TH, 2 KT): Quy trình khảo sát yêu cầu; phân loại tài liệu (Xác định yêu cầu, Đặc tả yêu cầu, Đặc tả phần mềm); phân tích yêu cầu chức năng và phi chức năng; đánh giá tính khả thi (kinh tế, kỹ thuật, pháp lý); phân biệt đặc tả phi hình thức và đặc tả hình thức (tiếp cận đại số, tiếp cận mô hình); 8 nguyên lý đặc tả hệ thống; cấu trúc tài liệu yêu cầu (SRS); phân loại yêu cầu ổn định và bất thường; ma trận đặc tính dữ liệu theo các hệ thống thông tin (TPS, CSDL, DSS, GDSS, EIS, ES).
  4. Bài 4: Lập trình hiệu quả (Thiết kế phần mềm) (9 giờ: 5 LT, 4 TH): Bản chất quá trình thiết kế phần mềm (thiết kế sơ bộ và thiết kế chi tiết); các hoạt động định danh, suy diễn, tổng hợp; các nền tảng thiết kế gồm trừu tượng hóa (thủ tục, dữ liệu, điều khiển), làm mịn từng bước (Refinement), tính module và nguyên lý chia để trị; cấu trúc kiến trúc phần mềm (cây cấp bậc điều khiển và cấu trúc dữ liệu); nguyên lý che giấu thông tin (Information Hiding) và phân loại module (tuần tự, tăng trưởng, song song).
  5. Bài 5: Kiểm thử và bảo trì phần mềm (25 giờ: 11 LT, 12 TH, 2 KT): Độ tin cậy của phần mềm; các chiến lược và kỹ thuật kiểm thử chương trình; phương pháp chứng minh toán học tính đúng đắn của chương trình; quy trình bảo trì và kiểm soát sửa đổi mã nguồn.

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

  • Lý thuyết nền tảng (Fundamental theories): Lý thuyết vòng đời phần mềm; lý thuyết độ phức tạp của bài toán và phân rã module hóa dựa trên các quan hệ thực nghiệm $C(p+q) > C(p) + C(q)$ kéo theo nỗ lực $E(p+q) > E(p) + E(q)$; các khái niệm hình thức toán học (đại số, tập hợp, thứ tự, điều kiện tiền tố và hậu tố) phục vụ việc mô hình hóa phần mềm.
  • Nguyên lý cốt lõi (Core principles): Hệ thống 8 nguyên lý đặc tả yêu cầu (tách biệt chức năng với cài đặt, hướng tiến trình, bao hàm toàn hệ thống và môi trường vận hành, mô hình nhận thức, tính vận hành, dung sai tính không đầy đủ, ghép lỏng lẻo và cục bộ hóa); nguyên tắc chuẩn hóa thiết kế; nguyên tắc trừu tượng hóa đa tầng và nguyên lý che giấu thông tin giữa các module.
  • Khung phân tích và mô hình hóa (Essential frameworks): Mô hình ba tầng kỹ nghệ phần mềm; khung đánh giá tính khả thi dự án (kinh tế, kỹ thuật, pháp lý); ma trận 6 chiều đặc tính dữ liệu (tính thời gian, cấu trúc, mức đầy đủ, độ nhập nhằng, ngữ nghĩa, độ lớn) tương ứng với 6 loại hình ứng dụng; khung phân tích cây cấp bậc điều khiển (chiều rộng, độ sâu, số module vào/ra, tính cố kết, tính gắn nối).
Loại ứng dụng Tính thời gian Cấu trúc dữ liệu Mức đầy đủ Độ nhập nhằng Ngữ nghĩa Độ lớn dữ liệu
TPS (Xử lý giao dịch) Hiện tại Cấu trúc Đầy đủ Thấp Cố định Đa dạng
CSDL (Cơ sở dữ liệu) Quá khứ / Hiện tại Cấu trúc Đầy đủ Thấp Cố định Đa dạng
DSS (Hỗ trợ ra quyết định) Thay đổi Thay đổi Thấp / Trung bình Trung bình / Cao Thay đổi Trung bình / Cao
GDSS (Hỗ trợ nhóm) Hiện tại / Tương lai Phi cấu trúc Không đầy đủ Trung bình / Cao Thay đổi Thấp
EIS (Thông tin điều hành) Tương lai Phi cấu trúc Không đầy đủ Trung bình / Cao Thấp Thay đổi trung bình
ES (Hệ chuyên gia) Hiện tại Bán cấu trúc Không đầy đủ Trung bình / Cao Thay đổi Thấp

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Soạn thảo tài liệu đặc tả yêu cầu phần mềm theo cấu trúc chuẩn 10 mục; thiết kế sơ đồ kiến trúc và cây cấp bậc điều khiển hệ thống; áp dụng kỹ thuật làm mịn từng bước để chuyển đổi mô hình phân tích thành cấu trúc dữ liệu và giải thuật; thực thi các kỹ thuật kiểm thử đơn vị và tích hợp module.
  • Kỹ năng phân tích (Analytical skills): Định lượng thời gian lịch trình dự án theo công thức PERT: $$T = \frac{O + 2R + P}{4}$$ (trong đó $O$ là thời gian lạc quan, $R$ là thời gian thực tế, $P$ là thời gian bi quan); phân tích chi phí - lợi ích trong tính khả thi kinh tế; thẩm định các thuộc tính dữ liệu và nhận diện xung đột yêu cầu người dùng.
  • Năng lực thực tiễn (Practical competencies): Vận hành làm việc nhóm trong môi trường phát triển phần mềm; tổ chức các cuộc họp tham vấn người dùng theo phương pháp luận xã hội; thiết kế giao diện tương tác và lập hồ sơ chuyển giao, bảo trì phần mềm.

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

Giáo trình áp dụng mô hình giảng dạy tích hợp giữa lý thuyết nền tảng và thực hành ứng dụng, tuân thủ định mức phân bổ 36 giờ lý thuyết, 20 giờ thực hành và 4 giờ kiểm tra:

Tổng thời lượng: 60 giờ
  • Tiếp cận sư phạm (Pedagogical approach): Giảng dạy dựa trên tiến trình kỹ nghệ thực tế. Lý thuyết cung cấp các nguyên lý, mô hình toán học và tiêu chuẩn kỹ thuật; phần thực hành hướng dẫn sinh viên trực tiếp xử lý các bài toán phân tích, thiết kế trên công cụ máy tính và công cụ hỗ trợ CASE.
  • Bài tập và tình huống thực hành (Practical exercises & Case studies): Người học thực hiện các bài tập khảo sát yêu cầu thực tế, xây dựng tài liệu định nghĩa yêu cầu chức năng và phi chức năng; thực hành thiết kế phân rã module cho các hệ thống xử lý giao dịch hoặc quản lý cơ sở dữ liệu; vẽ đồ thị biểu diễn cấu trúc điều khiển chương trình.
  • Phương pháp đánh giá (Assessment methods): Kiểm tra tích hợp lý thuyết và kỹ năng thực hành (bố trí 2 giờ tại Bài 3 và 2 giờ tại Bài 5). Tiêu chí đánh giá dựa trên độ chính xác của tài liệu đặc tả, tính hợp lý của cấu trúc module thiết kế và kết quả thực hiện các ca kiểm thử phần mềm.
  • Hướng dẫn tự học (Self-study guidelines): Sinh viên cần nghiên cứu trước tài liệu bài giảng, ôn tập các khái niệm cấu trúc dữ liệu và lập trình hướng đối tượng liên quan, tự lập bảng so sánh các chiến lược cài đặt hệ thống và thực hiện phân tích các ca sử dụng mẫu được cung cấp trong giáo trình.

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

Nội dung giáo trình phản ánh các đặc điểm kỹ thuật và phương pháp luận mang tính hệ thống:

  • Phân loại vai trò nghề nghiệp chi tiết: Tài liệu xác lập cơ cấu 12 chức danh kỹ thuật trong các tổ chức công nghệ thông tin (Lập trình viên, Kỹ sư phần mềm, Kỹ sư tri thức KE, Chuyên gia ứng dụng, Quản trị dữ liệu, DBA, Kỹ sư trí tuệ nhân tạo, Nhà tư vấn, Kỹ sư truyền thông, Chuyên gia mạng LAN, Lập trình viên hệ thống, Chuyên gia hỗ trợ phần mềm SSP), làm rõ phạm vi trách nhiệm của từng vị trí trong dự án.
  • Tích hợp phương pháp luận xã hội: Nhấn mạnh vai trò trung tâm của người dùng thông qua các phiên làm việc phối hợp trực tiếp (từ 5 đến 10 ngày), biến người dùng thành đối tác đồng thiết kế giao diện và quy định nghiệp vụ thay vì đối tượng khảo sát thụ động.
  • Lượng hóa quản trị dự án và lựa chọn công nghệ: Đưa ra các công cụ tính toán định lượng cụ thể như công thức ước lượng thời gian lịch trình và bảng ma trận đối chiếu giữa thời gian lưu hành dữ liệu (<1h, <4h, <24h) với tần suất giao dịch (<10, <60, >60 lần/phút) để quyết định chiến lược xử lý theo lô, trực tuyến hay thời gian thực.
  • Phương pháp tiếp cận thiết kế module chặt chẽ: Sử dụng các mô hình toán học để giải thích sự đánh đổi giữa chi phí phân rã module và chi phí kết nối giao diện, thiết lập các tiêu chí cụ thể về cấp bậc cây điều khiển (chiều rộng, độ sâu, module vào/ra, tính cố kết, tính gắn nối).

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

  • Sinh viên mục tiêu: Sinh viên trình độ Cao đẳng và Trung cấp chuyên ngành Lập trình máy tính, Công nghệ thông tin hoặc Tin học ứng dụng đang học các học phần chuyên ngành về quy trình phần mềm.
  • Điều kiện tiên quyết (Prerequisites): Người học bắt buộc phải hoàn thành các môn học:
    1. Tin học căn bản
    2. Lập trình căn bản
    3. Cơ sở toán cho tin học
    4. Cấu trúc dữ liệu và giải thuật
    5. Hệ quản trị cơ sở dữ liệu
    6. Lập trình hướng đối tượng
  • Giảng viên và cơ sở đào tạo: Dùng làm giáo trình giảng dạy chính thức cho mô đun Mh 25; làm khung hướng dẫn thiết kế bài giảng lý thuyết, biên soạn bài tập thực hành xưởng và xây dựng đề kiểm tra tích hợp.
  • Tự học và tham khảo: Nhân sự kỹ thuật mới tham gia lĩnh vực phát triển phần mềm, lập trình viên cần hệ thống hóa kiến thức về quy trình lập tài liệu đặc tả yêu cầu, thiết kế kiến trúc phần mềm và kỹ thuật kiểm thử.

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

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

Tài liệu được biên soạn cho sinh viên hệ Cao đẳng và Trung cấp nghề Lập trình máy tính. Ngoài ra, giáo trình cũng phù hợp cho người tự học hoặc kỹ sư phần mềm muốn nắm vững các bước chuẩn hóa trong quy trình sản xuất phần mềm.

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

Người học cần nắm vững kiến thức từ 6 học phần tiên quyết: Cơ sở toán cho tin học, Lập trình căn bản, Lập trình hướng đối tượng, Cấu trúc dữ liệu và giải thuật, Hệ quản trị cơ sở dữ liệu và Tin học căn bản.

3. Điểm khác biệt trong cách tiếp cận thiết kế phần mềm của giáo trình là gì?

Giáo trình phân chia tiến trình thiết kế theo hai lát cắt: khía cạnh quản lý (Thiết kế sơ bộ và Thiết kế chi tiết) và khía cạnh kỹ thuật (Thiết kế dữ liệu, Thiết kế kiến trúc, Thiết kế thủ tục, Thiết kế đối tượng, Thiết kế giao diện), đồng thời sử dụng mô hình đồ thị và cây phân cấp điều khiển để lượng hóa cấu trúc module.

4. Làm sao để tự học và nắm vững kiến thức môn học hiệu quả?

Người học nên kết hợp đọc lý thuyết từng bài với việc thực hành lập tài liệu đặc tả yêu cầu cho một bài toán quản lý thực tế, áp dụng công thức PERT để lập kế hoạch tiến độ và tuân thủ các nguyên tắc phân rã module nhằm tối ưu hóa nỗ lực phát triển.

5. Cần trang bị những điều kiện và tài liệu bổ trợ nào khi học?

Cần chuẩn bị môi trường xưởng thực hành máy tính đạt chuẩn, máy chiếu, các bài giảng điện tử và các biểu mẫu tài liệu hóa yêu cầu phần mềm theo cấu trúc chuẩn được hướng dẫn trong giáo trình.


Kết luận

Giáo trình Môn học: Công nghệ phần mềm (Mh 25) của Trường Cao đẳng Cơ giới Ninh Bình cung cấp khung kiến thức hoàn chỉnh về quy trình sản xuất phần mềm theo chuẩn đào tạo nghề nghiệp. Giá trị cốt lõi của tài liệu nằm ở việc kết hợp chặt chẽ giữa các nguyên lý kỹ nghệ ba tầng (Quy trình - Phương pháp - Công cụ), hệ thống 11 tiêu chuẩn chất lượng và các kỹ thuật thiết kế, kiểm thử có tính ứng dụng cao. Lộ trình học tập đề xuất là tiếp cận tuần tự qua 5 bài học tương ứng với vòng đời phần mềm, kết hợp thực hành trực tiếp tại phòng máy để chuyển đổi yêu cầu nghiệp vụ thành các giải pháp phần mềm có cấu trúc chuẩn xác.