som2na.log Show som2na.log dlsdk2526·2022년 3월 16일 1 # 핵심만 뽑은 요약 정리# 2022 정보처리기사 실기1. 요구사항 확인2. 화면 설계3. 데이터 입출력4. 통합구현5. 인터페이스구현8. 서버프로그램 구현9. 소프트웨어 개발 보안 구축10. 애플리케이션 테스트11. 응용 SW 기초 기술 활용12. 소프트웨어 패키징Ina Kim 기록하는것을 좋아합니다 이전 포스트 정처기 실기 요약 [5] 인터페이스 구현다음 포스트 정처기 실기 요약 [8] 서버프로그램 구현0개의 댓글2021 시나공 정보처리기사 책을 참고로 작성하고 있습니다. 요약 내용이 추가될 때마다 수정하고 있습니다. 필자는 이번에 3번 째 정보처리기사 실기를 보는데...(지난 번에는 58점으로 떨어짐 ㅠㅠ) 매번 나왔었던 부분이나, 애매하게 알았던 부분 등 꼭 필요한 요소들만 요약해서 정리하고 있습니다. 내용이 상당히 깁니다. 제 기준 대로 별표를 붙혔고, 5점은 꼭 숙지하시고, 4점 이상인 부분은 서술형으로도 쓸 수 있게 잘 외우셔야 합니다. * 필자는 2021 2회차 실기에 85점으로 합격했습니다. 감사합니다! 요구사항 설계 및 개발 프로세스모듈 ★★ 공통 모듈 : 기능을 분할하고 추상화하여 성능 향상 및 유지보수를 효과적으로 하기 위한 공통 컴포넌트 구현 기법
공통 모듈 명세 기법[정명완일추] ★★★★★ 정확성 : 시스템 구현 시 해당 기능이 필요하다는 것을 알 수 있도록 정확히 작성 결함관리 측정지표 ★★ 결함 분포 : 모듈 또는 컴포넌트의 특정 속성에 해당하는 결함 수 측정
XP(eXtreme Programming) 기법 ★★★ 핵심 가치 : 의사소통(Communication), 단순성(Simplicity), 용기(Courage), 존중(Respect),
피드백(Feedback)[의단용존피] XP 개발 프로세스 ★★ 사용자 스토리 : 요구사항 간단한 시나리오로 표현. 기능 단위 구성. 스크럼 개발 프로세스 ★★ 제품 백로그 : 제품 개발에 필요한 요구사항을 우선순위에 따라 나열한 로그 리스트. 지속적으로 업데이트되며, 사용자 스토리 기반의 릴리즈 계획 수립
소프트웨어 생명 주기 ★★ 폭포수 모형 : 가장 오래되고 가장 폭넓게 사용된 전통적 모형으로 고전적 생명 주기 모형이라 함. 두 개 이상의 과정 병행 수행 할 수 없음.
스크럼 ★ 제품 책임자(PO) : 이해관계자들의 의견을 종합해 제품에 대한 요구사항 작성. PO는 요구 사항이 담긴 백로그를 작성하고 백로그 우선 순위를 지정
UI 요구사항 작성 ★ 요구사항 요소 확인 -> 정황 시나리오 작성 -> 요구사항 작성 요구사항 요소 확인 ★ 데이터 요구 : 사용자가 요구하는 모델과 객체들의 주요 특성을 기반으로 하여 데이터 객체들을 정리(이메일의 메시지 속성 -> 제목, 발신인, 답변 등) 요구사항 개발 프로세스[도분명확] ★★★★★ 도출 : 시스템, 사용자, 개발자가 의견을 교환하여 요구사항을 식별하고 이해하는 과정. 소프트웨어 개발 생명주기(SDLC) 반복
정형 명세기법 : 수학적 기호, 정형화된 표기법. 종류(VDM, Z, Petri-net, CSP)
연계 요구사항 ★ 체크리스트 : 시스템 운영환경, 성능, 보안, 데이터발생주기 등의 기준에 대한 점검을 통한 연계 요구사항 기법
요구사항 검토 상세 항목 ★★★ 동료 검토 : 작성자가 명세서 내용을 직접 설명하고 동료들이 이를 들으면서 결함을 발견하는 형태의 검토 방법 요구 사항 분석의 도구와 기법 ★★★ 사용자 인터뷰, 핵심 사용자 그룹 면담(FGI: Focus Group Interview): 사용자 면담 또는 시스템 관리자 및 서비스 활용자와 같은 핵심 그룹 면담 연계 데이터 정의, 연계 데이터의 활용 목적, 필요성 등을 식별하기 위함으로 사용자 인터뷰 전 연계 대상 시스템의 응용 애플리케이션 기능, 서비스의 확인이 필요함
EAI(Enterprise Application Integration) ★★★★★ EAI는 기업 내 각종 애플리케이션 및 플롯폼 간의 정보 전달, 연계 통합 등 상호 연동이 가능하게 해주는 솔루션이다. EAI는 비즈니스 간 통합 및 연계성을 증대시켜 효율성 및 각 시스템 간의 확정성을 높여준다.
Hybrid : Hub & Spoke와 Message Bus의 혼합 방식이다. 데이터 병목 현상을 최소화 할 수 있다. ESB(Enterprise Service Bus) ★★★★★ ESB는 애플리케이션 간 연계, 데이터 변환, 웹 서비스 지원 등 표준 기반의 인터페이스를 제공하는 솔루션이다. ESB는 애플리케이션 통합 측면에서 EAI와 유사하지만 애플리케이션 보다는 서비스 중심의 통합을 지향한다. ESB는 특정 서비스에 국한 되지 않고 범용적으로 사용하기 위해 애플리케이션과의 결합도(Coupling)를 약하게 유지한다. 관리 및 보안 유지가 쉽고, 높은 수준의 품질 지원이 가능하다.
* SOA(서비스 지향 아키텍처) : 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처 요구사항 분석 ★★★★ 요구사항 분석 : 개발 대상에 대한 사용자의 요구사항을 이해하고 문서화하는 활동.
요구사항 분석용 도구 ★★★ SADT : SoftTech사에서 개발. 시스템 정의, 소프트웨어 요구사항 분석, 시스템/소프트웨어 설계를 위한 도구. 구조적 요구 분석을 하기 위해 블록 다이어그램을 채택한 자동화 도구. UML ★★★ UML : 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어.
다이어그램 ★★★★★ 구조적 다이어그램
소프트웨어 개발객체지향 분석 방법론 ★★★ Rumbaugh(럼바우)
방법 : 가장 일반적으로 사용되는 방법으로 분석 활동을 객체모델, 동적모델, 기능모델로 나누어 수행하는 방법 브룩스의 법칙 : 소프트웨어 개발 일정이 지연된다고 해서 새로운 개발 인력을 진행 중인 프로젝트에 투입할 경우 작업 적응 기간과 부작용으로 인해 일정이 더욱 지연된다는 법칙 객체지향설계 원칙[SOLID] ★★★ 단일 책임 원칙 : 단 하나의 책임만 가짐 개방-폐쇄 원칙 : 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계 리스코프 치환 원칙 : 자식 클래스는 최소한 부모 클래스의 기능을 수행 인터페이스 분리 원칙 : 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 함. 의존 역전 원칙 : 의존 관계 성립 시 추상성이 높은 클래스와 의존 관계를 맺어야 함. 소프트웨어 아키텍처 소프트웨어 아키텍처 : 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체다. 객체 지향 ★★ 객체 지향 : 각 요소들을 객체로 만든후 객체를 조립해서 소프트웨어를 개발하는 기법. LOC 기법 ★★★ - 노력(인월) = 개발 기간 x 투입 인원 cocomo 소프트웨어 개발 모형 ★★ 조직형 : 5만 라인(50KDSI)이하의 소프트웨어를 개발하는 유형. 사무 처리용, 업무용, 과학용 응용 소프트웨어 개발에 적합 수학적 산정 기법 ★★ COCOMO : 보헴이 제안한 것으로 LOC(원시 코드 라인 수)에 의한 비용 산정 기법
비용 산정 자동화 추정 도구 ★★ SLIM : Rayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 한 자동화 추정 도구 소프트웨어 개발 표준 ★★ CMMI(능력성숙도통합모델) : ISO15504(SPICE)를 준수하는 소프트웨어 개발 능력/성숙도 평가 및 프로세스 개선 활동의 지속적인 품질 개선 모델 소프트웨어 재사용 : 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것. 소프트웨어 개발 프레임워크 특성[모재확제] ★★★★ 모듈화 : 프레임워크는 캡슐화를 통해 모듈화를 강화하고 설계 및 구현의 변경에 따른 영향을 최소화함으로서 소프트웨어의 품질을 향상시킴. 프레임 워크는 개발 표준에 의한 모듈화로 인해 유지보수가 용이함.
* 전체적으로 생산성+ 품질+ 소프트웨어 개발 방법론 ★★ 소프트웨어 개발 방법론 : 소프트웨어 개발, 유지보수 등에 필요한 여러 가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리해 표준화 한것.[구정객컴제]
프로젝트 일정 계획 ★★★ - PERT(프로그램 평가 및 검토 기술) : 프로젝트에 필요한 전체작업의 상호 관계를 표시하는 네트워크 데이터베이스 요약데이터베이스 ★★★★ 공동으로 사용될
데이터를 중복을 배제하여 통합하고, 저장장치에 저장해 항상 사용할 수 있도록 운영하는 운영 데이터[통저운공]
스키마 : 데이터베이스의 구조와 제약 조건에 관한 전반적인 기술을 명세한 것.[외개내]
데이터베이스 설계시 고려사항[무일회보효데] ★★★ - 무결성 : 삽입, 삭제, 갱신 연산 후에도 정해진 제약조건을 항상 만족해야 함. 데이터베이스 설계 순서[요개논물구] ★★★ 요구
조건 분석 > 개념적 설계 > 논리적 설계 > 물리적 설계 > 구현 데이터 모델 ★★★ 데이터 모델 : 현실 세계의 정보들을 컴퓨터에 표현하기 위해 단순화,
추상화하여 체계적으로 표현한 개념적 모형.[구연제]
관계형 데이터베이스 ★ 관계형 데이터베이스 : 2차원적인 표를 이용해 데이터 상호 관계를 정의하는 데이터베이스. E.F Codd에 의해 제안.
DBMS 필수 기능 ★★ DCL(데이터 제어 언어)의 기능 : 보안, 무결성, 장애회복,
병행 수행 제어등을 정의하는데 사용하는 언어. 정규화 관련 ★★★★ 이상 현상 : 릴레이션 조작시 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 곤란한 현상이며, 데이터의 중복성으로 인해 릴레이션을 조작할때 발생하는 비합리적인 현상[삽입,삭제,갱신]
정규화 과정[도부이결다조] ★★★★ 1NF : 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있는 정규형. 릴레이션의 모든 속성값이 원자값으로만 되어 있는 정규형 함수적 종속 : X->Y 관계에서 X가 결정자이고, Y가 종속자다. 데이터 관련 ★★★ 관계 대수 : 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는 가를 기술하고, 관계로 표현된 데이터를 취급하는 대수적인 연산 체계이자 절차적 정형언어이다.
일반 집합 연산자 ★★★ - 합집합 U : 이항 연산으로 관계성이 있는 두 개의 릴레이션을 합집합하여 하나의 릴레이션을 만들어 내는 연산
키 ★★ 후보키 : 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분 집합. 유일성과 최소성을 모두 만족. 시스템 카탈로그 ★★ 데이터베이스에 저장되어 있는 모든 데이터 개체들의 관한 정보나 명세에 대한 정보가 수록되어 있는, DBMS가 생성하고 유지하는 데이터베이스 내의 테이블들의 집합체 트랜잭션의 특성[원일독영] ★★★★ Atomicity(원자성) : 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지, 아니면 전혀 반영 되지 않도록 복구(Rollback)되어야 한다 트랜잭션 관련 ★★★ 병행 제어 : 다중 프로그램의 이점을 활용해 동시에 여러 개의 트랜잭션을 병행수행할 때 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것. 고급 데이터베이스 ★★ 데이터 웨어하우스 : 급장하는 대량의 데이터를 효과적으로 분석해 정보화하고 이를 여러 계층의 사용자들이 효율적으로 사용할 수 있도록 한 데이터베이스
무결성 ★★ 개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정 SQL 응용 ★★★ 프로시저 구성 : DECLARE/ BEGIN/ END/ CONTROL/ SQL/ EXCEPTION/ TRANSACTION [디비엔컨SET] 그룹 함수 ★★ 그룹 함수 : 소 그룹 간의 중간 합계, 소계를 계산하여 산출하는 함수. GROUP BY 뒤에 쓰고, SUM, AVG, COUNT와 같은 그룹함수와 함께 쓰임 윈도우 함수 ★★ 윈도우 함수 : 데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위해 SQL에 추가한 함수. OVER 명령어. GROUP BY 절을 이용하지 않고, 함수의 인수로 지정한 속성의 값을 집계함수의 인수로 지정한 속성이 집계할 범위가 되는데, 이를 윈도우라고 함. 인덱스 ★★ 데이터 레코드를 빠르게 접근하기 위해 키 값, 포인터 쌍으로 구성되는 데이터 구조. 인덱스는 데이터가 저장된 물리적 구조와 밀접한 관계. 레코드가 저장된 물리적 구조에 접근하는 방법 제공. 인덱스를 통해
파일 레코드에 대한 액세스를 빠르게 수행. 인덱스가 없으면 TABLE SCAN(특정한 값을 찾기위해 모든 데이터 페이지를 확인)이 발생. 클러스터드 인덱스 : 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식
뷰(View) ★★★ 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블. 뷰는 데이터 보정 작업, 처리 과정 시험 등 임시적인 작업을 위한 용도로 활용된다. 뷰는 가상 테이블이기 때문에 물리적 구현이 없고, 데이터의 논리적 독립성을 제공한다. CREATE와 DROP문을 사용. 클러스터 ★★★ 데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법. 클러스터링된 테이블은 데이터 조회 속도 향상시키지만 데이터 입력, 수정, 삭제에 대한 성능은 저하시킨다. 클러스터는 데이터의 분포도가 넓을수록 유리. 처리 범위가 넓은 경우엔 단일 테이블 클러스터링, 조인이 많이 발생하는 경우엔 다중 테이블 클러스터링. 파티션 설계 ★★★ 대용량 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것. 대용량 DB의 경우 중요한 몇 개의 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워진다. 테이블이나 인덱스를 파티셔닝 하면 파티션키나 인덱스키에 따라 물리적으로 별도의 공간에 데이터가 저장된다. 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션 별로 수행된다. 범위(Range), 해시(Hash), 합성(Composite) 분산 데이터베이스 ★★★ 논리적으로는 하나의 시스템에 속하지만 물리적(여러 지역으로)으로는 네트워크를 통해 연결된 여러 개의 컴퓨터 사이트에 분산되어 있는 데이터베이스[위중병장] 분산 설계 방법 ★ - 테이블 위치 분산 : 데이터베이스의 테이블을 각기 다른 서버에 분산시켜 배치 NoSQL(Not Only SQL) ★★★ 전통적인 RDBMS와 다른 DBMS를 지칭하기 위한 용어로, 데이터 저장에 고정된 테이블 스키마가 필요하지 않고 조인 연산을 사용할 수 없으며, 수평적으로 확장이 가능한 DBMS으로, Basically Availale, Soft-state, Eventually Consistency의 특성이 있음 -
테이블 스키마 필요 X, 조인 연산 사용 X, 수평적 확장 O 쿼리 요약 ★★★★★ INSERT INTO 테이블(컬럼1,컬럼2,...) VALUES(A,B,C) 테이블 수정 ★★★★★ 컬럼 추가 : ALTER TABLE 테이블 ADD(컬럼, 속성) 회복 ★★★★ 트랜잭션들을 수행하는 도중 장애 발생해 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구하는 작업 데이터베이스 이중화 ★★ 데이터베이스 이중화 : 서비스 중단이나 물리적 손상 발생시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것. 접근통제 ★★★ 접근통제 : 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것. * 주체가 데이터 소유자=DAC, 시스템=MAC, 중앙관리자=RBAC입니다. 접근 통제 정책 ★ - 신분 기반 정책 : 주체나 그룹의 신분에 근거해 객체의 접근을 제한. IBP와 GBP가 있음. 접근 통제 조건 ★ - 값 종속 통제 : 일반적으로 객체에 저장된 값에 상관없이 접근 통제를 동일하게 허용하지만, 객체에 저장된 값에 따라 다르게 접근 통제를 허용하는 경우에 사용
인터페이스 구현아키텍처 패턴 ★★★ 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제 레이어 패턴 : 시스템을 계층으로 구분하여 구성하는 패턴 클라이언트-서버 패턴 : 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴 파이프-필터 패턴 : 데이터 스트림 절차의 단계를 필터로 캡슐화해 파이프를 통해 전송하는 패턴 모델-뷰-컨트롤러 패턴 : MVC 기타 패턴 마스터-슬레이브 패턴 : 슬레이브 컴포넌트에서 처리된 결과물을 돌려받는 방식의 패턴 브로커 패턴 : 브로커가 요청에 맞는 컴포넌트와 사용자를 연결 피어-투-피어 패턴 : 하나의 컴포넌트가 클라이언트가 될수도, 서버가 될수도 있는 패턴 이벤트-버스 패턴 : 채널에 발행과 구독. Subscribe, Publish. 블랙보드 패턴 : 모든 컴포넌트들이 데이터 저장소와 블랙보드 컴포넌트에 접근이 가능한 패턴. 공통모듈 ★★★★★ 공통모듈 : 여러 프로그램에서 공통으로 사용하는 모듈 공통모듈 명세기법 종류 정확성 : 시스템 구현시 해당 기능이 필요하다는 것을 알수 있도록 정확히 작성 명확성 : 해당 기능을 이해할 때 중의적으로 해석하지 않도록 함 완전성 : 시스템 구현을 위해 필요한 모든 것을 기술 일관성 : 공통 기능들 간 상호 충돌이 발생하지 않도록 함 추적성 : 기능에 대한 요구사항 출처, 관련 시스템 간의 관계를 파악. 재사용 : 이미 개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 적합하도록 최적화 함. 디자인 패턴 ★★★★★ 생성 패턴 추상 팩토리 : 인터페이스를 통해 서로 의존하는 객체들의 그룹으로 생성, 추상적으로 표현. 빌더 : 분리된 인스턴스를 건축하듯이 조합해 객체를 생성 팩토리 메소드 : 상위 클래스에서 인터페이스만 정의하고 실제 생성은 서브클래스가
담당함. 구조 패턴 컴포지트 : 복합 객체와 단일 객체를 구분없이 행위 패턴 책임 연쇄 : 객체가 둘 이상 존재해 한 객체가 처리하지 못하면 다음 객체로 넘어가는 패턴 커맨드 : 요청에 사용되는 명령어를 추상 클래스와 구체 클래스로 분리해 단순화 인터프리터 : 언어에 문법 표현을 정의하는 패턴 반복자 : 접근이 잦은 객체에 동일한 인터페이스를 사용하도록 하는 패턴 중재자 : 수많은 객체 간의 복잡한 상호작용을 캡슐화 해 객체로 정의하는 패턴 메멘토 : 특정 시점의 객체의 상태를 Crtl+z와 같은 되돌리기 기능으로 해당 시점으로 돌리는 기능을 제공 옵저버 : 한 객체의 상태가 변화하면 변화한 상태를 다른 객체에게 전달. 일대 다의 의존성을 정의. Publish, Subscribe 상태 : 객체의 상태에 따라 동일한 동작을 다르게 처리 전략 : 동일한 계열의 알고리즘을 개별적으로 캡슐화해, 상호교환 할 수 있게 정의. 알고리즘. 템플릿 메소드 : 상위 클래스에서 골격을 정의, 하위 클래스에서 세부처리를 구체화 함. 방문자 : 각 클래스 들의 데이터 구조에서 처리 기능을 분리해 별도의 클래스로 구성. 미들웨어 ★★★ 운영체제와 응용 프로그램, 서버와 클라이언트 사이에 다양한 서비스를 제공하는 소프트웨어 RPC : 원격 프로시저를 로컬 프로시저처럼 호출하는 미들웨어 MOM : 메시지 기반의 비동기형 메시지를 전달하는 미들웨어 TP-Monitor : 온라인 트랜잭션 업무에서 트랜잭션을 처리, 감시하는 미들웨어 ORB : 코바(CORBA) 표준 스펙을 구현한 객체 지향 미들 웨어 WAS : 사용자의 동적인 콘텐츠를 처리하기 위한 미들웨어 웹 서비스 ★★★ UDDI : WSDL을 등록해 서비스와 서비스 제공자를 검색하고 접근하는데 사용됨 WSDL : 웹 서비스명, 서비스 제공위치, 프로토콜 등 웹서비스에 대한 상세정보를 XML형식으로 명세(구현) 인터페이스 보안 ★★★ IPSec : 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지, 은닉 기능을 제공하는 보안 통신 규약 SSL(Secure Sockets Layer) : 애플리케이션 계층과 TCP/IP 계층 사이에서 인증, 암호화, 무결성을 보장하는 공개키 기반의 보안 프로토콜. Certificate Authority(CA)라 불리는 서드 파티로부터 서버와 클라이언트를 인증하는데 사용됨. S-HTTP : 클라이언트와 서버 간에 전송되는 모든 메시지를 암호화 하는 프로토콜 인터페이스 구현 검증 도구 ★★★ xUnit : Java(Junit), C++(Cppunit), .Net(Nunit) 등 다양한 언어를 지원하는 단위 테스트 프레임워크
APM : 애플리케이션의 성능 관리를 위해 접속자, 자원 현황, 트랜잭션 수행 내역 등 다양한 모니터링 기능을 제공하는 도구 - 스카우터 : 애플리케이션 및 OS 자원에 대한 모니터링 기능 제공 - 제니퍼 : 개발부터 테스트, 오픈, 운영, 안정화 까지 전 단계에 걸쳐 모니터링 및 분석 화면 설계UI 설계원칙 ★★★★★ 직관성 : 누구나 쉽게 이해하고 사용할 수 있어야 함 UI 설계 도구[와목스프유] ★★★★ 와이어프레임 : 기획 단계에 초기에 제작하는 것. 페이지에 대한 개략적인 레이아웃이나 UI 요소등에 뼈대를 설계. 각 페이지의 영역 구분, 콘텐츠, 텍스트 배치 등을 화면 단위로 설계.
소프트웨어 품질 요구사항[기신사효유이] ★★★ 기능성 : 소프트웨어가 사용자의 요구사항을 정확하게 만족하는 기능을 제공하는 여부 (정합성, 정확성, 상호운용성, 보안성, 호환성) 애플리케이션 테스트 관리애플리케이션 테스트 기본 원리 ★★★★★ 파레토 법칙 : 애플리케이션의 20%에 해당하는 코드의 전체 결함의 80%가 발견되는 법칙 살충제 패러독스 : 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않음 오류 부재의 궤변 : 결함을 모두 제거해도 사용자의 요구사항을 만족하지 못하면 품질이 높다고 말할 수 없음 프로그램 실행 여부에 따른 애플리케이션 테스트 ★ 정적 테스트 : 프로그램을 실행하지 않고 명세서나 소스 코드 대상으로 분석하는 테스트
테스트 기반 테스트 ★★ 명세 기반 테스트 : 사용자 요구사항의 명세를 빠짐 없이 테스트 케이스로 구조 기반 테스트 : 소프트웨어 내부의 논리 흐름에 따라 테스트 케이스를 작성 경험 기반 테스트 : 유사 소프트웨어나 기술 등에 대한 테스터의 경험을 기반 목적에 따른 테스트[회안강성구회병] ★★★★ 회복 테스트 : 시스템에 여러가지 결함을 주어 실패하도록 한 후 올바르게 복구 되는지 테스트 화이트박스 테스트의 제어 구조 검사 ★ 조건 검사 : 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법 화이트 박스 테스트 검증 기준 ★★★★ 구문 커버리지(Statement Coverage) : 테스트 스위트에 의해 실행된 구문이 몇 퍼센트인지 측정하는 것. 다른 커버리지에 비해 가장 약함 블랙박스 테스트 기법[동경결상 유분페] ★★★★★ 동등 분할 테스트 : 입력 데이터(입력 값)의 영역을 유사한 도메인별로 유효 값 / 무효 값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트하는 기법
테스트 오라클 ★★★★★ 참 오라클 : 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클로, 발생된 모든 오류를 검출 할 수 있음
테스트 하네스 구성요소 ★★★★★ * 테스트 하네스 : 애플리케이션의 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로 테스트를 지원하기 위해 생성된 코드와 데이터를 의미하며, 테스트가 실행될 환경을 시뮬레이션하며 컴포넌트 및 모듈이 정상적으로 테스트 되도록 하는 도구. 코드 개발자가 작성하는 요소임.
연계 테스트 ★★ 구축된 연계시스템과 연계 시스템의 구성요소가 정상적으로 동작하는지 확인하는 활동 애플리케이션 테스트 ★★★ 소프트웨어 개발 단계 : 요구사항 -> 분석 -> 설계 -> 구현
개발 단계에 따른 애플리케이션 테스트 ★★★ 단위 테스트 : 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트 하는 것. 인터페이스, 외부적 입출력, 자료 구조, 독립적 기초 경로, 오류 처리 경로, 경계 조건 등을 검사. 사용자의 요구사항을 기반으로 한 기능성 테스트를 최우선으로 수행. 구조 기반 테스트와 명세 기반 테스트로 나뉘고, 주로 구조 기반 테스트를 수행 통합 테스트 : 단위 테스트가 완료된 모듈들을 결합해 하나의 시스템으로 완성 시키는 과정에서의 테스트며, 과정에서 발생하는 오류 및 결함을 찾는 테스트 - 빅뱅 통합 테스트 : 모듈 간의 상호 인터페이스를 고려하지 않고, 모듈을 한꺼번에 결합시켜 테스트 하는 방법. - 하향식 통합 테스트 : 상위에서 하위 모듈로. 스텁(제어 모듈의 종속 모듈). 깊이 우선 통합, 넓이 우선 통합 사용 - 상향식 통합 테스트 : 하위에서 상위 모듈로. 클러스터(주요 제어 모듈과 관련된 종속 모듈의 그룹) - 회귀 테스팅 : 통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인하는 테스트 시스템 테스트 : 개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행 되는가를 점검하는 테스트 인수 테스트 : 개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트 - 알파 테스트 : 개발자의 장소에서 개발자 앞에서, 통제된 환경에서 사용자와 함께 테스트 - 베타 테스트 : 최종적으로 선정된 여러 명의 사용자가 직접 테스트 암호화 및 소프트웨어 보안 요약SECURE SDLC ★★★ SECURE SDLC : 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것. 소프트웨어 개발 보안 3대 요소[기무가인부] ★★★★★ 기밀성 : 인가되지 않은 사용자와 애플리케이션의 접근에 따른 정보 노출 차단 시큐어 코딩 : 구현 단계에서 발생할 수 있는 보안 취약점들을 최소화 하기 위해 보안 요소들을 고려해 코딩하는 것 입력 데이터 검증 및 표현 ★★★ SQL 삽입 : 웹 응용 프로그램에 SQL을 삽입해 내부 데이터베이스 서버의 데이터를 유출 및 변조, 관리자 인증을 우회하는 보안 약점 크로스사이트 스크립팅(XSS) : 웹 페이지에 악의적인 스크립트를 삽입해 방문자들의 정보를 탈취하거나, 비정상적인 기능 수행을 유발하는 보안 약점 메모리 버퍼 오버플로우 : 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에 자료를 읽거나 쓰려고할때 발생하는 보안 약점. 적절한 버퍼의 크기를 설정하고, 설정된 범위의 메모리 내에서 올바르게 읽고 쓰도록 함으로 예방. 암호 알고리즘 ★★★★ 개인키 암호화 기법 동일한 키로 데이터를 암호화하고 복호화하는 암호화 기법 [Stream] [Block] [Hash] 서비스 거부 공격 유형 ★★★★★ Ping of Death : Ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 허용 범위(65,536 바이트) 이상으로 전송해 공격 대상의 네트워크를 마비 시킴 - Trin00 : 가장 초기 형태의 데몬으로 UDP Flooding 공격을 수행 - TFN : UDP Flooding + TCP SYN Flood 공격 + ICMP 응답 요청 + 스머핑 공격 수행 (니누푸) (훔쳐보기+획득+권한및탈취) * 스니핑 : 네트워크 상에서 자신이 아닌 다른 상대방들의 패킷 교환을 훔쳐보는 행위(중요정보 훔쳐보기) * 스누핑 : 네트워크 상에서 떠도는 중요 정보를 몰래 획득하는 행위.(중요정보 염탐 + 획득) * 스푸핑 : 외부의 악의적인 네트워크 침입자가 웹사이트를 구성해 사용자들의 방문을 유도, 인터넷 프로토콜인 TCP/IP의 구조적 결함을 이용해 사용자의 시스템 권한을 획득한 뒤, 정보를 빼앗아 가는 해킹 수법(시스템 권한을 획득해 정보를 탈취) 네트워크 침해 공격 관련 용어 ★★★ 스미싱 : 각종 행사 안내 등 문자 메시지를 이용해 사용자의 개인 신용 정보를 빼내는 수법 정보 보안 침해 공격 관련 요소 ★★★ 좀비 PC : 악성 코드에 감염되 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터. C&C(Command & Control) 서버의 제어를 받아 DDoS공격에 이용됨 그외 보안 관련 ★★ 침입 탐지 시스템(IDS) : 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지하는 시스템. 오용 탐지, 이상 탐지가 있음. 각종 재해 관련 ★★★ BCP(Business Continuity Planning) : BCP는 각종 재해, 장애, 재난으로부터 위기관리를 기반으로 재해복구, 업무복구 및 재개, 비상계획 등을 통해 비즈니스 연속성을 보장하는 체계이다. 포인터 파이썬 정리 ★★★★★포인터 정리
파이썬 정리
프로토콜 네트워크 요약인터넷 ★★ 서브네팅 : 네트워크 주소를 다시 여러 개의 작은 네트워크로 나눠 사용하는 것. 4바이트의 구분하기 위해 나는 비트를 서브넷 마스크라고 함.
OSI 참조 모델[물데네전세표응] ★★ 물리 계층 : 전송에 필요한 두 장치간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의함. RS-232C, Bit 프로토콜 ★★★★★ 서로 다른 기기 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화 시켜 놓은 통신 규약.
응용 계층의 주요 프로토콜 ★★ SMTP : 전자 우편을 교환하는 서비스 전송 계층의 주요 프로토콜 ★★★★ TCP : 양방향 연결형 서비스 제공. 스트림 위주의 전달. 신뢰성 있는 경로 확립. 순서 제어, 오류 제어, 흐름 제어. * LDAP(Lightweight Directory Access Protocol) : TCP/IP 위에서 조직화 되고 비슷한 특성을 가진 객체들의 모인인 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜 * DHCP(Dynamic Host Configuration Protocol) : 네트워크상에서 동적으로 IP 주소 및 기타 구성정보 등을 부여/관리하는 프로토콜로서, PC의 수가 많거나 PC 자체 변동사항이 많은 경우 IP 설정이 자동으로 되기 때문에 효율적으로 사용 가능하고, IP를 자동으로 할당해주기 때문에 IP 충돌을 막는데 사용하는 프로토콜 인터넷 계층의 주요 프로토콜 ★★★★★ IP(Internet Protocol) : 전송할 데이터에 주소를 지정하고 경로를 설정. 비연결형인 데이터 그램 방식을 사용, 신뢰성 보장되지 않음 네트워크 액세스 계층의 주요 프로토콜 ★★★ Ethernet(IEEE 802.3) : CSMA/CD 방식의 LAN 네트워크 구축 방법 ★★ 스타형 : 중앙에 중앙 컴퓨터가 있고, 이를 중심으로 단말장치들이 연결되는 중앙 집중식의 네트워크 구성 형태.
NAT(네트워크 주소 변환) : 한 개의 정식 IP 주소에 다량의 가상 사설 IP 주소를 할당 및 연결하는 기능. IP 마스커레이드이용. 라우팅 프로토콜 ★★★★★ 경로제어 : 송수신 측 간에 전송 경로중에서 최적패킷 교환 경로를 결정하는 기능. 경로 제어표를 참조. 라우터에 의해 수행
네트워크 관련 장비 ★★ 허브 : 한 사무실이나 가까운 거리의 컴퓨터들을 연결하는 장치로, 각 회선을 통합적으로 관리하며, 신호 증폭 기능을 하는 리피터 역할도
포함함 네트워크 제어 ★★★ 트래픽 제어 : 네트워크의 보호, 성능 유지, 네트워크 자원의 효율적인 이용을 위해 전송되는 패킷의 흐름 또는 그 양을 조절하는 기능. 기타 네트워크 ★★★ CDN(Contents Delivery
Network) : 게임 클라이언트나 콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장해 사용자에게 제공하는 시스템 QoS(Quality Of Service) : 다른 프로그램, 사용자, 데이터 흐름 등에 우선순위를 정하며, 데이터 전송에 특정 수준의 성능(속도)를 보장하기 위한 능력 ATM(비동기 전송모드) : 광대역 서비스의 다양한 특수성을 수용하기 위한 광대역 종합정보통신망(B-ISDN)의 실현을 목적으로 제안되었으며, 회선 교환 방식과 패킷교환방식의 장점을 통합시킨 연결 지향적 송성을 지닌 패킷교환(스위칭) 프로토콜 SECURE OS ★★ SECURE OS : OS에 내재된 보안 취약점을 해소하기 위해 보안 기능을 갖춘 커널을 이식해 외부의 침입으로 부터 시스템 자원을 보호하는 운영체제. TCB 기반 참조 모니터의 개념을 구현하고 집행. 참조 모니터 : 보호 대상 객체에 대한 접근 통제를 수행하는 추상 머신이며, 보안 커널 데이터베이스를 참조해 객체애 다한 접근 허가 여부를 결정 DB 관련 신기술 ★★★ 하둡 : 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼. 가상화된 대형 스토리지 형성, 거대한 데이터 세트를 병렬로 처리할 수 있도록 개발된 자바 소프트웨어 프레임워크 맵 리듀스 : 대용량 데이터를 분산 처리 하기 위한 목적으로 개발된 프로그래밍 모델 타조 : 오픈 소스 기반 분산 컴퓨팅 플랫폼인 아파치 하둡 기반의 분산 데이터 웨어하우스 프로젝트 운영체제배치 프로그램 배치 프로그램 : 사용자와 상호작용 없이 일련의 작업을 작업 단위로 묶어 정기적으로 반복 수행하는 일괄 처리 방법
Windows 주요 특징 Pnp(자동감지기능) : 컴퓨터 시스템에 하드웨어를 설치했을 때, 필요한 시스템 환경을 운영체제가
자동으로 구성해주는 기능 Unix 시스템 특징 커널 : 프로그램과 하드웨어 간의 인터페이스 담당. 프로세스 관리, 기억장치 관리, 파일 관리, 입출력 관리 등 기억장치 관리 전략 반입 전략 : 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지 결정 가상 기억 장치 보조기억장치의 일부를 주기억장치처럼 사용하는 것 페이지 교체 알고리즘 페이지 부재(Page Fault) : CPU가 액세스한 가상 페이지가 주기억장치에 없는 경우. 페이지 부재가 발생하면 해당 페이지를 보조기억장치(디스크)에서 주기억장치로 가져와야함. 가상기억장치 관리사항 Locality(지역성) : 데닝(Denning) 교수에 의해 개념 증명. 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질. 스래싱을 방지하기 위한 워킹셋의 기반이 됨.
워킹 셋(Working Set) : 프로세스가 일정시간 동안 자주 참조하는 페이지들의 집합. 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로서 페이지 부재 및 페이지 교체 현상을 줄이고 프로세스의 기억 장치 사용이 안정됨. 프로세스 상태 전이 PCB(프로세스 제어 블록) : 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳이다. Hold -> Job 스케쥴러 -> 준비 프로세스 상태 전이 관련 용어 Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정 스케줄링 과정 장기 스케쥴링 : 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업. 작업 스케줄링, 상위 스케줄링이라고 함. 작업 스케줄러에 의해 수행됨 스케줄링 목적 공정성 : 모든 프로세스에 공정하게 할당 스케줄링 기법 선점 스케쥴링 : 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법. 우선순위가 높은 프로세스 먼저 처리. 시분할 시스템에 용이. 비선점 스케쥴링 : 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법(순서대로). 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU 사용. 일괄처리 방식에 적합
교착상태(Dead Lock) 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상 교착상태 필요 충분 조건 교착상태 해결 방법[예회발복] 예방 기법 : 상호 배제, 점유 및 대기, 비선점, 환형 대기 조건 중에서 어느 하나를 제거하여 해결 클라우드 컴퓨팅 유형 Iaas(인프라형) : 서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스로, 컴퓨팅 자원에 운영체제나 애플리케이션 등의 소프트웨어 탑재 및 실행을 하는 서비스 제품 소프트웨어 패키징소프트웨어 패키징 ★★★ 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는것 소프트웨어 패키징 작업 순서[기모빌환적변배] - 기능 식별 : 코드의 기능 확인 릴리즈 노트 ★★★ 개발 과정에서 정리된 릴리즈 정보를 최종 사용자인 고객과 공유하기 위한 문서 릴리즈 노트 작성 순서[모정개영정추] - 모듈 식별 -> 릴리즈 정보 확인 -> 릴리즈 노트 개요 작성 -> 영향도 체크 -> 정식 릴리즈 노트 작성 -> 추가 개선 항목 식별 디지털 저작권 관리(DRM) ★★ 저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 하는 디지털 콘텐츠 관리 및 보호 기술임. 디지털 저작권 관리 용어 디지털 저작권 관리의 기술 요소 형상관리 ★★★★ 형상관리 : 개발과정에서 소프트웨어의 변경사항을 관리하기 위해 개발된 일련의 활동. * CCB(Configuration Control Board; 형상통제 위원회) : 형상 항목에 대한 형상 베이스라인이 승인된 후, 발생되는 형상 항목의 변경에 대하여 평가, 조정, 승인/보류/기각을 결정하는 심의 조직 소프트웨어 버전 등록 관련 용어 ★★ 저장소(Respository) : 저장소 소프트웨어 버전 관리 도구 ★★ 버전 관리 도구 : 형상 관리 지침을 활용해 제품 소프트웨어의 신규 개발, 변경, 개선과 관련된 수정사항을 관리하는 도구다. 또한 소프트웨어 개발과 관련해 코드와 라이브러리 관련 문서 등 시간의 변화에 따른 변경을 관리하는 전체활동을 의미한다. - 공유 폴더 방식 : 버전 관리 자료가 지역 컴퓨터의 공유 폴더에 저장되어 관리 되는 방식. SCCS, RCS 등 - 클라이언트/서버 방식 : 버전 관리 자료가 서버에 저장되어 관리 되는 방식. CVS, SVN(Subversion) 등 - 분산 저장소 방식 : 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 지역 저장소에 함께 저장되어 관리되는 방식. Git, GNU arch, DCVS 등 빌드 자동화 도구 ★★★ 빌드를 포함해 테스트 및 배포를 자동화하는 도구. 애자일과 같은 지속적인 통합 개발 환경에 활용. |