반응형

애플리케이션 설계

소프트웨어 아키텍처

1. 소프트웨어 아키텍처 설계의 기본 원리 중 다음 설명에 해당하는 것은?

- 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근한다.

- 유지보수와 소프트웨어 확장 시 오류를 최소화할 수 있다.

① Abstraction

② Information Hiding

③ Inheritance

④ Polymorphism

정답 : 2

 

2. 소프트웨어 아키텍처 설계의 기본 원리 중 다음 설명이 의미하는 것은?

객체의 성질을 분해하고 공통된 성질을 추출하여 슈퍼 클래스를 선정하는 것이다. 즉 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화, 모델화 하는 것이다. 예를 들면, 자동차와 자전거란 클래스에서 ‘타는 것’ 이란 클래스를 만드는 것이다.

① Inheritance

② Abstraction

③ Polymorphism

④ Encapsulation

정답 : 2

 

3. 소프트웨어 아키텍처 설계의 기본 원리에 해당하지 않는 것은?

① 모듈화

② 캡슐화

③ 단계적 분해

④ 추상화

정답 : 2

 

4. 소프트웨어 아키텍처 설계의 모듈화에 대한 설명으로 옳지 않은 것은?

① 시스템의 수정 및 재사용, 유지 관리 등을 위해 기능별로 분해하는 것을 의미한다.

② 자주 사용되는 기능을 공통 모듈로 구성할 수 있다.

③ 모듈의 개수가 많으면 모듈 하나의 개발 비용이 적어진다.

④ 모듈의 크기가 크면 모듈 간의 통합비용이 많이 든다.

정답 :4 모듈의 크기가 크면 모듈간의 통합비용이 적어지는 대신 모듈 하나의 개발 비용이 커지게 된다.

 

5.소프트웨어 아키텍처의 품질 속성에 대한 설명으로 옳지 않은 것은?

① 가용성은 장애 없이 정상적으로 서비스를 제공하는 것을 의미한다.

② 사용성은 사용자가 불편 없이 소프트웨어를 사용할 수 있도록 구현하는 것이다.

③ 구축 가능성은 적절한 업무 분배를 통해 유연한 일정 변경을 가능하도록 하는 것이다.

④ 성능은 사용자가 요구한 기능을 만족스럽게 구현하는 것을 의미한다.

정답: 4 성능은 사용자의 요청과 같은 이벤트가 발생했을 때, 이를 적절하고 빠르게 처리하는 것을 의미한다.

 

아키텍처 패턴

1. 소프트웨어 아키텍처의 패턴 중 Pipe-Filter에 대한 설명으로 옳은 것은?

① 컴포넌트 간의 인터페이스가 복잡한 시스템에 적합하다.

② 유저가 직접 데이터 흐름에 간섭할 필요가 있는 경우에 사용된다.

③ 모든 컴포넌트가 동시에 처리되어야 하는 병렬처리 시스템에 적합하다.

④ 하나의 컴포넌트에서 처리가 끝나면 다음 컴포넌트가 결과물을 받아 처리하는 과정이 반복된다.

정답 : 4 Pipe-Filter Pattern은 각 단계를 필터 컴포넌트로 캡슐화하여 앞의 컴포넌트에서 처리한 결과를 파이프를 통해서 전송하면 뒤의 컴포넌트에서 결과를 받아 다음 작업을 수행하는 구조로 구성되어 있습니다.

 

2. 네트워크 프로토콜의 OSI 참조 모델과 가장 관련이 깊은 아키텍처 모델은?

① Peer-To-Peer Model

② Mvc Model

③ Layers Model

④ Client-Server Model

정답 : 3 OSI 참조 모델은 네트워크 프로토콜을 계층 별로 구분한 모델입니다.

 

3. 아키텍처 패턴에서 사용되는 MVC(Model-View-Controller) 모델은 서브시스템을 모델, 뷰, 컨트롤러로 구조화한다. 이중 Model 부분의 기능은?

① 사용자에게 정보 표시

② 데이터 처리 및 보관

③ 사용자 인터페이스를 담당

④ 뷰의 제어

정답 : 2 1번은 뷰, 3번과 4번은 컨트롤러의 기능입니다.

 

4. 아키텍처 패턴에 대한 설명 중 가장 옳지 않은 것은?

① 소프트웨어 초기 설계에서 발생하는 문제들을 해결하기 위한 전형적인 해결방식들을 의미한다.

② 검증된 구조로 개발하기 때문에 오류가 적어 개발시간을 단축할 수 있다.

③ 서브시스템들에 대한 역할을 정의하고 있지만, 그들 간의 인터페이스에 대한 지침은 없다.

④ 시스템에 대한 이해가 쉬워지고, 특성을 예측할 수 있게 된다.

정답 : 3 아키텍처 패턴은 서브시스템들의 역할을 사전에 정의할 뿐만 아니라, 시스템 간의 관계를 정리하기 위한 규칙과 지침이 포함되어 있습니다.

 

5. 다음 중 클라이언트-서버 모델에 대한 설명으로 가장 거리가 먼 것은?

① 사용자는 클라이언트를 통해서 요청을 전달하며, 서버는 이에 응답하는 방식이다.

② 서버는 클라이언트의 요청에 대비하여 항상 대기 상태를 유지한다.

③ 서버와 클라이언트는 서로 독립적이다.

④ 다수의 서버와 하나의 클라이언트로 구성되는 패턴으로 분산 환경 시스템에 적합하다.

정답 : 4 클라이언트-서버패턴은 하나의 서버와 다수의 클라이언트로 구성되는 패턴입니다.

 

6. 여러 컴포넌트들 중 각 컴포넌트들이 서비스를 제공하는 서버가 될 수도 있고, 서비스를 요청하는 클라이언트도 될 수 있는 패턴으로 전형적인 멀티스레딩을 사용하는 방식의 패턴을 무엇이라 하는가?

① 클라이언트 - 서버

② 블랙보드

③ 이벤트 - 버스

④ 피어- 투 - 피어

정답: 4 패턴의 종류 중 멀티스레드 방식하면 피어 투 피어라는 것을 명심하세요.

 

 

객체지향

1. 객체 지향 소프트웨어 공학의 상속에 대해 바르게 설명한 것은?

① 상위 클래스의 메서드와 속성을 하위 클래스가 물려받는 것

② 다른 객체에서 자신의 정보를 숨기는 것

③ 클래스로부터 만들어진 하나의 인스턴스

④ 객체가 연산을 수행할 때 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 것

정답 : 1

 

2. 기존의 소프트웨어 공학 기법들과 차별화될 수 있는 객체지향 개념이 아닌 것은?

① 캡슐화

② 상속

③ 다형성

④ 모듈화

정답: 4

 

3. 객체에 대한 설명으로 가장 옳지 않은 것은?

① 객체는 실세계 또는 개념적으로 존재하는 세계의 사물들이다.

② 객체는 공통적인 특징을 갖는 클래스들을 모아둔 것이다.

③ 객체는 데이터를 가지며 이 데이터의 값을 변경하는 함수를 가지고 있는 경우도 있다.

④ 객체들 사이에서 통신을 할 때는 메시지를 전송한다

정답 : 2 객체를 모아둔 것이 클래스입니다.

 

4. 객체 지향 기법에서 어떤 클래스에 속하는 구체적인 객체를 의미하는 것은?

① Instance ② Message ③ Method ④ Operation

정답 : 1

 

5. 객체지향 기법에서 캡슐화에 대한 설명으로 옳지 않은 것은?

① 캡슐화를 하면 객체 간의 결합도가 높아진다.

② 캡슐화된 객체들은 재사용이 용이하다.

③ 프로그램 변경에 대한 오류의 파급효과가 적다.

④ 인터페이스가 단순해진다.

정답 : 1

 

모듈

1. 시스템을 설계할 때 필요한 설계 지침으로 두 모듈 간의 상호 의존도 또는 두 모듈 사이의 연관 관계를 나타내는 것은?

① 결합도 ② 응집도 ③ 신뢰도 ④ 종합도

 

정답: 1 여러 모듈 간의 상호 의존도를 나타내는 것은 결합도, 하나의 모듈 안에서 구성 요소 간의 관련 정도를 나타내는 것은 응집도입니다.

 

2. 모듈이 파라미터나 인수로 다른 모듈에게 데이터를 넘겨주고 호출 받은 모듈은 받은 데이터에 대한 처리 결과를 다시 돌려주는 유형의 모듈 결합도를 무엇이라고 하는가?

① 내용 결합도 ② 외부 결합도 ③ 제어 결합도 ④ 데이터 결합도

 

정답 : 4 모듈이 파라미터나 인수로 데이터를 주고 받는 것은 데이터 결합도입니다.

 

3. 결합도가 강한 순서대로 옳게 나열한 것은?

① 내용 결합도 > 공통 결합도 > 제어 결합도 > 스탬프 결합도 > 데이터 결합도

② 공통 결합도 > 내용 결합도 > 제어 결합도 > 데이터 결합도 > 스탬프 결합도

③ 데이터 결합도 > 내용 결합도 > 제어 결합도 > 공통 결합도 > 스탬프 결합도

④ 공통 결합도 > 내용 결합도 > 제어 결합도 > 스탬프 결합도 > 데이터 결합도

 

정답 : 1 결합도가 강하다는 것은 의존하는 정도가 높다는 것입니다. 즉 각 모듈들 간에 중요하거나 많은 부분을 함께 사용한다는 것을 의미합니다.

 

4. 다음 설명의 ( )내용으로 옳은 것은?

( )는(은) 한 모듈 내부의 처리 요소들 간의 기능적 연관도를 나타내며, 모듈 내부 요소는 명령어, 명령어의 모임, 호출문, 특정 작업수행 코드 등이다.

① Validation

② Coupling

③ Interface

④ Cohesion

 

정답: 4 응집도(Cohesion)는 하나의 모듈을 구성하는 구성 요소 간의 관계, 결합도(Coupling)는 다른 모듈과의 의존도를 의미합니다.

 

5. 모듈의 구성 요소가 하나의 활동으로부터 나온 출력 자료를 그 다음 활동의 입력 자료로 사용하는 같은 모듈 내에서의 응집의 정도를 나타내는 것은?

① 절차적 응집도

② 논리적 응집도

③ 기능적 응집도

④ 순차적 응집도

 

정답 : 4

절차적 응집도는 모듈 내부의 요소들이 여러 관려 srlsmd이 있을 경우 순차적으로 수행될 때

논리적 응집도는 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성될 때

기능적 응집도는 모듈의 모든 기능 요소가 단일 문제와 연관될 때의 응집도

 

6. 응집도가 강한 것부터 약한 순서로 옳게 나열된 것은?

① Sequential -> Functional -> Procedural -> Coincidental -> Logical

② Procedural -> Coincidental -> Functional -> Sequential -> Logical

③ Functional -> Sequential -> Procedural -> Logical -> Coincidental

④ Logical -> Coincidental -> Functional -> Sequential -> Procedural

 

정답: 3 모듈 요소들 간의 관련성이 많으면 응집도가 높은 것입니다.

기능적 응집도(Functional) > 순차적(Sequential) > 교환(통신)적(Communication) > 절차적(Procedural) > 시간적(Temporal) > 논리적(Logical) > 우연적(Coincidental)

 

공통모듈

 

1. 효과적인 모듈 설계를 위한 유의사항으로 옳지 않은 것은?

① 모듈의 기능을 예측할 수 있도록 정의한다.

② 모듈은 단일 입구와 단일 출구를 갖도록 설계한다.

③ 결합도는 강하게, 응집도는 약하게 설계하여 모듈의 독립성을 확보할 수 있도록 한다.

④ 유지보수가 용이해야 한다.

 

정답: 3 효과적인 모듈 설계는 결합도는 약하게, 응집도는 강하게 한다.

 

2. 소프트웨어 재사용을 통한 장점이 아닌 것은?

① 개발 시간과 비용을 감소시킨다.

② 소프트웨어 품질을 향상시킨다.

③ 생산성을 증가시킨다.

④ 고급 프로그래머 배출이 용이하다.

 

정답: 4

 

3. 공통 모듈에 대한 설명으로 틀린 것은?

① 시스템 내에서 공통적으로 사용되는 모듈이다.

② 소프트웨어의 재사용성을 향상시키기 위해 구현할 필요가 있다.

③ 자주 사용되는 계산식이나 로그인 기능이 공통 모듈로 구성하기에 적합하다.

④ 외부 모듈과의 결합도가 높아야 한다.

 

정답 : 4

 

4. 공통 모듈의 명세 기법 중 공통 기능들 간에 상호 충돌이 발생하지 않도록 작성해야 한다는 기법은?

① Correctness

② Completeness

③ Consistency

④ Clarity

 

정답: 3 1번은 정확성, 2번은 완전성, 3번은 일관성, 4번은 명확성

 

코드

1. 코드의 주요 기능으로 거리가 먼 것은?

① 식별 기능 ② 분류 기능 ③ 배열 기능 ④ 호환 기능

 

정답: 4 코드의 기능은 식별, 분류, 배열

 

2. 사원 본호의 발급 과정에서 둘 이상의 서로 다른 사람에게 동일한 번호가 부여된 경우에 코드의 어떤 기능을 만족시키지 못한 것인가?

① 표준화 기능 ② 식별 기능 ③ 배열 기능 ④ 연상 기능

 

정답: 2

 

3. 회사에서 각 부서의 명칭을 코드화하기 위하여 대분류, 중분류, 소분류 등으로 나누어 나타내고자 한다. 이 때 가장 적합한 코드의 종류는?

① 구분 코드(Block Code)

② 그룹 분류 코드(Group Classification Code)

③ 연상 기호 코드(Mnemonic Code)

④ 순차 코드(Sequence Code)

 

정답 :

 

4. 코드화 대상 항목의 길이, 넓이, 부피, 무게 등을 나타내는 문자, 숫자 혹은 기호를 그대로 코드로 사용하는 코드는?

① 그룹 분류식 코드(Group Classification Code)

② 기호 코드(Mnemonic Code)

③ 표의 숫자 코드(Significant Digit Code)

④ 합성 코드(Combined Code)

 

정답: 3 표의 숫자 hem는 대상체의 성질을 그대로 표시하므로 기억하기 쉽습니다.

 

5. 코드화 대상 자료 전체를 계산하여 이를 필요로 하는 분류 단위로 블록을 구분하고, 각 블록 내에서 순서대로 번호를 부여하는 방식으로, 적은 자릿수로 많은 항목의 표시가 가능하고 예비 코드를 사용할 수 있어 추가가 용이하다. 구분 순차 코드라고도 하는 이것을 무엇이라 하는가?

① 순차 코드

② 표의 숫자 코드

③ 블록 코드

④ 연상 코드

 

정답: 3

 

6. 코드 부여 체계에 대한 설명으로 옳지 않은 것은?

① 모듈이나 컴포넌트에 식별할 수 있는 코드를 부여하는 것을 말한다.

② 프로그래머가 모듈을 개발할 때 마다 임의로 코드를 부여한다.

③ 하나 이상의 코드를 조합하여 사용한다.

④ 코드 부여 체계의 담당자는 코드 규칙을 상세히 정의해야 한다.

 

정답 : 2 코드 부여 체계는 모듈이나 컴포넌트 등에 코드를 부여하는 방식을 의미하기 때문에 코드는 프로그래머가 임의로 부여하는 것이 아닌 코드 부여 체계에 맞게 부여해야 합니다.

 

 

디자인 패턴

1. <보기1>의 디자인 패턴 분로와 보기2>의 디자인 패턴을 바르게 연결한 것은?

<보기1>

ㄱ. 생성 패턴 ㄴ. 구조 패턴 ㄷ.행위 패턴

<보기2>

a. Prototype b. Facade c. Command

 

① ㄱ-a, ㄴ-b, ㄷ-c

② ㄱ-b, ㄴ-a, ㄷ-c

③ ㄱ-c, ㄴ-a, ㄷ-b

④ ㄱ-a, ㄴ-c, ㄷ-b

 

정답: 1 프로토타입은 객체를 생성하는 패턴이고, 퍼싸드는 복잡한 구조를 간편하게 해주는 패턴, 커맨드는 요청이 들어왔을 때 이를 처리하는 방법을 구현한 패턴입니다.

 

2. Iterator 패턴에 대한 설명으로 옳지 않은 것은?

① 내부 표현 방법의 노출 없이 접근이 가능하다.

② 클라이언트는 독립적으로 원하는 알고리즘을 선택하여 사용할 수 있다.

③ 배열이나 리스트 같은 자료 구조를 처리하는 데 사용된다.

④ 집합 객체의 각 요소들에 대해 순차 접근하는 방식이다.

 

정답: 2 반복자(Iterator) 패턴은 음악을 들을 때 누르는 ‘다음 곡 재생’ 버튼을 생각!

 

3. 다음에서 설명하는 디자인 패턴에 해당하는 것은?

기존에 만들어진 클래스를 사용하려고 하는데 인터페이스가 일치하지 않거나, 관련이 없어 사용하지 못했던 클래스들을 다시 사용할 수 있게 만들고자 한다.

① Command

② Factory Method

③ Adapter

④ Memento

정답: 3 호환성이 없는 클래스의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해 주는 패턴은 어댑터 패턴이다.

 

4. 다음 중 디자인 패턴에 대한 설명으로 가장 거리가 먼 것은?

① 객체의 생성과 표현이 분리되어 있어, 동일한 객체 생성에도 다른 결과를 내야 할 대는 빌더 패턴이 권장된다.

메모리를 절약하기 위해 인스턴스를 공유해서 사용할 때는 플라이웨이트 패턴이 권장된다.

③ 관련된 객체들의 묶음을 스타일 선택에 의해서 생성할 때는 프로토 타입 패턴이 권장된다.

④ 각 클래스의 처리 기능을 분리하여 캡슐화한 후 필요할 때 마다 해당 클래스에 방문해서 처리할 때는 비지터 패턴이 권장된다.

 

정답 : 3 프로토타입 패턴은 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴입니다.

 

5. 다음 중 유형이 다른 디자인 패턴끼리 연결된 것은?

① Builder Pattern - Prototype Pattern

② Singleton Pattern - Abstract Factory Pattern

③ Bridge Pattern - Proxy Pattern

④ Chain of Responsibility Pattern - Facade Pattern

 

정답: 4 책임 연쇄 패턴(Chain of Responsibility Pattern)은 행위 패턴에 속하고, 퍼싸드 패턴은 구조 패턴에 속한다.

 

6. 다음 설명에 해당하는 디자인 패턴은?

문제

Java에서 new를 통해 인스턴스를 매번 생성하다 보니 메모리 사용량이 급격하게 증가하였다. 이로 인해 프로그램이 무거워져서 원할한 사용을 위해 수정이 불가피해졌다. 어떻게 해결해야 하는가?

해결책

동일한 객체가 존재할 경우 해당 객체를 공유하여 사용함으로써 메모리를 절약하고, 존재하지 않을 경우만 새로 객체를 생성하여 사용하도록 한다.

① Adapter 패턴

② Bridge 패턴

③ Flyweight 패턴

④ Chain of Responsiblity 패턴

 

정답 : 3 공유, 메모리 절약이라는 단어 확인

 

예상 문제 은행

1. 소프트웨어 아키텍처 설계에 있어서 정보 은폐의 근본적인 목적은?

① 코드를 개선하기 위하여

② 코드의 길이를 짧게 하기 위하여

③ 고려되지 않은 영향(Side Effect)들을 최소화하기 위하여

④ 인터페이스를 최소화하기 위하여

 

정답 : 3

 

2. 추상화의 유형에서 이벤트 발생의 구체적인 절차 또는 방법을 정의하지 않고 대표할 수 있는 표현으로 대체하는 것을 무엇이라고 하는가?

① 과정 추상화 ② 데이터 추상화 ③ 제어 추상화 ④ 이벤트 추상화

정답: 3

과정 추상화 : 자세한 수행 과정을 정의하지 않고, 전반적인 흐름만 파악할 수 있게 설계하는 방법

데이터 추상화 : 데이터의 세부적인 속성이나 용도를 정의하지 않고 , 데이터 구조를 대표할 수 있는 표현으로 대체 하는 방법

 

 

3. 소프트웨어 아키텍처 설계에 대한 설명으로 옳지 않은 것은?

① 이해 관계자들의 의사소통 도구로 활용된다.

② 설계된 모듈을 프로그래밍 언어를 통해 구현한다.

③ 애플리케이션을 모듈로 분할하고, 모듈 간 인터페이스를 결정하는 과정이다.

④ 기본 원리에는 모듈화, 추상화, 단계적 분해, 정보은닉이 있다.

 

정답: 2은 아키텍처 구현에 대한 설명

 

4. 소프트웨어 아키텍처의 품질 속성 중 다음 설명이 의미하는 것은?

- 개발 비용을 더 투자하여 유연성이 높은 아키텍처를 만들 것인지를 결정하는 것이다.

- 유연성이 떨어지는 경우 이후 유지보수에 많은 비용이 소모될 수 있다는 것을 고려해야 한다.

① 비용과 혜택

② 시장 적시성

③ 가용성

④ 구축 가능성

 

정답: 1

시장 적시성 : 정해진 시간에 맞춰 프로그램을 출시하는 것

가용성 : 장애 없이 정상적으로 서비스를 제공하는 것

구축 가능성 : 모듈 단위로 구분된 싯템을 적절하게 분배하여 유연하게 일정을 변경할 수 있도록 하는 것

 

5. 소프트웨어 아키텍처의 설계 과정을 순서대로 가장 옳게 나열한 것은?

a. 시스템과 서브시스템의 타입을 결정한다.

b. 서브시스템의 기능과 서브시스템 간의 인터페이스를 정의한다.

c. 표준 아키텍처를 설계한다.

d. 요구사항을 분석하여 전체 시스템의 설계 목표를 설정한다.

① d - a - b - c

② d - b - a - c

③ d - c - a - b

④ d - a - c - b

 

정답: 4 소프트웨어 아키텍처의 설계 과정은 설계 목표 설정, 시스템 타입 결정, 아키텍처 패턴 적용, 서브시스템 구체화, 검토 순이다.

 

6. 아키텍처의 패턴에 관한 설명 중 가장 옳지 않은 것은?

① 레이어 패턴은 하위 계층이 제공하는 서비스를 상위 계층의 서브시스템이 사용하도록 구성된다.

② 브로커 패턴은 사용자가 원하는 서비스와 특성을 요청하면, 적합한 컴포넌트를 연결해준다.

③ 이벤트-버스 패턴은 이벤트 메시지를 발행하고 구독하는 형태로 이루어진다.

④ 피어-투-피어 패턴에서 각 서브시스템은 서비스를 요청하고 제공하는 능력이 있다.

 

정답 : 1 레이어 패턴은 상위 계층이 제공하는 서비스를 하위 계층의 서브시스템이 사용하도록 구성되어 있는 패턴이다.

 

7. 다음은 아키텍처 스타일과 이를 기반으로 하는 시스템의 관계를 짝지은 것으로 가장 옳지 않은 것은?

① Layer Pattern - OSI 참조 모델

② Master - Slave Pattern - 장애 허용 시스템

③ Blackboard Pattern - 차량 식별 시스템

④ MVC Pattern - 병렬 컴퓨팅 시스템

 

정답: 4 MVC 패턴은 대화형 애플리케이션에 적합하며, 병렬 컴퓨팅 시스템에 적합한 패턴은 마스터-슬레이브 패턴이다.

 

8 아키텍처 패턴의 장점에 해당되지 않는 것은?

① 시행착오를 줄여 개발시간이 최대화되고, 고품질의 소프트웨어를 생산할 수 있다.

② 전형적인 아키텍처를 기반으로 이해를 공유하여 개발자들 간의 의사소통이 간편해진다.

③ 개발에 참여하지 않아도 시스템의 이해가 쉬워 유지보수가 용이하다

④ 시스템 개발 전에 시스템의 특성을 예측할 수 있다.

 

정답 : 1 아키텍처 패턴은 시행착오를 줄여주기 때문에 개발 시간이 최소화 되고, 고품질의 소프트웨어를 생산할 수 있다.

 

10. 다음이 설명하고 있는 아키텍처 패턴은?

- 데이터 변환 시스템과 같이 데이터 스트림을 처리해야 하는 소프트웨어에서 주로 사용된다.

- 한 모듈이 데이터 스트림을 입력받아 처리하면, 다음 모듈이 결과를 이어받아 처리하는 형식이다.

- 모듈의 재사용과 추가가 간편하여 확장성이 뛰어나다.

① MVC Pattern

② Pipe-Filter Pattern

③ Peer-To-Peer Pattern

④ Broker Pattern

 

정답 : 2

MVC 패턴 : 서비시스템을 3개의 부분으로 구조화하는 패턴

피어-투-피어 패턴 : 피어를 하나의 컴포넌트로 간주하며, 각 피어는 서비스를 호출하는 클라이언트가 될 수도, 서비스를 제공하는 서버가 될 수도 있다.

브로커 패턴 : 사용자가 원하는 서비스와 특성을 브로커 컴포넌트에 요청하면 브로커 컴포넌트가 요청에 맞는 컴포넌트와 사용자를 연결해줌

 

11. 객체 지향 프로그램의 장점으로 거리가 먼 것은?

① 자연적인 모델링이 가능하다.

② 실행 속도가 빨라진다.

③ 소프트웨어의 재사용률이 높아진다.

④ 소프트웨어의 유지보수성이 향상된다.

 

정답: 2

객체지향은 기존의 절차지향 방식에 비해 실행속도가 느리다는 단점이 있다.

 

12. 객체에 대한 특성을 설명한 것으로 가장 옳지 않은 것은?

① 객체마다 각각의 상태를 갖고 있다.

② 식별성을 가진다

③ 행위에 대하여 그 특징을 나타낼 수 있다.

④ 일정한 기억장소를 가지고 있지 않다.

 

정답 : 4

 

13. 객체지향 개념 중 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화를 의미하는 것은?

① 메소드

② 클래스

③ 상속성

④ 추상화

 

정답 : 2

추상화 : 문제의 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화 시켜 나가는 것.

 

14. 객체지향 개념에서 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정을 무엇이라 하는가?

① 정보 은닉

② 클래스

③ 캡슐화

④ 통합

 

정답 : 3

 

15. 객체지향 기법에서 상속의 결과로 얻을 수 있는 가장 주요한 이점은?

① 모듈 라이브러리의 재이용

② 객체지향 DB를 사용할 수 있는 능력

③ 클래스와 오브젝트를 재사용할 수 있는 능력

④ 프로젝트를 보다 효과적으로 관리할 수 있는 능력

 

정답 : 3

상속은 상위 클래스의 속성과 연산을 하위 클래스가 사용할 수 있기 때문에 객체와 클래스의 재사용, 즉 소프트웨어의 재사용을 높이는 중요한 개념이다.

 

16. ASCII File을 print하는 method를 갖고 있는 object, Binary File을 print하는 method를 갖고 있는 object, Picture File을 print하는 method를 갖고 있는 object들은 모두 "print"라는 method를 갖고 있으므로, “print"란 메시지를 받으면 수행하게 된다. 그러나 각각의 method에서 print를 수행하는 방법은 모두 다를 것이다. 객체지향 시스템에서 이와 같이 서로 다른 Class들이 같은 의미의 응답을 하는 특성을 무엇이라고 하는가?

① 캡슐화

② 상속성

③ 다형성

④ 추상화

 

정답 : 3

 

17. 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 참조하는 경우, 이를 무슨 결합이라고 하는가?

① 내용 결합

② 제어 결합

③ 공통 결합

④ 스탬프 결합

 

정답 : 1

제어 결합도 : DJejS 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 이용하여 통신하거나 제어 요소를 전달하는 결합도.

공통 결합도 : 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도

스탬프 결합도 : 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도

 

18. 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합성이며 자료 구조의 어떠한 변화, 즉 포맷이나 구조의 변화는 그것을 조회하는 모든 모듈 및 변화되는 필드를 실제로 조회하지 않는 모듈에 까지도 영향을 미치게 되는 결합성은?

① Data Coupling

② Stamp Coupling

③ Control Coupling

④ Content Coupling

 

정답 : 2

 

19. 결합도(Coupling)에 대한 설명으로 틀린 것은?

① 데이터 결합도(Data Coupling)는 두 모듈이 매개변수로 자료를 전달할 때 자료 구조 형태로 전달되어 이용될 때 데이터가 결합되어 있다고 한다.

② 내용 결합도(Content Coupling)는 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있다고 한다.

③ 공통 결합도(Common Coupling)는 두 모듈이 동일한 전역 데이터를 접근한다면 공통 결합되어 있다고 한다.

④ 결합도(Coupling)는 두 모듈간의 상호작용, 또는 의존도 정도를 나타내는 것이다.

 

정답: 1

데이터 결합도 : 매개 변수나 인수로 데이터를 전달할 때의 결합도이며, 자료 구조 형태로 전달하는 결합도는 스탬프 결합도이다.

 

 

20. 모듈의 응집도(Cohesion)에 대한 설명 중 틀린 것은?

① 모듈의 응집도란 모듈 안의 요소들이 서로 관련되어 있는 정도를 말한다.

② 기능적 응집도(Functional Conhesion)는 한 모듈 내부의 한 기능 요소에 의한 출력자료가 다음 기능 요소의 입력 자료로서 제공되는 형태이다.

③ 교환적 응집도(Communication Cohesion)는 동일한 입력과 출력을 사용하는 소작업들이 모인 모듈에서 볼수 있다.

④ 논리적 응집도(Logical Cohesion)는 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우이다.

 

정답 : 2

기능적 응집도는 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도이며, 2번의 내용은 순차적 응집도에 대한 설명이다.

 

21. 응집도의 종류 중 서로 간에 어떠한 의미 있는 연관관계도 지니지 않은 기능요소로 구성되는 경우이며, 서로 다른 상위 모듈에 의해 호출되어 처리상 연관성이 없는 서로 다른 기능을 수행하는 경우의 응집도는?

① Coincidental Cohesion

② Functional Cohesion

③ Sequential Cohesion

④ Logical Cohesion

 

정답 :

수나적 응집도 : 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력데이터로 사용할 경우의 응집도

논리적 응집도: 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도.

 

22. 모듈을 설계하기 위해서 바람직한 응집도(Cohesion)와 결합도(Coupling)의 관계는?

① 응집도는 약하고 결합도는 강해야 한다.

② 응집도는 강하고 결합도는 약해야 한다.

③ 응집도도 약하고 결합도도 약해야 한다.

④ 응집도도 강하고 결합도도 강해야 한다.

 

정답 : 2

모듈은 독립성이 높을수록 좋은 모듈이라 할 수 있으며, 독립성을 높이려면 응집도는 강하고 결합도는 약해야 한다.

 

24. 효과적인 모듈 설계 방법으로 가장 거리가 먼 것은?

① Coupling은 약하게 Cohesion는 강하게 설계 한다.

② Complexity는 줄이고 Redundancy를 최대한 늘릴 수 있도록 설계한다.

③ Maintenance가 용이하도록 설계한다.

④ Module 크기는 시스템의 전반적인 기능과 구조를 이해하기 쉬운 크기로 설계한다.

 

정답 : 2

모듈의 중복성은 가능한 최소화 하는 것이 좋다.

 

25. 소프트웨어 재사용에 대한 내용 중 옳지 않은 것은?

① 비용을 절감하고 개발 시간을 단축하여 생산성이 증가한다.

② 재사용되는 대상은 외부 모듈과의 결합도가 낮아야 한다.

③ 규모에 따라 변수, 함수, 객체, 컴포넌트 단위로 재사용된다.

④ 재사용을 위해서는 사용법이 공개되어야 한다.

 

정답: 3

규모에 따른 재사용 대상들에는 함수, 객체(클래스, 메소드), 컴포넌트, 애플리케이션 등이 있다.

 

26. 공통 모듈을 설계할 때 공통 부분을 명세하기 위한 기법에 해당하지 않는 것은?

① 독립성 ② 명확성 ③ 일관성 ④ 정확성

 

정답 : 1

공통 모듈을 설계할 때 공통 부분을 명세하기 위한 기법에는 정확성, 명확성, 완전성, 일관성, 추적성이 있다.

 

27. 코드화 대상 항목을 10진 분할하고, 다시 그 각각에 대하여 10진 분할하는 방법을 필요한 만큼 반복하는 코드로서, 코드 대상 항목의 추가가 용이하며 무제한적으로 확대할 수 있으나 자릿수가 길어질 수 있고 기계 처리에 적합하지 않은 코드는?

① Sequence Code

② Group Classification Code

③ Block Code

④ Decimal Code

 

정답 : 4

순차코드 : 일정 기준에 따라 순차대로 일련번호를 부여

그룹 분류 코드: 기준에 따라 분류하여 각 분류 내에서 일련 번호를 부여

블록 코드 : 공통성 있는 것들을 블록으로 분류하여, 블록 내에서 일련번호를 부여

 

28 다음과 같이 주로 도서 분류 코드에 사용되는 코드는?

도서 목록

부여코드

국문학

100

철학

200

정보학

300

 

① 10진 코드

② 순서코드

③ 문자 코드

④ 분류 코드

 

정답 : 1

 

29. 코드의 종류 중 코드화 대상 항목을 자료의 발생순서, 크기 순서, 가나다라 순서 등과 같이 어떤 일정한 기준에 따라 일련번호를 부여하는 것은?

① Block Code

② Group Code

③ Sequence Code

④ Decimal Code

 

정답 : 3

 

30. 다음과 같은 표현 방법으로 부여하는 코드는?

제품

부여 코드

냉장고(235L)

RF-235

형광등(30W 220V 흰색)

K-30-220-W

텔레비전(17인치 흑백)

T-17

텔레비전(25인치 컬러)

T-25-C

 

① Sequence Code

② Mnemonic Code

③ Block Code

④ Group Classification Code

 

정답 : 2

코드화 대상 항목의 명칭이나 약호와 관계있는 숫자나 문자, 기호를 이용하여 코드를 부여하는 방법은 연상 코드(Mnemonic Code)이다.

 

31 관찰 대상의 데이터가 변화하면 이를 탐지하여 여러 가지 방식으로 사용자에게 출력하는 프로그램을 작성하고자 한다. 이 프로그램에 적용 가능한 디자인 패턴은?

① Composite 패턴

② Facade 패턴

③ Bridge 패턴

④ Observer 패턴

 

정답 : 

컴포지트 패턴 : 여러 객체를 가진 복합 객체와 단일 객체를 구분없이 다루고자 할 때 사용하는 패턴

퍼싸드 패턴 : 복잡한 서브클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴

브리지 패턴: 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴

 

32. 다음 중 복잡한 서브 클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴은?

① Abstract Factory패턴

② Facade 패턴

③ Singleton 패턴

④ Interpreter 패턴

 

정답 : 2

추상 팩토리 패턴 : 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관. 의존하는 객체들의 그룹으로 생성하여 추상적으로 표현하는 패턴

싱글톤 패턴: 하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참수할 수는 없는 패턴

인터프리터 패턴 : 언어에 문법 표현을 정의하는 패턴

 

33. 다음 중 디자인 패턴에 대한 설명으로 옳지 않은 것은?

① Singleton : 하나의 객체를 생성하여 해당 객체를 어디에서든 참조할 수 있도록 한다.

② Bridge : 구현에서 추상을 분리하여, 독립적으로 다양성을 가질 수 있다.

③ Chain of Responsibility : 한 객체가 처리하지 못한 요청을 다음 객체가 처리하는 형태이다.

④ Strategy : 알고리즘을 하나로 캡슐화하여 원하는 알고리즘의 선택이 가능하지만, 알고리즘의 변경이 미치는 영향이 크다.

 

정답 : 4

전략 패턴은 알고리즘들을 개별적으로 캡슐화하여 필요할 때마다 원하는 알고리즘을 선택하여 사용할 수 있는 패턴이다.

 

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

① 데코레이션 패턴

② 전략 패턴

③ 어댑터 패턴

④ 플라이웨이트 패턴

 

정답 :2

데코레이션 패턴 : 객체 간의 결합으로 능동적으로 기능들을 확장할 수 있는 패턴

어댑터 패턴 : 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴

플라이웨이트 : 인스턴스가 필요할 때마다 매번 생성하는 것이 아니고 가능한 공유해서 사용함으로써 메모리를 절약하는 패턴

 

35. 다음 중 성격이 다른 설계패턴은?

① 상태 패턴

② 전략 패턴

③ 메멘토 패턴

④ 컴포지트 패턴

 

정답 : 4

GoF 패턴의 분류

-생성 패턴 : 추상팩토리, 빌더, 팩토리 메소드, 프로토타입, 싱글톤

- 구조 패턴 : 어댑터, 브리지, 컴포지트, 데코레이션, 퍼싸드, 플라이웨이트, 프록시

- 행위 패턴 : 책임 연쇄, 커맨드, 인터프리터, 반복자, 중재자, 메멘토, 옵서버, 상태, 전략, 템플릿 메소드, 방문자

 

36. 상속을 사용하지 않고도 객체의 기능을 동적으로 확장할 수 있도록 해주는 설계 패턴은?

① 데코레이터 패턴

② 프록시 패턴

③ 빌더 패턴

④ 커맨드 패턴

 

정답 : 1

프록시 패턴 : 접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스를 수행하는 패턴

빌더 패턴 : 작게 분리된 인스턴스를 건축하듯이 조합하여 객체를 생성하는 패턴

커맨드 패턴 : 요청을 객체의 형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그에 남기는 패턴

 

37. 여러 객체들이 서로 메시지를 주고 받는 상호작용을 특정 객체 안에 캡슐화하여 서로의 존재를 모르는 상태에서도 메시지를 주고 받으며 협력할 수 있도록 하는 설계패턴은?

① Template Method

② Mediator

③ Visitor

④ Bridge

 

정답 : 2

템플릿 메소드 : 상위 클래스에서 골격을 적의하고, 하위 클래스에서 세부 처리를 구체화하는 구조의 패턴

방문자 패턴 : 자료구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴

브리지 패턴 : 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴

 

 

 

 

 

 

 

 

출처 : 2020 시나공 정보처리기사 문제 중 일부입니다.

 

자세한 설명과 문제는 책을 구입하셔서 확인하시는 걸 권장합니다.

 

 

반응형
블로그 이미지

꽃꽂이하는개발자

,