Tổng quan về giáo trình
Tài liệu bài giảng "Tuần 10: Thiết kế và cài đặt" thuộc học phần Nhập môn Công nghệ phần mềm, được giảng viên Nguyễn Thị Minh Tuyền biên soạn, dịch thuật và hiệu chỉnh dựa trên hệ thống bài giảng chuẩn mực của tác giả Ian Sommerville. Trong chương trình đào tạo bậc đại học khối ngành Công nghệ thông tin và Kỹ thuật phần mềm, học phần này giữ vị trí cầu nối quan trọng, chuyển tiếp kiến thức từ giai đoạn phân tích đặc tả yêu cầu sang giai đoạn xây dựng kiến trúc và hiện thực hóa mã nguồn hệ thống.
Mục tiêu học tập của tài liệu tập trung vào ba trụ cột:
- Nắm vững quy trình thiết kế hướng đối tượng 5 giai đoạn sử dụng chuẩn mô hình hóa UML;
- Hiểu rõ khái niệm, cấu trúc 4 thành phần và cơ chế vận hành của các mẫu thiết kế (Design Patterns), trọng tâm là mẫu Observer;
- Nhận diện và giải quyết các bài toán kỹ thuật then chốt trong giai đoạn cài đặt phần mềm, bao gồm tái sử dụng phần mềm, quản lý cấu hình hệ thống và môi trường phát triển host-target.
Tài liệu được cấu trúc theo phương pháp tiếp cận từ trừu tượng đến cụ thể: bắt đầu từ việc phân rã ranh giới hệ thống ở mức ngữ cảnh bên ngoài, thiết kế kiến trúc phân tầng, nhận diện lớp đối tượng, xây dựng các mô hình tĩnh/động, đặc tả chi tiết giao diện giao tiếp, cho đến ứng dụng mẫu thiết kế và hoạch định môi trường triển khai thực tế.
Điểm đặc sắc của tài liệu là việc lấy trường hợp điển cứu thực nghiệm – Hệ thống trạm thời tiết (Weather Station System) – làm trục phân tích xuyên suốt, giúp sinh viên đối chiếu trực tiếp giữa các khái niệm lý thuyết trừu tượng với mô hình kỹ thuật cụ thể.
Nội dung kiến thức cốt lõi
Các chương/chủ đề chính
Tài liệu bài giảng tuần 10 phân bổ dung lượng thành ba phần nội dung chính với tính liên kết tuần tự chặt chẽ:
[1. Thiết kế Hướng đối tượng sử dụng UML]
[2. Thiết kế Mẫu (Design Patterns)]
[3. Các vấn đề về Cài đặt phần mềm]
1. Thiết kế hướng đối tượng sử dụng UML
Trình bày quy trình phát triển thiết kế hệ thống từ mức khái niệm đến chi tiết qua 5 giai đoạn:
- Định nghĩa ngữ cảnh và tương tác bên ngoài: Xây dựng mô hình ngữ cảnh (cấu trúc chỉ ra các hệ thống liên quan: Control system, Weather information system, Satellite) và mô hình tương tác (mô hình động sử dụng Use Case:
Report weather, Report status, Restart, Shutdown, Reconfigure, Powersave, Remote control).
- Thiết kế kiến trúc hệ thống: Xác định các thành phần (component) chính và tổ chức theo mô hình kiến trúc có sẵn (mô hình phân tầng, client-server). Kiến trúc hệ thống con của trạm thời tiết bao gồm:
Fault manager, Configuration manager, Power manager, Communications, Data collection, Instruments.
- Nhận diện các đối tượng chính: Áp dụng các phương pháp: phân tích ngữ pháp mô tả hệ thống, nhận diện đối tượng hữu hình trong miền ứng dụng, và phân tích dựa trên kịch bản. Các lớp được trích xuất gồm:
WeatherStation, WeatherData, Ground thermometer, Anemometer, Barometer.
- Phát triển các mô hình thiết kế: Xây dựng mô hình tĩnh (mô hình hệ thống con gom nhóm đối tượng logic, biểu đồ lớp) và mô hình động (mô hình tuần tự mô tả chuỗi tương tác, mô hình trạng thái phản ứng sự kiện).
- Đặc tả giao diện đối tượng: Sử dụng ký hiệu biểu đồ lớp trong UML để đặc tả chi tiết giao diện của đối tượng/nhóm đối tượng (không chứa chi tiết biểu diễn dữ liệu bên trong), ví dụ các interface
Remote Control, Reporting và mã giả interface WeatherStation.
2. Thiết kế mẫu (Design Patterns)
Định nghĩa mẫu thiết kế là mô tả của vấn đề và điểm cốt lõi của giải pháp ở mức trừu tượng để có thể tái sử dụng. Mỗi mẫu gồm 4 thành phần: Tên mẫu, Mô tả vấn đề, Mô tả giải pháp và Hệ quả.
- Giới thiệu các mẫu phổ biến: Observer (thông báo thay đổi trạng thái), Façade (cung cấp giao diện đơn giản cho tập hợp giao diện hệ thống con), Iterator (truy cập phần tử tập hợp mà không phụ thuộc cài đặt), Decorator (mở rộng tính năng tại thời gian thực thi).
- Phân tích chi tiết mẫu Observer: Cấu trúc gồm 2 lớp trừu tượng (
Subject, Observer) và 2 lớp cụ thể (ConcreteSubject, ConcreteObserver). Các thao tác chính gồm Attach(), Detach(), Notify(), Update(), GetState(). Đánh giá hệ quả về tính tách rời hiển thị và sự suy giảm hiệu năng khi tối ưu hóa đa hiển thị.
3. Các vấn đề về cài đặt
Tập trung vào các khía cạnh công kỹ nghệ phần mềm ngoài lập trình:
- Tái sử dụng (Software Reuse): So sánh lịch sử phát triển phần mềm (1960–1990 viết từ đầu vs. xu hướng tái sử dụng hiện đại); 4 mức tái sử dụng (mức trừu tượng, mức đối tượng, mức component, mức hệ thống); 3 loại chi phí tái sử dụng (chi phí tìm kiếm/đánh giá, chi phí chỉnh sửa/cấu hình, chi phí tích hợp).
- Quản lý cấu hình (Configuration Management): Mục tiêu hỗ trợ tích hợp có kiểm soát; 3 hoạt động nòng cốt gồm Quản lý phiên bản (Version management), Tích hợp hệ thống (System integration), Theo dõi vấn đề (Issue/Bug tracking).
- Phát triển host-target: Phân biệt nền tảng phát triển (host platform) và nền tảng thực thi (target platform) trên các khía cạnh phần cứng, hệ điều hành, hệ quản trị cơ sở dữ liệu và công cụ phát triển (IDE).
Kiến thức nền tảng được xây dựng
- Phân định ranh giới phát triển hướng đối tượng: Phân biệt rõ ba giai đoạn độc lập nhưng liên đới mật thiết: Phân tích hướng đối tượng (OOA - mô hình hóa miền ứng dụng), Thiết kế hướng đối tượng (OOD - mô hình hóa hệ thống đáp ứng yêu cầu), và Lập trình hướng đối tượng (OOP - hiện thực hóa thiết kế bằng ngôn ngữ lập trình).
- Bản chất thực thể hướng đối tượng: Định nghĩa chính xác Đối tượng (thực thể chứa trạng thái và tập thao tác vận hành trên trạng thái đó) và Lớp đối tượng (khuôn mẫu/template khai báo tất cả thuộc tính và dịch vụ).
- Nguyên lý đóng gói và tính thích ứng thay đổi: Hệ thống hướng đối tượng dễ bảo trì và thay đổi hơn phương pháp hướng chức năng nhờ cơ chế gom cụm dữ liệu và thao tác, đảm bảo việc thay đổi cài đặt nội bộ hoặc thêm dịch vụ không gây ảnh hưởng đến các đối tượng khác.
- Nguyên lý thiết kế giao diện độc lập: Tách biệt hoàn toàn giao diện (interface) ra khỏi biểu diễn dữ liệu (data representation), cho phép một đối tượng cung cấp nhiều giao diện khác nhau hoặc một giao diện đại diện cho nhiều đối tượng.
Kỹ năng phát triển
-
Kỹ năng kỹ thuật (Technical Skills):
- Xây dựng và đọc hiểu các loại biểu đồ UML: Biểu đồ ca sử dụng (Use Case Diagram), Biểu đồ hệ thống con/thành phần (Subsystem/Component Diagram), Biểu đồ lớp (Class Diagram), Biểu đồ tuần tự (Sequence Diagram), Biểu đồ trạng thái (State Diagram).
- Viết mã đặc tả giao diện hướng đối tượng (như khai báo
interface WeatherStation với các hàm thành phần: startup(), shutdown(), reportWeather(), test(), calibrate(), getID()).
- Vẽ và ánh xạ cấu trúc các mẫu thiết kế sang mô hình lớp và tương tác UML.
-
Kỹ năng phân tích (Analytical Skills):
- Phân tích ngữ pháp văn bản mô tả kỹ thuật để trích xuất các danh từ chỉ đối tượng phần cứng/phần mềm và động từ chỉ dịch vụ/phương thức.
- Phân tích trade-off (sự đánh đổi) khi áp dụng mẫu thiết kế phần mềm (ví dụ: đánh đổi giữa tính linh hoạt của Observer pattern và chi phí hiệu năng khi phát sinh cập nhật hàng loạt không cần thiết).
- Đánh giá và lượng hóa 3 thành phần chi phí trong bài toán quyết định tái sử dụng phần mềm.
-
Kỹ năng thực hành nghề nghiệp (Practical Competencies):
- Thiết lập và thực thi quy trình quản lý cấu hình thông qua kiểm soát phiên bản mã nguồn, tích hợp các bản phát hành và theo dõi nhật ký lỗi.
- Hoạch định kiến trúc triển khai dựa trên sự khác biệt về phần cứng, hệ điều hành và phần mềm hỗ trợ giữa môi trường phát triển (host) và môi trường vận hành (target).
Phương pháp giảng dạy và học tập
Tiếp cận sư phạm (Pedagogical Approach)
Bài giảng áp dụng phương pháp tiếp cận sư phạm dựa trên tình huống thực tế (Case-based Learning) và diễn tiến từ trực quan đến hình thức hóa:
- Giảng giải lý thuyết nền tảng về OOD song song với việc áp dụng từng bước vào hệ thống Weather Station (Trạm thu thập dữ liệu thời tiết độc lập truyền tin về trung tâm).
- Trực quan hóa cấu trúc và hành vi của hệ thống thông qua các ký hiệu chuẩn của Ngôn ngữ mô hình hóa thống nhất (UML).
[Mô tả yêu cầu hệ thống]
[Mô hình Ngữ cảnh & Use Case]
[Kiến trúc Hệ thống con & Biểu đồ lớp]
[Đặc tả Interface & Áp dụng Design Pattern]
Bài tập và ca điển cứu (Case Studies & Exercises)
- Phân tích ca điển cứu Weather Station: Sinh viên thực hành phân tích văn bản mô tả thiết bị đo đạc khí tượng (nhiệt kế không khí/mặt đất, phong tốc kế anemometer, chong chóng gió wind vane, phong vũ biểu barometer, máy đo mưa rain gauge), từ đó xây dựng:
- Mô hình ngữ cảnh liên kết với Control System, Weather Information System và Satellite.
- 7 ca sử dụng (Use Cases) tương tác từ môi trường.
- 6 hệ thống con cấu thành kiến trúc mức cao.
- Các lớp đối tượng trung tâm cùng danh mục thuộc tính, phương thức tương ứng.
- Bài tập thiết kế mẫu Observer: Thiết lập cơ chế đa hiển thị (Multi-view display) với trạng thái dữ liệu
Subject đồng bộ hóa sang Observer 1 (dạng biểu đồ/đồ họa) và Observer 2 (dạng bảng dữ liệu chi tiết).
Phương pháp đánh giá (Assessment Methods)
- Đánh giá quá trình: Kiểm tra khả năng nhận diện đối tượng từ kịch bản ca sử dụng; vẽ chính xác các biểu đồ UML tĩnh và động theo đặc tả kỹ thuật.
- Đánh giá năng lực thiết kế: Yêu cầu sinh viên viết mã đặc tả giao diện trừu tượng và giải thích cơ chế tương tác hàm (
Attach, Detach, Notify, Update) trong các mẫu thiết kế.
- Đánh giá kiến thức tổng hợp: Kiểm tra hiểu biết về 4 mức độ tái sử dụng và 3 hoạt động cốt lõi của quản lý cấu hình trong quy trình kỹ nghệ phần mềm.
Hướng dẫn tự học (Self-study Guidelines)
- Đọc trước tài liệu gốc "Software Engineering" của tác giả Ian Sommerville để nắm vững các quy tắc mô hình hóa OOD.
- Tự thực hiện lại các bước phân tích trên một hệ thống mẫu tương tự (ví dụ: hệ thống điều khiển nhà thông minh hoặc hệ thống giám sát giao thông).
- Cài đặt mã nguồn thực nghiệm cho mẫu Observer bằng một ngôn ngữ lập trình hướng đối tượng (Java/C++) để kiểm chứng cơ chế cập nhật trạng thái tự động.
Điểm nổi bật và cập nhật
Chuyển dịch tư duy kỹ nghệ phần mềm
- Từ "Phát triển từ đầu" sang "Tái sử dụng": Tài liệu phản ánh rõ nét bước chuyển dịch lịch sử từ giai đoạn 1960–1990 (chủ yếu viết mã mới từ đầu bằng ngôn ngữ bậc cao, tái sử dụng giới hạn ở thư viện hàm/đối tượng) sang kỷ nguyên hiện đại, nơi tái sử dụng ở mức component và mức toàn bộ hệ thống trở thành tiêu chuẩn bắt buộc do áp lực về chi phí và tiến độ.
- Lượng hóa chi phí tái sử dụng: Đưa ra góc nhìn thực tế rằng việc tái sử dụng không hoàn toàn miễn phí, mà đòi hỏi ngân sách rõ ràng cho việc tìm kiếm, đánh giá, hiệu chỉnh cấu hình và tích hợp mã nguồn.
Cập nhật mô hình quản trị và triển khai hiện đại
- Hệ thống hóa Quản lý cấu hình (Configuration Management): Tích hợp 3 quy trình công nghiệp tiêu chuẩn:
- Version management: Kiểm soát và theo dõi các phiên bản component.
- System integration: Định nghĩa cấu hình tạo bản phát hành hệ thống.
- Issue tracking: Theo dõi lỗi, phân bổ nhân sự xử lý và ghi nhận tiến độ sửa lỗi.
- Mô hình phát triển Host-Target: Làm rõ khái niệm nền tảng (platform) trong kỹ nghệ phần mềm hiện đại không chỉ đơn thuần là phần cứng, mà là tổ hợp hoàn chỉnh gồm: Phần cứng + Hệ điều hành + Phần mềm hỗ trợ (DBMS) + Môi trường phát triển tích hợp (IDE), phân định rõ sự khác biệt giữa máy phát triển và máy thực thi của người dùng cuối.
Đối tượng sử dụng giáo trình
- Sinh viên chuyên ngành: Sinh viên năm thứ hai hoặc năm thứ ba thuộc các ngành Công nghệ phần mềm, Khoa học máy tính, Kỹ thuật máy tính và Hệ thống thông tin đang theo học học phần Nhập môn Công nghệ phần mềm hoặc Thiết kế hướng đối tượng.
- Kiến thức tiên quyết (Prerequisites):
- Đã hoàn thành học phần Lập trình cơ sở và Lập trình hướng đối tượng (OOP).
- Nắm vững các khái niệm cơ bản về lập trình: lớp, đối tượng, tính kế thừa, tính đa hình, phương thức và biến thành viên.
- Giảng viên và trợ giảng: Sử dụng tài liệu làm khung đề cương bài giảng lý thuyết trên lớp, thiết kế bài tập nhóm phân tích ca sử dụng, xây dựng bài thực hành lab về mô hình hóa UML và quản lý mã nguồn dự án.
- Kỹ sư phần mềm mới bắt đầu: Sử dụng làm tài liệu tham khảo chuẩn mực để củng cố tư duy thiết kế kiến trúc phần mềm, chuẩn hóa cách biểu diễn biểu đồ kỹ thuật và nắm bắt các quy tắc quản lý cấu hình trong môi trường làm việc chuyên nghiệp.
Câu hỏi thường gặp
1. Giáo trình này phù hợp với ai?
Tài liệu được biên soạn phục vụ sinh viên đại học khối ngành Công nghệ thông tin đang học môn Nhập môn Công nghệ phần mềm, đồng thời phù hợp cho các lập trình viên muốn hệ thống hóa quy trình thiết kế hướng đối tượng từ mức kiến trúc đến mức giao diện.
2. Cần kiến thức nền nào để học tốt học phần này?
Người học cần có kiến thức vững chắc về Lập trình hướng đối tượng (nắm rõ lớp, đối tượng, phương thức, kế thừa, đa hình) và hiểu biết cơ bản về quy trình phát triển phần mềm để tiếp thu trọn vẹn các giai đoạn thiết kế và cài đặt.
3. Điểm khác biệt của tài liệu 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 tập trung hướng dẫn cú pháp viết mã chi tiết, mà tập trung vào phương pháp luận kỹ nghệ: quy trình 5 bước OOD sử dụng UML, tư duy trừu tượng hóa qua Mẫu thiết kế (Design Patterns), và giải quyết các vấn đề quản lý kỹ thuật ở giai đoạn cài đặt (Tái sử dụng, Quản lý cấu hình, Phát triển Host-Target).
4. Làm sao để tự học nội dung này hiệu quả?
Người học nên kết hợp học lý thuyết với việc thực hành vẽ lại đầy đủ các biểu đồ UML cho hệ thống trạm thời tiết (Weather Station); sau đó tự hiện thực hóa mẫu Observer và mã giao diện WeatherStation bằng một ngôn ngữ lập trình cụ thể như Java hoặc C#.
5. Có tài liệu bổ trợ nào kèm theo nội dung này?
Nội dung bài giảng được dịch và hiệu chỉnh trực tiếp từ hệ thống bài giảng của tác giả Ian Sommerville. Người học nên tham khảo cuốn sách giáo khoa chuẩn quốc tế "Software Engineering" của Ian Sommerville để đào sâu các mô hình lý thuyết và nghiên cứu thêm các ca điển cứu mở rộng.
Kết luận
Bài giảng "Tuần 10: Thiết kế và cài đặt" thuộc học phần Nhập môn Công nghệ phần mềm cung cấp hệ thống kiến thức nền tảng và chuẩn mực về quy trình thiết kế hướng đối tượng qua 5 giai đoạn, các mẫu thiết kế phần mềm cốt lõi và các nguyên lý kỹ thuật trong giai đoạn cài đặt.
Lộ trình học tập khuyến nghị dành cho người học gồm ba bước:
- Nắm vững kỹ thuật mô hình hóa ngữ cảnh, kiến trúc và giao diện bằng UML qua ca điển cứu Trạm thời tiết;
- Nghiên cứu cấu trúc và nguyên lý vận hành của các mẫu thiết kế, đặc biệt là mẫu Observer;
- Vận dụng các nguyên tắc quản trị cấu hình, tái sử dụng phần mềm và hoạch định môi trường host-target vào các dự án phần mềm thực tế.
Tài liệu tham khảo chính yếu của nội dung này là giáo trình "Software Engineering" của tác giả Ian Sommerville cùng hệ thống bài giảng do ThS. Nguyễn Thị Minh Tuyền hiệu chỉnh.