본문 바로가기
CS/소프트웨어 공학 에센셜

프로그래밍과 코드 검사

by k-mozzi 2021. 6. 24.
반응형
Preface

 

이번 장에선 코드 검사에 대해 공부했으며, 다음 장에선 테스트(시험)에 관한 내용이 나온다.

 

언뜻 봐도 비슷한 코드 검사와 시험을 굳이 분리하여 시행하는 이유는 무엇일까?

 

코드 검사에선 단지 오류를 발견할 뿐, 해결 방법을 찾는 과정은 생락한다고 한다. 또한, 코드 검사에선 발견된 오류를 개인의 업무 수행 능력 평가에 반영하지 않지만, 시험의 결과는 그 반대라고 한다.

 

아직 시험에 관한 내용을 학습하지 않아 단정지을 순 없지만, 지금까지의 내용을 바탕으로 고민한 결과 두 단계를 별도로 시행하는 이유는 '더욱 향상된 품질의 소프트웨어 개발 및 개인의 업무 수행 능력 향상 촉진'일 것이라 생각한다.


1. 프로그래밍

 

- 설계 문서에 나타난 결과를 구체화시켜 프로그래밍 언어로 바꾸는 것이다.

 

- 프로그래밍 언어 종류

① 1세대 : 기계어, 어셈블리 언어

② 2세대 : 최초의 고급 언어인 FORTRAN, COBOL 등

③ 3세대 : C, C++

④ 4세대 : 수행 과정보다 결과물 선언을 중시하는 비절차 언어들 (SQL, PROLOG 등)

 

- 프로그래밍 가이드라인 (세부 가이드라인은 p.414~417)


1. 코드의 문서화 : 프로그램이 무엇을 수행하며, 어떻게 동작하는지 독자가 이해할 수 있게 작성한 기술서

① 내부 문서화 : 코드와 직접적으러 관련된 기술서

② 외부 문서화 : 그 외의 모든 것

③ 주석문(comments) : 프로그램 내부에 포함되는 문서 형태

 

- 주석문에 포함되어야 할 내용

① 모듈의 목적을 기술하는 목적문

② 인터페이스에 대한 기술

③ 중요 변수들과 이들의 사용 한계 및 제한 등을 포함하는 중요 정보

④ 개발 역사

 

2. 코드의 간결성

 

3. 코드의 명확성



2. 코드 검사

 

- 소프트웨어의 오류를 발견하여 제거함으로써 높은 품질의 소프트웨어를 얻기 위한 활동

→ 프로그램을 만든 이후이자 시험 이전에 수행

 

- 코드 검사의 목표

① 오류 발견

② 지식 공유

③ 개발 공감대 형성

④ 프로그램 스타일 표준화

 

- 코드 검사는 공식기술검토회 중 하나이다.

→ 코드 자체에 대한 기술적인 검토만 이루어짐

 

- 코드 검사는 오류를 지적할 뿐, 해결방법을 도모하는 것이 아니다.

 

- 검사 팀 구성원 (4~7명이 적당)

① 저자 : 코드를 만든 사람

② 사회자 : 코드 검사를 진행하는 의장

③ 낭독자 : 코드를 한 줄·절씩 읽어 나가며 해석

④ 기록자 : 검토 중 오류를 기록

⑤ 검사자 : 사전 검사 및 검토회 진행 도중 검사

 

- 오류 목록

① 코드 줄 번호

② 오류에 대한 기술

③ 오류 유형과 종류

④ 오류의 수

 

- 코드의 오류 유형

① 데이터 오류(DA) : 데이터를 다루는 데 발생하는 오류로 데이터 유형 정의, 변수 선언, 매개변수에서 나타남

② 문서 오류(DC) : 프로그램 구성 요소인 선언 부분, 서브 루틴, 모듈에 대한 부적합한 주석에서 나타남

③ 기능 오류(FN) : 서브루틴이나 블록이 잘못된 것을 수행하는 것

④ 논리 오류(LO) : 서브루틴이나 블록의 수행 방법이 잘못된 것

⑤ 성능 오류(PF) : 효율성(성능)이 부족한 것

⑥ 표준 오류(ST) : 과정이나 표현이 표준을 따르지 않은 것

⑦ 기타 오류(OT) : 문법적 오류, 개인의 개성이 포함된 경우 등 애매모호한 것

 

- 오류에 대한 종류(class)

① 실종(M : Missing)

② 실수(W : Wrong)

③ 불필요(E : Extra)

 

[코드 검사 오류 기록 일지 예시]

 

- 코드 검사 사후 검토 : 저자가 코드 검사에서 나타난 오류를 수정하여 사회자에게 검사 받는 것

 

- 코드 검사 결과를 개인의 업무 수행 능력 평가로 사용하는 것은 옳지 않다.

cf. 시험의 결과는 업무 능력 평가에 사용됨

 

 

 

 

 

참고 문헌 : 윤청, 소프트웨어 공학 에센셜(생능출판), 2019, p.412~426.

728x90
반응형

'CS > 소프트웨어 공학 에센셜' 카테고리의 다른 글

유지보수  (0) 2021.06.27
소프트웨어 테스트  (0) 2021.06.26
사용자 인터페이스 설계와 상세 설계  (0) 2021.06.24
디자인 패턴  (0) 2021.06.22
자료 흐름 중심 설계와 데이터베이스 설계  (0) 2021.06.21

댓글