Giáo trình Phân tích và Thiết kế Hướng đối tượng

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

Giáo trình Phân tích và Thiết kế Hướng đối tượng do PGS.TS Trương Ninh Thuận và TS. Đặng Đức Hạnh (Trường Đại học Công nghệ – Đại học Quốc gia Hà Nội) biên soạn, được Nhà xuất bản Đại học Quốc gia Hà Nội ấn hành. Trong chương trình đào tạo đại học và sau đại học các ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và Hệ thống Thông tin, môn học Phân tích và Thiết kế Hướng đối tượng (Object-Oriented Analysis and Design – OOAD) giữ vị trí then chốt, đóng vai trò cầu nối giữa giai đoạn tiếp nhận yêu cầu bài toán với giai đoạn lập trình thực thi.

Mục tiêu học tập của giáo trình là trang bị cho người học tư duy mô hình hóa hệ thống phức tạp dựa trên phương pháp hướng đối tượng (OOM); làm chủ cú pháp và ngữ nghĩa của Ngôn ngữ mô hình hóa thống nhất (UML 2.0); vận dụng quy trình phát triển phần mềm hợp nhất (Rational Unified Process – RUP) với đặc trưng lặp, hướng ca sử dụng và lấy kiến trúc làm trung tâm. Sau khi hoàn thành nội dung, người học có khả năng chuyển đổi yêu cầu nghiệp vụ thành các chế tác phân tích, từ đó thiết kế kiến trúc hệ thống, thiết kế lớp, thiết kế hệ thống con và ánh xạ mô hình đối tượng sang cơ sở dữ liệu.

Cấu trúc giáo trình được xây dựng tuần tự theo tiến trình kỹ thuật phần mềm: từ nguyên tắc nền tảng của mô hình hướng đối tượng, hệ thống ký pháp UML, quy trình RUP, cho đến các kỹ thuật phân tích và thiết kế chi tiết. Điểm đặc sắc của tài liệu là sự chuẩn hóa học thuật theo quy chuẩn của Tổ chức Quản lý Đối tượng (OMG), kế thừa các phương pháp OMT của Rumbaugh, OOAD của Booch và tiếp cận hướng ca sử dụng của Jacobson; đồng thời tích hợp các đoạn mã nguồn Java minh họa và một hồ sơ dự án mẫu hoàn chỉnh trong phần phụ lục.


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

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

Nội dung giáo trình được triển khai qua các khối kiến thức trọng tâm:

  1. Mô hình hóa đối tượng (OOM): Khái quát sự khác biệt giữa lập trình thủ tục (tập trung vào chức năng) và mô hình hóa hướng đối tượng (tập trung vào tập các đối tượng tương tác). Chương này làm rõ 4 nguyên tắc cơ bản: trừu tượng hóa (abstraction), tính đóng gói (encapsulation / che giấu thông tin), tính mô-đun hóa (modularity) và sự phân cấp (hierarchy). Đồng thời, các khái niệm đối tượng, lớp (class), quan hệ tổng quát hóa – kế thừa (đơn kế thừa, đa kế thừa) và tính đa hình (polymorphism) được giải thích chi tiết qua các ví dụ như lớp Animal, LivingThing, Bicycle và các công cụ tài chính (Stock, Bond, Mutual Fund).
  2. Ngôn ngữ mô hình hóa UML: Trình bày lịch sử hình thành chuẩn UML từ nỗ lực hợp nhất của OMG. Phân tích chi tiết 4 nhóm phần tử mô hình: phần tử cấu trúc (lớp, giao diện, cộng tác, ca sử dụng, lớp tích cực – active class, thành phần, nút), phần tử hành vi (tương tác, máy trạng thái), phần tử nhóm (gói – package) và phần tử chú thích. Hệ thống hóa 4 loại quan hệ (phụ thuộc, kết hợp – bao gồm tụ hợp và hợp thành, tổng quát hóa, hiện thực hóa) cùng 9 loại biểu đồ tiêu chuẩn: Biểu đồ ca sử dụng, Biểu đồ tuần tự, Biểu đồ giao tiếp, Biểu đồ lớp, Biểu đồ đối tượng, Biểu đồ trạng thái, Biểu đồ hoạt động, Biểu đồ thành phần và Biểu đồ triển khai.
  3. Tổng quan về quy trình phát triển phần mềm hướng đối tượng (RUP): Phân tích các triệu chứng phát sinh trong phát triển phần mềm, giới thiệu các kinh nghiệm thực tiễn và quy trình RUP. Trình bày các hoạt động mô hình hóa nghiệp vụ, nắm bắt yêu cầu hệ thống và quy trình chuyển tiếp từ mô hình yêu cầu sang phân tích – thiết kế.
  4. Phân tích hướng đối tượng (OOA): Hướng dẫn phân tích kiến trúc (xác định các phân hệ mức cao, cơ chế phân tích, các trừu tượng chính, hiện thực hóa ca sử dụng); chi tiết hóa mô tả ca sử dụng, xác định các lớp phân tích (biên, điều khiển, thực thể), phân bổ hành vi cho lớp và kiểm tra kết quả phân tích.
  5. Thiết kế hướng đối tượng (OOD): Xác định các phần tử thiết kế (lớp thiết kế, hệ thống con, giao diện cung cấp và giao diện yêu cầu, khả năng tái sử dụng). Trình bày thiết kế kiến trúc thực thi cho các yêu cầu tương tranh (tiến trình, luồng song song, lớp EventManager) và kiến trúc phân tán. Chi tiết hóa thiết kế ca sử dụng, thiết kế hệ thống con, thiết kế lớp (thao tác, phương thức, thuộc tính, khả năng truy cập) và thiết kế cơ sở dữ liệu (ánh xạ các lớp thiết kế bền vững sang mô hình dữ liệu quan hệ).
  6. Phụ lục – Hệ thống Quản lý Chương trình Đào tạo: Cung cấp ca nghiên cứu thực tế hoàn chỉnh từ mô tả nghiệp vụ, nắm bắt yêu cầu, mô hình hóa ca sử dụng, phân tích tương tác, xác định gói thiết kế, kiến trúc vật lý đến biểu đồ lớp tổng thể.
Tiến trình nội dung:
[Nguyên lý OOM & Ký pháp UML] ➔ [Quy trình RUP & Nắm bắt Yêu cầu] ➔ [Phân tích Kiến trúc & Ca sử dụng] ➔ [Thiết kế Hệ thống con, Lớp & CSDL] ➔ [Case Study Thực hành]

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

  • Hệ thống nguyên lý OOM: Nền tảng trừu tượng hóa ngữ cảnh, cơ chế che giấu dữ liệu qua giao diện công khai, nguyên tắc phân rã mô-đun trong các hệ thống quy mô lớn (như ví dụ Course Registration System), và tổ chức phân cấp quan hệ is a kind of.
  • Khung nhìn kiến trúc phần mềm: Mô hình hóa hệ thống qua 5 khung nhìn kiến trúc (khung nhìn ca sử dụng tĩnh, khung nhìn thiết kế tĩnh/động, khung nhìn tiến trình, khung nhìn cài đặt và khung nhìn triển khai).
  • Hệ thống quy tắc và ràng buộc UML: Các quy cách định danh, phạm vi truy cập, tính toàn vẹn ngữ nghĩa và các ràng buộc thực thi trong mô hình.

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Xây dựng và đọc hiểu chuẩn xác 9 loại biểu đồ UML 2.0; sử dụng các phân đoạn tương tác phức tạp (loop, alt, opt, par); phân bổ thông điệp đồng bộ, không đồng bộ và đệ quy trong biểu đồ tuần tự; thiết lập cấu hình phân tán trên biểu đồ triển khai.
  • Kỹ năng phân tích (Analytical skills): Phân tích và đặc tả ca sử dụng (luồng sự kiện chính, luồng thay thế, ngoại lệ); trích xuất các lớp phân tích từ kịch bản nghiệp vụ; nhận diện ranh giới hệ thống và tác nhân tương tác.
  • Kỹ năng thực hành thiết kế (Practical competencies): Tinh chỉnh từ mô hình phân tích sang mô hình thiết kế chi tiết; đóng gói hành vi vào hệ thống con; xử lý tương tranh đa luồng; ánh xạ lớp đối tượng bền vững thành lược đồ cơ sở dữ liệu quan hệ.

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

Giáo trình áp dụng phương pháp sư phạm định hướng mô hình (Model-Driven Approach), kết hợp chặt chẽ giữa lý thuyết hình thức và biểu diễn trực quan. Mỗi khái niệm lý thuyết trừu tượng đều được gắn liền với ví dụ mã nguồn cụ thể (sử dụng ngôn ngữ Java) và hình vẽ biểu đồ chuẩn hóa.

// Ví dụ minh họa trừu tượng hóa và kế thừa trong giáo trình
public class Animal extends LivingThing {
    private Location loc;
    private double energyReserves;
    boolean isHungry() { return energyReserves < 2.5; }
    void eat(Food f) { energyReserves += f.getCalories(); }
    void moveTo(Location l) { loc = l; }
}

Hệ thống ví dụ minh họa và bài tập tình huống được phân bổ theo nhiều cấp độ:

  • Cấp độ vi mô (Lớp và Đối tượng): Sử dụng các mô hình cụ thể như trạng thái và hành vi của chiếc xe đạp (Bicycle), hệ thống phân cấp động vật (Animal, Cat, Dog, Duck), cơ chế tính toán đa hình của các công cụ tài chính (Financial Instrument).
  • Cấp độ phân hệ (Subsystem): Ví dụ phân rã bài toán "Hệ thống đăng ký môn học" (Course Registration System) thành ba phân hệ độc lập: Hệ thống thanh toán tiền, Hệ thống cung cấp danh sách môn học và Hệ thống quản lý sinh viên.
  • Cấp độ dự án toàn diện: Đồ án "Hệ thống Quản lý Chương trình Đào tạo" trong phần phụ lục đóng vai trò là case study mẫu xuyên suốt toàn bộ các pha phát triển.

Phương pháp đánh giá kết quả học tập được xây dựng trên việc kiểm tra tính đúng đắn về mặt ngữ pháp và ngữ nghĩa của các mô hình UML, năng lực chuyển đổi tương đương giữa các dạng biểu đồ (như biểu đồ tuần tự sang biểu đồ giao tiếp) và chất lượng của các bộ tài liệu đặc tả chế tác phần mềm. Đối với hoạt động tự học, giáo trình cung cấp các chỉ dẫn từng bước (step-by-step guidelines) để người học tự thiết lập khung cảnh tương tác, xác định vai trò đối tượng và hoàn thiện biểu đồ theo trình tự chuẩn.


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

  • Tích hợp chuẩn UML 2.0: Tài liệu cập nhật các cải tiến của phiên bản UML 2.0 so với các phiên bản tiền nhiệm, bao gồm các phân đoạn tương tác kết hợp (combined fragments) như loop (lặp), alt (rẽ nhánh), opt (tùy chọn), par (song song); cơ chế phân lớp có cấu trúc (structured classifiers) và các khái niệm giao diện được cung cấp (provided interface) / giao diện được yêu cầu (required interface).
  • Hệ thống hóa chi tiết các quan hệ phụ thuộc: Giáo trình cung cấp bảng tổng hợp và phân loại 13 từ khóa quan hệ phụ thuộc trong UML:
Từ khóa phụ thuộc Chức năng ngữ nghĩa
<<access>> Đưa nội dung của một lớp khác vào phạm vi hiện tại
<<binding>> Gán giá trị cho các tham số của một khuôn để tạo phần tử mới
<<call>> Phương thức của một lớp gọi thao tác của lớp khác
<<create>> Một lớp tạo thể hiện của lớp khác
<<derive>> Một thể hiện có thể được tính toán/suy diễn từ thể hiện khác
<<instantiate>> Phương thức của một lớp khởi tạo các thể hiện của lớp khác
<<permit>> Cho phép một phần tử sử dụng nội dung của phần tử khác
<<realize>> Thể hiện sự tương ứng giữa đặc tả giao diện và bản cài đặt
<<refine>> Thể hiện sự tương ứng giữa các phần tử ở hai cấp độ ngữ nghĩa
<<send>> Thể hiện quan hệ giữa bên gửi và bên nhận tín hiệu
<<substitute>> Lớp nguồn hỗ trợ giao diện và cam kết thay thế cho lớp đích
<<trace>> Thiết lập mối nối kết nối giữa các phần tử trong các mô hình khác nhau
<<usage>> Một phần tử yêu cầu sự hiện diện của phần tử khác để đảm bảo tính đúng đắn
  • Giải quyết bài toán hệ thống hiện đại: Giáo trình không dừng lại ở mức mô hình hóa logic mà đi sâu vào các khía cạnh kiến trúc phức tạp: xử lý tương tranh (concurrency), thiết kế tiến trình/luồng song song, lớp tích cực (EventManager), cơ chế phân tán trên các nút mạng (nodes) và ánh xạ dữ liệu bền vững (persistence) sang cơ sở dữ liệu.
  • Tính kết nối công nghiệp: Định hướng rõ ràng việc sử dụng mô hình UML làm đầu vào để sinh mã tự động cho các ngôn ngữ hướng đối tượng (Java, C++) và sinh lược đồ cơ sở dữ liệu quan hệ, phục vụ cho quy trình phát triển phần mềm chuyên nghiệp.

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

  • Sinh viên đại học và học viên cao học: Giáo trình được biên soạn trực tiếp cho sinh viên năm thứ 2, năm thứ 3 và năm thứ 4 thuộc các ngành Công nghệ Thông tin, Kỹ thuật Phần mềm, Khoa học Máy tính, Hệ thống Thông tin. Đây cũng là tài liệu tham khảo cho học viên cao học cần củng cố phương pháp luận mô hình hóa và kiến trúc phần mềm.
  • Yêu cầu kiến thức tiên quyết (Prerequisites): Người học cần nắm vững kiến thức cơ sở về Lập trình hướng đối tượng (OOP với Java hoặc C++), Cấu trúc dữ liệu và giải thuật, cùng các khái niệm cơ bản về Hệ quản trị cơ sở dữ liệu.
  • Giảng viên đại học: Tài liệu được sử dụng làm giáo trình giảng dạy chính cho học phần Phân tích và Thiết kế Hướng đối tượng, hoặc làm tài liệu tham khảo cho học phần Kỹ nghệ Phần mềm, Kiến trúc Phần mềm. Giảng viên có thể khai thác phụ lục dự án để xây dựng đề bài tập lớn và đồ án môn học.
  • Kỹ sư và chuyên viên ngành phần mềm: Phù hợp làm tài liệu tra cứu chuẩn tắc cho các kỹ sư phân tích nghiệp vụ (Business Analyst – BA), kỹ sư thiết kế hệ thống và lập trình viên trong việc chuẩn hóa ký pháp mô hình hóa và lập tài liệu 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 phù hợp với sinh viên đại học, học viên cao học các ngành Công nghệ Thông tin, Kỹ thuật Phần mềm, giảng viên giảng dạy học phần OOAD và các kỹ sư phần mềm cần chuẩn hóa kỹ năng phân tích thiết kế theo chuẩn UML và quy trình RUP.

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 có kiến thức nền tảng về lập trình hướng đối tượng (hiểu rõ khái niệm lớp, đối tượng, phương thức, biến qua các ngôn ngữ như Java hoặc C++), kiến thức cơ bản về cơ sở dữ liệu quan hệ và tư duy logic về thuật toán.

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

Giáo trình tích hợp đầy đủ hệ thống chuẩn UML 2.0 với quy trình RUP, phân định rõ ràng giữa các cấp độ ngữ nghĩa (mô hình phân tích, mô hình thiết kế, mô hình cài đặt), đồng thời đi sâu vào các vấn đề kỹ thuật như xử lý tương tranh, kiến trúc phân tán và cung cấp một đồ án mẫu hoàn chỉnh trong phần phụ lục.

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ự từ Chương 1 để nắm vững 4 nguyên tắc OOM, nghiên cứu cú pháp và quy tắc vẽ của 9 loại biểu đồ UML, sau đó thực hành quy trình phân tích và thiết kế kiến trúc. Cuối cùng, đối chiếu toàn bộ các bước đã học với hồ sơ dự án mẫu "Hệ thống Quản lý Chương trình Đào tạo" ở phần Phụ lục.

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

Giáo trình cung cấp các đoạn mã nguồn Java minh họa trực tiếp cho các nguyên tắc trừu tượng hóa/đa hình, bảng tra cứu chi tiết 13 từ khóa quan hệ phụ thuộc trong UML và toàn bộ hồ sơ thiết kế chi tiết (từ yêu cầu, biểu đồ ca sử dụng, biểu đồ tương tác đến biểu đồ lớp tổng thể) của bài toán quản lý chương trình đào tạo.


Kết luận

Giáo trình Phân tích và Thiết kế Hướng đối tượng của PGS.TS Trương Ninh Thuận và TS. Đặng Đức Hạnh cung cấp một hệ thống tri thức hoàn chỉnh, chuẩn tắc về mô hình hóa hướng đối tượng dựa trên ngôn ngữ UML 2.0 và quy trình RUP. Lộ trình học tập đề xuất là: củng cố 4 nguyên tắc cốt lõi của OOM $\rightarrow$ làm chủ hệ thống ký pháp 9 biểu đồ UML $\rightarrow$ thực thi luồng hoạt động phân tích và thiết kế $\rightarrow$ ánh xạ mô hình sang mã nguồn và cơ sở dữ liệu thông qua bài toán thực tế. Đây là tài liệu học thuật nền tảng, kế thừa các công trình của Booch, Rumbaugh, Jacobson và tiêu chuẩn OMG, phục vụ trực tiếp cho công tác đào tạo và nghiên cứu kỹ thuật phần mềm.