[정보처리기사] 2024 정보처리기사 필기 1과목 총정리

yurinnn·2024년 2월 14일
6

정보처리기사

목록 보기
3/21

💡 정보처리기사 필기 기출(2020-2022) 1과목 총정리!

소프트웨어 설계

  • 하향식 설계
    • 계층 구조상에서 시스템의 주요 컴포넌트들을 찾고 그것을 낮은 수준의 컴포넌트들로 분해하는 것으로 메인 모듈의 설계에서 시작하여 단계적으로 구체화 시키는것
    • 통합 검사 시 인터페이스가 이미 정의되어 있어 통합이 간단
    • 레벨이 낮은 데이터 구조의 세부 사항은 설계초기 단계에서 필요
    • HIPO (Hierarchy Input Process Output) 하향식 소프트웨어 개발을 위한 문서화 도구
  • 상향식 설계
    • 가장 기본적인 컴포넌트들을 먼저 설계하고, 이것을 사용하는 상위수준의 컴포넌트를 만들어 나가는것
    • 최하위 수준에서 각각의 모듈들을 설계하고 모듈이 완성되면 이들을 결합하여 검사
    • 기존 컴포넌트를 조합하여 시스템을 개발하는 경우에 적합

소프트웨어 설계 유형

  • 상위 설계 : 자료 구조 설계 / 아키텍처 설계 / 인터페이스 설계 / 프로시저 설계
  • 하위 설계 : 모듈 설계

소프트웨어 아키텍처 패턴

주어진 상황에서의 소프트웨어 아키텍쳐에서 일반적으로 발생하는 문제점들에 대한 일반화되고 재사용 가능한 솔루션

  • 파이프필터(Pipe-Filter Pattern)
    서브 시스템이 입력 데이터를 받아 처리하고, 결과를 다음 서브 시스템으로 넘겨주는 과정 반복
  • 모델-뷰-컨트롤러 패턴(MVC; Model View Controller Pattern)

아키텍처 설계

과정 (순서)

  1. 설계 목표 설정
  2. 시스템 타입 결정
  3. 스타일 적용 및 커스터마이즈
  4. 서브시스템의 기능, 인터페이스 동작 작성
  5. 아키텍처 설계 검토

객체지향 설계 5원칙 (SOLID)

  • 단일 책임의 원칙 (SRP)(Single Responsibility Principle)
    하나의 클래스는 하나의 목적을 위해 생성
  • 개방 폐쇄 원칙 (OCP)(Open Close Principle)
    소프트웨어의 구성요소는 확장에는 여려있고, 변경에는 닫혀있어야 한다는 원칙
  • 리스코프 치환의 원칙 (LSP)(Liskov Subsitution)
    서브 타입(상속받은 하위 클래스)은 어디서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 한다는 원칙
  • 인터페이스 분리의 원칙 (ISP)(Interface Segregation Principle)
    클라이언트는 자신이 사용하지 않는 메서드와 의존관계를 맺으면 안된다. 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다.
  • 의존성 역전의 원칙 (DIP)(Dependency Inversion Principle)
    실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고 받음으로서 관계를 최대한 느슨하게 만드는 원칙
    구체적인 구현에 의존하는 것이 아니라 추상화된 인터페이스에 의존해야 하며, 이를 통해 의존성이 역전되어야 한다.
    소프트웨어 모듈들을 분리하는 특정 형식

객체지향 기법

  • 캡슐화(Encapsulation)
    서로 관련성이 많은 데이터와 이와 관련된 함수들을 한 묶음으로 처리하는 기법. 정보은닉과 밀접한 관계가 있다.
    인터페이스가 단순화된다, 소프트웨어 재사용성이 높아진다, 변경 발생 시 오류의 파급효과가 적다.
  • 상속성(Inheritance)
    상위 클래스의 속성과 메소드를 하위 클래스에서 재정의 없이 물려받아 사용하는 기법
  • 다형성(Polymorphism)
    하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
  • 추상화(Abstraction)
    공통 성질을 추출하여 클래스를 설정하는 기법
  • 정보은닉(Information Hiding)
    코드 내부 데이터와 메소드를 숨기고 공개 인터페이스르 통해서만 접근이 가능하도록 하는 코드 보안 기술
  • 관계성(Relationship)
    두 개 이상의 엔티티 형에서 데이터를 참조하는 관계를 나타내는 기법

객체지향 방법론

  • Rumbaugh (럼바우)방법론 : 그래픽 표기법 이용 객체 (객체 다이어그램)→ 동적 (상태 다이어그램) → 기능 (자료흐름도, DFD)
    • 자료흐름도 (자료 흐름 그래프, 버블 차트) 자료의 흐름과 처리 과정도형 중심으로 기술 기호 (외워)

    • 자료 사전(DD, Data Dictionary)
      • 자료 흐름도의 자료를 설명하는 것
      • 사용 기호 = : ~로 구성되다(정의) is composed of
        • : and 자료 연결

          { } : 반복 iteration of

          [ | ] : OR(택일) choose only one of

          ( ) : 생략 optional

        • : 주석 comment

  • Coad와 Yourdon 방법론 : E-R 다이어그램을 사용하여 객체의 행위를 모델링
  • Jacobson 방법 : Use Case를 강조하여 사용하는 분석 방법
  • Booch(부치) 방법 : 미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용

애자일 개방 방법론

  • 익스트림 프로그래밍(XP , Extreme Programming)
  • 스크럼(Scrum)
  • 기능 주도 개발(FDD, Feature Driven Development)

GoF(Gang of Four) 디자인 패턴

소프트웨어 설계에 있어 공통된 문제들에 대한 표준적인 해법과 작명법을 제안

  • 생성 패턴
    패턴명설명
    팩토리 메소드 (Factory Method)상위 클래스는 객체를 생성하는 인터페이스만 제공하고, 하위 클래스에서 인스턴스 생성
    프로토타입 (Prototype)Prototype 먼저 생성하고, 인스턴스를 복제하여 사용, 비용 저렴
    싱글톤 (Singleton)클래스 내 생성되는 인스턴스가 하나만 필요할 때 사용(동시참조X)
    빌더 (Builder)분리된 인스턴스를 조합하여 객체 생성. 같은 객체를 생성해도 다른 결과를 도출할 수 있음
    추상 팩토리 (Abstract Factory)상위 클래스의 객체 생성코드를 하위클래스가 상속받는다 (상위변경 = 하위자동변경) 
  • 구조 패턴
    패턴명설명
    어댑터(Adapter)일치하지 않는 인터페이스 변환(전류 어댑터와 같은 역할) 기존에 구현되어 있는 클래스에 기능 발생 시 기존 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할
    브릿지(Bridge)추상층(기능)과 구현층(구체화)을 분리하여 서로 독립적 확장 가능
    합성(Composite)트리구조로 구성
    데코레이터(Decorator)클래스에 기능을 추가하기 위해 다른 객체를 덧붙이는 형태
    프록시(Proxy)접근이 어려운 객체에 접근할 수 있도록 인터페이스 역할 수행
  • 행동 패턴
    패턴명설명
    중재자(Mediator)객체간의 통제와 지시의 역할을 하는 중재자를 두어 객체지향 목표 달성하게 해줌 (상호작용을 캡슐화하여 결합도를 낮추기위해 사용)
    상태(State)이벤트를 객체 상태에 따라 다르게 처리해야할 때 사용. 카톡 알림설정 같은 느낌
    책임 연쇄(Chain of Responsibility)요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴. 각 객체들이 고리(Chain)으로 묶여있어 요청이 해결될 때까지 고리를 따라 책임이 넘어간다.
    커맨드(Command)명령어를 캡슐화하여 재사용하거나 취소할 수 있도록 필요한 정보를 로그에 남기는 형태
    인터프리터(Interpreter)언어에 문법 표현을 정의하는 패턴
    반복자(Iterator)접근이 잦은 객체는 동일한 인터페이스를 사용하도록 하는 패턴
    메멘토(Memento)특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴이다. Ctrl+Z 기능이 이 패턴의 대표적 기능
    옵저버(Observer)이벤트 발행과 구독, 상태 변화 전달. 한 객체의 상태가 변화하면 객체에 상속되어있는 다른 객체들에게 변화된 상태를 전달하는 패턴. 카톡의 읽음표시 같은 느낌
    전략(Strategy)동일 계열 알고리즘 상호 교환, 독립적 사용
    템플릿 메소드(Template Method)상위에서 인터페이스를 정의하고 하위에서 구체화시킴 (유지보수 쉬워짐)
    방문자(Visitor)처리 기능을 별도의 클래스로 구성. 분리된 처리 기능은 각 클래스를 방문(Visit)하여 수행한다.

CASE(Computer Aided Software Engineering)

유지 보수, 재사용성, 품질 향상, 그래픽 지원

  • 구조적 기법
  • 프로토타이핑 기술
  • 자동 프로그래밍 기술
  • 정보 저장소 기술
  • 분산처리 기술

UML(Unified Modeling Language)

객체지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 방법론을 통합한 것으로, 표준화된 모델링 기법을 제공

  • UML 구성요소
    사물 Things / 관계 Relationships / 다이어그램 Diagrams
  • UML 확장 모델의 스테레오 타입(Stereotype) : << >>

구조적(정적) 다이어그램

클래스 / 객체 / 컴포넌트 / 배치 / 복합체 구조 / 패키지

  • 클래스 다이어그램 요소 : Operation

행위적(동적) 다이어그램

유스케이스 / 시퀀스 / 커뮤니케이션 / 상태 / 활동 / 타이밍

  • 유스케이스 다이어그램
    • 액터(Actor) : 시스템 외부에 존재하며 시스템과 상호작용을 하는 모든 것
    • 관계 : 연관, 의존, 일반화, 확장(특별 조건 만족시)
  • 시퀀스 다이어그램
    • 구성요소 : 객체(Object) : 사각형 안에 밑줄 친 이름으로 명시
      생명선(Lifeline) : 객체로부터 뻗어나가는 점선
      실행(Activation) : 점선 위 직사각형, 직사각형은 실행 시간
      메시지(Message) : 화살표

UML의 관계

  • 연관 관계 (Association) 2개 이상의 사물이 서로 관련된 상태
  • 집합 관계 (Aggregation)
  • 포함 관계 (Composition) 포함 관계는 집합 관계의 특수한 형태로, 포함하는 사물의 변화가 포함되는 사물에 영향을 미치는 관계를 표현
  • 일반화 관계(Generalization) 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현
  • 의존 관계(Dependency) 한 사물의 명세서가 바뀌면 그것을 사용하는 다른 사물에게 영향을 끼치는 것
  • 실체화 관계(Realization) 한 객체가 다른 객체에게 오퍼레이션을 수행하도록 지정함

요구사항 분석

  • 기능적 요구사항 입력, 출력, DB, 통신 기능 등
  • 비기능적 요구사항 보안, 성능, 품질, 안정 등
  • 시스템 요구사항 : 개발자 관점
  • 사용자 요구사항 : 사용자 관점

요구사항 분석 기법

  • 요구사항 분류, 개념 모델링, 요구사항 할당, 요구사항 협상, 정형 분석

요구사항 명세 기법

  • 정형 : 수학적 원리, 모델 기반
  • 비정형 : 상태, 기능, 객체 중심

요구사항 개발 프로세스

도출 → 분석 → 명세 → 확인

요구사항 검증

  • FTR(Formal Technical Review), 정형 기술 검토
    • 워크 스루(Walk Through) : 검토회의 전에 요구사항 명세서를 미리 배포하여 사전 검토한 후 짧은 검토 회의를 통해 오류를 조기에 검출하는데 목적을 두는 요구사항 검토 방법
    • 인스펙션(Inspection) : 전문가 또는 팀이 검사하여 오류를 찾아내는 검토 방법
    • 동료검토(Peer Review) : 2~3명 리뷰
    지침 사항
    • 참가자수를 제한해라
    • 해결책이나 개선책에 대해서는 논하지 마라

사용자 인터페이스 (UI)

  • CLI : 명령과 출력이 텍스트 형태로 이뤄지는 인터페이스
  • GUI : 아이콘이나 메뉴를 마우스로 선택하여 작업을 수행하는 그래픽 환경의 인터페이스
  • NUI : 사용자의 자연스러운? 말이나 행동으로 기기를 조작하는 인터페이스
  • VUI : 음성
  • OUI

UI 설계 도구

  • 와이어프레임(Wireframe) : 기획 단계에서 제작, 레이아웃이나 뼈대 설계
  • Mockup : 실제 화면과 유사하게 만든 정적 형태의 모형
  • Prototype : 실제 구현된 것처럼 테스트 가능한 동적 형태의 모형
  • Storyboard : 와이어프레임에 콘텐츠에 대한 설명, 페이지 간 이동 흐름 등을 추가한 문서
  • Use Case : 사용자의 요구사항을 기능 단위로 표현한 것
    - 유스케이스 다이어그램이 완성되면, 각각의 유스케이스에 대해 유스케이스 명세서를 작성한다.

미들웨어

운영체제와 소프트웨어의 중간에서 조정과 중개의 역할을 해주는 소프트웨어

  • RPC(Remote Procedure Call) 원격 프로시저 호출이라고 하며, 클라이언트가 원격제어를 통하여 원격 위치에 있는 프로시저를 실행할 수 있게 하는 프로세스 간 통신 기술
  • MOM(Message Oriented Middleware) 메시지 지향 미들웨어라고 하며 메시지 기반의 비동기형 메시지를 전달하는 미들웨어, 느리다.
  • TP-Monitor(Transection Processing Monitor) 온라인 트랜잭션 업무에서 트랜잭션을 처리하고 감시하는 미들웨어
  • WAS(Web Application Server) 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어
  • DB(DataBase) 클라이언트와 데이터베이스를 연결하는 미들웨어
  • ORB(Object Request Broker) 객체 지향 미들웨어이며, 코바(CORBA) 표준 스펙을 구현한 미들웨어

기타 용어 정리

  • FEP(Front-End Processor) 입력되는 데이터를 컴퓨터의 프로세서가 처리하기 전에 미리 처리하여 프로세서가 차지하는 시간을 줄여주는 프로그램이나 하드웨어
profile
슬기로운 개발 생활

1개의 댓글

comment-user-thumbnail
2024년 2월 15일

정리 기가 막히네요..
도움 많이 됐어요!!

답글 달기

관련 채용 정보