Giáo trình Công nghệ Phần mềm (CMP101*) – Đại học Công nghệ TP.HCM

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

Tài liệu học tập "Công nghệ Phần mềm" (Mã học phần: CMP101*) do tập thể giảng viên Khoa Công nghệ Thông tin, Trường Đại học Công nghệ TP.HCM (HUTECH) biên soạn vào năm 2021, bao gồm: ThS. Dương Thành Phết, ThS. Nguyễn Ngọc Lâm, ThS. Trần Ngọc Kiến Phúc, ThS. Nguyễn Chí Toàn và ThS. Nguyễn Hữu Trung. Giáo trình giữ vai trò là môn học cơ sở ngành bắt buộc trong chương trình đào tạo kỹ sư và cử nhân ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và Hệ thống Thông tin.

Về mục tiêu học tập, học phần cung cấp nền tảng kiến thức toàn diện về chu kỳ sống của phần mềm (Software Development Life Cycle - SDLC), các nguyên lý kỹ thuật, phương pháp luận tổ chức quản lý, cùng các công cụ và môi trường hỗ trợ phát triển. Giáo trình định hướng giúp sinh viên tiếp cận việc xây dựng phần mềm một cách có hệ thống, có phương pháp luận khoa học, thay vì dựa vào thói quen lập trình tự phát. Thông qua nội dung đào tạo, người học có khả năng phân tích, mô hình hóa, thiết kế, cài đặt, kiểm thử và bảo trì các hệ thống phần mềm đáp ứng nhu cầu thực tế của doanh nghiệp.

Giáo trình được xây dựng theo cách tiếp cận tiến trình kỹ thuật chuẩn mực, chia thành 9 bài học tương ứng với các pha phát triển phần mềm trong thực tế. Điểm đặc sắc của tài liệu là sự dung hòa giữa các mô hình phát triển phần mềm cổ điển (như Mô hình Thác nước, Mô hình Chữ V) với các phương pháp luận hiện đại (như Mô hình Tăng trưởng, Phương pháp Agile và Quy trình Scrum). Đồng thời, tài liệu tích hợp các tiêu chuẩn chất lượng công nghiệp, các mẫu thiết kế thực tiễn như Repository Design Pattern và chuẩn mực đạo đức nghề nghiệp kỹ sư phần mềm (Code of Ethics).


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

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

Nội dung giáo trình được phân bổ thành 9 bài học theo trình tự logic của vòng đời phát triển phần mềm:

  • Bài 1: Tổng quan về Công nghệ Phần mềm: Trình bày bối cảnh lịch sử dẫn đến sự ra đời của ngành từ "cuộc khủng hoảng phần mềm" năm 1968; định nghĩa và phân loại phần mềm (phần mềm hệ thống, phần mềm ứng dụng, sản phẩm đại trà - Generic Product, sản phẩm theo đơn đặt hàng - Bespoke Product); kiến trúc ba thành phần (giao diện, dữ liệu, xử lý); sáu tiêu chuẩn đánh giá chất lượng phần mềm; vòng đời phát triển SDLC; phân tích ưu nhược điểm của các mô hình phát triển (Waterfall, V-Model, Prototype, Spiral, RAD, Iterative, Incremental, Agile/Scrum); phân loại phương pháp xây dựng phần mềm; tổng quan về công cụ CASE (Computer-Aided Software Engineering) và các nguyên tắc đạo đức nghề nghiệp.
  • Bài 2: Phân tích và Đặc tả Yêu cầu Phần mềm: Trình bày mục đích và kỹ thuật xác định phạm vi dự án; phân tích các yêu cầu phi chức năng quan trọng (bảo mật dựa trên vai trò - RBAC, hiệu năng và tốc độ xử lý tính bằng TPM, băng thông, nút thắt hệ thống qua công cụ giám sát, tính vận hành, tính sẵn dùng, yếu tố con người, yêu cầu tích hợp qua ODBC); 4 kỹ thuật thu thập yêu cầu (phỏng vấn, ấn định công việc tạm thời, khảo sát qua bảng câu hỏi, xem xét tài liệu hiện trạng); quy trình phân loại, lập tài liệu đặc tả yêu cầu và các kỹ thuật thẩm định yêu cầu.
  • Bài 3: Mô hình hóa Phần mềm: Giới thiệu ngôn ngữ mô hình hóa thống nhất UML (Unified Modeling Language); hướng dẫn xây dựng các loại lược đồ mô hình hóa nghiệp vụ và yêu cầu: Lược đồ ngữ cảnh (Context Diagram), Lược đồ hoạt động (Activity Diagram), Lược đồ trạng thái (State Diagram), Lược đồ trường hợp sử dụng (Use Case Diagram), Lược đồ tuần tự (Sequence Diagram), cùng Lược đồ thực thể kết hợp (ERD).
  • Bài 4: Thiết kế Phần mềm: Tổng quan nguyên lý thiết kế hệ thống và thiết kế giao diện người dùng (UI); phân tích các mô hình kiến trúc phần mềm phổ biến bao gồm mô hình Client - Server - Service, mô hình mạng ngang hàng (Peer-to-Peer) và kiến trúc điện toán đám mây (Clouding).
  • Bài 5: Thiết kế và Tổ chức Dữ liệu: Phương pháp xác định các thành phần dữ liệu của bài toán; kỹ thuật xây dựng sơ đồ dữ liệu theo hướng tiếp cận trực tiếp và gián tiếp; quy chuẩn đặc tả chi tiết các trường dữ liệu; tổng quan về các hệ quản trị cơ sở dữ liệu (DBMS).
  • Bài 6: Thiết kế Giao diện, Xử lý và Thuật toán: Các nguyên tắc thiết kế và đặc tả luồng thông tin giao diện người dùng; phân loại, xác định tính chất, vai trò của quy trình xử lý nghiệp vụ; kỹ thuật lập sơ đồ và đặc tả thuật toán chi tiết.
  • Bài 7: Thiết kế Lớp và Xây dựng Chương trình: Kỹ thuật thiết kế sơ đồ lớp (Class Diagram); ứng dụng mẫu thiết kế Repository (Repository Design Pattern); các tiêu chí mô-đun hóa trong ngôn ngữ lập trình; định hình phong cách lập trình (Coding Conventions); quy trình kiểm tra và đánh giá chất lượng thiết kế cùng mã nguồn (Design and Code Review).
  • Bài 8: Kiểm thử Chất lượng Phần mềm: Khái niệm và mục tiêu kiểm thử; 3 kỹ thuật kiểm thử cốt lõi gồm Kiểm thử Hộp đen (Black-box Testing), Kiểm thử Hộp trắng (White-box Testing) và Kiểm thử Hộp xám (Grey-box Testing); các cấp độ kiểm thử trong chiến lược kiểm thử phần mềm gồm Kiểm thử Chức năng (Functional Test), Kiểm thử Tích hợp, Kiểm thử Hệ thống (System Test) và Kiểm thử Chấp nhận (Acceptance Test).
  • Bài 9: Bảo trì và Phát triển Phần mềm: Khái niệm, tầm quan trọng và chi phí vòng đời của công tác bảo trì; quy trình lập kế hoạch và các bước thực thi bảo trì phần mềm; cơ chế mở rộng và tiến hóa phần mềm trong các phương pháp luận phát triển khác nhau.

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

Giáo trình thiết lập hệ thống lý luận học thuật vững chắc dựa trên:

  • Lý thuyết chu kỳ sống phần mềm (SDLC): Phân định ranh giới giữa ba pha lớn gồm Xác định, Phát triển (Thiết kế, Cài đặt, Kiểm thử) và Vận hành/Bảo trì.
  • Ba đối tượng nghiên cứu cốt lõi của kỹ nghệ phần mềm: Bao gồm Quy trình công nghệ, Phương pháp kỹ thuật (hướng chức năng với nguyên lý "chia để trị", hướng dữ liệu, hướng đối tượng) và Công cụ/Môi trường phát triển hỗ trợ (CASE Tools/SDE).
  • Nguyên lý phát triển Agile và khung làm việc Scrum: 4 tuyên ngôn Agile; 3 giá trị cốt lõi của Scrum (Minh bạch - Transparency, Thanh tra - Inspection, Thích nghi - Adaptation); 3 vai trò cấu thành (Product Owner, Scrum Master, Development Team); 4 sự kiện chính (Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective); 3 tạo tác đặc thù (Product Backlog, Sprint Backlog, Burndown Chart).
  • Khung thẩm định chất lượng: Hệ thống 6 đặc tính kỹ thuật định lượng: tính đúng đắn, tính tiến hóa, tính hiệu quả, tính tiện dụng, tính tương thích và tính tái sử dụng.

Kỹ năng phát triển

Thông qua nội dung các bài học, người học được rèn luyện các nhóm kỹ năng cụ thể:

  • Kỹ năng kỹ thuật chuyên môn: Năng lực phân tích và lập tài liệu đặc tả yêu cầu người dùng; kỹ năng sử dụng UML để trực quan hóa kiến trúc và luồng xử lý; kỹ năng thiết kế cơ sở dữ liệu quan hệ; kỹ năng tổ chức mã nguồn theo Repository Pattern; kỹ năng thiết kế ca kiểm thử (test cases) theo phương pháp hộp đen và hộp trắng.
  • Kỹ năng phân tích hệ thống: Nhận diện và giải quyết các nút thắt hiệu năng (Performance Bottlenecks) thông qua các thông số đo lường như TPM (Transactions Per Minute), băng thông mạng và năng lực bộ nhớ; phân tích đánh giá mức độ rủi ro trong mô hình Xoắn ốc (Spiral Model).
  • Năng lực vận hành thực tế: Thực hành phối hợp nhóm liên chức năng (Cross-functional Team) theo mô hình Scrum; áp dụng quy trình rà soát thiết kế và mã nguồn (Design & Code Review); sử dụng thành thạo các công cụ CASE hỗ trợ kiểm thử tự động và quản lý dự án.

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

Giáo trình được thiết kế theo định hướng sư phạm tích hợp lý thuyết quy trình với bài tập kỹ thuật thực hành. Tài liệu dẫn dắt người học từ việc thấu hiểu các vấn đề bản chất của phần mềm đến việc áp dụng các công cụ kỹ thuật để giải quyết các bài toán công nghệ.

Cấu trúc bài tập và tình huống thực hành

Hệ thống câu hỏi và bài tập trong giáo trình tập trung vào việc đối sánh và rèn luyện tư duy phân tích:

  • Câu hỏi đối sánh mô hình: Yêu cầu sinh viên phân tích sự khác biệt về mặt cấu trúc, phạm vi ứng dụng giữa các mô hình Waterfall, Prototype, Spiral, Iterative, Incremental và Scrum.
  • Bài tập tình huống nghiệp vụ: Đặt sinh viên vào các kịch bản thu thập yêu cầu thực tế, yêu cầu nhận diện các quy tắc nghiệp vụ (Business Rules), phân biệt giữa yêu cầu hệ thống và mục tiêu trừu tượng của người dùng.
  • Bài tập thiết kế và mô hình hóa: Yêu cầu vẽ và đặc tả lược đồ dòng dữ liệu (DFD), lược đồ thực thể kết hợp (ERD), các loại biểu đồ UML và sơ đồ lớp cho các bài toán quản lý thực tế (như hệ thống mượn trả thư viện, hệ thống bán hàng).
  • Bài tập kiểm thử: Thiết kế các bộ dữ liệu kiểm thử biên, kiểm thử phân vùng tương đương và lập kịch bản kiểm thử chức năng cho các module phần mềm.

Phương pháp đánh giá môn học

Giáo trình nêu rõ quy định đánh giá kết quả học tập của học phần Công nghệ Phần mềm bao gồm hai thành phần với tỷ lệ ngang nhau:

  • Điểm đánh giá quá trình (50%): Đánh giá mức độ chuyên cần, kết quả trả lời câu hỏi ôn tập, bài tập về nhà và các bài kiểm tra định kỳ trên lớp.
  • Điểm thi kết thúc học phần (50%): Đánh giá thông qua hình thức thực hiện và bảo vệ Đồ án học phần. Đồ án yêu cầu sinh viên làm việc theo nhóm để hoàn thiện một sản phẩm phần mềm, lập đầy đủ bộ tài liệu từ phân tích yêu cầu, thiết kế kiến trúc, cài đặt mã nguồn đến kịch bản kiểm thử.

Hướng dẫn tự học cho sinh viên

Tài liệu đưa ra quy trình học tập khép kín dành cho người học:

  1. Trước khi lên lớp: Nghiên cứu trước mục tiêu bài học, đọc phần tóm tắt lý thuyết và toàn văn nội dung bài giảng.
  2. Trong quá trình học: Sau mỗi đơn vị kiến thức nhỏ, người học phải trả lời ngay các câu hỏi kiểm tra nhanh để củng cố khái niệm.
  3. Kết thúc bài học: Hoàn thành toàn bộ câu hỏi ôn tập và các bài tập tình huống cuối chương; chủ động tìm kiếm các tài liệu liên quan đến học phần theo danh mục tài liệu tham khảo.

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

  • Tích hợp toàn diện các mô hình phát triển phần mềm đương đại: Bên cạnh việc giảng dạy chi tiết các quy trình tuần tự truyền thống (Waterfall, V-Model), giáo trình dành dung lượng đáng kể cho các phương pháp luận phát triển nhanh và linh hoạt như RAD, Iterative, Incremental và đặc biệt là phương pháp Agile cùng quy trình Scrum với đầy đủ vai trò, sự kiện và công cụ đặc thù.
  • Cập nhật kiến trúc phần mềm phân tán và điện toán đám mây: Bài 4 của giáo trình không chỉ dừng lại ở kiến trúc Client - Server truyền thống mà còn phân tích cấu trúc Peer-to-Peer và mô hình điện toán đám mây (Clouding), phản ánh sự chuyển dịch công nghệ trong môi trường thực tế.
  • Ứng dụng mẫu thiết kế kiến trúc Repository Design Pattern: Tại Bài 7, giáo trình đưa vào nội dung hướng dẫn triển khai Repository Pattern. Đây là mẫu thiết kế thực tế giúp tách biệt tầng truy cập dữ liệu (Data Access Layer) khỏi tầng nghiệp vụ (Business Logic), tạo tiền đề cho việc xây dựng mã nguồn dễ bảo trì và kiểm thử.
  • Hệ thống hóa các công cụ CASE hiện đại: Giáo trình giới thiệu danh mục công cụ hỗ trợ trải rộng trên tất cả các giai đoạn:
    • Công cụ phân tích, thiết kế: Rational Rose, Wind&D, Analyst Pro, Power Designer, Oracle Designer, MS Visio.
    • Môi trường lập trình: Visual Studio .NET, Android Studio, Dev-C++, Sublime Text, Visual Studio Code.
    • Công cụ kiểm thử tự động: Katalon Studio, Selenium, LoadStorm, QuickTestPro.
    • Công cụ lập kế hoạch và quản lý dự án: MS Project.
  • Chuẩn hóa đạo đức nghề nghiệp kỹ sư: Giáo trình đưa vào 8 nguyên tắc ứng xử và ra quyết định theo bản Code of Ethics của các tổ chức tin học quốc tế (nhấn mạnh các yếu tố: sự tin cẩn, năng lực chuyên môn, tôn trọng quyền sở hữu trí tuệ và chống lạm dụng máy tính).

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

  • Sinh viên đại học khối ngành Công nghệ thông tin: Tài liệu được biên soạn phục vụ trực tiếp cho sinh viên năm thứ hai hoặc năm thứ ba các ngành Công nghệ Thông tin, Kỹ thuật Phần mềm, Khoa học Máy tính và Hệ thống Thông tin Quản lý thuộc hệ đào tạo đại học chính quy.
  • Yêu cầu kiến thức tiền đề (Prerequisites): Người học cần tích lũy các khối kiến thức nền tảng trước khi tiếp cận học phần, bao gồm:
    • Kiến thức về ngôn ngữ lập trình căn bản và kinh nghiệm xây dựng ứng dụng cơ bản.
    • Khả năng vận dụng cấu trúc dữ liệu và giải thuật.
    • Hiểu biết cơ bản về kiến trúc máy tính và nguyên lý mạng máy tính.
  • Giảng viên chuyên ngành: Tài liệu đóng vai trò là khung đề cương bài giảng chuẩn, cung cấp hệ thống thuật ngữ thống nhất, cấu trúc bài giảng 9 chương rõ ràng và định hướng ra đề tài cho đồ án môn học.
  • Kỹ sư phần mềm mới bắt đầu: Giáo trình là tài liệu tham khảo hệ thống hóa toàn bộ quy trình phát triển phần mềm chuẩn mực, hỗ trợ các lập trình viên mới gia nhập doanh nghiệp nắm vững quy trình kỹ thuật, kỹ năng viết tài liệu đặc tả và các quy tắc làm việc nhóm trong môi trường Scrum.

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ế chuẩn mực cho sinh viên đại học ngành Công nghệ Thông tin và Kỹ thuật Phần mềm đã qua giai đoạn học lập trình căn bản, đồng thời phù hợp cho giảng viên làm tài liệu giảng dạy và kỹ sư mới ra trường cần củng cố kiến thức về quy trình SDLC và kỹ thuật kiểm thử.

2. Cần trang bị kiến thức nền tảng nào trước khi học giáo trình này?

Học phần đòi hỏi sinh viên phải có kiến thức tiên quyết về lập trình ứng dụng, nắm vững cấu trúc dữ liệu và giải thuật, đồng thời có hiểu biết cơ bản về cấu trúc phần cứng, kiến trúc máy tính và hệ thống mạng máy tính.

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

Tài liệu không dạy cú pháp một ngôn ngữ lập trình cụ thể mà tập trung vào phương pháp luận và kỹ thuật kỹ nghệ phần mềm: cách quản lý toàn bộ vòng đời sản phẩm từ xác định yêu cầu, lập mô hình phân tích (UML, ERD, DFD), thiết kế kiến trúc, tổ chức mã nguồn (Repository Pattern), đến kiểm thử và bảo trì hệ thống.

4. Phương pháp tự học giáo trình này như thế nào để đạt hiệu quả cao nhất?

Người học cần bám sát chỉ dẫn tự học: đọc trước mục tiêu bài học, trả lời hệ thống câu hỏi kiểm tra sau từng phần, hoàn thành bài tập cuối bài, và quan trọng nhất là áp dụng trực tiếp các kỹ thuật đã học vào việc phát triển đồ án phần mềm nhóm với tỷ lệ đánh giá 50% tổng điểm học phần.

5. Giáo trình có tài liệu bổ trợ hoặc kênh thông tin hỗ trợ nào không?

Giáo trình có hệ thống câu hỏi ôn tập cuối mỗi bài, danh mục tài liệu tham khảo chi tiết tại Phụ lục B. Mọi ý kiến đóng góp và thắc mắc học thuật của người học được ban biên soạn tiếp nhận chính thức qua hộp thư điện tử: tailieuhoctap@hutech.vn.


Kết luận

Giáo trình "Công nghệ Phần mềm" (CMP101*) của Trường Đại học Công nghệ TP.HCM cung cấp hệ thống kiến thức học thuật bài bản, bao quát toàn bộ các giai đoạn trong vòng đời phát triển phần mềm. Với cấu trúc 9 bài học đi từ nguyên lý tổng quan, phân tích, mô hình hóa đến thiết kế, kiểm thử và bảo trì, tài liệu phản ánh chính xác cấu trúc vận hành của ngành công nghiệp phần mềm hiện nay.

Lộ trình học tập hiệu quả nhất là kết hợp song song việc tiếp thu lý thuyết tiến trình với việc triển khai đồ án học phần thực tế, vận dụng các công cụ CASE và mô hình Scrum đã được hướng dẫn. Để đào sâu các khía cạnh chuyên biệt, người học có thể tham khảo danh mục tài liệu tại Phụ lục B cùng các hướng dẫn sử dụng công cụ kiểm thử và phân tích hệ thống được đính kèm trong giáo trình.