소프트웨어 개발과 프로젝트 관리
폭포수·V 모델·애자일(스크럼) 등의 개발 프로세스, 요구사항과 설계(UML, 모듈의 강도와 결합도), 테스트 기법(동치 분할, 경계값 분석, 구문 커버리지와 분기 커버리지), Git과 리뷰, WBS·임계 경로·EVM·PERT에 의한 프로젝트 관리, SLA와 문제 관리를 객관식 문제로 학습합니다.
—내 정답률
0 / 40푼 문제 수
소프트웨어 개발과 프로젝트 관리: 핵심 정리
소프트웨어는 작성한 코드의 양보다도 무엇을 어떤 순서로 만들고, 어떻게 확인하고, 일정과 비용을 어떻게 관리하는지에 따라 품질과 납기가 크게 달라집니다. 펌웨어나 드라이버, EDA 스크립트나 검증 환경 등 반도체나 하드웨어에 가까운 개발에서도 이 진행 방식의 좋고 나쁨이 제품의 완성도를 좌우합니다.
폭포수 모델과 V 모델, 스크럼이나 테스트 주도 개발, CI/CD 같은 개발 진행 방식, 비기능 요구사항이나 UML, 모듈의 강도와 결합도 등 설계의 사고방식, 동치 분할·경계값 분석·분기 커버리지 등의 테스트 기법을 학습합니다. 나아가 화살표 다이어그램의 임계 경로, 3점 추정, 획득가치관리의 계산, 리스크 대응, SLA나 문제 관리 같은 프로젝트 관리·서비스 관리의 기본을 계산 문제를 중심으로 다룹니다. IT 자격시험의 소프트웨어 개발이나 관리 분야 학습에도 도움이 됩니다.
소프트웨어 개발과 프로젝트 관리 전체 문제 (40)
- 소프트웨어 개발의 폭포수 모델의 특징으로 적절한 것은?
- 소프트웨어 개발의 V 모델에서 요구사항 정의 공정에 대응하며, 그 공정에서 정한 내용을 만족하는지 확인하는 테스트는?
- 스크럼에서 제품 백로그 항목의 내용과 순서(우선순위)에 책임을 지고, 제품의 가치를 최대화하는 역할은?
- 스크럼에서 스프린트가 끝날 때 완성된 인크리먼트(동작하는 산출물)를 이해관계자에게 보여 주고 피드백을 받아, 앞으로의 방침이나 제품 백로그를 재검토하는 이벤트는?
- 익스트림 프로그래밍(XP) 등의 애자일 개발에서 수행되는, 프로그램의 외부에서 본 동작을 바꾸지 않고 내부 구조를 알기 쉽고 변경하기 쉬운 형태로 정리하는 작업은?
- 테스트 주도 개발(TDD)의 진행 방법으로 적절한 것은?
- 지속적 통합(CI)의 설명으로 적절한 것은?
- 지속적 전달과 지속적 배포의 차이에 대한 설명으로 적절한 것은?
- 어떤 업무 시스템의 요구사항 중 비기능 요구사항에 해당하는 것은?
- UML에서 전기밥솥의 제어 소프트웨어처럼 이벤트(버튼 누름, 타이머 만료, 온도 도달 등)에 의해 객체의 상태가 어떻게 바뀌는지를 나타내는 데 적합한 다이어그램은?
- UML에서 여러 객체 사이에서 주고받는 메시지(호출이나 응답)를 시간 순서대로 위에서 아래로 늘어놓아 나타내는 다이어그램은?
- 모듈의 독립성을 평가하는 모듈 강도(응집도) 중 가장 강도가 높고 바람직하다고 여겨지는 것은?
- 모듈 간의 결합도 중 가장 결합도가 약하고 모듈의 독립성이 높은 것은?
- GoF의 디자인 패턴 중, 어떤 객체의 상태가 바뀌었을 때 그에 의존하는 여러 객체에 자동으로 통지되도록 하는 패턴은?
- 펌웨어의 소스 코드에 정적 분석 도구를 사용할 때, 프로그램을 실행하지 않고 발견하기 쉬운 문제로 가장 적절한 것은?
- 블랙박스 테스트의 설명으로 적절한 것은?
- 정수만 입력되는 칸에서 1 이상 100 이하의 값을 받아들이고, 그 밖의 값은 오류로 처리한다. 동치 분할로 입력을 나누었을 때 동치 클래스의 수(유효 동치 클래스와 무효 동치 클래스의 합계)는?
- 입장료를 나이(0 이상의 정수)로 정하는 프로그램이 있으며, 0~17세는 어린이 요금, 18~64세는 일반 요금, 65세 이상은 시니어 요금으로 한다. 요금 구분이 바뀌는 경계를 확인하기 위해 경계값 분석으로 고르는 테스트 값의 조합으로 가장 적절한 것은?
- 사양은 '온도가 85 ℃ 이상이면 경고를 낸다'이지만, 펌웨어에는 잘못하여 'if (t > 85)'라고 쓰여 있었다. 온도 t는 정수로 한다. 다음 테스트 값 중 이 오류를 발견할 수 있는 것은?
- temp와 err의 값은 서로 독립적으로 정할 수 있다고 한다. 다음 처리 'if (temp > 80) { fan = HIGH; } else { fan = LOW; } if (err) { log(); }'에서 구문 커버리지(모든 명령문을 적어도 1회 실행한다)를 만족하는 데 필요한 최소 테스트 케이스의 수는?
- a, b, c의 참·거짓은 서로 독립적으로 정할 수 있다고 한다. 다음 처리 'if (a) { S1; } if (b) { S2; } if (c) { S3; }'에서 분기 커버리지(모든 판정의 참과 거짓을 적어도 1회씩 실행한다)를 만족하는 데 필요한 최소 테스트 케이스의 수는?
- 판정 'A 그리고 B'(A와 B는 서로 독립적으로 참·거짓을 정할 수 있는 조건)에 대해 테스트 케이스 (A = 참, B = 거짓)과 (A = 거짓, B = 참)의 2개를 실행했다. 커버리지 기준에 대해 올바른 것은?
- 상향식 테스트에서 아직 완성되지 않은 상위 모듈 대신, 테스트 대상인 하위 모듈을 호출하여 테스트 데이터를 넘기고 결과를 받기 위해 만드는 것은?
- 테스트 공정에서 테스트 시간(또는 테스트 케이스의 소화 수)을 가로축에, 발견된 결함의 누적 건수를 세로축에 잡은 신뢰도 성장 곡선을 그렸다. 곡선이 아직 오른쪽 위로 올라가는 채이고, 포화하는(평평해지는) 모습이 보이지 않을 때의 판단으로 가장 적절한 것은?
- 규모가 25 k스텝(25,000행)인 펌웨어의 통합 테스트에서 결함이 30건 발견되었다. 조직의 과거 실적으로부터 이 공정에서 발견되는 결함의 기준은 1 k스텝당 2~4건으로 되어 있다. 이 결과의 평가로 가장 적절한 것은?
- Git에서 두 개발자가 같은 파일의 같은 행을 각각 다른 브랜치에서 고쳐 쓰고, 한쪽 브랜치를 다른 쪽에 병합했다. 이때 일어나는 일로 적절한 것은?
- 설계서나 소스 코드의 리뷰 방법 중, 모더레이터(진행자)가 주도하고 참가자의 역할을 정하며, 체크리스트 등을 사용해 공식적으로 수행하고, 발견한 결함을 기록하여 수정까지 확인하는 것은?
- 올바르게 동작하는 것으로 알려진 펌웨어 버전 뒤에 1,000개의 커밋이 있고, 최신 커밋에서는 결함이 일어난다. 결함은 어느 한 커밋에서 들어왔고, 그 이후의 커밋에서는 모두 일어난다고 한다. git bisect처럼 이진 탐색으로 원인 커밋을 특정할 때, 빌드하여 테스트하는 횟수의 최댓값은?
- 프로젝트의 산출물과 작업을 계층적으로 분해한 WBS에서, 가장 아래 계층에 있으며 소요 기간이나 비용을 추정하고 담당자를 할당하는 단위는?
- 결합점을 ①~⑥으로 하고 작업을 '이름: 시작점→끝점, 소요 일수'로 나타내면, A: ①→②, 6일, B: ①→③, 4일, C: ②→④, 4일, D: ③→⑤, 4일, E: ④→⑥, 2일, F: ⑤→⑥, 3일, 더미 작업: ②→③(소요 일수 0)이 되는 화살표 다이어그램이 있다. 프로젝트 전체의 최단 소요 일수는?
- 작업과 소요 일수, 선행 작업이 A: 4일(선행 작업 없음), B: 2일(없음), C: 3일(A), D: 2일(B), E: 5일(C), F: 4일(C와 D), G: 2일(F)인 프로젝트가 있다. 다른 작업은 가능한 한 일찍 시작할 때, 작업 B의 시작을 늦춰도 전체 소요 일수가 늘어나지 않는 최대 일수는?
- 작업과 소요 일수, 선행 작업이 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일 단축하는 데 추가 비용이 가장 적은 방법은?
- 어떤 작업의 소요 일수를 3점 추정으로 추정했더니 낙관치가 4일, 최빈치가 7일, 비관치가 16일이었다. PERT 식으로 구한 소요 일수의 기댓값은?
- 완료 시점 예산(BAC)이 2,000만 엔인 프로젝트에서, 어느 시점의 계획 가치(PV)가 800만 엔, 획득 가치(EV)가 600만 엔, 실제 비용(AC)이 750만 엔이었다. 이 시점의 프로젝트 상황으로 올바른 것은?
- 완료 시점 예산(BAC)이 1,200만 엔인 프로젝트에서, 현시점의 계획 가치(PV)가 600만 엔, 획득 가치(EV)가 480만 엔, 실제 비용(AC)이 600만 엔이다. 앞으로도 현재의 원가 효율이 계속된다고 할 때, 완료 시점 산정치(EAC)는?
- 늦어지고 있는 소프트웨어 개발 프로젝트에서 개발자를 5명에서 10명으로 늘렸다. 두 사람 사이의 의사소통 경로 수(두 사람 쌍의 수)는 늘리기 전의 몇 배가 되는가?
- 프로젝트의 리스크 대응 중, 발생했을 때의 손실에 대비해 보험에 들거나 계약으로 그 작업을 전문 회사에 맡기거나 하여 영향을 제3자에게 옮기는 것은?
- 소프트웨어의 규모 추정에 쓰는 기능 점수(Function Point) 기법의 설명으로 적절한 것은?
- 어떤 서비스의 SLA에서 월간 가동률을 99.95% 이상으로 정하고 있다. 1개월을 30일로 하고, 계획 정지도 포함하여 계산한다. 이번 달에는 이미 장애로 합계 15분 정지했다. 이번 달에 SLA를 지키기 위해 남은 기간에 허용되는 정지 시간은?
- IT 서비스 관리에서 반복해서 일어나는 장애에 대해 근본 원인을 조사하고, 항구적인 대책으로 재발을 막는 것을 주된 목적으로 하는 프로세스는?
컴퓨터 시스템의 다른 분야
- 컴퓨터 산술 IEEE 754, 고정소수점, 반올림 오차
- 확률·통계와 대기행렬 경우의 수·확률 분포·추정과 검정·M/M/1
- ISA와 어셈블리 RISC-V, 주소 지정 방식, 호출 규약
- 컴파일러 구문 분석, SSA, 최적화, 레지스터 할당
- 링커, 로더, 실행 파일 ELF, 심벌 해석, 재배치, 동적 링킹
- OS와 하드웨어 인터럽트, 시스템 콜, 페이지 폴트
- Linux와 커맨드 라인 기초 셸·권한·파이프·스크립트
- 메모리 계층 구조 캐시, 교체 정책, 세 가지 미스
- 멀티코어와 동기화 MESI, 원자적 명령어, 메모리 배리어
- GPU 프로그래밍 워프, 공유 메모리, 병합 접근, 점유율
- AI 하드웨어·소프트웨어 스택 추론과 학습, 양자화, 루프라인 모델
- 머신러닝의 기초 학습의 종류·평가 지표·신경망
- 임베디드 시스템과 펌웨어 GPIO, UART/SPI/I2C, RTOS
- HDL과 검증 Verilog, 래치, 상태 머신, 테스트벤치
- I/O 인터페이스와 버스 PCIe, USB, SerDes, CXL
- 네트워크 기초 TCP/IP, 서브넷 계산, DNS, TLS
- 웹 기술 기초 HTTP·Cookie·REST·CORS·캐시
- 무선 통신의 기초 변조·OFDM·MIMO·RF 회로
- 정보 보안 기초 암호, 인증, 웹 공격과 대책
- 데이터베이스 기초 SQL, 정규화, 트랜잭션
- 자료 구조와 알고리즘 시간 복잡도, 탐색, 정렬, 그래프
- 프로그래밍의 기초(의사 코드 트레이스) 의사 코드, 트레이스, 배열, 재귀
- C 언어 기초 포인터·메모리·미정의 동작
- 경영 전략과 회계의 기초(전략 분야) 회계, 손익분기점, 경영 전략, 마케팅
- 서비스 관리와 시스템 감사 SLA·인시던트와 문제·감사와 내부 통제
- 시스템 구성과 신뢰성 설계 이중화·RAID·백업·클라우드
- 성능 분석 암달의 법칙, CPI, 병목
- 하드웨어 보안 사이드 채널, 시큐어 부트, TEE, PUF
- 전력 관리 DVFS, 파워 게이팅, 슬립 상태