요구사항 개발 프로세스 : 도출 → 분석 → 명세 → 확인
요구사항 도출 단계 주요 기법은 인터뷰, 설문, 브레인스토밍 등이 있어 청취와 인터뷰 질문 기술이 필요함.
요구사항 분석 기법에개념 모델링이 있으므로 관찰 및 모델 작성 기술 필요함.
요구사항 분석 기법에 정형 분석과 요구사항 협상이 있으므로 관찰 및 모델 작성 기술 필요함.
※ 요구사항 분석 기법 : 요구사항 분류, 개념 모델링, 요구사항 할당, 요구사항 협상, 정형 분석
1. Visitor(방문자) 패턴 <행위 패턴>
- 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성함.
분리된 처리 기능은 각 클래스를 방문하여 수행
2. Observer 패턴 <행위 패턴>
- 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달. 분산된 시스템 간에 이벤트 생성, 발행(Publish), 이를 수신(Subscribe)해야할 때 이용함
4. Bridge 패턴 <구조 패턴>
- 구현부에서 추상층을 분리, 서로가 독립적으로 확장함
기능과 구현을 두 개의 별도 클래스로 구현함
- 럼바우(Rumbaugh)의 분석 기법
가장 일반적으로 사용되는 방법, 분석 활동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행함.
모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링, 객체 모델링 기법(OMT)이라고도 함.
- 객체 모델링(Object Modeling) = 정보 모델링
시스템에서 요구되는 객체를 찾아내 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시함분석 활동의 세 가지 모델 중 가장 중요!
- 동적 모델링(Dynamic Modeling)
상태 다이어그램(상태도)를 이용하여 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현함
- 기능 모델링(Function Modeling)
자료 흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료 흐름 중심으로 처리 과정을 표현함.
애자일(Agile) 개발 4가지 핵심 가치
1. 프로세스와 도구보다는 개인과의 상호작용에 더 가치를 둠
2. 방대한 문서보다는 실행되는 SW에 더 가치를 둠
3. 계약 협상보다는 고객과의 협업에 더 가치를 둠
4. 계획을 따르기 보다는 변화에 반응하는 것에 더 가치를 둠
미들웨어 종류로는 WAS, DB, RPC, MOM, TP-Monitor, ORB 등이 있다.
1. WAS(웹 애플리케이션 서버)
- 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리함
- 웹 환경을 구현하기 위한 미들웨어
3. RPC(Remote Procedure Call)
- 응용 프로그램이 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 미들웨어
4. ORB(Object Request Broker)
- 객체 지향 미들웨어로 코바(CORBA) 표준 스펙을 구현함
- 최근에는 TP-Monitor의 장점인 트랜잭션 처리와 모니터링 등을 추가로 구현한 제품도 있음
2. Web Server
- 클라이언트로부터 직접 요청을 받아 처리, 저용량의 정적 파일들을 제공하는 소프트웨어
https://devinus.tistory.com/10
시퀀스 다이어그램 구성 항목
액터, 활성 객체(object), 라이프라인(생명선), 메세지, 제어 삼각형
정보 은닉 : 캡슐화에서 가장 중요한 개념, 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통해 접근을 허용
<행위적 패턴(Behavioral Pattern)>
1. 책임 연쇄(Chain of Responsibility)
2. 커맨드 (Command)
3. 인터프리터(Interpreter)
4. 반복자(Iterator)
5. 중재자(Mediator)
6. 메멘토(Memento)
7. 옵서버(Observer)
8. 상태(State)
9. 전략(Strategy)
10. 템플릿 메소드(template Method)
11. 방문자(Visitor)
3번 프로토타입(Prototype) 패턴은 생성 패턴(Creational Pattern)이다.
[Design Pattern] 디자인 패턴 종류 - Heee's Development Blog (gmlwjd9405.github.io)
사용자 인터페이스(UI)의 기본 원칙
- 직관성 : 누구나 쉽게 이해하고 사용할 수 있어야 함
- 유효성 : 사용자의 목적을 정확하고 완벽하게 달성해야 함
- 학습성 : 누구나 쉽게 배우고 익힐 수 있어야 함
- 유연성 : 사용자의 요구사항을 최대한 수용하고 실수를 최소화해야 함
코드(Code)의 주요 기능
- 식별 기능 : 데이터 간의 성격에 따라 구분
- 분류 기능 : 특정 기준이나 동일한 유형에 해당하는 데이터를 그룹화
- 배열 기능 : 의미를 부여하여 나열
- 표준화 기능 : 다양한 정보를 컴퓨터에 의해 처리하기 위해서는 단일한 형태의 표준화된 표현이 필요함
클래스에 대한 여러 가정을 공유하도록 명세한 것을 협약에 의한 설계(Design by Contract)라 함.
소프트웨어 컴포넌트에 대한 정확한 인터페이스 명세를 위하여 선행조건, 결과조건, 불변조건을 나타내는 설계 방법.
협약에 의한 설계의 세 가지 타입
선행조건(precondition): 오퍼레이션이 호출되기 전에 참이 되어야 할
조건결과조건(postcondition): 오퍼레이션이 수행된 후 만족하여야 하는 조건
불변조건(invariant): 클래스 내부가 실행되는 동안 항상 만족하여야 하는 조건(예: 리스트에 있는 노드가 항상 오름차순으로 되어야 함)
< 행위(Behavioral) 다이어그램 >
1. 유스케이스(UseCase) 다이어그램
2. 시퀀스(Sequence) 다이어그램
3. 커뮤니케이션(Communication) 다이어그램
4. 상태(State) 다이어그램
5. 활동(Activity) 다이어그램
6. 상호작용 개요(Interaction Overview) 다이어그램
7. 타이밍(Timing) 다이어그램
4. 배치(Deployment) 다이어그램은 구조적(Structural) 다이어그램이다.
클래스(Class)
- 클래스는 공통된 속성과 연산(행위)을 갖는 객체의 집합, 객체의 일반적인 타입(Type)을 의미함
- 동일 클래스에 속한 각각의 객체들은 공통된 속성과 행위를 가지고 있음
일반화 관계
- 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현함
- 일반적인 개념을 상위(부모), 구체적인 개념을 하위(자식)이라고 함
- 하위 사물에서 상위 사물인 쪽으로 속이 빈 화살표를 연결함
자료 사전 표기법
= : 자료의 정의
+ : 자료의 연결
() : 자료의 생략
[|] : 자료의 선택
{} : 자료의 반복
** : 자료의 설명(주석)
객체지향 설계원칙
1. 단일 책임 원칙(SRP, Single Responsibility Principle)
객체는 단 하나의 책임만 가져야 한다.
2. 개방-폐쇄의 원칙(OCP, Open Closed Principle)
기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다.
3. 리스코프 치환 원칙(LSP, Liskov Substitution Principle)
일반화 관계에 대한 이야기며, 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다.
4. 인터페이스 분리 원칙(ISP, Interface Segregation Principle)
인터페이스를 클라이언트에 특화되도록 분리시키라는 설계 원칙이다.
5. 의존 역전 원칙(DIP, Dependency Inversion Principle)
의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존하라는 것.
자료흐름도(Data Flow Diagram)
자료 흐름도 구성 요소- 프로세스 (Process)- 자료 흐름(Data Flow)- 자료 저장소(Data Store)- 단말(Terminator)
CASE
소프트웨어 공학의 자동화를 의미, 소프트웨어 공학작업을 자동화한 소프트웨어 패키지를 CASE도구라고 한다.
CASE도구들은 소프트웨어 관리자들과 실무자들이 소프트웨어 프로세스와 관련된 활동을 지원한다.
즉, 프로젝트 관리 활동을 자동화하고, 결과물을 관리하며, 엔지니어들의 분석, 설계 및 코딩과 테스트작업을 도운다.
주요기능: 다양한 소프트웨어 개발 모형 지원, 그래픽 지원, 소프트웨어 생명주기의 전단계 연결 CASE는 1980년대에 소개되었으며, 1990년대부터 자주 사용되었습니다.
인터페이스 요구사항 검토(검증) 방법
- 동료 검토(Peer Review) : 요구사항 명세서 작성자가 요구사항 명세서를 설명하고 이해관계자들이 설명을 들으면서 결함을 발견
- 워크스루(Walk Through) : 검토 회의 전, 명세서를 미리 배포하여 사전검토 후에 짧은 검토 회의를 통해 결함 발견
- 인스펙션(Inspection) : 요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 명세서를 확인하면서 결함을 발견
1. IPSec : 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉 기능 제공
2. SSL : TCP/IP 계층과 애플리케이션 계층 사이에서 인증, 암호화, 무결성을 보장하는 프로토콜
4. S-HTTP : 클라이언트와 서버 간 전송되는 모든 메시지를 암호화하는 프로토콜
3. SMTP(Simple Mail Transfer Protocol) :전자 우편을 교환하는 서비스를 제공하는 프로토콜
많은 인력을 투자한다고 해서 소프트웨어를 빨리 만드는 것은 아니다..
관련 예시 ) brooks의 법칙 : 지연되는 프로젝트에 인력을 더 투입하면 오히려 늦어진다.
- ISO/IEC 9126 : 소프트웨어 품질 특성 및 척도에 대한 표준화
- ISO/IEC 14598 : 소프트웨어 제품 평가
- ISO/IEC 9126 사용을 위한 절차와 기본 상황 및 소프트웨어 평가 프로세스에 대한 표준 규정
- ISO/IEC 12119 : 패키지 소프트웨어 평가
+ 클린 코드 작성 원칙가독성, 단순성, 의존성 배제, 중복성 최소화, 추상화, 중복을 최소화하여야 함
< 블랙박스 테스트 유형 >
- 동치(동등) 분할 검사(Equivalence Partitioning Testing)
- 경계값 분석(Boundary Value Analysis)
- 원인-효과 그래프 검사(Cause-Effect Graphing Testing)
- 오류 예측 검사(Error Guessing)
- 비교 검사(Comparison Testing)
< 화이트박스 테스트 유형 >
- 기초 경로 검사
- 제어 구조 검사
- 조건 검사(Condition Testing)
- 루프 검사(Loop Testing)
- 데이터 흐름 검사(Data Flow Testing)
<문제 해설>
선택정렬은 가장 작은 값을 찾아 첫번째 값과 교환합니다.
이후 정렬된 값을 제외한 나머지 인덱스 중 가장 작은 값을 찾아 정렬되지 않은 인덱스 중 가장 처음 값과 자리를 교환해 나아갑니다.
1회전 14 37 17 40 35
2회전 14 17 37 40 35
3회전 14 17 35 40 37
소프트웨어 버전 등록 관련 주요 용어
- 저장소(Repository) : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳
- 가져오기(Import) : 버전 관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일을 복사
- 체크아웃(Check-Out) : 프로그램을 수정하기 위해 저장소에서 파일을 받아 옴.
소스 파일과 함께 버전 관리를 위한 파일들도 받음
- 체크인(Check-In) : 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신
- 커밋(Commit) : 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우 충동을 알리고 diff 도구를 이용해 수정 후 갱신 완료
- 동기화(Update) : 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화함
< 이진 트리 운행법 >
- Preorder 운행 : Root → Left → Right 순으로 운행
- Inorder 운행 : Left → Root → Right 순으로 운행
- Postorder 운행 : Left → Right → Root 순으로 운행
소프트웨어 품질
기능성 : 사용자 요구사항을 정확하게 만족하는 기능을 제공하는지 여부
신뢰성 : 요구된 기능을 정확하고 일관되게 오류없이 수행할 수 있는 정도
사용성 : 사용자와 컴퓨터 사이에 발생하는 어떠한 행위에 대해 사용자가 정확하게 이해하고 사용하며 향후 다시 사용하고 싶은 정도
효율성 : 요구하는 기능을 할당된 시간동안 한정된 자원으로 얼마나 빨리 처리할 수 있는지 정도유지
보수성 : 환경 변화 or 새 요구사항 발생 시 소프트웨어 개선 및 확장할 수 있는 정도
이식성 : 타 환경에서도 얼마나 쉽게 적용할 수 있는지 정도
알고리즘 설계 기법
1.Divide and Conquer(분할 정복 알고리즘) : 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 알고리즘
2. Greedy(탐욕 알고리즘) : 현재 시점에서 가장 최적의 방법을 선택하는 알고리즘
4. Backtracking : 모든 조합을 시도하여 문제의 답을 찾는 알고리즘
소프트웨어의 형상 관리 역할
형상관리는 프로젝트의 버전, 수정사항을 관리하지 개발 비용을 관리하지는 않습니다.
제품 소프트웨어의 패키징 활용 시 고려사항
- 패키징 시 사용자에게 배포 되는 소프트웨어 임을 감안하여 반드시 내부 콘텐츠에 대한 암호화 및 보안을 고려한다.
- 패키징 도구를 활용하여 여러 가지 이기종 콘텐츠 및 단말기 간 DRM 연동을 고려한다.
- 패키징 도구를 고려하면 사용자의 입장에서 불편해질 수 있는 문제를 고려하여 최대한 효율적으로 적용될 수 있도록 한다.
-암호화 알고리즘이 여러 가지 종류가 있는데 제품 소프트웨어의 종류에 맞는 알고리즘을 선택하여 배포시 범용성에 지장이 없도록 고려한다.
디지털 저작권 관리(DRM) 기술 요소
- 암호화(Encryption) : 콘텐츠 및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술
- 키 관리(Key Management) : 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
- 암호화 파일 생성(Packager) : 콘텐트를 암호화된 콘텐츠로 생성하기 위한 기술
- 식별 기술(Identification) : 콘텐츠에 대한 식별 체계 표현 기술
- 저작권 표현(Right Expression) : 라이선스의 내용 표현 기술
- 정책 관리(Policy Management) : 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
- 크랙 방지(Tamper Resistance) : 크랙에 의한 콘텐츠 사용 방지 기술
- 인증(Authentication) : 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술
물리데이터 저장소의 파티션 설계
< 파티션 유형 >
- 범위 분할(Range Partitioning) : 지정한 열의 값을 기준으로 분할
- 해시 분할(Hash Partitioning) : 해시 함수를 적용한 결과 값에 따라 데이터 분할
- 조합 분할(Composite Partitioning) : 범위 분할 후 해시 함수를 적용하여 다시 분할
어플리케이션 통합 테스트 유형
< 상향식 통합 테스트 >
- 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트
- 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터 필요
- 상위 모듈 개발이 완료되지 않은 경우 드라이버(Driver)를 사용하기도 함
< 회귀 테스트(Regression Testing) >
- 이미 테스트된 프로그램의 테스팅 반복
- 통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인
< 빅뱅 테스트 >
- 통합 테스트(Integration Test) 중 비점진적 통합 방식
인터페이스 구현시 사용하는 기술
1. Procedure : 절차형 SQL을 활용하여 특정 기능을 수행하는 일종의 트랜잭션 언어
2. Trigger : 데이터의 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL
3. Greedy : 탐욕 알고리즘
< 인수 테스트(Acceptance Test) 종류 >
- 사용자 인수 테스트- 운영상의 인수 테스트
- 계약 인수 테스트- 규정 인수 테스트
- 알파 테스트
- 베타 테스트
1NF : 도메인이 원자값만으로 구성된 정규형
2NF : 기본 키가 아닌 모든 속성이 기본 키에 대해 완전 함수적 종속을 만족하는 정규형
3NF : 기본 키가 아닌 모든 속성이 기본 키에 대해 이행적 종속을 만족 안하는 정규형
BCNF : 모든 결정자가 후보 키인 정규형
4NF : 다치 종속 A->B가 성립하는 경우 A에 함수적 종속 관계를 만족하는 정규형
5NF : 모든 조인 종속이 후보 키를 통해서만 성립되는 정규형
제1정규형 = 반복그룹을 제거
제2정규형=부분 함수적 종속 제거
제4정규형=다치종속제거
보이스/코드= 모든 결정자가 후보키인 상태
Commit과 Rollback이 나오면 원자성(Atomicity) 국룰
원자성 : 트랜잭션 연산은 DB에 모두 반영되어 Commit(완료)되든지 아니면 반영안되어 Rollback(복구)되어야 한다.
일관성 : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
독립성 : 둘 이상 트랜잭션이 동시 병행 실행될 경우 트랜잭션 실행 중 타 트랜잭션의 연산이 끼어들 수 없다.
지속성 : 성공적 완료된 트랜잭션 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.
DISTINCT : 중복 튜플 발견 시 그 중 첫번째 하나만 검색
따라서 학년 1 1 2 2 3 중 중복된 값 1과 2는 하나만 검색 = 학년
1
2
3
DCL(Data Control Language) : 데이터베이스 관리자(DBA)가 데이터 관리를 목적으로 사용되는 명령어를 뜻함
여기서, 명령어는 4가지로
1. GRANT: 데이터베이스 사용자에게 사용권한을 부여하는 명령어
2. REVOKE: 데이터베이스 사용자의 사용권한을 취소하는 명령어
3. COMMIT: 데이터베이스 조작 작업이 정상적으로 완료 되었음을 알려주는 명령어
4. ROLLBACK: 데이터베이스 조작 작업이 비정상적으로 작동하여 원래 상태로 복구하는 명령어
(D)CL = G(grand) R(revoke) C(commit) R(rollback)씨엘의 목적은 데이터관리 쥐알씨알
로킹 단위가 크면 나머지가 다 작아짐 / 로킹 단위가 작으면 나머지가 다 커짐
관계 데이터모델의 무결성 제약 중 기본키 값의 속성 값이 널(Null)값이 아닌 원자 값을 갖는 성질
-> Null -> 개체 무결성 국룰
뷰는 하나이상의 테이블로부터 유도되는 가상테이블이며 논리적 독립성이 제공됩니다.
실제테이블처럼 권한을 나눌 수 있습니다.
따라서 특정사용자가 볼 필요가 없는 다른열들을 배제하고 뷰를 만든 후 해당 사용자에게 뷰에 대한 권한을 할당하면 테이블 전체에 대한 권한을 부여하지 않아도 됩니다.
뷰는 자체적으로 인덱스를 가지지 않습니다..
따라서 삽입 삭제 수정이 제한적인 것입니다.
분산 데이터베이스란?
여러 곳으로 분산되어있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
논리적으로 동일한 시스템에 속하나, 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임
분산데이터베이스가 되기 위해서는 6가지 투명성을 만족해야 한다.
분할 투명성(단편화) : 하나의 논리적 Relation이 여러 단편으로 분할되어 각 단편의 사본이 여러 사이트에 저장
위치 투명성 Location Transparency: 사용하려는 데이터의 저장장소를 명시가 필요하지 않음. 위치정보는 System Caltalog에 유지어야 함
지역사상 투명성 : 지역DBMS와 물리적 DB사이의 Mapping 보장. 각 지역시스템 이름과 무관한 이름 사용가능
중복 투명성 Replication Transparency : DB객체가 여러 사이트에 중복되어 있는지 알 필요가 없는 성질
장애 투명성 Failure Transparency : 구성요소(DBMS, Computer)의 장애에 무관한 트랜잭션의 원자성유지
병행 투명성 Concurrency Transparency : 다수 트랜잭션 동시수행시 결과의 일관성 유지, TImm Stamp, 분산2단계 Locking을 이용하여 구현
중복을 배제하여 삽입, 삭제, 갱신 이상들을 제거하기 위하여 정규화를 합니다.
<문제 해설>
D2 D3
1 A 가 포함된
D1 D2 D3
a 1 A
b 1 A 중
D2 D3
1 A 를 제거
D1
a
b 결과 값
회복(Recovery)
트랜잭션 도중에 손상된 데이터베이스를 이전 상태로 복귀하는 작업
트랙잭션의 연산을 수행할 때 데이터베이스를 변경하기 전에 로그 데이터를 생성합니다.
취소(Undo) 연산으로 이미 데이터베이스에 쓰여진 것도 수정할 수 있습니다.
장애의 유형
트랜잭션 장애, 시스템 장애, 미디어 장애
즉각 갱신 기법(Immediate Update)
트랜잭션의 연산을 수행하여 데이터를 갱신할 때 실제 데이터 베이스에 반영하는 기법
갱신한 모든 내용을 로그(Log)에 보관합니다.
회복 작업을 위해 취소(Undo)와 재시도(Redo)모두 사용할 수 있습니다.
연기 갱신 기법(Deffered Updatae)
트랜잭션을 완료할 때까지 데이터베이스에 갱신을 연기하는 기법
트랜잭션 수행으로 갱신할 내용은 로그(Log)에 보관합니다. 트랜잭션이 부분 완료 시점에 Log의 기록을 실제 데이터 베이스에 반영합니다.
트랜잭션 수행 중에 장애가 발생하여 Rollback하여도 취소(Undo)할 필요가 없습니다.
재시도(Redo) 작업을 통해 최근의 정상적인 데이터베이스로 회복한 후에 트랜잭션을 재실행할 수 있습니다.
검사점 기법(Check Point)
트랜잭션 중간에 검사점을 로그에 보관하여 트랜잭션 전체를 취소하지 않고 검사점까지 취소할 수 있는 기법그림자 페이지 대체 기법(Shadow Paging)
-로그가 필요없음 트랜잭션의 연산으로 갱신할 필요가 있을 때 복사본인 그림자
페이지를 보관하는 기법트랜잭션을 취소할 때 그림자 페이지를 이용하여 회복.로그(Log), 취소(Undo), 재시도(Redo)할 필요가 없습니다.
DML(데이터 조작어) :
SELECT / INSERT / DELETE / UPDATE
DDL(데이터 정의어) :
CREATE / ALTER / DROP
DCL(데이터 제어어) :
COMMIT / ROLLBACK / GRANT / REVOKE
(D)ML = S(select)I(insert)U(update)D(delete) -> S.I.U.D(시옷)엠엘은 데이터 조작 언어 이므로 시옷(<-언어)
1NF : 도메인이 원자값만으로 구성된 정규형
2NF : 기본 키가 아닌 모든 속성이 기본 키에 대해 완전 함수적 종속을 만족하는 정규형
3NF : 기본 키가 아닌 모든 속성이 기본 키에 대해 이행적 종속을 만족 안하는 정규형
BCNF : 모든 결정자가 후보 키인 정규형
4NF : 다치 종속 A->B가 성립하는 경우 A에 함수적 종속 관계를 만족하는 정규형
5NF : 모든 조인 종속이 후보 키를 통해서만 성립되는 정규형
서울, 부산 / 워싱턴, 뉴욕을 도메인에서의 원자값으로만 구성되게 정규화 작업을 함
순수 관계 연산자 : select / project / join / division
SQL 집계형
AVG: 해당 집계행의 평균
SUM: 해당 집계행의 합
COUNT: 집계행의 수
Anomaly(이상) = 릴레이션 조작 시 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 곤란한 현상
삽입 이상(Insertion Anomaly)
삽입할 때 의도와 달리 원하지 않은 값들도 함께 삽입되는 현상
삭제 이상(Deletion Anomaly)
삭제할 때 의도와 달리 원하지 않은 값들도 함께 삭제되는 현상
갱신 이상(Modification Anomaly)
릴레이션에서 튜플에 있는 속성값 갱신할 때 일부 튜플의 정보만 갱신
정보 모순이 생기는 현상
릴레이션 특징
똑같은 튜플 포함안됨
튜플사이 순서 없음
속성간 순서 중요x
① int i = 7, j = 9;int k;k = (i>j)?(i – j):(i + j);
② int i = 7, j = 9;int k;k = (i<j)?(i – j):(i + j);
③ int i = 7, j = 9;int k;k = (i>j)?(i + j):(i - j);
④ int i = 7, j = 9;int k;k = (i<j)?(i + j):(i - j);
<문제 해설>
조건문 기준으로 설명
if(i>j) 조건문
보기 1~4 중 k=(i>j)를 가지는 조건문 : 1번 3번
? { 참인지 거짓인지 판별}
if(i>j)
k=i-j;
else
k=i+j;
k=(i>j)?(1)(2)
(1) 참 값 = 문제에서의 참 값 : i-j;
(2) 거짓 값 = 문제에서의 거짓 값 : i+j;
따라서 정답은 k=(i>j)?(i-j):(i+j); = 1번
HRN 방식의 우선순위
산정 공식(대기시간+서비스시간)/서비스 시간 (값이 클 수록 우선순위가 높다.)
따라서
A의 우선순위 (5+20)/20 = 1.25
B의 우선순위 (40+20)/20 = 3
C의 우선순위 (15+45)/45 = 1.333333
D의 우선순위 (20+2)/2 = 11
기본 헤더 크기는 최소 20byte 최대 60byte / 헤더에 Option값 포함 시 최대 40byte 추가 가능
핵심 : 모듈 안 구성요소들이 기능을 '순차적'으로 수행 = 절차적 응집도
우연적 : 서로 관련없는 요소로만 구성
논리적 : 유사 성격이나 특정 형태로 분리되는 처리요소들로 모듈 형성
시간적 : 특정 시간에 처리되는 몇개의 기능을 모아 모듈로 구성
절차적 :교환적 : 동일 입출력 사용 시 서로 다른 기능을 수행하는 구성요소가 모였을 경우
순차적 : 활동을 통해 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용하는 경우기능적 : 모든 기능 요소가 단일 문제와 연관되어 수행될 경우
데이터링크 계층
송수신 측 속도 차이 해결을 위한 흐름제어 기능 및 오류 검출과 회복을 위한 오류제어 기능
프레임 시작 및 끝을 구분하기 위한 동기화 기능
프레임 순서적 전송을 위한 순서 제어 기능
물리 : 전송에 필요한 장치 간 실제 접속
세션 : 송수신 측 간 관련성 유지 및 대화 제어 / 체크점(동기점)을 두어 정보 수신상태체크
응용 : 사용자가 OSI 환경에 접근 가능하도록 서비스 제공
자료data - 스탬프stamp - 제어Control - 외부External - 공통Common - 내용Content
핵심 : Worst fit (최악 적합)
=들어갈 수 있는 영역 중 자원 낭비가 제일 심한 영역에 들어가는 방법
N0.1 - 8K, 10K를 넣어야 하지만 공간이 8K 뿐이라서 들어갈 수 없음
NO.2 - 12K, 10K를 넣는다면 공간 2K가 남음
NO.3 - 10K, 10K를 넣는다면 공간 0K가 남지만 사용 중인 상태이므로 들어갈 수 없음
NO.4 - 20K, 10K를 넣는다면 공간 10K가 남지만 사용중인 상태이므로 들어갈 수 없음
NO.5 - 16K, 10K를 넣는다면 공간 6K가 남음들어갈 수 있는 공간 NO.2와 NO.5 중 가장 자원 낭비가 심한 NO.5가 정답
+ first fit ( 최초 적합 ) : 들어갈 수 있는 공간 중 가장 빠른 영역에 들어가는 것 best fit (최적 적합) : 들어갈 수 있는 공간 중 가장 자원 낭비가 덜 한 영역에 들어가는 것
200.1.1.0 / 서브넷 255.255.255.0
1. 필요 개수- 10개 필요 => 2^4
2. 서브넷 마스크
255.255.255.0
200.1.1.1111 0000 -> 255.255.255.240
3. 네트워크 대역
200.1.1.0000 0000 -> 200.1.1.0~15
200.1.1.0001 0000 -> 200.1.1.16~31
200.1.1.0010 0000 -> 200.1.1.32~47
200.1.1.0011 0000 -> 200.1.1.48~63
200.1.1.0100 0000 -> 200.1.1.64~79
200.1.1.0101 0000 -> 200.1.1.80~95
200.1.1.0110 0000 -> 200.1.1.96~111
200.1.1.0111 0000 -> 200.1.1.112~127
200.1.1.1000 0000 -> 200.1.1.128~143
200.1.1.1001 0000 -> 200.1.1.144~159 ----- 10번째 네트워크
200.1.1.1010 0000 -> 200.1.1.160
Broadcast IP는 200.1.1.159
문제 핵심 : 제어하기 위한 목적 / 권리 전도현상
= 제어 결합도 control coupling
data coupling ( = 자료 결합도 )
중요 : 자료요소로만 구성 / 처리값을 다시 돌려줌
stamp coupling ( = 스탬프 결합도 )
중요 : 모듈 간 자료 구조 전달될 때 변화가 생기면 그것을 조회하는 모든 모듈에 영향을 미침
common coupling ( = 공통 결합도 )
중요 : 공유되는 데이터 영역을 여러 모듈이 사용 / 공통 영역 내용 변경 시 영역을 사용하는 모든 모듈에 영향
ls - 디렉토리나 파일목록 출력
cat - 파일 내용 출력
chmod - 파일이나 디렉토리에 대한 접근권한 변경
int: 정수
char : 문자
float / double : 실수
디지털 트윈(digital twin)은 미국 제너럴 일렉영(GE)이 주창한 개념으로, 컴퓨터에 현실 속 사물의 쌍둥이를 가상화하여 만들고, 현실에서 발생할 수 있는 상황을 컴퓨터로 시뮬레이션함으로써 결과를 미리 예측하는 기술입니다.
정보보안 3대 요소 : 기밀성, 무결성, 가용성
기밀성 Confidentiality : 허락된 사용자에 의해서만 접근 가능하도록 하는 것
무결성 Integrity : 허락된 사용자에 의해서만 변경, 수정이 가능하도록 하는 것
가용성 Availability : 허락된 사용자가 필요로 하는 시점에 접근이 가능하도록 하는 것
Quantum Key Distribution -- 양자암호관련된거
Digital Rights Management -- DRM이라고도 하며, 저작권관리 관련 기술
Grayware -- 바이러스, 트로잔등 악성프로그램과는 다르게 사용자 동의를 받아 설치하는 프로그램
FP 기능별 가중치 산정요소
자료 입력(입력 양식)
정보 출력(출력 보고서)
명령어(사용자 질의수)
데이터 파일
필요한 외부 루틴과의 인터페이스
블록 암호화 방식: DES, RC5, AES, SEED, IDEA
따라서 RC4가 아니라 RC5이어야 함
Putnam : 소프트웨어 생명주기 전 과정 동안 사용될 곡선의 노력 분포를 가정해주는 모형
Rayleigh-Norden 곡선의 노력 분포도를 기초로 한다.
SLIM : Putnam 기법 모형을 기초로 개발된 자동화 추정 도구
훈남(Putnam)이 노력(노력분포도)해서 슬림(SLIM)해졌네
cocomo
-유형
조직형 / 반분리형 / 내장형
organic(5만라인) / semi-detached(30만라인이하) /
Embedded(30만라인이상)
-종류
기본형 / 중간형 / 발전형
basic/ intermediate /detailed
Wm-Bus:무선 미터버스, 산업용 무선 프로토콜
Digital Twin:컴퓨터 시뮬레이션(가상화)을 통해 결과를 예측하는 기술
Zigbee:직비, 무선 메시 네트워크의 표준(저가, 저전력)
Software Defined Perimeter:소프트웨어 정의 경계
Virtual Private Network:가상 사설망
Local Area Network:근거리 통신망
DDoS는 네트워크 취약점이 있는 호스트들을 탐색한 후 이를 호스트들에 분산 서비스 공격용 툴을 설치하여 에이전트(agent)로 만든 후 DDoS공격에 이용
여기서 분산 서비스 공격용 툴의 종류에
1.Trin00
2.TFN(Tribe Flooding Network)
3.TFN2K
4.Stacheldraht
가 있습니다.
Secure shell:네트워크 상의 다른 컴퓨터에서 제어 가능한 프로그램 또는 해당 프로토콜
Tribe Flood Network:디도스 공격 중 하나
Nimda:바이러스 중 하나
Deadlock:교착상태
나선형모델 4가지 활동 순서
계획 수립 - 위험 분석 - 개발 및 검증 - 고객평가
합성 중심(Composition-Based) : 전자 칩과 같은 소프트웨어 부품, 즉 블록(모듈)을 만들어서 끼워 맞추어 소프트웨어를 완성시키는 방법으로, 블록 구성 방법
생성 중심(Generation-Based) : 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법으로, 패턴 구성 방법
소스 코드 내부에 암호화 키를 상수 형태로 하드코딩하여 사용하면 악의적인 공격자에게 암호화 키가 노출될 위협이 있다.
안전하지 않은 코드의 예 JAVA
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;
import javax.crypto.Cipher;
……
public String encriptString(String usr) {
***//암호화 키를 소스코드 내부에 사용하는 것은 안전하지 않다.//******
String key = "22df3023sf~2;asn!@#/>as";
if (key != null) {
byte[] bToEncrypt = usr.getBytes("UTF-8");
SecretKeySpec sKeySpec = new
SecretKeySpec(key.getBytes(), "AES")
SPICE
소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
But : 공식 명칭 = ISO/IEC 15504 ( 대충 외우면 2번이 답이라고 체크할 수 있음 조심 )
목적
- 프로세스 개선을 위해 개발 기관이 스스로 평가하는 것
- 기관에서 지정한 요구조건의 만족여부를 개발 조직이 스스로 평가하는 것
- 계약 체결을 위해 수탁 기관의 프로세스를 평가하는 것
1. CLASP - Comprehensive, Lightweight Application Security Process. 소프트웨어 개발 생명주기(SDLC) 초기단계에 보안강화를 목적으로 하는 정형화된 프로세스로써, 활동중심·역할기반의 프로세스로 구성된 집합체로, 이미 운영중인 시스템에 적용하기 적합합니다.
2. CWE - Common Weakness Enumeration. 주요 보안 취약점, 보안 문제를 정리하는 프로젝트입니다.
3. PIMS - Personal Information Management System. 개인정보 보호관리체계입니다.
4. Seven Touchpoints - 소프트웨어 개발 생명주기(SDLC)의 각 단계에 관련된 7가지의 보안 강화 활동을 개발자에게 집중적으로 관리하도록 요구하여 실무적으로 검증된 개발보안 방법론입니다.
버스형 : 한 개의 통신 회선, 여러 대의 단말 장치
성형 : 중앙 집중형
링형 : point to point
그물형 ( = 망형 ) : 모든 지점의 컴퓨터와 단말장치가 서로 연결
계층형 ( = Tree ) : 중앙 컴퓨터 및 일정 지역 단말장치까지는 하나의 통신, 이웃하는 단말장치는 중간 단말장치
'정보처리기사' 카테고리의 다른 글
도타비 정보처리기사(2020년 이후) 필기 (기출문제) 랜덤모의고사 응시 1회 (0) | 2021.08.02 |
---|---|
정처기 오답 - 정보처리기사 2020년 06월 06일 기출문제 (0) | 2021.07.27 |
정처기 오답 - 정보처리기사 2020년 08월 22일 기출문제 (0) | 2021.07.23 |
정처기 오답 - 정보처리기사 2020년 06월 06일 기출문제 (0) | 2021.07.16 |
2020년06월06일 기출문제 해설 (0) | 2021.07.15 |