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

(제 24회) 소프트웨어 공학 / (28)~(29) 해설

아이티신비 2024. 7. 17. 09:00

28. Robert C. Martin은 clean architecture를 설명하면서 컴포넌트 결합도에 대한 3가지 원칙을 제시하였다. 이에 대한 설명 중 가장 적절하지 않은 것은?

 

① 자신보다 재사용성이 높은 컴포넌트에 의존해야한다.

② 컴포넌트간의 의존성에 사이클이 존재하지 않아야 한다.

③ 자신보다 안정적(stable)인 컴포넌트에 의존해야 한다.

④ 자신보다 추상화된 컴포넌트에 의존해야 한다.

 

 

▣ 패키지 설계 원칙

구분
설명
응집도 관련
REP
  • RFP(Release Reuse Equivalency Principle, 재사용 릴리즈 등가 원칙)
  • 패키지 안에 있는 클래스들 일부만 재사용되지 않도록 설계되어야 한다.
CRP
  • CRP(Common Reuse Principle, 공통 재사용 원칙)
  • 패키지 안의 클래스들은 다 함께 재사용되어야 한다.
CCP
  • CCP(Common Closure Principle, 공통 폐쇄 원식)
  • 어떤 이유로 패키지를 변경해야 한다면 그것 때문에 바꾸어야 할 클래스들이 다른 패키지들에 흩어져 있지 않고 동일한 패키지에 있도록 설계한다.
결합도 관련
ADP
  • ADP(Acyclic Dependencies Principle, 비순환 의존 원칙)
  • 패키지의 의존 관계는 비순환이 되도록 설계되어야 한다.
SDP
  • SDP(Stable Dependency Principle, 안정적 의존 원칙)
  • 패키지는 자신보다 더 안정적인 패키지로 의존 관계가 형성되어야 한다
  • ※ 안정적 : 변경하기 어렵다는 의미
SAP
  • SAP(Stable Abstraction Principle , 안정적 추상 원칙)
  • 안정화된 패키지는 추상 클래스나 인터페이스들로 구성하여 가능한 추상화되도록 설계한다.

정답 : ①

 

29. 다음 중 인공신경망을 테스팅 할 때 사용할 수 있는 커버리지로 가장 적절하지 않은 것은?

 

① Neuron coverage

② Layer coverage

③ Component coverage

④ Sign-sign coverage

 

▣ AI기반 시스템 테스팅

  • AI 기반 시스템은 일반적으로 기존 컴포넌트(예, 사용자 인터페이스)와 AI 컴포넌트로 구성
  • AI 컴포넌트도 소프트웨어로 구현되므로 다은 소프트웨어와 동일하게 결함이 발생 가능
  • 따라서, AI 기반 시스템을 테스팅할 때, 기존의 소프트웨어 테스팅 접근이 여전히 필요
  • 그러나 AI 기반 시스템은 기존 시스템과는 다른 특수한 속성이 있으므로 추가적인 테스트가 필요

● AI 기반 시스템 테스팅 - BlackBox Testing

구분
설명
조합 테스팅
(Combinatorial Testing)
  • 테스트 케이스가 여러 매개 변수값의 특성 조합을 실행하도록 설계한 블랙 박스 테스트 설계 기법
백투백 테스팅
(Back-to-Back Testing)
  • 대체 시스템을 일종의 수도-오라클(pseudo-oracle)로 사용해서 같은 입력값에 대해 비교할 수 있는 기대 결과를 만드는 테스팅 접근법
※예 : 수도-오라클(pseudo-oracle)은 이미 존재하는 시스템, 독립적인 팀이 개발한 시스템 또는 다른 프로그래밍 언어로 구현된 시스템(일명, 차등 테스트 : differential testing)
A/B 테스팅
  • 테스터가 두 시스템 중 어느 시스템 성능이 나은지 판단 가능하게 하는 통계적(statistical) 테스팅 접근법
※분리-수행 테스팅(split-run testing)이라고도 함
변성 테스팅
(Metamorphic Testing)
  • 명세 기반이 아닌 이전 실제 결과에서 기대 결과를 추정하는 테스팅

● AI 기반 시스템 테스팅 - WhiteBox Testing

구분
설명
뉴런 커버리지
(Neuron Coverage)
  • 일련의 테스트에서 활성화된 뉴런의 수를 신경망의 총 뉴런 수(일반적으로 백분율로 표시)로 나눈 값
※활성화 값이 0을 초과하면 뉴런이 활성화된 것으로 간주한다.
임계점 커버리지
(Threshold Coverage)
  • 일련의 테스트에서 임계 활성화 값을 초과한 뉴런의 수를 신경망의 총 뉴런 수(일반적으로 백분율로 표시)로 나눈 값
※임계값으로 0과 1사이의 임계 활성값을 선택해야 한다.
부호 변경 커버리지
(Sign Change Coverage)
  • 일련의 테스트에서 양성과 음성 활성값 모두로 활성화된 뉴런의 수를 신경망에서의 뉴런의 총 수(일반적으로 백분율로 표시)로 나눈 값
※활성값이 0이면 음의 활성값으로 간주된다.
값 변경 커버리지
(Value Change Coverage)
  • 일련의 테스트에서 활성값이 변화폭 이상으로 바뀌었을 때 활성화되는 뉴런수를 신경망의 총 뉴런 수(일반적으로 백분율로 표시)로 나눈 값
부호-부호 커버리지
(Sing-Sign Coverage)
  • 다음 레이어에서 뉴런 하나만의 상태만 변하고 나머지 모든 다른 뉴런은 똑같이 유지(즉 기호를 변경하지 않음)하도록 개별 뉴런의 상태를 모두 바꿨을 때 달성하는 커버리지 수준
레이어 커버리지
(Layer Coverage)
  • 신경망의 전체 층에서 뉴런 세트에 대한 활성값이 어떻게 변경되는지(예, 절대적 또는 상대적)에 기반해 커버리지 측정

 

정답 : ③

 




 

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

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