소프트웨어 개발과 프로젝트 관리

올바르게 동작하는 것으로 알려진 펌웨어 버전 뒤에 1,000개의 커밋이 있고, 최신 커밋에서는 결함이 일어난다. 결함은 어느 한 커밋에서 들어왔고, 그 이후의 커밋에서는 모두 일어난다고 한다. git bisect처럼 이진 탐색으로 원인 커밋을 특정할 때, 빌드하여 테스트하는 횟수의 최댓값은?

  1. A3회
  2. B10회
  3. C500회
정답과 해설 보기

정답: B. 10회

원인의 후보는 1,000개 커밋 중 어느 하나이며, 가운데 커밋을 시험할 때마다 후보를 절반으로 좁힐 수 있습니다. 2¹⁰ = 1,024 ≥ 1,000이므로 최대 10회의 테스트로 하나로 특정할 수 있습니다. 오래된 쪽부터 하나씩 시험하면 최악 999회, 평균으로도 약 500회가 걸리므로, 이진 탐색의 효과는 큽니다. 이 방법을 쓰려면 어느 커밋에서든 빌드와 테스트를 할 수 있도록, 깨진 상태의 커밋을 공유 브랜치에 넣지 않는 것이 중요합니다.

이 분야 연습하기 분야로 돌아가기

소프트웨어 개발과 프로젝트 관리의 다른 문제

  1. 프로젝트의 산출물과 작업을 계층적으로 분해한 WBS에서, 가장 아래 계층에 있으며 소요 기간이나 비용을 추정하고 담당자를 할당하는 단위는?
  2. 결합점을 ①~⑥으로 하고 작업을 '이름: 시작점→끝점, 소요 일수'로 나타내면, A: ①→②, 6일, B: ①→③, 4일, C: ②→④, 4일, D: ③→⑤, 4일, E: ④→⑥, 2일, F: ⑤→⑥, 3일, 더미 작업: ②→③(소요 일수 0)이 되는 화살표 다이어그램이 있다. 프로젝트 전체의 최단 소요 일수는?
  3. 작업과 소요 일수, 선행 작업이 A: 4일(선행 작업 없음), B: 2일(없음), C: 3일(A), D: 2일(B), E: 5일(C), F: 4일(C와 D), G: 2일(F)인 프로젝트가 있다. 다른 작업은 가능한 한 일찍 시작할 때, 작업 B의 시작을 늦춰도 전체 소요 일수가 늘어나지 않는 최대 일수는?
  4. 작업과 소요 일수, 선행 작업이 A: 6일(없음), B: 4일(없음), C: 4일(A), D: 4일(A와 B), E: 2일(C), F: 3일(D)이고, 전체 소요 일수가 13일인 프로젝트가 있다. 각 작업을 1일 단축하는 데 드는 추가 비용은 A가 30만 엔, B가 5만 엔, C가 10만 엔, D가 20만 엔, E가 8만 엔, F가 25만 엔이다. 전체 소요 일수를 1일 단축하는 데 추가 비용이 가장 적은 방법은?
  5. 어떤 작업의 소요 일수를 3점 추정으로 추정했더니 낙관치가 4일, 최빈치가 7일, 비관치가 16일이었다. PERT 식으로 구한 소요 일수의 기댓값은?