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

Giáo trình Nhập môn Công nghệ phần mềm được biên soạn bởi tác giả Nguyễn Thế Dũng, giảng viên Khoa Tin học, Trường Đại học Sư phạm – Đại học Huế (hoàn thành vào tháng 11 năm 2014). Tài liệu được xuất bản nhằm phục vụ trực tiếp cho công tác giảng dạy và học tập học phần "Nhập môn Công nghệ phần mềm" (Mã số học phần: TINS4392), bám sát khung chương trình đào tạo giáo viên Tin học Trung học phổ thông do Bộ Giáo dục và Đào tạo ban hành năm 2007.

Về mục tiêu học tập (learning outcomes), giáo trình trang bị cho người học sự hiểu biết toàn diện về quá trình phát triển phần mềm theo phương thức công nghiệp và có hệ thống; làm rõ các khái niệm, quy tắc và nguyên lý cơ bản trong lĩnh vực kỹ nghệ phần mềm. Trên cơ sở đó, sinh viên có thể vận dụng kiến thức để phân tích, thiết kế, cài đặt, kiểm thử và bảo trì các phần mềm quy mô vừa và nhỏ phục vụ thực tế công việc cũng như các đề án môn học.

Cấu trúc giáo trình gồm 7 chương bám sát vòng đời phát triển phần mềm (SDLC):

  • Chương 1: Tổng quan về công nghệ phần mềm
  • Chương 2: Qui trình phát triển phần mềm
  • Chương 3: Phân tích và đặc tả yêu cầu
  • Chương 4: Thiết kế
  • Chương 5: Lập trình
  • Chương 6: Kiểm thử
  • Chương 7: Triển khai và bảo trì

Điểm đặc thù trong cấu trúc của giáo trình là việc tách riêng mảng "Quản lý dự án phần mềm" thành một học phần độc lập (2 tín chỉ theo khung chương trình), giúp tài liệu tập trung sâu vào các công đoạn kỹ thuật cốt lõi. Giáo trình được thiết kế phù hợp với đối tượng sinh viên Sư phạm Tin học thông qua việc tinh giản tính lý thuyết thuần túy của các sách chuyên khảo, bổ sung hệ thống câu hỏi, bài tập định hướng thực tiễn cuối mỗi chương và cung cấp bảng đối chiếu thuật ngữ chuyên ngành Anh - Việt chuẩn hóa.


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

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

Nội dung 7 chương trong giáo trình được tổ chức tuần tự theo tiến trình phát triển phần mềm:

  • Chương 1: Tổng quan về công nghệ phần mềm: Trình bày định nghĩa phần mềm theo nghĩa rộng và nghĩa hẹp; phân biệt các khái niệm Khoa học, Kỹ thuật, Công nghệ (theo ESCAP), Kỹ nghệ và Công nghiệp; phân tích định nghĩa Kỹ nghệ phần mềm theo IEEE (1993), R. Pressman (2001) và I. Sommerville (2007); phân loại 4 tầng kỹ nghệ phần mềm (Chất lượng, Quy trình, Phương pháp, Công cụ); phân tích 21 vị trí nghề nghiệp trong ngành công nghiệp phần mềm; phân tích đặc trưng của sản phẩm phần mềm (sản phẩm logic, vô hình, không hỏng cơ học nhưng thoái hóa theo thời gian, phát triển mới từ đầu) và 14 nhóm khó khăn trong sản xuất phần mềm.
  • Chương 2: Qui trình phát triển phần mềm: Trình bày vòng đời phát triển hệ thống (SDLC) gồm 4 giai đoạn (Vạch kế hoạch, Phân tích, Thiết kế, Triển khai); khảo sát các mô hình phát triển phần mềm tiêu biểu gồm: Mô hình Thác nước (Waterfall), Bản mẫu (Prototyping), Xoắn ốc (Spiral Model của Boehm), Tăng trưởng (Incremental), Phát triển ứng dụng nhanh (RAD), Phát triển dựa trên cấu phần (Component-based với quan điểm "Buy do not build"), Kỹ thuật thế hệ thứ 4 (4GT), và Tiến trình hợp nhất Rational (RUP với 4 pha: Khởi đầu - Inception, Hình thành - Elaboration, Xây dựng - Construction, Chuyển giao - Transition); giới thiệu công cụ trợ giúp tự động hóa CASE (phân loại theo chức năng, tiến trình, tích hợp; các cấp độ Tools, Workbenches, Environments).
  • Chương 3: Phân tích và đặc tả yêu cầu: Bao gồm kỹ nghệ yêu cầu, nguyên lý phân tích và mô hình hóa, xây dựng tài liệu đặc tả yêu cầu phần mềm (SRS), thẩm định yêu cầu, làm bản mẫu và phân tích theo mô hình tiến trình hợp nhất (Unified Process Model).
  • Chương 4: Thiết kế: Trình bày các phương pháp thiết kế hướng chức năng, thiết kế kiến trúc (dữ liệu tập trung, Client-Server, phân tầng, gọi và trả lại, điều khiển quảng bá, điều khiển hướng ngắt, tạo kiến trúc từ DFD), thiết kế giao diện người dùng, thiết kế thủ tục và thiết kế hướng đối tượng.
  • Chương 5: Lập trình: Phân tích tiêu chí lựa chọn ngôn ngữ lập trình, phong cách lập trình chuẩn mực, kỹ thuật lập trình phòng thủ, xử lý ngoại lệ và tối ưu hóa hiệu quả thực thi.
  • Chương 6: Kiểm thử: Phân định các mức độ kiểm thử theo Mô hình chữ V, các chiến thuật và kỹ thuật kiểm thử (hộp trắng, hộp đen, kiểm thử hướng đối tượng), cùng phương pháp chứng minh toán học tính đúng đắn của chương trình.
  • Chương 7: Triển khai và bảo trì: Quy trình cài đặt, hiện thực hóa và triển khai hệ thống theo mô hình hướng đối tượng; phân loại 3 hình thức bảo trì (sửa đổi, thích nghi, hoàn thiện/nâng cao); quản lý quy trình và các độ đo thống kê chi phí bảo trì.

Progression logic của giáo trình đi từ việc xây dựng nhận thức tổng quan về ngành nghề, nắm vững quy trình khung, sau đó đi chi tiết vào từng pha kỹ thuật từ thu thập yêu cầu, thiết kế kiến trúc/thành phần, lập trình, kiểm thử đến bàn giao và bảo trì.

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

  • Fundamental theories: Bản chất logic của phần mềm; lý thuyết về vòng đời phát triển hệ thống SDLC; lý thuyết quản lý rủi ro và tiếp cận lặp trong mô hình xoắn ốc của Boehm; lý thuyết tiến hóa và thoái hóa phần mềm theo thời gian.
  • Core principles: Mô hình 4 tầng kỹ nghệ phần mềm lấy chất lượng làm trọng tâm; nguyên lý phân tích và mô hình hóa hệ thống; nguyên lý tái sử dụng phần mềm ("Buy do not build"); nguyên lý kiểm thử theo mô hình chữ V tương ứng giữa các pha phát triển và các cấp độ kiểm thử.
  • Essential frameworks: Khung tiến trình phần mềm (Process framework gồm Framework activities và Umbrella activities); Khung quy trình Rational Unified Process (RUP) với 4 pha vòng đời và các luồng công việc kỹ nghệ/hỗ trợ; Kiến trúc phần mềm chuẩn (Client-Server, Phân tầng, Dữ liệu tập trung, Kiến trúc luồng giao dịch/luồng chuyển đổi).

Kỹ năng phát triển

  • Technical skills: Kỹ năng sử dụng các công cụ CASE hỗ trợ mô hình hóa, gỡ lỗi và quản trị; kỹ năng thiết kế kiến trúc hệ thống, thiết kế giao diện và thiết kế hướng đối tượng bằng UML; kỹ năng lập trình an toàn, xử lý ngoại lệ; kỹ năng thiết kế kịch bản kiểm thử (test case) theo các mức độ.
  • Analytical skills: Kỹ năng phân tích tính khả thi của dự án (kỹ thuật, kinh tế, tổ chức); phân tích và phân rã chức năng hệ thống (DFD); kỹ năng rút trích, phân loại yêu cầu chức năng và phi chức năng từ phía người dùng; phân tích rủi ro kỹ thuật trong từng giai đoạn lặp.
  • Practical competencies: Kỹ năng soạn thảo tài liệu kỹ thuật chuẩn (SRS, tài liệu thiết kế, hướng dẫn vận hành); kỹ năng làm việc nhóm và xác định vai trò vị trí công việc theo quy trình công nghiệp; năng lực đánh giá, thẩm định chất lượng và bảo trì hệ thống phần mềm.

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

Giáo trình áp dụng cách tiếp cận sư phạm có hệ thống, chuyển dịch từ việc giảng dạy lý thuyết trừu tượng sang việc cung cấp các mô hình, quy trình và kỹ thuật cụ thể có thể thực hành được:

  • Phương pháp sư phạm (Pedagogical approach): Kết hợp giữa diễn giải khái niệm chuẩn xác (trích dẫn các chuẩn IEEE, ESCAP, Pressman, Sommerville) và sơ đồ hóa trực quan. Giáo trình tích hợp danh mục biểu bảng gồm các sơ đồ kiến trúc, sơ đồ luồng dữ liệu (DFD), sơ đồ use-case, mô hình tiến trình RUP, mô hình chữ V và các bảng thống kê chi phí bảo trì.
  • Bài tập và Case studies: Cuối mỗi chương đều có phần tóm tắt nội dung cốt lõi và hệ thống câu hỏi, bài tập tự luận. Các bài tập yêu cầu sinh viên so sánh, phân biệt các khái niệm (ví dụ: Khoa học Máy tính vs. Công nghệ Phần mềm, Công nghệ Hệ thống vs. Công nghệ Phần mềm), phân tích ưu nhược điểm của các mô hình tiến trình, và giải quyết bài toán tình huống thực tế (chẳng hạn như ca điển hình về xây dựng mô hình use-case cho bài toán quản lý học tập tại một trung tâm).
  • Thực hành (Practical exercises): Đòi hỏi người học vận dụng các công cụ CASE, thực hành chuyển đổi luồng dữ liệu DFD sang cấu trúc kiến trúc phần mềm, viết mã xử lý ngoại lệ và thiết kế bộ kiểm thử đơn thể/tích hợp cho các phần mềm cỡ nhỏ.
  • Phương pháp đánh giá (Assessment methods): Đánh giá quá trình thông qua khả năng hoàn thành hệ thống câu hỏi kiểm tra kiến thức cuối chương, đánh giá năng lực mô hình hóa thông qua bài tập lớn thiết kế hệ thống, và đánh giá kết thúc học phần dựa trên việc xây dựng một sản phẩm phần mềm hoàn chỉnh ở quy mô đề án.
  • Hướng dẫn tự học (Self-study guidelines): Giáo trình định hướng người học tự tra cứu mở rộng trên Internet về các chủ đề chi phí dự án, lịch sử phát triển SE, đồng thời sử dụng Bảng đối chiếu thuật ngữ Anh – Việt (gồm các thuật ngữ như Software Requirement Specification, Architectural Design, Unified Process Model, Transaction Flow, CASE, Workbenches, Stereotype,...) để đọc hiểu các tài liệu học thuật quốc tế.

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

  • Cấu trúc tinh gọn, phù hợp chương trình đào tạo: So với các giáo trình chuyên khảo dày đặc, tài liệu đã lược bỏ phần quản lý dự án (được tách thành môn học 2 tín chỉ riêng biệt) để tập trung toàn bộ dung lượng vào các pha kỹ thuật của chu trình công nghệ phần mềm.
  • Tích hợp các phương pháp luận hiện đại: Cập nhật các mô hình phát triển tiên tiến tại thời điểm biên soạn như Rational Unified Process (RUP), kỹ thuật phát triển dựa trên cấu phần (Component-based Software Engineering), kỹ thuật thế hệ thứ tư (4GT) và ngôn ngữ mô hình hóa thống nhất UML.
  • Phân loại nghề nghiệp chi tiết: Hệ thống hóa cụ thể 21 vị trí công việc trong ngành công nghệ phần mềm (Lập trình viên, Kỹ sư phần mềm, Phân tích viên hệ thống, Kỹ sư tri thức, Quản trị cơ sở dữ liệu - DBA, Kỹ sư trí tuệ nhân tạo, Chuyên gia bảo mật, Kiểm soát viên, Nhân viên đảm bảo chất lượng - QA,...), giúp sinh viên ngành Sư phạm nắm bắt bức tranh toàn cảnh để định hướng nghề nghiệp cho học sinh phổ thông.
  • Dữ liệu thực tiễn và bảng thuật ngữ chuẩn hóa: Cung cấp các số liệu thực tế về chi phí bảo trì phần mềm (trích dẫn nguồn tài liệu tham khảo [8]), bảng đối chiếu chuẩn xác các thuật ngữ chuyên môn Anh - Việt, giúp người học làm quen với ngôn ngữ kỹ thuật tiêu chuẩn trong công nghiệp phần mềm.

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

  • Sinh viên mục tiêu: Sinh viên bậc Đại học ngành Sư phạm Tin học học tập học phần Nhập môn Công nghệ phần mềm (Mã học phần: TINS4392); sinh viên các ngành Công nghệ thông tin, Kỹ thuật phần mềm, Hệ thống thông tin cần tài liệu nền tảng về quy trình kỹ thuật phần mềm.
  • Kiến thức 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: Tin học đại cương, Kỹ thuật lập trình, Cấu trúc dữ liệu và giải thuật, Cơ sở dữ liệu.
  • Đối với giảng viên: Tài liệu đóng vai trò là giáo trình giảng dạy chính thức, cung cấp khung chương trình chi tiết, hệ thống thuật ngữ thống nhất, câu hỏi ôn tập và gợi ý bài tập thực hành để xây dựng đề cương bài giảng và ngân hàng đề thi.
  • Tự học và tham khảo: Phù hợp cho giáo viên Tin học cấp Trung học phổ thông sử dụng làm tài liệu tham khảo phục vụ giảng dạy hướng nghiệp; các lập trình viên mới vào nghề cần hệ thống hóa kiến thức về quy trình SDLC và các chuẩn mực tài liệu kỹ thuật.

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 chuyên biệt cho sinh viên đại học ngành Sư phạm Tin học và sinh viên ngành Công nghệ Thông tin bước đầu tiếp cận quy trình xây dựng phần mềm chuyên nghiệp. Ngoài ra, giáo viên Tin học THPT có thể sử dụng làm tài liệu tham khảo cho hoạt động định hướng nghề nghiệp CNTT.

2. Cần kiến thức nền nào để học giáo trình này?

Người học cần nắm vững kiến thức lập trình cơ bản (tư duy thuật toán, cú pháp ngôn ngữ lập trình), kiến thức về cấu trúc dữ liệu và hiểu biết cơ bản về cơ sở dữ liệu để có thể tiếp thu các nội dung về phân tích, thiết kế và cài đặt hệ thống.

3. Điểm khác biệt của giáo trình này so với các giáo trình Công nghệ phần mềm khác?

Giáo trình không gộp nội dung Quản lý dự án phần mềm (do khung chương trình đào tạo đã tách thành học phần 2 tín chỉ riêng biệt). Nội dung được cô đọng, giảm tính hàn lâm chuyên khảo phức tạp, tập trung vào kỹ năng phân tích, thiết kế, lập trình, kiểm thử và bảo trì các phần mềm cỡ nhỏ đáp ứng thực tế.

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

Người học nên học tuần tự theo 7 chương tương ứng với vòng đời SDLC; hoàn thành đầy đủ hệ thống câu hỏi và bài tập cuối mỗi chương; thực hành vẽ các sơ đồ phân tích/thiết kế (DFD, use-case) trên các công cụ CASE; và chủ động tra cứu các chủ đề mở rộng trên Internet theo gợi ý của giáo trình.

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

Giáo trình đi kèm hệ thống danh mục biểu bảng kỹ thuật, bảng đối chiếu 21 thuật ngữ chuyên ngành Anh - Việt chuẩn hóa, cùng danh mục tài liệu tham khảo học thuật từ các tác giả kinh điển trong ngành như Roger Pressman, Ian Sommerville, Barry Boehm và các tiêu chuẩn của tổ chức IEEE.


Kết luận

Giáo trình Nhập môn Công nghệ phần mềm của tác giả Nguyễn Thế Dũng (Trường Đại học Sư phạm – Đại học Huế) cung cấp một hệ thống tri thức hoàn chỉnh, có kỷ luật và định lượng về quy trình kỹ nghệ phần mềm theo các chuẩn mực quốc tế (IEEE, Pressman, Sommerville).

Lộ trình học tập khuyến nghị là tiếp cận tuần tự từ nhận thức tổng quan ở Chương 1, nắm vững các mô hình vòng đời ở Chương 2, đi sâu vào các kỹ thuật chuyên môn từ Chương 3 đến Chương 7, kết hợp song song với việc thực hiện đề án xây dựng phần mềm quy mô nhỏ.

Để mở rộng kiến thức, người học có thể kết hợp nghiên cứu học phần Quản lý dự án phần mềm, tham khảo các tài liệu chuyên khảo của R. Pressman (Software Engineering: A Practitioner's Approach), I. Sommerville (Software Engineering) và trang tư liệu học thuật của tác giả tại http://sites.com/site/nguyenthedunghue/.