Giáo trình Nhập môn Kỹ nghệ Phần mềm – Trường Đại học Công nghệ Thông tin và Truyền thông

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

Giáo trình Nhập môn Kỹ nghệ phần mềm được biên soạn bởi các tác giả Nguyễn Văn Huân và Vũ Xuân Nam, trực thuộc Khoa Hệ thống Thông tin Kinh tế, Trường Đại học Công nghệ Thông tin và Truyền thông (Đại học Thái Nguyên), xuất bản năm 2011. Trong chương trình đào tạo bậc đại học các ngành Công nghệ Thông tin và Hệ thống Thông tin, tài liệu đóng vai trò là giáo trình cơ sở ngành, cung cấp nền tảng phương pháp luận kỹ thuật cho việc xây dựng và phát triển phần mềm ứng dụng.

Mục tiêu học tập của giáo trình là trang bị cho người học quy trình và kỹ thuật cụ thể trong các giai đoạn phát triển phần mềm, bao gồm: thiết kế dữ liệu, thiết kế giao diện người dùng, kỹ thuật cài đặt mã nguồn và phương pháp kiểm thử phần mềm. Người học nắm được cách thức chuyển giao từ mô hình quan niệm sang mô hình logic, chuẩn hóa cấu trúc lưu trữ dữ liệu, xây dựng cấu trúc màn hình tương tác, tuân thủ các quy tắc phong cách lập trình và thiết lập các bộ kiểm thử để xác định lỗi hệ thống.

Cấu trúc tài liệu tiếp cận theo quy trình kỹ thuật tuần tự kết hợp lặp tăng cường. Nội dung được trình bày từ việc đặc tả yêu cầu, chuyển dịch sang các mô hình thiết kế cụ thể, hiện thực hóa trên các môi trường lập trình và đánh giá chất lượng qua kiểm thử. Điểm đặc sắc của giáo trình là tính thực hành và quy chuẩn kỹ thuật: mọi khái niệm lý thuyết đều đi kèm các bước thuật giải chi tiết, lược đồ quan hệ và các ca nghiên cứu thực tế xuyên suốt (quản lý thư viện, quản lý học sinh, quản lý giải bóng đá, phần mềm giải toán đại số).


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

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

Căn cứ theo tài liệu, nội dung tập trung vào bốn khối kiến thức kỹ thuật trọng tâm:

  • Chương 4: Thiết kế dữ liệu: Trình bày phương pháp tổ chức lưu trữ thông tin dưới dạng cơ sở dữ liệu quan hệ. Nội dung phân tích hai phương pháp thiết kế: trực tiếp (chuyển trực tiếp từ yêu cầu sang sơ đồ logic) và gián tiếp (xây dựng sơ đồ lớp đối tượng rồi ánh xạ sang sơ đồ logic). Tiến trình thiết kế được phân tách theo ba mức độ yêu cầu: thiết kế bảo đảm tính đúng đắn, thiết kế đáp ứng yêu cầu chất lượng (tính tiến hóa qua việc tách thuộc tính có giá trị rời rạc; tính hiệu quả tốc độ qua việc bổ sung thuộc tính tính toán; tính hiệu quả lưu trữ qua việc tối ưu kiểu chuỗi và phân rã bảng dựa trên khóa/phụ thuộc hàm), và thiết kế theo yêu cầu hệ thống (phân quyền người dùng, chức năng).
  • Chương 5: Thiết kế giao diện: Trình bày quy trình phác thảo đồ hình (prototype) và hệ thống màn hình tương tác. Cấu trúc kết quả thiết kế gồm sơ đồ màn hình và mô tả chi tiết từng màn hình (thành phần dữ liệu nhập liệu/kết xuất, thành phần xử lý, hình thức trình bày, thao tác người dùng). Giáo trình phân loại và phân tích sâu ba nhóm màn hình chính:
    • Màn hình chính: Tổ chức thực đơn theo hướng chức năng, hướng đối tượng hoặc hướng quy trình.
    • Màn hình tra cứu: Tiêu chuẩn tra cứu (biểu thức logic, cấu trúc cây, tích hợp) và hình thức xuất kết quả (thông báo, danh sách đơn, xâu các danh sách, cây danh sách).
    • Màn hình nhập liệu: Thiết kế theo dạng danh sách (kích thước nhỏ), dạng hồ sơ (đối tượng thực tế) và dạng phiếu (nhiều dòng chi tiết).
  • Chương 6: Cài đặt: Phân tích các tiêu chí kỹ thuật của ngôn ngữ lập trình (tính mô đun hóa, khả năng sưu liệu, cấu trúc dữ liệu trừu tượng, hỗ trợ hướng đối tượng) và phong cách lập trình chuẩn mực (tính cấu trúc, quy tắc đặt tên phân biệt danh từ/động từ/tính từ, quy tắc viết ghi chú cho mô-đun/phương thức, định dạng thụt lề bằng phím tab). Chương này giới thiệu mô hình "Hiện thực tăng cường" (Incremental Implementation) kết hợp kiểm chứng kiến trúc thông qua mô phỏng, cùng quy trình xem xét, đánh giá thiết kế và mã nguồn (Design and Code Review).
  • Chương 7: Kiểm thử phần mềm: Định nghĩa mục tiêu kiểm thử nhằm so sánh kết quả thực tế với lý thuyết để phát hiện lỗi; xác lập khái niệm bộ thử nghiệm (test cases), không gian thử nghiệm và độ tin cậy. Giáo trình phân tích hai kỹ thuật kiểm thử nền tảng: kiểm thử hộp đen (phân vùng tương đương, kiểm tra giá trị biên) và kiểm thử hộp trắng (kiểm tra giao tiếp, dữ liệu cục bộ, điều kiện biên câu lệnh điều kiện/vòng lặp, bao phủ con đường thực hiện). Về chiến lược, tài liệu mô tả quy trình kiểm thử đơn vị (sử dụng mô-đun giả lập driver và stub) và kiểm thử tích hợp (tiếp cận Top-down và Bottom-up, kiểm tra lùi - regression testing).
   [Yêu cầu phần mềm]

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

  • Lý thuyết mô hình dữ liệu quan hệ: Kỹ thuật ánh xạ quan hệ 1-n, m-n từ mô hình lớp đối tượng sang lược đồ quan hệ; xác định khóa chính, khóa ngoại; phân loại thuộc tính theo bản chất ngữ nghĩa (định danh, loại, thời gian, không gian, định lượng).
  • Nguyên lý tương tác người - máy: Nguyên tắc thiết kế giao diện dựa trên hồ sơ người dùng, tính kết dính hành vi hệ thống, ngữ pháp thao tác và tính tiện dụng.
  • Lý thuyết kiểm thử và độ tin cậy phần mềm: Phân hoạch không gian thử nghiệm, phân tích giá trị biên (Boundary Value Analysis), độ bao phủ đường dẫn mã nguồn (Path Coverage).

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Xây dựng sơ đồ logic dữ liệu, chuẩn hóa và tối ưu cấu trúc bảng; ánh xạ lớp thiết kế thành cấu trúc mã nguồn trên các môi trường lập trình (Java, Visual Basic, Visual C++, SQL Server, Oracle); viết ca kiểm thử (test cases) hộp đen và hộp trắng.
  • Kỹ năng phân tích (Analytical skills): Phân tích sự đánh đổi giữa tốc độ truy xuất dữ liệu và dung lượng lưu trữ; phân tích phân quyền hệ thống; đánh giá cấu trúc rẽ nhánh và luồng dữ liệu của chương trình.
  • Kỹ năng thực hành (Practical competencies): Thiết kế form biểu mẫu nhập liệu dạng phiếu/hồ sơ; cài đặt chương trình con giả lập (driver/stub) cho kiểm thử đơn vị; thực hiện kỹ thuật rà soát thiết kế và mã nguồn (Code Review) theo nhóm phát triển.

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

Phương pháp tiếp cận sư phạm của giáo trình được xây dựng theo nguyên tắc phát triển tăng cường và mô hình hóa trực quan. Mỗi nội dung kỹ thuật đều bắt đầu từ việc thiết lập mức độ đáp ứng cơ bản (tính đúng đắn chức năng), sau đó từng bước mở rộng sang các tiêu chí phi chức năng phức tạp hơn (tính tiện dụng, tính tiến hóa, hiệu năng truy xuất và tối ưu hóa bộ nhớ).

Hệ thống bài tập và ca nghiên cứu (case studies) được triển khai xuyên suốt với các hệ thống quản lý thực tế:

  • Hệ thống Quản lý thư viện: Minh họa kỹ thuật chuyển đổi từ sơ đồ lớp (SACH, DOCGIA, MUONSACH) sang sơ đồ logic, xử lý thuộc tính rời rạc (LOAISACH, NGONNGU), bổ sung thuộc tính tính toán (SosachMuon, TinhTrangtra), và phân rã các bảng liên quan đến tác giả, nhà xuất bản.
  • Hệ thống Quản lý học sinh THPT: Minh họa thiết kế bảng dữ liệu (HOCSINH, KIEMTRA, DIEMDANH), phân loại thực đơn quản lý và thiết kế giao diện hồ sơ học sinh.
  • Hệ thống Quản lý giải bóng đá quốc gia: Minh họa tổ chức thực đơn theo quy trình (Tổ chức, Kế hoạch, Thi đấu, Tổng kết), tra cứu cầu thủ và quản lý thuộc tính tính toán tự động cập nhật (Tong_ban_thang, Tong_the_phat, Diem_so).
  • Hệ thống Giải bài tập phương trình đại số: Minh họa đầy đủ 6 giai đoạn phát triển phần mềm từ xác định yêu cầu, lập sơ đồ luồng dữ liệu (DFD), phân tích chức năng, thiết kế kiến trúc, cài đặt mã nguồn đến kiểm chứng phần mềm.

Phương pháp đánh giá và hướng dẫn tự học tập trung vào việc đối chiếu kết quả đầu ra với các tiêu chuẩn thiết kế: người học tự kiểm tra tính đúng đắn của sơ đồ logic thông qua việc truy vết yêu cầu, thực hành kỹ thuật review chéo mã nguồn trong nhóm phát triển, và xây dựng bộ kiểm thử biên cho các bài toán cụ thể (như phân chia 3 vùng nghiệm và kiểm tra biên số học -32768 đến 32767 trong bài toán giải phương trình bậc 2).


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

Nội dung giáo trình thể hiện tính hệ thống và thực tiễn kỹ thuật thông qua các điểm cụ thể:

  • Quy chuẩn hóa việc tối ưu hóa dữ liệu theo tiêu chí kỹ thuật rõ ràng: Thay vì chỉ trình bày lý thuyết chuẩn hóa dữ liệu trừu tượng, giáo trình đưa ra các bước thuật toán cụ thể để giải quyết 3 bài toán: tính tiến hóa (tách các thuộc tính có miền giá trị biến động thấp thành bảng riêng để người dùng tự cập nhật khi vận hành), tính tốc độ (bổ sung thuộc tính lưu trữ kết quả tính toán trước kết hợp cơ chế tự động cập nhật), và tính tối ưu lưu trữ (phân rã bảng dựa trên tần suất thực hiện công việc và thuộc tính chuỗi lặp lại nhiều lần).
  • Phân loại giao diện có tính cấu trúc cao: Thiết lập mô hình phân loại thực đơn theo 3 hướng (chức năng, đối tượng, quy trình) và phân cấp kết quả tra cứu thành 4 cấp độ (thông báo, danh sách đơn, xâu danh sách, cây danh sách), giúp chuẩn hóa quá trình xây dựng prototype phần mềm.
  • Tích hợp mô hình "Hiện thực tăng cường": Đưa ra quan điểm kết hợp linh hoạt giữa thiết kế và cài đặt thay vì áp dụng cứng nhắc mô hình thác nước tuần tự cổ điển; thẩm định kiến trúc thông qua mô phỏng thành phần trước khi hoàn thiện toàn bộ hệ thống.
  • Mô hình kiểm thử hai nhóm độc lập: Đề xuất phân định trách nhiệm kiểm thử giữa nhóm phát triển dự án (kiểm tra nội bộ theo thiết kế) và nhóm chuyên gia độc lập (phát hiện sai sót khách quan), phản ánh sát quy trình kiểm thử trong công nghiệp phần mềm.
  • Tham chiếu công nghệ thực tế: Nội dung giáo trình đối chiếu cụ thể giữa các ngôn ngữ lập trình (Pascal, Modula-2, Ada, C, Java, Visual Basic, Visual C++) và các hệ quản trị cơ sở dữ liệu phổ biến (Access, SQL Server, Oracle).

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

  • Sinh viên đại học/cao đẳng: Phục vụ sinh viên năm thứ hai hoặc năm thứ ba thuộc các ngành Công nghệ Thông tin, Hệ thống Thông tin, Kỹ thuật Phần mềm, Khoa học Máy tính theo học học phần Kỹ nghệ phần mềm hoặc Nhập môn Kỹ nghệ phần mềm.
  • Kiến thức tiên quyết (Prerequisites):
    • Đã học qua môn Cơ sở dữ liệu (nắm vững khái niệm bảng, khóa chính, khóa ngoại, các phép toán quan hệ cơ bản).
    • Kiến thức lập trình căn bản và lập trình hướng đối tượng (C++, Java hoặc Visual Basic).
    • Kiến thức về sơ đồ luồng dữ liệu (Data Flow Diagram - DFD) và sơ đồ lớp đối tượng cơ bản.
  • Giảng viên: Sử dụng làm giáo trình giảng dạy chính khóa, tài liệu hướng dẫn thực hành đồ án môn học, xây dựng ngân hàng đề thi và bài tập lớn theo các ca nghiên cứu thực tế.
  • Người tự học và kỹ sư phần mềm: Dùng làm tài liệu tham khảo để chuẩn hóa quy trình phân tích thiết kế dữ liệu, thiết kế giao diện người dùng theo chuẩn công nghiệp, thiết lập tài liệu kỹ thuật và xây dựng chiến lược kiểm thử đơn vị, kiểm thử tích hợp cho dự án.

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 biên soạn phục vụ sinh viên chuyên ngành Công nghệ Thông tin, Hệ thống Thông tin Kinh tế và Kỹ thuật Phần mềm trình độ đại học, cao đẳng, cũng như các lập trình viên cần hệ thống hóa phương pháp luận kỹ thuật từ khâu thiết kế đến kiểm thử.

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

Người học cần có kiến thức nền tảng về Cơ sở dữ liệu quan hệ, kỹ năng lập trình hướng đối tượng căn bản (Java, C++, hoặc Visual Basic), cấu trúc dữ liệu và giải thuật, cùng kiến thức cơ bản về phân tích hệ thống (sơ đồ lớp, sơ đồ luồng dữ liệu DFD).

3. Điểm khác biệt với giáo trình khác?

Tài liệu tập trung sâu vào các bước kỹ thuật thực hành chi tiết: hướng dẫn cụ thể cách chuyển từ sơ đồ lớp sang sơ đồ logic, phương pháp tối ưu hóa dữ liệu dựa trên thuộc tính rời rạc và thuộc tính tính toán, mô hình hóa cấu trúc màn hình giao diện chuẩn, và tổ chức kiểm thử thông qua kỹ thuật driver/stub kết hợp mô hình hai nhóm kiểm thử độc lập.

4. Làm sao để tự học hiệu quả?

Người học nên làm theo tiến trình thực hành của từng chương: bắt đầu từ việc vẽ sơ đồ logic dữ liệu cho một bài toán nhỏ, áp dụng các bước tối ưu hóa bảng, thiết kế các dạng màn hình (chính, tra cứu, nhập liệu), cài đặt mã nguồn tuân thủ quy tắc đặt tên/ghi chú, và thiết lập bảng ca kiểm thử hộp đen/hộp trắng tương ứng.

5. Có tài liệu bổ trợ nào kèm theo?

Tài liệu dẫn chiếu trực tiếp đến Phụ lục B, nơi cung cấp chi tiết mô hình sơ đồ lớp và mô tả đầy đủ các thuộc tính của các hệ thống mẫu như Quản lý thư viện và Quản lý giải vô địch bóng đá quốc gia.


Kết luận

Giáo trình Nhập môn Kỹ nghệ phần mềm của Trường Đại học Công nghệ Thông tin và Truyền thông (Đại học Thái Nguyên) cung cấp hệ thống kiến thức nền tảng và các chỉ dẫn kỹ thuật cụ thể về thiết kế dữ liệu, thiết kế giao diện, cài đặt mã nguồn và kiểm thử phần mềm. Lộ trình tiếp cận theo mô hình tăng cường từ mức đúng đắn chức năng đến tối ưu hóa chất lượng giúp người học hình thành tư duy kỹ thuật chuẩn xác. Để đạt hiệu quả cao, người học nên kết hợp nghiên cứu lý thuyết trong giáo trình với việc cài đặt thực tế trên các hệ quản trị cơ sở dữ liệu (SQL Server, Oracle) và các ngôn ngữ lập trình hướng đối tượng (Java, C#/.NET), đồng thời tham chiếu các mô hình chi tiết tại phần phụ lục kỹ thuật của tài liệu.