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

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

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

48. (가)의 클래스 다이어그램은 (나)의 클래스 다이어 그램으로 개선이 되었다. 이 개선 과정에서 적용된 설계 원칙으로서 가장 적절한 것은?

 

 
(가)
(나)

 

① SRP(Single Responsibility Principle), DIP(Dependency Inversion Principle)

② SRP(Single Responsibility Principle), OCP(Open Closed Principle)

③ LSP(Liskov Substitution Principle), ISP(Interface Segregation Principle)

④ DIP(Dependency Inversion Principle), ISP(Interface Segregation Principle)

 

▣ SOLID 원칙

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

 

정답 : ④

 

 

 

49. 다음 시퀀스 다이어그램은 아키텍처 패턴의 개략적인 동작을 보여 준다. 이 패턴에 대한 설명으로서

가장 적절한 것은?

 

 

① 분산 애플리케이션을 개발할 때의 복잡도를 증가시킨다.

② 동일한 환경에서의 서비스 실행을 지원한다.

③ 여러 서비스를 하나의 동일한 언어로 개발하는 것이 일반적이다.

④ modifiability, availability, performance 측면에서 바람직하다.

 

▣ Broker Arch, Pattern

  • 분산 소프트웨어 시스템(분리된 컴포넌트들이 원격 서비스를 호출해 상호작용하는 시스템)을 구조화 할 때 유용한 패턴
  • 브로커 컴포넌트가 통신을 관할, 결과와 예외 전송 역할 담당

 

● Context

  • 현재 개발 중인 환경이 독립적인 협력 컴포넌트들로 구성된 이질적인 분산 시스템

 

● Problem

  • 복잡한 소프트웨어 시스템을 서로 결합하지 않고 상호운용적인 컴포넌트들의 집합으로 구성하면 유연성(flexibility), 유지보수성(maintainability), 가변성(changability) 측면에서 뛰어난 결과 기대
  • 기능을 독립적인 컴포넌트들로 분할해야 분산기능(distributable), 상황에 맞게 규모를 변경 가능(scalable)
  • 분산 컴포넌트들이 서로 통신할 때, IPC(inter-process communication, 프로세스간 통신)이 가능하도록 지원해야 함. 그렇지 않고 컴포넌트들이 스스로 통신을 처리하도록 시스템을 구축하면, 그 시스템은 통신 매커니즘, 프로그래밍 언어, 클라이언트가 서버의 위치를 반드시 파악해애 하는 등의 종속과 제약을 받음

 

● Solution

  • 클라이언트와 서비를 제대로 분리(decoupling) 하기 위해 브로커 컴포넌트 도입
  • 단일 애플리케이션을 분산 애플리케이션 형태의 객체 모델로 확장할 수 있기 때문에 확장된 이 분산 애플리케이션은 이기종 머신에서 실행될 수 있고 각기 다른 프로그래밍 언어로 작성 가능

 

정답 : ④

 

 

50. (가)의 클래스 다이어그램이 (나)의 클래스 다이어

그램으로 개선이 되었다. 이때 적용된 리팩토링

(refactoring)으로서 가장 적절한 것은?

 
(가)
(나)

 

① hide delegate

② remove middle man

③ rename method

④ encapsulate downcast

 

▣ 리팩트링 기법 : hide delegate

  • 상황 : 클래스에 위임관계가 있음
  • 문제 : 클라이언트 클래스가 서버 클래스 뿐만 아니라 대리 클래스까지 이용함
  • 해법 : 서버클래스에 위임 메서드를 추가해서 클라이언트 클래스로부터 대리 클래스를 은폐
  • 객채가 시스템의 다른 부분에 대한 정보를 일부분만 알 수 있도록 함 => 변경이 일어날 때 전다래야 하는 객체가 줄어들어 변경이 용이해짐

 

 

정답 : ①

 

 



 

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

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