// < communication tool = term >
1. front-end
클라이언트와 유사한 개념으로 사용자와 프로그램 사이의 인터페이스
하드웨어와 유저 사이로 불리기도 함
2. back-end
시스템 구축, 내부 로직, DB설계, 데이터 처리 등의 server side 영역
3. CSS: 종속형 스타일 시트
HTML, XHTML에서 주로 사용되는 언어
마크업 언어를 실제로 표시하는 방법을 기술한 언어
4. OOP: 객체 지향 프로그래밍
캡슐화, 추상화, 다형성, 상속성
5. URL: Uniform Resource Locator
네트워크에서 자원이 어디에 있는지 알려주는 정보 규약
6. UML: Unified Modeling Language
객체 지향 모델링 언어
7. end-user: 최종 사용자
8. middle-ware: 논리로드와 물리로드 사이의 층
9. IP: Internet Protocol
송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고 받는데 사용하는 정보 규약
* ip address: 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신하기 위해 사용하는 특수한 번호
10. browser: 웹 서버에서 쌍방향 통신하는 HTML 문서나 파일과 연동, 출력하는 소프트웨어
11. application: 운영체제 위에서(운영체제를 플랫폼으로 삼아) 목적을 갖고 실행하는 것
12. GUI: Graphical User Interface
13. IDE: Integrated Development Enviorment
코딩, 디버그, 컴파일, 배포 등을 한번에 이용할 수 있는 통합 개발 환경
14. API: Appliaction Programming Interface
15. CSV: Comma Separate Value
예) cd work - cmd 상에서 cd명령어와 이동하려는 work 폴더 사이의 csv는 스페이스 바
16. notation: 표기법
17. HLL(High Level Language): 인간에 가까운 언어로 자바, c++ 등이 있다
18. LLL(Low Level Language): 기계에 가까운 언어
19. domain: 범위
20. camel case: 클래스 이름의 첫자는 대문자, 변수의 이름 첫자는 소문자
(중간에 의미가 있는 단어가 있으면 대문자로)
camel case를 이용하는 이유는 가독성, 자바는 대, 소문자를 구별한다
21. snake case: 여러 단어로 이루어진 경우 단어 사이를 구분자로 나누는 방식
예) snake_case
21. OOP(Object Oriented Programming)
현실 세계를 시스템화하여 표현하는 방법론 중의 하나로 현재 및 미래의 프로그래밍 언어의 패러다임이다. 객체 지향 프로그래밍은 컴퓨터 프로그래밍을 데이터와 처리 방법으로 보는 기존의 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악한다. 각각의 객체는 메시지를 주고 받으며 데이터를 처리할 수 있다. 기존의 절차적 프로그래밍에서 데이터가 함수 사이를 통과하며 순서대로 가공되는 것과 달리 객체 지향 프로그래밍은 데이터를 중심으로 메서드가 데이터에 접근하여 수정한다는 개념이다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경을 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 프로그래밍을 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능케하는 장점이 있다. 그러나 프로그램의 지나친 객체화 경향은 실제 세계의 모습을 반영하지 못한다는 비판을 받기도 한다.
22. Object(객체)
객체는 시스템 내에서 표현할 수 있는 모든 사물로 물리적인 객체와 개념적인 객체 그리고 소프트웨어적 객체가 있다. 객체는 같은 상태를 갖더라도 구별할 수 있는 성질인 식별성과 행위인 메서드를 통해 변하는 상태 그리고 객체가 반응하는 행위를 포함하는 개념이다. 보드마카를 예로 들면 보드마카의 색상, 이름, 잉크량 등은 보드마카라는 객체를 구별하는 식별성을 갖음과 동시에 마카를 사용한다는 메서드에 의해 행위가 이루어져 잉크량이 감소하는 상태, 속성을 나타낸다. 즉, 객체는 변수, 자료 구조, 함수, 메서드가 될 수 있다. 프로그래밍 언어는 변수를 이용하여 객체에 접근하므로 객체와 변수라는 용어는 종종 함께 사용된다. 그러나 메모리가 할당되기 전까지 객체는 존재하지 않는다. 객체 지향 프로그래밍에서 객체는 클래스의 인스턴스다. 클래스 객체는 자료와 그 자료를 다루는 명령의 조합을 포함하며 객체가 메시지를 받고 자료를 처리하며 메시지를 다른 객체로 보낼 수 있도록 한다.
23. Class
공통된 속성, 행위, 관계, 의미를 갖는 객체의 모임으로 객체를 추상화하여 표현, 정의한 것을 클래스라고 한다.객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 일종의 틀이다. 객체를 정의하기 위한 상태인 멤버 변수와 메서드(함수)로 구성된다. 탬플릿(프로그래밍 도구 중 하나)을 사용하면 객체를 클래스로 정의할 때 멤버의 자료형을 미리 정하지 않고 객체를 사용할 때 결정할 수 있다. 이를 통해 클래스나 멤버의 중복 정의를 하지 않아도 되므로 효율적인 코딩이 가능하다.
24. abstraction(추상화)
객체에서 공통되는 상태값, 행위를 추출하는 것을 추상화라고 한다. 추상화는 문제영역에 의존적이다. 예를 들면 사람이라는 객체는 병원 환자 관리 영역에서는 환자의 이름, 병명, 주민등록번호 등의 추상화 과정을 거치겠지만 전자상거래 영역에서는 고객 이름, 고객 이메일, 구매 포인트 등의 추상화 과정을 거치게 된다. 다시 말해 해당 영역에 따라 추상화를 통해 도출해 낼 수 있는 클래스가 달라진다. 또한 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단하게 만드는 것도 해당된다. 자료의 추상화를 통해 정의된 자료형을 추상 자료형이라고 한다. 추상 자료형은 자료형의 자료 표현과 자료형의 연산을 캡슐화한 것으로 접근 제어를 통해서 자료형의 정보를 은닉할 수 있다. 객체 지향 프로그래밍에서 일반적으로 추상 자료형을 클래스, 추상 자료형의 인스턴스를 객체, 추상 자료형에서 정의된 연산을 메서드, 메서드의 호출을 생성자라고 한다.
25. Generalization(일반화) / Inheritance(상속)
일반화란 서로 다른 개념에서 공통적인 속성을 찾는 것이다. 다시 말해 상세한 것에서 출발해 일반적(포괄적)인 것을 도출해내는 것이다. 상향식 방법과 유사하다. 예를 들면 독수리, 코끼리, 고래는 동물 또는 생물이라는 점에서 일반화할 수 있다. 부모 클래스와 자식 클래스 사이의 상속 관계를 나타내며 자식 클래스가 주체가 되어 자식 클래스를 부모 클래스로 일반화하는 것을 의미한다. 이와 반대되는 개념은 구체적(Specialization)이다.
상속은 새로운 클래스가 기존 클래스의 자료와 연산을 이용할 수 있게 하는 기능이다. 상속의 이유는 추상화 수준이 높은, 일반적인 클래스를 만듦으로써 중복되는 작업을 줄여 효율성을 높이기 위함이며 유지, 관리가 용이하기 때문이다. 또한, 수정, 보완을 쉽게 해낼 수 있다. 상속을 받는 새로운 클래스를 부클래스, 파생 클래스, 하위 클래스, 자식 클래스라고 하며 새로운 클래스가 상속하는 기존의 클래스를 기반 클래스, 상위 클래스, 부모 클래스라고 한다. 상속을 통해서 기존의 클래스를 상속받은 하위 클래스를 이용하여 프로그램의 요구에 맞추어 클래스를 수정할 수 있고 클래스 간의 종속 관계를 형성함으로써 객체를 조직화할 수 있다.
26. Specialization(구체적)
어떤 클래스를 추상화하여 다른 클래스를 정의하는 "일반화"에 반대되는 말이다. 어떤 클래스를 구체화해서 다른 클래스를 정의하는 것으로 특수화라고도 하며 차별화라고 생각할 수 있는 개념이다. 예를 들어 고객이라는 일반적인 개념에서 자연인인 고객, 법인 고객 등으로 구체적으로 따져 다른 점을 강조하는 것이다. 또 다른 예로는 독수리, 코끼리, 고래는 포유류와 조류 또는 날개가 있는 생물과 없는 생물 또는 해양 생물과 육지 생물로 나눌 수 있다. 다만, 구체적으로 클래스를 나누면 작업량이 늘어나고 수정사항이 발생했을 때 비효율적인 작업을 해야하므로 유의해야 한다.
27. Realization(실체화)
실체화를 지원하는 키워드는 interface
UML(Unified Modeling Language) 모델링에서 인터페이스와 실제 구현된 클래스 간의 관계를 의미한다. 인터페이스에서 정의만 되어 있는 메서드를 오버라이딩하여 실제 기능으로 구현하는 것을 말한다.
28. Association
일반화와 구체화의 경우는 ~is a~의 관계지만 association의 경우는 ~has a~의 개념이다. 연관이란 두 집합 간의 협력 관계를 의미하고 "만약 ~한다면 ~가 될 것이다."라고 하는 것이 연관성이다. 이러한 연관성은 분석개념에 적용이 되며 이를 연관 분석이라한다. 데이터 안에 존재하는 항목 간의 연관 규칙을 발견하는 과정을 의미한다. 연관 분석에 사용되는 핵심 개념은 지지도, 신뢰도, 향상도가 있다. 지지도는 하나 이상의 집합 식별에 유용하며, 신뢰도는 제품 집합 간의 연관성 강도를 측정하는 데 이용된다. 향상도는 도출된 연관 규칙의 효용성을 측정하는 데 활용된다. 생성 가능한 모든 규칙을 생성하고 앞의 세 가지 판단 기준에 따라 가장 최선의 규칙을 선택하면 되지만 현실적으로 제품의 개수가 증가하면 컴퓨터의 연산시간이 극단적으로 늘어나게 된다. 따라서 가장 빈발하는 제품집합만을 기준으로 삼아 연관규칙을 생성해 나간다.
29. dependency
객체 지향의 4대 특성(추상화, 상속, 캡슐화, 다형성)을 통해 확보한 유연성을 강화하기 위한 요소. 의존성은 어떤 클래스가 어떤 클래스를 참조하는, 두 클래스 간의 관계라고 볼 수 있다. 예를 들어 dependency는 a(강사)와 b(분필)가 extends라는 키워드를 통한 공유관계일 때 a 클래스 안에서 b가 필요하면 필요할 때마다 생성자를 만들고 호출해야 하는 번거로움이 있다. 그것을 필드에 생성자를 만들어 놓고 강의실에서 강의할 때 b(분필)을 쓰고 놓고 세미나실에서 강의할 때 b(분필)을 쓰고 놓고 다른 어떠한 곳에서도 b(분필)을 사용하고 놓는 효율성을 발휘할 수 있다. 다시 말해 사용하고 버리는 사용관계를 의미한다. 비교하여 사용하고 버리는 사용관계가 아닌 소유관계(has a)에 해당하는 것은 association을 의미한다.
30. Polymorphism
한국어로 다형성이라고 하며 프로그래밍 언어에서 자료형 체계의 성질을 나타내는 것으로 프로그램의 언어의 각 요소들(상수, 변수, 식, 객체, 함수, 메서드 등)이 다양한 자료형에 속하는 것이 허가되는 성질을 가리킨다. 다시 말해 동일한 인터페이스를 사용할 수 있도록 한다. 예를 들면 우리가 일반적으로 사용하는 키보드와 마우스는 생산 업체, 제조국과 상관없이 사용법을 알면 사용할 수 있다.
31. Encapsulation / 절차은닉 / 정보은닉
캡슐화는 객체 지향 프로그래밍에서 2가지 측면을 나타낸다. 객체의 정보를 숨기는 정보 은닉과 절차는 중요하지 않고 결과로 나타내는, 절차 은닉이 있다. 전자는 객체의 속성인 데이터 필드와 행위인 메서드를 하나로 묶는다. 후자는 실제로 구현한 내용의 일부를 외부에 감추어 은닉한다. 정보은닉의 사례로 청년 a는 집에서 나오는 순간 자신의 정보를 외부에 숨긴다. 누가 전화번호를 물어도 답하지 않으며 누가 계좌번호와 비밀번호를 물으면 이상하게 쳐다본다. 절차은닉의 경우는 d 사이트가 하룻밤 사이에 리팩토링을 거쳤다고 공지를 했다. 사용자 b는 그 공지를 보고 사이트를 이용했지만 전과 다름없이 사이트를 잘 이용했다. 어떠한 수정과 보완이 이루어졌는지는 중요하지 않다. b는 d사이트를 예전과 마찬가지로 이용할 뿐이다. 그 중 외부에 감추는 방법으로 접근지정자를 두어 은닉의 정도를 기술한다. 이 접근지정자로 해당 영역에 들어가는 속성이나 메서드를 제한하며 접근지정자에 의해 제한된 멤버는 컴파일러에 의해 판단된다. 언어적 측면에서 접근지정자에 의해 정의된 해당 변수나 멤버 함수는 코드 중에 접근방식을 위반한 코드를 작성하면 컴파일 오류로 처리하고 실행 코드 생성을 제한한다.
32. 인스턴스 변수 = 속성 = 필드
인스턴스 메서드 = 행위 = 메서드
33. class path: JRE에게 class의 위치를 알려주기 위해서 사용
34. deprecated: 사용을 추천하지 않음
35. garbage: 더 이상 사용하지 않는 메모리
36. ASCII code: 미국 정보 교환 표준 부호로 알파벳을 이용한 문자 인코딩 중 하나
37. encoding: 정보의 형태나 형식을 변환하는 처리 방식
38. decoding: 부호화된 정보를 부호화되기 전으로 되돌리는 처리
39. parsing
일련의 문자열을 의미있는 token(어휘 분석의 단위)으로 분해하고 이들로 이루어진 parse tree(문장의 구조를 나무 그림 형태로 표현)를 만드는 과정
40. 인터페이스 기반 프로그래밍
구체적인 클래스를 참조하지 않고 상위 인터페이스를 선언하여 다형성을 이용, 유연하게 프로그램을 작성하는 방법
41. User Interface: 사람과 사물, 시스템 사이에 의사소통을 할 수 있도록 일시적, 영구적 접근을 목적으로 만들어진 물리적, 가상적 매개체
42. 유니코드: 세계 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준으로 문자 집합, 문자 인코딩, 문자 정보, 데이터 베이스를 다루는 알고리즘을 포함한다
43. protocol: 복수의 컴퓨터 사이, 중앙 컴퓨터와 단말기 사이에서 데이터 통신을 원활하게 하기 위한 통신 규약으로 신호 송신 순서, 오류 검출 등을 정함
44. application protocol: 통신을 사용하는 응용 프로그램 국제 표준
45. EOF (End Of File): text 파일에서 문자열, 2진 계열 파일을 읽어들일 때 더 이상 읽어들일 것이 없는 경우로 파일의 끝이라는 의미
46. garbage: 더 이상 사용하지 않는 메몰
47. deprecated: 사용을 추천하지 않음(업데이트를 통해 더 좋은 기능이 있으니 굳이 사용하지 말라는 의미)
48. vector.capacity(): 메모리 할당 크기를 알 수 있음
49. vector.size(): 현재 사이즈(크기)를 반환
50. vector.elementAt(int index): index 위치의 객체를 반환
51. stack.pop(): 맨 위 객체를 제거하고 그 객체를 반환
52. stack.peek(): 맨 위 객체를 제거하지 않고 반환
53. stack.puch(): 위로 객체를 밀어 넣음(투입)
54. queue.offer(): insert
55. queue.peek(): 객체를 제거하지 않고 반환
56. queue.poll(): 맨 위에 있는 객체를 제거하고 반환
57. Interface map (key, value): key = value 구조로 데이터를 저장
58. containskey(){}: map 구조에 포함되어 있는 값이라면 true를 반환
59. get(): 특정 key가 매핑되었을 때 그 값을 반환
60. UI: User Interface
61. 유니코드: 세계 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준
62. protocol: 복수의 컴퓨터 사이, 중앙 컴퓨터와 단말기 사이에서 데이터 통신을 원활하게 하기 위한 통신 규약으로 신호 송신 순서, 오류 검출 등의 사항을 정함
63. 통신 protocol: 통신 규약이라고 하며 컴퓨터나 원거리 통신 장비에서 메시지를 주고 받는 양식과 규칙 체계
64. application protocol: 통신을 사용하는 응용 프로그램 국제 표준
65. process: 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
66. life cycle: 실행부터 종료까지의 일련의 과정
67. client: 네트워크를 통해서 서버라는 다른 컴퓨터 시스템상의 원격 서비스에 접속할 수 있는 응용 프로그램이나 서비스를 의미함. 서버에 SQL이나 인터페이스 호출로 데이터나 서비스를 요청하고 결과를 보여주는 프로그램
68. server: 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 또는 프로그램으로 서버에서 동작하는 소프트웨어를 서버 소프트웨어라고 한다
69. port: 소프트웨어가 소프트웨어와 맞물리기 위한 가상의 연결단
70. tooltip: 도구의 설명, 정보 팁을 보여주는 그래픽 사용자 인터페이스(GUI)
71. *.jar: bean의 묶음
*.war: web achieve의 묶음
72. URI(Uniform Resource Identifier): 인터넷에 있는 자원을 나타내는 유니크한 주소로 인터넷 프로토콜에 붙어다님
73. n-tier application: 데이터 시스템과 클라이언트 사이에 배치한 클라이언트 서버 시스템의 일종 예를 들어 사용자와 데이터베이스 간에 데이터 요구 서비스에 미들웨어를 이용하는 것, 일반적으로 3층구조가 많이 사용됨
74. DNS 서버(Domain Name System Server): 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 개발된 시스템
75. thrid-party library: 하드웨어나 소프트웨어 등의 제품을 제조하고 있는 메이커나 그 계열 회사 또는 기술 제휴를 하고 있는 기업 이외의 기업을 총칭
76. framework(프레임워크): 특정 개념이나 문제 영역을 해결한 재사용성을 갖추고 확장성이 있는 library(~.jar)로 원하는 기능 구현에 집중, 신속한 개발이 가능하도록 기본적인 기능을 갖추고 있음
77. spring framework(스프링 프레임워크): 자바 플랫폼을 위한 오픈 소스 어플리케이션으로 동적인 웹 사이트 개발을 위한 서비스를 제공한다. 크기도 작고 부하도 덜하며 제어 역행을 통해 어플리케이션 간의 느슨한 결합을 도모한다.
78. Inversion of Control(제어 역행): 보통 자바 기반 어플리케이션 개발시 객체 생성, 의존 관계 연결은 어플리케이션에게 있었으나 객체의 life cycle이 생성때부터 제어까지 제어권이 넘어간 상태를 말한다. 즉, 제어권이 '나' 자신에게 없기 때문에 책임이 '나'에게 없다
79. dependency injection(의존성 주입): '내'가 생성하지 않고 주입받는 것(injection)을 의미하며 전달 메시지를 통해 객체를 주고 받는 것을 의미한다. 이러한 의존성 주입의 종류로는 생성자 메서드 주입과 setter 메서드 주입이 있다.
80. setter method injection: bean 사이의 의존관계 연결에 setter method를 이용하는 것
81. constructor injection: 생성자 초기화시(상태값 세팅) 생성자 오버로딩을 통해 의존 관계를 연결하는 것(인자값을 넘겨주는 것)
82. wiring: 스프링(bean / IoC) 컨테이너가 메타 데이터에 선언적, 서술적으로 기술된 인스턴스를 생성하고, 의존성 주입을 수행하여, 인스턴스 관계를 형성하는 작업을 일컫는다.
83. dependency lookup: 스프링 컨테이너에게 특정 개체를 달라고 요청하는 것. 컨테이너에서 제공하는 API를 이용하여 찾고자 하는 bean을 lookup
84. preparedStatement를 사용하는 이유: 미리 컴파일이 이루어짐, sql 서버에서 1번 분석이 이루어지면 재사용이 용이, 쿼리 실행시 작은 따옴표를 신경쓰지 않아도 됨
85. FQCN(Fully Qualified Class Name) 사용 이유: xml(메타 데이터)내에 import되어 있지 않아서
86. OGNL(Object Graph Navigator Language): 정보 추출, 활용하는 표현방식을 갖는 언어
87. singleton(싱글톤) 패턴: static으로 자기 자신을 선언 + private 접근 제한자 이용 + getInstance()를 이용하여 자기 자신을 이용할 수 있도록 객체 선언하는 코드 개발 패턴
88. lightweight container: 바로 구동 / 컨테이너 내 오브젝트 배치에 용이
예) POJO기반 컨테이너 또는 프레임워크 : 간결한 코드, 객체 지향을 통한 자유로움
89. heavyweight container: heavyweight 컨테이너 제거 시 해당 컨테이너 사용은 불가능
예) 서블릿 컨테이너, JSP 컨테이너
90. AOP(Aspect-Oriented Programming): 관점 지향 프로그램으로 프로그램을 바라보는 관점을 바꿔보자는 의미. 예를 들어 핵심기능에 관점에서 봤을 때 공통점이 없지만 부가기능에서 봤을 때는 공통점이 있는 경우가 있을 수 있다. 즉, 기존의 OOP에서 바라보던 시점과 다른, 부가기능에서 바라봤을 때 공통된 요소가 있다면 그것을 추출하자는 의미로 인프라, 부가기능의 모듈화를 뜻한다.(이때 가로 영역의 공통된 요소를 추출, 잘라냈다 하여 cross-cutting이라고 함) 기존의 OOP에서 하던 상속, 위임을 통해 재사용성을 높였다면 AOP 역시 마찬가지로 재사용성을 높이기 위한 수단이다. 또한, DI(의존성 주입)가 애플리케이션 간의 결합도(커플링 관계)를 낮춰준다면 AOP는 애플리케이션 전체에 걸쳐 사용하는 기능을 재사용할 수 있게끔 지원한다.
- target: 부가기능을 부여할 대상
- aspect: 객체지향 모듈을 오브젝트라 하는 것과 같은 의미로 부가기능 모듈을 의미
- advice: 실질적으로 부가기능을 담은 구현체
- point cut: 부가기능을 적용할 대상을 선정하는 방법
- join point: advice를 적용할 위치
- weaving: 지정된 객체에 부가기능 모듈(aspect)을 적용하여 새로운 프록시(target을 감싸서 target의 요청을 받는 랩핑 오브젝트) 객체를 생성하는 과정
91. JSON(JavaScript Object Notation): 언어에 비종속적이며 다른 시스템과 데이터를 교환하는 수단으로 사용된다. UI외 데이터를 전송받기 위한 application protocol이며 json value notation과 json array notation이 있다.
92. REST( Representational State Transfer): 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트 아키텍처의 한 형식. 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 담은 원리. REST의 원리를 따르는 시스템을 RESTful이라고 칭하기도 한다.
클라이언트/서버 구조, 클라이언트 콘텍스트가 서버에 저장되어서는 안됨, 계층화, 인터페이스 일관성 등이 원칙에 해당한다.
93.시맨틱 웹(Semantic Web): 의미론적인 웹. 컴퓨터가 사람을 대신하여 정보를 읽고, 이해하고 가공하여 새로운 정보를 만들어 낼 수 있도록 이해하기 쉬운 의미를 가진 차세대 지능형 웹. 컴퓨터가 정보의 의미를 분석하여 이해하고 그 관계 속에서 자료 검색 및 처리하여 의미적 자료를 추출하여 보여줄 수 있는 지능형 웹. 시맨틱 웹 기반 기술은 데이터를 처리하고 검색하는 지식 관리 시스템으로써 데이터 교환 저장 관련 분야에 영향을 주고 있음. 지식 기반의 자료와의 연동을 통해서 사용자에게 의미적인 정보를 제공하는 방향으로 나아감.