Phòng học Karinoya

Chứng chỉ · Lab luyện thi IT Passport

Kỹ thuật phát triển

Bạn có thể đọc câu hỏi và lời giải bằng Tiếng Việt. Bài giảng (bài viết giải thích) chỉ có bản tiếng Nhật.

Xem bản tiếng Nhật (có bài giảng) →

Câu 1 | Định nghĩa yêu cầu

Trong phát triển hệ thống, công việc nào được thực hiện ở giai đoạn định nghĩa yêu cầu?

  1. Quyết định cấu trúc module bên trong chương trình và trình tự xử lý
  2. Sửa các sự cố phát sinh sau khi vận hành chính thức và cải thiện chức năng
  3. Khảo sát nghiệp vụ của người dùng, làm rõ các chức năng và hiệu năng mà hệ thống cần có
  4. Kiểm tra từng chương trình một xem chương trình đã viết có chạy đúng như tài liệu thiết kế hay không
Đáp ánC. Khảo sát nghiệp vụ của người dùng, làm rõ các chức năng và hiệu năng mà hệ thống cần có

Định nghĩa yêu cầu là công đoạn đầu tiên của quá trình phát triển, trong đó ta chỉnh lý các yêu cầu của người dùng và làm rõ chức năng, hiệu năng mà hệ thống phải đáp ứng. Phương án 2 là công việc của thiết kế trong, phương án 3 là kiểm thử đơn vị, phương án 4 là bảo trì; tất cả đều thuộc các công đoạn nằm sau định nghĩa yêu cầu.

Câu 2 | Thiết kế ngoài

Nội dung nào sau đây là thích hợp nhất để quyết định trong thiết kế ngoài (thiết kế cơ bản)?

  1. Trình tự tạo dữ liệu kiểm thử dùng trong kiểm thử tích hợp
  2. Thống nhất cách đặt tên biến, tên hàm theo quy ước viết mã
  3. Trình tự xử lý và thuật toán bên trong của từng module
  4. Bố cục màn hình mà người dùng thao tác và các biểu mẫu, báo cáo xuất ra
Đáp ánD. Bố cục màn hình mà người dùng thao tác và các biểu mẫu, báo cáo xuất ra

Thiết kế ngoài là công đoạn quyết định những phần mà người dùng nhìn thấy (màn hình, biểu mẫu, việc trao đổi dữ liệu), nên phương án 4 đúng. Phương án 1 là công việc của thiết kế trong, phương án 2 thuộc giai đoạn lập trình, phương án 3 thuộc công đoạn kiểm thử; đều không phải nội dung quyết định trong thiết kế ngoài.

Câu 3 | Quan hệ hai bước thiết kế

Cách giải thích nào sau đây về quan hệ giữa thiết kế ngoài và thiết kế trong là thích hợp?

  1. Đặc tả nhìn thấy được từ phía người dùng đã quyết định ở thiết kế ngoài sẽ được cụ thể hóa thành cấu trúc chương trình ở thiết kế trong
  2. Hoàn thành thiết kế trong trước, rồi dựa trên kết quả đó để làm thiết kế ngoài
  3. Cả thiết kế ngoài lẫn thiết kế trong đều là công đoạn quyết định bố cục màn hình, biểu mẫu cần thống nhất với người dùng
  4. Thiết kế ngoài do lập trình viên, còn thiết kế trong do người dùng làm trung tâm thực hiện
Đáp ánA. Đặc tả nhìn thấy được từ phía người dùng đã quyết định ở thiết kế ngoài sẽ được cụ thể hóa thành cấu trúc chương trình ở thiết kế trong

Quá trình phát triển đi từ thiết kế ngoài sang thiết kế trong, cụ thể hóa đặc tả nhìn thấy từ bên ngoài thành cấu trúc module và trình tự xử lý bên trong. Phương án 1 ngược thứ tự; phương án 2 sai vì thiết kế trong không phải công đoạn quyết định đặc tả dành cho người dùng; phương án 4 sai vì vai trò bị đảo ngược.

Câu 4 | Thứ tự công đoạn

Thứ tự thực hiện các công đoạn phát triển hệ thống nào sau đây là thích hợp?

  1. Định nghĩa yêu cầu → Kiểm thử → Thiết kế hệ thống → Lập trình
  2. Thiết kế hệ thống → Định nghĩa yêu cầu → Kiểm thử → Lập trình
  3. Định nghĩa yêu cầu → Lập trình → Thiết kế hệ thống → Kiểm thử
  4. Định nghĩa yêu cầu → Thiết kế hệ thống → Lập trình → Kiểm thử
Đáp ánD. Định nghĩa yêu cầu → Thiết kế hệ thống → Lập trình → Kiểm thử

Phát triển tiến hành theo thứ tự: định nghĩa yêu cầu để quyết định làm gì, thiết kế hệ thống để quyết định cách thực hiện, lập trình để xây dựng, rồi kiểm thử để xác nhận. Các phương án 1, 2, 3 đều đặt thiết kế hoặc kiểm thử lên trước vị trí vốn có của chúng, chẳng hạn kiểm tra trước khi làm ra sản phẩm, nên là thứ tự không thể thành lập.

Câu 5 | Phân chia module

Mục đích chính của việc thiết kế chia chương trình thành nhiều module là gì?

  1. Nâng cao tính độc lập của từng bộ phận, giúp việc sửa đổi, kiểm thử và tái sử dụng dễ dàng hơn
  2. Giảm số lượng máy chủ dùng trong môi trường vận hành chính thức để hạ chi phí
  3. Giảm số mục người dùng phải nhập để thao tác trở nên đơn giản hơn
  4. Để chắc chắn giảm được tổng số dòng mã nguồn của toàn bộ chương trình
Đáp ánA. Nâng cao tính độc lập của từng bộ phận, giúp việc sửa đổi, kiểm thử và tái sử dụng dễ dàng hơn

Phân chia module nhằm tách chương trình thành các bộ phận theo chức năng, nâng cao tính độc lập, thu hẹp phạm vi ảnh hưởng khi sửa đổi và giúp kiểm thử, tái sử dụng dễ dàng hơn. Chia nhỏ chưa chắc đã giảm tổng số dòng nên phương án 1 sai; phương án 2 là chuyện thiết kế màn hình, phương án 4 là chuyện cấu hình hạ tầng, mục đích khác hẳn.

Câu 6 | Usability

Ví dụ nào sau đây về thiết kế màn hình giúp nâng cao usability là thích hợp nhất?

  1. Thông báo lỗi nhập liệu ngay tại chỗ, hiển thị cụ thể nội dung lỗi và cách sửa
  2. Dùng nhiều thuật ngữ chuyên môn, làm màn hình mà chỉ người dùng am hiểu mới sử dụng được
  3. Không chỉ dẫn cách thao tác trên màn hình mà chỉ giải thích trong sổ tay hướng dẫn riêng
  4. Nhồi nhét mọi mục nhập vào một màn hình, hoàn toàn không hiển thị tiêu đề hay chú thích bổ sung
Đáp ánA. Thông báo lỗi nhập liệu ngay tại chỗ, hiển thị cụ thể nội dung lỗi và cách sửa

Usability là mức độ dễ sử dụng giúp người dùng đạt được mục đích một cách hiệu quả mà không lúng túng; việc báo lỗi ngay tại chỗ một cách dễ hiểu sẽ nâng cao điều này. Các phương án 1, 3, 4 đều làm tăng gánh nặng hiểu và thao tác của người dùng nên làm giảm tính dễ dùng.

Câu 7 | Tiếp nhận phần mềm

Cách giải thích nào về việc tiếp nhận phần mềm là thích hợp?

  1. Sau khi bắt đầu vận hành chính thức, cải tiến phần mềm theo thay đổi của nghiệp vụ và yêu cầu từ người dùng
  2. Người phát triển tự kiểm thử chương trình mình viết theo từng module hoặc từng chương trình một
  3. Bên đặt hàng xác nhận phần mềm được bàn giao bằng kiểm thử vận hành v.v., và tiếp nhận nếu nó đáp ứng yêu cầu
  4. Người phát triển xây dựng cấu trúc bên trong và trình tự xử lý của chương trình đúng theo tài liệu thiết kế
Đáp ánC. Bên đặt hàng xác nhận phần mềm được bàn giao bằng kiểm thử vận hành v.v., và tiếp nhận nếu nó đáp ứng yêu cầu

Tiếp nhận phần mềm là công đoạn bên đặt hàng xác nhận qua kiểm thử vận hành v.v. rằng sản phẩm đáp ứng yêu cầu rồi mới tiếp nhận, còn gọi là nghiệm thu. Phương án 1 là kiểm thử đơn vị, phương án 3 là lập trình, phương án 4 là bảo trì; đều là các công đoạn khác với tiếp nhận.

Câu 8 | Kiểm thử đơn vị

Cách giải thích nào về kiểm thử đơn vị là thích hợp?

  1. Người dùng sử dụng theo đúng trình tự nghiệp vụ thực tế để kiểm tra có đáp ứng yêu cầu hay không
  2. Kiểm tra theo từng module hoặc từng chương trình một xem xử lý bên trong có chạy đúng hay không
  3. Kiểm tra toàn bộ hệ thống trong môi trường gần với môi trường thật, bao gồm cả hiệu năng và khả năng chịu tải
  4. Ghép nhiều module lại và kiểm tra việc trao đổi dữ liệu giữa chúng có đúng hay không
Đáp ánB. Kiểm tra theo từng module hoặc từng chương trình một xem xử lý bên trong có chạy đúng hay không

Kiểm thử đơn vị là giai đoạn đầu tiên của kiểm thử, thực hiện theo từng module. Phương án 2 là kiểm thử tích hợp, phương án 3 là kiểm thử hệ thống, phương án 4 là kiểm thử vận hành (kiểm thử chấp nhận); tất cả đều được thực hiện ở các giai đoạn sau kiểm thử đơn vị.

Câu 9 | Kiểm thử tích hợp

Nội dung chủ yếu được xác nhận trong kiểm thử tích hợp là gì?

  1. Việc trao đổi dữ liệu và sự phối hợp giữa các module đã ghép lại có đúng hay không
  2. Người dùng có sử dụng được trơn tru theo luồng nghiệp vụ thực tế hay không
  3. Mọi câu lệnh và nhánh rẽ bên trong một module có được thực thi hết hay không
  4. Chi phí phát triển có nằm trong ngân sách ban đầu hay không
Đáp ánA. Việc trao đổi dữ liệu và sự phối hợp giữa các module đã ghép lại có đúng hay không

Kiểm thử tích hợp là giai đoạn nối các module đã qua kiểm thử đơn vị lại với nhau và kiểm tra giao diện (việc trao đổi dữ liệu) có đúng hay không. Phương án 2 là kiểm thử hộp trắng thực hiện trong kiểm thử đơn vị, phương án 3 là mục đích của kiểm thử vận hành, phương án 4 là chuyện quản lý chi phí dự án chứ không phải kiểm thử.

Câu 10 | Kiểm thử hệ thống

Nội dung nào được thực hiện trong kiểm thử hệ thống (kiểm thử tổng hợp) là thích hợp nhất?

  1. Kiểm tra toàn bộ hệ thống trong môi trường gần với môi trường thật, ngoài chức năng còn xác nhận cả hiệu năng và khả năng chịu tải
  2. Dùng công cụ tự động định dạng để chỉnh sửa phần thụt đầu dòng và định dạng lộn xộn của mã nguồn
  3. Bổ sung các yêu cầu người dùng gửi đến sau khi bàn giao thành chức năng mới
  4. Những người phụ trách cùng đọc rà soát trên giấy từng module đang viết để tìm lỗi trong phần mô tả
Đáp ánA. Kiểm tra toàn bộ hệ thống trong môi trường gần với môi trường thật, ngoài chức năng còn xác nhận cả hiệu năng và khả năng chịu tải

Kiểm thử hệ thống là giai đoạn kiểm thử cuối cùng do bên phát triển thực hiện, xác nhận toàn hệ thống chạy đúng yêu cầu về các mặt chức năng, hiệu năng, khả năng chịu tải. Phương án 1 là công việc review hoặc kiểm thử đơn vị, phương án 2 là công việc viết mã, phương án 4 là bổ sung chức năng trong bảo trì; đều không đúng.

Câu 11 | Kiểm thử vận hành

Cách giải thích nào về kiểm thử vận hành (kiểm thử chấp nhận) là thích hợp?

  1. Người phát triển cùng đọc rà soát chương trình trên giấy để chỉ ra lỗi
  2. Người phát triển chú ý tới cấu trúc bên trong của chương trình, kiểm tra bao phủ các câu lệnh và nhánh rẽ
  3. Người phát triển xác nhận sự phối hợp giữa các module đã tích hợp
  4. Người dùng sử dụng theo đúng luồng nghiệp vụ thực tế để xác nhận có đáp ứng yêu cầu hay không
Đáp ánD. Người dùng sử dụng theo đúng luồng nghiệp vụ thực tế để xác nhận có đáp ứng yêu cầu hay không

Kiểm thử vận hành là kiểm thử cuối cùng do người dùng (bên đặt hàng) làm chủ thể, xác nhận có dùng được theo trình tự nghiệp vụ thực tế hay không. Phương án 1 là kiểm thử hộp trắng, phương án 2 là kiểm thử tích hợp, phương án 3 là review mã nguồn; đều là công việc phía người phát triển, khác cả chủ thể lẫn mục đích.

Câu 12 | Mô hình chữ V

Trong mô hình chữ V, công đoạn kiểm thử nào được đối ứng với thiết kế ngoài (thiết kế cơ bản)?

  1. Kiểm thử đơn vị
  2. Kiểm thử tích hợp
  3. Kiểm thử hệ thống
  4. Kiểm thử vận hành
Đáp ánC. Kiểm thử hệ thống

Trong mô hình chữ V, định nghĩa yêu cầu đối ứng với kiểm thử vận hành, thiết kế ngoài với kiểm thử hệ thống, thiết kế trong với kiểm thử tích hợp, lập trình với kiểm thử đơn vị. Vì vậy công đoạn tương ứng với thiết kế ngoài là kiểm thử hệ thống; kiểm thử đơn vị ứng với lập trình, kiểm thử tích hợp ứng với thiết kế trong, kiểm thử vận hành ứng với định nghĩa yêu cầu.

Câu 13 | Kiểm thử hộp trắng

Cách giải thích nào về kiểm thử hộp trắng là thích hợp?

  1. Cho chạy lượng dữ liệu bằng với môi trường thật và đo xem thời gian xử lý có nằm trong tiêu chuẩn hay không
  2. Không xét cấu trúc bên trong chương trình, chỉ chú ý đến quan hệ giữa đầu vào và đầu ra ghi trong tài liệu đặc tả để kiểm thử
  3. Chú ý cấu trúc bên trong chương trình, chọn các đường đi sao cho các câu lệnh và nhánh rẽ được thực thi bao phủ để kiểm thử
  4. Cho người dùng thao tác bản mẫu thử, lắng nghe nguyện vọng và phản ánh vào yêu cầu
Đáp ánC. Chú ý cấu trúc bên trong chương trình, chọn các đường đi sao cho các câu lệnh và nhánh rẽ được thực thi bao phủ để kiểm thử

Kiểm thử hộp trắng là phương pháp nhìn vào bên trong chương trình (cấu trúc điều khiển) để tạo các ca kiểm thử bao phủ câu lệnh và nhánh rẽ, chủ yếu dùng trong kiểm thử đơn vị. Phương án 1 là kiểm thử hộp đen, phương án 3 là prototyping, phương án 4 là kiểm thử hiệu năng.

Câu 14 | Kiểm thử hộp đen

Cách tạo ca kiểm thử trong kiểm thử hộp đen nào sau đây là thích hợp?

  1. Chuẩn bị số ca kiểm thử tỷ lệ với số dòng mã nguồn, phân bổ một cách máy móc
  2. Chọn các đường đi sao cho mọi nhánh rẽ đều được thực thi ít nhất một lần
  3. Kiểm tra từng dòng xem các câu chú thích do người phát triển viết có đúng hay không
  4. Chia các điều kiện đầu vào trong tài liệu đặc tả theo từng nhóm có ý nghĩa, chọn giá trị đại diện và giá trị ở ranh giới
Đáp ánD. Chia các điều kiện đầu vào trong tài liệu đặc tả theo từng nhóm có ý nghĩa, chọn giá trị đại diện và giá trị ở ranh giới

Kiểm thử hộp đen được thực hiện dựa trên đặc tả mà không nhìn cấu trúc bên trong, dùng phân hoạch tương đương và phân tích giá trị biên để chọn giá trị đại diện, giá trị biên của đầu vào. Phương án 1 là kiểm thử hộp trắng chú ý cấu trúc bên trong, phương án 2 sai vì số dòng không phải là căn cứ cho ca kiểm thử, phương án 4 là công việc review mã.

Câu 15 | Kiểm thử hồi quy

Mục đích của việc thực hiện kiểm thử hồi quy (regression test) là gì?

  1. Xác nhận việc sửa chương trình có làm phát sinh lỗi ở những chỗ trước khi sửa vẫn chạy đúng hay không
  2. Xác nhận người dùng đã qua đào tạo nắm được đúng cách thao tác mới sau thay đổi
  3. Xác nhận có đủ hiệu năng xử lý chịu được việc sử dụng trong môi trường thật
  4. Chỉ nhằm xác nhận chức năng mới thêm có chạy đúng tài liệu đặc tả hay không, giới hạn ở phần vừa thêm
Đáp ánA. Xác nhận việc sửa chương trình có làm phát sinh lỗi ở những chỗ trước khi sửa vẫn chạy đúng hay không

Kiểm thử hồi quy là kiểm thử để xác nhận các chức năng vốn hoạt động bình thường không bị hỏng do ảnh hưởng của việc sửa đổi hay thêm chức năng. Phương án 1 là kiểm thử chính chức năng được thêm, phương án 2 là kiểm thử hiệu năng, phương án 3 là xác nhận việc đào tạo, huấn luyện; đều không phải mục đích của kiểm thử hồi quy.

Câu 16 | Kỹ thuật review

Trong các kỹ thuật review phần mềm, cách giải thích nào về inspection là thích hợp?

  1. Người điều phối (moderator) chủ trì, quy định trước vai trò của người tham gia và trình tự, phát hiện khiếm khuyết của sản phẩm một cách chính thức
  2. Chạy thật chương trình và kiểm tra đầu ra đối với đầu vào có đúng đặc tả hay không
  3. Hai người một nhóm dùng chung một máy, thay phiên nhau viết chương trình
  4. Người tạo sản phẩm làm trung tâm, lần lượt giải thích nội dung cho các bên liên quan, mọi người chỉ ra lỗi và thắc mắc ngay tại chỗ một cách không chính thức
Đáp ánA. Người điều phối (moderator) chủ trì, quy định trước vai trò của người tham gia và trình tự, phát hiện khiếm khuyết của sản phẩm một cách chính thức

Inspection là hình thức review chính thức do moderator điều hành, quy định vai trò, trình tự và để lại biên bản. Phương án 2 là walkthrough được tiến hành không chính thức, phương án 3 là kiểm thử chạy chương trình thật, phương án 4 là lập trình đôi của XP; đều khác với inspection.

Câu 17 | Mô hình thác nước

Đặc trưng nào của mô hình thác nước (waterfall) là thích hợp?

  1. Làm bản mẫu thử, vừa nhận đánh giá của người dùng vừa chốt dần yêu cầu
  2. Tiến hành các công đoạn theo thứ tự, về nguyên tắc không quay lại công đoạn trước
  3. Lặp lại các vòng lặp ngắn, mỗi vòng cung cấp phần mềm chạy được
  4. Bộ phận phát triển và bộ phận vận hành hợp thành một thể, phát hành thường xuyên nhờ tự động hóa
Đáp ánB. Tiến hành các công đoạn theo thứ tự, về nguyên tắc không quay lại công đoạn trước

Mô hình thác nước tiến hành các công đoạn tuần tự từ thượng nguồn xuống hạ nguồn, phát triển với tiền đề không quay lại công đoạn trước, phê duyệt sản phẩm của từng công đoạn rồi mới đi tiếp. Phương án 1 là phát triển Agile, phương án 3 là mô hình prototyping, phương án 4 là DevOps; đều là những cách nghĩ khác.

Câu 18 | Prototype

Lợi ích chính của việc áp dụng mô hình prototyping là gì?

  1. Vì bản mẫu thử thay thế được tài liệu thiết kế nên hoàn toàn không cần công việc soạn tài liệu
  2. Cho người dùng xác nhận bản mẫu thử từ giai đoạn sớm, giảm được việc làm lại do lệch yêu cầu hay hiểu nhầm
  3. Vì người dùng đã xác nhận bản mẫu thử nên bảo đảm được rằng không phát sinh thay đổi đặc tả sau khi bắt đầu vận hành
  4. Việc làm bản mẫu thử chắc chắn giảm tổng công số phát triển và chi phí còn một nửa
Đáp ánB. Cho người dùng xác nhận bản mẫu thử từ giai đoạn sớm, giảm được việc làm lại do lệch yêu cầu hay hiểu nhầm

Prototyping là kỹ thuật cho người dùng đánh giá bản mẫu thử từ sớm để tránh việc làm lại quy mô lớn do hiểu sai yêu cầu. Dù có bản mẫu thử vẫn cần tài liệu thiết kế nên phương án 1 sai; không có gì bảo đảm công số chắc chắn giảm một nửa hay không xảy ra thay đổi, nên phương án 2 và 4 cũng sai.

Câu 19 | Mô hình xoắn ốc

Cách giải thích nào về mô hình xoắn ốc (spiral) là thích hợp?

  1. Hoàn thành toàn bộ chức năng trong một dòng chảy công đoạn duy nhất từ thượng nguồn xuống hạ nguồn, hoàn toàn không quay lại công đoạn trước hay xem xét lại giữa chừng
  2. Bỏ qua công đoạn định nghĩa yêu cầu, làm ra thứ chạy được trước rồi mới soạn tài liệu đặc tả
  3. Ủy thác toàn bộ công đoạn phát triển ra bên ngoài, chỉ quản lý tiến độ qua báo cáo hằng tháng
  4. Chia hệ thống thành từng phần, lặp lại chuỗi công việc thiết kế, phát triển, đánh giá, nâng dần mức hoàn thiện theo hình xoắn ốc
Đáp ánD. Chia hệ thống thành từng phần, lặp lại chuỗi công việc thiết kế, phát triển, đánh giá, nâng dần mức hoàn thiện theo hình xoắn ốc

Mô hình xoắn ốc chia hệ thống thành các phần, lặp lại chu trình từ thiết kế đến đánh giá để vừa giảm rủi ro vừa nâng cao mức hoàn thiện. Phương án 1 là cách nghĩ của mô hình thác nước; phương án 2 và 3 không liên quan đến định nghĩa của mô hình xoắn ốc.

Câu 20 | Agile

Cách nghĩ nào của phát triển Agile là thích hợp nhất?

  1. Người dùng chỉ tham gia lúc định nghĩa yêu cầu và nghiệm thu, không tham gia trong suốt thời gian phát triển
  2. Chốt toàn bộ đặc tả ngay từ đầu, về nguyên tắc không chấp nhận thay đổi về sau
  3. Tạo phần mềm chạy được trong các vòng lặp ngắn, tiếp thu ý kiến người dùng và ứng phó với thay đổi
  4. Ưu tiên việc hoàn chỉnh tài liệu thiết kế chi tiết hơn là sớm đưa ra phần mềm chạy được
Đáp ánC. Tạo phần mềm chạy được trong các vòng lặp ngắn, tiếp thu ý kiến người dùng và ứng phó với thay đổi

Phát triển Agile lặp lại các vòng ngắn, coi trọng phần mềm chạy được và việc ứng phó với thay đổi, tiến hành trong sự hợp tác với người dùng. Phương án 2, 3, 4 đều là đặc trưng của cách làm kiểu thác nước, trái ngược với tư tưởng Agile.

Câu 21 | Chọn mô hình

Với hệ thống mà yêu cầu chưa được chốt và muốn vừa xem phản ứng của người dùng vừa bổ sung chức năng trong thời gian ngắn, phương châm phát triển nào là thích hợp nhất?

  1. Kiểm thử dồn hết vào cuối cùng, trước đó không xác nhận hoạt động
  2. Không bắt tay phát triển cho đến khi tài liệu định nghĩa yêu cầu được phê duyệt, và sau khi phê duyệt thì không tiếp nhận bất kỳ thay đổi nào
  3. Phát hành chức năng chạy được theo từng vòng lặp ngắn, phản ánh đánh giá của người dùng vào vòng tiếp theo
  4. Chốt đặc tả của toàn bộ chức năng rồi phát triển gộp một lần, chỉ cho người dùng xem khi đã hoàn thành
Đáp ánC. Phát hành chức năng chạy được theo từng vòng lặp ngắn, phản ánh đánh giá của người dùng vào vòng tiếp theo

Với dự án mà yêu cầu dễ thay đổi, cách làm kiểu Agile — mỗi vòng lặp đưa ra sản phẩm chạy được và phản ánh đánh giá vào vòng sau — là phù hợp. Phương án 1 và 3 là kiểu thác nước, yếu trước thay đổi; phương án 4 khiến việc phát hiện lỗi bị muộn và phải làm lại nhiều, nên không hợp với tình huống này.

Câu 22 | RAD

Cách giải thích nào về RAD (Rapid Application Development) là thích hợp?

  1. Cách nghĩ trong đó bộ phận phát triển và bộ phận vận hành hợp tác chặt chẽ, hướng tới cải tiến liên tục bằng tự động hóa
  2. Kỹ thuật tận dụng đội ít người và công cụ hỗ trợ phát triển để phát triển hệ thống trong thời gian ngắn
  3. Kỹ thuật kết hợp nhiều dịch vụ được công khai để tạo ra dịch vụ mới
  4. Kỹ thuật phân tích chương trình hiện có để rút ra đặc tả và thông tin thiết kế của nó
Đáp ánB. Kỹ thuật tận dụng đội ít người và công cụ hỗ trợ phát triển để phát triển hệ thống trong thời gian ngắn

RAD là kỹ thuật tận dụng đội ít người và công cụ hỗ trợ phát triển để rút ngắn thời gian phát triển. Phương án 1 là reverse engineering, phương án 2 là DevOps, phương án 4 là mashup; đều là các thuật ngữ khác với RAD.

Câu 23 | Lập trình đôi

Cách giải thích nào về lập trình đôi (pair programming) là thích hợp?

  1. Hai đội phát triển riêng rẽ cùng một chức năng, sau khi hoàn thành thì chọn bản làm tốt hơn
  2. Hai người một nhóm dùng một máy, một người viết mã còn người kia vừa kiểm tra vừa góp ý trong khi phát triển
  3. Cho hai người dùng thao tác cùng một màn hình để so sánh mức độ dễ dùng
  4. Thực hiện đồng thời hai loại kiểm thử để tìm ra lỗi nhanh hơn
Đáp ánB. Hai người một nhóm dùng một máy, một người viết mã còn người kia vừa kiểm tra vừa góp ý trong khi phát triển

Lập trình đôi là thực hành tiêu biểu của XP: hai người cùng viết một đoạn mã và review ngay tại chỗ để nâng cao chất lượng. Phương án 1 là cách phát triển kiểu cạnh tranh, phương án 2 là cách tiến hành kiểm thử, phương án 3 là đánh giá usability; đều không đúng.

Câu 24 | TDD

Cách tiến hành nào của phát triển hướng kiểm thử (TDD) là thích hợp?

  1. Viết mã kiểm thử trước, rồi cài đặt chương trình sao cho vượt qua được các kiểm thử đó
  2. Chỉ lập kế hoạch kiểm thử sau khi toàn bộ việc cài đặt đã hoàn tất
  3. Giao kiểm thử hoàn toàn cho đơn vị chuyên môn bên ngoài, người phát triển không tự kiểm thử
  4. Chỉ viết kiểm thử sau khi nhận được báo cáo sự cố từ người dùng sau khi vận hành chính thức
Đáp ánA. Viết mã kiểm thử trước, rồi cài đặt chương trình sao cho vượt qua được các kiểm thử đó

Phát triển hướng kiểm thử là kỹ thuật viết kiểm thử trước, cài đặt ở mức tối thiểu để vượt qua kiểm thử rồi lặp lại việc cải tiến. Phương án 2, 3, 4 đều là cách làm đưa kiểm thử ra sau việc cài đặt hoặc vận hành, trái với tư tưởng của TDD rằng kiểm thử dẫn dắt sự phát triển.

Câu 25 | Refactoring

Cách giải thích nào về refactoring là thích hợp?

  1. Chỉnh lý cấu trúc bên trong của chương trình cho dễ hiểu mà không thay đổi hành vi nhìn từ bên ngoài
  2. Di dời hệ thống đang vận hành sang trung tâm dữ liệu khác
  3. Bổ sung chức năng mới vào chương trình hiện có theo nguyện vọng gửi đến từ người dùng
  4. Tăng số lượng máy chủ hay bộ nhớ để nâng tốc độ xử lý
Đáp ánA. Chỉnh lý cấu trúc bên trong của chương trình cho dễ hiểu mà không thay đổi hành vi nhìn từ bên ngoài

Refactoring là công việc chỉnh lý cấu trúc bên trong của mã trong khi vẫn giữ nguyên hành vi nhìn từ bên ngoài, giúp việc sửa đổi về sau dễ dàng hơn. Phương án 1 là thêm chức năng, phương án 3 là tăng cường phần cứng, phương án 4 là di dời cơ sở vật chất; đều không phải là cải thiện cấu trúc bên trong.

Câu 26 | Product owner

Trong Scrum, vai trò của product owner là gì?

  1. Chịu trách nhiệm về nội dung và thứ tự ưu tiên của product backlog, tối đa hóa giá trị của sản phẩm
  2. Đánh giá nhân sự các thành viên trong đội và phân công công việc cho từng người
  3. Ghi chép tiến độ hằng ngày và báo cáo việc vượt ngân sách cho ban lãnh đạo
  4. Hỗ trợ để các quy tắc của Scrum được tuân thủ đúng, loại bỏ những vấn đề cản trở việc phát triển
Đáp ánA. Chịu trách nhiệm về nội dung và thứ tự ưu tiên của product backlog, tối đa hóa giá trị của sản phẩm

Product owner là vai trò chịu trách nhiệm về thứ tự ưu tiên của việc "làm cái gì". Phương án 2 là vai trò của scrum master; phương án 1 không được định nghĩa trong Scrum vì việc phân chia công việc do đội phát triển tự quyết định; phương án 4 cũng không phải vai trò được định nghĩa.

Câu 27 | Scrum master

Trong Scrum, vai trò nào của scrum master là thích hợp?

  1. Hỗ trợ để Scrum được thực hành đúng, loại bỏ những vấn đề cản trở đội
  2. Đàm phán giá cả với khách hàng và quyết định các điều kiện hợp đồng
  3. Chỉ thị công việc cho từng người trong đội phát triển, quản lý bằng cách khiển trách những thành viên chậm trễ
  4. Quyết định thứ tự ưu tiên của yêu cầu và chốt các chức năng sẽ phát hành
Đáp ánA. Hỗ trợ để Scrum được thực hành đúng, loại bỏ những vấn đề cản trở đội

Scrum master là vai trò hỗ trợ để đội thực hành được Scrum và loại bỏ những trở ngại. Scrum master không chỉ huy mệnh lệnh như phương án 1; phương án 2 là việc của bộ phận kinh doanh, quản lý; phương án 3 là vai trò của product owner; đều không phải chức trách của scrum master.

Câu 28 | Thuật ngữ Scrum

Trong Scrum, cách giải thích nào về daily scrum là thích hợp?

  1. Đội phát triển họp ngắn mỗi ngày, chia sẻ tiến độ và vướng mắc, xác nhận công việc trong ngày
  2. Vào cuối sprint, cho các bên liên quan xem sản phẩm hoàn thành trong vòng đó để nhận đánh giá và ý kiến
  3. Sắp xếp các yêu cầu muốn thực hiện thành danh sách có thứ tự ưu tiên
  4. Nhìn lại cách làm việc của đội và quyết định biện pháp cải tiến cho lần tới
Đáp ánA. Đội phát triển họp ngắn mỗi ngày, chia sẻ tiến độ và vướng mắc, xác nhận công việc trong ngày

Daily scrum là cuộc họp ngắn khoảng 15 phút mỗi ngày, nhằm chia sẻ tiến độ và phát hiện sớm những trở ngại. Phương án 2 là sprint review, phương án 3 là product backlog, phương án 4 là sprint retrospective; thời điểm thực hiện và mục đích đều khác.

Câu 29 | CI/CD

Cách giải thích nào về CI/CD (tích hợp liên tục / chuyển giao liên tục) là thích hợp?

  1. Người vận hành sao chép tệp thủ công lên môi trường chính thức, phản ánh từng thay đổi một
  2. Gộp toàn bộ thay đổi để tích hợp một lần ngay trước khi phát hành, và đến thời điểm đó mới kiểm thử gộp duy nhất một lần
  3. Dừng việc phát triển mới, chỉ tiến hành chỉnh trang tài liệu đặc tả của hệ thống hiện có
  4. Tích hợp thường xuyên mã nguồn đã thay đổi, tự động chạy build và kiểm thử, tự động hóa cả luồng công việc cho đến khi phát hành
Đáp ánD. Tích hợp thường xuyên mã nguồn đã thay đổi, tự động chạy build và kiểm thử, tự động hóa cả luồng công việc cho đến khi phát hành

CI/CD là cơ chế tích hợp thường xuyên các thay đổi nhỏ, tự động hóa build, kiểm thử và phát hành để nâng cao chất lượng lẫn tốc độ cung cấp. Phương án 1 là kiểu tích hợp gộp truyền thống khiến việc phát hiện vấn đề bị chậm, phương án 3 không được tự động hóa, phương án 4 khiến hoạt động phát triển không tiến triển, nên đều sai.

Câu 30 | Reverse engineering

Hoạt động nào tương ứng với reverse engineering?

  1. Dùng môi trường phát triển cho phép tạo ứng dụng chỉ bằng cách sắp đặt các thành phần trên màn hình
  2. Viết chương trình dựa trên tài liệu thiết kế
  3. Kết hợp nhiều dịch vụ được công khai để tạo ra dịch vụ mới
  4. Phân tích chương trình hiện có để rút ra đặc tả và thông tin thiết kế của nó
Đáp ánD. Phân tích chương trình hiện có để rút ra đặc tả và thông tin thiết kế của nó

Reverse engineering là việc phân tích phần mềm hiện có để lấy ra đặc tả và thông tin thiết kế. Phương án 1 là phát triển thông thường theo chiều thuận từ thiết kế đến cài đặt, phương án 2 là mashup, phương án 4 là mô tả về phát triển no-code/low-code.

Luyện tập: giải các câu hỏi trên trang này

Đây là công cụ luyện tập với câu hỏi ngẫu nhiên (hoạt động khi JavaScript được bật). Bạn vẫn có thể đọc toàn bộ câu hỏi và phần giải thích ở trên.

* Lời giải là thông tin phục vụ việc học. Phạm vi ra đề và chế độ thi có thể thay đổi theo từng năm, vì vậy hãy luôn kiểm tra thông báo chính thức của đơn vị tổ chức thi.

Trang này là bản dịch từ nguyên bản tiếng Nhật. Nếu nội dung bản dịch và nguyên bản khác nhau, bản tiếng Nhật sẽ được ưu tiên. Xem nguyên bản tiếng Nhật