본문 바로가기

전공/소프트웨어공학

소프트웨어 감사(inspections)

소프트웨어 감사(inspections)

- 모순(anmalies)과 결함을 발견할 목적으로 소스 표현을 검사

- 시스템 실행 필요 X, 구현 전에 사용 가능

- 시스템의 어떠한 표현(requirments, design, test data 등)에도 적용 가능

- 오류 발견에 매우 효과적

 

inspection and testing

- 서로 대립하는게 아닌 보완적인 관계

- 양쪽 다 V&V프로세스 중에 사용됨

- 감사는 명세서와 일치하는지 알아볼 수 있으나, 고객의 실제 요구사항에 일치하는지, 성능과 사용성과 같은 비기능적 요구사항을 검사하는 등은 할 수 없음

 

Program inspection

- 문서 검토를 위한 정형화된 접근법

- 결함 수정이 아닌 검출에 중점을 둠

- 결함들은 논리적 오류, 잘못된 상황, 표준에 맞지 않는 것을 나타내는 코드 내의 모순 일 수 있음

 

inspection 선제조건

- 정확한 명세서

- 팀원이 조직의 표준에 익숙해야함

- 문법적으로 옳은 코드

- 오류 검사 항목 준비

- 관리자들은 감사가 비용 증가를 초래한다는 것을 수용

- 감사 결과를 직원 평가에 사용하지 않아야함

 

inspection 과정

시스템 개요 감사팀에 제출 -> 코드 문서 배포 -> 진행/오류 기록-> 수정안 제작 -> 재감사 필요 여부 판단

 

inspection 팀구성

- 최소 4명

- 감사받는 코드의 작성자(Author)

- 오류, 생략, 불일치 등을 찾아내는 감사자(Inspector)

- 코드를 팀에게 읽어주는 낭독자(Reader)

- 회의 진행 및 오류를 기록하는 조정자(Moderator)

 

Automated static analysis

- 정적 분석기는 소스 문서 처리를 위한 소프트웨어

- 프로그램 문서 파싱, 오류가 발생할 가능성이 있는 부분들을 찾아 V&V팀의 주의를 위해 전달

- 감사 보조 도구로 매우 효과적. 단, 그것을 대치할 수는 없음.

 

분석 단계

- Control flow 분석 : 여러 개의 exit 또는 entry지점을 갖는 loop들에 대한 조사, 도달하지 않는 코드를 찾음 등

- Data use 분석 : 초기화되지 않은 변수, 새 값을 할당 받지 않고 두 번 쓰이는 변수, 선언됐지만 사용 안하는 변수 등

- Interface 분석 : 프로시저 선언 및 사용 일관성 검사

- Information flow 분석 : 출력 변수의 종속성 식별. 모순 자체를 찾아내는 것이 아닌 감사or검토를 위해 정보를 알려줌

- Path 분석 : 프로그램에서의 경로를 식별하고 그 경로들에 있는 문장들을 찾아냄. 검토 프로세스에서 유용하게 사용됨

- 위의 두 단계는 막대한 양의 정보를 사용하므로 신중하게 사용하여야 함

 

weak typing - C같이 옛 언어들이 컴파일러로 오류를 검출하지 못하는 것을 의미

 

Cleanroom

- 상태 천이 모델을 사용한 Formal specification

- 점진적 개발(Incremental development)

- 제한된 언어 및 추상화 구조 사용

- Static verification

- 시스템에 대한 Statistical testing

- 다른 접근법보다 경비가 많이 소요되지 않음

- 전통적인 개발 프로세스보다 적은 오류 발생

 

 

Formal specification - 정형화된, 수학적인

'전공 > 소프트웨어공학' 카테고리의 다른 글

Defect testing  (0) 2021.12.02
검증과 확인(V & V = Verification and Validation)  (0) 2021.11.26
설계 개념과 원리  (0) 2021.11.26
시스템 모델  (0) 2021.11.09
요구 공학 프로세스  (0) 2021.10.16