1.일반적인 사항

 

a.루틴이 잘못된 입력 데이터로부터 스스로를 보호하는가?

b.선행 조건과 후행 조건을 포함한 가정들을 문서화 하기 위해서 어설션을 사용하였는가?

c.어셜션이 절대로 발생해서는 안 되는 조건들을 문서화 하기 위해서만 사용되었는가?

d.아키텍쳐나 고수준 설계에서 구체적인 오류 처리 기법들을 명시하고 있는가?

e.아키텍쳐나 고수준 설계에서 오류 처리가 견고성이나 정홧성 중 어느것을 중점적으로 여기는가?

f.오류 손상 효과를 포함하고 오류를 처리하기 위해서 필요한 코드를 줄이기 위한 방책을 만들었는가?

g.디버깅 보조 도구들이 코드에서 사용되었는가?

h.디버깅 보조 도구들이 간편하게 활성화 하거나 비활성화 할 수 잇는 방법으로 설치 되었나?

i.방어적인 프로그래밍 코드의 양이 적절한가? 너무 많거나 적지 않은가?

j.개발 시 오류를 간과할 수 있도록 공격적인 프로그래밍 기법들을 사용하였는가?

 

2.예외

a.프로젝트가 예외를 처리하기 위해서 규격화된 접근 방법을 정의하였는가?

b.예외 사용의 대안들을 고려해 보았는가?

c.가능하다면 비-지역적인 예외를 던지는 대신 오류가 지역적으로 처리되고 있는가?

d.코드가 생성자와 소멸자에서 예외를 던지지 않는가?

e.모든 예외들이 예외를 던지는 루틴과 맞는 수준에 있는가?

g.각 예외가 예외와 관련된 모든 배경 정보를 포함하고 있는가?

h.빈 catch블록은 없는가? 비어 있다면 타당한 이유를 표시했는가?

 

3.보안문제

 

a.버퍼 오버프롤우,SQL 명령문 주입, HTML 코드 주입, 정수 오버플로우, 그 밖의 악의적인 입력과 같은

  나쁜 입력 데이터를 검사하는가?

b.모든 오류 리턴 코드를 검사하였는가?

c.모든 예외가 잡히는가?

d.오류 메시지가 시스템을 부수려는 공격자에게 도움을 줄 수 있는 정보를 제공하지 않는가?

by givingsheart 2014. 1. 1. 15:24