New! View global litigation for patent families

KR101462062B1 - Apparatus for Providing Content Aggregation, Computer-Readable Recording Medium with Program Therefore - Google Patents

Apparatus for Providing Content Aggregation, Computer-Readable Recording Medium with Program Therefore Download PDF

Info

Publication number
KR101462062B1
KR101462062B1 KR20130050140A KR20130050140A KR101462062B1 KR 101462062 B1 KR101462062 B1 KR 101462062B1 KR 20130050140 A KR20130050140 A KR 20130050140A KR 20130050140 A KR20130050140 A KR 20130050140A KR 101462062 B1 KR101462062 B1 KR 101462062B1
Authority
KR
Grant status
Grant
Patent type
Prior art keywords
readable
providing
content
medium
aggregation
Prior art date
Application number
KR20130050140A
Other languages
Korean (ko)
Other versions
KR20140131153A (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
Grant date

Links

Images

Abstract

컨텐츠 취합 장치와 그를 위한 컴퓨터로 읽을 수 있는 기록매체를 개시한다. It discloses a recording medium which can be read in the device and the computer collects content therefor.
애플리케이션 개발자들이 개발한 컨텐츠의 소스 코드와 무관하게 동적으로 코드를 주입함으로써 해당 컨텐츠를 특정 사업자를 위해서만 제공할 수 있도록 하는 컨텐츠 취합 장치와 그를 위한 컴퓨터로 읽을 수 있는 기록매체를 제공한다. It provides a recording medium that can be read by content aggregation device and a computer for him to that content by injecting code into dynamically independent of the source code of the application developers to develop content to provide only for certain operators.

Description

컨텐츠 취합 장치와 그를 위한 컴퓨터로 읽을 수 있는 기록매체{Apparatus for Providing Content Aggregation, Computer-Readable Recording Medium with Program Therefore} Readable recording medium content aggregation device and the computer for him {Apparatus for Providing Content Aggregation, Computer-Readable Recording Medium with Program Therefore}

본 실시예는 컨텐츠 취합 장치와 그를 위한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다. The present embodiment relates to a recording medium which can be read in the device and the computer collects content therefor. 더욱 상세하게는 애플리케이션 개발자들이 개발한 컨텐츠의 소스 코드와 무관하게 동적으로 코드를 주입함으로써 해당 컨텐츠를 특정 사업자를 위해서만 제공할 수 있도록 하는 컨텐츠 취합 장치와 그를 위한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다. More particularly, the present invention relates to a recording medium that can read its contents to a computer for content aggregation devices and him that to provide only certain operators by introducing a dynamic code, irrespective of the source code of content developed by application developers .

이하에 기술되는 내용은 단순히 본 실시예와 관련되는 배경 정보만을 제공할 뿐 종래기술을 구성하는 것이 아님을 밝혀둔다. The contents in the following simply as to provide only background information relating to this embodiment puts out that not constituting prior art.

최근 들어, 컴퓨터, 전자, 통신 기술이 비약적으로 발전함에 따라 무선통신망(Wireless Network)을 이용한 다양한 무선데이터 서비스가 제공되고 있다. Recently, various wireless data services using a wireless network (Wireless Network) are provided as computer, electronic and communication technology develops by leaps and bounds. 이에 따라, 무선통신망을 이용한 이동통신 시스템에서 제공하는 서비스는 음성 서비스뿐만 아니라, 양질의 컨텐츠를 제공하는 서비스 형태로 발전해 가고 있는 추세이다. Thus, the services provided by the mobile communication system using a wireless communication network is a trend going developed as a service to provide a good quality of the contents as well as the voice service.

즉, 양질의 컨텐츠는 컨텐츠 사업자에게 필수적으로 필요하다. In other words, quality content is essential to require content providers. 이러한 컨텐츠 사업의 성공을 위해서는 양질의 컨텐츠를 확보하고 독점으로 제공하는 것이 어느 때보다도 중요하다. In order to succeed in this business content is more important than ever to ensure that the quality of content and exclusive offers. 하지만 사업자의 자체 개발만으로 양질의 컨텐츠를 확보하고 공급하기는 어려운 실정이다. But only to ensure its own development of the business of supplying quality content is a difficult situation.

본 실시예는 애플리케이션 개발자들이 개발한 컨텐츠의 소스 코드와 무관하게 동적으로 코드를 주입함으로써 해당 컨텐츠를 특정 사업자를 위해서만 제공할 수 있도록 하는 컨텐츠 취합 장치와 그를 위한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 주된 목적이 있다. This embodiment is to provide a recording medium that can read its contents to the computer for him and content aggregation device to provide only certain operators by introducing a dynamic code, irrespective of the source code of content developed by application developers to which the main objective.

본 실시예의 일 측면에 의하면, 데이터 처리 기기에, 소정의 프로그래밍 언어(Programming Language)로 생성되어 실행 가능한 프로그램의 소스 코드(Source Code)를 입력받는 소스 코드 입력 과정; According to one aspect of this embodiment example, the data-processing device, a predetermined programming language (Programming Language) source code for generating executable programs to be (Source Code) receiving the input source code input process; 상기 소스 코드에서 최초 실행 함수로 제공되는 기 설정된 함수명을 지정하여 상기 최초 실행 함수 내에 특정 서비스(Specific Service) 전용으로 실행되도록 하는 추가 소스 코드의 코드 삽입 지점을 설정하는 컨텐츠 취합 과정; Additional content aggregation process of setting up the code insertion point in the source code to be executed by specifying a prescribed function name provided to the first execution functions in the source code to a particular service (Specific Service) only in the first run function; 및 상기 소스 코드를 기 설정된 프로그램 코드로 변환할 때 상기 코드 삽입 지점에 상기 추가 소스 코드를 삽입하는 변환 과정을 포함하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다. And to provide a computer readable recording medium storing a program comprising: a conversion step of inserting the additional source code to the code insertion point, when converting a program preset code to the source code.

또한, 본 실시에의 다른 측면에 의하면, 데이터 처리 기기에, 소스 코드에서 최초 실행 함수로 제공되는 기 설정된 함수명을 지정하는 선언(Declaration) 과정; Further, according to another aspect of the present embodiment, the declaration (Declaration) specifying the predetermined function name provided to the data-processing device, in the source code by the first process execution function; 삽입 되어질 부분에서 실행되는 코드인 추가 소스 코드의 코드 삽입 지점을 설정하는 코드 삽입 지점 설정 과정; For setting the code insertion point of the additional source code is code that runs on the part to be inserted into the code insertion point in the setup process; 상기 추가 소스 코드가 실행되는 지점을 설정하는 실행 지점 설정 과정; Running point setting process for setting the point at which the additional source code execution; 및 상기 추가 소스 코드를 구현하는 구현 과정을 포함하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다. And to provide a computer readable recording medium storing a program comprising the implementation of the process of implementing the additional source code.

또한, 본 실시에의 다른 측면에 의하면, 소정의 프로그래밍 언어로 생성되어 실행 가능한 프로그램의 소스 코드를 입력받는 소스 코드 입력부; Further, according to another aspect of the present embodiment, the source code input section receives is generated in a predetermined programming language inputs the source code of the executable program; 상기 소스 코드에서 최초 실행 함수로 제공되는 기 설정된 함수명을 지정하여 상기 최초 실행 함수 내에 특정 서비스 전용으로 실행되도록 하는 추가 소스 코드의 코드 삽입 지점을 설정하는 컨텐츠 취합부; Additional content unit collected to set the code insertion point in the source code by specifying a pre-set function name provided to the first execution functions in the source code to run on a specific service only in the first run function; 및 상기 소스 코드를 기 설정된 프로그램 코드로 변환할 때 상기 코드 삽입 지점에 상기 추가 소스 코드를 삽입하는 변환부를 포함하는 것을 특징으로 하는 컨텐츠 취합 장치를 제공한다. And it provides a content collecting device characterized in that it comprises the conversion program code preset for the source code conversion unit for inserting the additional source code to the code insertion point.

이상에서 설명한 바와 같이 본 실시예에 의하면, 애플리케이션 개발자들이 개발한 컨텐츠의 소스 코드와 무관하게 동적으로 코드를 주입함으로써 해당 컨텐츠를 특정 사업자를 위해서만 제공할 수 있도록 하는 효과가 있다. According to this embodiment, as described above, the content by injecting a dynamic code, regardless of the source code of the application developers to develop content has the effect to be provided only for a specific operator. 또한, 본 실시예에 의하면, 컨텐츠 취합할 때 원본 컨텐츠를 소스 코드 레벨에서 일부 변경해야 하는데, 관점 지향 프로그래밍을 이용하여 양질의 컨텐츠를 특정 서비스 전용으로 특화해주는 코드 변경을 자동화할 수 있는 효과가 있다. In addition, according to this embodiment, for original content to aggregate content should be some changes in the source code level, it is capable of automating the code changes that characterize the high-quality content using aspect-oriented programming in a particular service only effective . 또한, 본 실시예에 의하면, 컨텐츠 취합에 이용되는 관점 지향 프로그래밍을 통해 더 넓은 영역에서 이용할 수 있는 범용화의 견인차가 되는 효과가 있다. In addition, according to this embodiment, there is an effect that the driving force of the generalized that can be used in a wider region through the aspect-oriented programming is used to aggregate content.

도 1은 컨텐츠 취합과 문제 영역을 나타낸 도면이다. 1 is a view showing the contents collected and problem areas.
도 2는 관점 지향 프로그래밍의 메커니즘을 나타낸 도면이다. 2 is a view showing a mechanism for aspect-oriented programming.
도 3은 애플리케이션의 작성 과정을 나타낸 도면이다. Figure 3 is a view showing the process of creating the application.
도 4는 본 실시예에 따른 컨텐츠 취합 방법을 설명하기 위한 순서도이다. 4 is a flowchart illustrating a content aggregation method according to the present embodiment.
도 5는 본 실시예에 따른 컨텐츠 취합 장치를 개략적으로 나타낸 블럭 구성도이다. Figure 5 is a block diagram showing a content collecting device of the embodiment schematically illustrated Fig.
도 6은 본 실시예에 따른 컨텐츠 취합용 소스 코드를 나타낸 도면이다. Figure 6 is a view of the source code for the content collected in the present embodiment.
도 7은 본 실시예에 따른 애플리케이션 활동성의 라이프 사이클을 나타낸 도면이다. 7 is a diagram showing the life cycle of the active application according to the embodiment.
도 8은 본 실시예에 따른 샘플 프로젝트 실행 결과를 나타낸 도면이다. 8 is a view showing a sample project execution results according to this embodiment.

이하, 본 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. With reference to the accompanying drawings, the present embodiment will be described in detail.

도 1은 컨텐츠 취합과 문제 영역을 나타낸 도면이다. 1 is a view showing the contents collected and problem areas.

컨텐츠 취합은 양질의 컨텐츠를 아웃소싱하는 프로세스이다. Content aggregation is the process of outsourcing quality content. 컨텐츠를 취합할 때, 소스 코드 레벨에서의 원본 컨텐츠의 일부 변경이 필요하다. When you collect the content, there is a need for some changes in the original content at the source code level. 소스 코드의 해당 지점에 추가 로직(Logic) 작업을 자동 삽입하는 관점 지향 프로그래밍으로써 그 변경 작업에서 해방 또는 작업을 생략할 수 있다. By aspect-oriented programming to automatically insert additional logic (Logic) working on the point in the source code, it is possible to omit the liberation or action from that change. 이러한, 관점 지향 프로그래밍을 통하면 컨텐츠 공급자의 코딩 지원 없이도 컨텐츠 취합 장치(500)로 쉽게 변경을 수행할 수 있다. These, and you can easily make changes without coding Support for content providers to content aggregation device (500) through aspect-oriented programming. 즉, 애플리케이션 개발자에 의해 개발된 컨텐츠를 가져 오는 것을 의미하는 컨텐츠 취합으로, 충분한 양의 컨텐츠를 확보할 수 있다. In other words, the content aggregation means to bring the content developed by application developers, it is possible to secure a sufficient amount of content. 이러한, 컨텐츠 취합의 전형적인 절차는 수집, 관리, 취합(통합, 집계), 활성화(Activate) 및 리포트이다. This is the typical procedure is to collect, manage, aggregate (integration, aggregation), activated (Activate) collect and report content.

전술한, 과정들은 도 1에 도시되어 있다. Above, the processes are shown in FIG. 즉, 도 1의 상단에는 컨텐츠 취합(Content Aggregation) 프로세서가 도시되어 있고, 도 1의 하단에는 문제 영역(Problem Domain)이 도시되어 있다. That is, there is the top of the first content has shown that aggregation (Aggregation Content) processor, and is also shown at the bottom of the first region, the problem (Problem Domain). 컨텐츠 취합 프로세서는 '컨텐츠 제공자'와 '서비스 제공자' 간에 '1. Content aggregation processor, one between "content providers" and "service providers". 컨텐츠 수집'이 이루어지고, '서비스 제공자'에서 '2. Content Collection 'is made' 'in the' service provider 2. 컨텐츠 관리'가 이루어지고, '서비스 제공자'와 '채널 파트너' 간에 '3. Content Management 'between' is made and 'service provider' and 'channel partners 3. 컨텐츠 통합(집계)'이 이루어지고, '채널 파트너'와 '종단 유저'간에 '4. Content integration (counting) "is being made, '4 channel partners' and' end-user 'between'. 컨텐츠 활성화'가 이루어지고, '종단 유저'에서 '채널 파트너'로 ' 5. 리포트'가 이루어진다. Activate content 'is made' 'to' end-user 'in the' Channel Partner 5. Reports are made.

한편, 문제 영역에서 '애플리케이션 개발자'는 컨텐츠 취합 프로세서의 '컨텐츠 제공자'에 해당하고, '애플리케이션 마켓'은 컨텐츠 취합 프로세서의 '서비스 제공자'에 해당하고, '새로운 서비스'는 컨텐츠 취합 프로세서의 '채널 파트너'에 해당하고, '서비스 가입자'는 컨텐츠 취합 프로세서의 '종단 유저'에 해당한다. Meanwhile, the "application developer" is the "Apps Marketplace" that, and the 'content providers' content aggregation processor in the problem area is that of content aggregation processor 'service provider' and the 'new services' channel of content aggregation processor " partners' corresponds to, and "subscriber" is a content aggregation processor "corresponds to the end user.

컨텐츠 취합 프로세서 중 '3. Content aggregation of processors' 3. 컨텐츠 통합' 단계에서 '서비스 제공자는' 컨텐츠를 관리하고, 컨텐츠 공급자를 원작자로, 채널 파트너를 출판사로 간주하여 이 둘 사이에서 중개자 역할을 한다. 'In Step' content integration service provider, content management, and content providers to author, considered by the channel partner to publishers and acts as an intermediary between the two. 이것이 바로 취합 프로세스이다. This is the collection process. 컨텐츠는 '3. Content "3. 컨텐츠 통합' 단계에서 채널 파트너의 (남과)다른 서비스에 맞게 맞춤화(커스터마이징)되어야 한다. Channel partners in the content integration 'steps (South) to be customized (customizing) for different services. 맞춤화는 소스 코드 수준에서 원본 컨텐츠의 변경이 이루어져야 한다는 것을 의미한다. Customization means that the changes made in the original content at the source code level. 채널 파트너는 컨텐츠 작성자가 아니기 때문에, 아무리 작은 양이라고 하여도 소스 코드를 변경하기가 어렵다. Channel partners also difficult to change the source code to that, no matter how small the amount, because it is not a content creator.

예컨대, 본 실시예에서는 새로운 셋톱 박스(STB)를 개발하는 경우 주요 컨텐츠는 IPTV(Internet Protocol TeleVision) 애플리케이션이지만, 매력적인 제품이 되기 위하여 다른 애플리케이션도 준비해야 한다. For example, in this embodiment, but the main content IPTV (Internet Protocol TeleVision) applications If you develop a new set-top box (STB), and other applications should also be prepared to be an attractive product. 즉, 사업자에서 운영하는 애플리케이션 스토어를 통해 수집에 좋은 애플리케이션을 많이 찾을 수 있다. That is, you can find a lot of good applications to collect through application stores run by operators. 이러한, 애플리케이션 스토어 안에서 개발자에 연결되어있는 생태계도 구축되어 있다. This can also build ecosystems that are connected to the developer in the application store. 컨텐츠 취합을 통해 좋은 애플리케이션들의 번들을 신규 서비스로 제공할 수 있다. Through content aggregation it can provide a bundle of great applications with new services. 하지만, 컨텐츠 제공자와 협상할 때 문제가 발생할 수 있다. However, you may encounter problems when negotiating with content providers. 본 실시예에서는 특정 서비스 전용으로 원본 애플리케이션을 소스 코드 수준에서 변경하도록 요구하는데, 액세스하는 장치가 해당 사업자에 등록 및 가입 상태에 있는지 여부를 확인하도록 변경되어야 한다. In this embodiment, it should be modified to determine whether to request changes to the original application to a particular service only at the source code level, access device registration and membership status to the carriers. 그러나, 컨텐츠 제공 업체로서, 개발자는 일반적으로 자신의 소스 코드를 어떤 식으로든 변경하기를 원치 않는다. However, as content providers, developers typically do not want to change in any way its source code. 따라서, 본 실시예에서는 이러한 문제로 컨텐츠의 취합에 어려움이 발생하지 않도록 개발자가 개발한 애플리케이션의 소스 코드와 무관하게 동적 코드 주입하고자 하는 것이다. Thus, in this embodiment, it is to make these problems regardless of the source code of the application developers to prevent the trouble does not occur in the aggregation of the dynamic content code to injection.

도 1에서의 문제 영역에서 사업자는 '서비스 공급자' 및 '채널 파트너'이다. It is also operators 'service provider' and 'channel partners' problems in the region in the first. 이때, 새로운 서비스를 위해 외부의 컨텐츠를 취합하는 것은 비용 측면에서 의미가 있다. At this point, it is to aggregate external content for the new service is significant in terms of cost. 또한, 초기 투자의 위험을 완화하고 에코 시스템(Eco System)을 구축하는 데 기여한다. In addition, to mitigate the risk of the initial investment and contribute to building an ecosystem (Eco System). 이는 시장 규모 확대에 가장 실용적이다. This is the most practical for market expansion. 아무 변경 없이 컨텐츠를 재사용 가능하면 컨텐츠 취합이 널리 행해져야 할 것이다. If possible, reuse the content without changing the content collected will be widely implemented. RSS(Rich Site Summary) 피드를 통한 웹(Web) 컨텐츠가 대표적인 예이다. Web (Web) content via RSS (Rich Site Summary) feed is a prime example. 명확하게 정의된 기준에 의하여, 웹 컨텐츠의 일부가 다른 페이지들을 위해 링크(재사용)될 수 있다. By clearly defined criteria, some of the web content that links can be (re) to other pages. 이러한 컨텐츠의 취합은 간단히 자동화 및 개인화될 수 있다. Aggregate of such content may simply be automated and personalized.

하지만, 본 실시예서 관심을 갖는 컨텐츠는 웹 컨텐츠와 같은 공개(무료) 컨텐츠 종류가 아니고, 상업적으로 경쟁력 있는 양질의 (유료) 컨텐츠가 대상이다. However, content with the present embodiment is not a public interest in clerical script (Free) kinds of content, such as Web content, and commercial quality competitive (paid) content in the target. 전술한 바와 같이, 컨텐츠의 취합은 필연적으로 소스 코드 레벨에서의 변경을 요구한다. As described above, the aggregate of the content will inevitably require a change in the source code level. 그러나 이러한 문제를 처리하기 위한 어떠한 지능형 툴(Tool)도 존재한 바가 없다. But there is also a bar there any intelligent tools (Tool) to handle these problems. 이에, 본 실시예의 컨텐츠 취합 장치(500)는 관점 지향 프로그래밍을 이용할 수 있으며, 관점 지향 프로그래밍은 위빙(Weaving)이라 하는 동적 코드 주입(Dynamic Code Injection) 능력을 가지고 있다. Thus, example content collecting unit 500 of this embodiment may use the aspect-oriented programming, aspect-oriented programming has a dynamic code injection (Dynamic Code Injection) capability, which is called a weaving (Weaving).

도 2는 관점 지향 프로그래밍의 메커니즘을 나타낸 도면이다. 2 is a view showing a mechanism for aspect-oriented programming.

관점 지향 프로그래밍은 자동으로 기존 코드에 추가 로직을 주입한다. Aspect-oriented programming, automatically injects the additional logic to the existing code. 이러한 기능을 통해 양질의 컨텐츠는 원본 컨텐츠 공급자의 코딩 지원 없이 소스 코드 수준에서 변경될 수 있다. With these features, high-quality content can be changed at the source code level without coding Support the original content provider. 이는 해당 분야의 커다란 개선이며, 관점 지향 프로그래밍은 이러한 문제에 적합한 솔루션이다. This is a significant improvement in the field, aspect-oriented programming is an appropriate solution to this problem.

이러한, 관점 지향 프로그래밍이란, 프로그램의 영역이 수행 프로그램 컴파일 방법을 결정하는 프로그래밍 방법이다. This, aspect-oriented programming is a programming method for determining the area of ​​a program for performing the program compilation method. 이러한, 관점 지향 프로그래밍은 객체 지향 프로그래밍(OOP: Object Oriented Programming)과 함께 이용되며, 영역이란 프로그램의 성격을 나타내는 서브 프로그램으로, 영역이 변함에 따라 전체 프로그램이 변하는 애스팩트 위버(Aspect Weaver)(영역 직조형 컴파일러)라는 일종의 컴파일러 역할을 한다. This, aspect-oriented programming, object-oriented programming (OOP: Object Oriented Programming) and is used together, the area is the aspect Weaver (Aspect Weaver), the entire program varies according to the sub-program that indicates the nature of the program area is constant (area the role of a kind of compiler compiler direct modeling). 이러한, 관점 지향 프로그래밍은 소프트웨어 측면에서 볼 때, 상속 계층 구조와 별개로 클래스나 개체의 동작을 변경하는 '애스팩트(Aspect)'를 적용할 수 있다. This, aspect-oriented programming can be applied to "Aspect (Aspect) 'to change the behavior of a class or object separately, and inheritance hierarchies when viewed in terms of software. 이에, '애스팩트'를 런타임이나 컴파일 시에 적용할 수 있다. Accordingly, the "Aspect" can be applied at runtime or compile time.

관점 지향 프로그래밍의 개념을 도 2를 이용하여 설명할 수 있다. The concept of aspect-oriented programming may also be described with reference to FIG. 도 2에 이용되는 몇 가지 용어를 다음과 같이 정의한다. Also some of the terminology that is used in the 2 is defined as follows.

'애스팩트(Aspect)'는 애플리케이션 모두에 항상 부가하고자 하는 일반적인 특징을 말한다. "Aspect (Aspect) 'refers to the common features that you want to always be added to all applications. 또한, '애스팩트'는 '어드바이스'와 '포인트컷'을 포함한 개념이다. In addition, the "aspect" is a concept including the 'advice' and 'cut-point'.

'어드바이스(Advice)'는 '애스팩트'을 구현하기 위한 로직의 일부로서, '어드바이스'는 예컨대, 로깅, 성능 모니터링, 예외 처리, 트랜잭션 관리 등에 관한 것이다. "Advice (Advice)" is part of the logic for implementing the "aspect", "advice" is, for example, it relates to such logging, performance monitoring, exception handling, transaction management. 또한, '어드바이스'는 크로스 커팅(Cross-Cutting) 형태의 관심사항으로 작업을 표현하는 방법이다. In addition, the "advice" is a way to express the task information crosscutting (Cross-Cutting) form of interest. 또한, '어드바이스'는 삽입 되어질 부분에서 실행되는 코드로서, 삽입될 코드를 말한다. In addition, the "advise" refers to, a code to be embedded as the insertion part to be executed in code.

'조인포인트(Joinpoint)'는 '어드바이스'를 어디에 실행해야 할지 그 위치를 의미한다. Refers to the location you want to "join point (Joinpoint) 'must run' advice 'where. 또한, '조인포인트'는 식별 가능하며 기 정의된 코드 지점이다. In addition, the 'join point "is a point code definition identified from, group. 또한, '조인포인트'는 클래스 인스턴스 생성 시점으로서, 실제 실행되는 시점을 말한다. In addition, the 'join point "refers to the point at which an instance of the class created time, the actual execution.

'포인트컷(Pointcut)'은 '조인포인트'의 집합을 말한다. Point Cut (Pointcut) 'refers to the set of' join point. 또한, '포인트컷'은 구성 또는 코드를 이용하여 '조인포인트'를 지정한다. In addition, the 'cut-point' designates a "join points, using the configuration or code. 또한, '포인트컷'은 '조인포인트'의 집합으로서, 결합 규칙을 의미한다. In addition, a set of "cut-point" is "join point" means a binding rule.

'위빙(Weaving)'은 '어드바이스'를 애플리케이션 코드 속으로 '조인포인트' 위치들에 삽입하는 과정을 말한다. "Weaving (Weaving)" refers to the process of inserting the "advice" to "join point" position into the application code. 또한, '위빙'은 분리 구현된 관심사를 결합 시키는 코드를 말한다. In addition, the "weaving" means a code that combines the discrete implementation concerns.

도 2에 도시된 바와 같이, 소스 코드에서 메소드를 호출할 때 해당 호출이 발생하는 지점이 '조인포인트'이다. Figure is a, the point at which the corresponding call when calling a method on the source code, the join point ', as shown in Fig. '포인트컷'을 이용하면 프로그램 흐름을 차단할 '조인포인트'를 지정하거나 정의할 수 있다. The "cut point" allows us to specify or define "join points" to block the program flow used. 또한, '포인트컷'에는 '조인포인트'에 도달할 경우 발생하는 '어드바이스'가 들어 있다. Further, the "advise" example that occurs when there is reached a "join points" "pointcut". 따라서 호출 중인 특정 메소드에 '포인트컷'을 정의하는 경우, 호출이 발생하거나 '조인포인트'가 호출되면 관점 지향 프로그래밍 프레임워크에 의해 프로그램의 흐름이 중단되고 '포인트컷'위치에서 '어드바이스'가 실행된다. Therefore, if you define a "point cut, the call in a certain method calls to occur or" join point "is when the aspect-oriented programming of the program by the framework, the flow is interrupted Point Cut 'advice' is running at a location call do. '어드바이스'는 여러 가지일 수 있지만 호출할 또 다른 메소드로 간주된다. 'Advice' will be different, but is regarded as another method to invoke. 그러므로 '포인트컷'이 있는 메소드를 호출하는 경우 실행할 '어드바이스'는 호출할 또 다른 메소드가 된다. Therefore, if you call a method in the "cut point" run "advice" is another method to call. 이러한 '어드바이스' 또는 호출할 메소드는 메소드가 차단된 개체에 있거나 여기서 혼합한 다른 개체에 있다. This "advice" or invoke the method or methods that are blocked by other objects in the object mix here.

이러한, 관점 지향 프로그래밍은 횡단적인 사안(Crosscutting Business Concern)을 설계 및 코딩하는 기법 또는 방법론이다. This, aspect-oriented programming is a technique or methodology for designing and coding the crosscutting issues (Crosscutting Business Concern). 횡단적 관심사(Cross-cuting Concern)를 주요 관심사(Primary concern)에 독립적으로 추가함으로써 소프트웨어 공학의 중요한 문제가 된 관심사 분리(Separation Of Concerns)가 달성된다. By adding a crosscutting concern (Cross-cuting Concern) independently of the main concerns (Primary concern) separate the important issues of software engineering concerns (Separation Of Concerns) is achieved.

관점 지향 프로그래밍에 의해 생성된 바이트 코드는 정적 또는 동적 방법으로 전개되고 있다. The byte code generated by the aspect-oriented programming has been deployed in a static or dynamic way. 정적 관점 지향 프로그래밍에서 '어드바이스'는 컴파일 된 바이트 코드로 포함된다. In the static aspect-oriented programming "advice" it is included in the compiled byte code. 동적 관점 지향 프로그래밍에서는 그 컴파일 된 코드에서 관점 지향 프로그래밍 관련 바이트 코드는 없지만, 컴파일된 코드는 실행 타임에 삽입된다. The dynamic aspect-oriented programming, but is aspect-oriented programming byte code in the compiled code, the compiled code is inserted into the run-time. 정적 관점 지향 프로그래밍이 더 나은 성능을 보여주는 것은 런타임에서 특별한 처리를 수행할 것이 없기 때문이다. Static aspect-oriented programming is showing a better performance because it is not to perform any special processing at runtime. 한편, 동적 관점 지향 프로그래밍이 융통성에서 더 나은 것은 '어드바이스' 변화 시 기존의 메인 코드를 다시 컴파일할 필요가 없기 때문이다. On the other hand, the better the dynamic aspect-oriented programming in flexibility because there is no need to recompile existing code of the main city 'advice' change again. '위빙'의 발생은 컴파일 타임, 로드 타임 및 런타임 때 이루어질 수 있다. The occurrence of 'weaving' can be made at compile time, load time and runtime.

분류 결과를 [표 1]에 요약하여 제시한다. It presents a summary of the result of classification in Table 1. 네 개의 주요 관점 지향 프로그래밍 도구를 개별로 카테고리에 포함시켰다. The four major aspect-oriented programming tool, included as a separate category.

Figure 112013039394196-pat00001

도 3은 애플리케이션의 작성 과정을 나타낸 도면이다. Figure 3 is a view showing the process of creating the application.

본 실시예에서 초점을 맞추는 컨텐츠는 안드로이드(Android) 애플리케이션이므로 관점 지향 프로그래밍 도구는 안드로이드 개발과 호환성을 갖게 한다. Content focuses on this embodiment aspect-oriented programming tools because it is Android (Android) Android application should have the development and compatibility. 이를 위해 안드로이드 애플리케이션 작성 과정에 대해 설명한다. For this purpose, it explains the process of creating Android applications. 도 3은 전체 프로세스를 보여준다. Figure 3 shows the entire process.

한편, S310 내지 S330은 자바가상 머신에 의한 동작을 나타나며, S340 내지 S390은 자바가상 머신에서 안드로이드 가상 머신으로 변환 과정을 나타낸다. On the other hand, S310 to S330 is indicated the operation of the Java virtual machine, S340 to S390 represents the conversion process as Android virtual machine in the Java virtual machine. 즉, 컨텐츠 취합 장치(500)는 소스 파일을 입력받고(S310), 소스 파일을 자바 컴파일러를 이용하여(S320), 자바 클래스 파일로 생성한다(S330). That is, a content collecting unit 500 generates the receiving a source file (S310), the source file in (S320), the Java class files by a Java compiler (S330). 이때, 컨텐츠 취합 장치(500)는 자바 가상 머신(JVM)을 이용할 수 있다. At this time, a content collecting unit 500 may utilize the Java Virtual Machine (JVM). 이러한, 자바 가상 머신(JVM)의 경우 이 하나의 흐름으로도 설명 가능하다. This, in the case of a Java virtual machine (JVM) can be also described as a single flow. 자바 프로그램(자바 소스 코드(My Programjava)) → 자바 컴파일러(자바 바이트 코드(MyProgram class)) → 자바 가상 머신 → 기계어코드(각 디바이스(Unix, Win32, Macintosh))로 변환한다. Convert to Java applications (java source code (My Programjava)) → Java compiler (Java byte code (MyProgram class)) → Java virtual machine → machine Accord (each device (Unix, Win32, Macintosh)). 즉, 자바 가상 머신은 자바 프로그램을 실행하기 위한 도구로서, 자바 프로그램을 컴파일하게 되면 '바이트 코드'가 생성된다. In other words, the Java virtual machine as a tool to run a Java program, when compiled Java programs are "byte code" is generated. 여기서, '바이트 코드'는 자바 컴파일러가 자바 프로그램을 컴파일할 시에 생성되는 기계어로서 CPU(Central Processing Unit)에 의해 실행되지 않고, 자바 가상 머신을 경유하여 재해석되어 해당 플랫폼에 전달하는 일종의 바이너리 코드를 말한다. Here, the "bytecode" is a kind of binary code to the Java compiler is a machine that is generated when you compile your Java program is not executed by the CPU (Central Processing Unit), is reinterpreted through the Java virtual machine, transfer your platform He says. 한편, 컨텐츠 취합 장치(500)는 S320이 수행되기 전에 소스 파일(코드)에서 최초 실행 함수로 제공되는 기 설정된 함수명을 지정하여 최초 실행 함수 내에 특정 서비스 전용으로 실행되도록 하는 추가 소스 코드의 코드 삽입 지점을 설정할 수 있다. On the other hand, additional code insertion point in the source code for content aggregation unit 500 to execute a specific service only in the first run functions by specifying a prescribed function name provided to the first execution function in a source file (code) prior to S320 is carried out to be set.

컨텐츠 취합 장치(500)는 자바 클래스 파일을 덱스(Dex) 도구 (dx)를 이용하여(S340), 달빅 바이트 코드(Dalvik Byte Code)인 classes.dex로 변환한다(S350). The content collecting apparatus 500 converts the Java class files to the index by using (Dex) Tools (dx) (S340), Dalvik bytecode (Dalvik Byte Code) classes.dex (S350). 여기서, 달빅은 안드로이드용 가상머신을 말한다. Here, it says Dalvik is a virtual machine for Android. 즉, 자바로 만든 코드는 자바 가상 머신에서 실행되어 지고, 안드로이드 애플리케이션은 달빅 가상 머신에서 실행되는 것이다. In other words, the code created in Java is being run on the Java Virtual Machine, Android applications will be running on the Dalvik virtual machine. 하지만, 자바의 바이트코드와 달빅의 바이트 코드는 다르다. However, different from the byte code and Java byte code in Dalvik.

안드로이드 작성 과정에서 자바의 클래스 파일은 덱스(Dex) 도구 (dx)를 이용하여 달빅(Dalvik) 바이트 코드로 변경되는 것을 알 수 있다. Java class files in the Android build process can be seen that the change in Dalvik (Dalvik) bytecode using Dex (Dex) Tools (dx). 즉, 관점 지향 프로그래밍 프로세스는 자바 컴파일러 다음과 dx 도구 앞에 추가해야 함을 의미한다. That is, the aspect-oriented programming process is meant to be added before the Java compiler follows dx tool. 다시 말하면, 안드로이드 개발에서는, '위빙'이 컴파일 타임에서만, 특정 작성과정의 개시 전에만 행하여져야 한다. In other words, the Android development, should be carried out only in 'weaving' compile time, before the start of a specific creation process. '동적 위빙(Dynamic Weaving)'은 보통 자바 바이트 코드를 생성할 뿐 '달빅' 바이트 코드를 만들지는 않는다. 'Dynamic Weaving (Dynamic Weaving)' does not create a normal Java bytecode as to create a "Dalvik" byte code. 따라서, 안드로이드 애플리케이션에 이용할 유일한 방법은 정적 관점 지향 프로그래밍이다. Therefore, the only way to take advantage of the Android application is a static aspect-oriented programming. 즉, 동적 관점 지향 프로그래밍은 달빅 가상 머신에서 지원되기 위해서는 새로운 관점 지향 프로그래밍과 안드로이드 개발 도구가 도입되어야 한다. In other words, the dynamic aspect-oriented programming is to be supported in the Dalvik virtual machine to be introduced to a new aspect-oriented programming and the Android development tools.

[표 1]의 분류를 참조하면, 'AspectJ'는 안드로이드 개발에 호환성 있는 유일한 도구이다. Referring to the classification of [Table 1], 'AspectJ' tool is compatible only with the Android development. 이러한, AspectJ는 'Spring AOP'와 같은 동적 관점 지향 프로그래밍 도구보다 빠르고 정적 관점 지향 프로그래밍, 'AspectWerkz'와 비교해도 우수하다. This, AspectJ is excellent in comparison with 'Spring AOP' and the dynamic aspect-oriented programming tools oriented programming faster and more static point of view, 'AspectWerkz' like.

이후, 컨텐츠 취합 장치(500)는 달빅 바이트 코드인 classes.dex를 안드로이드용 빌더인 apkbuilder(S360)를 통해 설치 패키지 파일, App-unaligned.apk를 생성(S370)하고, zipalign(S380)를 통해 안드로이드 상에서 실행 가능한 최종 설치 패키지 파일인 'app.apk'를 생성한다(S390). Then, the contents collecting apparatus 500 (S370) to create an installation package file, App-unaligned.apk the Dalvik bytecode of classes.dex through the Android builder apkbuilder (S360) for, and Android through zipalign (S380) It generates a 'app.apk' a viable final installation package file on (S390). 여기서, 'zipalign'은 디바이스가 읽는 비트(Bit)와 애플리케이션의 비트를 같게 하여 읽기 속도를 우수하게 해주는 원리의 개념으로서, 대체로 용량 부하가 큰 애플리케이션 구동 시 속도가 향상된다. Here, 'zipalign' concept is enhanced, when the capacitive load is generally greater application of the principle that the driving speed as a reading speed and reaches the superior bit of the bit (Bit) and the application device are read.

도 4는 본 실시예에 따른 컨텐츠 취합 방법을 설명하기 위한 순서도이다. 4 is a flowchart illustrating a content aggregation method according to the present embodiment.

본 실시예에 따른 컨텐츠 취합 장치(500)는 하드웨어 또는 소프트웨어로 구현될 수 있으며, 미들웨어(Middleware) 역할을 수행할 수 있다. Content aggregation device 500 according to this embodiment can be can be implemented in hardware or software, perform a middleware (Middleware) role.

컨텐츠 취합 장치(500)는 소정의 프로그래밍 언어(Programming Language)로 생성되어 실행 가능한 프로그램의 소스 코드(Source Code)를 입력받는다(S410). Content aggregation device 500 is subjected is produced by (Programming Language) programming language, the predetermined input source code of an executable program (Source Code) (S410). 여기서, 소정의 프로그래밍 언어는 자바(Java) 언어인 것이 바람직하나 반드시 이에 한정되는 것은 아니다. Here, the predetermined programming language, preferably in a single Java (Java) language is not limited thereto. 또한, S410에서의 프로그램은 컴파일 과정을 거쳐 별도의 프로그램으로 실행 가능한 애플리케이션을 말한다. In addition, in S410 the program refers to an executable application as a separate program after the compilation process.

컨텐츠 취합 장치(500)는 소스 코드에서 최초 실행 함수로 제공되는 기 설정된 함수명을 지정하여 최초 실행 함수 내에 특정 서비스(Specific Service) 전용으로 실행되도록 하는 추가 소스 코드의 코드 삽입 지점을 설정한다. Content aggregation unit 500 sets a code, the insertion point of the additional source code to run on a particular service (Specific Service) function only in the first run by specifying a prescribed function name provided to the first function executed in the source code. 이하, 이러한 컨텐츠 취합 장치(500)의 동작에 대해 설명한다. Hereinafter, a description will be given of the operation of the content aggregation unit 500. The

컨텐츠 취합 장치(500)는 소스 코드에 대한 최초 실행 함수로 제공되는 기 설정된 함수명(키워드)를 지정하는 선언(Declaration) 과정을 수행한다(S420). Content aggregation unit 500 performs the Predefined (Declaration) process that specifies the function names (keyword) is set to be available in the first execution function for a source code (S420). 여기서, 소스 코드는 소정의 프로그래밍 언어로 생성되어 실행 가능한 프로그램의 코드이다. Here, the source code is a code of an executable program is generated at a predetermined programming language. 단계 S420에서, 컨텐츠 취합 장치(500)는 선언 과정을 수행할 때, 소스 코드에 대한 애스팩트(Aspect)을 지정하고, 확장된 컴파일러와 관련 툴(Related Tool)로 언어 확장을 지원한다. In step S420, the content will be collecting device (500) is supported when performing a procedure declaration specifies the Aspect (Aspect) to the source code, and the associated tools (Related Tool) and extended compiler language extensions.

컨텐츠 취합 장치(500)는 추가 소스 코드가 삽입 되는 지점을 설정하는 코드 삽입 지점 설정 과정을 수행한다(S430). The content aggregation unit 500 performs the code insertion point, the setup process of setting the point at which the additional source code is implemented (S430). 여기서, 추가 소스 코드는 '어드바이스(Advice)'으로 정의되며, 코드 삽입 지점은 '포인트컷(PointCut)'으로 정의 될 수 있다. Here, additional source code is defined as "advice (Advice)", code insertion point may be defined as "pointcut (PointCut) '.

또한, S430에서 컨텐츠 취합 장치(500)는 코드 삽입 지점 설정 과정을 수행할 때, 소스 코드에서 최초 실행 함수로 제공되는 기 설정된 함수명을 지정하여 최초 실행 함수 내에 특정 서비스 전용으로 실행되도록 하는 추가 소스 코드의 코드 삽입 지점을 설정한다. Further, the content aggregation unit 500, in S430, when performing code insertion point in the setup process, additional source code such that by specifying a pre-set function name provided to the first execution functions in the source code for execution in a specific service only in the first run function set the insertion point in the code. 또한, 컨텐츠 취합 장치(500)는 코드 삽입 지점 설정 과정을 수행할 때, 상속된 클래스(Descending Class)를 포함한 모든 동적 클래스(Activity Class)가 모든 화면을 시작하는 시점(onCreate) 메소드를 호출(Call)할 때 분리 구현된 관심사를 결합 시키는 코드를 실시한다. In addition, content aggregation device (500) is calling all the dynamic classes (Activity Class) is the time (onCreate) method to start all screens, including when performing code insertion point in the setup process, the inherited class (Descending Class) (Call when) performs a code to combine the separate implementation of interest. 여기서, '애스팩트'를 결합 시키는 코드는 '위빙(Weaving)'으로 정의될 수 있다. Wherein code to combine the "aspect" can be defined as 'weaving (Weaving)'. 이때, 동적 클래스는 슈퍼 클래스(Super Class)로서, 모든 UI(User Interface) 관련 클래스에 영향을 미치는 최상위 라이브러리(Library) 클래스이다. In this case, the dynamic class is a superclass (Super Class), a top-level library (Library) Class affect the relevant class all UI (User Interface). 또한, 컨텐츠 취합 장치(500)는 코드 삽입 지점 설정 과정을 수행할 때, 슈퍼 클래스를 위빙의 대상으로 설정하여 모든 상속된 클래스(Descending Class)에 유효성을 부여한다. In addition, content aggregation device (500) is given to the validity of any inherited class (Descending Class) to set up a super class when you perform code insertion point in the target setting process of weaving. 또한, 컨텐츠 취합 장치(500)는 코드 삽입 지점 설정 과정을 수행할 때, 슈퍼 클래스 지정 대신에 대상 클래스(Target Class)의 이름을 직접 부여할 수도 있다. In addition, content aggregation device (500) may be granted directly to the name of the target class (Target Class) instead of the specified superclass to perform code insertion point in the setup process.

컨텐츠 취합 장치(500)는 '애스팩트'(추가 소스 코드)가 실행되는 지점을 설정하는 실행 지점 설정 과정을 수행한다(S440). Content aggregation unit 500 performs a running point setting process for setting the point at which the "aspect" (add source code) executed (S440). 단계 S440에서 컨텐츠 취합 장치(500)는 실행 지점 설정 과정을 수행할 때, 추가 소스 코드가 실행되는 지점을 설정한 후의 실패를 확인하는 사후 확인(Post-Checking) 지점보다 추가 소스 코드가 실행되는 지점을 설정하기 전의 실패를 확인하는 사전 확인(Pre-Checking) 지점에서 실패가 확인되는 경우 서비스가 거부되도록 설정한다. When you perform a content aggregation device (500) is running point setting process in step S440, additional post-check (Post-Checking) the point at which the additional source code run more point to make the source code fails after setting the point at which the run If the check fails, check in advance (pre-checking) check point before the failure to set up and set to a denial of service. 또한, 컨텐츠 취합 장치(500)는 실행 지점 설정 과정을 수행할 때, 사전 확인 지점을 상기 사후 확인 지점보다 적절한 지점(Appropriate Point)으로 간주한다. Further, the content aggregation device 500 is considered to be when performing a running point setting process, the pre-check point after the right point than the check point (Appropriate Point).

컨텐츠 취합 장치(500)는 '어드바이스'(추가 소스 코드)를 구현하는 과정을 수행한다(S450). Content aggregation unit 500 performs a process that implements the "advice" (add source code) (S450). 즉, 컨텐츠 취합 장치(500)는 구현 과정을 수행할 때, 아웃소싱의 컨텐츠가 특정 서비스(Specific Service) 전용으로 특화되도록 하는 과정이다. That is, when performing the process of implementing contents collecting apparatus 500, the process of the contents of the outsourced to specialized to a specific service (Specific Service) only. 컨텐츠 취합 장치(500)는 컨텐츠 취합 과정에 해당하는 단계 S420 내지 S450을 수행할 때 관점 지향 프로그래밍(AOP: Aspect Oriented Programming)을 기초로 동작한다. Content aggregation device 500 is aspect-oriented programming to perform the steps S420 to S450 for the content aggregation process: operate on the basis of (AOP Aspect Oriented Programming). 컨텐츠 취합 장치(500)는 소스 코드를 기 설정된 프로그램 코드로 변환할 때 코드 삽입 지점에 추가 소스 코드인 어드바이스를 삽입하는 변환 과정을 수행한다(S460). Content aggregation unit 500 performs a conversion process to insert additional source of advice to the code insertion point, when converting a program code, a predetermined source code (S460).

도 4에서는 단계 S410 내지 단계 S460을 순차적으로 실행하는 것으로 기재하고 있으나, 이는 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 도 4에 기재된 순서를 변경하여 실행하거나 단계 S410 내지 단계 S460 중 하나 이상의 단계를 병렬적으로 실행하는 것으로 다양하게 수정 및 변형하여 적용 가능할 것이므로, 도 4는 시계열적인 순서로 한정되는 것은 아니다. Although the Fig. 4, described as running step S410 to step S460 in order, which as only to those described for example spirit of the present embodiment by way of example, those skilled in the art An example of this embodiment of the present embodiment without departing from the essential characteristics of one or more of the steps of Figure 4 to change the order execution by, or steps described in S410 to step S460 because it applicable to a wide range by running in parallel modifications and variations, Figure 4 is a time-series sequence It is not limited.

전술한 바와 같이 도 4에 기재된 본 실시예에 따른 컨텐츠 취합 방법은 프로그램으로 구현되고 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다. Content aggregation method according to the present embodiment described in Figure 4 as described above may be implemented in a program being recorded on a computer-readable recording medium. 본 실시예에 따른 컨텐츠 취합 방법을 구현하기 위한 프로그램이 기록되고 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. Recording medium on which a program for implementing a content aggregation method according to the present embodiment can record and read the computer includes all kinds of recording devices in which data that can be read by a computer system. 이러한 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. Examples of the computer readable recording medium with such computer-readable, and a ROM, RAM, CD-ROM, magnetic tapes, floppy disks, optical data storage devices, implemented in the form of a carrier wave (e.g., transmission through the Internet) including those that are. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수도 있다. The computer readable recording medium can also be distributed over network coupled computer systems may be, the computer code is stored which can be read and executed in a distributed fashion. 또한, 본 실시예를 구현하기 위한 기능적인(Functional) 프로그램, 코드 및 코드 세그먼트들은 본 실시예가 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있을 것이다. In addition, the functional (Functional) programs, codes, and code segments for accomplishing the present embodiment will be able to be easily construed by programmers skilled in the art belonging to the present embodiment.

도 5는 본 실시예에 따른 컨텐츠 취합 장치를 개략적으로 나타낸 블럭 구성도이다. Figure 5 is a block diagram showing a content collecting device of the embodiment schematically illustrated Fig.

본 실시예에 따른 컨텐츠 취합 장치(500)는 소스 코드 입력부(510), 컨텐츠 취합부(520) 및 변환부(530)를 포함한다. Content aggregation device 500 according to this embodiment includes a source code input section 510, a content collecting unit 520 and the conversion unit 530. The 본 실시예에서는 컨텐츠 취합 장치(500)가 소스 코드 입력부(510), 컨텐츠 취합부(520) 및 변환부(530)만을 포함하는 것으로 기재하고 있으나, 이는 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 컨텐츠 취합 장치(500)에 포함되는 구성 요소에 대하여 다양하게 수정 및 변형하여 적용 가능할 것이다. In this embodiment, although the description that content collecting unit 500 includes only the source code input section 510, a content collecting unit 520 and the conversion unit 530, which as described for example technical idea of ​​the present embodiment by way of example as only, those of ordinary skill in the art an example of this embodiment, if would be possible configuration is applied to a variety of modifications and variations with respect to the elements to be included in the content aggregation device 500, without departing from example essential characteristic of this embodiment. 이러한, 컨텐츠 취합 장치(500)는 컨텐츠 취합부(520)만을 포함한 별도의 장치로 구현될 수 있고, 소스 코드 입력부(510) 및 변환부(530)는 별도의 외부 장치로 구현될 수 있다. This, content aggregation device 500 may be implemented as a separate device containing only a content collecting unit 520, the source code input section 510 and the converting unit 530 may be implemented as a separate external device.

한편, 도 5에 도시된 컨텐츠 취합 장치(500)는 소프트웨어와 하드웨어를 결합한 별도의 모듈로 구현될 수 있으며, 소프트웨어적인 모듈로만 구현될 수 있다. On the other hand, a content collecting unit 500 shown in Figure 5 may be implemented as a separate module that combines the software and hardware, may be implemented only in software of the module.

소스 코드 입력부(510)는 소정의 프로그래밍 언어로 생성되어 실행 가능한 프로그램의 소스 코드를 입력받는다. Source code input section 510 is generated in a predetermined programming language, receives a source code of an executable program. 여기서, 소정의 프로그래밍 언어는 자바 언어인 것이 바람직하나 반드시 이에 한정되는 것은 아니다. Here, the predetermined programming language, one preferably in the Java language is not limited thereto. 또한, 소정의 프로그래밍 언어로 생성된 프로그램은 컴파일 과정을 거쳐 별도의 프로그램으로 실행 가능한 애플리케이션을 말한다. Further, the program generating a predetermined programming language refers to an executable application into a separate program through the compilation process.

컨텐츠 취합부(520)는 소스 코드 입력부(510)로부터 입력된 소스 코드에서 최초 실행 함수로 제공되는 기 설정된 함수명을 지정하여 최초 실행 함수 내에 특정 서비스 전용으로 실행되도록 하는 추가 소스 코드의 코드 삽입 지점을 설정한다. Content aggregation unit 520 is the additional code insertion point in the source code to be run to a particular service only in the first run functions by specifying a prescribed function name provided in the first executing the function from the source code received from the source code input section 510 set.

본 실시예에 따른 컨텐츠 취합부(520)는 선언부(522), 코드 삽입 지점 설정부(524), 실행 지점 설정부(526) 및 구현부(528)를 포함한다. Content aggregation unit 520 of the present embodiment includes a declaration portion 522, the code injection point setting unit 524, a running point setting unit 526 and the implementation unit 528. 선언부(522)는 소스 코드에 대한 최초 실행 함수로 제공되는 기 설정된 함수명(키워드) 및 '애스팩트(Aspect)'를 지정한다. Declaration 522 specifies a predetermined function names (keyword) and "aspect (Aspect), provided in the first function executed on the source code. 또한, 선언부(522)는 확장된 컴파일러와 관련 툴로 언어 확장을 지원한다. Further, the declaration portion 522 supports the associated tool language extensions and extended compiler. 여기서, 소스 코드는 소스 코드 입력부(510)를 통해 입력되며, 소정의 프로그래밍 언어로 생성되어 실행 가능한 프로그램의 코드를 말한다. Here, the source code is inputted through the source code input section 510, is created in a predetermined programming language refers to the code of the executable program.

코드 삽입 지점 설정부(524)는 삽입 되어질 부분에서 함께 포함되어 컴파일될 추가 소스 코드의 코드 삽입 지점을 설정한다. Code insertion point setting section 524 is included with the parts to be inserted in the code sets the injection point of the additional source code is compiled. 여기서, 추가 소스 코드는 '어드바이스'로 정의되며, 코드 삽입 지점은 '포인트컷'으로 정의될 수 있다. Here, additional source code is defined as "advice", code insertion point may be defined as "pointcut". 또한, 코드 삽입 지점 설정부(524)는 최초 실행 함수 내에 특정 서비스 전용으로 실행되도록 하는 추가 소스 코드의 코드 삽입 지점을 설정한다. Further, the configuration code insertion point unit 524 sets a code, the insertion point of the additional source code to run on a specific service only in the first run function. 또한, 코드 삽입 지점 설정부(524)는 상속된 클래스를 포함한 모든 동적 클래스가 모든 화면을 시작하는 시점(onCreate) 메소드를 호출할 때 분리 구현된 관심사를 결합 시키는 코드를 실시한다. Further, the configuration code insertion point unit 524 performs code combining all of the dynamic class to be removed when the call point (onCreate) method to start all screen implementation, including an inherited class interest. 여기서, 관심사를 결합 시키는 코드는 '위빙'으로 정의될 수 있다. Wherein code to combine the interest can be defined as 'weaving'. 이때, 동적 클래스는 슈퍼 클래스로서, 모든 UI 관련 클래스에 영향을 미치는 최상위 라이브러리 클래스이다. In this case, the dynamic class is a superclass is the highest class library affects all UI-related classes. 또한, 코드 삽입 지점 설정부(524)는 슈퍼 클래스를 위빙의 대상으로 설정하여 모든 상속된 클래스에 유효성을 부여한다. Furthermore, the code insertion point setting unit 524 assigns the validity for all the derived classes by setting the super class as the target of the weaving. 코드 삽입 지점 설정부(524)는 슈퍼 클래스 지정 대신에 대상 클래스의 이름을 직접 부여할 수도 있다. Code insertion point setting unit 524 may directly give the name of the class instead of the specified superclass.

실행 지점 설정부(526)는 추가 소스 코드가 실행되는 지점을 설정한다. Running point setting unit 526 sets a point at which the additional source code execution. 또한, 실행 지점 설정부(526)는 사후 확인보다 사전 확인이 실패하는 경우 서비스가 거부되도록 설정한다. In addition, the running point setting unit 526 when the pre-check fails than the post-check is set to be a denial of service. 즉, 실행 지점 설정부(526)는 사전 확인 지점을 사후 확인 지점보다 적절한 지점으로 간주한다. That is, the running point setting unit 526 is considered to be more appropriate point after the pre-check point check point. 구현부(528)는 추가 소스 코드를 구현한다. Implementation unit (528) implements the additional source code. 즉, 구현부(528)는 아웃소싱의 컨텐츠가 특정 서비스 전용으로 특화되도록 코드 삽입 지점에서 추가 소스 코드를 구현한다. That is, the implementation unit 528 implements the additional source code from the code insertion point, the contents of the outsourced to specialized to a specific service only. 이러한, 컨텐츠 취합부(520)는 컨텐츠 취합 과정을 수행할 때 관점 지향 프로그래밍을 기초로 동작한다. This, content aggregation unit 520 operates on the basis of aspect-oriented programming when performing a content aggregation process. 변환부(530)는 소스 코드 입력부(510)로부터 입력된 소스 코드를 기 설정된 프로그램 코드로 변환할 때 컨텐츠 취합부(520)에 의해 설정된 코드 삽입 지점에 추가 소스 코드를 삽입한다. Conversion unit 530 inserts the additional source code into the code insertion point is set by the content collecting unit 520 to convert the program code is set based on the source code received from the source code input section 510.

도 6은 본 실시예에 따른 컨텐츠 취합용 소스 코드를 나타낸 도면이다. Figure 6 is a view of the source code for the content collected in the present embodiment.

관점 지향 프로그래밍이 컨텐츠 취합에 얼마나 큰 도움이 되는지를 도 6에 세부 정보로 나타내었다. Aspect-oriented programming is shown in FIG. 6 whether how much help assemble content into details. 표현된 것은 자바 언어의 확장인 AspectJ 신택스(Syntax)로 되어 '어드바이스'와 '포인트컷' 같은 관점 지향 프로그래밍 관련 키워드를 특정한 것이다. It represented a certain aspect-oriented programming will be related keywords such as AspectJ syntax (Syntax) is an extension of the Java language 'advice' and 'cut-point'. 여기에는 '어드바이스'가 언제 실행되는지 시점과 '어드바이스'가 무엇인지 소개가 포함되어 있다. There that 'advice' is when executed included the introduction of what is the point and the 'advice'. '어드바이스'는 액세스하는 장치가 등록 및 가입 상태에 있는지 여부를 확인하도록 설계된다. 'Advice' is designed to access the device to determine whether the registration and subscription status. 모든 안드로이드 애플리케이션이 이 추가 로직의 영향권 안에 있도록 해야 할 것이다. All Android applications will be so in the sphere of influence of the additional logic. 이 제약 조건을 만족하지 않으면, 고품질 컨텐츠는 제시되지 않는 것으로 한다. If you do not meet these constraints, high quality content that is not presented. 제약 조건은 일반 자바 신택스로 작성된다. Constraints are written in plain Java syntax. 도 6의 구현은 'SmartHome.aj' 파일이라고 하는 출력이다. Implementation of Figure 6 is output, called 'SmartHome.aj' file. 본 실시예에서는 '애스팩트 자바 클래스(Aspect Java Class)'를 설계하는 것을 기본으로 하나 반드시 이에 한정되는 것은 아니다. In this embodiment, a base to design a "Java class aspect (Aspect Java Class) 'One is not limited thereto. '애스팩트 자바 클래스'는 이클립스(Eclipse) IDE(Integrated Drive Electronics)를 통해 코딩될 수 있다. "Aspect Java class' can be coded using the Eclipse (Eclipse) IDE (Integrated Drive Electronics). 이를 위해, 'AspectJ 개발 툴'(ADT: AspectJ Development Tools) 플러그 인을 '이클립스'에 설치해야 한다. For this purpose, 'AspectJ Development Tools': You must install the (ADT AspectJ Development Tools) plug-in 'Eclipse.' 자세한 설명은 다음과 같다. Details are as follows:

①. ①. 도 6에 도시된 '①'은 '애스팩트'의 선언(Declaration) 이다. Illustrated in Figure 6, ① 'is a declaration (Declaration) of the "aspect". 새로운 키워드, '애스팩트'를 지정하는 것으로 어떤 신택스 오류가 발생하지는 않는다. It does not have any syntax errors that new keywords, specify 'Aspect'. 이때, AspectJ 플러그인이 확장된 컴파일러와 관련 도구들로써 언어 확장을 지원한다. At this time, AspectJ plug-in supports language extensions deulrosseo related tools and enhanced compiler.

②. ②. 도 6에 도시된 '②'는 '어드바이스'의 실행 대상을 나타내는 '포인트컷'이다. The illustrated "②" in Fig. 6 is the 'cut-point' that shows the action target of the "advice". 본 실시예는 상속된 클래스(Descending Class)를 포함한 모든 동적 클래스들(Activity Class)이 '모든 화면을 시작하는 시점(onCreate) 메소드'를 호출(Call)할 때 위빙을 실시하라는 것이다. The present embodiment is asked to carry out all the dynamic classes (Activity Class) is weaving when you call (Call) to 'point (onCreate) method to start all screens, including the inherited class (Descending Class). 정규식(Regular Expression)을 통해 이러한 시맨틱(Semantic)이 설명된다. This semantics (Semantic) is described by the regular expression (Regular Expression). 이러한 목표 설정이 적절한지를 이해하기 위해, 안드로이드 애플리케이션의 라이프 사이클을 알아야 하는데 이는, 도 7에 도시되었다. To understand how these goals are appropriate to know the life cycle of the Android application, which was shown in FIG.

각 상태의 변경은 사전에 정의된 방법들을 실행함으로써 이루어진다. Changes in each state is performed by executing the method defined in advance. 여기서, 동적 클래스의 실행은 모든 화면을 시작하는 시점(onCreate) 메소드를 호출함(Calling)으로써 개시하는 것으로 나타난다. Here, the execution of the dynamic class is shown to start by which invokes the point (onCreate) method to start all screen (Calling). 동적 클래스로부터 상속된 UI 클래스를 적어도 하나를 가진 모든 안드로이드 애플리케이션은 도 7에 도시된 라이프사이클을 따른다. All Android applications with at least one of the UI class that inherits from the dynamic class follows the life cycle shown in FIG. 이 때문에 어떠한 안드로이드 애플리케이션이라도 본 실시예에서 지정하는 로직으로 트리거(Trigger)되는 것이다. For this reason, any Android application logic will be to trigger (Trigger) to specify the present embodiment.

여기서, '동적 클래스'는 '슈퍼 클래스'이다. Here, the "dynamic class' a 'super class'. '슈퍼 클래스'를 위빙의 대상으로 설정하면 모든 상속된 클래스(Descending Class)가 간단히 유효성을 가진다. If you set the target of a "super class" Weaving has validated all the simply inherited class (Descending Class). 본 실시예에서 제안하는 사양(Specification)에 의하면 취합할 양질의 컨텐츠의 소스 코드를 조사할 필요가 없다. According to the specification (Specification) proposed in the present embodiment it is not necessary to examine the source code of the quality of the content to be collected. 이를 통해 서비스 제공 업체는 원본 컨텐츠 공급자의 코딩 도움없이 컨텐츠 취합을 끝낼 수 있다. This allows service providers to aggregate content can finish the coding without the help of the original content provider. 한편, '슈퍼 클래스' 지정 대신에 대상 클래스의 정확한 이름 쓰기도 가능하다. On the other hand, it is also possible to write the exact name of the class instead of specifying "superclass." 예컨대, 'AndroidManifest.xml'에서 대상 클래스 이름을 얻을 수 있다. For example, it is possible to obtain a target class name in the 'AndroidManifest.xml'.

③. ③. 도 6에 도시된 '③'은 '어드바이스'가 실행되는 지점이다. Illustrated in Figure 6, ③ 'is a point where the "advice" run. 사후 확인보다는 사전 확인이 실패하는 경우 서비스가 거부되도록 만드는 것이 바람직하다. If the check fails, rather than pre-post check it is desirable to make such a denial of service. 앞선 것이 뒤진 것보다 적절한 지점이라고 간주된다. Earlier it is considered appropriate points rather than behind.

④. ④. 도 6에 도시된 '④'는 '어드바이스'의 실제 구현이다. Illustrated in Figure 6, ④ 'is the actual implementation of the "advice". 아웃소싱의 컨텐츠를 특정 서비스 전용으로 특화하는 작업이 여기서 이루어진다. The task of the specific content of outsourcing certain services only done here. 통신 방식으로 SOAP(Simple Object Access Protocol)을 본 실시예의 첵킹 루틴에 이용한다. Is used in this embodiment, a checking routine a SOAP (Simple Object Access Protocol) as a communication method. 본 실시예는 SOAP 기반 조건부 액세스 시스템(CAS: Conditional Access System)의 API(Application Program Interface)를 제공하고 있다. This embodiment is a SOAP-based conditional access system: it provides (Application Program Interface) API's (CAS Conditional Access System).

여기서, SOAP은 일반적으로 널리 알려진 HTTP(Hyper Text Transfer Protocol), SMTP(Simple Mail Transfer Protocol) 등을 이용하여 XML(eXtensible Markup Language) 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 형태의 프로토콜이다. Here, SOAP is in the form of protocols that typically use the well-known HTTP (Hyper Text Transfer Protocol), (Simple Mail Transfer Protocol) SMTP such as exchange of the base (eXtensible Markup Language) XML messages over a computer network. SOAP은 웹 서비스(Web Service)에서 기본적인 메시지를 전달하는 기반이 된다. SOAP is the foundation for delivering basic messages in Web services (Web Service). SOAP에는 몇 가지 형태의 메시지 패턴이 있지만, 보통의 경우 원격 프로시져 호출(RPC: Remote Procedure Call) 패턴으로, 네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)쪽으로 메시지를 요청하고, 서버는 메시지를 즉시 응답하게 된다. But SOAP has some form of message patterns, usually remote procedure calls: The (RPC Remote Procedure Call) pattern, and request message to the other node (server) in the network node (client), the server immediately a message It is the response. SOAP는 XML-RPC와 WDDX(Web Distributed Data eXchange)에서 엔벨로프(Envelope)/헤더(Header)/바디(Body)로 이루어진 구조 상호 중립성(Interaction Neutrality)의 개념이다. SOAP is an XML-RPC concept of the WDDX (Web Distributed Data eXchange) envelope (Envelope) / header (Header) / body (Body) structure mutual neutrality (Interaction Neutrality) made from.

도 8은 본 실시예에 따른 샘플 프로젝트 실행 결과를 나타낸 도면이다. 8 is a view showing a sample project execution results according to this embodiment.

도 8에서는 안드로이드 샘플 프로젝트에 적용해 테스트한다. In Figure 8, the test applied to the sample Android project. 샘플 프로젝트들은 안드로이드 SDK(Software Development Kit) 관리자에서 다운로드하여 ADT(Android Development Tool)를 이용하여 창작할 수 있게 허용하고 있다. Sample projects are allowed to use the creative (Android Development Tool) ADT download from the Android Manager SDK (Software Development Kit). 도 8의 결과는 이러한 프로젝트 중 'JetBoy'에 적용한 것을 나타낸다. Results of Figure 8 represents the application of the 'JetBoy' of these projects. 실행은 에뮬레이션 도구인 안드로이드 가상 디바이스(AVD: Android Virtual Device)에서 처리한다. Running Android Virtual Device Emulation tools: Treat in (AVD Android Virtual Device). 'AspectJ'를 이용할 때 지정했듯이, 제약 조건이 충족되지 않은 경우 애플리케이션은 단순히 경고 메시지를 표시하고 어떠한 동적 UI도 표시하지 않고 종료한다. As specified when using the 'AspectJ', when no constraints are not met, the application simply displays a warning message and exits without displaying any dynamic UI. 하지만, 만족하는 경우 원래 실행 시와 동일한 UI를 표시하는 것이다. However, if you are satisfied to the original display the same UI and runtime. 이러한 접근 방식은 다른 프로젝트들에서도 작동하고 있다. This approach is working in other projects.

본 실시예서는 증가된 바이너리 코드의 크기도 확인한다. Clerical script of the present embodiment confirms the size of the increase in the binary code. 이러한 크기는 동적 클래스의 수에 의존하는 것을 전제로 한다. These sizes are based on the premise that depends on the number of dynamic classes. 하지만, [표 2]에 표시된 바와 같이 결과가 다름을 알 수 있다. However, it can be seen that the results are different, as shown in Table 2. 즉, 증가된 바이너리 코드의 크기 동적 클래스 개수와는 관계가 없다. In other words, there is no relationship between the size and the number of dynamic classes, increased binary code. 이것은 상수 계수에 접근해 있다. This is approaching the constant coefficient. 하지만 같은 오버헤드 크기를 나타내지 않는 것에 대해서는 설명할 필요가 있다. However, there is a need to describe things that do not represent the same overhead size.

각 프로젝트의 '모든 화면을 시작하는 시점(onCreate) 메소드'가 다른 구현체를 가지고 있기 때문에, 컴파일된 결과는 그 상이함을 코드 크기에서 보여주고 있다. Since each "time to begin any screen (onCreate) method, the project has a different implementation, the compiled results are shown in code size that its different. 따라서, 관점 지향 프로그래밍은 오버헤드를 거의 부과하지 않는다. Thus, aspect-oriented programming does not impose overhead substantially. 크기 증가분은 원래 크기의 '3 %' 미만이다. Size increment is less than "3%" of its original size. 또한, 대상 동적 클래스의 이름을 정확하게 지정하기가 코드 사이즈 면에서 최적화되어 있는지 여부를 검사한다. Also, check whether you have to specify the exact name of the dynamic class is optimized in terms of code size. 컨택트 매니져(ContactManager) 프로젝트를 가지고 하는 실험을 위해, *onCreate (Bundle)을 ContactManager.onCreate(Bundle)로 대체한다. For the experiments to have a contact manager (ContactManager) project, * replaces onCreate (Bundle) to ContactManager.onCreate (Bundle). 추정된 바이너리 코드 크기는 약 '26,239' 바이트이다. The estimated binary code size is from about '26, 239 'bytes. 이는 원래 사양과 비교할 때 코드 사이즈에서 더 많은 오버헤드를 보여준다. This shows more overhead in code size compared to the original specifications. 이러한, 이유는 이 사양에 대하여 받기(Import)로 가져왔어야 할 컨택트 매니져 클래스가 예기치 않게 총 코드 사이즈에 포함되었기 때문이다. This, because the contact manager classes can be brought to receive (Import) for this specification was included in the total code size unexpectedly. 따라서 도 8에 제시한 사양이 가장 최적화되었음이 증명된다. Therefore, the specification is certified under the most optimized presented in Fig.

[표 2]에서는 각 사양이 코드 사이즈 면에서 오버헤드를 얼마나 많이 부과하는지 비교한다. Table 2 compares the respective specifications that how much charge the overhead in terms of code size.

Figure 112013039394196-pat00002

또한, 시작 시에만 증가하여 부과되는 실행 시간을 평가한다. In addition, to evaluate the execution time will be charged with increasing only during startup. 본 실시예의 테스트 환경에서는 약 '1 초'가 소요되고 있으나 이는 오픈 고품질 컨텐츠(Open Quality Content)를 상용 제품으로 변경하는 데 걸리는 시간이다. In this embodiment, a test environment, and it takes about '1 seconds ", but this is the time it takes to change the open-quality content (Content Quality Open) as commercial products. 그래서 이 시간은 필요한 시간이며, 이 정도는 허용 범위 안에 든다. So this time is the time required for this degree are within the allowable range. 즉, 관점 지향 프로그래밍으로 인한 오버헤드는 코드 사이즈와 실행 시간의 측면에서 무시할 수 있다. That is, the overhead of aspect-oriented programming may be negligible in terms of code size and execution time.

이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. The above description would be possible only to those described as an example the technical idea of ​​the present embodiment by way of example, those skilled in the art An example of this embodiment and various modifications and variations without departing from the essential characteristics of this embodiment example. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. Accordingly, the embodiments are not intended to be is for illustrative and not intended to limit the technical idea of ​​the present embodiment example, is limited to these embodiments within the scope of the technical idea of ​​this embodiment, by example. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다. Example protection scope of this embodiment to be interpreted by the following claims, all spirits within a scope equivalent will be construed as included in the scope of this embodiment example.

이상에서 설명한 바와 같이 본 실시예는 컨텐츠 취합과 관련된 다양한 분야에 적용되어, 애플리케이션 개발자들이 개발한 컨텐츠 중 양질의 컨텐츠만을 해당 사업자에게 독점으로 제공할 수 있도록 해당 컨텐츠의 소스 코드와 무관하게 동적 코드 주입할 수 있는 효과를 발생하는 유용한 발명이다. The present embodiments as described above are applicable to various fields associated with content aggregation, application developers, regardless of the source of the content to provide only high-quality content from the content developed exclusively for its business dynamic code injection invention is useful for generating an effect that can be.

200: 컨텐츠 취합 장치 200: content aggregation devices
210: 소스 코드 입력부 220: 컨텐츠 취합부 210: source code input unit 220: content aggregation unit
224: 코드 삽입 지점 226: 실행지점 설정부 224: code insertion point 226: running point setting unit
228: 구현부 230: 변환부 228: implementation unit 230: transform unit
222: 선언부 222: declaration

Claims (14)

  1. 프로세서 및 메모리를 구비하는 데이터 처리 기기에서, 상기 메모리에 저장되며 상기 프로세서에 의해 실행되는 프로그램은, Programs in the data processing apparatus comprising a processor and a memory, are stored in the memory executed by the processor,
    소정의 프로그래밍 언어(Programming Language)로 생성되어 실행 가능한 프로그램의 소스 코드(Source Code)를 입력받는 소스 코드 입력 과정; Certain programming languages ​​(Programming Language) source code of the program is to create executable (Source Code) to receive an input source code input process;
    상기 소스 코드에서 최초 실행 함수로 제공되는 기 설정된 함수명을 지정하여 상기 최초 실행 함수 내에 특정 서비스(Specific Service) 전용으로 실행되도록 하는 추가 소스 코드의 코드 삽입 지점을 설정하는 컨텐츠 취합 과정; Additional content aggregation process of setting up the code insertion point in the source code to be executed by specifying a prescribed function name provided to the first execution functions in the source code to a particular service (Specific Service) only in the first run function; And
    상기 소스 코드를 기 설정된 프로그램 코드로 변환할 때 상기 코드 삽입 지점에 상기 추가 소스 코드를 삽입하는 변환 과정 When converting a program preset code, the source code conversion process for inserting the additional source code to the code insertion point,
    을 실행시키는 프로그램이되, 상기 컨텐츠 취합 과정은 상속된 클래스(Descending Class)를 포함한 모든 동적 클래스(Activity Class)가 모든 화면을 시작하는 시점(onCreate) 메소드를 호출(Call)할 때 분리 구현된 관심사를 결합 시키는 코드가 실행되도록 하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. Back program, the content aggregation process to run is a derived class (Descending Class) all the dynamic classes (Activity Class) is disconnected when you call (Call) to point (onCreate) method to start all screens, including the implementation concerns the combined recording medium in a computer-readable code is recording a program, characterized in that the run of.
  2. 프로세서 및 메모리를 구비하는 데이터 처리 기기에서, 상기 메모리에 저장되며 상기 프로세서에 의해 실행되는 프로그램은, Programs in the data processing apparatus comprising a processor and a memory, are stored in the memory executed by the processor,
    소스 코드에서 최초 실행 함수로 제공되는 기 설정된 함수명을 지정하는 선언(Declaration) 과정; Declaration (Declaration) procedure for assigning a predetermined function name provided in the source code by first executing the function;
    삽입 되어질 부분에서 실행되는 코드인 추가 소스 코드의 코드 삽입 지점을 설정하는 코드 삽입 지점 설정 과정; For setting the code insertion point of the additional source code is code that runs on the part to be inserted into the code insertion point in the setup process;
    상기 추가 소스 코드가 실행되는 지점을 설정하는 실행 지점 설정 과정; Running point setting process for setting the point at which the additional source code execution; And
    상기 추가 소스 코드를 구현하는 구현 과정 Implementation for implementing the additional source code
    을 실행시키는 프로그램이되, 상기 코드 삽입 지점 설정 과정은 상속된 클래스(Descending Class)를 포함한 모든 동적 클래스(Activity Class)가 모든 화면을 시작하는 시점(onCreate) 메소드를 호출(Call)할 때 분리 구현된 관심사를 결합 시키는 코드가 실행되도록 하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. When all the dynamic classes (Activity Class) calls (Call) to point (onCreate) method to start all screens are the programs, including the code insertion point in the setup process is a derived class (Descending Class) separating the implementation of running the recording medium on which the code is readable by a computer storing a program, characterized in that the run which incorporate the interest.
  3. 제 2 항에 있어서, 3. The method of claim 2,
    상기 소스 코드는 소정의 프로그래밍 언어로 생성되어 실행 가능한 프로그램의 코드인 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. The source code for a computer-readable recording medium storing a program, characterized in that is produced in a predetermined programming language code of an executable program.
  4. 제 2 항에 있어서, 3. The method of claim 2,
    상기 코드 삽입 지점 설정 과정은, Wherein the code insertion point setting process,
    상기 최초 실행 함수 내에 특정 서비스 전용으로 실행되도록 함께 포함되어 컴파일되는 상기 추가 소스 코드의 상기 코드 삽입 지점을 설정하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. The first recording medium run in the more that are compiled to run with a particular service is included with dedicated functions in a computer-readable recording a program, characterized in that for setting the code insertion point in the source code.
  5. 삭제 delete
  6. 제 2 항에 있어서, 3. The method of claim 2,
    상기 추가 소스 코드는 어드바이스(Advice)이며, 상기 코드 삽입 지점은 포인트컷(PointCut)이며, 상기 관심사를 결합 시키는 코드는 위빙(Weaving)인 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. It said additional source code advice (Advice), and the code insertion point is a point cut (PointCut), and the recording medium on which the code coupling the concern is a computer-readable recording a program, characterized in that the weaving (Weaving).
  7. 제 6 항에 있어서, 7. The method of claim 6,
    상기 동적 클래스는 슈퍼 클래스(Super Class)로서, 모든 UI(User Interface)와 관련된 클래스와 연관되는 최상위 라이브러리(Library) 클래스인 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. The dynamic class is the super class (Super Class) as all the UI (User Interface) and a computer-readable recording medium storing a program, characterized in that the top-level Library (Library) class that is associated with the class associated with it.
  8. 제 7 항에 있어서, The method of claim 7,
    상기 코드 삽입 지점 설정 과정은, Wherein the code insertion point setting process,
    상기 슈퍼 클래스를 상기 위빙의 대상으로 설정하여 모든 상속된 클래스(Descending Class)에 유효성을 부여하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. Readable recording medium for the superclass to a computer storing a program comprising granting validity to all the inherited class (Descending Class) by setting a target of the weaving.
  9. 제 8 항에 있어서, The method of claim 8,
    상기 코드 삽입 지점 설정 과정은, Wherein the code insertion point setting process,
    상기 슈퍼 클래스 지정 대신에 대상 클래스(Target Class)의 이름을 부여하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. Specify the target class instead of the superclass (Target Class) a computer-readable recording medium storing a program, characterized in that to give names.
  10. 프로세서 및 메모리를 구비하는 데이터 처리 기기에서, 상기 메모리에 저장되며 상기 프로세서에 의해 실행되는 프로그램은, Programs in the data processing apparatus comprising a processor and a memory, are stored in the memory executed by the processor,
    소스 코드에서 최초 실행 함수로 제공되는 기 설정된 함수명을 지정하는 선언(Declaration) 과정; Declaration (Declaration) procedure for assigning a predetermined function name provided in the source code by first executing the function;
    삽입 되어질 부분에서 실행되는 코드인 추가 소스 코드의 코드 삽입 지점을 설정하는 코드 삽입 지점 설정 과정; For setting the code insertion point of the additional source code is code that runs on the part to be inserted into the code insertion point in the setup process;
    상기 추가 소스 코드가 실행되는 지점을 설정하는 실행 지점 설정 과정; Running point setting process for setting the point at which the additional source code execution; And
    상기 추가 소스 코드를 구현하는 구현 과정 Implementation for implementing the additional source code
    을 실행시키는 프로그램이되, 상기 실행 지점 설정 과정은 상기 추가 소스 코드가 실행되는 지점을 설정한 후의 실패를 확인하는 사후 확인(Post-Checking) 지점보다 상기 추가 소스 코드가 실행되는 지점을 설정하기 전의 실패를 확인하는 사전 확인(Pre-Checking) 지점에서 실패가 확인되는 경우 서비스가 거부되도록 설정하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. Set the running back program, the launch point for the process before setting the point at which the additional source code to run more post-check (Post-Checking) points to determine a failure after setting the point at which the additional source code execution If the check fails, check in advance (pre-checking) to identify the failure point, a computer-readable recording medium storing a program comprising a set to a denial of service.
  11. 제 10 항에 있어서, 11. The method of claim 10,
    상기 실행 지점 설정 과정은, The running point setting process,
    상기 사전 확인 지점을 상기 사후 확인 지점보다 적절한 지점(Appropriate Point)으로 간주하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. Readable recording medium having the pre-check point to a computer storing a program, characterized in that to consider the post to an appropriate point (Appropriate Point) than the check point.
  12. 제 10 항에 있어서, 11. The method of claim 10,
    상기 구현 과정은, The implementation process,
    아웃소싱의 컨텐츠가 특정 서비스(Specific Service) 전용으로 특화되도록 상기 코드 삽입 지점에서 상기 추가 소스 코드를 구현하는 과정인 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. Record the contents of outsourcing that can be read from the code insertion point to be specific to a particular service (Specific Service) dedicated to the computer storing a program, characterized in that the process of implementing the additional source medium.
  13. 제 2 항에 있어서, 3. The method of claim 2,
    상기 선언 과정은, The declaration process,
    상기 소스 코드에 대한 애스팩트(Aspect)를 지정하고, 확장된 컴파일러와 관련 툴(Related Tool)로 언어 확장을 지원하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. Aspect (Aspect) specify and expand the compilers and related tools (Related Tool) in a computer-readable recording medium storing a program, characterized in that the supporting language extensions for the source code.
  14. 소정의 프로그래밍 언어로 생성되어 실행 가능한 프로그램의 소스 코드를 입력받는 소스 코드 입력부; Source code is generated at a predetermined input unit receives input of a programming language source code of an executable program;
    상기 소스 코드에서 최초 실행 함수로 제공되는 기 설정된 함수명을 지정하여 상기 최초 실행 함수 내에 특정 서비스 전용으로 실행되도록 하는 추가 소스 코드의 코드 삽입 지점을 설정하는 컨텐츠 취합부; Additional content unit collected to set the code insertion point in the source code by specifying a pre-set function name provided to the first execution functions in the source code to run on a specific service only in the first run function; And
    상기 소스 코드를 기 설정된 프로그램 코드로 변환할 때 상기 코드 삽입 지점에 상기 추가 소스 코드를 삽입하는 변환부 When converting a program preset code, the source code converting section for inserting the additional source code to the code insertion point,
    를 포함하되, 상기 컨텐츠 취합부는 상속된 클래스(Descending Class)를 포함한 모든 동적 클래스(Activity Class)가 모든 화면을 시작하는 시점(onCreate) 메소드를 호출(Call)할 때 분리 구현된 관심사를 결합 시키는 코드가 실행되도록 하는 것을 특징으로 하는 컨텐츠 취합 장치. , A class that inherits the content collecting unit comprising a (Descending Class) all the dynamic classes, including (Activity Class) code to combine the separate implementation of the concerns when you call (Call) to point (onCreate) method to start all screens content aggregation and wherein such that execution.
KR20130050140A 2013-05-03 2013-05-03 Apparatus for Providing Content Aggregation, Computer-Readable Recording Medium with Program Therefore KR101462062B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR20130050140A KR101462062B1 (en) 2013-05-03 2013-05-03 Apparatus for Providing Content Aggregation, Computer-Readable Recording Medium with Program Therefore

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20130050140A KR101462062B1 (en) 2013-05-03 2013-05-03 Apparatus for Providing Content Aggregation, Computer-Readable Recording Medium with Program Therefore

Publications (2)

Publication Number Publication Date
KR20140131153A true KR20140131153A (en) 2014-11-12
KR101462062B1 true KR101462062B1 (en) 2014-11-17

Family

ID=52290646

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20130050140A KR101462062B1 (en) 2013-05-03 2013-05-03 Apparatus for Providing Content Aggregation, Computer-Readable Recording Medium with Program Therefore

Country Status (1)

Country Link
KR (1) KR101462062B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141698A (en) * 1997-01-29 2000-10-31 Network Commerce Inc. Method and system for injecting new code into existing application code
JP2005018458A (en) * 2003-06-26 2005-01-20 Toshiba Tec Corp Programming support device and method, and programming support program
KR20060078095A (en) * 2004-12-30 2006-07-05 재단법인서울대학교산학협력재단 Method for weaving code fragments using code fragment numbering from programs
US20070022409A1 (en) * 2005-07-22 2007-01-25 Roman Levenshteyn System and method for transforming generic software code into operator specific code

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141698A (en) * 1997-01-29 2000-10-31 Network Commerce Inc. Method and system for injecting new code into existing application code
JP2005018458A (en) * 2003-06-26 2005-01-20 Toshiba Tec Corp Programming support device and method, and programming support program
KR20060078095A (en) * 2004-12-30 2006-07-05 재단법인서울대학교산학협력재단 Method for weaving code fragments using code fragment numbering from programs
US20070022409A1 (en) * 2005-07-22 2007-01-25 Roman Levenshteyn System and method for transforming generic software code into operator specific code

Also Published As

Publication number Publication date Type
KR20140131153A (en) 2014-11-12 application

Similar Documents

Publication Publication Date Title
Bruneton et al. The fractal component model and its support in java
Dig et al. How do APIs evolve? A story of refactoring
Cavé et al. Habanero-Java: the new adventures of old X10
Aracic et al. An overview of CaesarJ
Pawlak et al. JAC: an aspect‐based distributed dynamic framework
Dig et al. The role of refactorings in API evolution
Conchon et al. Jocaml: Mobile agents for objective-caml
US6836883B1 (en) Method and system for compiling multiple languages
US20050216885A1 (en) Attribute-Based Component Programming System and Methodology for Object-Oriented Languages
Appeltauer et al. ContextJ: Context-oriented programming with Java
Slee et al. Thrift: Scalable cross-language services implementation
US20030018950A1 (en) Dynamic redeploying environment for the rapid iterative development of software applications
US20070028208A1 (en) Runtime generative programming method and system
US20080313282A1 (en) User interface, operating system and architecture
US7370318B1 (en) System and methodology for asynchronous code refactoring with symbol injection
Pautasso Composing restful services with jopera
Thai et al. . NET framework essentials
Goncalves Beginning Java EE 6 Platform with GlassFish 3: from novice to professional
Steimann et al. Types and modularity for implicit invocation with implicit announcement
Röttger et al. Cqml+: Enhancements to cqml
US20110016449A1 (en) Method and system for integrating java and javascript technologies
EP1387262A1 (en) Method to generate synchronization contracts for software components and web services
Pratikakis et al. Transparent proxies for java futures
US20090164981A1 (en) Template Based Asynchrony Debugging Configuration
Young Using aspectj to build a software product line for mobile devices

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20171102

Year of fee payment: 4