소프트웨어 개발
🍕디지털 저작권 관리(DRM)의 기술 요소
-
암호화(Encryption)
콘텐츠 및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술
-
키 관리(Key Management)
콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
-
암호화 파일 생성(Packager)
콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
-
식별 기술(Identification)
콘텐츠에 대한 식별 체계 표현 기술
-
저작권 표현(Right Expresson)
라이선스의 내용 표현 기술
-
정책 관리(Policy Management)
라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
-
크랙 방지(Tamper Resistance)
크랙에 의한 콘텐츠 사용 방지 기술
-
인증(Authentication)
라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술
🍔EAI(Enterprise Application Integration)의 구축 유형
- Point-to-Point : 가장 기본적인 애플리케이션 통합 방식으로, 애플리케이션을 1:1로 연결하며 변경 및 재사용이 어려움
- Hub & Spoke : 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식으로, 확장 및 유지 보수가 용이하지만 허브 장애 발생 시 시스템 전체에 영향을 미침
- Message Bus(ESB방식) : 애플리케이션 사이에 미들웨어를 두어 처리하는 방식으로, 확장성이 뛰어나며 대용량 처리가 가능함
-Hybrid : Hub & Spoke와 Message Bus의 혼합 방식으로, 그룹 내에서는 Hub & Spoke 방식을, 그룹 간에는 message Bus 방식을 사용함

🍟화이트박스 테스트
- 화이트박스 테스트의 이해를 위해 논리 흐름도(Logic-Flow Diagram)를 이용할 수 있다.
- 테스트 데이터를 이용해 실제 프로그램을 실행함으로써 오류를 찾는 동적 테스트(Dynamic test)
- 테스트 데이터를 선택하기 위하여 검증 기준(Test Coverage)
- 화이트 박스 테스트는 프로그램의 제어 구조에 따라 선택, 반복 등의 분기점 부분들을 수행함으로써 논리적 경로를 제어합니다.
화이트박스 테스트 특징
- 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법
- 화이트박스 테스트는 설계된 절차에 초점을 둔 구조적 테스트로 프로시저 설계의 제어 구조를 사용하여 테스트 케이스를 설계하며, 테스트 과정의 초기에 적용된다.
- 모듈 안의 작동을 직접 관찰한다.
- 원시 코드의 모든 문장을 한 번 이상 실행함으로써 수행된다.
- 프로그램의 제어 구조에 따라 선택, 반복 등의 분기점 부분들을 수행함으로써 논리적 경로를 제어한다.
화이트박스 테스트 종류
- 기초 경로 검사(Base Path Testing)
테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법
- 제어 구조 검사(Control Structure Testing)
-조건 검사(Condition Testing) : 프로그램 모듈 내에 있는 논리적 조건을 테스트 하는 테스트 케이스 설계 기법
-루프 검사(Loop Testing) : 프로그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
-데이터 흐름 검사(Data Flow Testing) : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
🌭퀵 정렬(Quick Sort)
- 레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬하는 방법으로 키를 기준으로 작은 값은 왼쪽에, 큰 값은 오른쪽 서브파일로 분해시키는 방식으로 정렬한다.
- 위치에 관계없이 임의의 키를 분할 원소로 사용할 수 있다.
- 정렬 방식 중에서 가장 빠른 방식이다.
- 프로그램에서 되부름을 이용하기 때문에 스택(Stack)이 필요하다.
- 분할(Divide)과 정복(Conquer)을 통해 자료를 정렬한다.
-분할(Divide) : 기준값인 피봇(Pivot)을 중심으로 정렬할 자료들을 2개의 부분집합으로 나눔
-정복(Conquer) : 부분집합의 원소들 중 피봇(Pivot)보다 작은 원소들은 왼쪽, 피봇(Pivot)보다 큰 원소들은 오른쪽 부분집합으로 정렬함
-부분집합의 크기가 더 이상 나누어질 수 없을 때까지 분할과 정복을 반복 수행 한다.
- 평균 수행 시간 복잡도는 O(nlog2n)이고, 최악의 수행 시간 복잡도는 O(n^2)이다.
🍿ISO/IEC 25000
-
소프트웨어 품질 평가를 위한 소프트웨어 품질 평가 통합 모델 표준이다.
-
System and Software Quality Requirements and Evaluation으로 줄여서 SQuaRE라고도 한다.
-
기존 소프트웨어 품질 평가 모델과 소프트웨어 평가 절차 모델인 ISO/IEC 9126과 ISO/IEC 14598을 통합하였다.
-
ISO/IEC 2501n에서는 소프트웨어의 내부 및 외부 품질과 사용 품질에 대한 모델 등 품질 모델 부분을 다룹니다.
-
ISO/IEC 2502n 내부 측정, 외부 측정, 사용 품질 측정, 품질 측정 요소 등 품질 측정 부분
🧂위험 관리(Risk Analysis)
- 프로젝트 추진 과정에서 예상되는 각종 돌발 상황(위험)을 미리 예상하고 이에 대한 적절한 대책을 수립하는 일련의 활동을 의미한다.
- 위험은 불확실성과 손실을 내재하고 있는데, 위험 관리는 이러한 위험의 불확실성을 감소시키고 손실에 대비하는 작업이다.
- 위험을 식별한 후 발생 확률을 산정하고, 그 영향을 추산하여 해당 위험에 대비하는 비상 계획을 마련한다.
- 위험 관리의 절차는 위험 식별 -> 위험 분석 및 평가 -> 위험 관리 계획 -> 위험 감시 및 조치
순 이다.
- 자료 흐름도 : 자료 원시 프로그램을 입력받아 파싱한 후 자료 흐름도를 작성함
- 기능 테스트 : 주어진 기능을 구동시키는 모든 가능한 상태를 파악하여 이에 대한 입력을 작성함
- 입력 도메인 분석 : 원시 코드의 내부를 참조하지 않고, 입력 변수의 도메인을 분석하여 테스트 데이터를 작성함
- 랜덤 테스트 : 입력 값을 무작위로 추출하여 테스트함
🥚블랙박스 테스트(Black Box Test)
- 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로, 기능 테스트라고도 한다.
- 프로그램의 구조를 고려하지 않기 때문에 테스트 케이스는 프로그램 또는 모듈의 요구나 명세를 기초로 결정한다.
- 소프트웨어 인터페이스에서 실시되는 테스트이다.
- 부정확하거나 누락된 기능, 인터페이스 오류, 자료 구조나 외부 데잍터베이스 접근에 따른 오류, 행위나 성능 오류, 초기화와 종료 오류 등을 발견하기 위해 사용되며, 테스트 과정의 후반부에 적용된다.
블랙박스 테스트 종류
동치 분할 검사, 경계값 분석, 원인 - 효과 그래프 검사, 오류 예측 검사, 비교 검사 등
🍳화이트박스 테스트(White Box Test)
- 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법이다.
- 설계된 절차에 초점을 둔 구조적 테스트로 프로시저 설계의 제어 구조를 사용하여 테스트 케이스를 설계하며, 테스트 과정의 초기에 적용된다.
- 모듈 안의 작동을 직접 관찰한다.
- 원시 코드(모듈)의 모든 문장을 한 번 이상 실행함으로써 수행된다.
- 프로그램의 제어 구조에 따라 선택, 반복 등의 분기점 부분들을 수행함으로써 논리적 경로를 제어한다.
화이트박스 테스트 종류
기초 경로 검사, 제어 구조 검사(조검 검사, 루프검사, 데이터 흐름 검사)등
🧇소프트웨어의 버전 등록 관련 주요 용어
-
저장소(Repository) : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳
-
가져오기(Import) : 버전 관리가 되고 있지 않은 아무것도 없는 저장소(Repository)
-
체크아웃(Check-Out) : 저장소(Repository)에서 소스 파일과 함께 버전 관리를 위한 파일들을 받아옴
-
체크인(Check-In) : 체크아웃 한 파일의 수정을 완료한 후 저장소(Repository)의 파일을 새로운 버전으로 갱신함
-
커밋(Commit) : 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충돌(Conflict)을 알리고 diff 도구를 이용해 수정한 후 갱신을 완료함
-
동기화(Update) : 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화함
🥞인터페이스 구현 검증 도구
-
xUnit : Java(Junit), C++(Cppunit), .Net(Nunit), Http(HttpUnit)등 다양한 언어를 지원하는 단위 테스트 프레임워크
-
STAF : 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
-
FitNesse : 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
-
NTAF : FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임워크
-
Selenium : 다양한 브라우저 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임워크
-
watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크
🧈테스트 오라클
테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법 및 활동
- 테스트 시나리오(Test Scenario) : 테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스들을 묶은 집합으로, 테스트 케이스들을 적용하는 구체적인 절차를 명세한 문서
- 테스트 케이스(Test Case) : 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서
- 테스트 데이터(Test Data) : 시스템의 기능이나 적합성 등을 테스트하기 위해 만든 데이터 집합으로, 소프트웨어의 기능을 차례대로 테스트할 수 있도록 만든 데이터
🍞자료구조
- Deque : 양방향에서 입 · 출력이 가능한 선형 자료 구조로 2개의 포인터를 이용하여 리스트의 양쪽 끝 모두에서 삽입 · 삭제가 가능한 것
- Stack : 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조
- Queue : 리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구조
- Tree : 정점(Node, 노드)과 선분(Branch, 가지)을 이용하여 사이클을 이루지 않도록 구성한 그래프(Graph)의 특수한 형태
🥐간선 수 구하기
n개의 정점으로 구성된 방향 그래프에서 최대 간선 수는 n(n-1)이다.
ex)정점이 5개인 방향 그래프가 가질 수 있는 최대 간선 수는? (단, 자기 간선과 중복 간선은 배제)
5(5-1) = 20개
🥨DBMS의 필수 기능
- 정의(Definition)기능 : 모든 응용 프로그램들이 요구하는 데이터 구조를 지원하기 위해 데이터베이스에 저장될 데이터의 형(Type)과 구조에 대한 정의, 이용 방식, 제약 조건 등을 명시하는 기능
- 조작(Manipulation)기능 : 데이터 검색, 갱신, 삽입, 삭제 등을 체계적으로 처리하기 위해 사용자와 데이터베이스 사이의 인터페이스 수단을 제공하는 기능
- 제어(Control)기능 :
-데이터베이스를 접근하는 갱신, 삽입, 삭제 작업이 정확하게 수행되어 데이터의 무결성이 유지되도록 제어해야 한다.
-정당한 사용자가 허가된 데이터만 접근할 수 있도록 보안(Security)을 유지하고 권한(Authority)을 검사할 수 있어야 한다.
-여러 사용자가 데이터베이스를 동시에 접근하여 데이터를 처리할 때 처리 결과가 항상 정확성을 유지하도록 병행 제어(Concurrency Control)를 할 수 있어야 한다.
🥯버블 정렬
버블 정렬은 주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식
🥖소프트웨어 패키징
- 신규 및 변경 개발소스를 식별하고, 이를 모듈화하여 상용제품으로 패키징한다.
- 고객의 편의성을 위해 매뉴얼 및 버전관리를 지속적으로 한다.
- 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 패키징이 진행된다.
- 패키징은 사용자를 중심으로 진행한다.(사용자가 소프트웨어를 사용하게 될 환경을 이해하여, 다양한 환경에서 소프트웨어를 손쉽게 사용할 수 있도록 일반적인 배포 형태로 패키징한다.)
🧀Stack
- 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조이다.
- 스택은 가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO; Last In First Out)방식으로 자료를 처리한다.
- 스택의 모든 기억 공간이 꽉 채워져 있는 상태에서 데이터가 삽입되면 오버플로(Overflow)가 발생하며, 더 이상 삭제할 데이터가 없는 상태에서 데이터를 삭제하면 언더플로(Underflow)가 발생한다.
Stack 응용 분야
-함수 호출의 순서 제어
-인터럽트의 처리
-수식 계산 및 수식 표기법
-컴파일러를 이용한 언어 번역
-부 프로그램 호출 시 복귀주소 저장
-서브루틴 호출 및 복귀 주소 저장
선형 리스트의 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조 -> Queue
인터럽트 처리, 서브루틴 호출 작업 등에 응용 -> Deque
🥗순환복잡도(cyclomatic) 계산 방법
-
영역 수 계산
내부 영역 + 외부 영역 = cyclomatic 수
-
V(G) = E - N + 2
V(G) = 화살표수 - 노드수 + 2
🥙🥪🌮🌯🥫🍖🍗🥩🍠🥟🥠🥡🍱🍘🍙🍚🍛🍜🦪🍣🍤🍥🥮🍢🧆🥘🍲🍝🥣🥧🍦🍧🍨🍩🍪🎂🍰🧁🍫🍬🍭🍡🍮🍯🍕🍔🍟🌭🍿🧂🥓🥚🍳🧇🥞🧈🍞🥐🥨🥯🥖🧀🥗🥙🥪🌮🌯🥫🍖🍗🥩🍠🥟🥠🥡🍱🍘🍙🍚🍛🍜🦪🍣🍤🍥🥮🍢🧆🥘🍲🍝🥣🥧🍦🍧🍨🍩🍪🎂🍰🧁🍫🍬🍭🍡🍮🍯🍕🍔🍟🌭🍿🧂🥓🥚🍳🧇🥞🧈🍞🥐🥨🥯🥖🧀🥗🥙🥪🌮🌯🥫🍖🍗🥩🍠🥟🥠🥡🍱🍘🍙🍚🍛🍜🦪🍣🍤🍥🥮🍢🧆🥘🍲🍝🥣🥧🍦🍧🍨🍩🍪🎂🍰🧁🍫🍬🍭🍡🍮🍯