728x90

네트워크

- 시스템을 연결하는 망

- 크기에 따른 분류 : LAN 근거리 통신망,  WAN 광대역 통신망

- 구조에 따른 분류 : 성형, 버스형, 링형, 트리형

 

인터넷

- TCP/IP 프로토콜을 기반으로 전세계적으로 연결된 통신망

 

 

IPv4

- 인터넷에 연결된 자원을 구분하기 위한 고유의 주소

- 8비트 씩 4자리 32비트로 구성

 

IPv4 클래스

- A클래스 : 대형 통신망에 사용. 0~

- B클래스 : 중대형 통신망. 10 ~

- C클래스 : 소규모 통신망. 110 ~

- D클래스 : 멀티캐스트 1110 ~

- E클래스 : 사용 x. 1111

 

IPv6

- 16비트씩 8부분. 128비트 구성

- 주소체계 : 유니케스트(1:1), 멀티케스트(1:특정그룹 전체), 애니케스트(1:1 가까운 특정사용자)

 

 

프로토콜

- 통신하기 위한 규약

- 구문 : 데이터 형식,구조

- 의미 : 각 비트별 의미

- 시간 : 전송 속도, 순서

 

 

OSI 7계층 Open System Interconnection

- 서로다른 시스템끼리 통신하기 위한 프로토콜

- 물데네전세표응

 

1.물리계층

- 물리적 접촉과 전송 신호 정의

- 프로토콜 데이터 단위 PUD : 비트

- 프로토콜 : RS-232C, X.21 등

- 장비 : 리피터, 허브

 

2.데이터 링크 게층

- 논리적 연결을 확립. 흐름 제어, 오류 제어

- PUD : 프레임

- 프로토콜 : MAC 프레임, 와이파이 프레임, HDLC 등

- 장비 : 랜카드, 브리지, 스위치

 

3.네트워크 계층

- 경로 설정. 흐름 제어, 오류 제어

- PUD : 패킷

- 프로토콜 : IP

- 장비 : 라우터

 

4.전송 계층

- 네트워크 계층에서 연결이 형성되면 실제 데이터를 전송 

- PUD : 세그먼트(TCP), 데이터그램(UDP)

 

5.세션 계층

- 대화 채널로서 대화를 제어

 

6.표현 계층

- 코드 변화, 데이터 암호화, 데이터 압축, 표현 정의

- utf-8, ascii

 

7.응용 계층

- 사용자가 OSI 환경에 접근하도록 서비스 제공

 

 

TCP/IP

- 인터넷 통신을 위한 표준 프로토콜

- 네트워크 액세스 계층, 인터넷 계층, 전송 계층, 응용 계층

 

 

1. 네트워크 액세스 계층

- 실제 데이터 송수신 담당

- PUD : 프레임

- 프로토콜 : 이더넷, 맥, RS-232C

 

2. 인터넷 계층

- 데이터 경로 설정, 제어

- 프로토콜 : IP, ICMP, IGMP, ARP, RARP

 

3. 전송 계층

- 데이터 전송

- TCP(세그먼트), UDP(데이터그램)

 

4. 응용 계층

- 응용 프로그램 간 데이터 송수신

- TCP 기반 : TELNET, FTP, SMTP, HTTP

- UDP 기반 : DNS, TFTP

 

 

 

 

응용 계층 프로토콜

- TELNET : 원격제어 서비스

- FTP : 파일 공유 서비스

- STMP : 메일 전송 서비스

- HTTP : HTML 문서를 전송하여 웹서비스 제공

 

전송 계층 프로토콜

- TCP : 연결형 서비스 제공. 복잡. 스트림 전송 기능 담당. 가상 회선 방식. 저속

- UDP : 비연결형 서비스 제공. 간단. 실시간 전송. 데이터 그램 방식. 고속. 

 

인터넷 계층 프로토콜

- IP : 인터넷 자원들을 구분하기위한 고유 주소

- ICMP Internet Control Masage Protocol : IP와 함께 제어 메시지들을 관리하는 역활

- IGMP Internet Group Management Protocol : 멀티캐스트 시 그룹 유지 사용

- ARP Address Resolution Protocol : IP를 물리적 주소인 맥으로 변환

- RARP Reverse ARP : 맥 주소를 논리적 주소인 IP로 변환

 

네트워크 액세스 계층

- 이더넷 : CSMA/CD 방식 LAN

- HDLC : 비트 위주 데이터링크 제어 프로토콜

- RS-232C : DTE와 DCE간 인터페이스 제공

 

 

데이터 교환 방식

1. 회선 교환 방식

- 물리적 회선을 바꿔 데이터를 전송함

- 회선 교환 중 시간이 걸리나 연결되면 고속 통신

2. 패킷 교환 방식

- 데이터들을 일정 크기의 패킷으로 만들어 전송하는 방식

- 가상 회선 방식 : 가상의 연결을 성립후 패킷 운송

- 데이터 그램 방식 : 순서상관없이 보내는 방식

 

 

 

 

라우팅 프로토콜

- RIP Routing Information Protocol : 소규모. 거리 벡터 알고리즘으로 방향과 홉수 고려해서 전송

- IGRP Interior Gateway Routing Protocol :  중규모. 대역폭 상태를 고려한느 링크 상태 알고리즘 사용

- OSPF Open Shortest Path First protocol : 대규모 네트워크

- BGP : 내부 게이트웨이 라우팅 알고리즘 단점 개선한 라우팅 프로토콜

 

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

빅데이터 - 2. 빅데이터 기술  (0) 2020.11.17
빅데이터 - 1. 빅데이터, 데이터 과학, 활용  (0) 2020.11.17
보안  (0) 2020.05.23
테스트  (0) 2020.05.23
데이터모델  (0) 2020.05.22
728x90

secure SDLC

- 소프트웨어 개발 생명 주기에 보안을 추가한 것

 

세션 통제

- 세션 관리에 대한 보안 점검 항목

1. 불충분한 세션 관리

 - 특정 규칙으로 세션 ID 발급 or 너무 긴 타임아웃 -> 하이제킹으로 비정상적 세션 접근가능

2. 잘못된 세션 정보 노출

 - 싱글톤 패턴에서 레이스 컨디션으로 동기화 오류 or 맴버 변수 노출 ->지역변수 활용

 

입력 데이터 검증 및 표현

 - 입력 데이터로 인한 문제 예방 보안 점검 항목

1. SQL 삽입 : 입력란에 SQL을 삽입하여 무단 DB 접근 -> 입력데이터에 예약어, 특수문자 안되도록 필터링

2. 시스템 명령어 삽입 : 웹인터페이스에서 시스템 명령어를 전달하지 않도록 방지

3. 경로조작 자원 삽입 : 데이터 입출력 경로 조작을 통한 공격 -> 필터링

4. 크로스사이트 스크립팅 : 페이지에 악의적 스크립트 삽입 -> HTML 태그 사용 제한

5. 위험한 형식 파일 업로드 : 악의적 파일 업로드 -> 확장자 제한, 실행 속성 제거

 

보안 기능

- 구현 단계에서 보안 점검 항목

1. 하드코드된 패스워드 : 소스 유출시 정보 유출 -> 변수 사용 변경

2. 부적절한 인가 : 접근 제어 없는 경로를 통해 접근 -> 접근 제어 검사

3. 잘못된 권한 설정 : 시스템 자원 접근 -> 관리자만 사용하도록 권한 설정

4. 중요 정보 평문 전송 : 평문 취득 정보 노출 -> 암호화후 전송

5. 취약한 보안 알고리즘 : 암호 해석 -> 강화된 알고리즘 사용

 

시간 및 경쟁

- 병렬 처리 환경에서 원할한 동작을 위한 보안 점검 항목

1. TOCTOU 경쟁 조건 : 검사 시점과 사용시점을 고려하지 않아 발생하는 보안약점 -> 동기화

2. 종료되지않는 반복문 : 잘못된 반복문 설계 -> 종료되도록 확인

 

에러처리

- 오류를 에러처리를 통해 문제예방을 위한 보안점검항목

1. 오류메시지를 통한 정보 노출 : 실제 환경, 사용자 정보 등 노출 -> 노출 메시지 최소화

2. 오류 상황 대응 부재 : 에러 처리 미비로 발생 -> 예외처리 구문작성

3. 부적절한 예외처리 : 에러를 한번에 처리하거나 세분화하지 않음 -> 세분화하여 예외처리

 

코드 오류

- 잘못된 코드로 인한 문제 예방 보안점검항목

1. 널포인터 역참조 : 함수가 널포인터 반환하여 사용해 발생 -> 사용전 널여부 확인

2. 해제된 자원 사용 : 자원 해제 된 메모리 참조. 잘못된 동작 발생 -> 메모리 포인터 초기화

3. 부적절한 자원 해제 : 자원이 반환 코드 누락하거나 되지 않아 자원 부족 발생 -> 자원 해제하도록 구현 

4. 초기화 되지않은 변수 사용 : 부적절한 값 사용 -> 선언시초기화

 

캡슐화

- 캡슐화하여 정보 노출을 예방하기 위한 보안점검 항목

1. 잘못된 세션에의한 정보 노출 : 다중 스레드 환경서 싱글톤 페턴의 레이스 컨디션으로 동기화 오류 노출. 변수 제한

2. 시스템 데이터 노출

3. 제거되지 않은 디버그 코드 : 디버그 메시지가 외부 유출 -> 디버그 코드 삭제

4. public 메소드에 private 배열 반환 : private 배열에 접근가능해짐. -> 값복사하거나 메소드로 값 변경 

5. private 배열에 public 데이터 할당 : private 배열을 접근 가능해짐 -> 직접 값 저장

 

API 오용

- API 잘못 사용하여 발생하는 문제 예방 보안점검항목

1. DNS Lookup에 의존한 보안 결정 : DNS lookup을 악용하여 접근 통제 -> dns 보다 아이피 주소로 접근

2. 취약한 API 사용 : strcat(), strcpy() 처럼 보안 취약한 함수 -> 안전한 API 사용

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

빅데이터 - 1. 빅데이터, 데이터 과학, 활용  (0) 2020.11.17
네트워크  (0) 2020.05.23
테스트  (0) 2020.05.23
데이터모델  (0) 2020.05.22
서버  (0) 2020.05.22
728x90

어플리케이션 테스트

- 잠재적 결함 찾는 과정

 

어플리케이션 테스트 원리

- 완전한 테스트는 없음

- 결함 집중 : 20% 코드에 80% 결함 집중(파레토 법칙)

- context 정황 의존

- 살충제 패러독스 : 동일한 테스트 케이스 반복시 에러 안남 -> 테스트 케이스 개선 필요

- 오류 부재의 궤변 : 오류가 없더라도 요구사항 불만족은 좋은 콛 ㅡ아님

 

테스트 실행 여부에 따른 분류

1. 정적 테스트

- 실행 없이 하는 테스트

- 워크 스루 : 개발자 작업 전문가가 검토

- 인스팩션  : 소프트웨어 개발 결과물 개선 방법 제안

2. 동적 테스트

- 소프트웨어 실행을 통한 테스트

- 화이트 박스 테스트, 블랙 박스 테스트

 

테스트 형태에 따른 분류

1. 명세 기반 테스트

- 명세서를 이용한 테스트 케이스로 검사

- 동치 분할 검사, 경계값 검사

2. 구조 기반 테스트

- 논리적 흐름에 따라 테스트 케이스로 검사

- 구문 기반, 조건 기반 등

3. 경험 기반 테스트

- 테스트의 경험 이용

- 체크리스트, 에러 추정

 

시각에 따른 테스트

- 검증 vertification 테스트 : 개발자 관점에서 테스트

- 확인 validation 테스트 :  사용자 시점에서 테스트

 

화이트 박스 테스트

- 소스 코드의 로직을 따라 검사

- 기초 경로 검사 : 논리적 복잡도 측정

- 제어 구조 검사 : 조건 검사, 루프 검사, 데이터 흐름 검사

 

블랙 박스 테스트

- 기능 수행 여부를 확인

- 동치 분할 검사 :  타당한 입력과 잘못된 입력을 동일한 비율로 만들어 검사

- 경계값 분석 : 입력 조건의 경계값  이용

- 원입-효과 그래프 : 입력에 대한 출력을 분석하여 검사

 

개발 단계에 따른 테스트 과정

1. 단위 테스트 : 컴포넌트별 검사

2. 통합 테스트 : 컴포넌트 통합 과정에서의 테스트

3. .시스템 테스트 : 사용 환경에서 점검 테스트

4. 인수 테스트 : 사용자 요구사항 충족 여부 테스트

 - 사용자 인수 테스트 : 사용자가 적절성 테스트

 - 운영상 인수 테스트 : 관리 운영 관련 기능 테스트

 - 계약 인수 테스트 : 계약 잘지켰는지 테스트

 - 알파 테스트 : 사용자가 개발자 앞에서 테스트

 - 베타 테스트 : 일부 사용자 선정하여 테스트

 

테스트 과정

1. 테스트 계획

2. 테스트 분석

3. 테스트 케이스, 시나리오 작성

4. 테스트 수행

5. 결과 평가

6. 결함 추적, 관리

 

테스트 과정 결과물

- 테스트 계획서 : 테스트 계획 관련 문서

- 테스트 케이스 : 테스트 입력값, 예상 출력 값 등 관련 명세

- 테스트 시나리오 : 여러 테스트 케이스 동작 순서 기술

- 테스트 결과서 : 테스트 결과 분석

 

 

테스트 케이스 작성 순서

1. 테스트 계획

2. 우선순위 판단

3. 테스트 요구사항 정의

4. 테스트 구조 설계, 방법 결정

5. 테스트 케이스 정의

6. 테스트 케이스 타당성 확인

 

 

테스트 오라클

- 테스트 결과가 올바른지 확인하기위한 방법

- 참 오라클 : 모든 테스트 케이스 입력값에 대해 결과 제공하여 모든 오류 검출

- 샘플 오라클 : 일부 테스트 케이스 입력값에 대한 결과로 오류 검출

- 추정 오라클 : 일부 테스트 케이스 입력과 나머지 추정 입력을 사용

- 일관성 오라클 : 어플리케이션 변경 후에도 결과 값이 동일한지 확인

 

테스트 자동화 도구

- 정적 분석 도구 : 실행없이 코드 결함 분석

- 테스트 실행 도구 : 스크립트 언어를 이용하여 실행하는 테스트

- 성능 테스트 도구 : 처리량, 응답시간, 자원 사용률 등 성능 테스트

- 테스트 통제 도구 : 테스트 형상, 결함 추적

- 테스트 하네스 도구 : 테스트 환경 시뮬레이션하여모듈 동작

 

 

결함 추적

- 결함 등록

- 결함 검토

- 결함 할당

- 결함 수정

- 결함 조치 보류

- 결함 종료

- 결함 해제

 

성능 지표

- 처리량 : 처리하는 양

- 응답 시간 : 응답 도착할때 시간

- 경과 시간 : 처리 완료까지 시간

- 자원 사용률 : cpu, 메모리 사용량 등

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

네트워크  (0) 2020.05.23
보안  (0) 2020.05.23
데이터모델  (0) 2020.05.22
서버  (0) 2020.05.22
연계  (0) 2020.05.22
728x90

데이터 모델

- 현실 정보를 데이터로 표현한 모델

- 구성 요소 : 개체, 속성, 관계

- 표시할 요소 : 구조, 연산, 제약조건

- 종류 : 개념적 모델, 논리적 모델, 물리적 모델

 

데이터 모델 구성 요소

- 개체 entity : 현실을 나타내는 정보 단위

- 속성 attribute : 데이터를 표현하는 최소한 논리적 단위, 데이터 열

- 관계 relation : 개체 간 연관

 

종류

- 개념적 모델 : 현실을 추상화하여 개념적으로 나타낸 모델

- 논리적 모델 : 개념적 모델을 DBMS에서 사용가능한 논리적 형태로 정의한 모델

- 물리적 모델 : 제약 관계 등 특정 DBMS에 맞춰 물리적으로 만든 모델

 

데이터 모델 구성 요소

- 구조 structure : 데이터 구조와 정적 성질

- 연산 operation : 데이터 처리 작업 명세

- 제약 조건 constraint : 실제 데이터의 논리적 제약 조건

 

이상 abnomaly

- 데이터 중복성으로 인해 발생하는 이상 현상

- 삽입 이상 : 속성이 부족하여 삽입이 안되는 이상

- 갱신 이상 : 갱신시 무결성 위반되는 이상

- 삭제 이상 : 다른 데이터도 함께 삭제되는 이상

 

함수적 종속 functional dependency

- X에 의해 하나의 Y값이 결정될때 Y는 X에 함수적 종속. X는 결정자 Y는 종속자

- X->Y

- 완전 함수적 종속 : 여러 속성으로 이루어진 기본키에 종속하는 경우

- 부분 함수적 종속 : 여러 속성으로 이루어진 기본키의 일부 속성에만 종속하는 경우

 

이행적 함수적 종속

- X -> Y, Y->Z 와 같은 관계 시 X에 의해 Z가 결정 시 Z는 X에 이행적 함수적 종속 관계 

 

정규화 Normalization

- 종속 관계를 제거하여 중복성을 제거 테이블 무손실 분해과정

- 제 1정규형, 제2정규형, 제 3정규형, BCNF 정규형, 제 4정규형, 제 5 정규형

 

정규화 과정

- 제 1 정규형 1NF: First Normal Form : 속성이 원자값을 갖도록 분해

- 제 2 정규형 2NF : 모든 속성이 기본키에 완전 함수적 종속을 만족하도록 함. 부분적 함수적 종속 제거

- 제 3 정규형 3NF : 이행적 함수적 종속 제거

- BCNF 정규형 boycee-codd normal form : 모든 결정자가 후보키인 정규형 <- 결정자면서 후보키가 아닌것 제거

- 제4 정규형 : 다치 종속

- 제 5 정규형 : 조인 종속성 이용

 

반 정규화 denormalization

- 정규화된 테이블을 통합, 중복 시키는 과정

- 성능, 관리 효율 향상 <-> 일관성 저하

 

개념적 데이터 모델

- 현실을 추상화하여 간략하게 나타낸 데이터 모델

- E-R 모델

 

개념적 데이터모델 관련 용어

- 개체 : 구분 되는 정보

- 개체 인스턴스 : 개체 하나 하나 

- 개체 타입 : 개체를 나타내는 구조

- 속성 : 정보를 나타내는 최소의 논리적 단위, 데이터 열

- 카디널리티 : 개체 대수. (최소, 최대) 범위

- 차수 : 관계와 연관된 개체 타입의 수

- 관계 : 1:1, 1:n, n:m

 

논리적 데이터 모델

- DBMS에 적용가능하도록 개념적 데이터 모델을 논리화 시킨 모델

 

릴레이션과 테이블

- 릴레이션 : 데이터 구조를 표현하는 추상화된 개념

- 테이블 : 릴레이션을 구체화 시킨 형태

 

논리적 데이터 모델 용어

- 튜플 : 하나의 행

- 속성 : 하나의 열

- 도메인 : 속성 값 범위

- 카디널리티 : 튜플 개수

- 차수 : 속성 개수

- 릴레이션 스키마 : 속성 전체

- 릴레이션 인스턴스 : 튜플 전체

- 릴레이션 = 릴레이션 스키마 + 릴레이션 인스턴스

 

 

- 후보키 : 최소성, 유일성을 만족하는 키 집합

- 슈퍼키 : 유일성을 만족하는 키 집합

- 기본키 : 튜플을 식별하기 위한 대표적인 키. not null, unique

- 대체키 : 기본키를 제외한 후보키

- 외래키 : 타 테이블의 기본키를 참조하는 키

 

무결성 제약조건

- 개체 무결성 : 기본키는 null이나 중복되서는 안됨

- 참조 무결성 : 외래키는 null값이나 참조 릴레이션의 기본키여야 함.

- 도메인 무결성 : 속성은 원차값을 가져야 한다.

* 묵시적 정의 : 개체와 참조무결성은 묵시적으로 정의

* not null, unique, check 는 논리적 데이터모델링 단계서 명시적으로 정의

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

보안  (0) 2020.05.23
테스트  (0) 2020.05.23
서버  (0) 2020.05.22
연계  (0) 2020.05.22
요구사항  (0) 2020.05.22
728x90

웹 서버

- 클라이언트에게 텍스트, 이미지 등 정적 데이터 제공하는 서버. apache

 

웹 어플리케이션 서버

- 웹 서버로부터 받은 요청을 처리하여 동적 데이터를 제공하는 서버. tomcat

데이터베이스 서버 : 데이터베이스 관리 서버. oralce, mysql, mssql

파일 서버 : 이미지, 영상 등 파일들 저장

 

모듈

- 시스템 기능 단위

 

모듈 응집도

- 모듈 기능 명확한 정도

- 우논시절통순기

  약한 응집도 -> 강한 응집도

- 우연적 응집도 -> 논리적 응집도 -> 시간적 응집도 -> 절차적 응집도 -> 통신적 응집도 -> 순차적 응집도 -> 기능적 응집도

 

모듈 결합도

- 모듈간 연관 관계 정도

- 자스제외공내

 약한 -> 강한

- 자료 결합도 -> 스템프 결합도 -> 제어 결합도 -> 외부적 결합도 -> 공통 결합도 -> 내용 결합도

 

공통 모듈

- 여러 모듈에서 공통으로 사용

- 공통 모듈은 응집도는 강하고 결합도가 약할수록 좋음

 

팬인-팬아웃

- 팬인 : 모듈 사용시 호출하는 모듈 수

- 팬 아웃 : 호풀되는 모듈 수

 

 

DB Connection

- 데이터베이스 접속 기술

- ODBC Open Database Connection : 공개 데이터베이스 접속 API로 다양한 언어 사용하여 접근 가능

- JDBC Java Database Connection : 자바 언어를 이용해 데이터베이스에 접근하는 API

- Mybatis : JDBC 단순화하여 xml을 이용하는 SQL 매핑 프레임워크

- 정적 SQL : 기본 쿼리문. 빠름

- 동적 SQL : sql문에 변수를 담아 동적 사용. 느림

 

서버

-MVC 모델 : 사용자 요청을 컨트롤러가 받아 모델에서 데이터 처리 후 뷰를 반환해주는 모델

- MVC, DAO, DTO/VO로 구성

- DAO Data Access Object : DB에 접속하여 데이터를 가져오는 객체. 모델 역활을 하는 서비스에서 처리

- DTO/VO Data Transfer Object/Value Object : 데이터 정보를 담는 객체

 

 

배치 프로그램

- 여러 작업을 한번에 처리하는 프로그램

 

배치 스케쥴러

- 일정 시간에 배치 처리를 하는 프로그램

- 스프링 배치, 쿼츠

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

테스트  (0) 2020.05.23
데이터모델  (0) 2020.05.22
연계  (0) 2020.05.22
요구사항  (0) 2020.05.22
보안  (0) 2020.05.19
728x90

통합 구현

- 송수신 모듈과 중계 모듈 간의 연계 구현

 

중계 시스템

- 송신 시스템과 수신 시스템 사이 데이터 변환 하여 연계

 

연계 메커니즘

1. 직접 연계

- 송수신 시스템이 직접 연계. 단순, 저렴, 고성능

- DB Link : DB에서 제공하는 DB Link 객체 이용

- DB Connection : WAS와 DB로 연결

- JDBC : 자바를 이용해 DB에 접근

- API : 데이터를 DB에서 읽어오는 인터페이스

2. 간접 연계

- 송수신 시스템 사이 중간 매개를 통해 연계. 다양한 환경 사용가능, 인터페이스 변화에도 사용, 

- EAI Enterprise Application Integration : 송수신 처리 모니터링

- ESB Enterprise Service Bus :  어플리케이션 간 인터페이스 제공

- Socket : 서버는 소켓 생성. 특정 포트를 통해 통신

- 웹 서비스 : WSDL, UDDI, SOAP 프로토콜을 이용한 연계

 

연계 모듈 구현 환경

1. EAI Enterprise Application Integration

- 송수신 데이터 처리 모니터링 및 연계, 통합 솔루션

- Point to Point 형 : 1:1연결.

- Hub 형 : 중앙 집중형

- Message Bus 형 : 어플리케이션 사이 미들웨어로 처리 대용량

2. ESB Enterprise Service Bus

- 어플리케이션 간 인터페이스, 데이터 변환, 웹서비스 등 지원

 

웹서비스 구성

- SOAP Simple Object Access Protocol : http, https로 xml 데이터 전송하는 프로토콜

- uddi universal description discovery and intergration : wsdl을 등록하여 서비스와 서비스 제공자 검색 접근

- wsdl web services description language : 웹 서비스명, 프로토콜 등 웹 서비스 상세정보 제공

 

XML eXtensible Markup Language

- 다목적 마크업 언어

<?xml version="버전" encoding="언어셋" standalone="yes | no" ?>

- version : 버전 명시

- encoding : 디폴트 utf-8

- standalone : 외부 문서 참조 여부 기본은 no(외부문서 참조)

 

soap simple object access protocol

- http, https 등으로 xml 데이터 전송을 위한 프로토콜

- envelop : xml로 soap 메시지로 정의

- header : 웹 서비스 정의

- body : 실제 메시지

 

wsdl web services description language

- 웹 서비스명, 프로토콜 등 웹서비스 상세 정보 제공하기 위한 언어

- 클라이언트는 wsdl 파일을 읽어 서버 기능 파악 가능

- uddi에 등록되어 검색

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

데이터모델  (0) 2020.05.22
서버  (0) 2020.05.22
요구사항  (0) 2020.05.22
보안  (0) 2020.05.19
어플리케이션 테스트 - 2 테스트 프로세스  (0) 2020.05.19
728x90

요구 공학 

- 요구사항을 수정, 분석, 명세화 하는 학문

 

요구 사항 개발 프로세스

1. 도출

2. 분석 : 개념적 모델링

3. 명세 : 시스템 정의서, 시스템/소프트웨어 요구사항 명세서(SRS. Sowftware Requirement Specification)

4. 확인 : 프로토 타이핑, 모델 검증, 인수 테스트

 

요구사항 분류에 따른 추출 방법 

- 기능적 : 기능, 자료, 인터페이스, 사용자

- 비기능적 : 성능, 자원, 보안, 품질

 

요구사항 분석 기법

- 개념 모델링 : 현실을 단순화 하여 개념적으로 표현. UML

- 정형 문석 formal analysis : 구문과 의미를 갖는 정형화 된 언어로 요구사항 수학적 기호로 표현, 분석

- 요구사항 분류

- 요구사항 협상

- 요구사항 할당

 

 

현행 시시스템 파악 절차

- SW, HW, 네트워크 등 인프라 확인하여 어떤 기술요소 적용할지 판단하기 위한 사전 지식 습득 과정

1. 구성/기능/인터페이스 파악

2. 아키텍처 및 소프트웨어 구성 파악

3. 네트워크 및 하드웨어 구성 파악

 

 

UML Unified Modeling Language

- 요구사항을 개념적으로 표현하기 위한 언어

- 구성요소 : 사물, 관계, 다이어그램

 

사물

- 관계가 성립할수 있는 대상

1. 구조 사물 : 개념적, 물리적 요소 표현-  클래스, 유스케이스, 컴포넌트, 노드

2. 행동 사물 : 요소들의 행위 표현 - 상호작용 , 상태

3. 그룹 사물 : 요소들을 그룹으로 묶어 표현 - 패키지

4. 주해 사물 : 부가적 설명, 제약조건 - 노트

 

관계

- 사물과 사물간의 연관

1. 연관 관계 : 개수 표현. 양방향 직선, 단방향시 화살선

2. 집합 관계 : 서로 있어도 되고 없어도되는 관계. 텅빈 마름모

3. 포함 관계 : 한 쪽에 반드시 필요로 하는 관계. 검은 마름모

4. 일반화 관계 : 더 넓은 개념으로 묶이는 관계. 상위 사물에 화살선 합침

5. 의존 관계 : 다른 사물에 영향 받는 관계. 실 화살선

6. 실체화 관계 : 사물들의 기능을 표현하는 관계. 상위 사물에 실 화산선 합침

 

다이어그램

- 구조

1. 클래스 : 클래스간 관계 표현

2. 객체 : 객체 인스턴스간 관계 표현

3. 컴포넌트 : 컴포넌트 간 관계 표현

4. 배치 다이어그램 deployment : 컴포넌트, 결과 물 등 물리적 배치 표현

5. 패키지 다이어그램 : 모델 요소 그룹화한 패키지 표현

- 행위

1. 유스 케이스 : 사용자 관점 요구사항 표현

2. 활동 다이어그램 : 기능 처리 흐름 표현

3. 시퀀스 다이어그램 : 객체 간 메시지 전달 과정 표현

4. 상호작용 다이어그램 : 시퀀스 다이어그램에 객체 간 연관 관계 표현

5. 타이밍 다이어그램 : 객체 상태 변화 표현

 

 

유스 케이스 다이어그램

- 사용자 관점 요구사항 표현

 

유스케이스 다이어그램 구성요소

- 구성요소 : 액터, 시스템, 유스케이스, 관계

1. 액터 : 사람, 외부 시스탬 - 주액터 : 사용자. 사람 표현, 부액터 : 서비스 제공 외부 시스템. <<부액터명>> 

2. 유스 케이스 : 시스템이 액터에게 제공하는 기능

3. 시스템 : 액터가 사용하는 시스템 범위

4. 관계 : 액터-유스케이스, 유스케이스-유스케이스 간 관계

 

유스케이스 다이어그램 관계

1. 일반화 관계 :그룹으로 묶음. 상위에 삼각선 묶임

2. 포함 관계 : 공통 기능. 실화살선. <<include>>

3. 확장 관계 : 기능 확장. 실화살선 <<extend>>

 

 

 

클래스 다이어그램

- 클래스간 관계 표현

- 클래스, 속성, 연산, 제약조건 {}, 관계

- 속성 예시 : 접근제어자 속성명 : 자료형[=초기값]

- 연산 예시 : 접근제어자 함수명(파라미터:변수타입, ...) : 반환타입

 

클래스 다이어그램 접근 제어자

- private : 해당 클래스 내에서만

# protected : 동일 패키지, 상속 받는 범위까지

~ default : 동일 패키지 내부

+ public : 외부

 

클래스 다이어그램 관계

- 집합 관계 : 빈 마름모. 상위가 하위 매개변수로 받아 사용

- 포함 관계 : 검은 마름모. 상위서 하위 객체 생성하여 사용

- 일반화 관계 : 모임 삼각선. 하위가 상위 상속 받음

- 연관 관계 : 단방향 시 상위서 하위 변수 선언, 양방향 시 서로 변수 선언

 

 

시퀀스 다이어그램

- 객체 간 메시지 전달 흐름 표현

- 액터, 객체, 라이프라인, 활성상자, 메시지

- 액터 : 사용자

- 객체 : 기능 주체. 객체명:클래스명. 사각형

- 라이프라인 : 전제 기간. 객체 아래 점선

- 활성상자 : 객체 아래 사각형. 메시지 전달 표현

- 메시지 : 객체가 주고받는 메시지

 

메시지

- 동기 : 검삼각선. 보낸후 반환까지 기다림

- 비동기 : 화살선. 보내고 반환안기다림

- 생성 : 실화살선. 메시지 받는 객체 생성

- 응답 : 실검삼각선. 동기 메시지 응답

 

활동 다이어그램

- 사용자 관점 기능 처리 흐름 표현

- 액션, 액티비티, 노드, 스웜 레인

- 액션 : 분할할수 없는 기능 단위

- 액티비티 : 액션 모음

- 노드 : 푝. 원(시작), 선 원(종료), 마름모(조건 노드, 단일 입력 다중출력), 마름모(병합 노드, 다중 입력 단일출력), 굵은가로선(포크 노드, 단일 입력 다중출력), 굵은 가로선(조인 노드, 다중 입력 단일 출력)

- 스웜레인 : 세로실선, 액티비티 수행 주체

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

서버  (0) 2020.05.22
연계  (0) 2020.05.22
보안  (0) 2020.05.19
어플리케이션 테스트 - 2 테스트 프로세스  (0) 2020.05.19
어플리케이션 테스트 - 1 어플리케이션 테스트  (0) 2020.05.19
728x90

Secure SDLC

- SDLC에 보안 프로세스 추가한 것

 

보안 활동

- 요구사항 분석 단계 보안 활동 : 보안 항목에 해당하는 요구사항 식별

- 설계 단계 보안 활동 : 보안 설계서 작성

- 구현 단계 보안 활동 : 보안 요구사항 구현, 보안 취약점을 최소화화는 시큐어 코딩

- 테스트 단계 보안 활동 : 보안 사항들이 동작하는지 점검

- 유지 보수 단계 : 보안 사고 식별, 발생 시 보안 패치 

 

 

1) 세션 통제

- 서버와 클라이언트 연결인 세션 연결로 발생하는 정보 관리하는 것으로 요구사항 분석 단계 보안점검 항목

 

세션 통제 보안 약점

1. 불충분한 세션관리

- 일정 규칙이 존재하는 세션 ID를 발급하거나 타입아웃이 너무 긴 경우->세션 하이재킹으로 획득한 세션ID로 접근가능

2. 잘못된 세션에 의한 정보 노출

- 다중 스레드 환경에서 멤버변수 사용시 발생 -> 싱글턴 패턴의 레이스컨디션으로 동기화 오류 발생 or 맴버변수 노출

 * 레이스 컨디션 : 두 개 이상의 프로세스가 공용 자원 획득을 위해 경쟁 

=> 맴버변수를 지역변수로 바꿔 변수의 범위를 제한

3. 세셜 설계시 고려 사항

- 로그아웃시 세션 완전 제거되도록. 이전 세션 종료 안될 시 새 세션 생성 막음

 

 

 

 

 

2) 입력 데이터 검증 및 표현

- 입력 데이터로 인한 문제 방지를 위해 구현 단계 보안점검항목

 

입력 데이터 검증 및 표현 보안 약점

1.  SQL 삽입

 - 입력란에 SQL 삽입하여 무단 DB 조작 -> 입력 데이터에 예약어/특수문자 입력안되도록 필터링

2. 경로 조작 및 자원 삽입

 - 데이터 입출력 경로 조작하여 서버 자원 수정/삭제 -> 경로 순회 공격 막는 필터 사용

3. 크로스사이트 필터링(XSS)

 - 웹페이지에 악성 스크립트 삽입으로 방문자 정보 탈취, 비정상적기능 유발 -> HTML 태그 사용 제한

4. 운영체제 명령어 삽입

 - 외부 입력을 통해 시스템 명령 실행 유도로 권한 탈취, 장애 유발 -> 웹 인터페이스로 명령어 전달 방지.

5. 위험한 형식 파일  업로드 

 - 악의적 스크립트 파일 업로드하여 시스템 손상 -> 파일 확장자 제한, 웹/파일 서버 경로 분리, 실행 속성 제거

6. 신뢰되지 않는 URL 연결

 - 입력 값으로 사이트 주소 받는 경우 이를 조작하여 피싱 사이트 유도 -> 외부 사이트를 화이트 리스트로 관리

 

 

 

3) 보안 기능

- 인증, 접근제어, 암호화 등을 올바르게 구현하기 위한 구현 단계 보안점검 항목

 

보안 기능 보안 약점

1. 적절한 인가없이 중요기능 허용

 - 보안 검사 우회하여 인증 없이 중요 정보/기능에 접근 -> 중요 정보/기능 수행 페이지에 재인증 수행

2. 부적절한 인가

 - 접근 제어 없는 실행결로로 정보, 권한 탈취 ->모든 실행경로에 접근 제어 검사 수행

3. 중요 자원에 대한 잘못된 권한 설정

 - 권한 설정이 잘못된 자원에 접근하요 임의 사용 -> 관리자만 자원접근하도록 설정

4. 취약한 암호화 알고리즘 사용

 - 암호화 환경 파일 해독하여 정보 탈취 -> 개선된 암호화 알고리즘 사용

5. 중요 정보 평문 저장, 전송

 - 평문 탈취해 중요 정보 획득 -> 중요 정보 저장, 전송시 암호화, 보안 채널 이용

6. 하드 코드된 비밀번호

 - 소스 유출시 내부에 하드코드된 패스워드 이용 -> 패스워드 암호화하여 별도 파일에 저장

 

 

 

4) 시간 및 상태

- 병렬 시스템이나 멀티 프로세싱 환경에서 시간과 실행 상태를 원할히 동작하게하기 위한 보안 검증 항목

 

시간 및 상태 보안 약점

1. TOCTOU 경쟁 조건

 - 검사 시점과 사용 시점 고려하지 않아 발생

2. 종료되지 않는 반복문/재귀함수

 - 종료하지 못해 자원을 끊임없이 사용하여 고갈

 

 

 

5) 에러 처리

- 실행 중 발생 가능 오류들을 사전 정의하고 예외처리로 문제 예방을 위한 보안 점검항목

 

에러 처리 보안 약점

1. 오류 메시지를 통한 정보 노출

 - 실행 환경, 사용자 정보 등 중요 정보 메시지가 외부로 노출 -> 메시지를 최소한으로 출력

2. 오류 상황 대응 부제

 - 에러처리 하지 않거나 미비 -> 해당 에러에 대한 예외구문 작성

3. 부적절한 예외 처리

 - 함수 반환, 오류들을 세분화 하지 않고 광범위하게 묶어 한번에 되거나 누락된 예외가 발생 -> 세분화하여 예외처리

 

 

6) 코드 오류

- 형 변환, 자워 반환 등 코딩 오류 예방을 위한 보안점검항목

 

코드 오류 보안 약점

1. 널포인터 역참조

 - 함수가 널 포인터를 반환하고, 거기에 값 저장 -> 사용 전 널 검사

2. 부적절한 자원 해제

 - 자원 반환 코드 누락하거나 오류로 자원 반환이 안될 시 자원 부족 발생 -> 예외없이 자원 반환

3. 해제된 자원 사용

 - 반환된 메모리 참조 -> 반환된 자원의 포인터 변수 초기화

4. 초기화 되지 않은 변수 사용 

 - 초기화 안한 경우 -> 변수 선언시 초기화

 

 

 

 

7) 캡슐화

- 중요한 데이터와 기능을 불충분하게 은닉화하여 발생하는 문제 예방을 위한 보안 점검 항목

 

캡슐화 보안 약점

1. 제거되지 않은 디버그 코드

 - 남은 코드로 발생하는 보안 약점 -> 디버그 코드 삭제

2. 시스템 데이터 정보 노출

 - 내부 정보를 시스템 메시지로 외부 출력 -> 외부 노출 메시지는 최소한 정보만 제공

3. public 메소드로 반환된 private 배열

 - 배열의 주소가 외부로 공개되어 접근 가능 ->private 배열을 별도 메소드로 조작, 값만 복사하여 사용

4. private 배열에 public 데이터 할당

 - private 배열을 외부에서 접근 가능 -> public 데이터를 private 배열에 저장시 래퍼런스가 아닌 값 저장

5. 잘못된 세션에 의한 정보 노출

 - 다중 스레드 환경에서 멤버 변수에 정보 저장으로 발생. 싱글톤 패턴의 레이스 커디션으로 동기화 오류나 맴버 변수 노출 -> 지역 변수를 사용하여 범위 제한

 

 

 

8) API 오용

- API를 잘못 쓰거나 보안에 취약한 API 사용 방지를 위한 보안 점검 항목

 

API 보안 약점

1. DNS Lookup에 의존한 보안 결정

- 도메인명에 의존 하여 보안 결정 시 DNS를 속임으로서 발생 -> IP 주소를 직접 입력하여 방지

2. 취약한 PAI

 - 보안 문제로 금지된 API 사용하거나 잘못된 방식으로 사용 -> 안전한 API 사용

 

 

 

 

 

암호 알고리즘

- 평문화를 암호화 문으로 만드는 방법

- 단방향 암호화 방식(해시)과 양방향 암호화 방식(개인키 및 공개키)

 

1. 해시 hash

- 임의의 길이의 입력 데이터나 메시지를 고정 길이 값이나 키로 변환

- SHA, md

 

2. 개인키 암호화 기법

- 하나의 키로 암호화 하고 복호화 -> 대칭 암호 기법, 단일키 암호기법 이라고 하며 스트림 기법과 블록기법

- 스트림 기법 : 평문과 동일한 길이의 스트림을 생성하여 비트 단위 암호화 -> RC4, LFSR

- 블록 기법 : 한번에 하나의 데이터 블록을 암호화 -> DES, SEED, AES

 

3. 공개키 암호화 기법

- 암호화 하는 공개키는 사용자에게 공개, 복호화 하는 비밀키는 관리자만 사용. 비대칭 암호화기법

- RSA : 1979년 MIT. 공개키와 비밀키 사용. 키 : 메시지를 열고 잠그는 상수

 

양방향 암호화 알고리즘 종류

1. DES Data Encryption Standard 

 - 1975. 개인키 암호화 알고리즘. 블록 크기 64비트, 키 길이 56비트

2. AES Advanced Encryption Standard

 - 2001 NIST. 개인키 암호화 알고리즘. 블록크기 128비트, 키 길이에 따라 128, 192, 256

3. SEED

 - 1999. KISA 블록 암호화 알고리즘. 블록 크기 128비트, 키 길이에 따라 128, 256

4. ARIA : 블록 크기 128, 키 길이 128, 192, 256 분류

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

연계  (0) 2020.05.22
요구사항  (0) 2020.05.22
어플리케이션 테스트 - 2 테스트 프로세스  (0) 2020.05.19
어플리케이션 테스트 - 1 어플리케이션 테스트  (0) 2020.05.19
소프트웨어 공학 활용 - 9 UML  (0) 2020.05.19
728x90

테스트 프로세스

1. 테스트 계획

2. 테스트 분석 및 디자인

3. 테스트 케이스 및 시나리오 작성

4. 테스트 수행

5. 테스트 결과 평가 및 보고

6. 결함 추적 및 리뷰

 

테스트 프로세스 결과물

- 테스트 계획서 : 테스트 목적, 범위, 절차, 수행 계획

- 테스트 케이스 : 요구사항 준수 여부 확인을 위헤 입력값, 실행 조건, 예상 결과 등으로 구성한 명세서

- 테스트 시나리오 : 여러 테스트 케이스 동작 순서 정리한 문서

- 테스트 결과서 : 테스트 결과 보고

 

 

테스트 케이스 작성 순서

1. 테스트 계획 검토, 자료 확보

2. 위험 평가, 우선순위 결정

3. 테스트 요구사항 정의

4. 테스트 구조 설계, 방법 결정

5. 테스트 케이스 정의

6. 테스트 케이스 타당성 확인

 

 

결함 관리 프로세스

1. 에러 발견

2. 에러 등록

3. 에러 분석

4. 결함 확정

5. 결함 할당

6. .결함 조치

7.  결함 조치 검토

 

 

테스트 오라클

- 테스트 결과가 올바른지 정의된 값을 이용하여 확인하는 방법.

- 샘플링 오라클 : 특정 테스트 케이스 입력 값에 대한 기대 결과만 구함

- 추정 오라클 : 특정 테스트 케이스 입력 값에 대한 기대 결과 구하고, 나머지 입력은 추정값 사용.

- 참 오라클 : 모든 테스트 케이스 입력에 대해 기대 결과 제공.

- 일관성 검사 오라클 : 어플리케이션 변경시 테스트 케이스 수행 전후 결과과 일관된지 검사

 

 

테스트 자동화

- 테스트 절차를 스크립트 자동화 도구로 수행하는 것

 

테스트 자동화 도구 유형

- 정적 분석 도구 : 코드 실행없이 분석

- 테스트 실행 도구

- 성능 테스크 도구

- 테스크 통제 도구 : 테스트 계획, 관리, 결함 관리 등 수행

- 테스트 하네스 : 어플리케이션 컴포넌트, 모듈을 테스트하는 환경

 

 

 

개발 단계에 대한 어플리케이션 테스트

1. 단위 테스트

 - 모듈이나 컴포넌트 초점에 맞춰 테스트 ex) 구조기반 테스트, 명세기반 테스트

2. 통합 테스트

 - 모듈을 통합시킨 시스템 완성 중 테스트

3. 시스템 테스트

 - 사용 환경 시스템에서 기능적(블랙박스) 요구사항, 비기능적(화이트박스) 요구사항 충족 여부 확인

4. 인수 테스트

 - 사용자 요구사항 충족 여부 확인

 - 사용자 인스 테스트 : 사용자가 확인

 - 운영상 인수 테스트 : 인수 시 백업/복원, 사용자 관리 등 확인

 - 알파 테스트 : 사용자가 개발자 앞에서 하는 테스트

 - 베타 테스트 : 여러 사용자가 하는 테스트

 

 

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

요구사항  (0) 2020.05.22
보안  (0) 2020.05.19
어플리케이션 테스트 - 1 어플리케이션 테스트  (0) 2020.05.19
소프트웨어 공학 활용 - 9 UML  (0) 2020.05.19
소프트웨어 공학 활용 - 8 데이터 모델  (0) 2020.05.19
728x90

어플리케이션 테스트

- 테스트 케이스에 따라 요구사항을 만족하는지 검증 vertification, 확인 validation

 

 

 

테스트 구성요소

- 테스트 프로세스 : 정착, 전략, 관리 프로세스

- 테스트 기법 : 분석, 설계, 실행, 자동화 기법

- 테스트 조직 : 관리자, 설계자, 개발자 

- 테스트 문서화 : 계획서, 결과서, 보고서, 결합목록

 

 

 

테스트 원칙

- 결함이 존재함을 밝히는 활동

1. 완벽한 테스트 불가능 : 모든 테스트 케이스를 테스트 할수 없음

2. 결함 집중 : 전체 모듈 중 20%에 80%결함 발생(파레토 법칙)

3. 정황 의존 : 주변 환경, 데이터로 발생

4. 오류 부재 궤변 : 오류가 안생겨도 요구사항 불만족 시 좋은 소프트웨어가 아님

5. 살충제 패러독스 : 동일한 모듈에 동일한 테스트 케이스 시 내성이 생겨 새로운 결함 발견 힘듬 ->테스트 케이스 개선

 

 

 

테스트 종류

1. 테스트 시각에 따른 분류

- 확인 validation 테스트 : 사용자 관점에서 요구사항 충족 확인

- 검증 vertification 테스트 : 개발자 관점에서 명세서 충족 확인

 

2. 실행 유무에 따른 분류

2.1 정적 테스트

 - 실행 없이 코드나 명세서를 분석하는 테스트, 초기 단계서 결함 발견 가능

 - 워크 스루 : 개발자 작업 내용을 절차대로 검사

 - 인스펙션 : 개발된 결과물 평가

2.2 동적 테스트

 - 실행하여 오류 찾는 테스트

 - 화이트 박스 테스트 : 소스 코드 흐름 테스트. 논리적 복잡성 측정하는 기초 경로 검사와 제어구조 검사

  * 제어 구조 검사 : 조건 검사, 루프 검사, 데이터 흐름 검사

 - 블랙박스 테스트 : 기능 동작 여부 확인. 경계값 분석, 동치 분할 검사, 원인효과 그래프 검사, 오류 예측 검사

  * 동치 분할 검사 : 올바른 입력과 잘못된 입력에 대한 테스트 케이스를 균등하게 사용하는 검사

 

3. 테스트에 따른 분류

3.1 명세 기반 테스트

 - 명세를 이용해 테스트 케이스 작성

 - 동등 분할 검사, 경계값 분석 검사

3.2 구조 기반 테스트

 - 소프트웨어 논리 흐름에 따라 테스트 케이스 작성

 - 구문 기반, 조건 기반

3.3 경험 기반 테스트

 - 테스터 경험에 의존하는 테스트

 - 체크 리스트, 에러 추정

300x250

+ Recent posts