본 자료는 제가 보기 위해 만든 것입니다. 제가 헷갈리는 부분 위주로 정리했습니다.
1. 요구사항 확인
chapter01 - 소프트웨어 개발 방법론
● 소프트웨어 생명주기(SDLC)
시스템의 요구분석부터 유지보수까지 전 공정을 쳬계화한 절차
● 소프트웨어 생명주기 모델 프로세스
요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
● 소프트웨어 생명주기 모델 종류
- 폭포수 모델
- 가장 오래된 모델로, 각 단계를 확실히 마무리 지은 후 다음 단계로 넘어감
- 절차 : 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
- 프로토타이핑 모델
- 나선형 모델
- 위험을 최소화하기 위해 점진적으로 시스템 개발
- 절차 : 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가
- 반복적 모델
- 구축 대상을 나누어 병렬적으로 개발 후 통합하거나 반복적으로 개발
● 소프트웨어 개발 방법론
소프트웨어 개발의 시작부터 시스템을 사용하지 않는 과정까지의 전 과정을 형상화한 방법론
● 소프트웨어 개발 방법론 종류
- 구조적 방법론
- 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 방법론
- 나씨-슈나이더만 차트 : 논리의 기술에 중점을 둔 도형식 표현 방법
- 정보공학 방법론
- 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
- 객체 지향 방법론
- '객체'라는 기본 단위로 시스템을 분석 및 설계하는 방법론
- 컴포넌트 기반 방법론(CBD)
- 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
- 애자일 방법론
- 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적인 시스템 개발할 수 잇는 신속 적응적 개량 개발 방법론
- 제품 계열 방법론
- 특정 제품에 적용하고 싶은 공통된 기능을 정의해 개발하는 방법론
- 임베디드 SW 작성에 유용
● 애자일(Agile)
변화에 유연하고 신속하게 적응하면서 개발하는 방법론
● 애자일 방법론 유형
- XP
- 의사소통 개선과 즉각적 피드백으로 소프트웨어 품직을 높이기 위한 방법론
- 5가지 가치 : 용기 , 단순성 , 의사소통 , 피드백 , 존중
- 12가지 기본원리 : 지속적인 통합(CI) / 메타포어 / 테스트 기반 개발 / 리팩토링 등
- 메타포어 : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원활하게 한다는 원리
- 테스트 기반 개발(TDD) : 테스트를 먼저 수행하고 실제 프로그램을 만드는 원리
- 리팩토링 : 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템을 재구성한다는 원리
- 스크럼
- 매일 정해진 시간과 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
- 린(Lean)
- 도요타의 린 시스템 품질 기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시키는 방법론
● 럼바우
- 그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론
- 절차 : 객체 모델링 -> 동적 모델링 -> 기능 모델링 ( 객동기 )
- 객체 모델링(정보 모델링) : 객체 다이어그램을 이용하여 표현
- 동적 모델링 : 상태 다이어그램을 이용하여 표현
- 기능 모델링 : 자료 흐름도(DFD)을 이용하여 표현
● 비용 산정 모형
- 델파이 기법 : 전문가의 경험을 토대로 비용을 산정해주는 방법
- LoC
- 낙관치, 중간치, 비관치를 측정하여 비용을 산정하는 방법
- 예측치 = ( 낙관치 + 4x중간치 + 비관치 ) / 6
- Man Month
- 1개월 동안 할 수 있는 양을 기준으로 비용을 산정하는 방법
- COCOMO 모형
- 보헴이 제안한 비용산정 방법
- 조직형 : 5만 라인 이하
- 반 분리형 : 30만 라인 이하
- 임베디드형 : 30만 라인 이상
- 푸트남(Putnam) 모형
- 인력의 분포를 가정하는 방식, Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
- 기초점수(FP) 모형
- 인자별로 가중치를 부여하고, 가중치를 합산하여 비용을 산정하는 방법
- 기능점수(FP) = 총 기능점수 X [ 0.65 + ( 0.1 X 총 영향도 ) ]
● 비용 산정 자동화 추정 도구
- SLIM
- Rayleigh-Norden 곡선과 푸트남 예측 모델을 기초로 하여 개발된 자동화 추정 도구
- ESTIMACS
- FP 모형을 기초로 하여 개발된 자동화 추정 도구
● 일정관리 모델
- 주 공정법(CPM)
- 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 기법
- 임계 경로 : 가장 오래 걸리는 경로
- PERT
- 일의 순서를 계획적으로 정리하기 위한 수렴기법, 비관치, 중간치 낙관치를 이용
- 중요 연쇄 프로젝트 관리(CCPM)
- 주 공정 연쇄법으로 자원제약사항을 고려하여 일정을 작성하는 기법
chapter02 현행 시스템 분석
● 현행 시스템 파악 절차
- 구성/기능/인터페이스 파악
- 아키텍처 및 소프트웨어 구성 파악
- 하드웨어 및 네트워크 구성 파악
● 아키텍처
구성요소 간의 관계를 표현하는 시스템의 구조나 구조체
● 4+1뷰(유논프구배)
- 유스케이스뷰
- 논리뷰
- 프로세스뷰
- 구현뷰
- 배포뷰
● 아키텍처 패턴 유형
- 계층화 패턴 : 계층으로 구분
- 클라이언트-서버 패턴
- 파이프-필터 패턴 : 데이터 스트림을 생성하고 처리하는 시스템
- 브로커 패턴 : 분산 시스템에서 사용
- 모델-뷰-컨트롤러 패턴(MVC)
- 모델 : 기능과 데이터 보관
- 뷰 : 사용자에게 정보 표시
- 컨트롤러 : 요청을 입력받아 처리
● 아키텍처 비용 평가 모델 종류
- SAAM
- 변경 용이성과 기능성에 집중, 경험이 없는 조직에서도 활용 가능한 비용 평가 모델
- ATAM
- 아키텍처 품질 속성을 만족시키는지 판단 및 이해 상층 관계까지 평가하는 모델
- CBAM
- ATAM 바탕의 시스템으로 경제적으로 의사결정에 대한 요구를 충족하여 평가 모델
- ADR
- 아키텍처 구성요소 간 응집도 평가 모델
- ARID
- 전체 아키텍처가 아닌 특정 부분에 대한 품질요소에 집중하여 비용 평가 모델
● 디자인 패턴(생구행)
- 목적
- 생성
- 구조
- 행위
- 범위
- 클래스 : 정적으로 결정
- 개체 : 동적으로 결정
● OSI 7 계층(물데네전세표응)
- 물리 : 비트
- 데이터 링크 : 프레임 / 이더넷
- 네트워크 : 패킷 / IP, ICMP
- 전송 : 세그먼트 / TCP,UDP
- 세션 : 데이터 / SSH, TLS
- 표현 : 데이터 / JPEG, MPEG
- 응용 : 데이터 / HTTP, FTP
● 라우터
3계층 / 패킷 / 최적의 경로를 지정
● 스위치
2계층 / MAC 주소 기반으로 빠르게 전달
● 게이트웨이
컴퓨터 네트워크에서 서로 다른 통신망
● 백본망
정보를 교환하기 위한 경로를 제공하는 망
● 요구공학
- 기능적 요구사항
- 특성 : 기능성, 완전성, 일관성
- 비기능적 요구사항
- 특성 : 신뢰성, 사용성, 효율성, 유지보수성, 이식성, 보안성 및 품질 관련 요구사항, 제약사항
- 프로세스(도분명확)
- 도출 -> 분석 -> 명세 -> 확인 및 검증
● 워크스루
사전검토
● 인스펙션
저작자 외 다른 팀이 검사하여
● UI vs UX
UI : 사용자와 시스템이 의사소통할 수 잇는 가상의 매개체
UX : 사용자 경험
● UI 유형
- CLI
- GUI
- NUI
- OUI : 현실에 존재하는 모든 사물이 입출력 장치로 변화할 수 있는 사용자 인터페이스
● UI 설계 원칙
- 직관성 : 쉽게 이해하고 ,사용 가능
- 유효성 : 목표에 달성될 수 있도록
- 학습성 : 쉽게 배우기
- 유연성 : 실수를 방지
● UI 개발을 위한 주요 기법
- 3C 분석
- 고객,자사,경쟁사를 비교하고 분석하는 방법
- SWOT 분석
- 기업의 내/외부 환경을 분석하여 강점,약점,기회,위협 요인을 규정하고 경영 전략을 수립하는 방법
- 시나리오 플래닝
- 다양한 시나리오를 설계하여 불확실성을 없애는 경영 전략 방법
● UI 화면 설계
- 와이어프레임 : 뼈대 작업(레이아웃)
- 스토리보드 : 거의 완성본, 서비스 구축을 위한 모든 정보
● UML
모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어
● UML 구성요소
- 사물
- 관계
- 다이어그램
● UML 다이어그램
- 구조적/정적 다이어그램
- 클래스
- 객체
- 컴포넌트
- 배치
- 복합체 구조
- 패키지(패키지,복합관계)
- 행위적/동적 다이어그램
- 유스케이스
- 시퀀스(객체,생명선,실행,메시지)
- 커뮤니케이션(액터,객체,링크,메시지)
- 상태
- 활동(시작점,전이,액션,액티비티,종료점,조건,병합,포드)
- 타이밍
● 클래스 간의 관계
- 연관 관계 : 실선
- 의존 관계 : 영향을 주는 관계
- 일반화 관계 : 그룹화 / 흰색 화살표
- 실체화 관계 : 기능으로 그룹화
- 포함 관계 : 영구적이고, 집합관계보다 강한 관계 ex) 엔진 - 피스톤,플러그 / 검정 마름모
- 집합 관계 ex) 차 - 엔진,바퀴,운전대 / 흰색 마름모
● 데이터 모델 표시 요소
- 연산
- 구조
- 제약조건
● 데이터 모델 절차
- 요구사항 분석
- 개념적 설계 : 트랜잭션을 모델링하는 단계
- 논리적 설계 : 트랜잭션의 인터페이스를 설계하는 단계(정규화)
- 물리적 설계 : 물리적인 스키마를 만드는 단계(반정규화)
● 논리적 데이터 모델링 종류
- 관계 데이터 모델 : 테이블 형태
- 계층 데이터 모델 : 트리 형태
- 네트워크 데이터 모델 : 그래프 형태
● 관계대수
원하는 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어
● 관계대수 종류
- 일반 집합 연산자
- 합집합 ( ∪ )
- 교집합 ( ∩ )
- 차집합 ( - )
- 카티션 프로덕트 ( X )
- 순수 관계 연산자
- 셀렉트(Select) : 오메가 / 조건을 만족하는 튜플 반환
- 프로젝트(Project) : 파이 / 속성들의 값으로만 튜플 반환
- 조인(Join) : 누운 모래시계 / R과S의 튜플들을 연결해 만들어진 튜플 반환
- 디비전(Division) : ÷ / S의 모든 튜플과 관련 있는 R의 튜플 반환-
● 관계해석
튜플 관계해석과 도메인 해석을 하는 비절차적 언어
● 논리 데이터 모델링 속성
- 개체
- 속성
- 관계
● E-R(개체-관계) 모델
- 개체 ( □ )
- 관계 ( ◇ )
- 속성 ( ○ )
- 다중 값 속성 ( ◎ )
- 관계-속성 연결 ( - )
● 정규화
데이터의 중복성을 제거하여 이상 현상을 방지하고, 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정
● 정규화 단계 (도부이결다조)
- 도메인이 원자값
- 부분 함수 종속 제거
- 이행함수 종속 제거
- 결정자 후보 키가 아닌 함수 종속 제거
- 다중 종속 제거
- 조인 종속 제거
● 이상현상
- 삽입 이상
- 삭제 이상
- 갱신 이상
● 반정규화
정규화된 개체, 속성, 관계에 대해 성능향상과 개발운영의 단수화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법
● 참조무결성 제약조건
릴레이션과 릴레이션 사이에 대한 참조의 일관성을 보장하기 위한 조건
- 제한
- 다른테이블이 삭제할 테이블을 참조 중이면 제거하지 않는 옵션
- 연쇄
- 참조하는 테이블까지 연쇄적으로 제거하는 옵션
- 널값
- 참조되는 릴레이션에서 튜플을 삭제하고, 참조하는 튜플들의 외래값에 NULL값을 넣는 옵션
● 인덱스
'키값, 포인터(주소)' 쌍으로 구성되는 데이터 구조
- 클러스터드 인덱스
- 인덱스의 키의 순서에 따라 데이터가 정렬되어 저장되는 방식
- 넌클러스터드 인덱스
- 인덱스의 키 값만 정렬되고, 실제 데이터는 정렬되지 않는 방식
● 뷰
접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 구성된 가상 테이블
● 클러스터(Cluster)
데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법. 클러스터의 분포도가 넓을수록 유리하다
● 파티션
- 범위분할(Range Partitioning) : 지정한 열의 값을 기준으로 분할
- 해시분할(Hash Partitioning) : 해시 함수를 적용할 결과 값에 따라 데이터를 분할
- 리스트분할(List Partitioning) : 특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능한 분할 기법
- 조합분할(Composite Partitioning) : 범위,해시,리스트 중 2개를 결합한 방식.
● 데이터베이스 정의
- 통합된 데이터
- 저장된 데이터
- 운영 데이터
- 공용 데이터
● 데이터베이스 특성
- 실시간 접근성
- 계속적인 변화
- 동시공용
- 내용참조
● 데이터베이스 종류
- 파일 시스템(File system)
- 관계형 데이터베이스 시스템(RDBMS) : 관계형 모델을 기반
- 계층형 데이터베이스 시스템(HDBMS) : 상하 종속적인 관계로 계층화하여 관리
- 네트워크 데이터베이스 시스템(NDBMS) : 망상 형태로 표현한 데이터 모델
● DBMS 유형
- 키-값 DBMS
- 컬럼 기반 데이터 저장 DBMS : key안에 (column,value)조합으로 된 여러개의 필드를 갖는 DBMS
- 문서 저장 DBMS : 값의 데이터 타입이 문서타입을 사용하는 DBMS
- 그래프 DBMS : 시맨틱 웹과 온톨로지 분야에서 활용되는 그래프로 데이터를 표현한 DBMS
● DBMS 특징
- 무결성
- 일관성
- 보안성
- 효율성
- 회복성
● 빅데이터
- 특성 : 데이터의 양, 데이터의 다양성, 데이터의 속도
- 빅데이터 수집,저장,처리 기술
- 비정형/반정형 데이터 수집 : 정제되지 않은 데이터를 수집
- 정형 데이터 수집 : 정제된 데이터를 수집
- 분산 데이터 저장/처리 : 대용량 파일의 효과적인 분산 저장
- 분산데이터 베이스 : HDFS 컬럼 기반 데이터베이스로 실시간 랜덤 조회 및 업데이트 가능
- HDFS : 하둡 분산 파일 시스템
● NoSQL( Not Only SQL )
고정된 테이블 스키마가 필요하지 않고, 조인 연산을 사용할 수 없으며, 수평적으로 확장이 가능한 DBMS
- NoSQL 특성
- Basically Available : 언제든지 데이터 접근 할 수 있는 속성
- Soft-State : 외부에서 전송된 정보를 통해 결정되는 속성
- Eventually Consistency : 이관성이 유지되는 속성
- NoSQL 유형
- Key-Value Store
- Column Family Data Store
- Document Store
- Graph Store
● 데이터마이닝
데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아주는 기술
- 데이터마이닝 절차 : 목적 설정 -> 데이터 준비 -> 가공 -> 마이닝 기법 적용 -> 정보검증
- 주요 기법
- 분류 규칙 : 과거 데이터를 토대로 새로운 레코드의 결과 값을 예측하는 기법
- 연관 규칙 : 데이터 안에 항목들 간의 종속관계를 찾아내는 기법
- 연속 규칙 : 연관 규칙에 시간 관련 정보가 포함된 형태의 기법
- 데이터 군집화 : 대상 레코드들을 유사한 특성을 지닌 몇 개의 소그룹으로 분할하는 작업
● 연계 메커니즘
응용 소프트웨어와 연계 대상 모듈 간의 데이터 연계시, 요구사항을 고려한 연계 방법과 주기를 설계하기 위한 매커니즘
● 주요 연계 기술
- 직접 연계
- DB 링크 : 데이터베이스에서 제공하는 DB링크 객체를 이용
- DB 연결 : 수신 시스템의 WAS에서 송신 시스템 DB로 연결하는 DB커넥션 풀을 이용하여 연결
- API/Open API
- JDBC : 수신 시스템의 프로그램에서 JDBC 드라이버를 이용하여 송신 시스템 DB와 연결
- 하이퍼링크
- 간접 연계
- 연계 솔루션(EAI) : 기업에서 운영되는 솔루션
- Web Service/ESB : WSDL과 SOAP 프로토콜을 이용한 연계
- 소켓 : 소켓을 생성하여 포트를 할당하고, 통신
● EAI
기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달, 연계 통합이 가능하도록 하는 솔루션
- 구성 요소
- EAI 플랫폼
- 어댑터 : 다양한 애플리케이션을 연결
- 브로커 : 데이터 포맷과 코드를 변환하는 솔루션
- 메시지 큐 : 비동기 메시지를 사용하여 데이터를 송수신하는 기술
- 비즈니스 워크플로우 : 미리 정의된 기업의 비즈니스 workflow에 따라 업무를 처리하는 기능
- 구축 유형
- 포인트 투 포인트(Point to point) : 1대1 단순 통합 방법
- 허브 앤 스포크(Hub & Spoke) : 단일한 접점의 허브 시스템을 통하여 데이터를 전송하는 중앙 집중식 방식
- 메시지 버스(Message Bus) : 애플리케이션 사이 미들웨어를 두어 연계하는 미들웨어 통합 방식
- 하이브리드(Hybrid) : 그룹 내는 허브앤스포크, 그룹 간은 메시지 버스 방식을 사용하는 통합 방식
● ESB
기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간을 하나의 시스템으로 관리 운영할 수 있도록 서비스 중심의 통합을 지향하는 아키텍처, 느슨한 결합 방식 지원
- 구축 유형 : 버스 방식의 분산형 토폴로지 구성
● 웹서비스(Web Service)
네트워크에 분산된 정보를 서비스 형태로 개방하여, 표준화된 방식으로 공유하는 기술(서비스 지향 아키텍처)
- 웹서비스 유형
- SOAP : HTTP,HTTPS,SMTP등을 사용하여 XML 기반의 메시지를 네트워크 상태에서 교환하는 프로토콜
- WSDL : 웹서비스에 대한 상세 정보가 기술된 XML 형식으로 구현되어 있는 언어
- UDDI : WSDL을 등록하고 검색하기 위한 저장소로 공개적으로 접근, 검색이 가능한 레지스트
● IPC
운영체제에서 프로세스 간 서로 데이터를 주고 받기 위한 통신 기술
● 컴포넌트 명세서
컴포넌트 개요, 부 클래스의 동작, 인터페이스를 통해 외부와 통신하는 명세
● 인터페이스 명세서
컴포넌트 명세서에 명시된 인터페이스 클래스의 세부적인 조건 및 기능을 명시한 명세서
● JSON
'속성-값' 또는 '키-값' 쌍으로 이루어진 데이터를 전달하기 위해 텍스트를 사용하는 개방형 표준 포맷,
AJAX에서 많이 사용되고 XML을 대체하는 주요 데이터 포맷
● XML
HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어
● AJAX
자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하는 웹 기술
● REST
웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처
● 데이터베이스 암호화 알고리즘
- 대칭 키 암호화 알고리즘
- 비대칭 키 암호화 알고리즘
- 해시 암호화 알고리즘
● 데이터 암호화 전송 보안 기술
- IPSec(IP Security) : IP계층(3계층)에서 보안 서비스를 제공하는 터널링 프로토콜
- SSL/TLS : 전송(4계층) ~ 응용(7계층) 사이에서 데이터 무결성을 보장하는 보안 프로토콜
- S-HTTP : 웹상에서 네트워크 트래픽을 암호화하는 주요 방법
● 인터페이스 구현 검증 도구
- xUnit : 자바, C++, Net 등 다양한 언어를 지원하는 단위테스트 프레임워크
- STAF : 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
- FitNesse : 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크
- NTAF : FitNesse + STAF 통합한 테스트 자동화 프레임워크
- selenium : 웹 애플리케이션 테스트 프레임워크
- watir : 루비 기반 웹 애플리케이션 테스트 프레임워크
● 인터페이스 감시 도구
- 스카우터(Scouter) : 모니터링 및 DB Agent를 통해 오픈 소스 DB 모니터링 기능, 인터페이스 감시 기능을 제공
- 제니퍼(Jennifer) : 애플리케이션의 개발부터 운영까지 성능을 모니터링하고 분석해주는 APM 소프트웨어
'정보처리기사' 카테고리의 다른 글
[정보처리기사] SQL 문법 종합 정리 (0) | 2022.05.06 |
---|---|
[정보처리기사] 정처기 헷갈리는 단어 정리 (0) | 2022.05.06 |
[정보처리기사] 구성요소, 프로세스(절차) 모음 (0) | 2022.05.04 |
[정보처리기사] 실기 정리 ( 3 / 3 ) (0) | 2022.05.03 |
[정보처리기사] 실기 정리 ( 2 / 3 ) (0) | 2022.05.03 |