인터페이스 기능 구현 정의

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의 동작 원리

  1. 사용자에 의한 요청 이벤트 발생
  2. 요청 이벤트가 발생하면 이벤트 핸들러에 의해 자바스크립트 호출
  3. 자바스크립트는 XMLHttpRequest 객체를 사용하여 서버로 요청, 이때 웹 브라우저는 요청을 보내고 나서, 서버의 응답을 기다릴 필요 없이 다른 작업 처리 가능
  4. 서버는 전달받은 XMLHttpRequest 객체를 가지고 AJAX 요청을 처리함
  5. 서버는 처리한 결과를 HTML, XML, JSON 형태의 데이터로 웹 브라우저에 전달
  6. 서버로 전달받은 데이터를 가지고 웹 페이지의 일부분만을 갱신하는 자바스크립트를 호출
  7. 결과적으로 웹 페이지만의 일부분만이 다시 로딩되어서 표시

 

 

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] : 중요 인터페이스 데이터의 암호화 전송

  1. IPSec : IP 계층에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용하여 양 종단 간 구간에 보안 서비스를 제공하는 터널링 프로토콜
  2. SSL/TLS : 전송계층과 응용계층 사이에서 클라이언트와 서버 간의 웹 데이터 암호화, 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜
  3. S-HTTP : 웹상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나로서 클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화하여 전송

 

 

'정처기(실기) > 인터페이스 구현' 카테고리의 다른 글

인터페이스 구현 검증  (0) 2022.08.30
인터페이스 설계 확인  (0) 2022.08.28