2022. 8. 29. 18:27ㆍ정처기(실기)/인터페이스 구현
(1) 인터페이스 기능 구현
1.컴포넌트 명세서
- 컴포넌트의 개요, 내부 클래스의 동작, 인터페이스를 통해 외부와 통신하는 명세를 정의한다.
2. 인터페이스 명세서
- 인터페이스 명세서는 컴포넌트 명세서에 명시된 인터페이스 클래스의 세부적인 조건 및 기능을 명시한 명세서이다.
- 인터페이스 명칭, 사전/사후 조건, 인터페이스 데이터 및 인터페이스 완료 후 성공 여부를 반환받는 반환 값 등이 정의되어 있다.
(2) 일관되고 정형화된 인터페이스 기능 정의
- 분석된 인터페이스의 기능, 데이터 표준, 모듈 설계 명세서를 통하여 일관되고 정형화된 인터페이스의 기능을 정의한다.
(3) 정의된 인터페이스 기능에 대한 정형화
- 정의된 인터페이스 기능을 표준화하고, 사람들이 보기 쉽게 정형화한다.
- 특정 하드웨어나 소프트웨어에 의존적이지 않게 작성하고, 가독성을 높이기 위해 프로세스 형태나 유스케이스 다이어그램의 형태로 작성한다.
(4) 인터페이스 기능 구현 기술
1. JSON
- 속성-값 쌍 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다.
① JSON의 특징
- AJAX에서 많이 사용되고 XML을 대체하는 주요 데이터 포맷이다.
- 언어 독립형 데이터 포맷으로 다양한 데이터 프로그래밍 언어에서 사용된다.
- 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성하기에 용이하다.
② JSON 표현 자료형
- 숫자 : 기본 자료형의 수는 정수, 실수로 표현
- 문자열 : 항상 큰 따옴표로 묶어야 하며, 그 안에는 유니코드 문자들이 나열
- 배열 : 배열은 대괄호[ ]로 표시, 배ㅕㄹ의 각 요소는 기본 자료형이거나 배열, 객체임
- 객체 : 객체는 이름/값 쌍의 집합으로, 중괄호{ }를 사용
③ JSON 문법
- 구조 : name/value쌍으로 구성, '{'로 시작하고 '}'로 끝남, 배열은 대괄호 [ ]로 나타냄
ex)
{
"이름" : "블라블라",
"가격" : 5000,
}
- 도구
- Parser : JSON text 파일을 해석하고 자바 오브젝트로 변환
- Renderer : 자바를 text로 표현
- Serializer : POJO를 JSON 표현으로 직렬화
- Mapper : POJO와 JSON을 매핑
- Validator : JSON 스키마를 이용해서 파일 내용 유효성 체크
④ JSON 장점 및 단점
JSON 장점 | JSON 단점 |
XML보다 가볍고 빠름 자료 종류에 큰 제한이 없음 XML은 모두 string이고, JSON은 string, number, array, Boolean 등 다양함 Javascript 코드 안에서 JSON 객체에 접근이 쉬움 |
태그가 없어서 가독성이 떨어짐 DTD 같은 겂이 없기 때문에 데이터 형식이 틀렸을 경우 체크가 쉽지 않음 |
2. XML(Extensible Markup Language)
- XML은 HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어이다.
① XML의 특징
- 송수신 시스템 간 데이터 연계의 편의성을 위해서 전송되는 데이터 구조를 동일한 형태로 정의한다.
- 인간과 기계가 모두 이해할 수 있는 텍스트 형태로 마크업 포맷을 정의하기 위한 메타언어이다.
- 사용자가 직접 문서의 태그를 정의할 수 있으며, 다른 사용자가 정의한 태그를 사용할 수 있다.
② XML의 문서 구조
[문서작성규칙]
- 트리 구조로 구성되어 있어 상위 태그는 여러 개의 하위 태그를 가질 수 있음
- 모든 태그는 종료 태그를 가져야 하고, 시작 태그와 종료 태그의 요소명칭은 동일해야 함
- XML 태그의 여닫는 순서는 반드시 지켜져야 하고, 띄어쓰기는 인식
- 속성값은 반드시 큰따옴표(" ")로 묶어줘야 하고, 대소문자는 구분
ex)
<?xml version="1.0" encoding="UTF-8"?>
<shop city="인천" type="전자상가">
<smart device>
<name>iphone</name>
<sort>smart phonoe</sort>
<cost>960,000</cost>
</smart device>
<smart device>
<name>삼성갤럭시</name>
<sort>smart phone</sort>
<cost>1,160,000</cst>
</smart device>
</shop>
③ XML 구성
- XML의 문서는 크게 XML 프롤로그 부분과 XML 요소로 구성된다.
[XML 프롤로그]
- 문서는 맨 첫 줄에 <xml> 태그를 사용하여 XML 문서임을 명시하는 선언부다.
- 태그는 무조건 소문자로만 사용한다.
ex)
<?xml version="XML문서버전"encoding="언어셋" standalong="yes|no"?>
▼ XML 프롤로그 문법 구성요소
구성요소 | 설명 |
version | XML 문서에 사용된 XML의 버전을 명시 |
encoding | XML의 언어 셋 명시, 생략이 가능하며, 생략 시 기본값은 UTF-8 |
standalone | XML 문서를 해석할 때 외부 문서의 참조 여부 명시. 생략이 가능하며, 생략 시 기본값은 no로 외부 문서를 참조한다는 의미 |
④ XML 요소
- 요소는 시작 태그부터 종료 태그까지의 모든 것이다.
ex)
<요소이름 속성1="속성값" 속성2="속성값"...>내용</요소이름>
▼XML 요소 문법 구성요소
구성요소 | 설명 |
요소 이름 |
요소의 이름으로 사용자가 임의로 지정 가능 <요소 이름의 작성 규칙> 1. 요소 이름은 영문자 숫자, 하이픈(-), 언더스코어(_)와 점(.)만을 사용 2. 영문자의 대소문자 구분 3. 예약어인 xml, XML, Xml등은 요소 이름으로 사용 불가 4. 시작 태그의 이름과 종료 태그의 이름은 반드시 대소문자까지 동일함 |
속성- "속성값" |
XML요소의 속성은 속성명-"속성값"의 형태로 정의 <속성 이름의 작성 규칙> 1. XML 속성의 이름은 하나의 요소 내에서 중복되어서는 안 됨 2. 속성값은 반드시 따옴표로 둘러싸여야 하며, 작은따옴표와 큰따옴표의 차이는 없음 |
내용 | 요소의 내용으로 생략이 가능 |
3. AJAX
- 자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술이다.
- 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 로드하지 않고 필요한 일부 페이지의 데이터만을 로드하는 기법이다.
- 하이퍼텍스트 표기 언어(HTML)만으로는 어려운 다양한 작업을 웹 페이지에서 구현해서 이용자가 웹 페이지와 자유롭게 상호 작용할 수 있도록 구현하는 기법이다.
▼AJAX의 주요 기술
- XMLHttpRequest : 웹 브라우저와 웹 서버 간에 메소드가 데이터를 전송하는 객체 폼의 API, 비동기 통신을 담당하는 자바스크립트 객체
- JavaScript : 객체 기반의 스크립트 프로그래밍 언어, 웹 브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능 소유
- XML : HTML의 단점을 보완한 인터넷 언어로서 SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어
- DOM : XML 문서를 트리 구조의 형태로 접근할 수 있게 해주는 API, 플랫폼/언어 중립적으로 구조화된 문서를 표현하는 객체 지향 모델
- XSLT : XML 문서를 다른 XML 문서로 변환하는 데 사용하는 XML 기반 언어
- HTML : 인터넷 웹 문서를 표현하는 표준화된 마크업 언어
- CSS : 마크업 언어가 실제 표시되는 방법을 기술하는 언어, 운영체제나 사용 프로그램과 관계없이 글자 크기, 글자체, 줄 간격, 색상 등을 자유롭게 선택할 수 있는 스타일 시트
▼ AJAX의 동작 원리
- 사용자에 의한 요청 이벤트 발생
- 요청 이벤트가 발생하면 이벤트 핸들러에 의해 자바스크립트 호출
- 자바스크립트는 XMLHttpRequest 객체를 사용하여 서버로 요청, 이때 웹 브라우저는 요청을 보내고 나서, 서버의 응답을 기다릴 필요 없이 다른 작업 처리 가능
- 서버는 전달받은 XMLHttpRequest 객체를 가지고 AJAX 요청을 처리함
- 서버는 처리한 결과를 HTML, XML, JSON 형태의 데이터로 웹 브라우저에 전달
- 서버로 전달받은 데이터를 가지고 웹 페이지의 일부분만을 갱신하는 자바스크립트를 호출
- 결과적으로 웹 페이지만의 일부분만이 다시 로딩되어서 표시
4. REST(Representational State Transfer)
- REST는 웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메소드로 주고받는 웹 아키텍처이다.
- REST는 웹의 창시자 중의 한 사람인 Roy Fielding의 2000년 논문에 의해서 소개되었다.
① REST의 기본 형태
- 크게 리소스, 메소드, 메시지 3가지 요소로 구성된다.
② 행위에 대한 메소드
- REST는 행위에 대한 메소드를 HTTP 메소드 중 CRUD에 해당하는 4가지 메소드만 사용한다.
▼ REST 메소드
- POST : Create(생성)
- GET : Read(조회)
- PUT : Update(수정)
- DELETE : Delete(삭제)
③ REST 리소스
- REST는 모든 것을 리소스, 즉 명사로 표현을 하며, 각 세부 리소스에는 id를 붙인다.
- 즉 사용자라는 리소스 타입을 http://iiccbb/users라고 정의했다면, 조니라는 id를 갖는 리소스는 http://iiccbb/조니 라는 형태로 정의한다.
▼REST 리소스
[1] : 사용자 생성
HTTP Post, http://iiccbb/users
{
"name" : 조니
"address" : "seoul"
}
-> http://iiccbb/users라는 리소스를 이름은 조니, 주소는 서울이라는 내용으로 HTTp Post를 이용해서 사용자 생성
[2] : 사용자 조회
HTTP Get, http://iiccbb/users/조니
-> 생성된 리소스 중에서 http://iiccbb/users라는 사용자 리소스에서, id가 조니인 사용자 정보를 조회해오는 방법으로 HTTP Get을 사용함
[3] : 사용자 수정
HTTP PUT, http://iiccbb/users/조니
{
"name" : "조니",
"address" : "pusan"
}
-> 생성된 리소스 중에서 http://iiccbb/users라는 사용자 리소스에서 id가 조니인 사용자 정보의 주소를 "pusan"으로 수정하는 방법으로 HTTP Put을 사용
[4] : 사용자 삭제
HTTP DELETE, http://iiccbb/users/조니
{
"name" : "조니",
"address" : "pusan"
}
-> 생성된 리소스 중에서 http://iiccbb/users라는 사용자 리소스에서 id가 조니인 사용자 정보를 삭제하는 방법으로 HTTP DELETE를 사용함
④ REST 특징
특징 | 설명 |
클라이언트/서버 구조 | 역할이 명확히 구분되기 때문에 클라이언트와 서버는 독립적으로 구현되어야 하고, 서로 간 의존성은 축소함 |
무 상태성 | 작업을 위한 상태 정보를 따로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만 단순히 처리함 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순함 |
일관된 인터페이스 | HTTP 표준에만 따른다면 특정 언어나 기술에 종속되지 않고 모든 플랫폼에 사용할 수 있으며, URI로 지정한 리소스에 대한 조작이 가능한 아키텍처 스타일 |
캐시 처리 가능 | HTTP가 가진 캐싱 기능 적용 가능 HTTP 프로토콜 표준에서 사용하는 태그를 이용하면 캐싱 구현 가능 |
자체 표현 구조 | API 메시지 자체만 보고도 API를 이해할 수 있는 구조를 가짐 리소스와 메소드를 이용해서 어떤 메소드에 무슨 행위를 하는지를 알 수 있으며, 또한 메시지 포맷 역시 JSON을 이용해서 직관적으로 이해가 가능한 구조 |
(5) 인터페이스 구현
- 방법에는 데이터 통신을 사용하는 방법과 인터페이스 개체를 사용하여 인터페이스를 구현하는 방법이 있다.
1. 데이터 통신을 사용하는 인터페이스 구현
(6) 인터페이스 보안 구현 방안
[1] : 데이터베이스 암호화 알고리즘
- 대칭 키 암호화 알고리즘, 비대칭 키 암호화 알고리즘, 일방향 암호화 알고리즘인 해시 암호화 알고리즘이 있다.
구분 | 설명 |
대칭 키 암호화 알고리즘 | 암호화 알고리즘의 한 종류로, 암복호화에 같은 암호 키를 쓰는 알고리즘을 의미 EX) ARIA 128/192/256, SEED |
비대칭 키 암호화 알고리즘 | 공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키의 소유자만이 알수 있도록, 공개키와 비밀키를 사용하는 알고리즘 EX) RSA, ECC, ECDSA |
해시 암호화 알고리즘 | 해시값으로 원래 입력값을 찾아낼 수 없는 일방향의 특성을 가진 알고리즘 EX)SHA-256/384/512, HAS-160 |
[2] : 데이터베이스 암호화 기법
API 방식 : 애플리케이션 레벨에서 암호 모듈(API)를 적용하는 애플리케이션 수정 방식, 애플리케이션 서버에 암복호화, 정책 관리, 키 관리 등의 부하 발생
Plug-in 방식 : 암복호화 모듈이 DB 서버에 설치된 방식, DB 서버에 암복호화 정책 관리 키 관리 등의 부하 발생
TDE 방식 : DB 서버의 DBMS 커널이 자체적으로 암복호화 기능을 수행하는 방식, 내장되어 있는 암호화 기능을 이용
Hybrid 방식 : API 방식과 Plug-in 방식을 결합하는 방식, DB 서버와 애플리케이션 서버로 부하 분산
[3] : 중요 인터페이스 데이터의 암호화 전송
- IPSec : IP 계층에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용하여 양 종단 간 구간에 보안 서비스를 제공하는 터널링 프로토콜
- SSL/TLS : 전송계층과 응용계층 사이에서 클라이언트와 서버 간의 웹 데이터 암호화, 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜
- S-HTTP : 웹상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나로서 클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화하여 전송
'정처기(실기) > 인터페이스 구현' 카테고리의 다른 글
인터페이스 구현 검증 (0) | 2022.08.30 |
---|---|
인터페이스 설계 확인 (0) | 2022.08.28 |