Đáp án đúng: B. Độ tin cậy (reliability) là xác suất phần mềm hoạt động không phát sinh sự cố trong một khoảng thời gian và điều kiện xác định. Vì vậy hệ thống tin cậy là hệ thống ÍT có khả năng gây ra hỏng hóc (failure) khi vận hành. Cần phân biệt fault (lỗi nằm trong mã) với failure (biểu hiện sai khi chạy): một hệ thống vẫn có thể chứa nhiều fault ở những nhánh hiếm khi được thực thi mà vẫn rất tin cậy, nên phương án C "gần như không còn lỗi" không phải định nghĩa của độ tin cậy. Phương án A nói về tiến độ dự án và phương án D nói về mức độ hài lòng của người dùng, đều là thuộc tính khác.
Tất cả câu hỏi
Ngân hàng câu hỏi trắc nghiệm có đáp án và giải thích chi tiết.
Đáp án đúng: E. Tiêu chí hoàn thành kiểm thử (test completion criteria, còn gọi là exit criteria) được đưa vào kế hoạch kiểm thử để trả lời câu hỏi KHI NÀO DỪNG kiểm thử: đạt bao nhiêu phần trăm bao phủ, còn bao nhiêu lỗi mức nghiêm trọng, rủi ro tồn đọng ở mức nào. Nhờ đó việc dừng kiểm thử là một quyết định có căn cứ chứ không phải vì hết thời gian hay hết tiền. Phương án A chỉ nói tới việc một phép kiểm thử chạy xong; B là mục tiêu của việc rà soát đặc tả ca kiểm thử; C thuộc kỹ thuật thiết kế dữ liệu đầu vào; D nói về hoàn thành khâu lập kế hoạch, không phải khâu kiểm thử.
Đáp án đúng: C. Không thể kiểm thử vét cạn, nên câu hỏi "kiểm thử bao nhiêu là đủ" không có đáp số cố định: mức độ đủ phụ thuộc vào rủi ro của ngành nghề, các ràng buộc hợp đồng và những yêu cầu đặc thù của sản phẩm. Phần mềm y tế hay hàng không đòi hỏi mức kiểm thử khác hẳn một ứng dụng giải trí. Phương án A quá bi quan vì câu hỏi vẫn trả lời được khi đặt trong bối cảnh rủi ro cụ thể; phương án B ngược lại, quá lạc quan; phương án D chỉ nêu một yếu tố nhỏ, mức trưởng thành của đội phát triển không phải căn cứ chính để xác định khối lượng kiểm thử.
Đáp án đúng: A. Tiêu chí đầu ra (exit criteria) được đặt ra ngay trong kế hoạch kiểm thử để xác định khi nào một MỨC kiểm thử được coi là hoàn tất, thường gồm mức độ bao phủ đạt được, số lỗi còn mở, rủi ro tồn đọng và chi phí. Phương án B chỉ nói tới việc một phép kiểm thử đơn lẻ chạy xong, đó là chuyện thực thi chứ không phải tiêu chí đầu ra của cả mức kiểm thử; phương án C nói về vòng đời sản phẩm (khi nào ngừng sử dụng hệ thống); phương án D là việc so sánh kết quả thực tế với kết quả mong đợi, tức tiêu chí đạt/không đạt của một ca kiểm thử.
Đáp án đúng: C. Kiểm thử chỉ nên dừng khi các tiêu chí hoàn thành (test completion criteria / exit criteria) đã được thoả mãn, bởi đó là thước đo khách quan đã thống nhất từ khi lập kế hoạch. Hết thời gian (A) hay chạy xong toàn bộ ca kiểm thử đã lập (B) chỉ là điều kiện hành chính, không nói lên chất lượng sản phẩm. Không tìm thấy lỗi nào (D) càng nguy hiểm vì có thể do bộ ca kiểm thử yếu chứ không phải phần mềm tốt - kiểm thử không chứng minh được sự vắng mặt của lỗi.
Đáp án đúng: A. Khi thời gian và nguồn lực có hạn, kiểm thử phải được ưu tiên theo rủi ro. Hai định hướng đúng là kiểm thử những vùng trọng yếu nhất với quy trình nghiệp vụ (1) và những vùng có khả năng chứa nhiều lỗi nhất (2) - nguyên lý "defect clustering" cho biết lỗi thường dồn vào một số ít mô-đun. Định hướng (3), kiểm thử những chức năng dễ nhất, là sai vì nó tiêu tốn công sức vào phần ít rủi ro và bỏ sót phần nguy hiểm. Vì vậy 1 và 2 đúng, 3 sai, tức phương án A; các phương án còn lại hoặc công nhận (3) hoặc phủ nhận (1), (2) nên đều không đạt.
Một số yếu tố thành công cho một cuộc đánh giá bao gồm: mỗi đánh giá không có một mục tiêu được định trước (i), các lỗi được tìm thấy được chào đón và được thể hiện một cách khách quan (ii), quản lý hỗ trợ một quá trình đánh giá tốt (iii) và có một trọng tâm vào việc học hỏi và cải tiến quy trình (iv). Các yếu tố này đóng vai trò quan trọng trong việc đảm bảo rằng quá trình đánh giá được thực hiện một cách hiệu quả và mang lại kết quả tích cực. Điều này giúp cho các cá nhân và tổ chức có thể học hỏi từ các lỗi và cải thiện quy trình của mình.
Đáp án đúng: B. Broker Forwarding chuyển tiếp mọi lời gọi qua broker, còn Broker Handle thì broker chỉ trả về một handle (tham chiếu) tới dịch vụ để sau đó client giao tiếp trực tiếp với dịch vụ. Vì vậy Broker Handle đặc biệt hữu ích khi client cần trao đổi nhiều lượt, tức là có một phiên hội thoại với dịch vụ: chỉ phải qua broker một lần rồi làm việc trực tiếp, tránh nút thắt cổ chai. Nếu client chỉ gọi một lần (A) thì forwarding đơn giản hơn; phương án C mô tả tình huống dùng dịch vụ môi giới nói chung; phương án D đảo ngược vai trò - chính broker mới là bên cấp handle.
Đáp án đúng: B. Thiết kế kiến trúc trong phát triển phần mềm tập trung vào việc xác định cấu trúc tổng thể của hệ thống và các thành phần ở mức cao: hệ thống gồm những khối nào, mỗi khối chịu trách nhiệm gì, chúng giao tiếp qua giao diện và cơ chế nào, đồng thời cân nhắc các thuộc tính chất lượng như hiệu năng, bảo mật, khả năng mở rộng. Chi tiết hoá hiện thực của từng lớp (A) thuộc thiết kế chi tiết; viết ca kiểm thử (C) thuộc pha kiểm thử; tái cấu trúc mã nguồn (D) là hoạt động cải tiến mã đã có, đều nằm ở mức thấp hơn so với thiết kế kiến trúc.
Đáp án đúng: A. Multiplicity trong UML thể hiện số lượng đối tượng có thể tham gia vào một quan hệ - tức là mỗi thể hiện ở đầu này của liên kết ứng với bao nhiêu thể hiện ở đầu kia, viết dưới dạng 1, 0..1, 1..* hay *. Nó ràng buộc cấu trúc dữ liệu của mô hình và là căn cứ để sinh khoá ngoại, bảng trung gian khi ánh xạ sang cơ sở dữ liệu quan hệ. Số lượng lớp (B), số thuộc tính (C) và số chuyển trạng thái (D) đều là những đại lượng đếm khác trong mô hình, không phải nội dung mà ký hiệu multiplicity biểu diễn.
Đáp án đúng: C. Trong dòng sản phẩm phần mềm (SPL), kernel class là lớp bắt buộc phải có ở MỌI thành viên của dòng sản phẩm - đó là phần lõi chung, không thay đổi giữa các biến thể. Bên cạnh kernel còn có lớp tuỳ chọn (optional) chỉ xuất hiện ở một số thành viên và lớp biến thể (variant) có nhiều phiên bản khác nhau. Phương án A và B mô tả vai trò lưu trữ dữ liệu của lớp thực thể chứ không nói tới tính bắt buộc chung; phương án D đặt lớp ra ngoài dòng sản phẩm, trái hẳn với ý nghĩa "lõi" của kernel.
Đáp án đúng: C. Inclusion use case là use case được các use case khác gọi tới bằng quan hệ include, dùng để tách phần hành vi chung lặp lại ở nhiều use case ra một nơi duy nhất. Trong câu hỏi này, cách diễn đạt đúng nhất là dùng nó để mô tả một use case có bao gồm các use case khác, tức là mối quan hệ bao hàm giữa các use case. Phương án A chỉ lặp lại chính từ trong câu hỏi mà không giải thích được điều gì; phương án B nói về độ dài tương tác với tác nhân, hoàn toàn không phải tiêu chí để tách một inclusion use case.
Đáp án đúng: A. Scalability - khả năng mở rộng - là thuộc tính chất lượng phản ánh khả năng hệ thống đáp ứng được tải tăng lên (nhiều người dùng, nhiều giao dịch, nhiều dữ liệu hơn) mà vẫn giữ được mức chất lượng dịch vụ, thường bằng cách bổ sung tài nguyên theo chiều ngang hoặc chiều dọc. Khả năng chạy trên nhiều nền tảng (B) là portability; bảo vệ tài nguyên (C) là security; còn tốc độ thuật toán (D) chỉ là một yếu tố góp phần vào performance. Cả ba đều là những thuộc tính chất lượng khác, không phải định nghĩa của scalability.
Đáp án đúng: B. Pha thiết kế kiến trúc phần mềm là nơi trả lời câu hỏi các thành phần phần mềm ghép với nhau và tương tác ra sao để thoả mãn yêu cầu: xác định các thành phần chính, giao diện, cơ chế giao tiếp và các mẫu kiến trúc được dùng. Thu thập yêu cầu (A) mới chỉ làm rõ hệ thống phải làm gì; thiết kế giao diện người dùng (C) chỉ giải quyết một khía cạnh hẹp là tương tác với người dùng; kiểm thử và thẩm định (D) diễn ra sau, nhằm kiểm chứng rằng hệ thống đã xây dựng đáp ứng đúng yêu cầu chứ không phải nơi định hình cấu trúc.
Đáp án đúng: C. Khi thiết lập liên kết giữa các đối tượng trên sơ đồ lớp, khái niệm nền tảng là multiplicity - bội số, cho biết mỗi thể hiện của lớp này có thể liên kết với bao nhiêu thể hiện của lớp kia (1, 0..1, 1..*, *). Bội số quyết định bản chất quan hệ một - một, một - nhiều hay nhiều - nhiều và về sau chi phối cả cách ánh xạ sang cơ sở dữ liệu quan hệ. Kiểu dữ liệu (A) thuộc về thuộc tính của lớp; tên use case (B) nằm ở mô hình use case; transition trigger (D) là yếu tố của máy trạng thái, đều không liên quan tới việc xác lập liên kết.
Đáp án đúng: A. Trọng tâm của thiết kế kiến trúc hệ thống con là phân hoạch hệ thống thành các mô-đun dễ quản lý và có thể tái sử dụng, mỗi mô-đun có trách nhiệm rõ ràng, kết dính cao bên trong và ghép lỏng với bên ngoài qua giao diện được định nghĩa tường minh. Nhờ đó nhiều nhóm có thể phát triển song song và thay đổi cục bộ không lan rộng. Phương án B sai vì thiết kế kiến trúc quản lý chứ không loại bỏ phụ thuộc hướng đối tượng; phương án C nhầm sang pha phân tích use case; phương án D sai vì kiến trúc càng cần UML để mô tả, không phải để giảm bớt.
Đáp án đúng: D. Thiết kế kiến trúc hệ thống con tập trung vào việc cấu trúc hoá toàn hệ thống thành các hệ thống con: xác định ranh giới, trách nhiệm, giao diện và quan hệ giữa chúng, đồng thời chọn mẫu kiến trúc phù hợp. Đây là mức nhìn tổng thể, đứng trên mức lớp. Phương án A mô tả chung cả bước chuyển từ phân tích sang thiết kế chứ không nói được trọng tâm; phương án B chỉ là một phần nhỏ thuộc thiết kế giao diện người dùng; phương án C thuộc mức thiết kế chi tiết và hiện thực từng lớp, diễn ra sau khi cấu trúc hệ thống con đã được xác lập.
Đáp án đúng: B. COMET (Collaborative Object Modeling and Architectural Design Method) là phương pháp thiết kế cung cấp một quy trình mô hình hoá kiến trúc có cấu trúc: đi từ mô hình use case sang mô hình phân tích tĩnh và động, rồi tới thiết kế kiến trúc phần mềm bằng các mẫu kiến trúc và mẫu thiết kế. Mục tiêu chính là giúp nhóm phát triển tổ chức được quá trình thiết kế một cách có hệ thống. Phương án A nhầm sang tối ưu cơ sở dữ liệu; phương án C sai vì COMET dùng rất nhiều statechart; phương án D nói về quy ước viết mã, hoàn toàn nằm ngoài phạm vi của một phương pháp thiết kế kiến trúc.
Đáp án đúng: A. Trong UML, abstract class là lớp không thể tạo thể hiện trực tiếp và có thể chứa các thao tác trừu tượng - những thao tác chỉ khai báo chữ ký, để lớp con hiện thực hoá. Lớp trừu tượng tồn tại nhằm gom phần chung của các lớp con và định nghĩa giao diện đa hình cho chúng; trong sơ đồ, tên lớp được viết nghiêng để đánh dấu. Phương án B, C, D nêu những đặc điểm không liên quan: một lớp không có thuộc tính, một lớp chỉ có phương thức tĩnh hay một lớp không có liên kết đều vẫn có thể được khởi tạo bình thường nên không phải lớp trừu tượng.
Đáp án đúng: B. Kiến trúc phân tầng tổ chức hệ thống thành một hệ thứ bậc các tầng, trong đó mỗi tầng cung cấp dịch vụ cho tầng ngay trên nó và chỉ sử dụng dịch vụ của tầng ngay dưới. Cách tổ chức này làm rõ trách nhiệm, giới hạn phạm vi thay đổi và cho phép thay thế một tầng mà ít ảnh hưởng phần còn lại. Client-server (A) chia theo vai trò yêu cầu - phục vụ chứ không theo thứ bậc dịch vụ; peer-to-peer (C) đặt các nút ngang hàng, vừa là client vừa là server; pipe-and-filter (D) nối các bộ lọc thành dây chuyền xử lý dữ liệu tuần tự.