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
|
|
O
|
OCP
|
|
L
|
LSP
|
|
I
|
ISP
|
|
D
|
DIP
|
|
- (나)세탁시는 구체 클래스에 의존이 없고 추상화된 것(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
- 상황 : 클래스에 위임관계가 있음
- 문제 : 클라이언트 클래스가 서버 클래스 뿐만 아니라 대리 클래스까지 이용함
- 해법 : 서버클래스에 위임 메서드를 추가해서 클라이언트 클래스로부터 대리 클래스를 은폐
- 객채가 시스템의 다른 부분에 대한 정보를 일부분만 알 수 있도록 함 => 변경이 일어날 때 전다래야 하는 객체가 줄어들어 변경이 용이해짐
정답 : ①
공감과 댓글은 아이티신비에게 큰 힘이 됩니다.
블로그 글이 유용하다면 블로그를 구독해주세요.♥
'정보시스템 감리 기출해설 > 소프트웨어공학 해설' 카테고리의 다른 글
(제 25회) 소프트웨어 공학 / (26)~(27) 해설 (0) | 2025.01.13 |
---|---|
(제 22회) 소프트웨어 공학 / (46)~(47) 해설 (1) | 2024.11.21 |
(제 22회) 소프트웨어 공학 / (44)~(45) 해설 (3) | 2024.11.20 |
(제 22회) 소프트웨어 공학 / (42)~(43) 해설 (0) | 2024.11.19 |
(제 22회) 소프트웨어 공학 / (40)~(41) 해설 (0) | 2024.11.18 |