Đáp án đúng: D. Trong chiến lược mô hình hoá tương tác động phụ thuộc trạng thái (state-dependent dynamic interaction modeling) của COMET, bước đầu tiên là xác định đối tượng biên (boundary object) — vì đây chính là đối tượng nhận sự kiện từ môi trường bên ngoài rồi chuyển thành thông điệp gửi vào hệ thống. Không xác định được nguồn kích thích bên ngoài thì không dựng được chuỗi tương tác. A sai vì đối tượng thực thi statechart là đối tượng điều khiển (control object), không phải đối tượng biên. B sai vì việc liệt kê các kịch bản thay thế thuộc pha mô hình hoá use case, không phải mục đích của việc xác định đối tượng biên. C sai vì đó là mục tiêu chung của cả sơ đồ tương tác, không phải lý do riêng để xác định đối tượng biên.
Quiz: SWD392_FE_RE_SU26 - Có đáp án và giải thích chi tiết
Phiên có lưu tiến độ dùng toàn bộ 60 câu của bộ đề để tiến độ khớp với máy chủ.
Bạn cần đăng nhập để bắt đầu làm bài và lưu tiến độ.
60
Không giới hạn
0
60
60
Xem trước câu hỏi
Đáp án đúng: A. Trạng thái ghép (composite state) là trạng thái được phân rã thành các trạng thái con (substate) — đây chính là cơ chế tạo nên statechart phân cấp: một trạng thái ở mức cao che giấu bên trong nó cả một máy trạng thái con. B sai vì quan hệ ngược chiều: trạng thái con không "ghép lại" thành trạng thái ghép, mà trạng thái ghép được phân rã ra thành trạng thái con. C và D đều sai vì mô tả một phép chuyển (transition) giữa hai trạng thái ngang hàng, trong khi quan hệ ghép/con là quan hệ chứa đựng theo cấp bậc, không phải quan hệ chuyển tiếp.
Đáp án đúng: C. State Pattern sinh ra đúng cho tình huống này: hành vi của đối tượng thay đổi theo trạng thái nội tại, mỗi trạng thái được tách thành một lớp riêng, và đối tượng ngữ cảnh uỷ quyền lời gọi cho đối tượng trạng thái hiện hành — nên khi trạng thái đổi thì hành vi đổi theo ngay lúc chạy. B sai vì Strategy cũng hoán đổi hành vi lúc chạy nhưng do bên ngoài chọn thuật toán, không do trạng thái nội tại của đối tượng quyết định. A sai vì Observer giải quyết việc thông báo thay đổi cho nhiều bên quan tâm. D sai vì Singleton chỉ kiểm soát số lượng thể hiện của lớp, không liên quan tới hành vi thay đổi theo trạng thái.
Đáp án đúng: B. Các mẫu kiến trúc được chia hai nhóm: mẫu CẤU TRÚC (architectural structure pattern) mô tả cách tổ chức các thành phần, và mẫu GIAO TIẾP (architectural communication pattern) mô tả cách các thành phần trao đổi thông điệp. Layers of Abstraction là mẫu cấu trúc — nó quy định hệ thống được tổ chức thành các tầng, tầng trên chỉ dùng dịch vụ của tầng dưới. A, C, D đều thuộc nhóm mẫu GIAO TIẾP: Call/Return là gọi hàm đồng bộ trong tiến trình, Asynchronous Message Communication là gửi thông điệp bất đồng bộ không chờ, Synchronous Message Communication with Reply là gửi thông điệp rồi chờ hồi đáp. Chúng nói về cách nói chuyện, không nói về cách xếp đặt cấu trúc.
Đáp án đúng: C. Trong phân loại đối tượng của COMET, đối tượng logic ứng dụng (application logic object) gồm ba nhánh: đối tượng logic nghiệp vụ, đối tượng thuật toán và đối tượng dịch vụ. Đối tượng logic nghiệp vụ tồn tại chính là để gói riêng các quy tắc nghiệp vụ, tách khỏi dữ liệu và khỏi giao diện, để khi quy tắc nghiệp vụ đổi thì chỉ sửa một chỗ. A sai vì đối tượng điều khiển lo việc điều phối trình tự và trạng thái, không phải nơi chứa quy tắc nghiệp vụ. B sai vì đối tượng biên chỉ lo giao tiếp với môi trường bên ngoài. D sai vì đối tượng thực thể chỉ lưu trữ dữ liệu bền vững; nhét quy tắc nghiệp vụ vào đó là làm mất tính độc lập mà câu hỏi đang nhắm tới.
Đáp án đúng: B. Với quan hệ toàn thể/bộ phận (whole/part), bộ phận phụ thuộc sự tồn tại vào toàn thể. Khi ánh xạ sang cơ sở dữ liệu quan hệ, khoá chính của bảng toàn thể được đưa vào bảng bộ phận và trở thành một phần của khoá chính bảng bộ phận — tạo ra khoá chính ghép (concatenated primary key), thể hiện đúng rằng bộ phận không tự định danh được nếu không có toàn thể. A sai vì đảo ngược chiều phụ thuộc: khoá ngoại nằm ở phía bộ phận, không nằm ở phía toàn thể. C nói đúng một nửa (bộ phận thường có bảng riêng) nhưng không trả lời được câu hỏi cốt lõi là quan hệ được biểu diễn thế nào. D sai vì mô hình quan hệ vẫn giữ dạng phẳng — phân cấp được diễn đạt bằng khoá, không phải bằng việc phá vỡ chuẩn phẳng.
Đáp án đúng: B. Khi hệ thống tiến hoá, người dùng đã quen với luồng thao tác hiện có. Cách làm được khuyến nghị là giữ nguyên luồng công việc rồi điều chỉnh bố cục từng bước, để người dùng không phải học lại và rủi ro được chia nhỏ theo từng đợt. A sai vì thiết kế lại toàn bộ màn hình cùng lúc là thay đổi lớn nhất, rủi ro cao nhất, và phá vỡ thói quen người dùng. C sai vì tái cấu trúc backend không giải quyết được vấn đề giao diện. D sai vì bỏ qua chuẩn khả dụng cũ là cách chắc chắn làm người dùng lâu năm mất phương hướng.
Đáp án đúng: C. Sơ đồ tuần tự (sequence diagram) mô tả tương tác theo thời gian giữa các đối tượng, gồm đường đời (lifeline), thông điệp (message) và thanh kích hoạt (activation bar). "Entities" không phải một phần tử ký pháp của sơ đồ tuần tự — thực thể là một loại đối tượng (stereotype), và trên sơ đồ nó vẫn xuất hiện dưới dạng một đường đời như mọi đối tượng khác. A, B, D đều là phần tử chuẩn của sơ đồ tuần tự: lifeline là trục dọc biểu diễn đối tượng theo thời gian, message là mũi tên trao đổi giữa các lifeline, activation bar là khối chữ nhật mảnh cho biết đối tượng đang thực thi.
Đáp án đúng: C. Đặc tính kiến trúc (architecture characteristic) là các yêu cầu phi chức năng — hiệu năng, khả năng mở rộng, bảo mật, khả năng bảo trì… Chúng định nghĩa tiêu chí thành công của hệ thống và trực giao với chức năng: cùng một tập chức năng có thể được hiện thực với những mức đặc tính rất khác nhau, và chính chúng mới là thứ quyết định lựa chọn kiến trúc. A sai vì chức năng hệ thống do yêu cầu chức năng mô tả, đó chính là phần "trực giao" còn lại. B sai vì quy trình phát triển là chuyện quản lý dự án, không phải đặc tính kiến trúc. D sai vì thiết kế giao diện là quyết định ở tầng thấp hơn nhiều.
Đáp án đúng: A. Một bảng quan hệ chỉ có ĐÚNG MỘT khoá chính. Vì vậy phát biểu "bảng có nhiều khoá chính" là phát biểu sai — đây là điều câu hỏi đang tìm. B đúng vì một bảng hoàn toàn có thể có nhiều khoá ngoại, mỗi khoá trỏ tới một bảng khác. C đúng vì mỗi bảng đều cần một khoá chính để định danh bản ghi. D đúng vì khoá chính có thể là khoá ghép gồm nhiều cột — vẫn chỉ là MỘT khoá chính, chỉ khác là nó gồm nhiều thuộc tính; đừng nhầm khoá ghép với "nhiều khoá chính".
Đáp án đúng: B. Khi hệ thống tiến hoá, mô hình phân tích, mô hình thiết kế và mô hình kiến trúc phải được tinh chỉnh đồng bộ với nhau. Chỉ khi mọi tinh chỉnh được đồng bộ chéo thì các mô hình mới còn nói cùng một câu chuyện về hệ thống. A sai vì tinh chỉnh từng mô hình độc lập, không đối chiếu chéo, chính là nguyên nhân sinh ra mâu thuẫn giữa các mô hình. C sai vì hoãn cập nhật mô hình tới sau khi hiện thực xong biến mô hình thành tài liệu chết, không còn phản ánh hệ thống thật. D sai vì kiểm thử mức thành phần chỉ bắt lỗi hiện thực, không phát hiện được mâu thuẫn giữa các mô hình.
Đáp án đúng: A. Singleton Pattern bảo đảm một lớp chỉ có duy nhất một thể hiện trong toàn chương trình và cung cấp một điểm truy cập toàn cục tới thể hiện đó — đúng nguyên văn yêu cầu của câu hỏi. B sai vì Factory lo việc tạo đối tượng mà không lộ lớp cụ thể, không giới hạn số lượng thể hiện. C sai vì MVC là mẫu kiến trúc tách giao diện, dữ liệu và điều khiển. D sai vì Observer lo việc thông báo thay đổi tới nhiều đối tượng theo dõi.
Đáp án đúng: A. Trong mẫu Distributed Control, quyền điều khiển được chia cho nhiều thành phần điều khiển, mỗi thành phần điều khiển một phần của hệ thống và trao đổi trực tiếp với nhau — không có một thành phần trung tâm nào nắm toàn quyền. C sai vì "điều phối nhiều thành phần điều khiển" là đặc trưng của Hierarchical Control, nơi có một thành phần cấp trên phối hợp các thành phần cấp dưới. D sai vì "điều khiển toàn bộ các đối tượng vào/ra" là đặc trưng của Centralized Control. B sai vì đáp ứng yêu cầu từ nhiều hệ thống con khách là đặc trưng của mẫu client/service, không phải mẫu điều khiển.
Đáp án đúng: A. Khung 'alt' (alternative) trong sơ đồ tuần tự chia phần thân thành nhiều ngăn, mỗi ngăn kèm một điều kiện canh (guard); lúc chạy chỉ ngăn có điều kiện đúng được thực hiện. Nhờ đó một sơ đồ duy nhất diễn tả được nhiều chuỗi tương tác thay thế nhau theo điều kiện. B sai vì 'alt' không sinh thêm đường đời — số lifeline không đổi. C sai vì 'alt' nằm trong một sơ đồ, không phải công cụ chuyển qua lại giữa các sơ đồ. D sai vì 'alt' bao lấy cả một chuỗi tương tác có điều kiện, không phải chỉ khai báo danh sách thông điệp có thể gửi.
Đáp án đúng: B. Một use case gồm chuỗi chính (main sequence) và các chuỗi thay thế (alternative sequence). Sơ đồ tương tác phải phủ cả chuỗi chính lẫn từng chuỗi thay thế, vì mỗi chuỗi thay thế là một đường đi khác nhau qua hệ thống với tập thông điệp khác nhau — bỏ sót chuỗi nào là bỏ sót đúng phần hành vi đó khi thiết kế. A và D đều sai vì chỉ phủ được một nửa: chỉ chuỗi chính thì mất hết nhánh ngoại lệ, chỉ chuỗi thay thế thì mất luôn luồng nghiệp vụ chính. C sai vì lấy "một chuỗi thay thế đại diện" là lấy mẫu — các chuỗi thay thế khác nhau về bản chất (lỗi nhập liệu, hết hàng, hết hạn…), không có chuỗi nào đại diện được cho các chuỗi còn lại.
Đáp án đúng: C. Mẫu Hierarchical Control có một thành phần điều khiển cấp trên đóng vai trò điều phối nhiều thành phần điều khiển cấp dưới: nó ra lệnh, nhận báo cáo và quyết định trình tự tổng thể, còn việc điều khiển chi tiết vẫn nằm ở cấp dưới. A sai vì "quyền điều khiển chia đều cho nhiều thành phần" mà không có cấp phối hợp là mẫu Distributed Control. D sai vì "điều khiển toàn bộ đối tượng vào/ra" là mẫu Centralized Control — điều khiển thẳng thiết bị chứ không qua thành phần điều khiển trung gian. B sai vì kiểm soát các hệ thống con khách thuộc phạm vi mẫu client/service.
Đáp án đúng: C. Khi đặt việc tái sử dụng lên hàng đầu trong SOA, các dịch vụ có xu hướng bị nhiều bên gọi và phải gánh nhiều tình huống sử dụng khác nhau; hệ quả là chúng dính chặt vào nhau — sửa một dịch vụ dùng chung thì kéo theo rủi ro cho mọi bên tiêu thụ. Đây chính là đánh đổi cổ điển giữa reuse và loose coupling. A, B, D đều là điều mong muốn chứ không phải nhược điểm: tăng tính linh hoạt, giảm độ phức tạp và cải thiện độ mịn của dịch vụ đều là lợi ích được kỳ vọng, nên không thể là đáp án cho câu hỏi tìm nhược điểm.
Đáp án đúng: B. Thành phần ghép (composite component) là thành phần được cấu tạo từ nhiều thành phần nhỏ hơn, mỗi thành phần con vẫn tái sử dụng được; bên ngoài chỉ nhìn thấy giao diện của thành phần ghép, còn cấu trúc bên trong được che giấu. A sai vì "không tái sử dụng được" đi ngược đúng tinh thần của thiết kế theo thành phần. C sai vì "nguyên khối, không chia được" là định nghĩa trái ngược hẳn với "ghép". D sai vì thành phần chỉ làm một nhiệm vụ đơn lẻ là thành phần đơn (simple component), không phải thành phần ghép.
Đáp án đúng: B. Cách xử lý tương tranh phổ biến và chuẩn mực là dùng khoá (lock) cùng các cơ chế đồng bộ như semaphore, monitor, biến điều kiện — để bảo vệ vùng tranh chấp, bảo đảm chỉ một luồng thao tác lên dữ liệu dùng chung tại một thời điểm. A sai vì lạm dụng biến toàn cục làm tăng vùng tranh chấp, khiến tình hình tệ hơn. C và D đều sai vì né tránh chứ không quản lý: không tạo luồng hoặc chỉ chạy đơn luồng thì đúng là không còn tương tranh, nhưng cũng mất luôn khả năng xử lý đồng thời mà hệ thống cần.
Đáp án đúng: B. Tổng quát hoá (Generalization) là quan hệ kế thừa trong UML, biểu diễn phân cấp "là một" (is-a): lớp con là một dạng cụ thể của lớp cha và thừa hưởng thuộc tính, thao tác của lớp cha. Ký pháp là mũi tên đầu tam giác rỗng trỏ về lớp cha. A sai vì kết tập (Aggregation) biểu diễn quan hệ "có một / gồm có" (has-a), tức toàn thể/bộ phận. C sai vì liên kết (Association) chỉ là quan hệ cấu trúc chung giữa các lớp, không hàm ý kế thừa. D sai vì phụ thuộc (Dependency) chỉ nói lớp này dùng tới lớp kia, quan hệ yếu nhất trong nhóm.
Đáp án đúng: B. Mô hình use case mô tả hành vi chức năng của hệ thống nhìn từ bên ngoài: các tác nhân là ai, họ cần hệ thống làm gì, và mỗi chức năng đem lại giá trị gì cho họ. Đây là mô hình của pha đặc tả yêu cầu, cố tình không nói tới cách hiện thực. A sai vì bố cục đối tượng thuộc mô hình tĩnh (sơ đồ lớp). C sai vì cấu trúc cơ sở dữ liệu là quyết định ở pha thiết kế, xuất hiện sau và không thuộc mô hình use case. D sai vì phụ thuộc giữa các thành phần được thể hiện bằng sơ đồ thành phần.
Đáp án đúng: A (True). Đây đúng là định nghĩa của sơ đồ giao tiếp tích hợp (integrated communication diagram): nó là bản tổng hợp của tất cả các sơ đồ giao tiếp đã dựng cho từng use case, gộp chúng lại thành một bức tranh chung để nhìn thấy toàn bộ các đối tượng và mọi tương tác giữa chúng trên cùng một sơ đồ. Chọn False sẽ sai, vì phát biểu không hề nói quá: chữ "merger" (hợp nhất) trong câu chính là cách sơ đồ này được xây — chồng các sơ đồ giao tiếp riêng lẻ lên nhau, gộp các đối tượng trùng nhau làm một.
Đáp án đúng: C. Đối tượng điều phối (coordinator object) là đối tượng RA QUYẾT ĐỊNH tổng thể: nó quyết định trình tự thực hiện cho một nhóm đối tượng liên quan, dựa trên thông tin nhận được chứ không dựa trên máy trạng thái. B sai chính ở chỗ đó — đối tượng ra quyết định dựa trên máy trạng thái là đối tượng điều khiển phụ thuộc trạng thái (state-dependent control object), một loại khác; đối tượng điều phối không phụ thuộc trạng thái. A sai vì "đối tượng quản lý" là cách gọi mơ hồ, không phải một hạng mục đối tượng trong COMET. D sai vì việc chọn đối tượng thực thể nào để tương tác chỉ là một hệ quả vụn vặt, không phải định nghĩa.
Đáp án đúng: D. Dòng sản phẩm phần mềm (software product line) là một họ hệ thống chia sẻ phần chung (kernel — có mặt ở mọi thành viên) và khác nhau ở phần biến thiên (optional/variant). Chính cặp "chung + biến thiên" này là điều làm nên khái niệm SPL: xây một lần phần chung rồi sinh ra nhiều thành viên. C sai vì tập sản phẩm mà một công ty bán ra chỉ là danh mục thương mại, chúng có thể chẳng chia sẻ kiến trúc hay thành phần nào. A và B sai hoàn toàn — pipeline trên cloud và dịch vụ trên máy chủ là khái niệm hạ tầng, không liên quan tới họ sản phẩm.
Đáp án đúng: C. Thuộc tính chất lượng được chia làm hai nhóm theo cách đo: nhóm quan sát được khi hệ thống chạy (observable — hiệu năng, tính sẵn sàng, bảo mật, khả dụng) và nhóm không quan sát được khi chạy (non-observable — khả năng bảo trì, khả chuyển, khả kiểm thử, tái sử dụng). Muốn tính đủ các thuộc tính chất lượng thì phải dùng cả hai nhóm độ đo. A và B đều sai vì mỗi phương án chỉ lấy một nửa: chỉ đo lúc chạy thì không đánh giá được khả năng bảo trì hay khả chuyển; chỉ đo tĩnh thì không biết hệ thống chạy nhanh chậm ra sao. D sai vì rõ ràng có độ đo dùng được, không phải là "không cái nào".
Đáp án đúng: B. Mục tiêu của quy trình thiết kế phần mềm là biến yêu cầu người dùng thành kiến trúc và thiết kế hệ thống: quyết định hệ thống gồm những thành phần nào, mỗi thành phần chịu trách nhiệm gì và chúng ghép với nhau ra sao — tức bắc cầu từ "cần gì" sang "làm thế nào". A sai vì viết mã ngay lập tức là bỏ qua chính pha thiết kế mà câu hỏi đang nói tới. C sai vì lược đồ cơ sở dữ liệu chỉ là một phần của thiết kế, và thường được quyết định sau khi đã có mô hình phân tích. D sai vì kiểm thử bảo mật là một hoạt động kiểm chứng, không phải mục tiêu của thiết kế.
Đáp án đúng: C. Ưu điểm của statechart phân cấp so với statechart phẳng là cho phép phân rã trạng thái: một trạng thái ghép chứa cả một máy trạng thái con bên trong. Nhờ vậy hệ thống phức tạp được mô tả theo nhiều mức, và những phép chuyển dùng chung cho cả nhóm trạng thái con chỉ cần vẽ một lần ở mức cha — giảm hẳn số phép chuyển phải vẽ. A sai vì statechart phân cấp không hề né tránh hành vi động, nó chính là công cụ mô tả hành vi động. B sai vì phân cấp là chuyện tổ chức mô hình, không làm chương trình chạy nhanh hơn. D sai vì statechart phân cấp vẫn cần phép chuyển, chỉ là được tổ chức gọn hơn.
Đáp án đúng: A. Kiến trúc hệ thống con tồn tại để chia một hệ thống lớn thành các phần nhỏ, quản lý được, mỗi phần có ranh giới và giao diện rõ ràng để có thể thiết kế, phát triển, kiểm thử và triển khai tương đối độc lập. B sai vì khung kiểm thử là công cụ hỗ trợ, không phải mục đích của việc phân rã kiến trúc. C sai vì sơ đồ UML là phương tiện diễn đạt kiến trúc, không phải mục tiêu của kiến trúc. D sai vì tập trung hoá lưu trữ dữ liệu là một quyết định thiết kế cụ thể, thậm chí thường đi ngược lại tinh thần phân rã.
Đáp án đúng: A. Kiến trúc phần mềm được nhìn qua ba góc: góc nhìn tĩnh (cấu trúc — lớp, thành phần và quan hệ giữa chúng), góc nhìn động (tương tác giữa các thành phần lúc chạy) và góc nhìn triển khai (thành phần nằm trên nút phần cứng nào). Ba góc này bổ sung nhau và cùng nhau mới mô tả đủ một kiến trúc. B, C, D đều sai vì mỗi phương án đánh tráo một trong ba góc nhìn bằng "user interface views" hoặc "data management views" — đây là mối quan tâm ở tầng thiết kế chi tiết của một hệ thống con cụ thể, không phải một góc nhìn kiến trúc ngang hàng với tĩnh/động/triển khai.
Đáp án đúng: B. Khả năng bảo trì (maintainability) là mức độ dễ dàng khi sửa đổi phần mềm: sửa lỗi, cải thiện hiệu năng, hoặc thích ứng với thay đổi của môi trường và yêu cầu. Trọng tâm là CHI PHÍ THAY ĐỔI, không phải chất lượng lúc vận hành. A sai vì "thực hiện đúng chức năng, không hỏng" là định nghĩa của độ tin cậy (reliability). C sai vì "mở rộng để chịu tải cao hơn" là khả năng mở rộng (scalability). D sai vì "dùng được trên nhiều môi trường vận hành khác nhau" là tính khả chuyển (portability).
Đáp án đúng: A. Đường đi thay thế trong sơ đồ tuần tự được biểu diễn bằng khung điều kiện 'alt': khung được chia thành nhiều ngăn, mỗi ngăn có một điều kiện canh, và lúc chạy chỉ ngăn khớp điều kiện được thực hiện — đúng nghĩa "hoặc nhánh này, hoặc nhánh kia". B sai vì 'opt' chỉ diễn tả một đoạn CÓ THỂ xảy ra hoặc không, tức chỉ một nhánh có điều kiện, không phải nhiều đường đi thay thế nhau. C sai vì 'loop' diễn tả lặp. D sai vì 'par' diễn tả các đoạn chạy song song, tức xảy ra ĐỒNG THỜI chứ không phải loại trừ nhau.
Đáp án đúng: C. Trong mô hình hoá tương tác phụ thuộc trạng thái, đối tượng thực thi máy trạng thái là đối tượng điều khiển (control object) — cụ thể là đối tượng điều khiển phụ thuộc trạng thái. Nó nhận thông điệp đến, tra bảng chuyển trạng thái, đổi trạng thái và phát ra các hành động tương ứng. A sai vì đối tượng biên chỉ nhận sự kiện từ bên ngoài rồi chuyển tiếp vào cho đối tượng điều khiển, bản thân nó không giữ máy trạng thái. B sai vì đối tượng thực thể chỉ lưu dữ liệu. D sai vì đối tượng giao diện người dùng cũng chỉ là một dạng đối tượng biên.
Đáp án đúng: B. Khả năng bảo trì được định nghĩa là mức độ phần mềm có thể được thay đổi SAU KHI ĐÃ TRIỂN KHAI — sửa lỗi, cải thiện hiệu năng hoặc thích ứng với môi trường mới. Mốc "sau triển khai" là điểm mấu chốt: chi phí thay đổi lúc phần mềm đã chạy thật mới là thứ thuộc tính này đo. A sai vì thay đổi trước khi triển khai vẫn nằm trong vòng phát triển bình thường. C sai vì thay đổi trong lúc phát triển cũng thế. D là bẫy sát nhất — "sau khi phát triển" không đồng nghĩa "sau khi triển khai": phần mềm có thể đã phát triển xong nhưng chưa đưa vào vận hành, và định nghĩa chuẩn lấy mốc triển khai/bàn giao.
Đáp án đúng: B. Trạng thái khởi đầu (initial state) trong sơ đồ máy trạng thái UML được vẽ bằng một chấm tròn đen đặc, với một mũi tên đi ra trỏ tới trạng thái đầu tiên thật sự của máy. C sai vì chấm đen nằm trong vòng tròn trắng lớn hơn (hình mắt bò) là ký hiệu trạng thái KẾT THÚC — rất dễ nhầm với trạng thái khởi đầu, đây chính là bẫy của câu này. A sai vì hình chữ nhật bo góc là ký hiệu của một trạng thái thường. D sai vì hình thoi là điểm rẽ nhánh theo điều kiện (choice/decision).
Đáp án đúng: A. Câu hỏi tìm phát biểu SAI về SOA. Bản chất của SOA là dịch vụ tự trị, được đăng ký ở broker và được client KHÁM PHÁ ĐỘNG lúc chạy — client không bị buộc vào một dịch vụ cụ thể nằm trên một cấu hình máy chủ cố định. Ràng buộc "fixed server configuration" chính là đặc trưng của client/server truyền thống mà SOA sinh ra để thay thế. B đúng vì tìm và liên kết tới dịch vụ chính là cơ chế discovery qua service broker. C đúng vì nhiều client cùng dùng một dịch vụ là hệ quả trực tiếp của mục tiêu tái sử dụng. D đúng vì giao thức chuẩn là điều kiện để các dịch vụ trên nền tảng khác nhau nói chuyện được với nhau.
Đáp án đúng: C. Middleware nằm giữa hệ điều hành và ứng dụng phân tán, cung cấp một nền tảng đồng nhất che đi sự khác biệt giữa các hệ điều hành, ngôn ngữ và giao thức mạng bên dưới. Nhờ đó ứng dụng viết một lần vẫn chạy được trên các nút không đồng nhất. A sai vì middleware chạy TRÊN hệ điều hành, không thay thế nó. B sai vì việc quản lý tài nguyên phần cứng vẫn thuộc về hệ điều hành từng nút; middleware không đụng trực tiếp phần cứng. D sai vì middleware không phải tầng giao diện người dùng — nó nằm hoàn toàn phía dưới, người dùng không thấy nó.
Đáp án đúng: B. Kiến trúc hướng thành phần (component-based architecture) tổ chức phần mềm thành các thành phần độc lập, có giao diện rõ ràng, thay thế và tái sử dụng được, tương tác với nhau qua các giao diện đó. A sai vì kiến trúc nguyên khối gộp tất cả vào một khối duy nhất — ngược hẳn với "tách rời". C sai vì kiến trúc phân tầng tổ chức theo TẦNG chồng lên nhau với ràng buộc tầng trên gọi tầng dưới, cách chia khác với chia theo thành phần. D sai vì kiến trúc hướng sự kiện nói về cách các bên giao tiếp (qua sự kiện), không phải về cách chia phần mềm thành đơn vị.
Đáp án đúng: B. Lớp thực thể (entity class) là lớp lưu trữ dữ liệu — đối tượng của nó sống lâu, giữ thông tin bền vững của hệ thống và thường được ánh xạ xuống cơ sở dữ liệu. A sai vì đó chỉ là mô tả vị trí xuất hiện của lớp trên một sơ đồ ER, không phải định nghĩa vai trò của nó. C sai vì lớp giao tiếp với một thực thể bên ngoài là lớp BIÊN (boundary class) — chữ "entity" ở đây bị dùng theo nghĩa "thực thể ngoài hệ thống", đây là bẫy chơi chữ của câu. D sai vì lớp thực thể nằm bên trong hệ thống, không phải lớp ngoài.
Đáp án đúng: B. Mô hình phân tích tập trung vào việc HIỂU miền bài toán: có những khái niệm nào, quan hệ ra sao, hệ thống phải làm gì — cố tình chưa quyết định làm bằng cách nào. Đó là ranh giới phân biệt pha phân tích với pha thiết kế. A sai vì thiết kế giao diện là hoạt động của pha thiết kế. C sai vì viết mã là pha hiện thực. D sai vì kiểm thử hệ thống là pha sau cùng. Cả ba đều thuộc vùng lời giải, trong khi mô hình phân tích còn đang ở vùng bài toán.
Đáp án đúng: B. Bước đầu tiên là phân tích yêu cầu: phải biết hệ thống cần làm gì, ràng buộc nào phải thoả, thì mới có đầu vào để quyết định kiến trúc. Thiết kế mà không có yêu cầu rõ ràng là thiết kế cho một bài toán chưa được phát biểu. C sai vì thiết kế kiến trúc đến SAU phân tích yêu cầu — nó tiêu thụ chính kết quả của bước đó. A và D sai vì hiện thực và kiểm thử nằm ở cuối chuỗi, sau khi thiết kế đã xong.
Đáp án đúng: B. Ở pha phân tích, yêu cầu chức năng được mô hình hoá bằng sơ đồ use case: nó chỉ ra tác nhân nào tương tác với hệ thống và hệ thống cung cấp những chức năng gì, ở mức nhìn từ bên ngoài, không lệ thuộc vào cách hiện thực. A sai vì sơ đồ lớp mô tả cấu trúc tĩnh, thuộc mô hình tĩnh chứ không phải mô tả yêu cầu chức năng. C sai vì sơ đồ triển khai nói về việc phần mềm nằm trên phần cứng nào, thuộc pha thiết kế. D sai vì sơ đồ máy trạng thái mô tả hành vi phụ thuộc trạng thái của một đối tượng cụ thể, chi tiết hơn nhiều so với mức yêu cầu chức năng.
Đáp án đúng: D. Mục đích chính của việc mô hình hoá là thiết kế và hiểu ứng dụng TRƯỚC KHI viết mã: mô hình cho phép suy nghĩ ở mức trừu tượng, phát hiện sai sót và thử phương án khi giá của việc sửa còn rẻ, đồng thời làm ngôn ngữ chung giữa các bên. A sai vì viết mã là việc diễn ra sau khi mô hình đã định hình. B sai vì tiếp thị phần mềm không liên quan gì đến mô hình hoá kỹ thuật. C sai vì mô phỏng phần cứng chỉ là một ứng dụng hẹp trong một số lĩnh vực, không phải mục đích chung.
Đáp án đúng: A. Đối tượng điều khiển phụ thuộc trạng thái đang ở MỘT trạng thái; việc nó có thể nhận thông điệp a hoặc b được mô hình hoá bằng cách vẽ từ trạng thái đó nhiều phép chuyển đi ra, mỗi phép chuyển ứng với một thông điệp đến và dẫn tới một trạng thái đích khác nhau. B sai vì nhầm thông điệp với trạng thái: thông điệp là sự kiện kích hoạt phép chuyển, không phải trạng thái. C sai vì trạng thái ghép dùng để phân rã một trạng thái phức tạp thành máy con, không phải để phân nhánh theo thông điệp đến. D sai vì tạo trạng thái con cho mỗi thông điệp là biến sự kiện thành trạng thái, sai cùng một kiểu với B nhưng ở mức phân cấp.
Đáp án đúng: A. Sơ đồ use case dùng để biểu diễn tương tác giữa người dùng (tác nhân) và hệ thống: mỗi use case là một chức năng đem lại giá trị cho tác nhân, và các đường nối cho biết ai dùng chức năng nào. B sai vì cấu hình phần cứng được thể hiện bằng sơ đồ triển khai. C sai vì sơ đồ use case cố tình đứng ở mức cao, không đi xuống mã nguồn. D sai vì thiết kế cơ sở dữ liệu mức thấp thuộc pha thiết kế chi tiết, hoàn toàn không phải việc của sơ đồ use case.
Đáp án đúng: D. Use case mở rộng (extension use case) mô tả một phần CÓ ĐIỀU KIỆN của một use case khác — phần chỉ chạy trong hoàn cảnh nhất định, tại một điểm mở rộng đã định trước của use case cơ sở. Nhờ vậy luồng chính giữ được sự gọn gàng, còn các nhánh ngoại lệ hoặc tuỳ chọn được tách riêng. C là bẫy sát nhất nhưng mô tả ngược vai: đó là use case CƠ SỞ (bị mở rộng bởi use case khác), không phải use case mở rộng. B sai vì phần chức năng dùng chung cho nhiều use case được tách bằng quan hệ include, không phải extend. A sai vì độ dài của tương tác không liên quan gì đến khái niệm mở rộng.
Đáp án đúng: C. Sơ đồ lớp ngữ cảnh hệ thống (system context class diagram) vẽ hệ thống như một lớp tổng hợp duy nhất ở giữa và các lớp ngoài quanh nó, qua đó xác định RANH GIỚI giữa hệ thống và môi trường bên ngoài: cái gì nằm trong phạm vi phải xây, cái gì nằm ngoài. B đúng một phần nhưng hẹp hơn đáp án — hệ thống ngoài chỉ là một loại thực thể ngoài; môi trường còn gồm người dùng và thiết bị, nên "ranh giới với môi trường bên ngoài" mới là mô tả đủ. A sai vì lớp thực thể thuộc mô hình tĩnh bên trong hệ thống. D sai vì "các lớp ngữ cảnh trong hệ thống" chỉ là cách nói vòng lại tên sơ đồ, không nói được nó định nghĩa cái gì.
Đáp án đúng: C. Nguyên tắc thiết kế (design principle) là hướng dẫn — nó định hướng đội phát triển nhưng vẫn để chỗ cho phán đoán trong từng tình huống. Câu "đội phát triển NÊN dùng nhắn tin bất đồng bộ giữa các dịch vụ để tăng hiệu năng" đúng dạng đó: một khuyến nghị có lý do, không phải mệnh lệnh tuyệt đối. A, B, D đều là QUYẾT ĐỊNH kiến trúc hoặc ràng buộc, không phải nguyên tắc: "chỉ tầng nghiệp vụ được truy cập cơ sở dữ liệu", "dịch vụ phải giao tiếp bằng REST", "hệ thống phải triển khai trên máy chủ Linux" đều là luật cứng, buộc phải tuân thủ, không có chỗ cho phán đoán. Dấu hiệu phân biệt nằm ở chữ "nên" so với "phải/chỉ".
Đáp án đúng: C. Mục tiêu chính khi phân rã hệ thống thành các hệ thống con là để mỗi hệ thống con đảm nhận một chức năng riêng biệt và tương đối độc lập — tức gắn kết bên trong cao và phụ thuộc lẫn nhau thấp. Đó là điều kiện để các hệ thống con phát triển, kiểm thử và thay đổi song song mà không giẫm chân nhau. B sai hẳn hướng: tăng giao tiếp giữa các hệ thống con là tăng độ dính, đúng thứ cần tránh. A sai vì số lượng use case do yêu cầu quyết định, không phải mục tiêu của việc phân rã. D sai vì mô hình hoá động là bước cần thiết, không phải thứ để loại bỏ.
Đáp án đúng: C. Kiểm thử hộp trắng là kiểm thử CÓ biết cấu trúc bên trong: người kiểm thử đọc mã nguồn, thiết kế ca kiểm thử theo các đường thực thi, nhánh điều kiện và vòng lặp, rồi đo độ phủ. D sai vì "không biết bên trong" chính là định nghĩa của kiểm thử hộp đen — đây là phương án đối lập được đặt cạnh để gài. A và B sai vì kiểm thử đơn vị và kiểm thử tích hợp là các MỨC kiểm thử (phân theo phạm vi), còn hộp trắng/hộp đen là KỸ THUẬT kiểm thử (phân theo mức độ hiểu biết về nội tại). Kiểm thử đơn vị thường dùng kỹ thuật hộp trắng, nhưng hai khái niệm không đồng nhất.
Đáp án đúng: C. Trong mô hình tĩnh, liên kết (association) biểu diễn quan hệ giữa hai hay nhiều lớp, cho biết đối tượng của các lớp này có mối nối với nhau và qua đó tương tác được với nhau; liên kết còn mang bội số (multiplicity) và có thể mang tên vai trò. A sai vì chuỗi thao tác của một đối tượng thuộc mô hình động, không phải quan hệ giữa các lớp. B sai vì liên kết nối các LỚP với nhau chứ không phải chia sẻ thuộc tính giữa chúng. D sai vì quan hệ kế thừa cha–con là tổng quát hoá (generalization), một loại quan hệ khác hẳn liên kết.
Đáp án đúng: C. Mẫu Subscription/Notification hoạt động theo kiểu đăng ký nhận tin: thành phần quan tâm đăng ký vào một nhóm (hoặc chủ đề), và mọi thông điệp gửi tới nhóm đó sẽ tự động được phát tới toàn bộ thành viên đã đăng ký — bên gửi không cần biết ai đang nghe. A sai vì gửi rồi chờ hồi đáp trực tiếp từ một máy chủ cụ thể là mẫu Synchronous Message Communication with Reply. B sai vì tự đi hỏi hàng đợi (polling) là cơ chế kéo, ngược hẳn với "được thông báo" (đẩy) trong tên mẫu. D sai vì phải gọi tên từng thành phần một là gửi đơn hướng (unicast), làm mất chính lợi ích tách rời bên gửi và bên nhận mà mẫu này đem lại.
Đáp án đúng: A. Mô hình quy trình phần mềm cho kỹ nghệ dòng sản phẩm gồm hai quy trình chính: SPL Engineering (kỹ nghệ dòng sản phẩm — xây phần chung, phần biến thiên và kho tài sản tái sử dụng cho cả họ) và Software Application Engineering (kỹ nghệ ứng dụng — lấy từ kho đó ra để dựng một thành viên cụ thể theo yêu cầu khách hàng). Đây chính là cặp "phát triển CHO tái sử dụng" và "phát triển BẰNG tái sử dụng". B, C, D đều sai vì kéo "real-time software engineering" hoặc "component-based software engineering" vào: đó là những lĩnh vực kỹ nghệ khác, không phải một trong hai quy trình cấu thành mô hình SPL.
Đáp án đúng: B. Sơ đồ tuần tự mô tả hành vi động: các đối tượng trao đổi thông điệp nào, theo thứ tự nào, theo trục thời gian — đúng thứ câu hỏi cần. A sai vì sơ đồ lớp mô tả cấu trúc TĨNH: lớp, thuộc tính, thao tác và quan hệ, không có yếu tố thời gian. C sai vì sơ đồ use case mô tả chức năng ở mức yêu cầu, không mô tả trình tự tương tác chi tiết. D sai vì sơ đồ thành phần mô tả cách tổ chức các đơn vị triển khai, cũng là góc nhìn tĩnh.
Đáp án đúng: B. Hệ thống nhân (kernel system) là thành viên NHỎ NHẤT của dòng sản phẩm: nó gồm các lớp nhân — những lớp bắt buộc có ở mọi thành viên — và có thể kèm một số lớp mặc định, tức biến thể được chọn sẵn khi khách hàng không yêu cầu gì đặc biệt. A sai vì bỏ mất phần lớp mặc định, khiến định nghĩa hẹp hơn thực tế. C sai vì lớp tuỳ chọn (optional) theo định nghĩa là thứ chỉ có ở MỘT SỐ thành viên — đưa chúng vào hệ thống nhân là phá vỡ đúng ý nghĩa "nhân". D sai vì lớp thực thể là phân loại theo VAI TRÒ của đối tượng (lưu dữ liệu), không phải phân loại theo tính chung/biến thiên trong dòng sản phẩm; hai cách phân loại này nằm ở hai trục khác nhau.
Đáp án đúng: D. Lớp máy trạng thái (state machine class) đóng gói CẢ HAI thứ: bảng chuyển trạng thái — phần dữ liệu tĩnh cho biết ở trạng thái nào, nhận sự kiện nào thì chuyển đi đâu và sinh hành động gì — và trạng thái hiện hành, phần dữ liệu động cho biết máy đang ở đâu. Thiếu một trong hai thì lớp không tự xử lý được sự kiện tiếp theo. A và C đều chỉ đúng một nửa. B sai vì statechart là ký pháp đồ hoạ để con người đọc lúc thiết kế; thứ được đóng gói trong mã là bảng chuyển trạng thái đã mã hoá từ statechart đó.
Đáp án đúng: A. Mô hình Client-Server tách hệ thống thành các bên phục vụ và bên sử dụng có ranh giới rõ ràng, giao tiếp qua giao diện chuẩn. Nhờ tách rời đó, có thể nhân bản thêm máy chủ khi tải tăng (mở rộng) và thay đổi từng phía độc lập (mô-đun hoá). B sai vì kiến trúc nguyên khối gộp mọi thứ vào một khối duy nhất, mở rộng phải nhân bản cả khối và sửa đâu cũng phải triển khai lại toàn bộ. C sai vì lập trình thủ tục là một mô hình lập trình, không phải thành phần kiến trúc. D sai vì khung kiểm thử là công cụ hỗ trợ chất lượng, không quyết định khả năng mở rộng hay mô-đun hoá.
Đáp án đúng: B. Môi giới kiểu trang vàng (yellow pages brokering) tra cứu theo LOẠI dịch vụ: bên yêu cầu biết mình cần loại dịch vụ nào nhưng chưa biết dịch vụ cụ thể nào đáp ứng, nên hỏi broker để nhận về danh sách ứng viên rồi chọn — đúng cách người ta dùng cuốn danh bạ trang vàng. A sai vì tra cứu vị trí của một dịch vụ ĐÃ BIẾT TÊN là môi giới kiểu trang trắng (white pages), đây là cặp khái niệm đối lập cần phân biệt. C sai vì đảo ngược tình huống: biết dịch vụ cụ thể mà không biết loại là điều vô lý về nghiệp vụ. D sai vì địa chỉ của chính broker phải biết trước thì mới hỏi được, đó là điều kiện tiên quyết chứ không phải thứ đi tìm.
Đáp án đúng: C. Đối tượng biên (boundary object) là đối tượng nằm ở ranh giới hệ thống, giao tiếp với một đối tượng bên ngoài — người dùng, thiết bị, hoặc hệ thống khác — và chuyển đổi giữa thế giới bên ngoài với thế giới bên trong hệ thống. A sai vì đối tượng biên nằm BÊN TRONG hệ thống; thứ nằm ngoài là đối tượng ngoài (external object) mà nó giao tiếp cùng. Đây chính là bẫy của câu hỏi. B sai vì lưu trữ dữ liệu là việc của đối tượng thực thể. D sai vì điều khiển các đối tượng khác là việc của đối tượng điều khiển.
Đáp án đúng: B. Tác nhân chính (primary actor) là tác nhân KHỞI XƯỚNG use case — người hoặc hệ thống gửi kích thích đầu tiên làm use case bắt đầu chạy, và thường là bên nhận được giá trị chính từ use case đó. C sai vì tác nhân chỉ tham gia vào use case mà không khởi xướng là tác nhân phụ (secondary actor); mỗi use case có đúng một tác nhân chính nhưng có thể có nhiều tác nhân phụ. D sai vì tác nhân theo định nghĩa nằm NGOÀI hệ thống, không phải đối tượng bên trong. A sai vì đó chỉ là cách chơi chữ với nghĩa sân khấu của từ "actor".
Đáp án đúng: D. Mô hình hoá thiết kế (design modeling) là pha kiến trúc phần mềm được thiết kế: quyết định hệ thống gồm những hệ thống con và thành phần nào, chúng giao tiếp ra sao, triển khai thế nào — tức chuyển từ vùng bài toán sang vùng lời giải. A sai vì mô hình use case được xây ở pha mô hình hoá YÊU CẦU, trước đó. C sai vì mô hình tĩnh và động của miền bài toán được xây ở pha mô hình hoá PHÂN TÍCH — đây là bẫy sát nhất vì thiết kế cũng có mô hình tĩnh/động, nhưng ba pha của COMET được đặt tên theo sản phẩm đặc trưng, và sản phẩm đặc trưng của pha thiết kế là kiến trúc phần mềm. B sai vì sơ đồ luồng dữ liệu và sơ đồ thực thể quan hệ thuộc phương pháp phân tích có cấu trúc, không phải sản phẩm của mô hình hoá thiết kế hướng đối tượng.