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

(제 22회) 소프트웨어 공학 / (26)~(27) 해설

아이티신비 2024. 11. 11. 09:00

26. 다음 설명에 가장 적절한 설계 원칙은?

 
 
단위 테스트를 수행할 때 테스트 대상 클래스를 변경하지 않고도 대상 클래스의 환경을 테스트가 용이하도록 통제 가능한 환경으로 변경할 수 있는 설계가 되어야 한다.

① SRP(Single Responsibility Principle)

② OCP(Open Closed Principle)

③ DIP(Dependency Inversion Principle)

④ LSP(Liskov Substitution Principle)

 

▣ SOLID 원칙

두문자
약어
설명
S
SRP
  • 단일 책임의 원리(Single Responsibility Principle)
  • 모든 클래스는 각각 하나의 책임만 가져야 한다
O
OCP
  • 개방-폐쇄 원칙(Open Closed Principle)
  • 확장에는 열려있고 수정에는 닫혀있는, 기존의 코드를 변경하지 않으면서(Closed), 기능을 추가할 수 있도록(Open) 설계가 되어야 한다
L
LSP
  • 리스코프 치환 원칙(Liskov Substitution Principle)
  • 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있다. 즉 부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 계획대로 잘 작동해야 한다
I
ISP
  • 인터페이스 분리 원칙(Interface Segregation Principle)
  • 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다
D
DIP
  • 의존 역전 원칙(Dependency Inversion Principle)
  • 추상(Abstract) 클래스는 구체화(Concrete) 클래스는 의존성을 가지면 안된다

● OCP의 다른 관점

  • 클래스를 변경하지 않고도(closed) 대상 클래스의 환경을 변경(Open)할 수 있는 설계가 되어야 함

 

● 단위 테스트에서 OCP

  • 단위테스트는 빠른 시간에 자주 테스트해야 하므로 테스트 대상 기능이 사용되는 실제 외부의 서비스를 횽내내는 가짜 객체를 만들어 테스트의 효율성을 높여야 함
  • 실제 서비스에 사용할 객체를 그대로 테스트를 하면 변경이 생길 위험이 있으므로 실제 데이터베이스 기능을대체하는 가짜 객체를 만들어야 함

 

정답 : ②

 

 

 

27. 다음 상황에 적용하기에 가장 적절한 디자인 패턴은?

· 장기 게임을 하는 프로그램에서 사용자의 선택에 맞추어서 특정 루틴의 레벨을 간단하게 교체할 수도 있다.
· 메모리가 적은 환경에서는 속도는 느리지만 메모리를 절약하는 알고리즘을 사용하고, 메모리가 많은 환경에서는 속도는 빠르지만 메모리를 많이 사용하는 알고리즘을 사용한다.
· 스프레드시트 소프트웨어의 디버그 판에서 복잡한 계산을 실행할 때, ‘버그가 있을지도 모르는 고속의 알고리즘’과 ‘저속이지만 확실한 계산을 실행하는 알고리즘’을 준비해서 전자의 검산을 후자로 실행시킨다.

 

① strategy 패턴 ② observer 패턴

③ command 패턴 ④ decorator 패턴

 

▣ Strategy 패턴

  • 알고리즘을 구현한 부분이 모두 교환 가능하도록 함
  • 알고리즘(전략, 작전, 책략)을 교체해서 동일한 문제를 다른 방법으로 해결하는 패턴

 

 

 

● 실무적용

1) ConcreteStrategy 변경 용이

  • 예전의 알고리즘과 개량한 알고리즘의 속도를 비교하고 싶은 경우, 간단히 교체해서 테스트할 수 있다.
  • 장기 게임에서 사용자의 선택에 따라 사고 루틴의 레벨을 교체하는 것도 간단하게 실행할 수 있다

 

2) 실행 중 교체 가능

  • 메모리가 적은 환경에서는 Slow But Less Memory Strategy 를 사용하고, 메모리가 충분한 환경에서는 Fast But Memoey Strategy 를 사용한다.

 

 

정답 : ①

 

 



 

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

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