New 정보처리기사 개념 정리(출제 빈도 기준) — 요구사항, UI, 데이터, 인터페이스

정보처리기사 실기 시험 뿌시기 👊 1탄

지금이 10월인데 마지막으로 medium 글을 publish 한게 7월..😢

😙 Medium 이웃들에게 알리는 내 근황
가장 이직하고 싶었던 회사인 카카오 엔터프라이즈에 입사하게 되었다! 현재 데이터 엔지니어로 일하고 있다. 올해 4분기에는 데이터 엔지니어링에 대한 글을 많이 업로드할 예정이다. (4분기 목표 → 데이터 엔지니어 역량 쌓기!)

📍갑자기 정보 처리기사?
내 최종 목표는 클라우드 아키텍트이다. 아키텍트는 기술적 커뮤니케이션을 잘 해야 한다고 생각하기 때문에, 30살에는 기술사 자격증을 취득하고 싶다. 기술사 자격증을 응시하려면, 정보처리기사 자격을 취득한 후 5년간의 경력이 있어야 한다.

필기 시험은 특별한 공부 없이 통과했지만, 실 시험은 단답형/서술형 이기 때문에 쉽지 않다. 실기 시험의 내용은 소프트웨어 공학의 전반을 잘 다루고 있다. 앞으로 프로젝트를 할 때, 요구사항 명세부터 소프트웨어 패키징, 유지보수까지 공학적으로 접근 하는 데 도움이 될 것 같다. 그럼 스타뜨!! ➡️

요구사항 확인

소프트웨어 생명주기: 소프트웨어 개발 공정을 체계화한 절차

소프트웨어 생명주기 모델 프로세스:
요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수

소프트웨어 생명주기 모델 종류
1) 폭포수 모델: 순차적 접근(이해가 용이)
2) 프로토타이핑 모델: 요구 분석, 타당성 검증
3) 나선형 모델: 위험 분석
4) 반복적 모델: 병행 개발

소프트웨어 개발 방법론: 개발 전 과정에 적용할 수 있는 방법, 절차, 기법

소프트웨어 개발 방법론 종류
1) 구조적 방법론: 기능에 따라 나누어 개발
2) 정보공학 방법론
3) 객체지향 방법론
4) 컴포넌트 기반 방법론: 컴포넌트 조립
5) 애자일 방법론: 사람 중심, 유연하고 신속하게 변화에 대응
6) 제품 계열 방법론

애자일 방법론 유형
1) XP: XP 12가지 기본 원리 — 짝 프로그래밍, CI, 메타포어, TDD, 리팩토링
2) Lean: 일본 도요타의 시스템 품질 기법 적용. 낭비 요소 제거.
3) 스크럼: 매일 정해진 시간, 장소에서 짧은 시간 개발하는 팀을 위한 방법론.

비용 산정 모델
1) 하향식 산정 방법
→ 전문가 판단, 델파이 기법
2) 상향식 산정 방법: 세부적인 요구사항과 기능에 따라 필요한 비용을 계산
→ LoC 모형, Man Month 모형, Cocomo 모형(프로그램 규모에 따라 산정), 푸트남 모형, 기능점수(FP) 모형
→ LoC: 소프트웨어 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구함
→ COCOMO모형: 보헴이 제안한 모형으로 프로그램 규모에 따라 선정

일정 관리 모델
1) 주 공정법(Critical Path Method)
2) PERT(Program Evaluation and Review Technique): 비관치, 주관치, 낙관치를 고려
3) 중요 연쇄 프로젝트 관리(Critical Chain Project Management): 자원 제약 사항을 고려

  1. 현행 시스템 구성/기능 및 인터페이스 파악
  2. 현행 시스템 아키텍처 및 소프트웨어 구성 파악
  3. 하드웨어 및 네트워크 구성 파악

소프트웨어 아키텍처 프레임워크: 소프트웨어 집약적인 시스템에서 아키텍처가 표현해야 하는 내용 및 이들 간의 관계를 제공하는 아키텍처 기술 표준

소프트웨어 아키텍처 프레임워크 요소
1) 아키텍처 명세서
2) 이해관계자
3) 관심사
4) 관점
5) 뷰
6) 근거
7) 목표
8) 환경
9) 시스템

소프트웨어 아키텍처 4+1 뷰
고객의 요구 사항을 정리해놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어 적인 접근 방법
1) 논리 뷰: 기능적 요구사항
2) 구현 뷰: 모듈의 구성, 구조와 의존성
3) 프로세스 뷰: 비기능적 속성
4) 배포 뷰: 컴포넌트가 물리적인 아키텍처에 어떻게 배치
5) 유스케이스 뷰: 유스케이스 또는 아키텍처를 도출, 설계하며 다른 뷰를 검증하는 데 사용

소프트웨어 아키텍처 패턴 유형
1) 계층화 패턴
2) 클라이언트 — 서버 패턴
3) 파이프 — 필터 패턴
4) 브로커 패턴
5) 모델, 뷰, 컨트롤러 (MVC) 패턴

디자인 패턴의 종류
1. 생성 패턴
객체 인스턴스 생성에 관여. 클래스 정의와 객체 생성방식을 구조화, 캡슐화
1–1) Builder: 생성과 표기를 분리해서 복잡한 객체 생성(생성 절차에서 서로 다른 표현 결과를 만들 수 있음)
1–2) Prototype: 기존 객체를 복제함으로 객체를 생성
1–3) Factory Method: 생성할 객체의 클래스를 국한하지 않고 객체를 생성(상위 클래스에서 객체 생성 인터페이스를 정의하고, 하위 클래스에서 생성)
1–4) Abstract Factory: 동일한 주제의 다른 팩토리를 묶음
1–5) Singleton: 한 클래스에 한 객체만 존재하도록 제한
2. 구조 패턴
더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
2–1) Bridge: 구현 뿐만 아니라, 추상화된 부분까지 변경해야 하는 경우(구현부에서 추상 계층을 분리하여 확장할 수 있도록 함)
2–2) Decorator: 객체의 결합을 통해 기능을 동적으로 유연하게 확장
2–3) Facade: 단순한 인터페이스를 제공하여 결합도를 낮추어 시스템 구조에 대한 파악을 쉽게 함
2–4) Flyweight: 모두가 갖는 본질적인 요소를 클래스화 하여 공유함으로써 메모리를 절약하고 클래스의 경량화를 목적으로 함. 여러개의 가상 인스턴스를 제공하여 메모리 절감
2–5) Proxy: 실제 객체에 대한 대리 객체. 미리 할당하지 않아도 상관 없는 것들을 실제 이용할 때 할당하게 하여 메모리 용량을 아낄 수 있음. 특정 객체로의 접근을 제어하기 위한 용도로 사용
2–6) Composite: 객체들의 관계를 트리 구조로 구성하여 부분 — 전체 계층을 표현하는 패턴. 복합 객체와 단일 객체를 동일하게 취급
2–7) Adapter: 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록 타 클래스의 인터페이스를 기존 인터페이스에 덧 씌움
3. 행위 패턴
클래스나 객체들이 상호작용하는 방법과 역할 분담을 다루는 패턴
3–1) Mediator: 객체의 수가 너무 많아지면 서로 간 통신을 위해 복잡해져서 중재자를 두고, 중재자에게 모든 것을요구하여 통신의 빈도수를 줄여 객체 지향의 목표를 달성(상호작용의 유연한 변경을 지원)
3–2) Interpreter: 여러 형태의 언어 구문을 해석할 수 있게 만드는 디자인패턴(문법 자체를 캡슐화하여 사용)
3–3) Iterator: 컬렉션 구현 방법을 노출 시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공하는 디자인 패턴. 내부 구조를 노출하지 않고, 복잡 객체의 원소를 순차적으로 접근 가능하게 해주는 행위 패턴
3–4) Template Method: 상위 작업의 구조를 바꾸지 않으면서, 서브 클래스로 작업의 일부분을 수행
3–5) Observer: 상호작용하는 객체 사이에서 느슨하게 결합하는 디자인 패턴
3–6) State: 객체 상태를 캡슐화하여 클래스화함으로써 그것을 참조하게 하는 방식으로 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경
3–7) Visitor: 특정 구조를 이루는 복합 객체의 원소 특성에 따라 동작을 수행할 수 있도록 지원하는 행위(객체의 구조는 변경하지 않으면서, 기능만 따로 추가하거나 확장할 때 사용하는 디자인 패턴)
3–8) Command: 요구사항을 객체로 캡슐화. 하나의 추상 클래스에 메서드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행됨)
3–9) Strategy: 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 변환
3–10) Memento: 객체를 이전 상태로 복구시켜야 하는 경우
3–11) Chain of Responsibility: 한 요청을 2개 이상의 객체에서 처리.

개발 기술 환경 정의
1. 운영체제
1–1) PC: 윈도즈(중/소규모 서버, 일반 PC), 유닉스(대용량 처리), 리눅스(중/대규모 서버, 높은 보안성)
1–2) 모바일: 안드로이드(리눅스 운영체제 위에서 구동), iOS(높은 보안성과 고성능 제공)
2. 네트워크
3. DBMS
4. 미들웨어
5. 오픈소스

요구공학: 사용자의 요구가 반영된 시스템을 개발하기 위하여 사용자 요구사항에 대한 도출, 분석, 명세, 확인 및 검증하는 구조화된 활동

  • 기능적 요구사항
  • 비기능적 요구사항

요구공학 프로세스
1. 요구사항 개발 단계(CMM Level 3 프로세스 영역)
도출 → 분석 → 명세 → 확인
1–1) 도출: 인터뷰(직접대화), 브레인 스토밍, 델파이 기법(전문가의 경험적 지식을 통한 문제 해결 및 미래 예측), 롤 플레잉, 워크숍, 설문 조사
1–2) 분석: 완전성과 일관성을 확보
1–3) 명세: 비정형(자연어), 정형(수학) 기법→ 요구사항 명세서
1–4) 확인: 동료 검토, 워크 스루(검토 자료를 회의 전에 배포), 인스펙션(전문가 또는 다른 팀이 검사하여 오류를 찾아냄)
2. 요구사항 관리 단계(CMM Level 2 프로세스 영역)

분석 모델 검증 방법
1) 유스케이스 모델 검증
2) 개념 수준의 분석 클래스 검증: 시스템의 주요 도메인 개념을 도출
3) 분석 클래스 검증: 유스케이스 실현에 필요한 분석 클래스 도출 확인

분석 모델의 시스템화 타당성 검토 4단계
1) 성능 및 용량 산정의 적정성
2) 시스템 간 상호 운용성
3) IT 시장 성숙도 및 트렌드 부합성
4) 기술적 위험 분석

화면 설계

UI 유형
1) CLI
2) GUI
3) NUI
4) OUI

UI 설계원칙
1) 직관성: 이해하기 쉬움
2) 유효성: 사용자의 목표 달성
3) 학습성: 초보와 숙련자 모두가 쉽게 배움
4) 유연성: 요구사항 변경 최대한 수용하고, 실수를 방지

UI 설계 지침
1) 사용자 중심
2) 일관성
3) 단순성
4) 결과 예측 가능
5) 가시성
6) 표준화
7) 접근성
8) 명확성
9) 오류 발생 해결

UI 품질 요구사항
1) 기능성: 적절성, 정밀성, 상호운용성, 보안성, 호환성
2) 신뢰성: 성숙성, 고장 허용성, 회복성
3) 사용성: 이해성, 학습성, 운용성
4) 효율성: 시간 효율성, 자원 효율성
5) 유지보수성: 분석성, 변경성, 안정성, 시험성
6) 이식성: 적용성, 설치성, 대체성

UI 화면 설계방식
와이어 프레임: 간략한 흐름을 공유하기 위한 화면 단위의 레이아웃
스토리보드: 정책, 프로세스, 와이어 프레임 기능 정의 등 서비스 구축을 위한 모든 정보가 담겨 있는 설계 산출물
프로토타입: 실제 구현된 것처럼 시뮬레이션 할 수 있는 모형

사용성 테스트

UML(Unified Modeling Language): UML 은 객체 지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화 할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어

UML 의 구성요소
1) 사물
2) 관계
3) 다이어그램

UML 확장 모델의 스테레오 타입
새로운 요소를 만들어내기 위한 확장 메커니즘
1) <<include>>
2) <<extend>>
3) <<interface>>
4) <<entity>> — 기억 장치에 저장되어야 할 정보를 표현
5) <<boundary>> — 외부 액터와의 상호작용
6) <<control>> — 시스템 기능의 로직 및 제어를 담당

UML 다이어그램
1. 구조적 다이어그램(정적 다이어그램)
1–1) 클래스 다이어그램
→ 구성요소: 클래스, 속성, 연산 메서드, 접근 제어자
→ 관계: 연관, 집합(복합)(♢), 일반화(의존)(→), 실체화(추상 클래스)
1–2) 객체 다이어그램(모든 인스턴스를 표현)
1–3) 컴포넌트
1–4) 배치 다이어그램: 컴포넌트 사이의 종속성을 표현하고, 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
1–5) 복합체 구조 다이어그램: 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현하는 다이어그램
1–6) 패키지
2. 행위적 다이어그램(동적 다이어그램)
2–1) 유스케이스: 시스템이 제공하고 있는 기능, 사용자의 관점에서 표현
→ 구성요소: 유스케이스, 액터, 시스템, 시나리오, 이벤트의 흐름
2–2) 시퀀스: 객체 간 동적 상호작용
2–3) 커뮤니케이션: 객체들이 주고 받는 메시지를 표현
2–4) 상태: 하나의 객체가 자신이 속한 클래스의 상태 변화를 표현
2–5) 활동
2–6) 타이밍

UI 구성요소
ex) Input Box, Check Box, Combo Box, Radio Box

UI 시나리오 문서 작성 요건
1) 완전성: 누락이 없음
2) 일관성: 서비스 목표, 시스템 및 사용자의 요구사항이 일관성, UI 스타일 일관성 있게 구성
3) 이해성
4) 가독성: 문서를 쉽게 읽음
5) 추적 용이성: 변경 사항들 추적
6) 수정 용이성

데이터 입출력 구현

데이터 모델: 현실 세계의 정보를 인간과 컴퓨터가 이해할 수 있도록 추상화하여 표현한 모델
1) 개념적 데이터 모델: 개체 관계 다이어 그램
2) 논리적 데이터 모델: 정규화
3) 물리적 데이터 모델: 반정규화

개체 — 관계 모델(E-R 모델)
개체, 관계, 속성, 다중값 속성, 관계-속성 연결

논리 데이터 모델링 종류
1) 관계 데이터 모델(PK, FK)
→ 순수 관계 연산자(셀렉트, 프로젝트, 조인, 디비전)
→ 관계 대수 연산자(합집합, 교집합, 차집합, 카디션 프로덕트)
2) 계층 데이터 모델(1:N)
3) 네트워크 데이터 모델(N:M)

정규화
1차 정규화: 원자값
2차 정규화: 종속성
3차 정규화: 이행 종속성
보이스 — 코드 정규화(BCNF): 모든 결정자가 후보키

이상
삽입 이상, 삭제 이상, 갱신 이상

반정규화(비정규화)
정규화된 엔티티, 속성, 관계에 대해 성능향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법

인덱스: 검색 연산의 최적화를 위해 데이터베이스 내 열에 대한 정보를 구성한 데이터 구조

인덱스 적용 기준
— 분포도가 10~15% 이내인 경우

인덱스 컬럼 성전
— 분포도가 좋은 컬럼은 단독적으로
— 자주 조합되어 사용되는 컬럼은 결합 인덱스로

클러스터: 인덱스의 단점을 해결한 기법으로 분포도가 넓을 수록 오히려 유리하다. 인덱스를 사용한 처리 부담이 되는 넓은 분포도에 활용한다.

파티션: 성능 향상, 가용성 향상, 백업 가능, 경합 감소
1) 레인지 파티셔닝: 손쉬운 관리
2) 해시 파티셔닝: 균등한 데이터 분할이 가능, 질의 성능 향상
3) 리스트 파티셔닝: 데이터에 대한 명시적 제어가 가능
4) 컴포지트 파티셔닝: 큰 파티션에 대한 I/O 요청을 여러 파티션으로 분산할 수 있음

데이터베이스: 다수의 인원, 시스템 또는 프로그램이 사용할 목적으로 통합하여 관리되는 데이터 집합
1) 통합된 데이터: 자료의 중복을 배제한 데이터의 모임
2) 저장된 데이터: 저장 매체에 저장된 데이터
3) 운영 데이터: 조직의 업무를 수행하는 데 필요한 데이터
4) 공용 데이터: 여러 애플리케이션, 시스템들이 공동으로 사용하는 데이터

데이터 베이스 종류
1) 파일 시스템
2) 관계형 데이터베이스 관리 시스템(RDBMS)
3) 계층형 DBMS(HDBMS)
4) 네트워크 DBMS(NDBMS)

DBMS: 데이터 관리의 복잡성을 해결하는 동시에 데이터 추가, 변경, 검색, 삭제 및 백업, 복구, 보안 등의 기능을 지원하는 소프트웨어

DBMS 유형
1) 키-값 DBMS. 메모리 기반에서 성능 우선 시스템 및 빅데이터 처리 가능(Redis, DynamoDB)
2) 컬럼 기반 데이터 저장 DBMS: Key 안에 (Column, Value) 조합으로 된 여러 개의 필드를 갖는 DBMS (HBase, Cassandra)
3) 문서 저장(Document Store) DBMS: 값의 데이터 타입이 문서라는 타입을 사용하는 DBMS (MongoDB, CouchBase)
4) 그래프 DBMS: 그래프로 데이터 표현. 노드와 엣지로 특징되는 요소 특화 (시멘틱 웹과 온톨리지 분야에서 활용)

DBMS 특징
1) 데이터 무결성: 동일한 내용에 서로 다른 데이터가 저장되지 않음
2) 데이터 일관성: 저장된 데이터가 변함없음
3) 데이터 회복성: 장애 발생시 복구
4) 데이터 보안성
5) 데이터 효율성: 응답시간, 저장공간 활용등이 최적화

트랜잭션
→ 원자성, 일관성, 지속성, 고립성(😊원일지고)

트랜잭션 제어어
1) 롤백: 오류가 발생 했을 때 오류 이전의 특정 시점(save point) 상태로 되돌려 주는 제어어
2) Commit: 트랜잭션을 메모리에 영구적으로 저장하는 제어어
3) 체크포인트: ROLLBACK을 위한 시점을 지정하는 제어어

트랜잭션 병행 제어 기법: 다수의 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터 베이스 일관성 유지를 위해 상호작용을 제어하는 병행 제어 기법이 필요
→ 로깅, 낙관적 검증, 타임 스탬프 순서, 다중 버전 동시성 제거 기범
→ 낙관적 검증(Validation): 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 데이터 베이스에 반영하는 기법

데이터베이스 기술 트렌드
→ 빅데이터, NoSQL, 데이터 마이닝

빅데이터의 특성
1) Volume
2) Variety
3) Velocity

빅데이터 수집, 저장, 처리 기술
1) 비정형/반정형 데이터 수집: 내, 외부 정제되지 않은 데이터를 확보, 이를 통해 필요 정보를 추출하여 활용하기 위해서 효과적으로 수집 및 전송
2) 정형 데이터 수집: 내, 회부 정제된 대용량 데이터의 수집 및 전송 기술(ETL, FTP, 스쿱)
3) 분산데이터 저장/처리: HDFS, 맵리듀스
4) 분산 데이터 베이스: HDFS 의 칼럼 기반 데이터 베이스로 실시간 랜덤 조회 및 업데이트가 가능(HBase)

빅데이터 분석, 실시간 처리 및 시각화를 위한 주요 기술
1) 빅데이터 분석: 데이터의 가공과 분류, 클러스터링, 패턴 분석을 처리하는 기술 → 피그, 하이브(데이터 가공), 데이터 마이닝(머하웃)
2) 빅데이터 실시간 처리: 하둡 기반의 실시간 SQL 질의 처리와 요청된 작업을 최적화 하기 위한 워크 플로우 관리 기술 → 임팔라(실시간 SQL 질의를 위한 솔루션), 우지(워크플로우 관리를 위한 대표적인 솔루션)
3) 분산 코디네이션: 서버들 간에 상호조정이 필요한 다양한 서비스를 분산 및 동시처리 제공 기술. 대표적인 솔루션은 주키퍼(ZooKeeper)
4) 분석 및 시각화: 빅데이터 분석 기술을 통해 분석된 데이터의 의미와 가치를 시각적으로 표현하기 위한 기술

NoSQL 특성(BASE)
1) Basically Available: 언제든지 데이터 접근, 분산 시스템이기 때문에 항상 가용성 중시
2) Soft-State: 노드의 상태는 내부에 포함된 정보에 의해 결정되는 것이 아니라 외부에서 전송된 정보를 통해 결정되는 속성
3) Eventually Consistency: 일정 시간이 지나면 데이터의 일관성이 유지되는 속성

데이터 마이닝
대규모로 저장된 데이터 안에서 체계적이고 자동으로 통계적 규칙이나 패턴을 찾아내는 기술

Linked Open Data
전세계 오픈된 정보를 하나로 묶는 방식: link data + open data

통합 구현

인터페이스 구현

  • 각 소프트웨어 공학적 접근의 장단점을 잘 알고 있기
  • 스타트업 개발팀 컨설팅

I will be a software architect.

I will be a software architect.