정보처리기사 필기 공부 요약 정리입니다.
공부는 수제비책을 중심으로 했습니다.
요약본 공유합니다.
*현행 시스템 분석의 종류
- 플랫폼 기능, 성능 특성 분석
- 운영체제 분석
- 네트워크 분석
- DBMS 분석
- 비즈니스 융합 분석
*플랫폼 성능 특성 분석 기법
*운영체제 현행 시스템 분석 시 고려사항
- 품질측면에서는 : 신뢰도, 성능
- 지원측면에서는 : 기술 지원, 주변 기기, 구축 비용
*비즈니스 융합 유형
- 고객 가치, 시장 유통, 가치 제안, 공급 역량, 생산 방식
*요구분석의 특징
- 분석 결과의 문서화를 통해 향후 유지보수에 유용하게 활용할 수 있다.
- 보다 구체적인 명세를 위해 소단위 명세서가 활용될 수 있다.
- 개발 비용이 가장 많이 소요되는 단계는 아니다. 가장 많이 소요되는 단계는 유지보수 단계이다.
- 자료 흐름도, 자료 사전등이 효과적으로 사용될 수 있다.
항 분석 단계 절차
- 요구사항 분류, 개념 모델링 생성 및 분석, 요구사항 할당, 요구사항 협상, 정형 분석
*요구사항 분류에 대한 설명
- 요구사항이 기능인지 비기능인지 확인한다
- 요구사항은 우선순위가 동등할 수 없다.
- 요구사항이 소프트웨어에 미치는 여향의 범위를 파악한다.
- 요구사항이 제품에 관한 것인지 프로세스에 관한 것인지 확인한다.
*요구사항 분석 기술
- 청취 기술, 인터뷰와 질문 기술, 분석 기술, 중재 기술, 관찰 기술, 작성 기술, 조직 기술, 모델 작성 기술
*데이터 흐름도(DFD : Data Flow Diagram)에 대한 설명
- 자료 흐름 그래프 or 버블 차트라고도 한다.
- 구조적 분석 기법에 이용된다.
- 시간의 흐름을 알 수 없다.
- 프플스터, Process, Flow, Data store, Terminator로 구성된다.
- DFD의 요소는 화살표(Flow), 원(Process), 사각형(Terminator), 직선(Flow)으로 표시한다.
*자료 사전 기호
- '-' : 자료의 정의로서 ‘~으로 구성되어(is Composed of) 있다’는 것을 나타냄.
- '+' : 자료의 연결(and, along with)을 나타냄
- '( )' : 자료가 생략 가능함을 나타냄
- '{ }' : 자료의 반복을 나타냄
- '[ ]' : 자료의 선택을 나타냄
- '**' : 자료의 설명을 나타냄, 주석(Comment)
*시퀀스 다이어그램 구성요소
*UML의 관계
- 연관 : 실선으로 연결, 방향성은 화살표
- 집합 : 전체의 부분이 속이 빈 마름모, 포함되는 부분쪽은 화살표
- 포함 : 집합 관계의 특수한 형태, 집합에서 채워진 마름모로 바뀜
- 일반화 : 하위인 사물에서 상위인 사물 족으로 속이 빈 화살표로 연결
- 의존 : 영향을 주는 쪽이 영향을 받는 쪽으로 점선 화살표를 연결
실체화 : 사물에서 기능 쪽으로 속이 빈 점선 화살표로 연결
*UML 확장 모델에서 스테레오 타입 객체를 표현할 때
*XP의 12가지 기본원리
- 짝 프로그래밍, 공동 코드 소유, 지속적인 통합, 계획 세우기, 작은 릴리즈, 메타포어, 간단한 디자인, 테스트 기반 개발, 리팩토링, 40시간 작업, 고객 상주, 코드 표준
*스크럼(SCRUM)의 방법론
- 주요 개념에는 백로그, 스프린트, 스크럼 미팅, 스크럼 마스터, 스프린트 회고, 번 다운 차트가 있다.
- 백로그 : 제품과 프로젝트에 대한 요구사항
- 스프린트 : 2~4주의 짧은 개발 기간의 반복적 수행으로 개발품질 향상
- 스크럼 미팅 : 매일 15분 정도 미팅으로, To-Do List 수립, 데일리 미팅이라고도함
- 스크럼 마스터 : 프로젝트 리더
- 스프린트 회고 : 스프린트를 회고한다.
- 번다운 차트 : 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트, 수직축은 백로그 수평축은 시간
*분석 자동화 도구 = CASE(Computer Aided Software Engineering)
- 소프트웨어 생명주기의 전체 단계를 연결해 준다.
- 소프트웨어, 하드웨어, 데이터베이스, 테스트 등을 통합하여 소프트웨어를 개발하는 환경을 조성한다.
- 개발 과정의 속도를 향상시킨다.
- 소프트웨어 부품의 재사용을 가능하게 한다.
- 그래픽을 지원한다.
- 다양한 소프트웨어 개발 모형을 지원한다.
- 소프트웨어 개발 과정의 일부 또는 전체를 자동화하기 위한 도구이다.
- 표준화된 개발 환경 구축 및 문서 자동화 기능을 제공한다.
- 작업 과정 및 데이터 공유를 통해 작업자 간의 커뮤니케이션을 증대한다.
*분석 자동화 도구의 특징
- 표준화 적용과 문서화를 통한 보고를 통해 품질 개선이 가능하다.
- 변경사항과 변경으로 인한 영향에 대한 추적이 쉽다.
- 명세에 대한 유지보수 비용의 축소가 가능하다.
- 표준화를 위한 범용성과 이식성을 갖는다.
*분석 자동화 도구중 상위 CASE도구가 지원하는 기능
- 모델들 사이의 모순 검사 기능
- 모델의 오류 검증 기능
- 자료흐름도 작성 기능
*분석 자동화 도구중 하위 CASE도구가 지원하는 기능
*UI 시스템의 필요 기능
- 사용자의 입력을 검증한다.
- 에러 처리와 에러 메시지 처리를 한다.
- 도움(Help)과 프롬프트(Prompt)를 제공한다.
*UI 스타일 가이드 구성요소
- UI 구동 환경 정의
- 레이아웃 및 내비게이션 정의
- 기능 및 구성요소의 정의
*UI 개발 목표 및 범위 정의 단계에서의 활동 내용
- 3C(Company, Competitor, Customer) 분석
- SWOT분석
- 이슈 분석
*UI 사용자 요구사항 도출 단계에서의 활동 내용
페르소나 정의, 콘셉트 모델 정의, 사용자 요구사항 정의, UI 컨셉션
*스토리 보드(Story board)
- 서비스 구축을 위한 모든 정보가 담겨 있는 설계 산출물
*와이어 프레임(Wire frame)
- 이해관계자들과의 화면구성을 협의하거나 서비스의 간략한 흐름을 공유하기 위해 화면 단위의 레이아웃을 설계하는 작업
*감성공학
- 인간의 감성을 정성적, 정략적으로 측정 및 평가하고, 과학적으로 분석하여 이를 구체적인 제품 설계로 실현해 내는 공학
*감성공학의 접근 방법
- 1류 접근 방법 : 인간의 감성을 표현하는 어휘를 이용하여 제품 이미지를 조사
- 2류 접근 방법 : 개인이 갖고 있는 이미지를 구체화하는 방법
- 3류 접근 방법 : 기존의 감성적 어휘 대신 공학적인 방법으로 접근하여 인간의 감각을 측정, 이를 바탕으로 수학적 모델을 구축하여 활용
*감성공학 기반으로 인터페이스를 구현하기 위한 기술
- 센서 및 센싱 기술, 디스플레이 기술, 엑츄에이터 기술, 퓨전 기술, 마이크로 머시닝 기술, 퍼지 뉴럴 네트워크 기술, 산업 디자인 기술
*UI 설계 도구 중 프로토타이핑 도구
- UX핀(UXPin), 액슈어(AXURE), 네이버 프로토나우(ProtoNOW)
*프레이머(UI 디자인 산출물로 작업하는 프로토타이핑 도구)
- 커피 스크립트라고 하는 개발 언어를 사용하는 코드 기반의 프로토타이핑 도구
- 코드 기반으로 작동되어 실제 작업물과 흡사하게 작동
*바람직한 모듈 설계 방안
- 적당한 모듈의 크기를 유지한다.
- 모듈 간의 효과적인 제어를 위해 설계에서 계층적 자료 조직이 제시되어야 한다.
- 모듈의 결합도는 낮추고, 응집도는 높인다.
- 복잡도와 중복성을 줄이고 일관성을 유지한다.
- 모듈의 기능은 예측이 가능해야 하며, 지나치게 제한적이어서는 안 된다.
- 모듈은 단일 이북와 단일 출구를 갖도록 설계한다.
- 유지보수가 용이해야 한다.
*팬인(Fan-in)과 팬아웃(Fan-out)
- 푸는 문제 77page의 기출4
- 위에서 아래로
*소프트웨어 설계 유형 중, 협약에 의한 설계에 대한 설명
*소프트웨어의 상위 설계
- 자료구조 설계, 아키텍처 설계, 인터페이스 설계, 프로시저 설계
*소프트웨어의 하위 설계
*코드의 기능
- 표준화, 분류, 식별, 배열, 간소화, 연상, 암호화, 오류 검출
*코드 설계 종류
- 연상 코드 : 연상할 수 있도록
- 블록 코드 : 공통성이 있는 것끼리 블록으로 구분한 코드, 구분 코드라고도 함
- 순차 코드 : 일정한 기준에 따라 순서대로 일련번호를 부여한 코드
- 표의 숫자 코드 : 자료의 물리적인 수치를 표시한 코드
- 십진 코드 : 10진수 형태로 표현한 코드
- 그룹 분류식 코드 : 대분류, 중분류, 소분류로 구분하여 번호를 부여한 코드
- HIPO 차트 종류에는 가시적 도표, 총체적 도표, 세부적 도표가 있다.
- 기능과 의존관계를 동시에 표현할 수 있다.
- 보기 쉽고 이해하기 쉽다.
- 하향식 소프트웨어 개발을 위한 문서화 도구이다.
*소프트웨어 아키텍처 프레임워크 구성요소조 중 뷰(View)에 대한 설명
- 서로 관련있는 관심사들의 집합이라는 관점에서 전체 시스템을 표현
*소프트웨어 아키텍처 비용 평가 모델 종류
- SAAM : 변경 용이성과 기능성에 집중 하는 모델이다. 평가가 용이하여 경험이 없는 조직에도 활용 가능한 평가 모델
- ATAM : 품질 속성들의 이해 상충관계까지 평가하는 모델
CBAM : 경제적 의사결정에 대한 요구를 충족하는 비용 평가 모델
- ADR : 응집도를 평가하는 모델
- ARID : 전체 아키텍처가 아닌 특정 부분에 대한 품질요소에 집중하는 평가 모델
*소프트웨어 아키텍처 패턴 유형
- 계층화 패턴, 클라이언트 서버 패턴, 파이프-필터 패턴, 브로커 패턴, 모델-뷰-컨트롤러 패턴
*계층화 패턴
- 시스템을 계층으로 구분하여 구성하는 패턴이다.
- 각 계층은 다음 상위 계층에 서비스를 제공한다.
- 서로 마주보는 두 개의 계층 사이에서만 상호작용이 이루어진다.
*클라이언트 서버 패턴
- 하나의 서버와 다수의 클라이언트로 구성된 패턴이다.
- 사용자가 클라이언트를 통해 서버에 서비스를 요청하면, 서버는 클라이언트에게 서비스를 제공한다.
*파이프-필터 패턴
- 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴이다.
- 서브 시스템이 입력 데이터를 받아 처리하고, 결과를 다음 서브 시스템으로 넘겨주는 과정을 반복한다.
*브로커 패턴
- 브로커 컴포넌트트 컴포넌트간의 통신을 조정하는 역할을 수행한다.
- 서버는 자신의 기능을 브로커에게 넘겨준다.
- 클라이언트가 브로커에게 서비스를 요청한다.
- 브로커는 클라이언트에게 적합한 서비스로 리다이렉션 한다.
*모델-뷰-컨트롤러 패턴
- 대화형 어플리케이션을 모델(M), 뷰(V), 컨트롤러(C) 3개의 서브 시스템으로 구조화하는 패턴이다.
- MVC 각 부분이 별도의 컴포턴트로 분리되어 있어서, 서로 영향을 받지 않고 개발 작업이 가능하다
*객체에 대한 특성
- 객체마다 각각의 상태와 식별성을 갖는다.
- 행위에 대하여 그 특징을 나타낼 수 있다.
- 일정한 기억장소(메모리)를 가지고 있다.
*객체지향 구성요소
- 클래스 : 하나 이상의 유사한 객체들을 묶어, 공통된 특성을 표현한 것
- 객체 :
- 메서드 : 전통적 시스템의 함수 또는 프로시저에 해당하는 연산 기능, 객체를 사용하는 방법 즉 객체에 명령을 내리는 메시지
- 메시지 : 객체에게 어떤 행위를 하도록 지시하는 명령
- 인스턴스 : 클래스를 통해 만든 실제의 실행 객체, 클래스에 속한 각각의 객체를 의미
- 속성 :
*객체지향 기법
- 캡슐화, 상속성, 다형성, 추상화, 정보은닉, 관계성
*캡슐화(Encapsulation)
- 서로 관련성이 많은 데이터와 이와 관련된 함수들을 한 묶음으로 처리하는 기법을 말한다.
- 인터페이스가 단순해진다.
- 코드 내부 데이터와 메소드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 기법이다.
- 캡슐화된 객체들은 재사용에 용이하다.
- 변경에 대한 오류의 파급효과가 적기 때문에, 유지보수의 비용이 적어진다.
- 정보은닉과 가장 밀접한 관계를 맺고 있다.
*상속성(Inheritance)
- 상위 클래스의 메소드와 속성을 하위 클래스가 물려받는 것을 의미한다.
*다형성(Polymorphism)
- 메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해, 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력이다.
*추상화(Abstraction)
*정보은닉(Inforamtion Hiding)
- 가장 근본적인 목적은 : 고려되지 않은 영향(Side-Effect)들을 최소화하기 위해서이다.
캡슐화와 가장 밀접한 관계를 맺고 있다.
*객체지향 설계원칙(SOLID)
- 단일 책임의 원칙(SRP : Single Responsibility Principle) : 하나의 클래스는 하나의 목적을 위해서 생성되어야 한다는 원칙. 5원칙중 4원칙의 기초 원칙
- 개방 폐쇄 원칙(OCP : Open Close Principle) : 확장에는 열려있고, 변경에는 닫혀있어야 한다는 원칙
- 리스코프 치환의 원칙(LS : Liskov Substitution) : 서브타입(하위클래스)은 어디서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 한다는 원칙
- 인터페이스 분리의 원칙(ISP : Interface Segregation Principle) : 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다. 자신이 사용하지 않는 인터페이스(메소드) 때문에 영향을 받아서는 안된다는 원칙
- 의존성 역전의 원칙(DIP : Dependency Inversion Principle) : 실제 사용 관계는 바뀌지 않으면서, 관계를 최대한 느슨하게 만드는 원칙
*Coad와 Yourdon 방법
- 객체지향 분석 방법론이다.
- E-R다이어그램을 사용하여 객체 행위를 모델링한다.
- 객체 식별, 구조 식별, 주체 정의, 속성 및 관계 정의, 서비스 정의 등의 과정으로 구성되는 것
*내외부 인터페이스 요구사항 명세서 구체화 단계
- 세이신정
- 요구사항 정의서 세분화
- 요구사항 내용의 이해 및 수정
- 요구사항 신규 정의
- 요구사항 정리
*요구공학에 대한 설명
- 사용자의 요구가 반영된 시스템을 개발하기 위한 것이다.
- 요구사항에 대한 추출, 분석, 명세, 검증, 관리하는 구조화된 활동이다.
- 이해관계자 사이에 효과적인 의사소통 수단을 제공한다.
- 시스템 개발의 요구사항에 대한 공통된 이해를 설정한다.
- 요구사항 누락 방지 및 이해 오류로 인한 불필요한 비용을 절감한다.
- 요구사항 변경 추적을 가능하게 한다.
- 초기 요구사항 관리로 개발 비용과 시간을 절약한다.
- 요구사항에 대한 관리를 잘못할 경우, 나중에 더 큰 비용과 시간이 소요된다.
*기능적 요구사항의 특성
*비기능적 요구사항의 특성
- 신사효유이
- 신뢰성, 사용성, 효율성, 유지보수성, 이식성
*비정형 명세기법
- 사용자의 요구를 표현할 때, 자연어(한국어 or 영어 이런거)를 기반으로 서술한다.
*정형 명세기법
- 사용자의 요구를 표현할 때, 수학적인 원리와 표기법을 이용한다.
- 비정형 명세기법에 비해 표현이 간결하다.
- Z-스키마 언어를 활용한다.
- 제품의 검토에만 집중한다.
- 문제 영역을 명확히 표현한다.
- 참가자의 수를 제한한다.
- 사전 준비를 강요한다.
- 논쟁이나 반박을 제한한다.
*요구사항 확인 주요 기법
- 요구사항 검토, 정형 기술 검토, 프로토타이핑 활용, 모델 검증, 테스트 케이스 및 테스트를 통한 확인, - CASE도구 활용, 베이스라인(Baseline)을 통한 검증, 요구사항 추적표(RTM : Requirement - Traceability Matrix)를 통한 검증
*정형 기술 검토 활용
*동료 검토
- 요구사항 명세서 작성자가 요구사항 명세서를 설명한다.
- 이해관계자들이 설명을 들으면서 결함을 발견하는 형태로 진행한다.
*워크 스루
- 검토회의 전에 요구사하 명세서를 미리 배포하여 사전 검토한다.
- 사전 검토 후, 이어서 짧은 검토 회의를 통해 오류를 조기에 검출하는데 목적을 둔다.
소프트웨어 시스템 개발 단계마다 실시하는 비정형 검토 회의의 형태이다.
*인스펙션
*CASE도구 활용
- 구조화된 요구사항 명세서에 대해서 자동화된 일관성 분석을 제공한다.
*시스템 아키텍처
- 시스템의 구조, 행위, 동작 원리를 설명하는 프레임워크
*라이브러리
- 소프트웨어를 개발할 때, 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임
*시스템 아키텍처 물리 설계
- 1-Tier, 2-Tier, 3-Tier 아키텍처가 있다.
*1-Tier 아키텍처
- AP/DB 서버 1대 이상으로 구성되어 있다.
- 물리적 노드 수가 최소 1개로 구성되어있다.
- Tier 간 네트워크 트래픽이 발생하지 않는다.
- UI 로직이 없는 인터페이스 게이트웨이 업무에 적합하다.
- 온라인 트랜잭션 처리(OLTP) 업무에 적합하지 않다.
*2-Tier 아키텍처
- AP 서버, DB 서버 2대 이상으로 구성되어 있다.
- 물리적 노드 수가 최소 2개 이상 필요하다.
- AP와 DB서버 간 네트워크 트래픽이 발생한다.
- 비즈니스 로직 유출이 발생할 수 있다. 따라서 비즈니스 로직이 유출되더라도 보안상 문제가 없을 경우 적용해야 한다.
- UI와 비즈니스 로직이 붙어있다. 따라서 UI와 비즈니스 로직을 분리하지 못할 경우 적용해야 한다.
- 제한된 인증 사용자만 시스템에 접근 가능하게 구성해야 한다.
*3-Tier 아키텍처
- 프레젠테이션 서버, AP 서버, DB 서버 3대 이상으로 구성되어 있다.
- 대용량 온라인 트랜잭션 처리(OLTP) 업무에 활용할 수 있도록 한다.
- 물리적 노드 수가 최소 3개 이상 필요하다.
- Tier간 네트워크 트래픽이 발생한다.
*내외부 송수신 연계 방식 중 직접 연계방식에 대한 설명
- 장점
중간 매개체가 없으므로, 연계 처리 속도가 빠르다.
구현이 단순하여, 개발비용과 기간이 짧다.
- 단점
송신 시스템과 수신시스템 간의 결합도가 높아서, 시스템 변경시 민감하다.
보안을 위한 암복호화 처리와 비즈니스 로직 구현은 인터페이스별로 작성해야 한다.
전사 시스템 인터페이스에 대한 통합 환경 구축이 어렵다.
*내외부 송수신 연계 기술
- DB 링크 : 수신 시스템에서 DB 링크를 생성하고, 송신 시스템에서 해당 DB 링크를 직접 참조하는 방식이다.
- DB 연결 : 수신 시스템의 WAS(Web Application Server)에서 송신 시스템 DB로 연결하는 DB 커넥션 풀(DB Connection Pool)을 생성하고, 연계 프로그램에서 해당 DB 커넥션 풀명을 이용하는 방식이다.
- API/OPEN API : 송신 시스템의 DB에서 데이터를 읽어서 제공하는, 애플리케이션 프로그래밍 인터페이스 프로그램
- JDBC : 수신 시스템의 프로그램에서, JDBC 드라이버를 이용하여 송신 시스템 DB와 연결
하이퍼 링크 : 웹 에플리케이션에서 하이퍼링크 이용
- 소켓 : 서버는 통신을 위한 소켓을 생성하여 포트를 할당하고, 클라이언트의 통신 요청 시 클라이언트와 연결하고 통신
*내외부 송수신 통신 유형 중 실시간 동기(Sync) 방식
- 데이터를 이용하고자 하는 시스템에서 거래 요청을 하고, 응답이 올 때까지 대기(Request-Reply)하는 방식
- 응답을 바로 처리해야 하는 거래나, 거래량이 적고 시스템의 응답 속도가 빨라야 하는 겨웅에 사용
*내외부 송수신 통신 유형 중 실시간 비동기(ASync) 방식
- 거래를 요청하는 서비스와, 응답을 받아 처리하는 서비스가 분리되는 구조
- 다른 작업을 하다가 데이터가 준비되었다는 신호를 받으면 다시 처리하는 방식
- 거래량이 많거나, 데이터를 전송하는 시스템의 처리가 오래 걸리는 업무에 사용
*미들웨어 솔루션 유형
- 디원메트 레겍와
- DB 미들웨어
- 원격 프로시저 호출 (RPC : Remote Procedure Call)
- 메시지 지향 미들웨어 (MOM : Message-Oriented Middleware)
- 트랜잭션 처리 모니터 (TP Monitor : Trasaction Processing Monitor)
- 레거시웨어 (Legacyware)
- 객체 기반 미들웨어 (ORB : Object Request Brokers)
- WAS (WAS : Web Application Server)
*트래잭선 처리 모니터(TP 모니터 : Transaction Processing Monitor )
트랜잭션이 올바르게 처리되고 있는지, 데이터를 감시하고 제어하는 미들웨어
*WAS
- 서버계층에서 애플리케이션이 동작할 수 있는 환경을 제공한다.
- 안정적인 트랙잭션 처리와 관리가 가능하다.
- 다른 이기종 시스템과의 애플리케이션 연동을 지원하는 미들웨어 솔루션이다.
- 자바, 컴포넌트 기반으로 구현할 수 있다.
*EAI(Enterprise Application Intergration)
- 비즈니스 프로세스를 중심으로, 기업 내부의 각종 애플리케이션간 상호 연동이 가능하도록 통합하는 솔루션이다.
- Hub&Spoke 방식의 집중형 토폴로지로 구성된다.
- Adaptor, Broker, Message, Queue 등으로 구성된다.
*ESB(Enterprise Service Bus)
- 개방형 표준인 Web Server를 이용한다.