정보시스템 감리 기출해설/소프트웨어공학 해설

(제 23회) 소프트웨어 공학 / (34)~(35) 해설

아이티신비 2024. 9. 16. 09:00

34. 다음은 은행에서 일정 금액(amount)을 지급 (withdraw)하는 코드의 일부분을 리팩토링 한 것이다. 적용 후 코드를 생성하기 위해 사용된 리팩토링 기법으로 가장 적절한 것은? (단, 코드 실행상의 문제는 고려하지 않음)

 

 
적용전 코드
int withdraw(int amount) {
if (amount > _balence)
return 1;
else {
_balence -= amount;
return 0;
}
 
적용후 코드
void withdraw(int amount) throws B_exception {
if (amount > _balence) throw new
B_exception();
_balence -= amount;
}

① replace error code with exception

② replace exception with test

③ replace parameter with exception

④ inline method

 

▣ 리팩토링 : Replace error code with exception

  • 상황 : 에러 발생 사실을 에러 코드로 표현함
  • 문제 : 정상처리와 에러 처리가 혼재함, 에러 코드 전파 처리가 넓은 범위에 있음
  • 해법 : 에러 코드 대신에 예외를 사용함

 

정답 : ①

 

 

35. 다음은 Git에 대한 설명이다. Git에 대한 옳은 설명만으로 가장 적절하게 묶은 것은?

 
가. 브랜치(branch) : 커밋(commit)을 가리키는 포인터
나. 마스터(master) : 최초로 커밋을 수행할 때 생성되며, 커밋을 수행할 때 마다 가장 최근의 브랜치를 가리킨다.
다. 토픽(topic) 브랜치에서 수행한 작업은 커밋을 통해 자동으로 마스터 브랜치에 병합된다.
라. 현재 작업중인 브랜치에서 마스터 브랜치로 이동하기 위해서는 git checkout master 명령을 사용한다.
마. 브랜치에 있는 개개의 커밋을 수행하면, 단계적으로 브랜치 병합이 이루어진다.
바. 작업중에 새로운 브랜치로 이동을 할 때, 작업 내용을 임시 저장하기 위하여 git stash 명령을 사용한다.

① 가, 나, 다 ② 가, 나, 라

③ 나, 다, 마 ④ 다, 마, 바

 

▣ 해설

 
형상관리 용어
설명
Repository (Depot)
파일, 디렉토리 버전, 브랜치 등이 위차하고 있는 단일 저장소 소스 관리 시스템의 하드 디스크에 위치 한다.
Development
Workspace
프로젝트에서 받은 파일이나 디렉토리를 받은 개인 복사판. 주로 개발자 PC의 하드 드라이브에 위치한다.
Codeline
'브랜치' 라고 부라는 하나의 파일 버전 세트
Baseline
시스템을 구성하는 컴포넌트 버전들의 모음
Mainline
Baseline 들의 변화
Change Task
변경에 관련된 하나의 작업 단위, 파일 하나 혹은 여러 파일의 변경 작업 단위
Workspace Update
(checkout, pull)
레포지터리의 변경된 결과물을 자신의 작업 저장소로 옮기는 행위
Check-in (Push)
개발자가 변경작업을 완료하고, 변경사항을 저장소로 반납하는 행위
Commit
자신의 직업 저장소에 있는 변경 사항을 레포지터리로 옮기는 행위
Branch
주요 코드라인(Trunk)에서 분리하여 독립된 파일 버전 세트로서 병렬적으로 진행하다. Commit 을 가르키는 포인터
Conflict
여러 개발자에 의해 변경 작업이 겹치거나, 간섭되어 공전 할 수 없는 상태
Merging
동일한 파일의 서로 다른 작업 복사본에 대한 여러 변경 사항을 소스 저장소에 통합
Master
처음 커밋하면 이 master 브랜치가 생성된 커밋을 가리킨다. 이후 커밋을 만드면 master 브랜치는 자동으로 가장 마지막 커밋을 가리킨다.
Git stash
아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어

정답 : ②

 




 

공감과 댓글은 아이티신비에게 큰 힘이 됩니다.

블로그 글이 유용하다면 블로그를 구독해주세요.♥