본문으로 바로가기

1과목 : 소프트웨어 설계

 

1. XP(eXtreme Programming)의 기본원리로 볼 수 없는 것은?

1. Linear Sequential Method
2. Pair Programming
3. Collective Ownership
4. Continuous Integration

- Pair Programming(짝 프로그래밍)
   - 다른 사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경을 조성
- Test-Driven Development(테스트 주도 개발)
   - 개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하므로 자신이 무엇을 해야할지 정확히 파악
   - 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구를 사용
- Whole Team(전체 팀)
   - 개발에 참여하는 모든 구성원(고객 포함)들은 각자 자신의 역할이 있고 그 역할에 대한 책임을 가져야 함
- Continuous Integration(계속적인 통합)
   - 모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리될 때마다 지속적으로 통합
- Design Improvement(디자인 개선)
   - 프로그램 기능의 변경 없이, 단순화, 유연성 등을 통해 시스템을 재구성
- Small Releases(소규모 릴리즈)
   - 릴리즈 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응
- Collective Ownership(공동 소유)

2. 럼바우(Rumbaugh) 객체지향 분석 기법에서 동적 모델링에 활용되는 다이어그램은?

1. 객체 다이어그램(Object Diagram)
2. 패키지 다이어그램(Package Diagram)
3. 상태 다이어그램(State Diagram)
4. 자료 흐름도(Data Flow Diagram)

동적 모델링에서는 주로 행위 다이어그램을 사용
행위(Behavioral) 다이어그램
 - 유스케이스 다이어그램(Use Case Diagram)
 - 시퀀스 다이어그램(Sequence Diagram)
 - 커뮤니케이션 다이어그램(Communication Diagram)
 - 상태 다이어그램(State Diagram)
 - 활동 다이어그램(Activity Diagram)
 - 상호작용 개요 다이어그램(Interaction Overview Diagram)
 - 타이밍 다이어그램(Timing Diagram)

3. CASE(Computer Aided Software Engineering)의 주요 기능으로 옳지 않은 것은?

1. S/W 라이프 사이클 전 단계의 연결
2. 그래픽 지원
3. 다양한 소프트웨어 개발 모형 지원
4. 언어 번역

CASE(Computer Aided Software Engineering) : 소프트웨어 공학의 여러 작업들을 자동화하는 도구
 - 소프트웨어 부품의 재사용성을 향상
 - 소프트웨어 품질과 일관성을 효율적으로 관리
 - 소프트웨어 생명 주기의 모든 단계를 연결시켜 주고 자동화
 - 소프트웨어의 유지보수를 용이하게 수행 
 - 소프트웨어 공학의 여러 작업들을 자동화하는 도구
 - 소프트웨어 시스템의 문서화 및 명세화를 위한 그래픽 기능을 제공
 - 자료흐름, 비즈니스 프로세스 등의 다이어그램을 쉽게 작성하게 해주는 소프트웨어도 CASE 도구

4. 객체지향 기법의 캡슐화(Encapsulation)에 대한 설명으로 틀린 것은?

1. 인터페이스가 단순화 된다.
2. 소프트웨어 재사용성이 높아진다.
3. 변경 발생 시 오류의 파급효과가 적다.
4. 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것을 의미한다.


5. 다음 내용이 설명하는 객체지향 설계 원칙은?

- 클라이언트는 자신이 사용하지 않는 메서드와 의존관계를 맺으면 안된다.
- 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다.

1. 인터페이스 분리 원칙
2. 단일 책임 원칙
3. 개방 폐쇄의 원칙
4. 리스코프 교체의 원칙

단일 책임 원칙
 - 모든 클래스는 단 한가지만의 책임만을 갖고 클래스가 정의되어 있는 모든 기능은 이 하나의 책임을 수행하는데 집중되어야 함

개방 폐쇄의 원칙
 - 소프트웨어 엔티티(패키지, 클래스, 모듈, 함수 등)는 확장에 대해서는 개방되어야 하지만, 변경에 대해서는 폐쇄되어야 함

리스코프 교체의 원칙
 - 자식 클래스는 언제나 자신의 부모 클래스를 교체할 수 있다는 원칙

6. 파이프 필터 형태의 소프트웨어 아키텍처에 대한 설명으로 옳은 것은?

1. 노드와 간선으로 구성된다.
2. 서브시스템이 입력데이터를 받아 처리하고 결과를 다음 서브시스템으로 넘겨주는 과정을 반복한다.
3. 계층 모델이라고도 한다.
4. 3개의 서브시스템(모델, 뷰, 제어)으로 구성되어 있다.


7. 코드화 대상 항목의 중량, 면적, 용량 등의 물리적 수치를 이용하여 만든 코드는?

1. 순차 코드
2. 10진 코드
3. 표의 숫자 코드
4. 블록 코드

코드의 종류

1. 순차 코드
   - 자료의 발생 순서, 크기 순서 등 일정 기준에 따라서 최초의 자료부터 차례로 일련번호를 부여하는 방법
2. 블록코드
   - 코드화 대상 항목 중에서 공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 방법
3. 10진 코드
   - 코드화 대상 항목을 0~9까지 10진 분할하고, 다시 그 각각에 대하여 10진 분할하는 방법을 필요한 만큼 반복하는 방법
4. 그룹 분류 코드
   - 코드화 대상에 대한 분류 기준에 따라 대분류, 중분류, 소분류로 나누고 각 분류 안에서 번호를 순서적으로 부여하는 방법
5. 연상 코드
   - 코드화 대상 항목의 명칭이나 약호와 관계있는 숫자나 문자, 기호를 이용하여 코드를 부여하는 방법
6. 표의 숫자 코드
   - 코드화 대상 항목의 성질(길이, 넓이, 부피, 지름, 높이 등)의 물리적 수치를 그대로 코드에 적용하는 방법
7. 합성 코드
   - 필요한 기능을 하나의 코드로 수행하기 어려운 경우 2개 이상의 코드를 조합하여 만드는 방법

8. 디자인 패턴 사용의 장٠단점에 대한 설명으로 거리가 먼 것은?

1. 소프트웨어 구조 파악이 용이하다.
2. 객체지향 설계 및 구현의 생산성을 높이는데 적합하다.
3. 재사용을 위한 개발 시간이 단축된다.
4. 절차형 언어와 함께 이용될 때 효율이 극대화된다.


9. DFD(data flow diagram)에 대한 설명으로 틀린 것은?

1. 자료 흐름 그래프 또는 버블(bubble) 차트라고도 한다.
2. 구조적 분석 기법에 이용된다.
3. 시간 흐름을 명확하게 표현할 수 있다.
4. DFD의 요소는 화살표, 원, 사각형, 직선(단선/이중선)으로 표시한다.


10. 그래픽 표기법을 이용하여 소프트웨어 구성 요소를 모델링하는 럼바우 분석 기법에 포함되지 않는 것은?
1. 객체 모델링
2. 기능 모델링
3. 동적 모델링
4. 블랙박스 분석 모델링


11. UML의 기본 구성요소가 아닌 것은?

1. Things
2. Terminal
3. Relationship
4. Diagram

UML의 구성 요소에는 사물, 관계, 다이어그램 등이 있음

12. 소프트웨어의 상위설계에 속하지 않는 것은?

1. 아키텍처 설계
2. 모듈 설계
3. 인터페이스 정의
4. 사용자 인터페이스 설계

상위 설계
 - 아키텍쳐 설계 : 시스템의 전체적인 구조
 - 데이터 설계 : 시스템에 필요한 정보를 자료구조 데이터베이스 설계에 반영
 - 시스템 분할 : 전체 시스템을 여러개의 서브시스템으로 나눔
 - 인터페이스 정의 : 시스템의 구조와 서브시스템들 사이의 인터페이스가 명확히 정의
 - 사용자 인터페이스 설계 : 사용자가 익숙하고 편리하게 사용할 수 있도록 사용자 인터페이스를 설계

13. 다음 중 자료사전(Data Dictionary)에서 선택의 의미를 나타내는 것은?

1. [ ]
2. { }
3. +
4. =

- 정의 : =
- 구성, 연결 : +
- 반복 : { }
- 주석 : **
- 선택 : [ | ]
- 생략 : ( )

14. 소프트웨어의 사용자 인터페이스개발시스템(User Interface Development System)이 가져야 할 기능이 아닌 것은?

1. 사용자 입력의 검증
2. 에러 처리와 에러 메시지 처리
3. 도움과 프롬프트(prompt) 제공
4. 소스 코드 분석 및 오류 복구


15. 요구 사항 명세기법에 대한 설명으로 틀린 것은?

1. 비정형 명세기법은 사용자의 요구를 표현할 때 자연어를 기반으로 서술한다.
2. 비정형 명세기법은 사용자의 요구를 표현할 때 Z 비정형 명세기법을 사용한다.
3. 정형 명세기법은 사용자의 요구를 표현할 때 수학적인 원리와 표기법을 이용한다.
4. 정항 명세기법은 비정형 명세기법에 비해 표현이 간결하다.


16. 소프트웨어 개발 단계에서 요구 분석 과정에 대한 설명으로 거리가 먼 것은?

1. 분석 결과의 문서화를 통해 향후 유지보수에 유용하게 활용 활 수 있다.
2. 개발 비용이 가장 많이 소요되는 단계이다.
3. 자료흐름도, 자료 사전 등이 효과적으로 이용될 수 있다.
4. 보다 구체적인 명세를 위해 소단위 명세서(Mini-Spec)가 활용될 수 있다.

개발 비용이 가장 많이 소요되는 단계는 '유지보수단계'이다.

17. 애자일 방법론에 해당하지 않는 것은?

1. 기능중심 개발
2. 스크럼
3. 익스트림 프로그래밍
4. 모듈중심 개발

애자일 방법론
 - 익스트림 프로그래밍(XP)
 - 짝 프로그래밍
 - 테스트 주도 개발(TDD)
 - 스크럼
 - 기능중심 개발

18. 클라이언트와 서버 간의 통신을 담당하는 시스템 소프트웨어를 무엇이라고 하는가?

1. 웨어러블
2. 하이웨어
3. 미들웨어
4. 응용 소프트웨어


19. GoF(Gangs of Four) 디자인 패턴 분류에 해당하지 않는 것은?

1. 생성 패턴
2. 구조 패턴
3. 행위 패턴
4. 추상 패턴

생성 패턴(Creational Pattern)
 ※ 객체의 생성과 관련된 패턴
 - 추상 팩토리(Abstract Factory)
 - 빌더(Builder)
 - 팩토리 메소드(Factory Method)
 - 프로토타입(Prototype)
 - 싱글톤(Singleton)

구조 패턴(Structural Pattern)
 ※ 클래스나 객체들을 조합하여 더 큰 구조로 만들 수 있게 해주는 패턴
 - 어댑터(Adapter)
 - 브리지(Bridge)
 - 컴포지트(Composite)
 - 데코레이터(Decorator)
 - 퍼싸드(Facade)
 - 플라이웨이트(Flyweight)
 - 프록시(Proxy)

행위 패턴(Behavioral Pattern)
 ※ 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의 하는 패턴
 - 책임 연쇄(Chain of Responsibility)
 - 커맨드(commnad)
 - 인터프리터(Interpreter)
 - 반복자(lterator)
 - 중재자(Mediator)
 - 메멘토(Memento)
 - 옵서버(Observer)
 - 상태(state)
 - 전략(Strategy)
 - 템플릿 메소드(Template Method)
 - 방문자(Visitor)

20. 바람직한 소프트웨어 설계 지침이 아닌 것은?

1. 적당한 모듈의 크기를 유지한다.
2. 모듈 간의 접속 관계를 분석하여 복잡도와 중복을 줄인다.
3. 모듈 간의 결합도는 강할수록 바람직하다.
4. 모듈 간의 효과적인 제어를 위해 설계에서 계층적 자료 조직이 제시되어야 한다.