반응형

7. 아키텍처 설계와 패턴

1. 시스템 아키텍처에 대한 설명으로 옳지 않은 것은?
물리적 구성을 기반으로 정의되는 시스템의 상세 설계도이다.

 

2. 다음 중 소프트웨어 아키텍처 설계에 필수적인 요소들로만 짝지어진 것은?
② ㉠ 소프트웨어 컴포넌트, 소프트웨어 컴포넌트 사이의 관계를 나타내는 커넥터

 

3. 소프트웨어 아키텍처의 4+1 관점(view)에 대한 설명으로 옳지 않은 것은?
논리 관점에서는 계층 구조, 제약 사항, 코드 재사용 등과 같은 시스템 구현을 위한 요건을 보여주는 데 초점을 둔다.

 

4. 어떤 시스템은 다음과 같은 구성과 동작 방식으로 운영된다. 이 시스템을 통해 만족할 수 있는 품질 속성(quality attribute)은 무엇인가?
시스템은 사용자에게 서비스를 제공하기 위해 동일한 기능을 수행하는 컴포넌트 AB, 이 외에 여러 컴포넌트로 구성된다. 컴포넌트 A가 동작 중에 실패가 발생하여 대기 중이던 컴포넌트 BA를 대신하여 계속 서비스를 제공한다.’
가용성

 

5. 다음 중에서 ISO/IEC 25010 성능(performance efficiency)과 관련된 지표를 모두 고른 것은?
동시 접속 가능한 사용자 수, 네트워크 Bandwidth 사용률, 평균 소요 시간(turnaround time), 단위 시간 당 처리량

 

6. 소프트웨어 아키텍처 스타일과 응용분야가 가장 적절하지 않게 연결된 것은?
계층형 아키텍처 마이크로웨이브 오븐 제어 소프트웨어 (이벤트 아키텍처가 적합함)

 

7. 파이프 필터 형태의 소프트웨어 아키텍처에 대한 설명으로 옳은 것은?
서브시스템이 입력 데이터를 받아 처리하고 결과를 다른 시스템에 보내는 작업이 반복된다.

 

8. 아키텍처 유형에 관한 설명 중 옳지 않은 것은?
CORBA는 파이프 필터 유형의 아키텍처를 지원한다.

 

9. 다음 각 응용문제에 대하여 적합한 소프트웨어 아키텍처 스타일이 아닌 것은?
분산 운영체제 MVC 구조

 

10. 웹 기반 엔터프라이즈 응용에 계층형 아키텍처를 사용하는 적합한 이유만을 모은 것은?
이식성, 시스템 관리의 용이성

 

11. 상속을 사용하지 않고도 객체의 기능을 동적으로 확장할 수 있도록 해주는 패턴은?
데코레이터 패턴

 

12. Iterator 패턴에 대한 설명으로 옳지 않은 것은?
서로 다른 인터페이스를 사용하기 때문에 각각의 객체를 참조하기 위한 다형성 코드(polymorphic code)를 개발하는 것이 불가능하다.

 

13. 다음은 위임을 이용하여 adapter pattern을 구현한 클래스 다이어그램을 나타내고 있다. () ~ ()에 가장 적합한 클래스명은?
()-target, ()-adapter, ()-adaptee

 

14. 다음에 해당하는 소프트웨어 설계 패턴은?
일대 다의 객체 의존 관계를 정의하며, 한 객체의 상태가 변화 되었을 때 의존 관계에 있는 다른 객체들에게 자동적으로 변화를 통지한다.’
옵서버 패턴

 

15. 다음 중, 디자인 패턴에 대한 설명으로 가장 거리가 먼 것은?
관련된 객체들의 패밀리를 스타일 선택에 의해서 생성할 때는 프로토타입 패턴이 권장된다. (추상 팩토리 패턴이 권장됨)

 

16. 다음 클래스 다이어그램으로 표현한 설계에서 사용한 디자인 패턴은?
Composite 패턴

 

17. 차량 내비게이션 소프트웨어에서 GPS 신호를 수신하는 경우와 수신하지 못하는 경우에 따라 차량의 위치를 구하는 다른 알고리즘을 선택하고자 할 때 가장 적합한 설계 패턴은?
Strategy 패턴

 

18. 다음 설명에 해당되는 디자인 패턴은?
퍼싸드 패턴

 

19. 다음은 시나리오 기반 아키텍처 평가의 작업들이다 순서를 올바로 나열한 것은?
(아키텍처 기술) (시나리오 도출) (시나리오 우선순위 매김) (시나리오에 대하여 아키텍처 평가) (결과 해석과 발표)

 

20. ATAM 기법을 적용하기 위하여 유틸리티 트리와 시나리오가 바르게 연결되지 않은 것은?
유지보수성 데이터베이스 용량 초과로 인한 로그기록 불가

 

21. 소프트웨어 아키텍처란 무엇이며 왜 소프트웨어 개발 전 단계에서 중요한가?
소프트웨어 아키텍처란 개발하고자 하는 소프트웨어 시스템의 큰 구조를 뜻한다. 소프트웨어 구조가 단순하지 않고 복잡해진다면 그 구조를 이해하고 관리하는 것이 중요하다.

 

22. 아키텍처를 UML로 표현하는 방법을 설명하고 패키지로 분할하는 원칙은 무엇인가?
아키텍처는 클래스의 집합이다. 따라서 아키텍처는 클래스보다 더 큰 단위인 패키지로 표현할 수 있는데 UML 중 패키지 다이어그램을 이용하여 표현할 수 있다. 패키지로 분할하는 원칙은 첫째, 같은 유스케이스에서 발견된 객체는 같은 패키지로 구분한다. 둘째, 서브시스템들 간의 데이터 통신을 위해 사용되는 객체는 단독 패키지로 만든다. 셋째, 패키지 경계에 있는 연관 관계를 최소화한다. 넷째, 같은 패키지 안에 있는 모든 객체는 기능적으로 연관이 있어야 한다.

 

23. 아키텍처를 설계할 때 스타일의 선정은 시스템의 타입이 고려되어야 한다. 다음 타입의 시스템은 어떤 특징을 보이는지 설명하라.
(1) 대화형 시스템: 대화형 시스템은 클라이언트와 서버가 서로 요청과 반환을 통해 상호작용하는 특징을 보인다. 예를 들면 온라인 쇼핑몰에서 고객이 로그인을 위해 서버에 요청하면 서버가 로그인 결과를 반환하는 경우가 해당된다.
(2) 이벤트 중심 시스템: 이벤트 중심 시스템은 특정한 이벤트가 발생했을 때 반응하는 특징을 보인다. 예를 들면, 실시간 시스템에서 센서로부터 데이터를 수신하여 특정한 이벤트가 발생하는 경우 시스템이 이를 처리하고 응답하는 경우가 해당된다.
(3) 변환 시스템: 변환 시스템은 데이터가 여러 단계를 거쳐 병렬 처리된다는 특징이 있다. 예를 들면, 컴파일러의 경우 순차적으로 단계가 진행되어 최종 코드를 생성한다.
(4) 객체 영속 시스템: 객체 영속 시스템은 데이터베이스를 시스템에 숨기고 데이터베이스 구현에 대한 변경을 시스템이 모르도록 보호한다는 특징이 있다. 예를 들어, 웹 페이지에서 사용자 정보를 처리하는 시스템이 있다면, 이 시스템은 사용자 정보를 영속적으로 저장할 수 있으며, 이를 객체로 다루어 캡슐화할 수 있다.

 

24. 디자인 패턴이란 무엇이며 알면 어떤 이로운 점이 있는가?
디자인 패턴은 소프트웨어 설계에서 자주 발생하는 문제에 대한 해결책을 재사용 가능한 형태로 정리한 것이다. 디자인 패턴을 알면 검증된 설계 방법을 쉽게 재사용할 수 있으며 설계 작업이 쉬워진다. 또한 설계 관련 지식이 정리되고 객체지향 설계 원리를 잘 따르게 된다. 마지막으로 설계를 논의할 때 의사소통이 쉬워진다.

싱글톤 패턴이 해결하는 문제는 무엇이며 가능하게 하는 해결 방법을 설명하라.
싱글톤 패턴은 여러 컴포넌트나 객체가 동일한 인스턴스를 공유해야하는 경우. 여러 번 인스턴스를 생성했을 때 생기는 리소스 낭비와 오류가 생기는 문제를 해결하고자 한다. 이를 위한 해결 방법으로는 한 클래스에 대해 단 하나의 객체만 생성되도록 생성된 객체 수를 제한한다. 예를 들면, 앱 페이지별로 다크 모드와 라이트 모드와 같은 화면 모드를 설정하는 객체를 만든다면 매우 번거롭지만, 싱글톤 패턴을 적용하면 단 하나의 객체만을 만들어서 이를 공유하면 된다.

 

25. 싱글톤 패턴이 해결하는 문제는 무엇이며 가능하게 하는 해결 방법을 설명하라.
싱글톤 패턴은 여러 컴포넌트나 객체가 동일한 인스턴스를 공유해야하는 경우. 여러 번 인스턴스를 생성했을 때 생기는 리소스 낭비와 오류가 생기는 문제를 해결하고자 한다. 이를 위한 해결 방법으로는 한 클래스에 대해 단 하나의 객체만 생성되도록 생성된 객체 수를 제한한다. 예를 들면, 앱 페이지별로 다크 모드와 라이트 모드와 같은 화면 모드를 설정하는 객체를 만든다면 매우 번거롭지만, 싱글톤 패턴을 적용하면 단 하나의 객체만을 만들어서 이를 공유하면 된다.

 

26. 그림판 같은 프로그램을 작성하려 한다. 이미 직사각형을 위한 클래스(LegacyRectangle)가 작성되어 있다. LegacyRectangle 클래스 안에 있는 display() 메소드는 네 가지 파라미터 x, y(왼쪽 위 꼭지점 좌표), w(), h(높이)를 받는다. 그러나 클라이언트 프로그램에서 이와는 다르게 왼쪽 위 꼭지점 좌표 x1, y1과 오른쪽 아래 꼭지점 좌표 x2, y2를 매개변수로 호출하고 싶다. 어댑터 패턴을 이용하여 설계하되 클래스 다이어그램으로 나타내라.

 

27. 성적을 출력하는 기능, 예를 들면 입력된 성적 값을 출력하는 프로그램을 작성하고 있다. 입력된 점수를 저장하는 ScoreRecord 클래스와 점수를 목록의 형태로 출력하는 DataView 클래스를 설계 하였다. 성적을 출력하는 형태를 다양하게 하기 위하여 이 문제에 가장 알맞은 패턴은 무엇인가? 그 이유는?

 

28. 다음 해결하려는 문제에 적용할 가장 적합한 디자인 패턴은 무엇인가?

(1) 전체와 부분 관계의 구조를 동일하게 취급하게 하려고 할 때
: composite 패턴
(2) 인스턴스 한 개를 유지하면서 전역적인 접근을 허용하려고 할 때
: singleton 패턴
(3) 어떤 객체와 그 객체의 상태의 변화를 통지 받고 싶은 객체들 사이에 1대다(1-to-many)의 관계를 정의하려고 할 때
: observer 패턴
(4) 복잡한 패키지 안에 손쉬운 API를 제공할 때
: facade 패턴
(5) 타겟 객체와 handshaking할 수 있도록 인터페이스를 제공하되 타겟 객체를 손대지않고 새로운 인터페이스를 정의할 때
: adapter 패턴
(6) 객체들 사이의 다대다(many-to-many) 인터랙션 관계를 캡슐화할 때
: mediator 패턴
(7) 핵심적인 부분과 부수적인 부분으로 나누어 객체를 잘게 분할할 때
: composite 패턴

 

29. SaleOrder 클래스의 상태는 NewOrder(주문), Registered(접수), Granted(환불), Shipped(배송), Invoiced(견적), Cancelled(취소)로 나눈다. 상태 패턴을 적용하여 UML로 설계하라.

 

30. 아키텍처 평가 기법 SAAM의 주요 입력물과 산출물은 무엇인지 나열하고 작업 과정을 설명하라.

SAAM의 주요 입력물은 소프트웨어 아키텍처 설명서와 평가 목표 및 운선순위이다. 주요 산출물은 아키텍처 평가 보고서, 개선 제안이다. 작업 과정은 다음과 같다.

1. 준비 단계 (Preparation): 평가 대상 시스템과 평가 목표를 명확히 하고, 평가 팀을 구성한다.
2. 소프트웨어 아키텍처 설명서 분석 (Analysis of Software Architecture Description): 아키텍처 설명서를 자세히 분석하여 평가 대상 시스템의 구조와 특징을 이해한다.
3. 평가 목표 정의 (Definition of Evaluation Objectives): 평가의 목표와 우선순위를 설정하고 평가 프로세스를 계획한다.
4. 평가 진행 (Evaluation Execution): 실제로 평가를 수행하며, 모델링 도구나 특별한 평가 도구를 사용하여 아키텍처의 특성을 검토한다.
5. 결과 분석 (Analysis of Results): 평가 결과를 분석하여 강점과 약점을 도출하고 개선 제안을 작성한다.
6. 아키텍처 평가 보고서 작성 (Report Writing): 평가 보고서를 작성하여 평가 과정, 결과, 개선 제안 등을 문서화한다.
7. 개선 계획 (Improvement Planning): 개선 제안을 바탕으로 아키텍처의 향후 발전 방향을 계획하고 문서화한다.