Post

정보처리기사 필기 1과목 최종 정리

정보처리기사 필기 제 1과목인 소프트웨어 설계부분을 정리하였습니다.


객체지향 기법

  • 캡슐화(Encapsulation)
    • 데이터(속성)과 데이터를 처리하는 함수를 하나로 묶는 것
    • 정보은닉과 밀접한 관계
    • 재사용이 용이
  • 상속성(Inheritance)
    • 상위클래스(부모 클래스)의 속성과 메서드를 하위 클래스(자식 클래스)가 물려받는 것
  • 다형성(Polymorphism)
    • 같은 함수나 기능에 대해 다른 정의를 통해 각 클래스가 다른 행동을 할 수 있게 해주는 것
  • 추상화(Abstraction)
  • 정보은닉(Information Hiding) : 인터페이스를 통해서만 접근 가능하도록


<문제>

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

1번. 메시지(Message)

2번. 캡슐화(Encapsulation)

3번. 다형성(Polymorphism)
4번. 상속(Inheritance)


객체 지향 설계 원칙(SOLID)

  • 단일 책임 원칙(SRP; Single Responsibility Principle)
    • 객체는 단 하나의 책임만 가져야 한다.
    • 응집도는 높고, 결합도는 낮게 설계하는 것
  • 개방-폐쇄 원칙(OCP; Open-Closed Principle)
    • 기존 코드 변경 없이 기능을 추가할 수 있도록 설계
    • 공통 인터페이스를 하나의 인터페이스로 묶어 캡슐화 (대표적인 방법)
  • 리스코프 치환 원칙(LSP; Liskov Substitution principle)
    • 자식클래스는 최소한 자신의 부모클래스에서 가능한 행위는 수행할 수 있어야 한다.
    • 따라서 자식클래스는 부모클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록.
  • 인터페이스 분리 원칙(ISP; Interface Segregation Principle)
    • 인터페이스가 갖는 하나의 책임
    • 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다는 원칙
  • 의존 역전 원칙(DIP; Dependency Inversion Principle)
    • 의존관계가 성립될때, 추상성이 낮은 클래스보다 추상성이 높은 클래스와 의존관계를 맺어야함
    • 일반적으로 인터페이스를 활용하면 이 원칙은 준수된다.

객체지향 분석 방법론

1) 럼바우(Rumbaugh) 의 분석 기법

  • 객체(Object) 모델링
    • 정보 모델링
    • 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시
  • 동적(Dynamic) 모델링
    • 상태 다이어그램(상태도)을 이용해 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현
  • 기능(Functional) 모델링
    • 자료 흐름도(DFD)를 이용해 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현

+) 자료흐름도(DFD)
프로세스(Process), 자료 흐름(Data Flow), 자료 저장소(Data Store), 단말(Terminator)로 구성

+) 자료 사전(DD; Data Dictionary)

기호의미
=자료 정의
+자료 연결
( )자료 생략
[ ]자료 선택
{ }자료 반복
* *자료 설명

2) Coad와 Yourdon 방법

  • E-R 다이어그램을 사용해 객체의 행위를 모델링
  • 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성하는 기법

3) Jacobson 방법

Use Case를 강조하여 사용하는 분석방법

4) Booch(부치) 방법

미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용


<문제>

Q. 객체지향 분석 방법론 중 Coad-Yourdon 방법에 해당하는 것?

1번. E-R 다이어그램을 사용하여 객체의 행위를 데이터 모델링하는데 초점을 둔 방법이다.

2번. 객체, 동적, 기능 모델로 나누어 수행하는 방법이다.
3번. 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하는 방법이다.
4번. Use-Case를 강조하여 사용하는 방법이다.

2번은 ‘럼바우 방법’, 3번은 ‘부치 방법’, 4번은 ‘Jacobson’ 방법


소프트웨어 생명주기 모형 (폭포수, 프로토타입, 나선형, 애자일 모형 등)

1) 폭포수 모형

  • 각 단계를 확실히 매듭짓고 그 결과를 철저하게 검토하여 승인 과정을 거친 후에 다음 단계를 진행
  • 보헴(Boehm) 이 제시한 고전적 생명 주기 모형
  • 개발 과정에서 발생하는 요구사항 반영하기 어려움

2) 나선형 모형(Spiral Model; 점진적 모형)

  • 보헴(Boehm) 이 제안한 폭포수 모형과 프로토타입 모형의 장점에 위험 분석 기능 을 추가한 모형
  • 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발
  • ‘계획 수립, 위험분석, 개발 및 검증, 고객 평가’ 과정이 반복적으로 수행된다.

3) 애자일 모형(Agile Model)

  • 고객 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 과정 진행
  • 스크럼(Scrum), XP(eXtreme Programming) 등

애자일 개발 핵심가치(4가지)

  • 프로세스, 도구보다 개인과의 상호작용에 더 가치를 둠
  • 방대한 문서보다 실행되는 SW에 더 가치를 둠
  • 계약 협상보단 고객과 협업에 더 가치를 둠
  • 계획을 따르기보단 변화에 반응하는 것에 더 가치를 둠

XP(eXtreme Programming)

  • 수시로 발생하는 고객 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법
  • 짧고 반복적인 개발 주기, 단순한 설계, 고객의 적극적 참여를 통해 빠르게 개발하는 것을 목적
  • 자동화된 테스팅 도구를 사용해 테스트를 지속적으로 수행

XP의 핵심 가치

의사소통(Communication), 단순성(Simplicity), 용기(Courage), 존중(Respect), 피드백(Feedback)


요구사항

일반적으로 기술하는 내용에 따라 ‘기능 요구사항’, ‘비기능 요구사항’으로 구분한다.

기능 요구사항

  • 시스템이 무엇을 하는지, 어떤 기능을 하는지
  • 시스템의 입출력으로 무엇이 포함되어야하는지, 어떤 데이터를 저장하거나 연산을 수행해야하는지
  • 시스템이 반드시 수행해야 하는 기능
  • 사용자가 시스템을 통해 제공받기를 원하는 기능

비기능 요구사항

  • 시스템 장비 구성 요구사항 : 하드웨어, 소프트웨어, 네트워크 등
  • 성능 요구사항 : 처리 속도 및 시간, 처리량, 동적 정적 적용량, 가용성 등
  • 인터페이스 요구사항
  • 데이터 요구사항
  • 테스트 요구사항
  • 보안 요구사항
  • 품질 요구사항
  • 제약사항
  • 프로젝트 관리 요구사항
  • 프로젝트 지원 요구사항


문제

Q. 다음은 서점 시스템의 요구사항에 대한 내용이다. 비기능 요구사항에 대한 설명은?

1번. 사용자는 로그인 또는 비로그인을 통해 책을 구매할 수 있어야 한다.
2번. 사용자는 책을 현금으로 구매하였을 경우 현금영수증 처리를 할 수 있어야 한다.

3번. 동시에 100명 이상이 주문을 요청해도 처리할 수 있어야 한다.

4번. 사용자가 마이페이지에 저장해 놓은 도서 목록은 일정 기간 동안 그대로 저장되어 있어야 한다.

3번은 비기능 요구사항 중 ‘시스템 품질’에 관한 요구사항이다.
나머지는 기능 요구사항들이다.


문제

Q. 요구사항 분석에서 비기능적(Nonfunctional) 요구에 대한 설명으로 옳은 것은?

1번. 시스템의 처리량(Throughput), 반응 시간 등의 성능 요구나 품질 요구는 비기능적 요구에 해당하지 않는다.

2번. '차량 대여 시스템이 제공하는 모든 화면이 3초 이내에 사용자에게 보여야 한다'는 비기능적 요구이다.

3번. 시스템 구축과 관련된 안전, 보안에 대한 요구사항들은 비기능적 요구에 해당하지 않는다.
4번. ‘금융 시스템은 조회, 인출, 입금, 송금의 기능이 있어야 한다’는 비기능적 요구이다.


상향식 설계와 하향식 설계

상향식 설계

  • 시스템의 큰 구조를 계획하고, 하위 모듈들을 세분화하여 구체적인 동작 방식을 정의
  • 각 모듈의 입출력, 기능, 인터페이스 등을 상세히 정의하고, 이후 모듈들 간의 연결을 고려해 전체 시스템을 통합함
  • 먼저 요구사항 분석해 큰 구조를 설계하고, 그 구조에서 하위 모듈들을 정의한 후 각 모듈을 상세히 구현하는 방식으로 개발

하향식 설계

  • 세부적인 기능을 가진 모듈을 구현하고, 이 모듈들을 조합해 큰 구조를 형성
  • 이때 각 모듈은 독립적으로 테스트할 수 있도록 설계, 그 다음 모듈들을 조합해 전체 시스템 완성


문제

Q. 설계 기법 중 하향식 설계 방법과 상향식 설계 방법에 대한 비교 설명으로 가장 옳지 않은 것은?

1번. 하향식 설계에서는 통합 검사 시 인터페이스가 이미 정의되어 있어 통합이 간단하다.
2번. 하향식 설계에서 레벨이 낮은 데이터 구조의 세부 사항은 설계 초기 단계에서 필요하다.
3번. 상향식 설계는 최하위 수준에서 각각의 모듈들을 설계하고 이러한 모듈이 완성되면 이들을 결합하여 검사한다.

4번. 상향식 설계에서는 인터페이스가 이미 성립되어 있지 않더라도 기능 추가가 쉽다.

4번이 틀린 설명이다.
왜냐하면 상향식 설계는 인터페이스가 이미 성립되어있어야만 기능 추가가 가능하기때문


다이어그램(Diagram)

사물과 관계를 도형으로 표현한 것이다.
정적 모델링에선 주로 구조적 다이어그램을 사용하고
동적 모델링에선 주로 행위 다이어그램을 사용한다.


  • 구조적 다이어그램의 종류
종류내용
클래스 다이어그램클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현한다.
시스템의 구조를 파악하고 구조상의 문제점을 도출할 수 있다.
객체 다이어그램인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현한다.
럼바우 객체지향 분석 기법에서 객체 모델링에 활용된다.
컴포넌트 다이어그램실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현한다.
배치 다이어그램노드와 의사소통(통신) 경로로 표현한다.
복합체 구조 다이어그램클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현한다.
패키지 다이어그램유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현한다.
  • 행위(Behavioral) 다이어그램의 종류
종류내용
유스케이스 다이어그램사용자의 요구를 분석하는 것으로 기능 모델링 작업에 사용한다.
사용자와 사용 사례(Use Case)로 구성되며, 사용 사례 간에는 여러 형태의 관계로 이루어짐.
시퀀스 다이어그램상호 작용하는 시스템이나 객체들이 주고 받는 메시지를 표현한다.
상태 다이어그램하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현한다.

+) 커뮤니케이션 다이어그램, 활동 다이어그램, 상호작용 개요 다이어그램, 타이밍 다이어그램


문제

Q. UML에서 활용되는 다이어그램 중, 시스템의 동작을 표현하는 행위(Behavioral) 다이어그램에 해당하지 않는 것은?

1번. 유스케이스 다이어그램(Use Case Diagram)

2번. 패키지 다이어그램(Package Diagram)

3번. 상태 다이어그램(State Diagram)
4번. 시퀀스 다이어그램(Sequence Diagram)


UI 설계 도구

사용자 요구사항에 맞게 UI의 화면 구조나 화면 배치 등을 설계할 때 사용하는 도구다.
종류 : 와이어프레임, 목업, 스토리보드, 프로토타입, 유스케이스 등이 있다.

1) 와이어프레임(Wireframe)

  • 기획 단계의 초기에 제작.
    • 페이지에 대한 개략적인 레이아웃, UI요소 등에 대한 뼈대를 설계하는 단계
  • 개발자나 디자이너 등이 레이아웃을 협의하거나 현재 진행 상태를 공유하기 위해 활용

2) 목업(Mockup)

  • 실제 화면과 유사하게 만든 정적인 형태의 모형
  • 시각적으로만 구성 요소를 배치하는 것으로 실제로 구현되지는 않는다.

3) 스토리보드(Story Board)

  • 와이어프레임에 콘텐츠에 대한 설명, 페이지 간 이동 흐름 등을 추가한 문서
  • 디자이너와 개발자가 최종적으로 참고하는 작업 지침서
    • 정책, 프로세스, 콘텐츠 구성, 와이어프레임, 기능 정의 등 서비스 구축을 위한 모든 정보

4) 프로토타입(Prototype)

  • 실제 구현된 것처럼 테스트가 가능한 동적인 형태의 모형
  • 사용성 테스트나 작업자 간 서비스 이해를 위해 작성하는 샘플이다.

5) 유스케이스(Use Case)

  • 사용자 측면에서의 요구사항으로, 사용자가 원하는 목표를 달성하기 위해 수행할 내용을 기술한다.

  • 요구사항을 빠르게 파악함으로써 프로젝트 초기에 시스템의 기능적인 요구를 결정하고 그 결과를 문서화할 수 있다.


문제

Q. 다음 내용이 설명하는 UI 설계 도구는?

  • 디자인, 사용방법 설명, 평가 등을 위해 실제 화면과 유사하게 만든 정적인 형태의 모형
  • 시각적으로만 구성 요소를 배치하는 것으로 일반적으로 실제로 구현되지는 않음.

답: 목업(Mockup)


객체(Object)

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

  • 독립적으로 식별 가능한 이름을 가짐
  • 객체가 가질 수 있는 조건을 상태(State)라 함.
    • 상태는 시간에 따라 변함
  • 객체와 객체는 상호 연관성에 의한 관계가 형성됨

클래스(Class)

공통된 속성과 연산(행위)을 갖는 객체의 집합

  • 객체지향 프로그램에서 데이터를 추상화하는 단위
  • 클래스에 속한 각각의 객체를 인스턴스라 함


문제

Q. 클래스(Class)에 대한 다음 설명에서 괄호에 들어갈 알맞은 용어는?

  • 클래스는 각각의 객체들이 갖는 (ㄱ)과 (ㄴ)을 표현함.
  • (ㄱ): 클래스의 상태나 정보를 표현함
  • (ㄴ): 클래스가 수행할 수 있는 동작으로, 함수(메소드)라고도 함

ㄱ - 속성, ㄴ - 오퍼레이션


문제

Q. 객체 지향 소프트웨어 공학에서 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현한 것은?

1번. 트랜잭션

2번. 클래스

3번. 시퀀스
4번. 서브루틴


N-S 차트 (Nassi-Schneiderman Chart)

논리의 기술에 중점을 둔 도형을 이용한 표현 방법

  • 연속, 선택 및 다중 선택, 반복 등의 제어 논리 구조를 표현
  • GOTO나 화살표를 사용하지 않음
  • 조건이 복합되어있는곳의 처리를 시각적으로 명확히 식별하는 데 적합
  • 선택과 반복 구조를 시각적으로 표현
  • 이해하기 쉽고, 코드 변환이 용이
  • 읽기는 쉽지만 작성하기가 어려우며, 임의로 제어를 전이하는 것이 불가능
  • 총체적인 구조 표현, 인터페이스를 나타내기가 어려움
  • 단일 입구, 단일 출구로 표현


문제

N-S(Nassi-Schneiderman) Chart에 대한 설명으로 거리가 먼 것은?

1번. 논리의 기술에 중점을 둔 도형식 표현 방법이다.
2번. 연속, 선택 및 다중 선택, 반복 등의 제어 논리 구조로 표현한다.
3번. GOTO나 화살표를 사용하지 않는다.

4번. 총체적인 구조 표현과 인터페이스를 나타내기 쉽다.

설명: 총체적인 구조 표현과 인터페이스를 나타내기 어렵다.


미들웨어

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

  • RPC : 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 방식
  • MOM(Message Oriented Middleware)
    • 메시지 기반의 비동기형 메시지를 전달하는 방식
    • 온라인 업무보다 이기종 분산 데이터 시스템의 데이터 동기를 위해 많이 사용됨
  • TP-Monitor
    • 항공기, 철도 예약 업무 등과 같은 온라인 트랜잭션 업무에서 트랜잭션을 처리 및 감시
    • 사용자 수가 증가해도 빠른 응답 속도를 유지해야 하는 업무에 주로 사용됨
  • ORB(Object Request Broker)
    • 객체 지향 미들웨어로 코바(CORBA) 표준 스펙을 구현한 미들웨어
  • WAS(Web Application Server)
    • 정적인 콘텐츠를 처리하는 웹 서버와 달리 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용됨
    • 클라이언트/서버 환경보다는 웹 환경을 구현하기 위한 미들웨어


문제

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

1번. 미들웨어

2번. 하드웨어
3번. 오픈허브웨어
4번. 그레이웨어

문제

Q. 메시지 지향 미들웨어(MOM)에 대한 설명으로 틀린 것은?

1번. 느리고 안정적인 응답보다는 즉각적인 응답이 필요한 온라인 업무에 적합

2번. 독립적인 애플리케이션을 하나의 통합된 시스템으로 묶기 위한 역할을 한다.
3번. 송신측과 수신측의 연결 시 메시지 큐를 활용하는 방법이 있다.
4번. 상이한 애플리케이션 간 통신을 비동기 방식으로 지원한다.

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


디자인 패턴 中 싱글톤패턴

  • 하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수는 없다.
  • 클래스 내에서 인스턴스가 하나뿐임을 보장하며, 불필요한 메모리 낭비를 최소화 할 수 있다.