SWE201c - Phần 4: Engineering Practices for Building Quality Software · trang 4 / 4

Câu hỏi trong chủ đề

Câu 37 – 47 trong 47 câu
ABackup and Recovery
BBranching and Merging
CTraceability
DChange Ignorance
Lời giải
Đáp án đúng: D. Hệ thống quản lý phiên bản sinh ra để KHÔNG BỎ SÓT thay đổi nào, nên "Change Ignorance" đi ngược hẳn lý do tồn tại của nó. A đúng: mọi phiên bản đều được lưu nên có thể khôi phục về bất kỳ điểm nào. B đúng: nhánh và hợp nhất là chức năng cốt lõi cho phép nhiều người làm song song. C đúng: mỗi commit gắn tác giả, thời điểm và thông điệp nên truy vết được ai đổi gì, khi nào, vì sao. Ba cái này đều là mục đích thật.
Mở trang câu hỏi này →
AIt observes changes in dependent objects
BIt notifies observers when its state changes
CIt implements multiple algorithms at runtime
DIt adapts incompatible interfaces
Lời giải
Đáp án đúng: B. Trong Observer Pattern, Subject là đối tượng nắm trạng thái được theo dõi: nó giữ danh sách các Observer đã đăng ký và khi trạng thái đổi thì gọi thông báo tới toàn bộ danh sách đó. A mô tả vai trò của Observer chứ không phải Subject — hai vai trò ngược nhau và đây là chỗ hay nhầm nhất. C là Strategy Pattern (chọn thuật toán lúc chạy). D là Adapter Pattern (làm cầu nối giữa hai giao diện không tương thích).
Mở trang câu hỏi này →
Which is a false statement?4 lựa chọn
AManually created tests can use randomly selected inputs to maximize defect finding
BCode coverage includes statement coverage, ensuring all code statements are executed at least once by at least one test case and all tests pass.
CProgram testing helps find defects, but testing can not prove there are no bugs.
DThe developer of the code is the best person to test that code.
Lời giải
Đáp án đúng: D. Chính tác giả đoạn mã là người kém khách quan nhất để kiểm thử nó: hiểu lầm nào dẫn tới việc viết sai mã thì cũng sẽ dẫn tới việc viết sai test, nên lỗi vẫn lọt. Đây là lý do ngành tách vai trò kiểm thử độc lập. Vậy D là phát biểu SAI. A đúng: đầu vào chọn ngẫu nhiên chạm được những vùng dữ liệu người viết test khó nghĩ ra. B đúng: statement coverage là một mức của code coverage. C đúng và là câu nói kinh điển của Dijkstra — kiểm thử chứng minh được sự có mặt của lỗi, không chứng minh được sự vắng mặt của lỗi.
Mở trang câu hỏi này →
ADecomposability
BAbstracting away complex information
CEnsuring that changes don't cross boundaries of modules
DLower corruption rate of data
Lời giải
Đáp án đúng: C. Coupling thấp nghĩa là các module ít phụ thuộc vào nhau, nên sửa bên trong một module thì tác động dừng lại ở ranh giới module đó, không lan sang chỗ khác. Đây chính là giá trị thực tiễn lớn nhất của low coupling: chi phí thay đổi được khoanh vùng. A decomposability là lợi ích của modularity nói chung. B che giấu thông tin phức tạp là information hiding. D giảm tỉ lệ hỏng dữ liệu là hệ quả xa của encapsulation. Cả ba đều là khái niệm liên quan nhưng không phải điều low coupling trực tiếp mang lại.
Mở trang câu hỏi này →
AInformation Hiding
BCohesion
CData Encapsulation
DCoupling
Lời giải
Đáp án đúng: B. Cohesion đo mức độ một module phục vụ MỘT mục tiêu được định nghĩa rõ ràng. Cohesion cao nhất là functional cohesion: mọi thành phần trong module cùng góp phần thực hiện đúng một nhiệm vụ trọn vẹn. D coupling đo quan hệ giữa các module, không phải mục tiêu bên trong một module. A information hiding và C data encapsulation nói về việc che chi tiết cài đặt sau giao diện — liên quan nhưng trả lời câu hỏi khác ("module lộ ra cái gì" chứ không phải "module nhắm tới mấy mục tiêu").
Mở trang câu hỏi này →
AFocuses on ensuring that the software meets the actual needs and expectations of the users.
BAnswers the question: "Are we building the right product?"
CPerforms checking if the software conforms to its specifications through methods like code reviews and inspections.
DInvolves testing the software in real-world scenarios to confirm that it satisfies user requirements and provides a satisfactory experience.
Lời giải
Đáp án đúng: C. Rà soát mã và inspection để đối chiếu phần mềm với ĐẶC TẢ của nó là verification, trả lời "Are we building the product right?". Vì vậy phát biểu C không thuộc về validation. A, B, D đều là validation: bảo đảm phần mềm đáp ứng nhu cầu và kỳ vọng thực của người dùng; trả lời đúng câu hỏi kinh điển "Are we building the right product?"; và kiểm thử trong tình huống thực tế để xác nhận trải nghiệm người dùng. Mẹo phân biệt: verification so sánh với TÀI LIỆU, validation so sánh với NHU CẦU THẬT.
Mở trang câu hỏi này →
ADesigning individual components.
BOverarching, cross-cutting concerns for the system.
CWriting code in specific programming languages.
DCreating user interfaces.
Lời giải
Mục tiêu chính của kiến trúc phần mềm trong quá trình phát triển phần mềm là xác định các mối quan tâm xuyên suốt và rộng lớn hơn cho hệ thống. Kiến trúc phần mềm tập trung vào việc giải quyết các vấn đề phức tạp và liên quan đến nhiều thành phần khác nhau của hệ thống, bao gồm cả các yêu cầu chức năng, hiệu suất, bảo mật và khả năng mở rộng. Điều này giúp đảm bảo rằng hệ thống được thiết kế và xây dựng một cách toàn diện và linh hoạt, đáp ứng được nhu cầu của người dùng và dễ dàng mở rộng trong tương lai.
Mở trang câu hỏi này →
ABlackboard Model.
BLayered Model.
CPipe-and-Filter Model.
DEvent-based Model
EClient-Server Model.
Lời giải
Đáp án đúng: C. Đường ống của UNIX, nơi đầu ra của chương trình này thành đầu vào của chương trình kia, là ví dụ giáo khoa của Pipe-and-Filter: mỗi chương trình là một filter biến đổi dòng dữ liệu, các pipe nối chúng lại; filter không biết gì về nhau nên rất dễ ghép lại theo tổ hợp mới. A Blackboard dùng cho hệ tri thức nhiều nguồn cùng ghi lên vùng dữ liệu chung. B Layered chia hệ thống theo tầng dịch vụ. D Event-based phản ứng theo sự kiện rời rạc. E Client-Server tách bên yêu cầu và bên phục vụ. Không mô hình nào trong bốn nắm được đặc trưng dòng chảy tuần tự của pipeline.
Mở trang câu hỏi này →
The four types of weak cohesion are:4 lựa chọn
ACoincidental, temporal, sequential, logical association
BCoincidental, temporal, procedural, logical association
CCommunicational, sequential, object, functional
DThere is no such thing as loose cohesion
Lời giải
Đáp án đúng: B. Bốn loại cohesion yếu, xếp từ yếu nhất lên: coincidental (gom ngẫu nhiên), temporal (cùng chạy trong một khoảng thời gian), procedural (theo một trình tự thực thi), logical association (cùng một loại công việc). A xếp nhầm sequential vào nhóm yếu — sequential thuộc nhóm trung bình, nơi đầu ra của phần này là đầu vào của phần kia. C liệt kê toàn nhóm trung bình và mạnh (communicational, sequential, object, functional). D phủ nhận sự tồn tại của cohesion yếu, hiển nhiên sai.
Mở trang câu hỏi này →
AControl; Data Structure; Message
BContent, Common; External
CThere is no such thing as tight coupling
DData; Message; None
Lời giải
Đáp án đúng: B. Ba loại coupling chặt là content coupling (một module chạm thẳng vào nội dung bên trong module khác), common coupling (nhiều module cùng dùng dữ liệu toàn cục) và external coupling (các module cùng phụ thuộc vào một định dạng, giao thức hay thiết bị bên ngoài). A trộn control và data structure (nhóm trung bình) với message (nhóm lỏng). C phủ nhận sự tồn tại của coupling chặt, sai hiển nhiên. D liệt kê đúng nhóm LỎNG (data, message, none) — đây là bẫy đối xứng với câu hỏi về loose coupling, đọc nhanh rất dễ chọn nhầm.
Mở trang câu hỏi này →
AFunctional viewpoint
BDevelopment viewpoint
CUsability perspective
DMaintenance perspective
Lời giải
Đáp án đúng: A, B. Theo bộ khung Rozanski & Woods mà môn học dùng, viewpoint mô tả một lát cắt cấu trúc của hệ thống: Functional, Information, Concurrency, Development, Deployment, Operational. Perspective là mối quan tâm cắt ngang mọi view: Security, Performance and Scalability, Availability and Resilience, Evolution. A và B là hai viewpoint chuẩn trong danh sách trên. C "Usability perspective" và D "Maintenance perspective" đều KHÔNG có trong bộ perspective mà môn dạy — mối quan tâm gần nhất với bảo trì được gọi là Evolution, không phải Maintenance.
Mở trang câu hỏi này →
Xem cả 47 câu của chủ đề

Đề có câu hỏi của chủ đề này

3 đề chứa ít nhất một câu thuộc chủ đề — mở đề để làm cả bộ, không chỉ từng câu.