Trắc nghiệm Công nghệ Phần mềm Bài: LẬP KẾ HOẠCH CHO CÁC DỰ ÁN PHẦN MỀM HƯỚNG ĐỐI TƯỢNG là một trong những đề thi thuộc Chương 5: LẬP KẾ HOẠCH VÀ ƯỚC LƯỢNG 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 chuyên sâu, khám phá những điểm đặc thù và các cân nhắc quan trọng khi lập kế hoạch cho các dự án phần mềm sử dụng phương pháp hướng đối tượng, một trong những cách tiếp cận phổ biến nhất hiện nay.
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ư: tầm quan trọng của kiến trúc và thiết kế sớm trong dự án hướng đối tượng, cách các nguyên tắc OOP (đóng gói, kế thừa, đa hình, trừu tượng) ảnh hưởng đến lập kế hoạch, các phương pháp ước lượng phù hợp (ví dụ: Use Case Points, Object Points), vai trò của UML trong việc định hình kế hoạch, quản lý rủi ro đặc trưng, và các chiến lược tái sử dụng trong ngữ cảnh hướng đối tượng. Việc hiểu rõ khía cạnh này sẽ giúp sinh viên xây dựng các kế hoạch dự án thực tế, linh hoạt và tối ưu hóa hiệu quả phát triển.
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: LẬP KẾ HOẠCH CHO CÁC DỰ ÁN PHẦN MỀM HƯỚNG ĐỐI TƯỢNG
Câu 1.Điểm khác biệt chính trong lập kế hoạch cho dự án phần mềm hướng đối tượng so với dự án truyền thống (hướng chức năng) là gì?
A. Tập trung vào việc lập kế hoạch chi tiết cho từng hàm.
B. Ưu tiên tốc độ cài đặt hơn thiết kế.
C. Bỏ qua hoàn toàn việc quản lý rủi ro.
D. Nhấn mạnh vào việc phát triển kiến trúc hệ thống ổn định và có thể mở rộng từ sớm.
Câu 2.Phương pháp ước lượng nào sau đây thường được sử dụng trong các dự án phần mềm hướng đối tượng dựa trên các trường hợp sử dụng?
A. Lines of Code (LOC).
B. COCOMO.
C. Function Point.
D. Use Case Points.
Câu 3.Khi lập kế hoạch cho dự án hướng đối tượng, “tái sử dụng” (reuse) ảnh hưởng đến ước lượng như thế nào?
A. Làm tăng thời gian phát triển vì phải tìm kiếm các thành phần.
B. Không ảnh hưởng đến chi phí.
C. Làm tăng rủi ro của dự án.
D. Có thể giảm đáng kể thời gian và chi phí phát triển nếu được quản lý hiệu quả.
Câu 4.UML (Unified Modeling Language) có vai trò gì trong việc lập kế hoạch dự án phần mềm hướng đối tượng?
A. Chỉ để viết mã nguồn.
B. Chỉ để kiểm thử phần mềm.
C. Là ngôn ngữ lập trình.
D. Cung cấp các mô hình trực quan để hiểu yêu cầu, thiết kế kiến trúc và ước lượng kích thước.
Câu 5.Trong dự án hướng đối tượng, pha nào thường được dành nhiều thời gian và tài nguyên hơn so với dự án truyền thống?
A. Pha Cài đặt.
B. Pha Kiểm thử đơn vị.
C. Pha Bảo trì.
D. Pha Phân tích và Thiết kế kiến trúc.
Câu 6.Nguyên tắc “tính đóng gói” (Encapsulation) trong OOP ảnh hưởng đến lập kế hoạch tích hợp như thế nào?
A. Làm cho việc tích hợp phức tạp hơn.
B. Không ảnh hưởng đến tích hợp.
C. Yêu cầu tích hợp tất cả các module cùng một lúc.
D. Giúp việc tích hợp các module độc lập dễ dàng hơn do giảm sự phụ thuộc nội bộ.
Câu 7.Một rủi ro đặc trưng khi lập kế hoạch cho các dự án OOP lớn là gì?
A. Không đủ khả năng tìm ra lỗi cú pháp.
B. Khách hàng thay đổi yêu cầu liên tục.
C. Phần cứng không đủ mạnh.
D. Sự phức tạp trong việc quản lý cây kế thừa và các mối quan hệ giữa các đối tượng có thể gây ra “nợ kỹ thuật” nếu thiết kế kém.
Câu 8.Khi lập kế hoạch cho các dự án hướng đối tượng sử dụng phương pháp Agile (như Scrum), đơn vị ước lượng nào thường được sử dụng?
A. Man-months.
B. Lines of Code.
C. Function Points.
D. Story Points.
Câu 9.Việc lập kế hoạch trong các dự án hướng đối tượng thường khuyến khích sự phát triển theo phương pháp nào?
A. Mô hình Thác nước (Waterfall).
B. Mô hình Xây sửa (Build-and-Fix).
C. Mô hình Big Bang.
D. Lặp đi lặp lại và tăng dần (Iterative and Incremental).
Câu 10.Mô hình kiến trúc nào thường được ưu tiên trong các dự án hướng đối tượng để tăng tính linh hoạt và khả năng mở rộng?
A. Kiến trúc tập trung (Monolithic).
B. Kiến trúc theo chức năng.
C. Kiến trúc tuần tự.
D. Kiến trúc hướng dịch vụ (Service-Oriented Architecture – SOA) hoặc Microservices.
Câu 11.Phát biểu nào sau đây **không đúng** về lập kế hoạch cho dự án phần mềm hướng đối tượng?
A. Ưu tiên thiết kế kiến trúc sớm.
B. Khuyến khích tái sử dụng thành phần.
C. Sử dụng UML làm công cụ mô hình hóa chính.
D. Chỉ tập trung vào việc viết code mà không cần tài liệu hóa thiết kế.
Câu 12.Khi lập kế hoạch tài liệu hóa cho dự án OOP, loại tài liệu nào thường được ưu tiên?
A. Tài liệu chi tiết về mỗi dòng code.
B. Tài liệu về các yêu cầu phi chức năng.
C. Tài liệu về kiểm thử hiệu suất.
D. Các mô hình thiết kế (ví dụ: Class Diagrams, Sequence Diagrams) và tài liệu kiến trúc.
Câu 13.Nếu một dự án OOP có nhiều mối quan hệ “is-a” (kế thừa) sâu, điều này ảnh hưởng đến việc lập kế hoạch kiểm thử như thế nào?
A. Làm cho việc kiểm thử dễ dàng hơn.
B. Giảm số lượng trường hợp kiểm thử.
C. Không ảnh hưởng.
D. Yêu cầu kiểm thử đa hình và đảm bảo rằng các phương thức ghi đè hoạt động đúng trong các ngữ cảnh khác nhau.
Câu 14.Trong lập kế hoạch nguồn lực cho dự án OOP, đội ngũ phát triển thường được tổ chức theo cách nào?
A. Theo cá nhân độc lập.
B. Theo ngôn ngữ lập trình.
C. Theo vị trí địa lý.
D. Theo các nhóm chức năng, nhóm thành phần (component teams) hoặc nhóm tính năng (feature teams).
Câu 15.Khái niệm “Design Debt” (Nợ thiết kế) trong dự án OOP có ý nghĩa gì đối với lập kế hoạch?
A. Là chi phí cho công cụ thiết kế.
B. Là khoản tiền vay để thiết kế.
C. Là chi phí phải trả cho việc thuê kiến trúc sư.
D. Là chi phí phát sinh trong tương lai do các quyết định thiết kế không tối ưu, có thể làm tăng chi phí bảo trì.
Câu 16.Để giảm thiểu rủi ro trong dự án OOP, hoạt động nào cần được ưu tiên trong các vòng lặp sớm?
A. Viết code cho tất cả các tính năng.
B. Triển khai sản phẩm cho người dùng.
C. Chỉ tập trung vào giao diện người dùng.
D. Phát triển và ổn định kiến trúc cốt lõi của hệ thống.
Câu 17.Trong một dự án hướng đối tượng, việc lập kế hoạch cho “kiểm thử đơn vị” (Unit Testing) thường sẽ tập trung vào điều gì?
A. Kiểm thử toàn bộ hệ thống.
B. Kiểm thử sự tương tác giữa các module.
C. Kiểm thử giao diện người dùng.
D. Kiểm thử các lớp (classes) và các phương thức (methods) riêng lẻ.
Câu 18.Phương pháp ước lượng nào tính toán kích thước dự án dựa trên số lượng đối tượng và thuộc tính của chúng?
A. Function Point.
B. Use Case Points.
C. Lines of Code.
D. Object Points.
Câu 19.Việc lập kế hoạch cho “refactoring” (tái cấu trúc mã) trong dự án hướng đối tượng có ý nghĩa gì?
A. Làm tăng chi phí không cần thiết.
B. Làm giảm chất lượng mã.
C. Chỉ sửa lỗi nghiêm trọng.
D. Giúp cải thiện thiết kế mã nguồn, dễ bảo trì và mở rộng hơn mà không làm thay đổi chức năng.
Câu 20.Khi lập kế hoạch cho các dự án OOP, đặc biệt là các hệ thống lớn, việc “phân rã” (decomposition) thường được thực hiện dựa trên nguyên tắc nào?
A. Phân rã theo ngôn ngữ lập trình.
B. Phân rã theo số lượng dòng code.
C. Phân rã ngẫu nhiên.
D. Phân rã theo đối tượng, lớp và các thành phần logic.
Câu 21.Tại sao việc lập kế hoạch cho các “interface” (giao diện) giữa các đối tượng/module lại rất quan trọng trong dự án OOP?
A. Để làm cho mã nguồn phức tạp hơn.
B. Để che giấu thông tin quan trọng.
C. Để giảm sự tương tác giữa các đối tượng.
D. Đảm bảo các thành phần có thể giao tiếp và tích hợp một cách nhất quán, giảm thiểu lỗi tích hợp.
Câu 22.Mối quan hệ giữa “tính đa hình” (Polymorphism) và lập kế hoạch kiểm thử là gì?
A. Đa hình làm cho kiểm thử không cần thiết.
B. Đa hình làm cho kiểm thử đơn giản hơn.
C. Đa hình không ảnh hưởng đến kiểm thử.
D. Đa hình yêu cầu các trường hợp kiểm thử đa dạng hơn để đảm bảo các hành vi khác nhau được xử lý đúng.
Câu 23.Khi lập kế hoạch cho dự án OOP, việc xác định “các kịch bản sử dụng” (use cases) ở giai đoạn đầu có lợi ích gì?
A. Chỉ để tìm lỗi.
B. Chỉ để tạo tài liệu.
C. Để làm cho dự án phức tạp.
D. Cung cấp một cơ sở rõ ràng để định nghĩa phạm vi, chức năng và ưu tiên các tác vụ phát triển.
Câu 24.Tầm quan trọng của việc có một “tầm nhìn kiến trúc” (architectural vision) rõ ràng trong lập kế hoạch cho dự án OOP là gì?
A. Chỉ để làm cho tài liệu dài hơn.
B. Chỉ để làm cho dự án đắt hơn.
C. Để giới hạn khả năng sáng tạo.
D. Hướng dẫn toàn bộ quá trình thiết kế và phát triển, đảm bảo tính nhất quán và khả năng mở rộng của hệ thống.
Câu 25.Khi lập kế hoạch cho việc tích hợp các thành phần trong dự án OOP, phương pháp nào thường được ưa chuộng?
A. Tích hợp Big Bang.
B. Tích hợp ngẫu nhiên.
C. Không cần tích hợp.
D. Tích hợp tăng dần (Incremental Integration) và tích hợp liên tục (Continuous Integration).