Trắc nghiệm Công nghệ Phần mềm Bài: CASE STUDY CHO PHA THIẾT KẾ

Làm bài thi

Mục Lục

Trắc nghiệm Công nghệ Phần mềm Bài: CASE STUDY CHO PHA THIẾT KẾ là một trong những đề thi thuộc Chương 8: PHA THIẾT KẾ trong học phần Công nghệ Phần mềm chuyên ngành Công Nghệ Thông Tin cấp độ Đại học. Đây là phần kiến thức ứng dụng thực tiễn, giúp sinh viên củng cố hiểu biết về pha thiết kế bằng cách áp dụng các nguyên tắc, kiến trúc và mẫu thiết kế vào một tình huống cụ thể, ví dụ như xây dựng một hệ thống đặt món ăn trực tuyến.

Trong bài học này, người học cần nắm vững các nội dung cốt lõi như: cách định hình kiến trúc tổng thể (phân lớp, microservices), thiết kế các thành phần (lớp, module) với tính liên kết và phụ thuộc hợp lý, thiết kế giao diện và API, lựa chọn các mẫu thiết kế phù hợp, và quản lý các thuộc tính chất lượng (hiệu suất, bảo mật, khả năng mở rộng). Việc phân tích case study trong pha thiết kế sẽ trang bị cho sinh viên khả năng chuyển đổi yêu cầu thành một bản thiết kế vững chắc, là tiền đề cho một sản phẩm phần mềm chất lượng cao.

Hãy cùng Dethitracnghiem.vn tìm hiểu về đề thi này và tham gia làm kiểm tra ngay lập tức!

Trắc nghiệm Công nghệ Phần mềm Bài: CASE STUDY CHO PHA THIẾT KẾ

Câu 1.Trong pha thiết kế cho hệ thống đặt món ăn trực tuyến, nếu mục tiêu là phát triển độc lập các phần `Quản lý Đơn hàng`, `Quản lý Nhà hàng` và `Quản lý Giao hàng` và khả năng mở rộng từng phần riêng biệt, kiến trúc nào sẽ được ưu tiên?
A. Kiến trúc tập trung (Monolithic).
B. Kiến trúc phân lớp (Layered Architecture).
C. Kiến trúc Client-Server đơn giản.
D. Kiến trúc Microservices.

Câu 2.Thiết kế một hệ thống đặt món ăn trực tuyến theo mô hình 3 tầng (3-tier architecture), nơi logic xử lý đơn hàng sẽ nằm ở tầng nào?
A. Tầng giao diện người dùng (Presentation Layer).
B. Tầng truy cập dữ liệu (Data Access Layer).
C. Tầng cơ sở dữ liệu (Database Layer).
D. Tầng logic nghiệp vụ (Business Logic Layer).

Câu 3.Khi thiết kế cơ sở dữ liệu cho hệ thống đặt món, việc xác định các bảng (ví dụ: `Customers`, `Orders`, `Dishes`) và mối quan hệ giữa chúng thuộc hoạt động thiết kế nào?
A. Thiết kế giao diện người dùng.
B. Thiết kế kiến trúc tổng thể.
C. Thiết kế logic nghiệp vụ.
D. Thiết kế cơ sở dữ liệu (Database Design).

Câu 4.Lớp `DonHang` (Order) có một phương thức `thayDoiTrangThai()` (changeStatus()). Để đảm bảo tính đóng gói tốt trong thiết kế, các thuộc tính nội bộ của `DonHang` nên có mức độ truy cập nào?
A. Public.
B. Protected.
C. Package-private.
D. Private.

Câu 5.Trong thiết kế, để xử lý việc khách hàng có thể chọn nhiều phương thức thanh toán khác nhau (tiền mặt, thẻ, ví điện tử) mà không cần sửa đổi code mỗi khi thêm phương thức mới, mẫu thiết kế nào phù hợp nhất?
A. Singleton Pattern.
B. Observer Pattern.
C. Factory Pattern.
D. Strategy Pattern.

Câu 6.Biểu đồ nào trong UML sẽ được sử dụng để mô tả chi tiết luồng thông điệp và tương tác giữa đối tượng `KhachHang`, `TrangDatMonUI`, `OrderService` và `PaymentGateway` khi khách hàng thực hiện thanh toán?
A. Biểu đồ lớp (Class Diagram).
B. Biểu đồ hoạt động (Activity Diagram).
C. Biểu đồ thành phần (Component Diagram).
D. Biểu đồ trình tự (Sequence Diagram).

Câu 7.Để đảm bảo hiệu suất tốt khi hàng ngàn khách hàng cùng lúc tìm kiếm món ăn và đặt hàng, điều gì cần được chú trọng trong thiết kế hệ thống?
A. Chỉ sử dụng ngôn ngữ lập trình mới nhất.
B. Chỉ cần một cơ sở dữ liệu đơn giản.
C. Bỏ qua các yêu cầu về hiệu suất.
D. Thiết kế kiến trúc có khả năng mở rộng (scalable architecture) và tối ưu hóa truy vấn dữ liệu.

Câu 8.Khi thiết kế API cho dịch vụ `NhaHang` (Restaurant Service) để `KhachHang` (Customer Service) có thể truy cập thực đơn, điều gì là quan trọng nhất để đảm bảo tính phụ thuộc thấp?
A. API phải rất phức tạp.
B. API phải chứa nhiều thông tin không cần thiết.
C. API phải được viết bằng một ngôn ngữ cụ thể.
D. API phải được định nghĩa rõ ràng, ổn định và chỉ hiển thị các chức năng cần thiết, không lộ chi tiết cài đặt nội bộ.

Câu 9.Một yêu cầu là “Hệ thống phải mã hóa thông tin thẻ tín dụng của khách hàng trước khi lưu trữ.” Điều này thuộc về khía cạnh thiết kế nào?
A. Thiết kế giao diện người dùng.
B. Thiết kế hiệu suất.
C. Thiết kế khả năng sử dụng.
D. Thiết kế bảo mật (Security Design).

Câu 10.Nếu một nhóm phát triển quyết định sử dụng một thư viện xử lý thanh toán của bên thứ ba, điều này liên quan đến quyết định thiết kế nào?
A. Tự xây dựng (Build).
B. Tái cấu trúc (Refactor).
C. Tích hợp (Integrate).
D. Mua (Buy).

Câu 11.Để đảm bảo một lớp `DonHang` (Order) có tính liên kết cao (High Cohesion), điều gì là cần thiết?
A. Nó có thể gọi bất kỳ phương thức nào của lớp khác.
B. Nó chứa tất cả các thuộc tính của khách hàng và món ăn.
C. Nó là một phần của nhiều module khác nhau.
D. Các thuộc tính và phương thức của nó đều tập trung vào việc quản lý thông tin và trạng thái của một đơn hàng.

Câu 12.Khi thiết kế hệ thống, cần xác định các giao diện (interfaces) mà các module sẽ cung cấp. Việc này giúp gì trong giai đoạn cài đặt và tích hợp?
A. Làm cho code dài hơn.
B. Giảm sự cần thiết của kiểm thử.
C. Gây ra xung đột mã.
D. Cho phép các lập trình viên làm việc độc lập trên các module và dễ dàng tích hợp chúng sau này.

Câu 13.Nếu thiết kế ban đầu của lớp `Shipper` (người giao hàng) không tối ưu và cần được cải thiện mà không làm thay đổi hành vi bên ngoài, hoạt động nào nên được thực hiện?
A. Thêm tính năng mới.
B. Sửa lỗi chức năng.
C. Kiểm thử hiệu suất.
D. Tái cấu trúc (Refactoring).

Câu 14.Trong Biểu đồ lớp (Class Diagram) sau pha thiết kế, chúng ta sẽ thấy chi tiết hơn về các thuộc tính và phương thức của các lớp như `MonAn`, `NhaHang`, `DonHang`, cũng như các mối quan hệ như:
A. Luồng dữ liệu.
B. Trình tự thời gian.
C. Các trường hợp sử dụng.
D. Kế thừa, kết tập, thành phần, và liên kết.

Câu 15.Để xử lý các sự kiện thay đổi trạng thái của đơn hàng (ví dụ: `DonHang` từ `ChoXacNhan` sang `DangXuLy` sang `DangGiao`), mẫu thiết kế nào phù hợp để thông báo tự động cho các bên liên quan (khách hàng, nhà hàng)?
A. Strategy Pattern.
B. Factory Pattern.
C. Singleton Pattern.
D. Observer Pattern.

Câu 16.Nếu hệ thống đặt món ăn cần chạy trên cả ứng dụng di động (iOS/Android) và trình duyệt web, chiến lược thiết kế nào giúp tối ưu hóa việc phát triển giao diện người dùng?
A. Xây dựng hai hệ thống độc lập.
B. Chỉ tập trung vào một nền tảng.
C. Bỏ qua yêu cầu đa nền tảng.
D. Thiết kế tầng giao diện (Presentation Layer) có thể tách biệt và tùy chỉnh cho từng nền tảng, nhưng tái sử dụng logic nghiệp vụ chung.

Câu 17.Trong pha thiết kế, một rủi ro tiềm tàng là “nợ thiết kế” (Design Debt). Điều này có nghĩa là gì đối với hệ thống đặt món?
A. Khách hàng nợ tiền nhà phát triển.
B. Nhà phát triển nợ tiền ngân hàng.
C. Hệ thống sẽ có ít tính năng.
D. Các quyết định thiết kế không tối ưu ban đầu có thể làm tăng chi phí bảo trì và mở rộng trong tương lai.

Câu 18.Để đảm bảo hệ thống có thể xử lý được một lượng lớn các yêu cầu cùng lúc (ví dụ: trong giờ cao điểm), điều gì cần được thiết kế cẩn thận?
A. Giao diện người dùng.
B. Tài liệu.
C. Kiểm thử tự động.
D. Kiến trúc đồng thời (Concurrency) và cơ chế quản lý tài nguyên.

Câu 19.Một yêu cầu nói rằng “Hệ thống phải có nhật ký đầy đủ về mọi thao tác của người dùng.” Điều này ảnh hưởng đến thiết kế như thế nào?
A. Giảm độ phức tạp của thiết kế.
B. Không liên quan đến thiết kế.
C. Chỉ ảnh hưởng đến giao diện người dùng.
D. Yêu cầu thiết kế một module ghi nhật ký (logging module) và tích hợp nó vào các thành phần liên quan.

Câu 20.Biểu đồ nào trong UML sẽ hữu ích nhất để mô tả cách các thành phần phần mềm của hệ thống (ví dụ: `WebAppClient`, `BackendAPI`, `DatabaseServer`, `DeliveryService`) sẽ được triển khai trên các nút vật lý và mạng?
A. Biểu đồ lớp.
B. Biểu đồ trình tự.
C. Biểu đồ thành phần.
D. Biểu đồ triển khai (Deployment Diagram).

Câu 21.Trong thiết kế kiến trúc, việc sử dụng một “Message Queue” (Hàng đợi tin nhắn) giữa các dịch vụ `Order` và `Delivery` giúp gì?
A. Làm cho các dịch vụ phụ thuộc chặt chẽ hơn.
B. Giảm khả năng giao tiếp.
C. Chỉ áp dụng cho các hệ thống nhỏ.
D. Giúp các dịch vụ giao tiếp bất đồng bộ, tăng tính chịu lỗi và khả năng mở rộng.

Câu 22.Mục tiêu của việc kiểm thử thiết kế (Design Review) trong case study này là gì?
A. Để tìm lỗi cú pháp trong mã nguồn.
B. Để kiểm tra hiệu suất của ứng dụng.
C. Để xác nhận các yêu cầu chức năng.
D. Để phát hiện sớm các vấn đề trong kiến trúc, thiết kế lớp, và mối quan hệ trước khi cài đặt.

Câu 23.Một “Mẫu thiết kế” (Design Pattern) phù hợp để quản lý việc tạo ra các đối tượng `MonAn` (Dish) khác nhau (ví dụ: `MonAnChay`, `MonAnMan`) mà không cần phải gọi hàm tạo trực tiếp là gì?
A. Observer Pattern.
B. Strategy Pattern.
C. Singleton Pattern.
D. Factory Pattern.

Câu 24.Khi thiết kế hệ thống đặt món, việc phân biệt rõ ràng giữa `PhuongThucThanhToan` (PaymentMethod) và `GiaoDienThanhToan` (PaymentUI) thể hiện nguyên tắc thiết kế nào?
A. Tính kế thừa.
B. Tính đa hình.
C. Tính liên kết.
D. Tách biệt các mối quan tâm (Separation of Concerns).

Câu 25.Điều gì là kết quả quan trọng nhất sau khi hoàn thành pha thiết kế cho hệ thống đặt món ăn trực tuyến?
A. Một ứng dụng di động hoàn chỉnh.
B. Một danh sách dài các yêu cầu.
C. Một ngân sách dự án mới.
D. Một bản thiết kế chi tiết và toàn diện, sẵn sàng để đội ngũ lập trình bắt đầu cài đặt.

×

Bạn ơi!!! Để xem được kết quả
bạn vui lòng làm nhiệm vụ nhỏ xíu này nha

LƯU Ý: Không sử dụng VPN hoặc 1.1.1.1 khi vượt link

Bước 1: Mở tab mới, truy cập Google.com

Bước 2: Tìm kiếm từ khóa: Từ khóa

Bước 3: Trong kết quả tìm kiếm Google, hãy tìm website giống dưới hình:

(Nếu trang 1 không có hãy tìm ở trang 2, 3, 4... nhé )

Bước 4: Cuộn xuống cuối bài viết rồi bấm vào nút GIỐNG HÌNH DƯỚI và chờ 1 lát để lấy mã: