반응형

제목: 설계 인스펙션 체크리스트(Design Inspection Checklist)

저자: Software Quality Consulting, 미국

문서유형: 소프트웨어 컨설팅 업체 자료( 3페이지)



상위 수준 설계(High-Level Design)

일반 요구사항과 설계

1. 설계의 검토가 요구사항 관련 문제(, 누락된 요구사항, 모호한 요구사항, 관련 없는 요구사항, 테스트 불가능한 요구사항, 암시적인 요구사항)를 식별했는가?

2. 설계가 요구사항과 일관적인가? 예를 들면, 빠진 기능, 관련 없는 기능, 모호하고 부정확한 기능이 있는가

3. 요구사항과의 차이(deviations)가 문서화되고 승인되었는가?

4. 모든 가정(assumptions)이 문서화되었는가?

5. 주요 설계 의사결정이 문서화되었는가?

6. 이러한 의사결정과 설계가 일관성이 있는가?

7. 설계가 아래 사항들을 적절하게 다루고 있는가?

• 실시간 요구사항

• 성능 이슈(메모리와 타이밍)

• 작업 수용력(CPU와 메모리)

• 유지보수성

• 이해용이성

• 데이터베이스 요구사항

• 로딩과 초기화

• 에러 핸들링과 복구

• 사용자 인터페이스 이슈

• 소프트웨어 업그레이드

기능 및 인터페이스 명세

8. 각 프로세스의 프로세스 명세가 정확하고 완전한가?

9. 정확하고 명백한 용어로 명세되었고, 필요한 변형(transformations)을 명확히 기술하는가?

10. 다른 기능/운영 체제 커널/하드웨어 등에의 의존성이 식별되고 문서화되었는가?

11. 사용자 인터페이스를 제공하는 기능에서 인적 요인이 적절히 고려되었는가?

12. 설계 제약(메모리와 타이밍 예산)이 적합한 곳에서 명세되었는가?

13. 에러 체킹, 에러 핸들링과 복구에 대한 요구사항이 필요한 곳에서 명세되었는가?

14. 인터페이스가 모듈 사용과 일관적인가? 빠진 인터페이스, 불필요한 인터페이스가 있나?

15. 인터페이스가 검증될 수 있도록 충분히 상세한 수준으로 명세되었는가?

관례

16. 설계가 수립된 표기법 관례(notation conventions) 따르는가?


상세 설계(Detailed Design)

요구사항 추적성

1. 이 모듈(또는 인터페이스)의 상세 설계가 그 요구사항 부분을 충족시키는가?

2. 이 모듈(또는 인터페이스)의 인스펙션이 시스템 요구사항 명세에 있는 문제(, 누락된 요구사항, 모호한 요구사항, 충돌하는 요구사항, 테스트 불가능한 요구사항, 암시적인 요구사항)를 식별했는가?

3. 이 모듈(또는 인터페이스)의 상세 설계가 그 상위 수준 설계 요구사항에 부합하는가?

4. 상세 설계의 인스펙션이 상위 수준 설계에 있는 문제를 식별했는가?

5. 모든 기능이 완전하고, 정확하고, 충분히 상세하게 기술되었는가?

6. 모든 인터페이스가 완전하고 정확하게 기술되었는가(키워드 또는 위치상의 패러미터, 필드 서술자, 애트리뷰트, 범위, 한계를 포함)?

7. 상세 설계 문서가 그 자체로 완전하고 일관적인가? 데이터와 로직이 일관적인가, 모든 내적 데이터가 정의되었는가, 무관계한 데이터가 있는가?

구조와 인터페이스

8. 시스템 수준과 서브시스템 수준에서 시스템 아키텍쳐 모델 상의 모든 컴포넌트(또는 모듈)이 식별되었는가?

9. 분해 수준(the level of decomposition) 모든 모듈을 식별하기에 충분한가?

10. 추가적인 분해가 더 많은 모듈을 식별하는 결과를 낳는가?

11. 시스템/서브시스템 요소 및 모듈 간의 모든 인터페이스가 명확하게 식별되었는가?

12. 연속적인 수준의 분해가 연속적인 수준의 상세화를 낳는가?

13. 모듈이 하나 이상의 특정 기능을 수행하고 있는가?

로직

15. 로직 에러가 있는가?

16. 모든 고유한 값(unique values)들이 테스트되는가, 모든 위치상의 값(positional values)들이 테스트되는가, 증가 및 루프 계수기(increment and loop counters)가 제대로 초기화되는가, 변수와 데이터 영역이 사용 전에 초기화되는가?

17. 정확한 시작과 끝의 테이블 프로세싱, 인터럽트를 가로지르는 정확한 큐 프로세싱, 정확한 의사결정 테이블 로직, 정확한 계산 정밀도/정확도 등과 관련하여 모듈이 인스펙션 되었는가?

18. 코드의 올바른 실행을 보장하기 위해 메시지 우선순위가 제대로 할당되었는가?

19. 메시지 프로세싱 시퀀스가 정확한가?

20. 데이터, 데이터 버퍼, 테이블, 데이터 영역 사용의 충돌, 불완전한 초기화나 업데이트, 비일관적이거나 유효하지 않은 데이터 애트리뷰트 등을 다루는데 있어 에러가 있는가?

21. 프로시져 호출과 반환 인터페이스가 정확하게 정의되었는가, 호출과 반환 패러미터가 정확하게 정의되었는가, 정확한 신택스(syntax)인가?

성능

22. 메모리와 타이밍 예산이 합리적이고 실현가능한가?

에러 핸들링과 복구

23. 적절한 에러 조건 테스팅이 있는가?

24. 에러의 가능성이 높거나 또는 에러의 결과가 시스템에 치명적인 경우의 에러 조건이 테스트되는가?

25. 리턴 코드가 문서화되는가?

26. 리턴 메시지가 이해가능한가?

27. 프로그램이 여러 상황에서(모듈/프로세스 실패, 운영 체제 실패, 인터럽트, 하드웨어 실패 등을 가로지르는) 성공적인 에러 복구를 허용하는가?

테스트용이성, 확장용이성

28. 설계가 이해하기 용이한가(읽고 로직을 따라가기 쉬움), 유지보수 용이한가(모호한 로직이 없음), 테스트 용이한가(적당한 수의 테스트로 테스트될 수 있음)?

결합도와 응집도

29. 적절한 경우 표준 결합도/응집도 기준을 사용하여 설계를 평가한다.


반응형

+ Recent posts