Font size
WorksheetsKiến trúc phần mềm
Total questions: 53
Worksheet time: 29mins
Architectural design quan tâm đến điều gì?
Viết code chi tiết
Hiểu và thiết kế cấu trúc tổng thể của hệ thống phần mềm
Quản lý dự án
Viết tài liệu sử dụng
Kiến trúc phần mềm là:
Cách tổ chức các thành phần và mối quan hệ giữa chúng trong hệ thống
Code của phần mềm
Quản lý dự án
Tài liệu yêu cầu
Trong Agile, việc thiết kế kiến trúc tổng thể:
Không quan trọng
Là bước quan trọng ban đầu vì refactoring kiến trúc rất tốn kém
Có thể bỏ qua
Là bước cuối cùng
Kiến trúc "architecture in the small" đề cập đến:
Kiến trúc hệ thống lớn phân tán
Kiến trúc của một chương trình đơn lẻ và các thành phần bên trong nó
Kiến trúc tổ chức
Kiến trúc dữ liệu
Kiến trúc "architecture in the large" đề cập đến:
Kiến trúc các hệ thống doanh nghiệp phức tạp gồm nhiều hệ thống nhỏ và thành phần
Kiến trúc nhỏ gọn
Kiến trúc module đơn giản
Kiến trúc mạng
Ưu điểm của kiến trúc phần mềm rõ ràng bao gồm:
Giúp giao tiếp giữa các bên liên quan, phân tích khả năng đáp ứng yêu cầu phi chức năng, tái sử dụng quy mô lớn
Giảm tài liệu
Tăng code chi tiết
Không cần kiểm thử
Kiểu biểu diễn kiến trúc nào phổ biến nhất?
Block diagrams đơn giản, không có ngữ nghĩa chi tiết
Code thực thi
Tài liệu yêu cầu
Lập kế hoạch dự án
Các sơ đồ hộp và đường thẳng (box and line diagrams) có đặc điểm:
Rất trừu tượng, không biểu diễn chi tiết mối quan hệ hay thuộc tính bên ngoài của hệ thống con
Chi tiết đầy đủ
Là code thực thi
Mô tả luồng dữ liệu
Mục đích chính của kiến trúc phần mềm là:
Tạo tài liệu dài dòng
Thúc đẩy trao đổi và thảo luận giữa các bên liên quan về thiết kế hệ thống tổng thể
Viết code
Kiểm thử
Các quyết định thiết kế kiến trúc phần mềm ảnh hưởng đến:
Các quyết định thiết kế kiến trúc phần mềm ảnh hưởng đến:
Chỉ giao diện người dùng
Các thuộc tính phi chức năng của hệ thống như hiệu năng, bảo mật, khả năng mở rộng
Không ảnh hưởng gì
Chỉ tài liệu
Hệ thống trong cùng một lĩnh vực thường có:
Kiến trúc giống nhau phản ánh các khái niệm lĩnh vực chung
Kiến trúc khác nhau hoàn toàn
Không cần kiến trúc
Chỉ code giống nhau
Mô hình 4+1 views bao gồm những view nào?
Logical, Process, Development, Physical, và Scenarios/use cases
Use case, Sequence, Class, State, Activity
Data flow, Entity-relationship, Use case, Sequence
Frontend, Backend, Database, Network
Logical view trong mô hình 4+1 là:
Mô tả các trừu tượng chính trong hệ thống dưới dạng các đối tượng hoặc lớp
Mô tả cách hệ thống được phân phối trên phần cứng
Mô tả các quy trình chạy hệ thống
Mô tả cách phát triển phần mềm
Process view mô tả:
Cách hệ thống vận hành ở thời gian chạy với các tiến trình tương tác
Kiến trúc phần cứng
Kiến trúc phần mềm tĩnh
Quy trình phát triển phần mềm
Development view trong kiến trúc phần mềm là:
Cách phần mềm được phân chia cho mục đích phát triển và quản lý mã nguồn
Mô tả cấu trúc mạng
Mô tả dữ liệu
Mô tả giao diện người dùng
Physical view mô tả:
Hệ thống phần cứng và phân bố các thành phần phần mềm trên đó
Mô tả luồng dữ liệu
Mô tả hành vi
Mô tả cấu trúc lớp
Architectural patterns là gì?
Các mẫu thiết kế kiến trúc chung được thử nghiệm và tái sử dụng trong nhiều hệ thống
Các đoạn code mẫu
Tài liệu yêu cầu
Kiểm thử phần mềm
Mô hình MVC (Model-View-Controller) thuộc loại:
Kiến trúc dạng lớp (layered)
Kiến trúc điều khiển
Mô hình MVC (Model-View-Controller) thuộc loại:
Kiến trúc dạng lớp (layered)
Kiến trúc điều khiển
Kiến trúc mô hình ứng dụng
Kiến trúc trình xử lý
Kiến trúc dạng Layered (xếp lớp) có đặc điểm:
Hệ thống được tổ chức thành các lớp cung cấp dịch vụ cho lớp bên trên và nhận dịch vụ từ lớp bên dưới
Mô hình luồng dữ liệu
Mô hình điều khiển sự kiện
Mô hình hướng đối tượng
Repository architecture phù hợp khi:
Các hệ thống con chia sẻ dữ liệu lớn qua một cơ sở dữ liệu hoặc kho dữ liệu tập trung
Không có sự chia sẻ dữ liệu
Hệ thống chỉ có một thành phần
Hệ thống nhỏ
Kiến trúc Client-server mô tả:
Mô hình phân phối dữ liệu và xử lý qua các thành phần khách và máy chủ
Mô hình đơn giản không phân tán
Mô hình không có server
Mô hình tuyến tính
Pipe and filter architecture thích hợp cho:
Hệ thống xử lý tuần tự các bước chuyển đổi dữ liệu
Hệ thống tương tác người dùng nhiều
Hệ thống thời gian thực
Hệ thống mạng xã hội
Application architectures được sử dụng để:
Hiểu, so sánh và đánh giá các hệ thống ứng dụng trong các tổ chức
Viết code phần mềm
Lập kế hoạch dự án
Viết tài liệu sử dụng
Transaction processing systems là:
Hệ thống xử lý các yêu cầu người dùng và cập nhật dữ liệu trong cơ sở dữ liệu
Hệ thống xử lý ngôn ngữ tự nhiên
Hệ thống truyền thông
Hệ thống đồ họa
Language processing systems được sử dụng để:
Biên dịch và thực thi các ngôn ngữ tự nhiên hoặc nhân tạo
Quản lý cơ sở dữ liệu
Quản lý tài liệu
Hệ thống truyền thông mạng
Thành phần của compiler bao gồm:
Lexical analyzer, syntax analyzer, semantic analyzer, code generator, symbol table
Database, user interface
Operating system, network module
Editor, debugger
Mục đích chính của architectural design decisions là:
Xác định các thành phần chính và mối quan hệ giữa chúng để đáp ứng yêu cầu phi chức năng
Viết tài liệu
Lập kế hoạch dự án
Kiểm thử phần mềm
Kiến trúc có thể được sử dụng để:
Giao tiếp với các bên liên quan, phân tích khả năng đáp ứng yêu cầu phi chức năng, tái sử dụng quy mô lớn
Viết code nhanh hơn
Giảm tài liệu
Tăng số lỗi
Biểu diễn kiến trúc phần mềm thường bị phê phán vì:
Thiếu ngữ nghĩa và không biểu diễn rõ ràng các loại quan hệ và thuộc tính của thành phần
Quá chi tiết
Không có trong tài liệu
Quá phức tạp để hiểu
MDA (Model-Driven Architecture) hỗ trợ:
Phát triển phần mềm theo cách tự động sinh mã từ các mô hình trừu tượng
Viết code thủ công
Quản lý dự án
Viết tài liệu yêu cầu
Một đặc điểm của layered architecture là:
Chỉ có một lớp duy nhất
Khi một giao diện lớp thay đổi, chỉ lớp liền kề bị ảnh hưởng
Tất cả các lớp đều bị ảnh hưởng khi thay đổi
Không có giao diện giữa các lớp
Trong kiến trúc client-server, thành phần nào chịu trách nhiệm quản lý dữ liệu?
Client
Server
Network
Người dùng
Kiến trúc dạng pipe and filter không phù hợp với:
Hệ thống tương tác người dùng nhiều
Hệ thống xử lý dữ liệu tuần tự
Hệ thống xử lý batch
Hệ thống xử lý lô
Lợi ích của việc sử dụng kiến trúc phần mềm là:
Giúp thiết kế và triển khai phần mềm có tổ chức, có thể quản lý được quy mô và phức tạp
Làm chậm dự án
Tăng chi phí phát triển
Làm phức tạp mã nguồn
Phần mềm là:
Giúp thiết kế và triển khai phần mềm có tổ chức, có thể quản lý được quy mô và phức tạp
Làm chậm dự án
Tăng chi phí phát triển
Làm phức tạp mã nguồn
Kiến trúc phần mềm giúp:
Giao tiếp giữa các bên liên quan và lập kế hoạch dự án
Viết tài liệu dài dòng
Viết code nhanh hơn mà không cần thiết kế
Giảm kiểm thử
Trong kiến trúc phần mềm, "view" (góc nhìn) là gì?
Một phần của hệ thống được mô tả từ một góc nhìn cụ thể, ví dụ như cấu trúc, hành vi hoặc triển khai
Code thực thi
Giao diện người dùng
Tài liệu yêu cầu
Development view thể hiện:
Cách phân chia phần mềm cho phát triển và quản lý mã nguồn
Cách hệ thống vận hành tại thời gian chạy
Mô tả mạng máy tính
Mô tả dữ liệu
Một kiến trúc có thể tái sử dụng trong các hệ thống cùng lĩnh vực nhờ:
Áp dụng các architectural patterns chung
Viết code thủ công
Thiết kế giao diện đẹp
Tối ưu hóa hiệu năng
Một hệ thống phân tán dùng kiến trúc nào là phù hợp?
Client-server
Pipe and filter
Layered
Repository
Architectural design có thể được xem là:
Cầu nối quan trọng giữa thiết kế chi tiết và kỹ thuật yêu cầu
Quá trình viết code
Quản lý dự án
Kiểm thử phần mềm
Kiến trúc phần mềm là gì?
Mô tả cách một hệ thống phần mềm được tổ chức
Viết code phần mềm
Thiết kế giao diện người dùng
Lập kế hoạch dự án
Quyết định thiết kế kiến trúc bao gồm:
Loại ứng dụng, phân phối hệ thống, kiểu kiến trúc sử dụng
Viết tài liệu chi tiết
Kiểm thử phần mềm
Lập kế hoạch phát triển
Kiến trúc có thể được mô tả qua các góc nhìn (views) nào?
Conceptual, logical, process, development
Tài liệu, code, giao diện
Test plan, design plan
User stories, use cases
Architectural patterns là gì?
Phương pháp tái sử dụng kiến thức thiết kế hệ thống chung đã được kiểm nghiệm
Code mẫu
Tài liệu yêu cầu
Kiểm thử phần mềm
Mục đích của việc sử dụng mô hình kiến trúc hệ thống là:
Giúp hiểu và so sánh các ứng dụng, xác nhận thiết kế hệ thống và đánh giá tái sử dụng các thành phần quy mô lớn
Viết code nhanh hơn
Giảm tài liệu
Tăng số lỗi
Transaction processing systems là gì?
Hệ thống tương tác cho phép nhiều người dùng truy cập và cập nhật dữ liệu trong cơ sở dữ liệu từ xa
Hệ thống ngôn ngữ tự nhiên
Hệ thống đồ họa
Hệ thống truyền thông
Language processing systems dùng để:
Dịch các văn bản từ một ngôn ngữ sang ngôn ngữ khác và thực thi các hướng dẫn được mô tả trong ngôn ngữ đầu vào
Quản lý cơ sở dữ liệu
Hệ thống giao diện người dùng
Hệ thống mạng xã hội
Thành phần chính của hệ thống biên dịch (compiler) bao gồm:
Lexical analyzer, syntax analyzer, semantic analyzer, code generator, symbol table
Database, user interface
Operating system, network module
Editor, debugger
Mô hình kiến trúc phần mềm giúp:
Tạo cầu nối quan trọng giữa thiết kế chi tiết và kỹ thuật yêu cầu
Viết code nhanh hơn
Giảm tài liệu
Không cần kiểm thử
Application architectures giúp:
Hiểu, so sánh, xác nhận thiết kế hệ thống ứng dụng và đánh giá tái sử dụng các thành phần quy mô lớn
Viết tài liệu dài dòng
Viết code nhanh hơn
Tăng độ phức tạp hệ thống
