SWE201c - Phần 4: Engineering Practices for Building Quality Software · trang 3 / 4
Câu hỏi trong chủ đề
Câu 25 – 36 trong 47 câuACoupling measures the strength of connections between components.
BLoose coupling makes it unlikely that changes will be propogated across components.
CShared variables and control information leads to tight coupling.
DLoose coupling is partly achieved through message passing.
EAll of the answers
Lời giải
Mở trang câu hỏi này →Đáp án đúng: E. Cả bốn phát biểu đều đúng: coupling đúng là thước đo độ mạnh của các kết nối giữa các thành phần; coupling lỏng khiến thay đổi ít lan sang thành phần khác; chia sẻ biến chung và thông tin điều khiển chính là common coupling và control coupling, tức nhóm chặt; và truyền thông điệp là một trong những cách chính để đạt coupling lỏng.
Không phát biểu nào sai, nên chọn "All of the answers". Mẹo làm bài: khi có phương án bao trùm, hãy kiểm tra từng phát biểu con — chỉ cần một phát biểu sai là phương án bao trùm bị loại.
AMedium control coupling
BMedium data structure coupling
Lời giải
Mở trang câu hỏi này →Đáp án đúng: B. Khi hai module cùng phụ thuộc vào một cấu trúc dữ liệu tổng hợp (record, struct, object nhiều trường), ta có data-structure coupling — trong thang này gọi là medium data structure coupling. Nó chặt hơn data coupling vì module nhận nguyên cả cấu trúc dù chỉ dùng vài trường, nên bất kỳ thay đổi nào của cấu trúc cũng có nguy cơ lan sang cả hai.
A control coupling là khi một module điều khiển luồng thực thi của module kia bằng cờ hoặc tham số điều khiển — không phải tình huống được mô tả.
ACoupling
BCohesion
CData Encapsulation
DInformation Hiding
Lời giải
Mở trang câu hỏi này →Đáp án đúng: A. Coupling đo mức độ các module PHỐI HỢP và phụ thuộc lẫn nhau — tức nhìn ra bên ngoài, xét quan hệ giữa module này với module khác.
B cohesion nhìn vào bên trong: các phần tử trong CÙNG một module gắn bó tới đâu. C data encapsulation và D information hiding là hai khía cạnh về việc che giấu chi tiết cài đặt sau một giao diện. Cặp coupling / cohesion rất hay bị đảo: nhớ "coupling = giữa các module, cohesion = trong một module".
ASubsystems can independently comprise the business logic by itself while modules can't.
BSubsystems can communicate with other subsystems while modules cannot communicate with other modules.
CAll of the answers.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: A. Subsystem là một hệ thống con độc lập: nó tự nó đã gói trọn một mảng logic nghiệp vụ và về nguyên tắc có thể vận hành riêng. Module là đơn vị phân rã nhỏ hơn, cung cấp dịch vụ cho các thành phần khác và không đứng một mình được.
B sai vì phát biểu vế sau: các module HOÀN TOÀN giao tiếp được với nhau — đó chính là bản chất của phân rã module, và cường độ giao tiếp ấy được đo bằng coupling. Vì B sai nên C ("all of the answers") cũng sai.
AIt allows for more breaks.
BIt helps maintain mental models
CIt increases the number of lines of code written.
DIt reduces the need for documentation.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: B. Lập trình đòi hỏi giữ trong đầu một mô hình tinh thần khá lớn về trạng thái chương trình, luồng dữ liệu và các trường hợp biên. Mô hình này mất khá lâu để dựng lên và tan rất nhanh khi bị ngắt quãng — sau một lần gián đoạn, người viết mã phải tốn nhiều phút để lấy lại ngữ cảnh. Giảm phân tâm chính là để bảo vệ mô hình tinh thần đó.
A, C, D đều lệch: nghỉ ngơi hợp lý là chuyện khác, số dòng mã viết ra không phải thước đo, và giảm phân tâm không liên quan gì tới nhu cầu tài liệu.
Parts of modules are together in the same file. This is an example of what type of cohesion?4 lựa chọn
AProcedural cohesion
BLogical association cohesion
CTemporal cohesion
DCoincidental cohesion
Lời giải
Mở trang câu hỏi này →Đáp án đúng: D. Coincidental cohesion là mức gắn kết YẾU NHẤT: các phần tử nằm chung một module thuần tuý vì ngẫu nhiên, không có quan hệ nghĩa nào. "Các phần của module nằm chung một tệp" đúng là lý do ngẫu nhiên — chung chỗ lưu trữ chứ không chung mục đích.
B logical association cohesion cần các phần tử ít nhất phải cùng MỘT LOẠI công việc (ví dụ gom tất cả hàm xử lý đầu vào). C temporal cohesion cần chúng cùng chạy trong một khoảng thời gian (ví dụ nhóm khởi tạo). A procedural cohesion cần chúng theo một trình tự thực thi. Ở đây không có cả ba mối liên hệ đó.
ALoose no coupling
BLoose data coupling
CLoose message coupling
Lời giải
Mở trang câu hỏi này →Đáp án đúng: C. Message coupling là mức lỏng nhất trong thang coupling có thực: các thành phần không chạm vào dữ liệu của nhau mà chỉ trao đổi qua tham số hoặc thông điệp qua một giao diện công khai — đúng nguyên văn mô tả trong đề.
A "loose no coupling" nghĩa là hoàn toàn không có kết nối, nhưng đề nói rõ các thành phần CÓ giao tiếp với nhau, nên không phải trường hợp này. B loose data coupling chặt hơn một bậc: các module truyền dữ liệu thật cho nhau qua tham số, còn message coupling nhấn mạnh việc giao tiếp qua thông điệp mà không phụ thuộc dữ liệu nội bộ của nhau.
ALoose data coupling
BLoose no coupling
CLoose message coupling
Lời giải
Mở trang câu hỏi này →Đáp án đúng: A. Data coupling là khi các module chỉ trao đổi với nhau bằng dữ liệu đơn giản truyền qua tham số, mỗi tham số đều là thứ module nhận thực sự cần dùng. Đây là mức coupling lỏng và được coi là chấp nhận được trong hầu hết thiết kế.
B "loose no coupling" nghĩa là không có kết nối nào, mâu thuẫn với việc chúng đang chia sẻ tham số. C loose message coupling nhấn mạnh việc giao tiếp bằng thông điệp qua giao diện công khai, lỏng hơn một bậc so với việc truyền thẳng tham số dữ liệu.
APerform quality control at the end of the project
BOutsource testing to external vendors
CIntegrate quality assurance practices throughout development
DAvoid customer involvement in reviews
Lời giải
Mở trang câu hỏi này →Đáp án đúng: C. "Build Quality In" là một trong bảy nguyên tắc Lean: chất lượng phải được cài vào từng bước của quy trình chứ không phải kiểm tra ở cuối rồi vá. Cụ thể là review liên tục, kiểm thử tự động, tích hợp liên tục, pair programming — mọi thứ giữ cho khiếm khuyết không kịp tích tụ.
A đặt kiểm soát chất lượng ở cuối dự án, đúng thứ nguyên tắc này bác bỏ. B thuê ngoài kiểm thử là đẩy chất lượng ra khỏi nhóm, ngược với tinh thần cả nhóm chịu trách nhiệm. D né người dùng khỏi review là cắt mất vòng phản hồi quan trọng nhất.
Where does software design fit in the traditional waterfall software development lifecycle?4 lựa chọn
ABetween implementation and deployment
BBetween architecture and implementation
CBetween specification and architecture
DBefore requirements
Lời giải
Mở trang câu hỏi này →Đáp án đúng: C. Theo trình tự môn học trình bày (Requirements - Specification - Design - Architecture - Implementation), thiết kế phần mềm nằm sau khi đã có đặc tả và trước khi chốt kiến trúc: từ đặc tả, ta thiết kế cách phân rã hệ thống thành module với coupling và cohesion hợp lý, rồi mới định hình kiến trúc tổng thể. A đặt thiết kế sau lập trình — sai thứ tự hoàn toàn. D đặt thiết kế trước cả yêu cầu, tức thiết kế khi chưa biết cần gì. B "giữa kiến trúc và lập trình" là bẫy khó nhất ở câu này vì nhiều tài liệu khác xếp architecture trước design; hãy bám thứ tự của môn: Phần 4 dạy Quality in Design TRƯỚC Quality in Architecture.
AHot failover
BWarm standby
CCold backup
DWarm failover
Lời giải
Mở trang câu hỏi này →Đáp án đúng: A. Hot failover là mức sẵn sàng cao nhất: dịch vụ thay thế đã chạy sẵn, đã đồng bộ dữ liệu, chỉ cần chuyển hướng luồng dữ liệu sang là xong — không còn bước cài đặt nào, thời gian gián đoạn gần như bằng không.
B Warm standby thì máy thay thế đang chạy nhưng vẫn cần cài đặt. C Cold backup thì máy chưa chạy, phải dựng từ đầu, chậm nhất. D "Warm failover" không phải một chiến lược chuẩn trong danh mục này. Nhớ theo thang nóng dần: cold chưa chạy, warm chạy nhưng cần cài, hot chạy và chỉ cần chuyển hướng.
AApplication framework can be run immediately without implementing while the design pattern must be implemented or extended depending the abstraction to run
BApplication framework must be implemented or extending depending the abstraction to run while the design pattern can be run without implementing
CAll of the others
Lời giải
Mở trang câu hỏi này →Đáp án đúng: B. Application framework là MÃ NGUỒN có sẵn dạng khung: nó định sẵn luồng điều khiển và để lại các điểm mở rộng (lớp trừu tượng, interface, hook) mà lập trình viên phải cài đặt hoặc kế thừa thì ứng dụng mới chạy được — đây chính là nguyên lý inversion of control. Design pattern thì ở tầng khác hẳn: nó là mô tả trừu tượng về một giải pháp lặp lại, không phải mã.
A đảo ngược vế đầu: không framework nào chạy ra ứng dụng hoàn chỉnh mà không cần viết gì. C sai vì A đã sai. Ghi nhớ: framework là mã cần mở rộng, pattern là tri thức cần hiện thực hoá.
Đề 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.
Cập nhật 31 ngày trước
SWE201c Nhập môn Kỹ thuật phần mềm – Bộ ôn tập số 2: Agile Software Development (49 câu)
Luyện tập
Tổng hợp cả môn
49 câu
Cập nhật 31 ngày trước
SWE201c Nhập môn Kỹ thuật phần mềm – Bộ ôn tập cuối kỳ số 1: Agile Software Development (49 câu)
Luyện tậpFE
Tổng hợp cả môn
49 câu
Cập nhật 31 ngày trước
SWE201c Nhập môn Kỹ thuật phần mềm – Bộ ôn tập số 1: Agile Software Development (48 câu)
Luyện tập
Tổng hợp cả môn
48 câu