SWD392DễKỳ 7Chuyên ngành Cập nhật 07/09/2026

Software Architecture and Design - Kiến Trúc & Thiết Kế Phần Mềm

SWD392 trang bị kiến thức chuyên sâu về kiến trúc phần mềm, UML, Design Patterns và cách ứng dụng AI (ChatGPT, Copilot, PlantUML) vào mô hình hóa hệ thống thực tế.

436Câu hỏi
5Bộ đề
9Chủ đề
5,03 đánh giá

Câu hỏi của môn

264/436 câuCòn 172
245Which objects should be placed in the same subsystem?4 lựa chọnDễ100% trả lời đúng
AObjects that are associated with each other
BObjects that are part of the same composite object
CObjects in geographically different locations
DObjects that serve different purposes
Lời giải
Khi phân chia hệ thống thành các phân hệ (subsystem), chúng ta cần xem xét các đối tượng có liên quan đến nhau và có thể được quản lý một cách hiệu quả trong cùng một phân hệ. Đối tượng có liên quan đến nhau có thể bao gồm các thành phần của một đối tượng phức hợp, các đối tượng có mối quan hệ chặt chẽ với nhau hoặc các đối tượng có cùng mục đích sử dụng. Ví dụ, trong một hệ thống bán hàng trực tuyến, các đối tượng như sản phẩm, giỏ hàng và hóa đơn có thể được quản lý trong cùng một phân hệ vì chúng đều liên quan đến quá trình mua bán. Ngược lại, các đối tượng như máy chủ, mạng và thiết bị đầu cuối có thể được quản lý trong các phân hệ khác nhau vì chúng phục vụ các mục đích khác nhau.
Mở trang câu hỏi này →
AIt ensures that all classes in the design are completely identical.
BIt eliminates the need for architectural design by automating class creation.
CIt allows for code sharing and incremental modifications during maintenance or reuse.
DIt enforces strict separation of class characteristics with no overlap.
Lời giải
Sử dụng kế thừa trong thiết kế phần mềm mang lại lợi ích chính là cho phép chia sẻ mã và thực hiện các sửa đổi incremental trong quá trình bảo trì hoặc tái sử dụng. Khi một lớp con kế thừa từ lớp cha, nó có thể sử dụng các thuộc tính và phương thức đã được định nghĩa trong lớp cha, từ đó giảm thiểu sự lặp lại trong mã và tăng cường tính linh hoạt trong thiết kế. Điều này đặc biệt hữu ích khi cần thực hiện các sửa đổi hoặc mở rộng chức năng của một lớp mà không ảnh hưởng đến các lớp khác trong thiết kế.
Mở trang câu hỏi này →
AThe relational table has multiple primary keys.
BThe relational table has multiple foreign keys.
CThe relational table has a primary key.
DThe relational table has a concatenated primary key.
Lời giải
Đá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".
Mở trang câu hỏi này →
AIt allows for the direct manipulation of database schemas
BIt is a mechanism for code reuse and to establish a subtype from an existing class
CIt is used to prevent any form of code reuse
DIt provides a way to create complex user interfaces
Lời giải
Inheritance là một khái niệm quan trọng trong thiết kế kiến trúc phần mềm dựa trên đối tượng. Nó cho phép tạo ra các lớp con (subclass) từ một lớp cha (superclass) đã tồn tại. Điều này giúp tái sử dụng mã nguồn và tạo ra các mối quan hệ giữa các lớp. Inheritance giúp giảm thiểu sự lặp lại trong mã nguồn và tăng cường tính linh hoạt trong việc mở rộng và sửa đổi các lớp. Nó cũng giúp tạo ra các lớp con có tính đặc thù và độc đáo hơn so với lớp cha. Nhờ đó, Inheritance trở thành một công cụ mạnh mẽ trong thiết kế phần mềm dựa trên đối tượng.
Mở trang câu hỏi này →
AAll services in SOA must be implemented in the same programming language for compatibility.
BSOA requires services to run on the same physical machine to ensure reliable communication.
CSOA enables the composition of distributed, autonomous services that may run on different platforms and use standard protocols for communication.
DIn SOA, services do not require descriptions because communication is handled directly through the operating system.
Lời giải
SOA (Service-Oriented Architecture) là một phương pháp thiết kế hệ thống, trong đó các dịch vụ được triển khai độc lập và có thể được kết hợp lại để tạo thành các ứng dụng phức tạp. Một trong những đặc điểm quan trọng của SOA là khả năng tích hợp các dịch vụ phân tán, tự chủ và có thể chạy trên các nền tảng khác nhau, sử dụng các giao thức tiêu chuẩn để giao tiếp. Điều này cho phép các tổ chức tạo ra các hệ thống linh hoạt, dễ dàng mở rộng và có khả năng thích ứng cao. SOA không yêu cầu các dịch vụ phải được triển khai trên cùng một máy tính hoặc sử dụng cùng một ngôn ngữ lập trình, mà chỉ cần đảm bảo rằng các dịch vụ có thể giao tiếp với nhau một cách hiệu quả.
Mở trang câu hỏi này →
250What is a transaction?4 lựa chọn
AConsists of two or more functions
BConsists of one function
CConsists of two or more operations that are indivisible
DConsists of two or more operations that are divisible
Lời giải
Một giao dịch (transaction) là một tập hợp các hoạt động (operation) không thể tách rời được. Nó được thực hiện để đảm bảo tính toàn vẹn của dữ liệu và ngăn chặn các vấn đề về đồng bộ hóa. Trong một giao dịch, các hoạt động được thực hiện như một phần của một đơn vị tính toán duy nhất. Nếu một trong các hoạt động trong giao dịch bị lỗi hoặc không thành công, toàn bộ giao dịch sẽ bị hủy bỏ và dữ liệu sẽ được đặt lại vào trạng thái ban đầu. Điều này giúp đảm bảo tính toàn vẹn và tính nhất quán của dữ liệu trong hệ thống.
Mở trang câu hỏi này →
ATo minimize coupling between services
BTo maximize reuse of services
CTo eliminate orchestration engines
DTo enforce strict data isolation between services
Lời giải
Mục tiêu chính của kiến trúc dịch vụ (Service-Oriented Architecture - SOA) là tối đa hóa việc tái sử dụng các dịch vụ (services). Khi các dịch vụ được thiết kế để tái sử dụng, chúng có thể được sử dụng lại trong nhiều ứng dụng và hệ thống khác nhau, giảm thiểu thời gian và chi phí phát triển. Việc tái sử dụng dịch vụ cũng giúp cải thiện tính linh hoạt và khả năng thích ứng của hệ thống, vì các dịch vụ có thể được cập nhật hoặc thay thế mà không ảnh hưởng đến các ứng dụng khác. Ngoài ra, việc tái sử dụng dịch vụ cũng giúp giảm thiểu lỗi và cải thiện chất lượng của hệ thống.
Mở trang câu hỏi này →
AA form of one-to-one communication where messages are sent directly between two components only.
BA method where a sender transmits the same message to multiple recipients using broadcast or multicast mechanisms.
CA technique for encrypting messages before sending them across different nodes.
DA communication pattern where all components in a system send messages to a single central controller
Lời giải
Truyền thông nhóm trong các ứng dụng phân tán được mô tả như sau: Trong khi truyền thông một đối một chỉ cho phép gửi tin tức giữa hai thành phần, thì truyền thông nhóm cho phép gửi tin tức đến nhiều thành phần cùng một lúc. Điều này được thực hiện thông qua các cơ chế phát sóng (broadcast) hoặc đa phát (multicast). Mỗi thành phần trong hệ thống có thể gửi tin tức đến nhiều thành phần khác, giúp tăng hiệu suất và giảm thời gian truyền thông. Điều này đặc biệt hữu ích trong các hệ thống phân tán lớn, nơi mà mỗi thành phần cần có thông tin từ nhiều nguồn khác nhau.
Mở trang câu hỏi này →
253What is a SPL feature group?4 lựa chọnKhó33% trả lời đúng
AA collection of features
BA group of features with a partiular constraint on their usage in a SPL member
CA group of mutually exclusive features
DA group of optional features with a particular constraint on their usage in a SPL member
Lời giải
Một nhóm tính năng (feature group) trong SPL (Software Product Line) là một tập hợp các tính năng được nhóm lại với nhau dựa trên một ràng buộc cụ thể về việc sử dụng chúng trong một thành viên của SPL. Điều này cho phép các nhà phát triển tạo ra các sản phẩm khác nhau dựa trên các tính năng được chọn từ nhóm tính năng này. Ví dụ, một nhóm tính năng có thể bao gồm các tính năng liên quan đến hệ thống GPS, camera và kết nối internet. Trong một thành viên của SPL, các nhà phát triển có thể chọn tất cả các tính năng trong nhóm này hoặc chỉ chọn một số tính năng cụ thể. Điều này giúp giảm thiểu số lượng tính năng cần được phát triển và kiểm tra, đồng thời tăng cường khả năng tùy chỉnh sản phẩm.
Mở trang câu hỏi này →
254In the context of software product lines, what is 'Feature Modeling'?4 lựa chọnDễ100% trả lời đúng
AA technique for documenting software performance metrics
BA process for creating graphical user interfaces for software products
CA method for identifying and organizing the features common and variable across the product line
DA strategy for reducing the number of features in software to minimize costs
Lời giải
Kỹ thuật Modeling tính năng trong ngữ cảnh của các dòng sản phẩm phần mềm là một phương pháp giúp xác định và tổ chức các tính năng chung và biến đổi trong dòng sản phẩm. Nó cho phép các nhà phát triển xác định các tính năng quan trọng và cần thiết cho sản phẩm, đồng thời loại bỏ các tính năng không cần thiết hoặc không quan trọng. Kỹ thuật này giúp giảm thiểu thời gian và chi phí phát triển sản phẩm, đồng thời đảm bảo rằng sản phẩm đáp ứng được nhu cầu của khách hàng.
Mở trang câu hỏi này →
AThe ability to adapt to changing requirements or environments
BThe software's ability to perform under high loads
CThe ease of modifying the software
DThe software's capability to ensure data security
Lời giải
Flexibility trong ngữ cảnh đặc tính chất lượng phần mềm là khả năng thích nghi với các yêu cầu thay đổi hoặc môi trường. Nó cho phép phần mềm dễ dàng thích nghi với các thay đổi trong yêu cầu hoặc môi trường sử dụng. Điều này giúp phần mềm trở nên linh hoạt và dễ dàng thích nghi với các thay đổi trong tương lai. Flexibility cũng giúp giảm thiểu các vấn đề liên quan đến việc thay đổi yêu cầu hoặc môi trường sử dụng.
Mở trang câu hỏi này →
256What is maintainability?4 lựa chọn
AThe extent to which software is capable of being changed before deployment
BThe extent to which software is capable of being changed after deployment
CThe extent to which software is capable of being changed during development
DThe extent to which software is capable of being changed after development
Lời giải
Đá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.
Mở trang câu hỏi này →
AVisual design of the application
BSpeed of software development
CEarly detection of defects and reducing cost of fixing
DUser interface modules only
Lời giải
Khái niệm 'testability' chủ yếu liên quan đến việc phát hiện sớm các lỗi và giảm chi phí sửa chữa. Điều này có nghĩa là khả năng kiểm tra và xác minh tính chính xác của ứng dụng một cách hiệu quả. Testability giúp phát hiện và sửa lỗi sớm, từ đó giảm thiểu chi phí và thời gian sửa chữa. Nó cũng giúp đảm bảo rằng ứng dụng hoạt động đúng như mong đợi, giảm thiểu rủi ro và cải thiện chất lượng tổng thể của sản phẩm. Testability là một khía cạnh quan trọng trong quy trình phát triển phần mềm, giúp đảm bảo rằng ứng dụng được kiểm tra và xác minh một cách đầy đủ trước khi được phát hành.
Mở trang câu hỏi này →
AImplementation
BAnalysis
CDesign
DTesting
Lời giải
Trong vòng đời phát triển phần mềm, giai đoạn phân tích (Analysis) là nơi mà các yêu cầu của dự án được thu thập và mô hình hóa. Giai đoạn này tập trung vào việc xác định và mô tả các yêu cầu của hệ thống, bao gồm cả các yêu cầu chức năng và phi chức năng. Các kỹ thuật như mô hình hóa trường hợp sử dụng (Use case modeling) và thu thập yêu cầu (Requirements capture) được sử dụng để thu thập và xác định các yêu cầu của dự án. Mục tiêu của giai đoạn phân tích là tạo ra một bản mô tả chi tiết về các yêu cầu của dự án, giúp cho các giai đoạn tiếp theo được thực hiện một cách hiệu quả.
Mở trang câu hỏi này →
259What is a software design notation?4 lựa chọn
ANotes about the software design.
BA graphical or textual description of the software.
CDocumentation of the software.
DA systematic approach for producing a design.
Lời giải
Ký hiệu thiết kế phần mềm là một phương pháp được sử dụng để mô tả và thể hiện các đặc điểm của một hệ thống phần mềm. Nó thường được sử dụng để mô tả các thành phần, mối quan hệ và giao tiếp giữa các thành phần trong hệ thống. Ký hiệu thiết kế phần mềm có thể được thể hiện dưới dạng đồ họa hoặc văn bản. Ví dụ, UML (Unified Modeling Language) là một ngôn ngữ mô hình hóa được sử dụng để mô tả các đặc điểm của hệ thống phần mềm. Nó cung cấp các ký hiệu và quy tắc để mô tả các thành phần, mối quan hệ và giao tiếp giữa các thành phần trong hệ thống. Mục đích của ký hiệu thiết kế phần mềm là giúp các nhà phát triển phần mềm hiểu rõ về hệ thống và tạo ra các giải pháp phần mềm hiệu quả hơn.
Mở trang câu hỏi này →
A<<extend>>
B<<include>>
CGeneralization
DAggregation
Lời giải

Trong mô hình UML, mối quan hệ <<include> > được sử dụng để thể hiện một trường hợp sử dụng phụ thuộc vào trường hợp sử dụng khác. Tuy nhiên, khi nói đến việc chia sẻ chức năng chung giữa nhiều trường hợp sử dụng, mối quan hệ <<include> > không phải là lựa chọn tốt nhất. Mối quan hệ <<extend> > cũng không phù hợp vì nó được sử dụng để thể hiện trường hợp sử dụng mở rộng từ trường hợp sử dụng khác. Mối quan hệ Generalization được sử dụng để thể hiện mối quan hệ giữa lớp cha và lớp con, trong khi Aggregation được sử dụng để thể hiện mối quan hệ giữa một đối tượng và các đối tượng con. Vì vậy, mối quan hệ phù hợp nhất để thể hiện chức năng chung được chia sẻ giữa nhiều trường hợp sử dụng là Composite, nhưng trong các lựa chọn đã cho, không có Composite. Tuy nhiên, mối quan hệ Generalization không phải là lựa chọn tốt nhất vì nó không thể thể hiện chức năng chung. Vì vậy, trong trường hợp này, không có lựa chọn nào trong các lựa chọn đã cho là hoàn hảo, nhưng <<include> > có thể được sử dụng để thể hiện chức năng chung được chia sẻ giữa nhiều trường hợp sử dụng.

Mở trang câu hỏi này →
ACapture optional behavior invoked under certain conditions
BRepresent inheritance between actors
CRepresent shared mandatory behavior
DModel system deployment nodes
Lời giải

Trong sơ đồ dùng例 (use case diagram) của UML, mối quan hệ <<extend> > thường được sử dụng để mô tả hành vi tùy chọn được kích hoạt dưới các điều kiện nhất định. Điều này có nghĩa là một hành vi dùng例 có thể được mở rộng từ một hành vi dùng例 khác, nhưng không bắt buộc phải thực hiện. Ví dụ, một hệ thống có thể hỗ trợ việc in hóa đơn, nhưng không bắt buộc phải in hóa đơn khi thực hiện một giao dịch cụ thể. Mối quan hệ <<extend> > cho phép chúng ta mô tả các hành vi tùy chọn và điều kiện kích hoạt chúng, giúp làm rõ các yêu cầu của hệ thống.

Mở trang câu hỏi này →
AAn action performed after the transition
BA Boolean expression that must be true for the transition to occur
CThe event that triggers the transition
DThe next state entered after the transition
Lời giải
Trong một trạng thái chuyển đổi được dán nhãn là Sự kiện [điều kiện] / Hành động trong một sơ đồ trạng thái, điều kiện đại diện cho một biểu thức logic Boolean. Biểu thức này phải được thực hiện để xác định xem trạng thái chuyển đổi có được kích hoạt hay không. Nó giống như một điều kiện kiểm tra, nếu điều kiện này được đáp ứng, trạng thái chuyển đổi sẽ được kích hoạt và thực hiện hành động tương ứng. Điều này cho phép nhà thiết kế mô hình trạng thái kiểm soát luồng hoạt động của hệ thống một cách chính xác và linh hoạt.
Mở trang câu hỏi này →
AIt reduces the number of diagrams required
BIt eliminates the need for attributes
CIt supports reuse by factoring common features into superclasses
DIt automatically generates source code
Lời giải
Tổ chức cấp bậc tổng quát hóa/nghiên cứu đặc biệt quan trọng trong mô hình hóa lớp vì nó cho phép tái sử dụng các đặc điểm chung bằng cách đặt chúng vào các lớp cha. Điều này giúp giảm thiểu sự lặp lại mã và tăng cường tính linh hoạt của mô hình lớp. Khi các đặc điểm chung được đặt vào các lớp cha, các lớp con có thể thừa hưởng các đặc điểm này mà không cần phải định nghĩa lại. Điều này giúp giảm thiểu sự phức tạp của mô hình lớp và tăng cường tính dễ hiểu.
Mở trang câu hỏi này →
APhased software development
BThrowaway prototyping
CEvolutionary prototyping
DIncremental development
Lời giải
Mô hình thác nước (Waterfall model) là một phương pháp phát triển phần mềm truyền thống, nhưng nó có một số hạn chế. Để khắc phục những hạn chế này, chúng ta có thể sử dụng các phương pháp khác như sau: Phased software development (Phát triển phần mềm theo giai đoạn): Đây là phương pháp phát triển phần mềm theo các giai đoạn riêng biệt, mỗi giai đoạn sẽ có một mục tiêu và yêu cầu cụ thể. Phương pháp này có thể giúp khắc phục hạn chế của mô hình thác nước bằng cách cho phép các giai đoạn phát triển được thực hiện song song và có thể được điều chỉnh dựa trên yêu cầu của khách hàng. Throwaway prototyping (Phát triển mẫu tạm thời): Đây là phương pháp phát triển phần mềm bằng cách tạo ra các mẫu tạm thời để thử nghiệm và đánh giá. Phương pháp này có thể giúp khắc phục hạn chế của mô hình thác nước bằng cách cho phép các phát triển có thể thử nghiệm và đánh giá các ý tưởng trước khi thực hiện. Evolutionary prototyping (Phát triển mẫu tiến hóa): Đây là phương pháp phát triển phần mềm bằng cách tạo ra các mẫu tiến hóa để thử nghiệm và đánh giá. Phương pháp này có thể giúp khắc phục hạn chế của mô hình thác nước bằng cách cho phép các phát triển có thể thử nghiệm và đánh giá các ý tưởng trước khi thực hiện và có thể điều chỉnh dựa trên yêu cầu của khách hàng. Incremental development (Phát triển từng bước): Đây là phương pháp phát triển phần mềm bằng cách tạo ra các phần nhỏ của sản phẩm và dần dần tích hợp chúng lại với nhau. Phương pháp này có thể giúp khắc phục hạn chế của mô hình thác nước bằng cách cho phép các phát triển có thể thực hiện các phần nhỏ của sản phẩm và dần dần tích hợp chúng lại với nhau.
Mở trang câu hỏi này →