반응형

 

1과목 소프트웨어 설계 합격 전략

 

꼭 나오는 카테고리의 주요 개념들과 꼭 나오는 선택지들을 암기하면 기본적으로 절반 이상은 맞출 수 있습니다. 여기에 개정판 이후 기출문제들을 풀어본다면 충분히 무난하게 60점 이상의 점수를 받을 수 있습니다.

 

이 포스팅에서는 개정판 이후 기출문제를 분석하여 출제 빈도 순서대로 정리를 하였습니다. 가장 위에서부터 차례대로 공부해가며 개정판 기출문제를 풀어보고 선택지를 분석한다면 충분히 1과목은 섭렵하신 것입니다.

 

1과목은 비전공자 노베이스도 핵심정리만 보고서도 점수를 따낼 수 있는 과목이기 때문에 진입장벽이 낮은 무난한 과목입니다.

 

이 글은 개정판 기출문제를 분석해서 정리를 한 글이지, 개념 설명을 해주는 글은 아닙니다. 개념 이해를 위한 설명글을 원하신다면 다른 자료를 따로 찾아보시는 게 좋습니다.

 

 

 

개정판 1과목 기출문제 압축 정리

 

1. UML에 대한 설명

 

출제 빈도: 회당 2문제 (21 1 12, 19번 201,220, 203회 6번, 12, 2042번, 11번)

출제 유형: 구조적 다이어그램과 행위적 다이어그램 분류 문제가 자주 나옵니다.

 

- UML의 기본 구성요소: Things, Relationship, Diagram

- 정적 모델은 구조적(Structural) 다이어그램을 사용

Class Diagram 클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현

Object Diagram 객체 간의 관계를 표현

Component Diagram 컴포넌트 간의 관계를 표현

Deployment Diagram 구현 단계에서 사용한다.

Composite Structure Diagram 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현

Package Diagram

- 동적 모델은 행위적(Behavioral) 다이어그램을 사용

Use Case Diagram 사용자의 요구를 분석, 사용사례로 구성되며, 사용 사례 간에는 여러 형태의 관례로 이루어진다.

Sequence Diagram 객체들 사이의 메시지 교환을 나타낸다.

Communication Diagram 객체들이 주고받는 메시지를 표현하는데, 메시지뿐만 아니라 객체들 간의 연관까지 표현한다.

State Diagram 하나의 객체가 가진 상태와 그 상태의 변화에 의한 동작 순서를 나타낸다.

Activity Diagram, Interaction Overview Diagram, Timing Diagram

- 시퀀스 다이어그램의 구성 항목: 객체, 생명선, 실행, 메시지, 시간

 

 

 

 

2. 객체지향 프로그래밍

 

출제 빈도: 회당 2문제 (21년 1회 3번, 17번, 20년 1,2회 2번, 3번, 20년 3회 7번, 13번, 17번, 20년 4회 4번, 5번)

출제 유형: 정의로 단어 찾는 문제가 자주 나옵니다. 특히 클래스와 캡슐화에 대해서 자주 묻습니다.

 

- 객체지향 개념

객체: 함수를 캡슐화한 하나의 소프트웨어 모듈

클래스: 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현한 것, 데이터를 추상화하는 단위

인스턴스화: 클래스로부터 새로운 객체를 생성하는 것

캡슐화: 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정

캡슐화 특징: 인터페이스 단순화, 소프트웨어 재사용 높아짐, 변경 발생시 오류의 파급효과가 적음, 캡슐화된 객체는 정보은닉이 된다.

상속: 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것

다형성: 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체(클래스)가 가지고 있는 고유한 방법으로 응답할 수 있는 능력

집단화: 클래스들 사이의 '부분-전체'관계 또는 '부분'의 관계로 설명되는 연관성을 나타냄

 

객체지향 분석: 소프트웨어를 개발하기 위한 비즈니스를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석해 내는 기법

 

- 객체지향 설계 원칙

ISP(Interface Segregation Principle) 인터페이스 분리 원칙: 클라이언트는 자신이 사용하지 않는 메서드와 의존관계를 맺으면 안 된다.클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안 된다.

DIP(Dependency Inversion Principle) 의존 역전 원칙: 추상화에 의존해야지, 구체화에 의존하면 안된다.

LSP(Liskov Substitution Principle) 리스코프 치환 원칙: 서브타입은 어디에서나 자신의 기반 타입으로 교체할 수 있어야 한다.

SRP(Single Responsibility Principle) 단일 책임 원칙: 한 클래스는 하나의 책임만 가져야 한다.

OCP(Open-Colosed Principle) 개방 폐쇄 원칙: 소프트웨어 요소는 확장에는 열려있으나, 변경에는 닫혀있어야 한다.

 

 

3. 객체지향 분석 방법론

 

출제 빈도: 회당 1.5문제 (21 1 7, 16번, 20 1,2 4번, 14번, 20년 3회 3번, 20년 4회 10번)

출제 유형: 정의로 단어 찾는 문제가 나옵니다. 현재까지는 Coad-Yourdon 방법만 출제되었습니다. 럼바우 방법의 경우는 객체, 동적, 기능과 그 순서를 묻는 문제가 매회 나오고 있습니다.

 

럼바우 방법: 객체 모형 -> 동적 모형 -> 기능 모형

Coad-Yourdon 방법: E-R 다이어그램을 사용하여 객체의 행위를 데이터 모델링하는데 초점을 둔 방법. 객체 식별, 구조 식별, 주체 정의, 속성 및 관계 정의, 서비스 정의 등의 과정으로 구성된다.

Jacobson 방법: Use Case를 강조

Booch 방법: 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하는 분석 방법, 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의한다.

Wirfs-Brock 방법: 분석과 설계 간의 구분이 없고, 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행한다.

 

 

4. GoF 디자인 패턴 분류

 

출제 빈도: 회당 1문제 (21 1 4, 20 1,2 1, 20년 3회 2번, 20419)

출제 유형: 생성 패턴, 구조 패턴, 행위 패턴 별로 디자인 패턴들을 분류하는 문제가 자주 출제되지만 가끔 어떤 디자인 패턴에 대해 설명글을 주고 어떤 디자인 패턴인지 묻는 문제도 나옵니다.

 

생성 패턴:추상 팩토리(Abstract Factory), 빌더(Builder), 팩토리 메소드(Factory Method), 프로토타입(Prototype), 싱글턴(Singleton)

구조 패턴:어댑터(Adapter), 브리지(Bridge), 컴포지트(Composite), 데코레이터(Descorator), 퍼싸드(Facade), 플라이웨이트(Flyweight), 프록시(Proxy)

행위 패턴: 책임 연쇄(Chain of Responsibility), 커맨드(Command), 인터프리터(Interpreter), 반복자(Iterator), 중재자(Mediator), 메멘토(Memento), 옵저버(Observer), 상태(State), 전략(Strategy), 템플릿 메소드(Template Method), 방문자(Visitor)

 

 

5.미들웨어

 

출제 빈도: 회당 1문제 (21 1 5번, 10, 20년 1,2회 17번, 20년 3회 5번, 20 4 18)

출제 유형: 정의를 설명하고 해당하는 미들웨어 솔루션을 묻는 문제가 출제됩니다. 미들웨어에 대한 설명을 묻기도 합니다.

 

- 미들웨어

클라이언트와 서버 간의 통신을 담당하는 시스템 소프트웨어

분산 컴퓨팅 환경에서 서로 다른 기종 간의 하드웨어나 프로토콜, 통신환경 등을 연결하여 응용프로그램과 운영환경 간에 원만한 통신이 이루어질 수 있게 서비스를 제공하는 소프트웨어

 

- 미들웨어 솔루션

RPC: 원격 프로시저를 로컬 프로시저처럼 호출하는 방식의 미들웨어

MOM: 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어

TP-Monitor: 트랜잭션을 처리 및 감시하는 미들웨어

ORB: 객체 지향 미들웨어로 코바(CORBA) 표준 스펙을 구현

WAS: 동적인 콘텐츠를 처리하기 위해 사용되는 웹 환경을 구현하기 위한 미들웨어

 

 

6. CASE에 대한 설명

 

출제 빈도: 회당 1문제 (21 1 11, 201,29, 20319, 2043)

출제 유형: CASE에 대한 설명으로 옳은 것, 혹은 옳지 않은 것을 묻는 문제가 개정된 이후로 매 회마다 한 문제씩 출제되고 있습니다.

 

소프트웨어 모듈의 재사용성이 향상된다.

소프트웨어 개발 과정을 자동화하는 기법을 통해 소프트웨어 품질이 향상된다.

소프트웨어 유지보수를 간편하게 수행할 수 있다.

표준화된 개발 환경 구축 및 문서 자동화 기능을 제공한다.

작업 과정 및 데이터 공유를 통해 작업자 간 커뮤니케이션을 증대한다.

주요 기능: 그래픽 지원, 소프트웨어 생명주기 전 단계의 연결, 다양한 소프트웨어 개발 모형 지원

 

 

7. 애자일

 

출제 빈도: 회당 0.75문제 (21 1 18, 20 3 4번, 20년 4회 17번)

출제 유형: 애자일의 가치나 애자일 방법론에 대해 물어봅니다.

 

- 애자일 소프트웨어 개발 기법의 가치

프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다.

계약 협상보다는 고객과의 협업에 더 가치를 둔다.

계획을 따르기보다는 변화에 대응하는 것에 더 가치를 둔다.

이해하기 좋은 문서보다는 실제 작동하는 소프트웨어에 더 가치를 둔다.

 

- 애자일 방법론

기능 중심 개발, 스크럼, 익스트림 프로그래밍

 

 

 

 

 

 

8. 코드

 

출제 빈도: 회당 0.75문제 (20년 1,2회 5번, 20 3 10번, 20년 4회 7번)

출제 유형: 코드의 기능에 대해 물어보기도 하고, 각 코드 설계의 종류에 대해 이해하고 있는지 묻는 문제들이 출제됩니다.

 

- 코드의 기본 기능

표준화, 분류, 식별

 

- 코드 설계

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

블록 코드: 코드화 대상 항목 중에서 공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 방법 (구분 코드라고도 함)

순차 코드: 자료의 발생 순서, 크기 순서 등 일정 기준에 따라서 최초의 자료부터 차례로 일련번호를 부여하는 방법

표의 숫자 코드: 코드화 대상 항목의 성질, 즉 길이, 넓이, 부피, 지름, 높이 등의 물리적 수치를 그대로 코드에 적용시키는 방법 (유효 숫자 코드라고도 함)

10진 코드: 코드화 대상 항목을 0~9까지 10진 분할하고, 다시 그 각각에 대하여 10진 분할하는 방법, (도서 분류식 코드라고도 함)

그룹 분류 코드: 코드화 대상 항목을 일정 기준에 따라 대분류, 중분류, 소분류 등으로 구분하고 각 그룹 안에서 일련번호를 부여하는 방법

합성 코드: 필요한 기능을 하나의 코드로 수행하기 어려운 경우 2개 이상의 코드를 조합하여 만드는 방법

 

 

9. 자료 사전 기호

 

출제 빈도: 회당 0.75문제 (201,27, 20316, 20413)

출제 유형: 기호와 뜻을 매칭 시키는 문제가 출제됩니다.

 

{} 반복

** 주석

= 정의

() 생략

+ 연결

[] 선택

 

 

10. 데이터 흐름도 (DFD, Data Flow Diagram)

 

출제 빈도: 회당 0.75문제 (20 1,2 15, 20 3 18번, 20년 4회 9번)

출제 유형: 데이터 흐름도의 구성요소를 묻거나 데이터 흐름도의 특징을 묻습니다.

 

 - 데이터 흐름도의 구성요소

process, data flow, data store, terminator

 

- 데이터 흐름도에 대한 설명

자료 흐름 그래프 또는 버블 차트라고도 한다.

구조적 분석 기법에 이용된다.

DFD의 요소는 화살표, , 사각형, 직선(단선/이중선)으로 표시한다.

 

 

11. 요구사항 분석

 

출제 빈도: 회당 0.75 문제 (20년 1,2회 18번, 20년 3회 1번, 20년 4회 16번)

출제 유형: 요구사항 분석에 해당하는 것이나 요구사항 분석 기술을 묻거나, 요구사항 분석의 특징들을 물어봅니다.

자주 나오는 오답을 암기하는 것도 효과적인 방법인 것 같습니다.

 

- 요구사항 분석에 해당하는 것

비용과 일정에 대한 제약 설정,타당성 조사, 요구사항 정의 문서화

 

- 요구 분석 과정에 대한 설명 

분석 결과의 문서화를 통해 향후 유지보수에 유용하게 활용할 수 있다.

자료 흐름도,자료 사전 등이 효과적으로 이용될 수 있다.

보다 구체적인 명세를 위해 소단위 명세서가 활용될 수 있다.

 

오답

개발 비용이 가장 많이 소요되는 단계이다

 

- 요구사항 분석 시에 필요한 기술

청취와 인터뷰 질문 기술

분석과 중재기술

관찰 및 모델 작성 기술

 

오답

설계 및 코딩 기술

 

 

12. 디자인 패턴을 이용한 소프트웨어 재사용으로 얻는 장점

 

출제 빈도: 회당 0.5문제 (21 1 15, 2048)

 

소프트웨어 코드의 품질을 향상시킬 수 있다

개발자들 사이의 의사소통을 원활하게 할 수 있다.

소프트웨어의 품질과 생산성을 향상시킬 수 있다.

소프트웨어 구조 파악이 용이하다.

객체지향 설계 및 구현의 생산성을 높이는데 적합하다.

재사용을 위한 개발 시간이 단축된다.

 

오답

개발 프로세스를 무시할 수 있다.

절차형 언어와 함께 이용될 때 효율이 극대화된다.

 

 

 

 

13. 바람직한 소프트웨어 설계 지침

 

출제 빈도: 회당 0.5문제 (2116, 20420)

 

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

이식성을 고려한다.

적당한 모듈의 크기를 유지한다.

모듈 간의 접속 관계를 분석하여 복잡도와 중복을 줄인다.

모듈 간의 결합도는 약할수록 바람직하다.

모듈 간의 효과적인 제어를 위해 설계에서 계층적 자료 조직이 제시되어야 한다.

 

 

14. XP(eXtreme Programing)

 

출제 빈도: 회당 0.5문제 (20년 1,2회 10번, 20년 4회 1번)

출제 유형: XP의 가치나 실천방법이 아닌 것을 고르는 문제들이 나옵니다.

 

5가지 가치: 용기, 의사소통, 피드백, 단순성, 존중

XP 주요 실천 방법: Pair Programming, Test-Driven Development, Whole Team, Continuous Integration, Design Improvement, Small Releases, Collective Ownership

 

 

15. 요구사항 검증 방법

 

출제 빈도: 회당 0.5문제 (201,28, 20320)

출제 유형: 방법을 설명하고 어떤 방법인지를 묻습니다.

 

동료검토: 요구사항 명세서 작성자가 명세서 내용을 직접 설명하고 동료들이 이를 들으면서 결함을 발견하는 검토 방법

워크스루: 검토 회의 전에 요구사항 명세서를 미리 배포하여 사전 검토한 후에 짧은 검토 회의를 통해 결함을 발견하는 검토 방법

인스펙션: 요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하면서 결함을 발견하는 형태의 검토 방법

 

 

16. UI 설계 원칙

 

출제 빈도: 회당 0.5문제 (201,213, 2039)

출제 유형: 각 원칙에 대한 설명을 주고 어떤 원칙인지 묻거나, UI 설계 원칙이 아닌 것을 묻습니다.

 

직관성: 누구나 쉽게 이해하고 사용할 수 있어야 한다.

유효성: 사용자의 목적을 정확하고 완벽하게 작성해야 한다.

학습성: 누구나 쉽게 배우고 익힐 수 있어야 한다.

유연성: 사용자의 요구사항을 최대한 수용하고 실수를 최소화해야 한다.

 

 

17. 그 외 출제된 문제들

 

* fan-in, fan-out (21 1 8)

fan-in: 모듈 바로 위에 붙어 있는 선의 개수

fan-out: 모듈 바로 아래에 붙어 있는 선의 개수

 

* 현행 시스템 분석에서 고려하는 항목 (21 1 9)

DBMS 분석, 네트워크 분석, 운영체제 분석

 

오답

인적 자원 분석

 

* DBMS 분석 시 고려사항 (201,211)

가용성, 성능, 상호 호환성

 

* HIPO(Hierarchy Input Process Output)에 대한 설명 (201,212)

HIPO 차트 종류에는 가시적 도표, 총체적 도표, 세부적 도표가 있다.

기능과 자료의 의존 관계를 동시에 표현할 수 있다.

보기 쉽고 이해하기 쉽다.

 

* 공통 모듈에 대한 명세 기법 (201,219)

정확성: 시스템 구현 시 해당 기능이 필요하다는 것을 알 수 있도록 정확히 작성

명확성: 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확하게 작성

완전성: 시스템 구현을 위해 필요한 모든 것을 기술

일관성: 공통 기능들 간 상호 충돌이 발생하지 않도록 작성

추적성: 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성

 

* 소프트웨어 설계 시 구축된 플랫폼의 성능 특성 분석에 사용되는 측정 항목 (201,26)

응답 시간,가용성, 사용률

 

* 시스템 연계 기술 (21 1 2)

DB Link: DB에서 제공하는 DB Link 객체를 이용하는 방식

소켓: 통신을 위한 프로그램을 생성하여 포트를  할당하고, 클라이언트의 통신 요청 시 클라이언트와 연결하는 내외부 송수신 연계기술

 

 

다른 과목 보러 가기

 

2과목 - 소프트웨어 개발

3과목 - 데이터베이스 구축

4과목 - 프로그래밍 언어 활용

5과목 - 정보시스템 구축 관리

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기