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

Giáo trình Kiến trúc và Thiết kế Phần mềm do tác giả Nguyễn Xuân Huy biên soạn, là tài liệu giảng dạy học thuật phục vụ chương trình đào tạo đại học và sau đại học ngành Công nghệ Thông tin và Kỹ nghệ Phần mềm. Thời lượng nội dung của giáo trình được thiết kế tương đương với một học phần 50 tiết trên giảng đường.

                  GIÁO TRÌNH KIẾN TRÚC VÀ THIẾT KẾ PHẦN MỀM
                               (50 tiết học phần)
 Chương 1           Chương 2                      Chương 3           Chương 4
Khái niệm chung    Các mẫu kiến trúc            Ngôn ngữ UML     Phân tích yêu cầu
- Tiếp cận HT      - MVC, LA, RA, CS, PAF       - Phần tử        - Phân tích viên
- Ra quyết định    - Kiến trúc ứng dụng         - Quan hệ        - Làm bản mẫu
- Khung nhìn 4+1                                - Biểu đồ        - Kiểm điểm đặc tả

Về mục tiêu học tập, giáo trình tập trung vào việc trang bị cho học viên:

  • Bản chất và vai trò của thiết kế kiến trúc trong vòng đời sản xuất phần mềm.
  • Phương pháp tư duy hệ thống và quy trình đưa ra các quyết định kiến trúc khi bổ sung, phân chia hoặc tinh chỉnh các thành phần hệ thống.
  • Hệ thống tri thức về các mẫu kiến trúc (architectural patterns) phổ biến cùng khả năng tái sử dụng cấu trúc trong các ngữ cảnh ứng dụng cụ thể.
  • Kỹ năng xây dựng mô hình hóa bằng ngôn ngữ chuẩn và tổ chức, điều phối các nhóm kỹ thuật trong quá trình thiết kế tại doanh nghiệp.

Về cấu trúc và cách tiếp cận, nội dung sách được tổ chức từ mức độ trừu tượng cao đến cụ thể: bắt đầu từ lý thuyết hệ thống tổng quát, khảo sát các mẫu thiết kế tiêu chuẩn, đi qua công cụ mô hình hóa thống nhất UML, và kết nối trực tiếp với pha kỹ nghệ yêu cầu. Ngoài 4 chương nội dung chuyên môn, sách tích hợp hệ thống chủ đề hoạt động nhóm kéo dài gần 80 trang cùng 3 phần phụ lục chuyên biệt về các mô hình phát triển phần mềm, khái niệm kỹ nghệ phần mềm và bảng thuật ngữ chuẩn hóa.

Điểm đặc sắc của giáo trình là sự kết hợp giữa nền tảng lý thuyết khoa học chính xác (kế thừa các nghiên cứu của Dijkstra, Dahl, Hoare, Boëhm) với phương pháp luận công nghiệp hiện đại được tiếp thu từ Viện Nghiên cứu Phần mềm thuộc Đại học Carnegie Mellon (CMU - Hoa Kỳ) và Hội đồng tư vấn Giáo dục Microsoft.


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

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

Nội dung học thuật của giáo trình được triển khai qua 4 chương trọng tâm, bổ trợ bởi các tài liệu hướng dẫn thực hành và phụ lục:

  Trừu tượng hóa & Khung nhìn        Các mẫu kiến trúc chuẩn        Mô hình hóa hình thức
                                     Quy trình & Đóng gói hồ sơ     Đặc tả & Làm mịn
  • Chương 1: Khái niệm chung (8–32): Trình bày quan niệm phần mềm dưới dạng một hệ thống gồm các cấu phần (components) và mối liên kết (connectors). Chương này phân tích chi tiết hai kỹ thuật cơ bản: Trừu tượng hóa (bỏ qua chi tiết vụn vặt ở pha đầu) và Phân rã trên-xuống (top-down refinement). Tác giả cung cấp danh mục 9 nhóm quyết định kiến trúc sống còn, phân tích sự đánh đổi giữa các yêu cầu phi chức năng, giới thiệu nguyên lý khung nhìn và mô hình (4+1) quan điểm của Philippe Krutchen (Quan điểm logic, Quan điểm tiến trình, Quan điểm phát triển, Quan điểm vật lý và Use Case).
  • Chương 2: Các mẫu kiến trúc (33–40): Phân loại và phân tích 5 mẫu kiến trúc tiêu chuẩn theo cấu trúc 4 mục (Mô tả, Tình huống vận dụng, Ưu điểm, Nhược điểm):
    1. Model-View-Controller (MVC): Tách biệt quản lý dữ liệu, hiển thị và điều khiển tương tác.
    2. Kiến trúc Phân tầng (Layered Architecture - LA): Tổ chức hệ thống thành các lớp chức năng độc lập theo trật tự trên-dưới.
    3. Kiến trúc Kho chứa (Repository Architecture - RA): Tập trung dữ liệu vào kho trung tâm phục vụ tương tác gián tiếp giữa các cấu phần.
    4. Kiến trúc Khách - Chủ (Client - Server - CS): Phân phối dịch vụ trên mạng cho các máy khách đa nhiệm.
    5. Kiến trúc Ống và Lọc (Pipe and Filter - PAF): Xử lý dữ liệu tuần tự qua các bộ lọc độc lập theo dạng luồng (dùng trong xử lý theo lô hoặc giao dịch tương tranh).
  • Chương 3: Ngôn ngữ mô hình hóa thống nhất UML (41–70): Khái quát lịch sử hình thành UML từ các phương pháp Booch, OMT (Rumbaugh), OOSE (Jacobson) đến chuẩn OMG. Chương trình bày mô hình khái niệm gồm 3 thành tố: Phần tử (Cấu trúc, Hành vi, Nhóm, Chú thích), Quan hệ (Phụ thuộc, Kết hợp, Tụ hợp, Hợp thành, Khái quát hóa, Hiện thực hóa) và Biểu đồ mô hình.
  • Chương 4: Phân tích yêu cầu (71–98): Xác định phương pháp thu thập và làm mịn yêu cầu, kỹ thuật giao tiếp của phân tích viên, nguyên lý khảo sát miền thông tin, các kịch bản làm bản mẫu (prototyping) và quy trình kiểm điểm đặc tả (inspection) nhằm tránh lỗi ở pha sớm.
  • Các chủ đề Hoạt động nhóm và Phụ lục (99–216): Cung cấp các kịch bản bài tập dự án nhóm (trang 99–182), tiếp nối bởi Phụ lục 1 (Mô hình thác nước, tiến hóa, xoắn ốc), Phụ lục 2 (Khái niệm cơ bản của kỹ nghệ phần mềm) và Phụ lục 3 (Hệ thống thuật ngữ chuyên ngành).

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

Giáo trình củng cố các nền tảng lý thuyết hình thức và nguyên lý công nghệ:

  • Nguyên lý cấu trúc chương trình: Kế thừa hệ tiên đề kiểm chứng tính đúng của Hoare, nguyên lý lập trình theo đặc tả hình thức của Dahl và Dijkstra, nguyên lý D-cấu trúc của Boëhm và Dijkstra (chỉ sử dụng ba cấu trúc tuần tự, rẽ nhánh và lặp có điều kiện trước).
  • Nguyên lý lỗi nặng: Định lý thực nghiệm chỉ ra rằng các lỗi kiến trúc sinh ra ở pha phân tích và thiết kế ban đầu gây tổn thất lớn nhất và khó sửa đổi nhất trong quá trình phát triển.
  • Lý thuyết khung nhìn kiến trúc: Phương pháp luận tách biệt các mối quan tâm (separation of concerns) thông qua mô hình đa khung nhìn của Krutchen và Hofmeister.

Kỹ năng phát triển

Thông qua việc nghiên cứu giáo trình, người học xây dựng các nhóm năng lực:

  • Kỹ năng kỹ thuật (Technical skills): Khả năng mô hình hóa hệ thống phức tạp bằng ký pháp đồ họa UML; thiết kế cấu hình phần mềm phân tán và phần mềm nhúng; chuyển đổi giữa mô hình thiết kế và mã nguồn cài đặt.
  • Kỹ năng phân tích (Analytical skills): Năng lực đánh giá sự đánh đổi giữa các chỉ tiêu chất lượng (ví dụ: hiệu năng tính toán đối nghịch với khả năng duy tu, hoặc cơ chế bảo mật làm giảm tốc độ xử lý); khả năng phát hiện khiếm khuyết trong sơ đồ kiến trúc qua kiểm định logic.
  • Kỹ năng thực hành và quản lý (Practical competencies): Xây dựng bộ hồ sơ thiết kế kiến trúc chuẩn mực; điều hành hoạt động trao đổi với các bên liên quan (stakeholders) như khách hàng, nhà quản trị dự án và nhóm lập trình.

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

Giáo trình được biên soạn theo phương pháp tiếp cận sư phạm định hướng thực hành và giải quyết vấn đề (problem-based learning), đặt trọng tâm vào sự tương tác giữa lý thuyết mô hình và các bài toán thực tế.

                      CHU TRÌNH TIẾP CẬN SƯ PHẠM
(Hệ thống, Mẫu KT, UML)   (ATM, Thư viện, Di động)   (Hoạt động nhóm 80 trang)
  1. Khung phương pháp luận: Tác giả kết hợp lối trình bày diễn dịch (từ nguyên lý trừu tượng đến chi tiết cài đặt) xen kẽ các khối kiến thức đóng khung: Định nghĩa, Nguyên lý chỉ đạo, Thí dụ thực tế và Bài tập tư duy tình huống.
  2. Hệ thống ví dụ và tình huống nghiên cứu (Case studies): Các khái niệm trừu tượng luôn đi kèm bài toán trực quan lấy từ nhiều miền ứng dụng khác nhau:
    • Hệ thống phần mềm quản lý thư viện: Minh họa phương pháp phân rã cấu phần và xác định mối liên hệ giao tiếp giữa các hệ thống con (quản lý ấn phẩm, vi phim, tài liệu điện tử, phục vụ bạn đọc).
    • Hệ thống giao dịch ATM: Minh họa mô hình kiến trúc phân tầng kết nối giữa khách hàng, nhân viên và hệ thống tín dụng ngân hàng.
    • Phần mềm thiết bị di động và ngôi nhà thông minh (Smart House): Phân tích kiến trúc phần mềm nhúng, yêu cầu vận hành đơn bộ xử lý, cơ chế tiết kiệm năng lượng và an ninh tự động.
  3. Bài tập và hoạt động nhóm: Tài liệu dành riêng phần "Các chủ đề Hoạt động nhóm" (từ trang 99 đến 183) với các bài tập phân vai, yêu cầu học viên phối hợp xây dựng tài liệu đặc tả, chọn lựa mẫu kiến trúc và bảo vệ phương án thiết kế trước tập thể.
  4. Phương pháp đánh giá và tự học:
    • Đánh giá học phần được định hướng thông qua chất lượng của bộ hồ sơ thiết kế kiến trúc (Architectural baseline document), mức độ hợp lý của các quyết định kiến trúc và kết quả kiểm điểm đặc tả.
    • Hướng dẫn tự học nhấn mạnh vào việc rèn luyện tư duy đặt câu hỏi (theo 9 câu hỏi quyết định kiến trúc), tự đối sánh giải pháp trên các bảng kiểm mục (checklists) và tra cứu đối chiếu với 3 phần phụ lục thuật ngữ đi kèm.

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

Nội dung giáo trình phản ánh sự chuyển dịch quan trọng của ngành kỹ nghệ phần mềm từ giai đoạn lập trình cá thể sang kỹ nghệ hệ thống quy mô lớn:

Tiêu chí Tiếp cận truyền thống Tiếp cận trong giáo trình
Phân định vai trò Lập trình viên kiêm nhiệm kiến trúc hệ thống. Tách biệt vai trò kiến trúc sư phần mềm và lập trình viên.
Quy trình thiết kế Phát triển kiến trúc tăng dần mang tính chắp vá. Khởi tạo kiến trúc tổng thể vững chắc ngay từ pha sớm.
Mô hình hóa Sử dụng ký pháp phân tán, thiếu đồng nhất. Chuẩn hóa toàn diện trên nền tảng UML (chuẩn OMG).
Tái sử dụng Tái sử dụng ở cấp độ hàm hoặc module mã nguồn. Tái sử dụng ở cấp độ mẫu kiến trúc và dòng sản phẩm.
  • Tích hợp các xu hướng công nghệ: Giáo trình tích hợp các nội dung về kiến trúc cho hệ thống phân tán trên nền Web, hệ thống phần mềm nhúng trong vi mạch điện tử, và các cơ chế xử lý tương tranh trong cơ sở dữ liệu phân tán.
  • Mối liên hệ công nghiệp và học thuật quốc tế: Nội dung phản ánh các kết quả nghiên cứu và chuyển giao công nghệ từ các kỹ sư và nhà khoa học đầu ngành:
    • GS. John Vũ (Kỹ sư trưởng CNTT hãng Boeing, Giáo sư kiêm nhiệm Viện Nghiên cứu Phần mềm - CMU).
    • GS. Anthony Lattanze và TS. John Kang (Đại học Carnegie Mellon - CMU).
    • Các chuyên gia từ Viện Công nghệ Thông tin - Viện Hàn lâm KH&CN Việt Nam: PGS.TS. Đoàn Văn Ban, PGS.TS. Đặng Văn Đức, NCVCC Ngô Trung Việt, TS. Nguyễn Kim Ánh.

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

Giáo trình được thiết kế nhằm đáp ứng nhu cầu nghiên cứu và giảng dạy của nhiều nhóm đối tượng trong môi trường học thuật và công nghiệp:

                            ĐỐI TƯỢNG SỬ DỤNG
Sinh viên / Học viên           Giảng viên                      Kỹ sư / Tự học
- Sinh viên ĐH năm 3, 4        - Thiết kế bài giảng 50 tiết    - Lập trình viên nâng cao
- Học viên Cao học CNTT        - Xây dựng đồ án nhóm           - Kỹ sư chuyển đổi vai trò
  • Sinh viên đại học và học viên cao học: Giáo trình phù hợp cho sinh viên chuyên ngành Công nghệ Phần mềm, Công nghệ Thông tin, Hệ thống Thông tin từ năm thứ ba trở lên hoặc học viên cao học cần nghiên cứu sâu về thiết kế hệ thống mức cao.
  • Yêu cầu kiến thức tiên quyết (Prerequisites): Người học cần có kiến thức nền tảng về Lập trình hướng đối tượng (OOP), Cấu trúc dữ liệu và giải thuật, Cơ sở dữ liệu và các khái niệm cơ bản về vòng đời phát triển phần mềm.
  • Giảng viên đại học: Cung cấp khung cấu trúc chuẩn cho đề cương môn học 50 tiết; cung cấp nguồn bài tập tình huống, câu hỏi thảo luận và kịch bản tổ chức hoạt động nhóm thực hành.
  • Kỹ sư phần mềm và người tự học: Tài liệu tham khảo hữu ích cho các lập trình viên muốn chuyển đổi vị trí chuyên môn sang Kỹ sư phân tích yêu cầu hoặc Kiến trúc sư hệ thống phần mềm, cần hệ thống hóa các nguyên lý thiết kế và quy chuẩn hồ sơ UML.

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

1. Giáo trình này phù hợp với đối tượng học tập nào?

Giáo trình được biên soạn cho sinh viên đại học năm thứ 3, năm thứ 4 và học viên cao học ngành Công nghệ Thông tin, Kỹ nghệ Phần mềm, cũng như các kỹ sư phần mềm đang làm việc tại doanh nghiệp cần chuẩn hóa kỹ năng thiết kế kiến trúc.

2. Cần chuẩn bị kiến thức nền tảng nào trước khi tiếp cận giáo trình?

Người học cần nắm vững kỹ thuật lập trình (đặc biệt là lập trình hướng đối tượng), cấu trúc dữ liệu và giải thuật, cơ sở dữ liệu quan hệ và các khái niệm đại cương về kỹ nghệ phần mềm.

3. Điểm khác biệt cốt lõi của giáo trình 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 hướng dẫn viết mã lệnh chi tiết cho một ngôn ngữ cụ thể mà tập trung vào tư duy thiết kế mức trừu tượng cao: cấu trúc hệ thống, quy trình ra quyết định kiến trúc, đánh giá sự đánh đổi thuộc tính chất lượng và mô hình hóa hình thức bằng UML.

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

Người học nên bám sát trình tự phân tích từ Chương 1 đến Chương 4, thực hiện trả lời các câu hỏi tình huống trong từng mục, sau đó áp dụng trực tiếp các mẫu kiến trúc và biểu đồ UML vào việc thực hiện các đề tài trong phần Hoạt động nhóm.

5. Giáo trình có các tài liệu bổ trợ nào đi kèm?

Giáo trình tích hợp sẵn hệ thống chủ đề hoạt động nhóm (trang 99–183), danh mục tài liệu tham khảo chuẩn quốc tế và 3 phụ lục chi tiết: Phụ lục 1 (Các mô hình phát triển phần mềm), Phụ lục 2 (Khái niệm cơ bản của kỹ nghệ phần mềm) và Phụ lục 3 (Bảng giải thích thuật ngữ chuyên ngành).


Kết luận

Giáo trình Kiến trúc và Thiết kế Phần mềm của tác giả Nguyễn Xuân Huy cung cấp một hệ thống tri thức học thuật hoàn chỉnh, chuẩn mực về các phương pháp, quy trình và công cụ thiết kế cấu trúc hệ thống phần mềm.

Lộ trình học tập được khuyến nghị bao gồm: nắm vững lý thuyết hệ thống và các khung nhìn kiến trúc (Chương 1) $\rightarrow$ Khảo sát và lựa chọn các mẫu kiến trúc tiêu chuẩn (Chương 2) $\rightarrow$ Thực hành mô hình hóa bằng ngôn ngữ UML (Chương 3) $\rightarrow$ Vận dụng vào phân tích yêu cầu và làm bản mẫu (Chương 4) $\rightarrow$ Hoàn thiện năng lực làm việc qua các đề án thực hành nhóm.

Tài liệu kết hợp chặt chẽ giữa tính chặt chẽ của khoa học máy tính kinh điển và phương pháp luận công nghiệp hiện đại từ Đại học Carnegie Mellon, tạo thành tài liệu phục vụ hiệu quả cho công tác đào tạo và nghiên cứu chuyên ngành phần mềm.