정보처리기사 실기 정리 - 요구사항분석
<단답형>
폭포수 모델 : 소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후 다음 단계로 넘어가며 가장 오래된 모델
프로토타이핑 모델 : 고객이 요구한 주요 기능을 프로토타입으로 구현하여 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델
나선형 모델 : 시스템 개발 시 위험을 최소화 하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델
계획 및 정의 - 위험분석 - 개발 - 고객평가
반복적 모델 : 구축 대상을 나누어 병렬적으로 개발 후 통합하거나 반복적으로 개발하여 점증 완성시키는 SDLC 모델
구조적 방법론 : 전체 시스템을 기능에 따라 나누어 개발하고 이를 통합하는 분할과 정복 접근 방식의 방법론
정보공학 방법론 : 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
객체지향 방법론 : 객체라는 기본 단위로 시스템을 분석 및 설계하는 방법론
컴포넌트 기반 방법론(CBD) : 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
애자일 방법론 : 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론
제품 계열 방법론 : 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
Pair Programming : 개발자 둘이서 짝으로 코딩하는 원리
Metaphor : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원활하게 한다는 원리
Collective Ownership : 시스템에 있는 코드는 누구든지 언제라도 수정 가능하다는 원리
CI : 매일 여러 번씩 소프트웨어를 통합하고 빌드해야 한다는 원리
TDD : 작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리
리팩토링 : 프로그램의 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템 재구성한다는 원리
XP : 의사소통 개선과 즉각적 피드백으로 스프트웨어 품질을 높이기 위한 방법론
스크럼 : 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
하향식 산정방법 : 경험이 많은 전문가에게 비용 산정을 의뢰하거나 여러 전문가와 조정자를 통해 산정하는 방식
상향식 산정 방법 : 세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식
LOC : 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구하고 이를 이용해 비용산정하는 방식
Man Month : 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정
COCOMO : 보헴이 제안한 모형으로 프로그램 규모에 따라 비용을 산정하는 방식
조직형(5만줄이하), 반분리형(30만줄이하), 임베디드형(30만줄이상)
Putnam 모형 : 소프트웨어 개발 주기의 단계별로 요구할 인력의 분포를 가정하는 방식, Rayleigh-Norden 곡선
FP : 요구 기능을 증가시키는 인자별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능의 점수를 계산하여 비용을 산정하는 방식
PERT : 일의 순서를 계획적으로 정리하기 위한 수렴 기법으로 비관치, 중간치, 낙관치의 3점 추정방식을 통해 일정을 관리하는 기법
CCPM : 주 공정 연쇄법으로 자원제약사항을 고려하여 일정을 작성하는 기법
현행 시스템 파악절차 : 구성/기능/인터페이스파악 - 아키텍처 및 소프트웨어 구성파악 - 하드웨어 및 네트워크 구성 파악
X.25 : Frame Relay의 근간을 이루는 전송 프로토콜
라우터 : 3계층에서 사용하며 라우팅 경로를 설정
유스케이스 뷰 : 유스케이스 또는 아키텍처를 도출하고 설계하며 다른 뷰를 검증하는데 사용되는 뷰
논리 뷰 : 시스템의 기능적인 요구사항이 어떻게 제공되는지 설명해주는 뷰
프로세스 뷰 : 시스템의 비기능적인 속성으로서 자원의 효율적인 사용, 병행 실행, 비동기 이벤트 처리 등을 표현한 뷰
구현 뷰 : 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰
배포 뷰 : 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여주는 뷰
계층화 패턴 : 시스템을 계층으로 구분하여 구성하는 패턴, OSI 7 Layer
클라이언트 - 서버 패턴 : 하나의 서버와 다수의 클라이언트로 구성된 패턴
파이프 - 필터 패턴 : 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴
브로커 패턴 : 분리된 컴포넌트들로 이루어진 분산 시스템에 사용되고 원격 서비스 실행을 통해 상호작용이 가능한 패턴
MVC 패턴 : 대화형 어플리케이션을 모델,뷰,컨트롤러로 시스템을 구조화한 패턴
디자인 패턴 유형 : 생성, 구조, 행위
Builder : 생성과 표기를 분리해 복잡한 객체를 생성
Prototype : 기존 객체를 복제함으로써 객체를 생성
Factory Method : 상위에서 인터페이스를 결정하고 하위에서 인스턴스를 생성
Abstract Factory : 동일한 주제의 다른 팩토리를 묶음
Singleton : 한 클래스에 한 객체만 존재하도록 제한
Bridge : 기능 클래스와 구현 클래스를 연결
Decorator : 기존에 구현되어 있는 클래스에 필요한 기능을 추가하는 패턴
Facade : 복잡한 시스템에 대하여 단순한 인터페이스를 제공함으로써 시스템 구조에 대한 파악을 쉽게 하는 패턴
Flyweight : 클래스의 경량화를 목적
Proxy : 특정 객체로의 접근을 제어하기 위한 용도로 사용
Composite : 단일 객체와 복합 객체를 동일하게 취급
Adapter : 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴
Mediator : 중재자를 두고 중재자에게 모든 것을 요구해 통신의 빈도수를 줄이는 방법
Interpreter : 여러 형태의 언어를 해석할 수 있게 만드는 패턴
Iterator : 내부구조를 노출하지 않고 복합 객체의 원소를 순차적으로 접근 가능하게 해주는 패턴
Template Method : 상위 구조를 바꾸지 않으면서 서브 클래스로 작업의 일부분을 수행
Observer : 객체의 상태 변화에 따라 다른 객체의 상태도 연동
State : 객체의 상태에 따라 행위 내용을 변경
Visitor : 특정 구조를 이루는 복합 객체의 원소 특성에 따라 동작을 수행할 수 있도록 지원하는 행위
Command : 요구사항을 객체로 캡슐화
Strategy : 필요할 때 서로 교환해서 사용할 수 있게 하는 패턴
Memento : Undo 기능을 개발해야할 때 사용하는 디자인 패턴
Chain of Responsibility : 한 요청을 2개이상의 객체에서 처리
윈도우
유닉스
리눅스
안드로이드
IOS
=> 대충 보면 아는것들 단어만 보자
전송단위
응용계층, 표현계층, 세션계층 -> 데이터
전송계층 -> 세그먼트
네트워크계층 -> 패킷
데이터링크계층 -> 프레임
물리계층 -> 비트
GC(가비지컬렉션): 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 해제하는 기능
오픈 소스 : 소스 코드를 공개해 제작자의 권리를 지키면서 누구나 사용가능하도록 한 라이선스
HA(고가용성) : 장애에 대응하여 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질
요구사항 개발 단계 구성 : 도출 - 분석 - 명세 - 확인
인터뷰 : 이해관계자와 직접 대화를 통해 정보를 구하는 수집방법
브레인스토밍 : 말을 꺼내기 쉬운 분위기로 참석자들이 내놓은 아이디어들을 비판없이 수용하는 회의
롤 플레잉 : 현실에서 일어나는 장면을 설정하고 각자가 맡은 역을 연기함으로써 요구사항을 분석
워크숍 : 단기간 집중적인 노력을 통해 다양하고 전문적인 정보를 획득하고 공유하는 방법
설문조사 : 설문지 또는 여론조사 등을 이용해 간접적으로 정보를 수집하는 방법
DFD : 데이터가 각 프로세스를 따라 흐르면서 변환되는 모습을 나타낸 그림
DD : 자료요소, 자료요소들이 집합, 자료의 흐름, 자료 저장소의 의미와 그들 간의 관계, 관계 값, 범위, 단위들을 구체적으로 명시하는 사전
UML : 객체지향 소프트웨어 개발 과정에서 산출물을 명세화,시각화 할때 사용되는 모델링 기술과 방법론을 통합해 만든 표준화된 범용 모델링 언어
동료검토 : 요구사항 명세서 작성자가 요구사항 명세서를 설명하고 이해관계자들이 설명을 들으면서 결함을 발견하는 형태로 진행
워크 스루 : 검토자료를 회의 전에 배포해서 사전검토한 후 짧은 시간동안 회의를 진행하는 형태로 리뷰를 통해 오류를 검출하고 문서화
인스펙션 : 소프트웨어 요구, 설계, 원시 코드 등의 저작자 외의 다른 전문가 또는 팀이 검사하여 오류를 찾아내는 공식적 검토 방법
SAAM : 경험이 없는 조직에서도 활용 가능한 비용 평가 모델
ATAM : 품질 속성들의 이해 상충관계 까지 평가하는 모델
CBAM : ATAM 바탕으로 경제적 의사결정에 대한 요구를 충족하는 평가 모델
ADR : 응집도를 평가하는 모델
ARID : 품질 요소에 집중하는 비용 평가 모델
<약술형>
SDLC : 시스템의 요구분석부터 유지보수까지 체계화 한 절차
델파이 기법 : 전문가의 경험적 지식을 통한 문제 해결 기법
CPM : 여러 작업의 순서가 얽혀 있는 프로젝트의 일정을 계산하는 기법
IPS : 네트워크에 대한 침입을 실시간으로 차단하고 유해 트래픽을 조치하는 시스템
소프트웨어 아키텍처 : 소프트웨어 구성요소와 그 구성요소가 가지는 외부 특성, 관계를 표현하는 구조체
디자인 패턴 : 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 사용하는 설계방법을 정리한 패턴
인터페이스 : 관련이 없는 것들이 서로 연결 되기 위한 시스템
프레임워크 : 소프트웨어 설계와 구현을 재사용이 가능하게 클래스들을 제공하는 틀
프로토콜 : 서로 다른 시스템끼리 데이터 교환을 원활히 하기 위한 일련의 통신규약
네트워크 : 컴퓨터간 서로 데이터 교환할 수 있도록 하는 기술
미들웨어 : 컴퓨터간 원만한 통신이 이루어질 수 있게 제어해주는 소프트웨어
요구공학 : 요구를 반영하기 위해 요구사항에 대한 도출,분석,명세,확인 하는 구조화된 활동
비정형 명세 기법 : 사용자 요구 표현시 자연어를 기반으로 서술하는 기법
정형 명세 기법 : 사용자 요구 표현시 수학적 원리를 이용해 서술하는 기법
형상관리 : 변경사항을 체계적으로 관리하여 소프트웨어 품질을 향상시키는 활동
형상관리 위원회 : 형상관리에 대해 산출물 검토, 단계별 의사결정을 수행하는 조직