데이터 인터페이스 확인
1) 소프트웨어 개발 단계별 인터페이스 산출물
[분명설]
분석단계 : 인터페이스 정의서 작성
명세단계 : 인터페이스 명세서 작성
설계단계 : 인터페이스 설계서 작성
2) 시스템 인터페이스 정의서
[각번데]
각 인터페이스 번호당 인터페이스가 되는 데이터, 데이터 형식, 송수신 시스템 정보 등을 구체화하는 문서
3) 상세 기능별 인터페이스 명세서
[데송저]
데이터 송수신 시스템 간의 데이터 저장, 속성 등의 상세 내역을 포함하는 문서
4) 시스템 인터페이스 설계서
[이데처각]
- 이기종 시스템 및 컴포넌트 간 데이터 교환 및 처리를 위해 각 시스템의 교환되는 데이터, 업무, 송수신 주체 등이 정의된 문서
- 시스템 인터페이스 목록, 시스템 인터페이스 정의서로 구성
5) 인터페이스 정의서, 명세서 주요 항목
[인명오개/전후파반]
주요 항목 | 설명 |
인터페이스 ID | 인터페이스를 구분하기 위한 식별자 |
인터페이스 명 | 해당 인터페이스를 나타내는 고유 명칭 |
오퍼레이션 명 | 해당 인터페이스의 세부 동작 명칭 |
오퍼레이션 개요 | 해당 인터페이스의 세부 동작 프로세스에 대한 세부 설명 |
사전 조건 | 해당 인터페이스의 세부 동작이 정상적으로 작동하기 위한 사전에 완료되어야 하는 조건 기술 |
사후 조건 | 해당 인터페이스의 세부 동작이 정상적으로 작동된 이후에 발생되는 조건 기술 |
파라미터 | 인터페이스 구성 항목 값 |
반환 값 | 인터페이스 전송 후 반환되는 값 |
6) 데이터 인터페이스 확인 방안
인터페이스 설계서를 통한 기능 확인 / 정적, 동적 모형을 통한 기능 확인
인터페이스 기능 식별
1) EAI (통합 구현에 적음)
2) ESB (통합 구현에 적음)
인터페이스 데이터 표준 확인
1) 정의
[상시인범]
상호연계하고자 하는 시스템 간 인터페이스가 되어야 할 범위의 데이터 형식과 표준을 정의하는 활동
2) 절차
데이터 인터페이스 입출력 의미 파악 -> 데이터 인터페이스 입출력 의미 파악을 통한 데이터 표준 확인 -> 인터페이스 데이터 항목 식별 -> 데이터 표준 최종 확인
인터페이스 기능 구현 정의
1) 모듈 간 세부 설계서 확인
- 컴포넌트 명세서 : 컴포넌트의 개요, 내부 클래스 동작, 인터페이스를 통해 외부와 통신하는 명세를 정의
- 인터페이스 명세서 : 컴포넌트 명세서에 명시된 인터페이스 클래스 세부 조건 및 기능을 명시한 명세서
2) 일관되고 정형화된 인터페이스 기능 정의
3) 정의된 인터페이스 기능에 대한 정형화
4) 인터페이스 기능 구현 절차
기능 구현 정의 | 기능 |
송신 측에서 필요대상 선택하여 수신 측에 데이터 전송 | 대상자 선택 -> 인터페이스 데이터 생성 -> 인터페이스 데이터 전송 요청 |
필요항목에 대해서 데이터 전달 | 인터페이스 데이터 전송 -> 인터페이스 데이터 수신 -> 인터페이스 데이터 파싱 -> 인터페이스 데이터 검증 -> 후속 기능 수행 |
전달 후 수신 측으로부터 전달여부에 대한 값을 반환 | 인터페이스 수신 결과 생성, 전송 -> 수신 측에서 처리한 인터페이스 결과 반환 |
인터페이스 기능 구현 기술
1) JSON(Javascript Object Notation)
1-1) 정의
[속키데인]
속성-값 쌍 또는 키-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포멧
1-2) 특징
- AJAX에서 많이 사용, XML을 대체하는 주요 데이터 포멧
- 언어 독립형 데이터 포멧으로 다양한 데이터 프로그래밍 언어에서 사용
- 사람이 읽고 쓰기 용이, 기계가 분석하고 생성하기 용이
1-3) 표현 자료형
- 숫자(number) : 정수, 실수로 표현
- 문자열(string) : 항상 큰 따옴표""로 묶어서 사용
- 배열(array) : 대괄호[]로 표시
- 객체(object) : 이름-값 쌍, 중괄호{}를 사용, 이름은 문자열이므로 큰 따옴표 사용
1-4) 문법
{로 시작하고 }로 끝남, 이름-값 쌍으로 구성
1-5) 장단점
- XML보다 가볍고 빠름, XML은 모두 string이나 JSON은 다양함
- 태그가 없어서 가독성이 떨어짐
2) XML(Extensible Markup Lauguage)
2-1) 정의
[H단S마]
HTML의 단점을 보완한 언어로, SGML의 단점을 개선한 마크업 언어
2-2) 특징
- 송수신 시스템 간 데이터 연계 편의성을 위해 전송되는 데이터 구조를 동일한 형태로 정의
- 인간과 기계가 모두 이해할 수 있는 텍스트 형태로 마크업 포켓을 정의하기 위한 메타언어
- 사용자가 직접 문서의 태그 정의할 수 있으며, 다른 사용자가 정의한 태그 사용 가능
2-3) 구조
- XML 문서는 XML 프롤로그와 XML 요소로 구성
- 트리구조로 구성되며 상위태그는 여러 개의 하위태그를 가질 수 있음
- 모든 태그는 종료태그를 가져야 하며, 요소이름 동일해야 함
- <xml>태그 다음 나오는 태그는 루트 태그로서, XML 문서에 단 하나만 존재
2-4) XML 프롤로그
맨 첫 줄에 <xml> 태그를 사용하여 XML 문서임을 명시, 태그 이름은 소문자만 사용
<?xml version="XML문서버전" encording="언어셋" standalone="yes/no"?>
구성요소 | 설명 |
version | XML 문서에 사용된 버전을 명시 |
encording | XML 언어셋 명시, 생략하면 기본값은 UTF-8 |
standalone | XML 문서 해석할 때 외부문서 참조여부 명시, 생략하면 기본값은 no로 외부문서 참조를 의미 |
2-5) XML 요소
<요소이름 속성1="속성값" 속성2="속성값">내용</요소이름>
3) AJAX(Asynchroonous Javascript And XML)
3-1) 정의
[자웹클비X]
자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술
3-2) 특징
- 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용하여 전체 페이지를 새로 로드하지 않고 필요한 일부 페이지의 데이터만을 로드하는 기법
- HTML만으로는 어려운 다양한 작업을 웹 페이지에서 구현해서 이용자가 웹 페이지와 자유롭게 상호작용 도움
3-3) 주요 기술
주요 기술 | 설명 |
XMLHttpRequest | - 웹 브라우저와 웹 서버 간에 메서드가 데이터를 전송하는 객체 폼의 API - 비동기 통신을 담당하는 자바스크립트 객체 |
JavaScript | - 객체 기반의 스크립트 프로그래밍 언어 - 웹 브라우저 내에서 주로 사용 |
XML | 위에 존재 |
DOM | - XML 문서를 트리 구조 형태로 접근할 수 있게 해주는 API - 플랫폼, 언어 중립적으로 구조화된 문서를 표현하는 객체지향 모델 |
XSLT | - XML 문서를 다른 XML 문서로 변환하는데 사용하는 언어 |
HTML | - 인터넷 웹 문서를 표현하는 표준화된 마크업 언어 |
CSS | - 마크업 언어가 실제 표시되는 방법을 기술하는 언어 |
4) REST(Representational State Transfer)
4-1) 정의
[분자표H웹]
분산 하이퍼미디어 환경에서 자원의 존재, 상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처
4-2) 구성
[리메메]
리소스, 메서드, 메시지로 구성
4-3) 행위에 대한 메서드
메서드 | 의미 |
POST | 생성 |
GET | 조회 |
PUT | 수정 |
DELETE | 삭제 |
4-4) 예시
"이름이 페코페코인 사용자를 생성한다"
HTTP POST, http://iiccbb/users/
{
"user":"페코페코"
}
4-5) 특징
클라이언트-서버 구조, 무 상태성, 일관된 인터페이스, 캐시 처리 가능, 자체 표현 구조
인터페이스 구현
1) 데이터 통신을 사용하는 인터페이스 구현
데이터베이스 내 정보를 SQL을 통하여 선택한 후 JSON으로 생성 -> AJAX 기술로 수신측에 송신
2) 인터페이스 개체(Entity)를 사용하는 인터페이스 구현
프로시저, 트리거, 배치 작업 등의 방법으로 수신 테이블로 데이터 전송
인터페이스 보안
1) 시큐어 코딩
[입보시/에코캡아]
적용대상 | 취약점 | 대응방안 |
입력 데이터 검증 및 표현 | 프로그램 입력값에 대한 검증 누락, 부적절한 검증, 잘못된 형식 지정 | 사용자, 프로그램 입력 데이터에 대한 유효성 검증 체계를 수립하고 실패시 처리 기능 설계 및 구현 |
보안 기능 | 인증, 접근제어, 기밀성, 암호화, 권한 관리 등의 부적절한 구현 | 정책 적절하게 반영되도록 설계 및 구현 |
시간 및 상태 | 거의 동시에 수행 지원하는 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리 | 공유 자원의 접근 직렬화, 병렬 실행 가능 프레임워크 사용, 블록문 내에서만 재귀함수 호출 |
에러 처리 | 에러 미처리, 불충분한 처리 등으로 에러 메시지에 중요 정보 포함 | 취약점 생기지 않도록 시스템 설계 및 구현 |
코드 오류 | 개발자의 코딩 오류로 인함 | 코딩 규칙 도출 후 검증 가능한 스크립트 구성과 경고 순위 최상향 조정 후 경고 메시지 코드 제거 |
캡슐화 | 기능성이 불충분한 캡슐화로 인해 인가되지 않은 사용자에게 데이터 노출 | 디버거 코드 제거와 필수정보 외의 클래스 내 프라이빗 접근자 지정 |
API 오용 | 의도치 않은 사용으로 API 사용, 보안 취약한 API 사용 | 취약 API 확보 및 검출 프로그램 사용 |
2) 데이터베이스 암호화 알고리즘
[대비해]
대칭키 암호화 알고리즘 : ARIA 128/192/256, SEED
비대칭키 암호화 알고리즘 : RSA, ECC, DCDSA
해시 암호화 알고리즘 : SHA-128/256/512, HAS-160
3) 데이터베이스 암호화 기법
[애플티하]
API 방식 : 애플리케이션 서버에 암호모듈 적용, 애플리케이션 서버에 부하 발생
Plug-in 방식 : DB 서버에 암호모듈 적용, DB 서버에 부하 발생
TDE 방식 : DB 서버의 DBMS 커널이 자체적으로 암호모듈 수행
Hybrid 방식 : API 방식과 Plug-in 방식을 결합하여 부하 분산
4) 중요 인터페이스 데이터 암호화 전송
보안기술 | 설명 |
IPSec | IP계층(3계층)에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용하여 양 종단간 구간에 보안 서비스를 제공하는 터널링 프로토콜 |
SSL/TLS | 전송계층(4계층)과 응용계층(7계층) 사이에서 클라이언트와 서버 간의 웹 데이터 암호화, 상호 인증, 전송시 데이터 무결성을 보장하는 보안 프로토콜 |
S-HTTP | 웹상에서 네트워크 트래픽을 암호화하는 주요방법 중 하나로서 클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화하여 전송 |
인터페이스 구현 검증
1) 인터페이스 구현 검증 도구
인터페이스 동작 상태를 검증하고 모니터링하는 도구
1-1) 종류
[엑스피/엔셀웨]
도구 | 설명 |
xUnit | [자C단] - 자바, C++, .Net 등 다양한 언어 지원하는 단위테스트 프레임워크 - 소프트웨어 함수나 클래스 같은 서로 다른 구성 단위를 테스트 가능 |
STAF | [서컴테] - 서비스 호출, 컴포넌트 재사용 등 다양한 환경 지원하는 테스트 프레임워크 - 각 테스트 대상 분산 환경에 데몬을 사용하여 테스트 대상 프로그램을 통해 테스트 수행하고 통합하며 자동화하는 검증도구 |
FitNesse | [웹케테] - 웹 기반 테스트 케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크 - 사용자가 테스트 케이스 테이블 작성하면 빠르고 편하게 자동으로 원하는 값에 대해 테스트 가능 |
NTAF | [S재F협] - STAF의 장점인 재사용 및 확장성과 FitNesse의 장점인 협업 기능을 통합한 NHN 테스트 자동화 프레임워크 |
Selenium | [브개웹테] - 다양한 브라우저 지원 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임워크 - 테스트 스크립트 언어를 학습할 필요 없이 기능 테스트 만들기 위한 도구 제공 |
watir | [루웹테] - 루비 기반 웹 애플리케이션 테스트 프레임워크 - 모든 언어 기반 웹 애플리케이션 테스트와 호환성 테스팅 가능 |
2) 인터페이스 감시 도구
인터페이스 동작 잘 진행되는지 지속적으로 확인하기 위해 APM을 사용하여 동작 상태 감시 가능
2-1) 종류
도구 | 설명 |
스카우터 | 애플리케이션에 대한 모니터링 및 DB Agent를 통해 오픈소스 DB 모니터링 기능, 인터페이스 감시 기능 제공 |
제니퍼 | 애플리케이션의 개발부터 테스트, 운영, 안정화까지 전 생애주기 단계 동안 성능을 모니터링하고 분석해주는 APM 소프트웨어 |
인터페이스 오류 처리 확인 및 보고서 작성
1) 인터페이스 오류 처리 방법
[사인테]
- 사용자 화면에서 오류 인지하도록 구현
- 인터페이스 오류 로그 생성
- 인터페이스 관련 테이블에 오류 사항 기록
2) 인터페이스 오류 처리 보고서 작성
[최오완]
최초 발생 보고서 -> 오류 처리 경과 보고서 -> 완료 보고서