KR102637045B1 - 데이터 수집을 지원하는 방법 - Google Patents

데이터 수집을 지원하는 방법 Download PDF

Info

Publication number
KR102637045B1
KR102637045B1 KR1020230149372A KR20230149372A KR102637045B1 KR 102637045 B1 KR102637045 B1 KR 102637045B1 KR 1020230149372 A KR1020230149372 A KR 1020230149372A KR 20230149372 A KR20230149372 A KR 20230149372A KR 102637045 B1 KR102637045 B1 KR 102637045B1
Authority
KR
South Korea
Prior art keywords
command signal
item
tag item
signal
tag
Prior art date
Application number
KR1020230149372A
Other languages
English (en)
Inventor
임헌석
Original Assignee
주식회사 넷스루
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 넷스루 filed Critical 주식회사 넷스루
Priority to KR1020230149372A priority Critical patent/KR102637045B1/ko
Application granted granted Critical
Publication of KR102637045B1 publication Critical patent/KR102637045B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04817Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

본 개시의 몇몇 실시예에 따른, 적어도 하나의 프로세서를 포함하는 사용자 단말에 대한 데이터 수집을 지원하는 방법이 개시된다. 상기 사용자 단말에 대한 데이터 수집을 지원하는 방법은 타깃 애플리케이션의 실행에 응답하여 미리 지정된 라이브러리에 접근하는 단계; 상기 라이브러리에 정의된 주소로 명령어 수신 준비에 대한 보고 신호를 전송하는 단계; 제1 프로그래밍 언어로 정의된 명령어 신호를 수신하는 단계; 상기 명령어 신호에 대응하는 API(application programming interface)의 존재 여부에 따라 상기 명령어 신호에 대한 응답 신호를 결정하는 단계; 및 상기 라이브러리에 정의된 주소로 상기 응답 신호를 전송하는 단계를 포함할 수 있다.

Description

데이터 수집을 지원하는 방법{METHOD FOR SUPPORTING DATA COLLECTION}
본 개시는 데이터 수집을 지원하는 방법에 관한 것으로, 구체적으로 사용자 단말에 대한 데이터 수집을 지원하는 방법에 관한 것이다.
안드로이드 운영 체제의 앱을 배포하는 과정은 다음과 같이 요약될 수 있다.
애플리케이션 개발: 먼저 사용자 단말에서 실행될 앱을 개발해야 한다. 이 과정에는 사용자 인터페이스 설계, 앱 로직 구현, 테스트 등이 포함될 수 있다.
애플리케이션 빌드: 앱 개발이 완료되면 앱을 빌드해야 한다. 빌드는 소스 코드를 컴파일하고 APK(Android Package) 파일로 패키징하는 과정을 의미할 수 있다.
서명(Signing): 앱을 서명해야 한다. APK 파일의 경우에 서명을 추가하면 앱이 신뢰할 수 있는 소스로 인식된다. 서명에는 개발용 디버그 키스토어 또는 릴리스용 키스토어 등을 사용할 수 있다.
Google Play Console 등록: 앱을 Google Play 스토어에 배포하려면 Google Play Console에 등록해야 한다. 이를 통해 앱 정보, 가격, 설명, 스크린샷, 버전 관리 등을 설정할 수 있다.
APK 업로드: Google Play Console에서 APK 파일을 업로드한다. 릴리스용 APK 파일을 업로드하거나, Alpha, Beta, Production과 같은 다양한 릴리스 트랙을 설정할 수 있다.
리소스와 스토어 페이지 설정: 앱 아이콘, 그래픽 자료, 설명, 앱 스토어 페이지 등의 리소스를 설정한다.
가격 및 국가 설정: 앱의 가격을 설정하고, 어떤 국가에서 사용 가능한지 지정한다. 무료 앱 또는 유료 앱을 선택할 수 있으며, 가격 정책을 관리할 수 있다.
릴리스 및 검토: Google Play Console에서 앱을 릴리스하고, Google의 검토 과정을 거친다. 검토는 앱의 내용, 광고 정책 준수 여부 등을 확인하는 과정이다.
애플리케이션 배포: 검토가 완료되면 앱을 Google Play 스토어에 배포한다. 사용자는 스토어에서 앱을 검색하고 다운로드할 수 있다.
애플리케이션 업데이트 관리: 앱을 업데이트하거나 새로운 버전을 출시해야 할 때, 이전 단계를 반복하여 새로운 APK 파일을 업로드하고 릴리스다.
사용자 지원 및 피드백 관리: 앱을 사용하는 사용자들과의 상호작용을 관리하고, 피드백 및 문제 보고를 처리하여 앱의 개선에 기여합니다.
마케팅 및 홍보: 앱을 성공적으로 배포한 후에는 마케팅 및 홍보 활동을 통해 더 많은 사용자를 유치하고 앱을 홍보합니다.
네이티브로 개발된 안드로이드 애플리케이션은 일반적으로 애플리케이션 내용을 반영하려면 상술한 배포 과정을 따라야 한다. 개발, 빌드, 테스트, 배포에 이르는 과정들로 인해 많은 시간과 자원이 소모되며, 애플리케이션 업데이트하는 방법을 사용하더라도 개발, 빌드, 테스트하는 과정은 필요하다. 또한, 원격에서 리소스를 패치하는 방법도 실행 주체를 변경할 수 없어 변경 사항이 제한적이다.
대한민국 등록특허 제10-1584276호
본 개시는 전술한 배경기술에 대응하여 안출된 것으로, 애플리케이션의 재빌드 또는 재배포 없이도 데이터를 수집할 항목을 변경할 수 있는 사용자 단말에 대한 데이터 수집을 지원하는 방법을 제공하고자 한다.
본 개시의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
전술한 바와 같은 과제를 해결하기 위한 본 개시의 일 실시예에 따라, 적어도 하나의 프로세서를 포함하는 사용자 단말에 대한 데이터 수집을 지원하는 방법이 개시된다. 상기 사용자 단말에 대한 데이터 수집을 지원하는 방법은 타깃 애플리케이션의 실행에 응답하여 미리 지정된 라이브러리에 접근하는 단계; 상기 라이브러리에 정의된 주소로 명령어 수신 준비에 대한 보고 신호를 전송하는 단계; 제1 프로그래밍 언어로 정의된 명령어 신호를 수신하는 단계; 상기 명령어 신호에 대응하는 API(application programming interface)의 존재 여부에 따라 상기 명령어 신호에 대한 응답 신호를 결정하는 단계; 및 상기 라이브러리에 정의된 주소로 상기 응답 신호를 전송하는 단계; 를 포함할 수 있다.
또한, 상기 명령어 신호에 대응하는 API는, 상기 사용자 단말의 운영 체제에 대응하는 제2 프로그래밍 언어로 정의될 수 있다.
또한, 상기 응답 신호를 결정하는 단계는, 상기 명령어 신호에 대응하는 API가 상기 라이브러리 내에 존재하는 경우, 상기 API 내에 정의된 출력값을 상기 응답 신호로서 상기 라이브러리에 정의된 주소로 전송하는 단계; 또는 상기 명령어 신호에 대응하는 API가 상기 라이브러리 내에 존재하지 않는 경우, 상기 명령어 신호에 대한 오류 신호를 상기 응답 신호로서 상기 라이브러리에 정의된 주소로 전송하는 단계; 를 포함할 수 있다.
또한, 상기 명령어 신호에 대응하는 API(application programming interface)의 존재 여부에 따라 상기 명령어 신호에 대한 응답 신호를 결정하는 단계는, 상기 명령어 신호를 파싱하여 명령어를 생성하는 단계; 및 생성된 명령어를 실행하여 상기 명령어 신호에 대응하는 API가 상기 라이브러리 내에 존재하는 지 여부를 결정하는 단계; 를 포함할 수 있다.
또한, 상기 명령어 신호는, 수집할 태그를 지정하는 적어도 하나의 태그 항목을 포함하고, 상기 적어도 하나의 태그 항목 각각은, 상기 태그 항목이 실행되는 조건이 설정되는 트리거 항목 및 수집할 데이터를 지정하는 변수 항목을 포함할 수 있다.
또한, 상기 명령어 신호는, 미리 지정된 그래픽 오브젝트에 대응하는 사용자 인터랙션 입력에 기초하여 상기 적어도 하나의 태그 항목 각각이 선택적으로 수집되도록 생성되고, 상기 미리 지정된 그래픽 오브젝트는 제1 태그 항목에 대응하는 수집 명령을 나타내는 제1 그래픽 오브젝트, 상기 제1 태그 항목에 연관되는 트리거 조건에 대한 실행 명령을 나타내는 제1-1 그래픽 오브젝트, 상기 제1 태그 항목에 연관되는 변수에 대한 수집 명령을 나타내는 제1-2 그래픽 오브젝트를 포함할 수 있다.
또한, 상기 명령어 신호에 대응하는 API(application programming interface)의 존재 여부에 따라 상기 명령어 신호에 대한 응답 신호를 결정하는 단계는, 상기 명령어 신호에 기초하여 상기 적어도 하나의 태그 항목 중 태그를 수집하도록 결정된 제1 태그 항목이 존재하는 지 여부를 결정하는 단계; 상기 제1 태그 항목이 존재하는 경우, 상기 명령어 신호에 기초하여 상기 제1 태그 항목에 포함된 제1 트리거 항목을 수집할 지 여부를 결정하는 단계; 및 상기 제1 태그 항목이 존재하는 경우, 상기 명령어 신호에 기초하여 상기 제1 태그 항목에 포함된 제1 변수 항목을 수집할 지 여부를 결정하는 단계; 를 포함할 수 있다.
또한, 상기 적어도 하나의 태그 항목은, 기 정의된 태그 항목을 이용하는 기본 태그 항목 및 사용자 작성 태그 항목 중 적어도 하나를 포함할 수 있다.
또한, 적어도 하나의 프로세서를 포함하는 서버에 대한 데이터 수집을 지원하는 방법으로서, 사용자 단말로부터 명령어 수신 준비에 대한 보고 신호를 수신하는 단계; 상기 보고 신호에 대한 응답으로 제1 프로그래밍 언어로 정의된 명령어 신호를 전송하는 단계; 및 상기 사용자 단말로부터 상기 명령어 신호에 대한 응답 신호를 수신하는 단계; 를 포함할 수 있다.
또한, 상기 사용자 단말로부터 상기 명령어 신호에 대한 응답 신호를 수신하는 단계는, 상기 명령어 신호에 대응하는 API가 상기 사용자 단말의 라이브러리 내에 존재하는 경우, 상기 API 내에 정의된 출력값을 상기 응답 신호로서 수신하는 단계; 또는 상기 명령어 신호에 대응하는 API가 상기 라이브러리 내에 존재하지 않는 경우, 상기 명령어 신호에 응답으로 오류 신호를 수신하는 단계; 를 포함할 수 있다.
또한, 상기 명령어 신호에 대응하는 API는, 상기 사용자 단말의 운영 체제에 대응하는 제2 프로그래밍 언어로 정의될 수 있다.
또한, 상기 명령어 신호는, 상기 사용자 단말에 의해 파싱되는 경우, 상기 제1 프로그래밍 언어로 정의된 명령어 신호에 대응하는 API가 상기 라이브러리 내에 존재하는 지를 확인하기 위한 명령어로 생성될 수 있다.
또한, 상기 명령어 신호는, 수집할 태그를 지정하는 적어도 하나의 태그 항목을 포함하고, 상기 적어도 하나의 태그 항목 각각은, 상기 태그 항목이 실행되는 조건이 설정되는 트리거 항목 및 수집할 데이터를 지정하는 변수 항목을 포함할 수 있다.
또한, 상기 명령어 신호는, 미리 지정된 그래픽 오브젝트에 대응하는 사용자 인터랙션 입력에 기초하여 상기 적어도 하나의 태그 항목 각각이 선택적으로 수집되도록 생성되고, 상기 미리 지정된 그래픽 오브젝트는 제1 태그 항목에 대응하는 수집 명령을 나타내는 제1 그래픽 오브젝트, 상기 제1 태그 항목에 연관되는 트리거 조건에 대한 실행 명령을 나타내는 제1-1 그래픽 오브젝트, 상기 제1 태그 항목에 연관되는 변수에 대한 수집 명령을 나타내는 제1-2 그래픽 오브젝트를 포함할 수 있다.
또한, 상기 보고 신호에 대한 응답으로 제1 프로그래밍 언어로 정의된 명령어 신호를 전송하는 단계는, 상기 사용자 인터랙션 입력에 기초하여 상기 적어도 하나의 태그 항목 중 태그를 수집하도록 결정된 제1 태그 항목이 존재하는 지 여부를 결정하는 단계; 상기 제1 태그 항목이 존재하는 경우, 상기 사용자 인터랙션 입력에 기초하여 상기 제1 태그 항목에 포함된 제1 트리거 항목을 수집할 지 여부를 결정하는 단계; 및 상기 제1 태그 항목이 존재하는 경우, 상기 사용자 인터랙션 입력에 기초하여 상기 제1 태그 항목에 포함된 제1 변수 항목을 수집할 지 여부를 결정하는 단계; 를 포함할 수 있다.
또한, 상기 적어도 하나의 태그 항목은, 기 정의된 태그 항목을 이용하는 기본 태그 항목 및 사용자 작성 태그 항목 중 적어도 하나를 포함할 수 있다.
본 개시에서 얻을 수 있는 기술적 해결 수단은 이상에서 언급한 해결 수단들로 제한되지 않으며, 언급하지 않은 또 다른 해결 수단들은 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 개시의 몇몇 실시예에 따른, 애플리케이션의 재빌드 또는 재배포 없이도 편리하게 데이터를 수집할 항목을 변경할 수 있는 방법을 제공할 수 있도록 한다.
본 개시에서 얻을 수 있는 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
다양한 양상들이 이제 도면들을 참조로 기재되며, 여기서 유사한 참조 번호들은 총괄적으로 유사한 구성요소들을 지칭하는데 이용된다. 이하의 실시예에서, 설명 목적을 위해, 다수의 특정 세부사항들이 하나 이상의 양상들의 총체적 이해를 제공하기 위해 제시된다. 그러나, 그러한 양상(들)이 이러한 특정 세부사항들 없이 실시될 수 있음은 명백할 것이다. 다른 예시들에서, 공지의 구조들 및 장치들이 하나 이상의 양상들의 기재를 용이하게 하기 위해 블록도 형태로 도시된다.
도 1은 본 개시의 몇몇 실시예에 따른 데이터 수집을 지원하는 방법을 수행하기 위한 예시적인 시스템을 도시한다.
도 2는 본 개시의 몇몇 실시예에 따른 사용자 단말에 의해 수행되는 데이터 수집을 지원하는 방법의 일례를 설명하기 위한 흐름도이다.
도 3은 본 개시의 몇몇 실시예에 따른 사용자 단말이 응답 신호를 전송하는 방법의 일례를 설명하기 위한 흐름도이다.
도 4는 본 개시의 몇몇 실시예에 따른 서버에 의해 수행되는 데이터 수집을 지원하는 방법의 일례를 설명하기 위한 흐름도이다.
도 5는 본 개시의 몇몇 실시예에 따른 서버 및 사용자 단말에서 수행되는 데이터 수집을 지원하는 방법의 일례를 설명하기 위한 도면이다.
도 6은 본 개시의 몇몇 실시예에 따른 적어도 하나의 태그 항목의 일례를 설명하기 위한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제 1, 제 2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 개시에서, 사용자 단말은 서버로부터 명령어 신호를 수신할 수 있다. 여기서, 명령어 신호는 스크립트(script) 등일 수 있다. 스크립트는 소스 코드를 컴파일(compile)하지 않고도 실행할 수 있는 프로그래밍 언어일 수 있다. 사용자 단말은 수신된 명령어 신호에 대응하는 응답 신호를 서버로 전송할 수 있다. 이에 따라, 서버의 사용자는 애플리케이션의 재빌드 또는 재배포 없이도 사용자 단말로부터 데이터를 수집할 수 있다.
이하, 도 1 내지 도 3을 통해 사용자 단말에 의해 수행되는 데이터 수집을 지원하는 방법에 대해 설명하고, 도 4를 통해 서버에 의해 수행되는 데이터 수집을 지원하는 방법에 대해 설명한다.
도 1은 본 개시의 몇몇 실시예에 따른 데이터 수집을 지원하는 방법을 수행하기 위한 예시적인 시스템을 도시한다.
도 1을 참조하면, 데이터 수집을 지원하는 방법을 수행하기 위한 시스템은 서버(100), 사용자 단말(200) 및 네트워크(300)를 포함할 수 있다.
서버(100)는 예를 들어, 마이크로프로세서, 메인프레임 컴퓨터, 디지털 프로세서, 휴대용 디바이스 또는 디바이스 제어기 등과 같은 임의의 타입의 컴퓨터 시스템 또는 컴퓨터 디바이스를 포함할 수 있다.
서버(100)는 전형적인 컴퓨터 하드웨어(예컨대, 컴퓨터 프로세서, 메모리, 스토리지, 입력 장치 및 출력 장치, 기타 기존의 컴퓨팅 장치의 구성요소들을 포함할 수 있는 장치; 라우터, 스위치 등과 같은 전자 통신 장치; 네트워크 부착 스토리지(NAS; network-attached storage) 및 스토리지 영역 네트워크(SAN; storage area network)와 같은 전자 정보 스토리지 시스템)와 컴퓨터 소프트웨어(즉, 컴퓨팅 장치로 하여금 특정의 방식으로 기능하게 하는 명령어들)의 조합을 이용하여 원하는 시스템 성능을 달성하는 것일 수 있다.
서버(100)는 제어부, 저장부 및 통신부 등을 포함할 수 있다. 다만, 상술한 구성 요소들은 서버(100)를 구현하는데 있어서 필수적인 것은 아니어서, 서버(100)는 위에서 열거된 구성요소들 보다 많거나, 또는 적은 구성요소들을 가질 수 있다.
제어부는 통상적으로 서버(100)의 전반적인 동작을 처리할 수 있다. 제어부는 서버(100)의 구성요소들을 통해 입력 또는 출력되는 신호, 데이터, 정보 등을 처리하거나 저장부에 저장된 응용 프로그램을 구동함으로써, 사용자에게 적절한 정보 또는 기능을 제공 또는 처리할 수 있다.
제어부는 하나 이상의 코어로 구성될 수 있으며, 중앙 처리 장치(CPU: Central Processing Unit), 범용 그래픽 처리 장치(GPGPU: General Purpose Graphics Processing Unit), 텐서 처리 장치(TPU: Tensor Processing Unit) 등의 데이터 분석을 위한 프로세서를 포함할 수 있다.
저장부는 메모리 및/또는 영구저장매체를 포함할 수 있다. 메모리는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(Random Access Memory, RAM), SRAM(Static Random Access Memory), 롬(Read-Only Memory, ROM), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있다.
통신부는 서버(100)와 통신 시스템 사이, 서버(100)와 사용자 단말(200) 사이 또는 서버(100)와 네트워크(300) 사이의 통신을 가능하게 하는 하나 이상의 모듈을 포함할 수 있다.
본 개시에서, 서버(100)는 사용자 단말(200)로 명령어 신호를 전송할 수 있다. 명령어 신호는 제1 프로그래밍 언어로 정의될 수 있다. 제1 프로그래밍 언어는 스크립트 언어일 수 있다. 스크립트 언어는 소스 코드를 컴파일하지 않고도 실행할 수 있는 프로그래밍 언어일 수 있다. 명령어 신호가 수신된 경우, 사용자 단말(200)은 명령어 신호에 대응하는 API(application programming interface)를 이용하여 서버(100)로 응답 신호를 전송할 수 있다. 이에 따라, 서버(100)는 사용자 단말(200)로부터 데이터를 수집할 수 있다. 이하, 서버(100)에 의해 수행되는 데이터 수집을 지원하기 위한 방법은 도 4를 통해 설명한다.
사용자 단말(200)은 전형적인 컴퓨터 하드웨어(예컨대, 컴퓨터 프로세서, 메모리, 스토리지, 입력 장치 및 출력 장치, 기타 기존의 컴퓨팅 장치의 구성요소들을 포함할 수 있는 장치; 라우터, 스위치 등과 같은 전자 통신 장치; 네트워크 부착 스토리지(NAS; Network-Attached Storage) 및 스토리지 영역 네트워크(SAN; Storage Area Network)와 같은 전자 정보 스토리지 시스템)와 컴퓨터 소프트웨어(즉, 컴퓨팅 장치로 하여금 특정의 방식으로 기능하게 하는 명령어들)의 조합을 이용하여 원하는 시스템 성능을 달성하는 것일 수 있다. 사용자 단말(200)은 사용자가 소유하고 있는 PC(Personal Computer), 노트북(note book), 모바일 단말기(mobile terminal), 스마트 폰(smart phone), 태블릿 PC(tablet pc) 등을 포함할 수 있으며, 유/무선 네트워크에 접속할 수 있는 모든 종류의 단말을 포함할 수 있다.
본 개시에서, 사용자 단말(200)은 서버(100)로부터 수신된 명령어 신호에 대한 응답 신호를 전송할 수 있다. 응답 신호는 사용자 단말(200)이 수집한 데이터를 포함할 수 있다. 이하, 사용자 단말(200)이 서버(100)로부터 수신된 명령어 신호에 대한 응답 신호를 전송하는 방법의 일례는 도 2 및 도 3을 통해 설명한다.
네트워크(300)는 LAN(Local Area Network), WAN(Wide Area Network)등의 폐쇄형 네트워크 또는 인터넷(Internet)과 같은 개방형 네트워크일 수 있다. 인터넷은 TCP/IP 프로토콜 및 그 상위계층에 존재하는 여러 서비스, 즉 HTTP(Hyper Text Transfer Protocol), Telnet, FTP(File Transfer Protocol), DNS(Domain Name System), SMTP(Simple Mail Transfer Protocol), SNMP(Simple Network Management Protocol), NFS(Network File Service), NIS(Network Information Service)를 제공하는 전 세계적인 개방형 컴퓨터 네트워크 구조를 의미한다.
이하에서는 사용자 단말(200)에 의해 수행되는 데이터 수집을 지원하는 방법의 일례에 대해 설명한다.
도 2는 본 개시의 몇몇 실시예에 따른 사용자 단말에 의해 수행되는 데이터 수집을 지원하는 방법의 일례를 설명하기 위한 흐름도이다.
도 2를 참조하면, 사용자 단말(200)은 타깃 애플리케이션의 실행에 응답하여 미리 지정된 라이브러리에 접근할 수 있다(S110).
타깃 애플리케이션은 데이터의 수집을 위해 사전 배포된 애플리케이션일 수 있다. 타깃 애플리케이션은 SDK(Software Development Kit)가 라이브러리 형태로 설치된 애플리케이션일 수 있다. 사용자로부터의 입력에 기초하여 타깃 애플리케이션이 실행되는 경우, 사용자 단말(200)은 미리 지정된 라이브러리에 접근할 수 있다.
사용자 단말(200)은 라이브러리에 정의된 주소로 명령어 수신 준비에 대한 보고 신호를 전송할 수 있다(S120). 여기서, 라이브러리에 정의된 주소는 서버(100)가 보고 신호를 수신할 수 있는 주소일 수 있다.
사용자 단말(200)은 서버(100)로부터 제1 프로그래밍 언어로 정의된 명령어 신호를 수신할 수 있다(S130). 제1 프로그래밍 언어는 스크립트 언어일 수 있다.
예를 들어, 명령어 신호는 deviceBrand, displaySize 및 view("Button").text 등과 관련된 스크립트를 포함할 수 있다.
일 실시예에 따르면, 제1 프로그래밍 언어로 정의된 명령어 신호는 적어도 하나의 항목을 포함할 수 있다.
구체적으로, 명령어 신호는 적어도 하나의 태그(tag) 항목, 트리거(trigger) 항목 및 변수(variable) 항목 중 적어도 하나를 포함할 수 있다. 트리거 항목 및 변수 항목은 적어도 하나의 태그 항목의 하위 구성 요소일 수 있다. 다시 말해, 적어도 하나의 태그 항목은 트리거 항목 및 변수 항목을 포함할 수 있다.
태그 항목은 수집할 항목을 지정할 수 있다.
예를 들어, 태그 항목은 버튼 클릭, 특정 키의 클릭, 특정 아이템의 클릭, 터치 또는 특정 아이템의 터치 등의 항목을 수집할 항목으로 지정하는 것일 수 있다.
트리거 항목은 태그 항목이 실행되는 조건을 설정할 수 있다.
예를 들어, 트리거 항목은 버튼 클릭, 특정 키의 클릭, 특정 아이템의 클릭, 터치 또는 특정 아이템의 터치 등의 동작이 발생되는 경우, 데이터를 수집하도록 하는 항목일 수 있다.
다른 예를 들어, 트리거 항목은 특정 데이터가 변경되는 경우, 데이터를 수집하도록 하는 항목일 수도 있다.
변수 항목은 수집할 데이터를 지정하는 항목일 수 있다. 변수 항목은 특정 클래스의 특정 데이터를 수집하도록 설정될 수 있다.
본 개시의 몇몇 실시예에 따르면, 명령어 신호는 미리 지정된 그래픽 오브젝트에 대응하는 사용자 인터랙션 입력에 기초하여 적어도 하나의 태그 항목 각각이 선택적으로 수집되도록 생성될 수 있다. 여기서, 사용자 인터랙션은 서버(100)와 서버(100)의 사용자 간에 수행되는 인터랙션일 수 있다.
구체적으로, 적어도 하나의 태그 항목 각각은 적어도 하나의 그래픽 오브젝트 각각에 대응할 수 있다. 적어도 하나의 태그 항목 중 제1 태그 항목이 존재한다고 가정하는 경우, 제1 태그 항목에 대응하는 제1 그래픽 오브젝트가 존재할 수 있다. 명령어 신호는 제1 그래픽 오브젝트에 대한 사용자 인터랙션에 대응하여, 제1 태그 항목을 선택적으로 수집하도록 생성될 수 있다.
예를 들어, 명령어 신호는 제1 그래픽 오브젝트에 대한 사용자 인터랙션에 대응하여, 제1 태그 항목을 수집하도록 생성될 수 있다. 다른 예를 들어, 명령어 신호는 제1 그래픽 오브젝트에 대한 사용자 인터랙션에 대응하여, 제1 태그 항목을 수집하지 않도록 생성될 수 있다.
미리 지정된 그래픽 오브젝트는 제1 태그 항목에 대응하는 수집 명령을 나타내는 제1 그래픽 오브젝트, 제1 태그 항목에 연관되는 트리거 조건에 대한 실행 명령을 나타내는 제1-1 그래픽 오브젝트, 제1 태그 항목에 연관되는 변수에 대한 수집 명령을 나타내는 제1-2 그래픽 오브젝트를 포함할 수 있다. 제1-1 그래픽 오브젝트 및 제1-2 그래픽 오브젝트는 제1 그래픽 오브젝트의 하위 오브젝트일 수 있다.
구체적으로, 명령어 신호는 제1 그래픽 오브젝트에 대한 사용자 입력에 대응하여, 제1 태그 항목을 수집하도록 생성될 수 있다. 제1 태그 항목을 수집하도록 생성된 경우, 명령어 신호는 제1-1 그래픽 오브젝트에 대한 사용자 인터랙션에 대응하여 제1 트리거 항목을 선택적으로 수집하도록 생성될 수 있다.
예를 들어, 명령어 신호는 제1-1 그래픽 오브젝트에 대한 사용자 인터랙션에 대응하여, 제1 트리거 항목을 수집하도록 생성될 수 있다. 다른 예를 들어, 명령어 신호는 제1-1 그래픽 오브젝트에 대한 사용자 인터랙션에 대응하여, 제1 트리거 항목을 수집하지 않도록 생성될 수 있다.
또한, 제1 태그 항목을 수집하도록 생성된 경우, 명령어 신호는 제1-2 그래픽 오브젝트에 대한 사용자 인터랙션에 대응하여 제1 변수 항목을 선택적으로 수집하도록 생성될 수 있다.
예를 들어, 명령어 신호는 제1-2 그래픽 오브젝트에 대한 사용자 인터랙션에 대응하여, 제1 변수 항목을 수집하도록 생성될 수 있다. 다른 예를 들어, 명령어 신호는 제1-2 그래픽 오브젝트에 대한 사용자 인터랙션에 대응하여, 제1 변수 항목을 수집하지 않도록 생성될 수 있다.
사용자 단말(200)은 명령어 신호에 대응하는 API(application programming interface)의 존재 여부에 따라 명령어 신호에 대한 응답 신호를 결정할 수 있다(S140).
구체적으로, 사용자 단말(200)은 명령어 신호에 기초하여 적어도 하나의 태그 항목 중 태그를 수집하도록 결정된 제1 태그 항목이 존재하는 지 여부를 결정할 수 있다. 제1 태그 항목이 존재하는 경우, 사용자 단말(200)은 명령어 신호에 기초하여 제1 태그 항목에 포함된 제1 트리거 항목을 수집할 지 여부를 결정할 수 있다. 또한, 제1 태그 항목이 존재하는 경우, 사용자 단말(200)은 명령어 신호에 기초하여 제1 태그 항목에 포함된 제1 변수 항목을 수집할 지 여부를 결정할 수 있다.
예를 들어, 사용자 단말(200)은 명령어 신호에 기초하여 제1 태그 항목이 존재하는 경우, 제1 태그 항목에 관련된 항목들을 수집할 수 있다. 사용자 단말(200)은 제1 태그 항목과 관련된 버튼 클릭, 특정 키의 클릭, 특정 아이템의 클릭, 터치 또는 특정 아이템의 터치 등의 항목을 수집할 수 있다. 다른 예를 들어, 사용자 단말(200)은 명령어 신호에 기초하여 적어도 하나의 태그 항목 중 태그를 수집하도록 결정된 제1 태그 항목이 존재하지 않는 경우, 제1 태그 항목과 관련된 항목들을 수집하지 않을 수 있다.
사용자 단말(200)은 제1 트리거 항목을 수집하기로 결정된 경우, 제1 트리거 항목과 관련된 버튼 클릭, 특정 키의 클릭, 특정 아이템의 클릭, 터치 또는 특정 아이템의 터치 등의 동작의 발생에 따른 데이터를 수집할 수 있다.
사용자 단말(200)은 제1 변수 항목을 수집하기로 결정된 경우, 제1 변수 항목과 관련된 특정 클래스의 특정 데이터를 수집할 수 있다.
사용자 단말(200)은 명령어 신호를 파싱(parsing)하여 명령어를 생성할 수 있다. 파싱은 문장이 이루고 있는 구성 성분을 분해하고 분해된 성분의 위계 관계를 결정함으로써 명령어를 생성하는 동작일 수 있다. 사용자 단말(200)은 명령어 신호의 스크립트 내용을 해석하여, 실행을 위한 명령어로 변환할 수 있다. 사용자 단말(200)은 생성된 명령어를 실행하여 명령어 신호에 대응하는 API가 라이브러리 내에 존재하는 지 여부를 결정할 수 있다. 여기서, API는 사용자 단말(200)의 운영 체제에 대응하는 제2 프로그래밍 언어로 정의되는 인터페이스일 수 있다.
예를 들어, 사용자 단말(200)은 안드로이드 기반의 단말일 수 있다. 이 경우, API는 안드로이드 운영 체제에 대응하는 프로그래밍 언어로 정의된 인터페이스일 수 있다.
다른 예를 들어, 사용자 단말(200)은 iOS 기반의 단말일 수 있다. 이 경우, API는 iOS 운영 체제에 대응하는 프로그래밍 언어로 정의된 인터페이스일 수 있다.
본 개시의 몇몇 실시예에 따르면, 사용자 단말(200)은 명령어 신호에 대응하는 API가 라이브러리 내에 존재하는 지 여부에 기초하여, 응답 신호를 결정할 수 있다.
예를 들어, 사용자 단말(200)은 명령어 신호에 대응하는 API가 라이브러리 내에 존재하는 경우, API 내에 정의된 출력값을 응답 신호로서 전송할 수 있다.
다른 예를 들어, 사용자 단말(200)은 명령어 신호에 대응하는 API가 라이브러리 내에 존재하지 않는 경우, 오류 신호를 응답 신호로서 전송할 수 있다. 이하, 사용자 단말(200)이 응답 신호를 전송하는 방법이 일례는 도 3을 통해 설명한다.
사용자 단말(200)은 라이브러리에 정의된 주소로 응답 신호를 전송할 수 있다(S150). 여기서, 라이브러리에 정의된 주소는 서버(100)가 응답 신호를 수신할 수 있는 주소일 수 있다. 라이브러리에 정의된 주소는 서버(100)가 사용자 단말(200)에 의해 수집된 데이터를 수신할 수 있는 주소일 수 있다. 또는 라이브러리에 정의된 주소는 서버(100)의 사용자에 의해 지정된 데이터 수집을 위한 외부 서버일 수도 있다.
예를 들어, 명령어 신호는 deviceBrand, displaySize 및 view("Button").text 등과 관련된 스크립트를 포함할 수 있다.
deviceBrand와 관련된 스크립트에 대응하는 API는 사용자 단말(200)의 브랜드를 확인하는 API일 수 있다. 사용자 단말(200)은 상기 API를 통해 "google", "samsung" 또는 "apple"과 같은 브랜드를 반환할 수 있다.
displaySize와 관련된 스크립트에 대응하는 API는 사용자 단말(200)의 화면 해상도를 확인하는 API일 수 있다. 사용자 단말(200)은 상기 API를 통해 "1440", "3036"과 같은 값을 반환할 수 있다.
view("Button")와 관련된 스크립트에 대응하는 API는 view(인수)일 수 있다. 상기 API는 주어진 인수에 해당하는 UI를 검색하고, 해당 UI의 인스턴스(애플리케이션에서 해당 UI를 고유하게 식별할 수 있는 값)를 반환할 수 있다.
.text와 관련된 스크립트에 대응하는 API는 인스턴스,text일 수 있다. 상기 API는 해당 UI 인스턴스에서 사용자에게 보여지는 텍스트를 확인하여 반환할 수 있다.
사용자 단말(200)은 API들을 통해 반환된 값들을 응답 신호로서 라이브러리에 정의된 주소로 전송할 수 있다. 일 실시예에 따르면, 사용자 단말(200)은 반환된 값들을 사람이 이해할 수 있는 텍스트로 변환하여 서버(100)로 전송할 수 있다.
상술한 구성에 따르면, 사용자 단말(200)은 서버(100)로부터 명령어 신호를 수신할 수 있다. 사용자 단말은 명령어 신호와 관련된 데이터를 응답 신호로서 서버(100) 또는 라이브러리에 정의된 주소에 전송할 수 있다. 명령어 신호는 애플리케이션의 재빌드 또는 재배포를 요구하지 않는 신호일 수 있다. 이에 따라, 서버(100)와 관련되는 사용자는 사용자 단말(200)로부터 수집할 데이터를 실시간으로 편리하게 선택하고 추출할 수 있다.
한편, 본 개시의 몇몇 실시예에 따르면, 사용자 단말(200)은 명령어 신호에 대응하는 API가 라이브러리 내에 존재하는 지 여부에 기초하여, 응답 신호를 결정할 수 있다. 이하, 도 3을 통해 본 개시에 따른 사용자 단말(200)이 응답 신호를 전송하는 방법의 일례를 설명한다.
도 3은 본 개시의 몇몇 실시예에 따른 사용자 단말이 응답 신호를 전송하는 방법의 일례를 설명하기 위한 흐름도이다.
도 3을 참조하면, 사용자 단말(200)은 명령어 신호에 대응하는 API가 라이브러리 내에 존재하는지 여부를 결정할 수 있다.
명령어 신호에 대응하는 API가 라이브러리 내에 존재하는 경우(S151, Yes), 사용자 단말(200)은 API 내에 정의된 출력값을 응답 신호로서 라이브러리에 정의된 주소로 전송할 수 있다(S152).
예를 들어, 명령어 신호는 deviceBrand, displaySize 및 view("Button").text 등과 관련된 스크립트를 포함할 수 있다.
deviceBrand와 관련된 스크립트에 대응하는 API는 사용자 단말(200)의 브랜드를 확인하는 API일 수 있다. deviceBrand와 관련된 스크립트에 대응하는 API가 존재하는 경우, 사용자 단말(200)은 "google", "samsung" 또는 "apple"과 같은 브랜드를 출력값으로서 반환할 수 있다. 그리고, 사용자 단말(200)은 반환된 출력값을 응답 신호로서, 라이브러리에 정의된 주소로 전송할 수 있다.
명령어 신호에 대응하는 API가 라이브러리 내에 존재하지 않는 경우(S151, No), 사용자 단말(200)은 명령어 신호에 대한 오류 신호를 응답 신호로서 라이브러리에 정의된 주소로 전송할 수 있다(S153).
예를 들어, displaySize와 관련된 스크립트에 대응하는 API는 사용자 단말(200)의 화면 해상도를 확인하는 API일 수 있다. displaySize와 관련된 스크립트에 대응하는 API가 존재하지 않는 경우, 사용자 단말(200)은 오류 신호를 응답 신호로서 라이브러리에 정의된 주소로 전송할 수 있다.
상술한 구성에 따르면, 사용자 단말(200)은 서버(100)로부터 명령어 신호를 수신할 수 있다. 명령어 신호는 데이터를 수집할 항목을 추가하거나 또는 변경하기 위한 스크립트만 포함할 수 있다. 따라서, 명령어 신호는 사용자 단말(200)에 설치된 애플리케이션의 코드의 변수에서 데이터를 생성하거나 또는 변경하지는 않고 읽기만 할 수 있다. 이에 따라, 사용자 단말(200)은 서버(100)로부터 명령어 신호를 수신하더라도, 설치된 애플리케이션에 문제가 발생되지 않을 수 있다.
이하에서는 서버(100)가 사용자 단말(200)로부터 응답 신호를 수신하는 방법의 일례를 설명한다.
도 4는 본 개시의 몇몇 실시예에 따른 서버에 의해 수행되는 데이터 수집을 지원하는 방법의 일례를 설명하기 위한 흐름도이다.
도 4를 참조하면, 서버(100)는 사용자 단말(200)로부터 명령어 수신 준비에 대한 보고 신호를 수신할 수 있다(S210).
구체적으로, 사용자 단말(200)은 타깃 애플리케이션의 실행에 응답하여 미리 지정된 라이브러리에 접근할 수 있다. 미리 지정된 라이브러리에 접근된 경우, 사용자 단말(200)은 라이브러리에 정의된 주소로 명령어 수신 준비에 대한 보고 신호를 전송할 수 있다. 이에 따라, 서버(100)는 보고 신호를 수신할 수 있다.
서버(100)는 보고 신호에 대한 응답으로 제1 프로그래밍 언어로 정의된 명령어 신호를 전송할 수 있다(S220). 명령어 신호는 사용자 단말(200)에 의해 파싱되는 경우, 제1 프로그래밍 언어로 정의된 명령어 신호에 대응하는 API가 라이브러리 내에 존재하는 지를 확인하기 위한 명령어로 생성될 수 있다.
예를 들어, 서버(100)는 스크립트 언어로 작성되거나 또는 스크립트를 포함하는 명령어 신호를 사용자 단말(200)로 전송할 수 있다.
일 실시예에 따르면, 서버(100)는 사용자 인터랙션 입력에 기초하여 적어도 하나의 태그 항목 중 태그를 수집하도록 결정된 제1 태그 항목이 존재하는 지 여부를 결정할 수 있다. 제1 태그 항목이 존재하는 경우, 서버(100)는 사용자 인터랙션 입력에 기초하여 제1 태그 항목에 포함된 제1 트리거 항목을 수집할 지 여부를 결정할 수 있다. 또한, 서버(100)는 제1 태그 항목이 존재하는 경우, 사용자 인터랙션 입력에 기초하여 제1 태그 항목에 포함된 제1 변수 항목을 수집할 지 여부를 결정할 수 있다. 서버(100)는 판단 결과에 기초하여 명령어 신호를 생성할 수 있다.
예를 들어, 서버(100)는 제1 태그 항목, 제1 트리거 항목 및 제1 변수 항목을 수집하도록 명령어 신호를 생성할 수 있다. 다른 예를 들어, 서버(100)는 제1 태그 항목을 수집하도록 명령어 신호를 생성할 수 있다. 또 다른 예를 들어, 서버(100)는 제1 태그 항목 및 제1 트리거 항목을 수집하도록 명령어 신호를 생성할 수 있다. 또 다른 예를 들어, 서버(100)는 제1 태그 항목 및 제1 변수 항목을 수집하도록 명령어 신호를 생성할 수 있다. 또 다른 예를 들어, 서버(100)는 제1 태그 항목을 수집하지 않도록 명령어 신호를 생성할 수 있다. 이 경우, 제1 트리거 항목 및 제1 변수 항목도 수집되지 않도록 명령어 신호가 생성될 수 있다.
서버(100)는 사용자 단말(200)로부터 명령어 신호에 대한 응답 신호를 수신할 수 있다(S230).
예를 들어, 서버(100)는 명령어 신호에 대응하는 API가 사용자 단말(200)의 라이브러리 내에 존재하는 경우, 사용자 단말(200)이 명령어 신호에 대응하여 반환한 출력값을 응답 신호로서 수신할 수 있다.
다른 예를 들어, 서버(100)는 명령어 신호에 대응하는 API가 사용자 단말(200)의 라이브러리 내에 존재하지 않는 경우, 명령어 신호에 대한 오류 신호를 응답 신호로서 수신할 수 있다.
도 5는 본 개시의 몇몇 실시예에 따른 서버 및 사용자 단말에서 수행되는 데이터 수집을 지원하는 방법의 일례를 설명하기 위한 도면이다.
도 5를 참조하면, 개발사는 앱을 기획할 수 있다. 앱은 애플리케이션의 약자일 수 있다. 개발사는 기획에 따라 프로그램을 개발할 수 있다. 개발사는 앱 시작 시 원격 스크립트 시스템을 시작하는 코드를 SDK로서 프로그램 내에 추가할 수 있다. 개발사는 앱을 빌드할 수 있다. 앱이 빌드 되는 경우, 앱에 대한 모든 기능이 테스트될 수 있다. 개발사는 테스트 결과에 기초하여 버그가 존재하는 경우, 버그를 수정할 수 있다. 그리고, 개발사는 앱을 배포할 수 있다.
앱이 배포됨에 따라, 사용자 단말(200)은 운영 체제에서 제공하는 마켓을 통해 앱을 설치하거나 또는 패치할 수 있다. 사용자 단말(200)은 사용자로부터의 입력에 따라 앱을 사용할 수 있다. 개발사는 앱의 사용에 따른 데이터를 수신하여 앱을 검토할 수 있다.
개발사는 추가할 수집 내용을 결정할 수 있다. 종래에는 사용자 단말(200)로부터 수집할 내용을 추가하기로 결정하는 경우, 프로그램의 개발(또는 프로그램의 수정) 단계로 돌아가, 프로그램을 재구축해야 했다. 그리고, 앱 빌드, 테스트, 버그 수정 및 배포 과정을 다시 거쳐야 했다. 반면, 본 개시에 따른 데이터 수집을 지원하는 방법에 따르면, 개발사는 원격 설정에 수집할 스크립트 코드 추가함으로써, 편리하게 수집할 내용을 추가할 수 있다.
구체적으로, 개발사는 추가할 수집 내용이 결정된 경우, 원격 설정에 수집할 스크립트 코드를 추가할 수 있다. 개발사는 간이 수집을 시험할 수 있다. 애플리케이션 자체에 대한 변경 사항이 없고, 원격 설정 스크립트의 값을 얻기만 하기 때문에, 간이 수집 시험은 신속하게 수행될 수 있다. 개발사는 원격 설정에서 스크립트 코드를 적용할 수 있다. 사용자 단말(200)은 애플리케이션 실행 시 원격 설정을 받을 수 있다. 여기서, 원격 설정을 받는다는 의미는 추가할 수집 내용이 스크립트 코드로서 적용됨을 의미할 수 있다. 이에 따라, 사용자 단말(200)은 원격 설정에 추가한 데이터를 수집할 수 있다. 그리고, 사용자 단말(200)은 수집된 데이터를 개발사로 전송할 수 있다. 개발사는 추가된 데이터 수집 내용을 검토할 수 있다.
도 6은 본 개시의 몇몇 실시예에 따른 적어도 하나의 태그 항목의 일례를 설명하기 위한 도면이다. 도 6은 서버(100)에서 제공되는 사용자 인터페이스를 나타내는 것이 아닌 적어도 하나의 태그 항목의 일례를 설명하기 위한 도면일 수 있다.
도 6을 참조하면, 적어도 하나의 태그 항목은 제1 태그 항목(410) 및 제2 태그 항목(420)을 포함할 수 있다.
제1 태그 항목(410)은 제1 트리거 항목(411) 및 제1 변수 항목(412)을 포함할 수 있다. 제1 태그 항목(410)은 사용자 인터랙션 입력에 기초하여 선택적으로 수집될 수 있다. 제1 태그 항목(410)이 수집되는 것으로 결정된 경우, 제1 트리거 항목(411) 및 제1 변수 항목(412)은 사용자 인터랙션 입력에 기초하여 선택적으로 수집될 수 있다.
제2 태그 항목(420)은 제2 트리거 항목(421) 및 제2 변수 항목(422)을 포함할 수 있다. 제2 태그 항목(420)은 사용자 인터랙션 입력에 기초하여 선택적으로 수집될 수 있다. 제2 태그 항목(420)이 수집되는 것으로 결정된 경우, 제2 트리거 항목(421) 및 제2 변수 항목(422)은 사용자 인터랙션 입력에 기초하여 선택적으로 수집될 수 있다.
본 개시의 몇몇 실시예에 따르면, 제1 태그 항목(410)은 기 정의된 태그 항목을 이용하는 기본 태그 항목일 수 있다. 제2 태그 항목(420)은 사용자 작성 태그 항목일 수 있다. 다시 말해, 적어도 하나의 태그 항목은 기본 태그 항목 및 사용자 작성 태그 항목 중 적어도 하나를 포함할 수 있다.
기본 태그 항목은 서버(100)의 개발자 등에 의해 미리 작성된 원격 스크립트가 내장된 항목일 수 있다. 사용자 작성 태그 항목은 전술한 데이터 수집을 지원하는 방법의 실행을 위한 프로그램을 구매한 사용자에 의해 원격 스크립트가 작성된 항목일 수 있다.
서로 유사한 종류의 애플리케이션들은 애플리케이션을 개발하는 회사에서 원하는 데이터 수집 내용 또한 유사한 경우가 많을 수 있다. 따라서, 서버(100)는 각 개발사의 통상적인 요구사항을 기반하여, 기본 태그 항목을 제공할 수 있다. 그러나, 요구 사항이 유사할 수는 있지만, 모든 개발에서의 요구 사항이 동일하지는 않을 수 있다. 따라서, 사용자는 자신에게 맞는 사용자 작성 태그 항목을 생성할 수 있다.
제시된 실시예들에 대한 설명은 임의의 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시를 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 개시의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 개시의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 개시는 여기에 제시된 실시예들로 한정되는 것이 아니라, 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.

Claims (16)

  1. 적어도 하나의 프로세서를 포함하는 사용자 단말에 대한 데이터 수집을 지원하는 방법으로서,
    타깃 애플리케이션의 실행에 응답하여 미리 지정된 라이브러리에 접근하는 단계;
    상기 라이브러리에 정의된 주소로 명령어 수신 준비에 대한 보고 신호를 전송하는 단계;
    제1 프로그래밍 언어로 정의된 명령어 신호를 수신하는 단계;
    상기 명령어 신호에 대응하는 API(application programming interface)의 존재 여부에 따라 상기 명령어 신호에 대한 응답 신호를 결정하는 단계; 및
    상기 라이브러리에 정의된 주소로 상기 응답 신호를 전송하는 단계;
    를 포함하는,
    데이터 수집을 지원하는 방법.
  2. 제1 항에 있어서,
    상기 명령어 신호에 대응하는 API는,
    상기 사용자 단말의 운영 체제에 대응하는 제2 프로그래밍 언어로 정의되는,
    데이터 수집을 지원하는 방법.
  3. 제1 항에 있어서,
    상기 응답 신호를 결정하는 단계는,
    상기 명령어 신호에 대응하는 API가 상기 라이브러리 내에 존재하는 경우, 상기 API 내에 정의된 출력값을 상기 응답 신호로서 상기 라이브러리에 정의된 주소로 전송하는 단계; 또는
    상기 명령어 신호에 대응하는 API가 상기 라이브러리 내에 존재하지 않는 경우, 상기 명령어 신호에 대한 오류 신호를 상기 응답 신호로서 상기 라이브러리에 정의된 주소로 전송하는 단계;
    를 포함하는,
    데이터 수집을 지원하는 방법.
  4. 제1 항에 있어서,
    상기 명령어 신호에 대응하는 API(application programming interface)의 존재 여부에 따라 상기 명령어 신호에 대한 응답 신호를 결정하는 단계는,
    상기 명령어 신호를 파싱하여 명령어를 생성하는 단계; 및
    생성된 명령어를 실행하여 상기 명령어 신호에 대응하는 API가 상기 라이브러리 내에 존재하는 지 여부를 결정하는 단계;
    를 포함하는,
    데이터 수집을 지원하는 방법.
  5. 제1 항에 있어서,
    상기 명령어 신호는,
    수집할 태그를 지정하는 적어도 하나의 태그 항목을 포함하고,
    상기 적어도 하나의 태그 항목 각각은,
    상기 태그 항목이 실행되는 조건이 설정되는 트리거 항목 및 수집할 데이터를 지정하는 변수 항목을 포함하는,
    데이터 수집을 지원하는 방법.
  6. 제5 항에 있어서,
    상기 명령어 신호는,
    미리 지정된 그래픽 오브젝트에 대응하는 사용자 인터랙션 입력에 기초하여 상기 적어도 하나의 태그 항목 각각이 선택적으로 수집되도록 생성되고,
    상기 미리 지정된 그래픽 오브젝트는 제1 태그 항목에 대응하는 수집 명령을 나타내는 제1 그래픽 오브젝트, 상기 제1 태그 항목에 연관되는 트리거 조건에 대한 실행 명령을 나타내는 제1-1 그래픽 오브젝트, 상기 제1 태그 항목에 연관되는 변수에 대한 수집 명령을 나타내는 제1-2 그래픽 오브젝트를 포함하는,
    데이터 수집을 지원하는 방법.
  7. 제6 항에 있어서,
    상기 명령어 신호에 대응하는 API(application programming interface)의 존재 여부에 따라 상기 명령어 신호에 대한 응답 신호를 결정하는 단계는,
    상기 명령어 신호에 기초하여 상기 적어도 하나의 태그 항목 중 태그를 수집하도록 결정된 제1 태그 항목이 존재하는 지 여부를 결정하는 단계;
    상기 제1 태그 항목이 존재하는 경우, 상기 명령어 신호에 기초하여 상기 제1 태그 항목에 포함된 제1 트리거 항목을 수집할 지 여부를 결정하는 단계; 및
    상기 제1 태그 항목이 존재하는 경우, 상기 명령어 신호에 기초하여 상기 제1 태그 항목에 포함된 제1 변수 항목 각각을 수집할 지 여부를 결정하는 단계;
    를 포함하는,
    데이터 수집을 지원하는 방법.
  8. 제5 항에 있어서,
    상기 적어도 하나의 태그 항목은,
    기 정의된 태그 항목을 이용하는 기본 태그 항목 및 사용자 작성 태그 항목 중 적어도 하나를 포함하는,
    데이터 수집을 지원하는 방법.
  9. 적어도 하나의 프로세서를 포함하는 서버에 대한 데이터 수집을 지원하는 방법으로서,
    사용자 단말로부터 명령어 수신 준비에 대한 보고 신호를 수신하는 단계;
    상기 보고 신호에 대한 응답으로 제1 프로그래밍 언어로 정의된 명령어 신호를 전송하는 단계; 및
    상기 사용자 단말로부터 상기 명령어 신호에 대한 응답 신호를 수신하는 단계;
    를 포함하고,
    상기 사용자 단말로부터 상기 명령어 신호에 대한 응답 신호를 수신하는 단계는,
    상기 명령어 신호에 대응하는 API가 상기 사용자 단말의 라이브러리 내에 존재하는 경우, 상기 API 내에 정의된 출력값을 상기 응답 신호로서 수신하는 단계; 또는
    상기 명령어 신호에 대응하는 API가 상기 라이브러리 내에 존재하지 않는 경우, 상기 명령어 신호에 응답으로 오류 신호를 수신하는 단계;
    를 포함하는,
    데이터 수집을 지원하는 방법.
  10. 삭제
  11. 제9 항에 있어서,
    상기 명령어 신호에 대응하는 API는,
    상기 사용자 단말의 운영 체제에 대응하는 제2 프로그래밍 언어로 정의되는,
    데이터 수집을 지원하는 방법.
  12. 제9 항에 있어서,
    상기 명령어 신호는,
    상기 사용자 단말에 의해 파싱되는 경우, 상기 제1 프로그래밍 언어로 정의된 명령어 신호에 대응하는 API가 상기 라이브러리 내에 존재하는 지를 확인하기 위한 명령어로 생성되는,
    데이터 수집을 지원하는 방법.
  13. 제9 항에 있어서,
    상기 명령어 신호는,
    수집할 태그를 지정하는 적어도 하나의 태그 항목을 포함하고,
    상기 적어도 하나의 태그 항목 각각은,
    상기 태그 항목이 실행되는 조건이 설정되는 트리거 항목 및 수집할 데이터를 지정하는 변수 항목을 포함하는,
    데이터 수집을 지원하는 방법.
  14. 제13 항에 있어서,
    상기 명령어 신호는,
    미리 지정된 그래픽 오브젝트에 대응하는 사용자 인터랙션 입력에 기초하여 상기 적어도 하나의 태그 항목 각각이 선택적으로 수집되도록 생성되고,
    상기 미리 지정된 그래픽 오브젝트는 제1 태그 항목에 대응하는 수집 명령을 나타내는 제1 그래픽 오브젝트, 상기 제1 태그 항목에 연관되는 트리거 조건에 대한 실행 명령을 나타내는 제1-1 그래픽 오브젝트, 상기 제1 태그에 연관되는 변수에 대한 수집 명령을 나타내는 제1-2 그래픽 오브젝트를 포함하는,
    데이터 수집을 지원하는 방법.
  15. 제14 항에 있어서,
    상기 보고 신호에 대한 응답으로 제1 프로그래밍 언어로 정의된 명령어 신호를 전송하는 단계는,
    상기 사용자 인터랙션 입력에 기초하여 상기 적어도 하나의 태그 항목 중 태그를 수집하도록 결정된 제1 태그 항목이 존재하는 지 여부를 결정하는 단계;
    상기 제1 태그 항목이 존재하는 경우, 상기 사용자 인터랙션 입력에 기초하여 상기 제1 태그 항목에 포함된 제1 트리거 항목을 수집할 지 여부를 결정하는 단계; 및
    상기 제1 태그 항목이 존재하는 경우, 상기 사용자 인터랙션 입력에 기초하여 상기 제1 태그 항목에 포함된 제1 변수 항목 각각을 수집할 지 여부를 결정하는 단계;
    를 포함하는,
    데이터 수집을 지원하는 방법.
  16. 제15 항에 있어서,
    상기 적어도 하나의 태그 항목은,
    기 정의된 태그 항목을 이용하는 기본 태그 항목 및 사용자 작성 태그 항목 중 적어도 하나를 포함하는,
    데이터 수집을 지원하는 방법.
KR1020230149372A 2023-11-01 2023-11-01 데이터 수집을 지원하는 방법 KR102637045B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230149372A KR102637045B1 (ko) 2023-11-01 2023-11-01 데이터 수집을 지원하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230149372A KR102637045B1 (ko) 2023-11-01 2023-11-01 데이터 수집을 지원하는 방법

Publications (1)

Publication Number Publication Date
KR102637045B1 true KR102637045B1 (ko) 2024-02-15

Family

ID=89899059

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230149372A KR102637045B1 (ko) 2023-11-01 2023-11-01 데이터 수집을 지원하는 방법

Country Status (1)

Country Link
KR (1) KR102637045B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130129184A (ko) * 2010-08-25 2013-11-27 룩아웃, 인코포레이티드 서버 결합된 멀웨어 방지를 위한 시스템 및 방법
KR101584276B1 (ko) 2014-09-17 2016-01-12 김용범 어플리케이션 제작 서비스 제공 방법
KR102277870B1 (ko) * 2020-02-03 2021-07-14 이재영 랜덤 스크립트를 이용한 자동 로그인 방지 방법 및 이를 수행하기 위한 서버

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130129184A (ko) * 2010-08-25 2013-11-27 룩아웃, 인코포레이티드 서버 결합된 멀웨어 방지를 위한 시스템 및 방법
KR101584276B1 (ko) 2014-09-17 2016-01-12 김용범 어플리케이션 제작 서비스 제공 방법
KR102277870B1 (ko) * 2020-02-03 2021-07-14 이재영 랜덤 스크립트를 이용한 자동 로그인 방지 방법 및 이를 수행하기 위한 서버

Similar Documents

Publication Publication Date Title
US10419546B2 (en) Migration assessment for cloud computing platforms
US20190310834A1 (en) Determining based on static compiler analysis that execution of compiler code would result in unacceptable program behavior
US10216554B2 (en) API notebook tool
US9852015B2 (en) Automatic discovery of a JavaScript API
US7996816B2 (en) Method and apparatus for dynamically binding service component implementations for specific unit test cases
US20110271184A1 (en) Client application and web page integration
US20170371631A1 (en) Globalization template manager for automated globalization enablement on development operations
US20170371687A1 (en) Automated globalization enablement on development operations
US10678572B2 (en) Framework for automated globalization enablement on development operations
US11593103B1 (en) Anti-pattern detection in extraction and deployment of a microservice
Chen et al. A comparative study of smartphone and smartwatch apps
US20110271248A1 (en) Converting controls into source code
CN114398673A (zh) 应用程序的合规检测方法、装置、存储介质与电子设备
EP3506136B1 (en) Detecting stack cookie utilization in a binary software component using binary static analysis
KR102637045B1 (ko) 데이터 수집을 지원하는 방법
KR102651294B1 (ko) 화면 구성 요소에 대한 정보 수집을 지원하는 방법
JP6818568B2 (ja) 通信装置、通信仕様差分抽出方法及び通信仕様差分抽出プログラム
US20200401379A1 (en) Automated microservice creation based on user interaction
US11645193B2 (en) Heterogeneous services for enabling collaborative logic design and debug in aspect oriented hardware designing
KR102644170B1 (ko) 화면 구성 요소에 대한 선택과 좌표 정보 수집을 지원하는 방법
Giretti Creating an ASP. NET Core gRPC Application
Lee et al. Madusa: mobile application demo generation based on usage scenarios

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant