본문 바로가기

혼자 공부하기/정보처리기사

2022년 4월 24일 필기 기출문제(풀이중)

728x90
반응형

1과목: 소프트웨어 설계

 

 

1. UML(Unified Modeling Language): 시스템 분석, 설계 구현 등 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어

  - 6개의 구조 다이어그램(시스템 구조 표현)

1) 클래스 다이어그램(class diagram)

2) 객체 다이어그램(object diagram)

3) 컴포넌트 다이어그램(component diagram)

4) 배치 다이어그램(deployment diagram)

5) 복합체 다이어그램(composite structure diagram)

6) 패키지 다이어그램(package diagram)

 

 

  - 7개의 행위 다이어그램(시스템 동작 표현)

1) 유스케이스 다이어그램(use case diagram)

2) 순차 다이어그램(sequence diagram) 

    → 객체 간의 동적 상호작용을 시간 개념을 중심으로 모델링

    → 시스템의 동적 측면을 모델링 하기 위하여 사용

    → 일반적으로 다이어그램의 수직 방향이 시간의 흐름을 나타냄

    → 회귀 메시지(Self-Message), 제어블록(Statement block)등으로 구성 

3) 커뮤니케이션 다이어그램(communication diagram)

4) 상태 다이어그램(state diagram)

5) 활동 다이어그램(activity diagram)

6) 상호작용 개요 다이어그램(interaction overview diagram)

7) 타이밍 다이어그램(timing diagram)

 

 

 

2. 메시지 지향 미들웨어(Message-Oriented Middleware, MOM) 관련 문제

 

미들웨어; 분산 컴퓨팅 환경에서 서로 다른 기종 간의 하드웨어나 프로토콜, 통신 환경 등을 연결하여 운영체제와 응용 프로그램, 또는 서버와 클라이언트 사이에서 원만한 통신이 이루어지도록 다양한 서비스를 제공

 

종류

1) DB(DataBase)

  - DB는 데이터베이스 벤더에서 제공하는 클라이언트에서 원격의 데이터베이스와 연결하기 위한 미들웨어

  - DB를 사용하여 시스템을 구축하는 경우 보통 2-Teir 아키텍처라고 함

2) RPC(Remote Procedure Call): 원격 프로시저 호출

  - 응용 프로그램의 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 방식의 미들웨어

3) MOM(Message Oriented MiddleWare): 메시지 지향 미들웨어

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

  - 온라인업무보다는 이기종 분산 데이터 시스템의 데이터 동기를 위해 많이 사용

  - 서로 다른 플랫폼에서 독립적으로 실행되는 소프트웨어 간의 상호 작용을 통해 하나의 통합된 시스템처럼 동작되도록 함

4) TP-Monitor(Transaction Processing Monitor): 트랙잭션 처리 모니터

  - 항공기나 철도 예약 업무 등과 같은 온라인 트랜잭션 업무에서 트랜잭션을 처리 및 감시하는 미들웨어

  - 사용자 수가 증가해도 빠른 응답 속도를 유지해야 하는 업무에 주로 사용

5) ORB(Object Request Borker): 객체 요청 브로커

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

6) WAS(Web Application Server): 웹 어플리케이션 서버

  - 정적인 콘텐츠를 처리하는 웹 서버와 달리 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어

  - HTTP 세션 처리를 위한 웹 서버 기능뿐만 아니라 미션-크리티컬한 기업 업무까지 JAVA. EJB 컴포넌트 기반으로 구현이 가능

 

 

3. XP(eXtreme Programming) 기법

수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법이다.

  - XP는 짧고 반복적인 개발 주기, 단순한 설계, 고객의 적극적인 참여를 통해 소프트웨어를 빠르게 개발하는 것을 목적으로 함.

  - 릴리즈의 기간을 짧게 반복하면서 고객의 교구사항 반영에 대한 가시성을 높임

  - 릴리즈 테스트마다 고객을 직접 참여시킴으로써 요구한 기능이 제대로 작동하는지 고객이 직접 확인할 수 있음

  - 비교적 쇼규모 인원의 개발 프로젝트에 효과적

 

 

 

4. 유스케이스(Use Case)의 구성 요소 간의 관계

UML(Unified Modeling Language)은 시스템 분석, 설계, 구현 등 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어

  - 각각의 다이어그램은 사물과 사물 간의 관계를 용도에 맞게 표현

  - UML을 이용하여 시스템의 구조를 표현하는 6개의 다이어그램과 시스템 동작을 표현하는 7개의 행위 다이어그램을 작성할 수 있음(1번 참고)

  - UML의 구성요소에는 사물(Things), 관계(Relationships), 다이어그램(Diagram) 등이 있음.

 

* 유스케이스 다이어그램: 개발될 시스템과 관련된 외부요소들, 즉 사용자와 다른 외부 시스템들이 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점(View)에서 표현한 것

* 유스케이스 다이어그램의 구성 요소

 - 시스템/시스템 범위

 - 액터

 - 유스케이스

 - 관계: 연관관계, 포함관계, 확장관계, 일반화 관계

 

 

 

5. 요구사항 정의

요구사항 유형

기술하는 내용에 따라,

  - 기능 요구사항: 시스템이 실제로 어떻게 동작하는지에 관점을 둔 요구사항

  - 비기능 요구사항: 시스템 구축에 대한 성능, 보안, 품질, 안정 등에 대한 성능, 보안, 품질, 안정성 등으로 실제 수행에 보조적인 요구사항

 

기술 관점과 대상의 범위에 따라,

  - 시스템 요구사항

  - 사용자 요구사항

 

 

 

6. 정보공학 방법론에서 데이터베이스 설계의 표현으로 사용하는 모델링 언어: Entity-Relationship Diagram(개체 관계도)

 

 

7. 미들웨어(Middleware): 분산 컴퓨팅 환경에서 서로 다른 기종 간의 하드웨어나 프로토콜, 통신 환경 등을 연결하여 운영체제와 응용 프로그램, 또는 서버와 클라이언트 사이에서 원만한 통신이 이루어지도록 다양한 서비스를 제공

  - 사용자가 미들웨어의 내부 동작을 확인하려면 별도의 응용 소프트웨어를 사용하여야 함

 

8. 사용자 인터페이스(User Interface): 사용자와 시스템 간의 상호작용이 원활하게 이루어지도록 도와주는 장치나 소프트웨어를 의미

사용자 인터페이스 설계 지침

  - 사용자 중심: 사용자가 쉽게 이해하고 편리하게 사용할 수 있는 환경을 제공하며, 실사용자에 대한 이해가 바탕이 되어야 함

  - 사용성: 사용자가 소프트웨어를 얼마나 빠르고 쉽게 이해할 수 있는지, 얼마나 편리하고 효율적으로 사용할 수 있는지를 말하는 것으로, 사용자 인터페이스 설계시 가장 우선적으로 고려해야 함

  - 일관성: 버튼이나 조작 방법 등을 일관성 있게 제공하므로 사용자가 쉽게 기억하고 습득할 수 있게 설계하여야 함

  - 단순선: 조작 방법을 단순화시켜 인지적 부담을 감소시켜야 함

  - 결과 예측 가능: 작동시킬 기능만 보고도 결과를 미리 예측할 수 있게 설계하여야 함

  - 가시성: 메인 화면에 주요 기능을 노출시켜 최대한 조작이 쉽도록 설계하여야 함

  - 심미성: 디자인적으로 완성도 높게 글꼴이나 색상을 적용하고 그래픽 요소를 배치하여 가독성을 높일 수 있도록 설계하여야 함

  - 표준화: 기능 구조와 디자인을 표준화하여 한 번 학습한 이후에는 쉽게 사용할 수 있도록 설계하여야 함

  - 접근성: 사용자의 연령, 성별, 인종 등 다양한 계층이 사용할 수 있도록 설계하여야 함

  - 명확성: 사용자가 개념적으로 쉽게 인지할 수 있도록 설계하여야 함

  - 오류 발생 해결: 오류가 발생하면 사용자가 쉽게 인지할 수 있도록 설계하여야 함

 

 

9. 객체지향(Object-Oriented): 현실세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때에도 객체들을 조립해서 작성할 수 있는 기법

 

주요 구성 요소과 개념

  - 객체(Object): 데이터와 데이터를 처리하는 함수를 묶어놓은(캡슐화 한) 하나의 소프트웨어 모듈

  - 클래스(Class): 공통된 속성과 연산(행위)을 갖는 객체의 집합, 객체의 일반적인 타입(Type)을 의미

  - 캡슐화(Encapsulation): 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것을 의미

  - 상속(Inheritance): 이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스(자식 클래스)가 물려받는 것

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

  * 응용 프로그램 상에서 하나의 함수나 연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 하는 것

예 1) + 연산자의 경우 숫자 클래스에서는 덧셈, 문자 클래스에서는 문자열의 연결 기능으로 사용

예 2) 오버로딩(overloading): 메소드의 이름은 같지만 인수를 받는 자료형과 개수를 달리 하여 여러 기능을 정의할 수 있음.

예 3) 오버라이딩(Overriding, 메소드 재정의): 사우이 클래스에서 정의한 메소드와 이름은 같지만 메소드 안의 실행 코드를 달리하여 자식 클래스에서 재정의해서 사용할 수 있음.

  - 연관성(Relationship): 두 개 이상의 객체(클래스)들이 상호 참조하는 관계

 

 

10. 인터페이스

  - 소프트웨어에 의해 간접적으로 제어되는 장치와 소프트웨어를 실행하는 하드웨어

  - 기존의 소프트웨어와 새로운 소프트웨어를 연결하는 소프트웨어

  - 순서적 연산에 의해 소프트웨어를 실행하는 절차

 

 

 

11. 객체

  - 데이터와 데이터를 처리하는 함수를 묶어 놓은(캡슐화 한) 하나의 소프트웨어 모듈

  - 객체는 독립적으로 식별 가능한 이름을 가지고 있다.

  - 객체가 가질 수 있는 조건을 상태(State)라고 하는데, 일반적으로 산태는 시간에 따라 변한다.

  - 객체와 객체는 상호 연관성에 의한 관계가 형성된다.

  - 객체가 반응할 수 있는 메시지(Message)의 집합을 행위라고 하며, 객체는 행위의 특징을 나타낼 수 있다.

  - 객체는 일정한 기억장소를 가지고 있다.

 

 

12. 객체의 개념

  - 캡슐화(Encapsulation): 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것을 의미

  - 상속(Inheritance): 이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스(자식 클래스)가 물려받는 것

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

  - 연관성(Relationship): 두 개 이상의 객체(클래스)들이 상호 참조하는 관계

 

 

13. 소프트웨어 생명 주기

  - 폭포수모형: 소프트웨어 개발이 이전 단계로 돌아갈 수 없다는 전제 하에 각 단계를 확실히 매듭 짓고 그 결과를 철저하게 검토하여 승인 과정을 거친 후에 다음 단계를 진행하는 개발 방법론

  - 프로토타입 모형: 사용자의 요구사항을 정확히 파악하기 위하여 실제 개발될 소프트웨어에 대한 견본(시제)품을 만들어 최종 결과물을 예측하는 모형

  - 나선형 모형: 폭포수모형과 프로토타입의 모형의 장점에 위험 분석 기능을 추가한 모형

  - 애자일 모형: 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발과정을 진행

 

 

14. 컴포넌트(Component)

명백한 역할을 가지고 독립적으로 존재할 수 있는 시스템의 부분으로, 넓은 의미에서는 재사용되는 모든 단위라고 볼 수 있으며, 인터페이스를 통해서만 접근할 수 있는 것.

 

 

15. 디자인패턴: 각 모듈의 세분화된 역할이나 모듈들 간의 인터페이스와 같은 코드를 작성하는 수준의 세부적인 구현방안을 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미

 

패턴의 유형에 따라 생성 패턴(5개), 구조 패턴(7개), 행위 패턴(11개) 총 23개의 패턴으로 구성

 

* 생성 패턴: 객체의 생성과 관련된 패턴

  - 객체의 생성과 참조 과정을 캡슐화 하여 개체가 생성되거나 변경되어도 프로그램의 구조에 영향을 크게 받지 않도록 하여 프로그램에 유연성을 더해줌

  - 추상팩토리, 빌더, 팩토리 메소드, 프로토타입, 싱글톤

 

* 구조 패턴: 클래스나 객체들을 조합하여 더 큰 구조로 만들 수 있게 해주는 패턴

  - 구조가 복잡한 시스템을 개발하기 쉽게 도와줌

  - 어댑터, 브리지, 컴포지트, 데코레이터, 퍼싸드, 틀라이웨이트, 프록시

 

* 행위 패턴: 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴

  - 하나의 객체로 수행할 수 없는 작업을 여러 객체로 분배하면서 결합도를 최소화 할 수 있도록 도와줌

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

 

 

16. 피드백: UI와 관련된 기본 개념 중 하나. 시스템의 상태와 사용자의 지시에 대한 효과를 보여주어 사용자가 명령에 대한 진행 상황과 표시된 내용을 해석할 수 있도록 도와주는 것

 

 

17. 사용자 인터페이스의 구분

  - CLI(Command Line Interface): 명령과 출력이 텍스트 형태로 이루어지는 인터페이스

  - GUI(Gaphical User Interface): 아이콘이나 메뉴를 마우스로 선택하여 작업을 수행하는 그래픽 환경의 인터페이스

  - NUI(Natural User Interface): 사용자의 말이나 행동으로 기기를 조절하는 인터페이스

  - VUI(Voice User Interface): 사람의 음성으로 기기를 조작하는 인터페이스

  - OUI(Organic User Interface): 모든 사물과 사용자 간의 상호작용을 위한 인터페이스로, 소프트웨어가 아닌 하드웨어 분야에서 사물 인터넷, 가상현실, 증강현실, 혼합현실 등과 함께 대두되고 있음.

 

 

18. 소프트웨어 모델링

  - 모델링 작업의 결과물은 다른 모델링 작업에 영향을 줄 수 있다.

  - 구조적 방법론에는 DFD(Data Flow Diagram), DD(Data Dictionary) 등을 사용하여 요구 사항의 결과를 표현

  - 객체지향 방법론에는 UML 표기법을 사용한다

  - 소프트웨어 모델을 사용할 경우 개발될 소프트웨어에 대한 이해도 및 이해 당사자 간의 의사소통 향상에 도움이 된다.

 

 

19. 주요 UML 다이어그램 중 유스케이스(Use Case) 다이어그램

  - 개발될 시스템과 관련된 외부 요소들, 즉 사용자와 다른 외부 시스템들이 ㅐ발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점(View)에서 표현

  - 구성요소: 시스템 범위, 액터, 유스케이스, 관계

  * 시스템/시스템 범위(System Scope): 시스템 내부에서 수행되는 기능들을 외부 시스템과 구분하기 위해 시스템 내부의 유스케이스들을 사각형으로 묶어 시스템의 범위를 표현함

  * 액터: 시스템과 상호작용을 하는 모든 외부 요소로, 사람이나 외부 시스템을 의미함

    주액터: 시스템을 사용하면서 이득을 얻는 대상으로, 주로 사람

    부액터(시스템액터): 주액터의 목적을 달성하기 위해 시스템에 서비스를 제공하는 외부 시스템으로, 조직이나 기관등이 될 수 있음

  * 유스 케이스(Use Case): 사용자가 보는 관점에서 시스템이 액터에게 제공하는 서비스 또는 기능을 표현한 것

  * 관계(Relationship): 액터와 유스케이스, 유스케이스와 유스케이스 사이에서 나타날 수 있으며, 연관관계, 포함관계, 확장관계, 일반화 관계를 표현할 수 있음

 

 

20. 아키텍처 패턴: 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미

* 레이어 패턴(Layers Pattern)

  -  시스템을 계층(Layer)으로 구분하여 구성하는 고전적인 방법 중 하나

* 클라이언트 - 서버 패턴(Client - Server Pattern)

  - 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴

* 파이프 필터 패턴(Pipe-Filter Pattern)

  - 데이터 스트림 절차의 각 단계를 필터 컴포넌트로 캡슐화하여 파이프를 통해 데이터를 전송하는 패턴

* 모델-뷰-컨트롤러 패턴(Model-View-Controller Pattern)

  - 서브시스템을 3개의 부분으로 구조화하는 패턴이며, 각 부분의 역할은 다음과 같다

  모델: 서스 시스템의 핵심 기능과 데이터를 보관한다

  뷰: 사용자에게 정보를 표시한다

  컨트롤러: 사용자로부터 입력된 변경 요청을 처리하기 위해 모델에게 명령을 보낸다

* 기타 패턴: 마스터-슬래이프 패턴, 브로커 패턴, 피어-투-피어 패턴, 이벤트-버스 패턴, 블랙보드 패턴, 인터프리터 패턴

 

 

 

2과목: 소프트웨어 개발

21. 통합테스트: 단위테스트가 끝난 모듈을 통합하는 과정에서 발생하는 오류 및 결함을 찾는 테스트 기법

  - 하향식 통합 테스트: 프로그램의 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 방식

     주요제어모듈 기준으로 아래 단계로 이동하며 통합하는데 이때 깊이 우선 통합법이나 넓이 우선 통합법을 사용

     테스트 초기부터 사용자에게 시스템 구조를 보여줄 수 있다. 

    상위 모듈에서는 테스트 케이스를 사용하기 어렵다.

     주요 종속 모듈들은 스텁(Stub)으로 대체

  - 상향식 통합 테스트: 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트

    스텁(Stub)은 필요하지 않으나 하나의 주요 제어 모듈과 관련된 종속 모듈 그룹인 클러스터(Cluster)가 필요

 

 

22. 이분검색(이진검색, Bineary Search)

  - 전체 파일을 두 개의 서브파일로 분리해가면서 Key 레코드를 검색하는 방식

  - 반드시 순서화된 파일이어야 검색이 가능

  - 찾고자 하는 Key 값을 파일의 중간 레코드 Key 값과 비교해가면서 검색

 

 

728x90
반응형