KR20190060561A - THE INTERGRATED IoT PROGRAMMING METHOD AND SYSTEM WITH SELECTIVE ABSTRACTION OF THIRD-PARTY DEVICES - Google Patents

THE INTERGRATED IoT PROGRAMMING METHOD AND SYSTEM WITH SELECTIVE ABSTRACTION OF THIRD-PARTY DEVICES Download PDF

Info

Publication number
KR20190060561A
KR20190060561A KR1020170158887A KR20170158887A KR20190060561A KR 20190060561 A KR20190060561 A KR 20190060561A KR 1020170158887 A KR1020170158887 A KR 1020170158887A KR 20170158887 A KR20170158887 A KR 20170158887A KR 20190060561 A KR20190060561 A KR 20190060561A
Authority
KR
South Korea
Prior art keywords
internet
operated
code
program
heterogeneous
Prior art date
Application number
KR1020170158887A
Other languages
Korean (ko)
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 KR1020170158887A priority Critical patent/KR20190060561A/en
Publication of KR20190060561A publication Critical patent/KR20190060561A/en

Links

Images

Classifications

    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

The present invention relates to a method for integrating development environments of an Internet of Things (IoT) application via selective abstraction of heterogeneous devices and a system thereof. According to an embodiment of the present invention, the method for integrating development environments of an IoT application comprises the steps of: generating source codes via a code generation unit for implementing each of sub programs of a device to be operated through IoT with objects of one object oriented program using a predetermined programming language; analyzing and compiling the generated source codes via a compile unit to generate a program for the device to be operated through IoT; and controlling the device to be operated through IoT based on the generated program. The present invention can reduce the amount of program codes and reduce execution costs.

Description

이종 디바이스의 선택적 추상화를 통한 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법 및 시스템{THE INTERGRATED IoT PROGRAMMING METHOD AND SYSTEM WITH SELECTIVE ABSTRACTION OF THIRD-PARTY DEVICES}TECHNICAL FIELD [0001] The present invention relates to a method and system for integrating a development environment of an object Internet application through selective abstraction of heterogeneous devices.

본 발명은 이종 디바이스의 선택적 추상화를 통한 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법 및 시스템에 관한 것으로, 더욱 상세하게는 객체 지향 프로그래밍(Object Oriented Programming, OOP)의 추상화, 다형성 및 상속관계를 이용하여, 사물 인터넷 환경에서 다양한 이종 기기를 선택적으로 추상화하고, 각 기기별로 다양한 개발 환경을 하나로 통합하는 방법 및 시스템에 관한 것이다.The present invention relates to a method and system for integrating a development environment of object Internet applications through selective abstraction of heterogeneous devices, and more particularly, to a method and system for integrating a development environment of object Internet applications by using abstraction of Object Oriented Programming (OOP) And a method and system for selectively abstracting various heterogeneous devices in an object internet environment and integrating various development environments for each device into one.

사물 인터넷 어플리케이션은 여러 이종 기기가 협력하여 하나의 서비스를 제공하기 때문에, 개발자는 일반적으로 여러 사물 인터넷 기기에 대해 각각의 서브 프로그램(sub-program)들을 구현해주어야 한다. 각각의 서브 프로그램들은 물리적으로 분산된 이종 기기에서 신호와 데이터를 주고받으며 서비스를 실행하기 때문에, 개발자는 사물 인터넷 서비스 코드 외에도 이종기기의 특성에 맞는 코드 작성, 분산 환경에서의 데이터 동기화 및 기기간 통신 코드 작성을 추가적으로 고려해야한다.Since the object Internet application provides a service by a plurality of heterogeneous devices in cooperation, a developer generally has to implement each sub-program for various object Internet devices. Since each subprogram sends and receives signals and data from heterogeneous devices that are physically distributed, the developer can write code according to the characteristics of heterogeneous devices, data synchronization in a distributed environment, and communication code Additional consideration should be given to writing.

이러한 개발자의 부담을 줄여주기 위해, IT업체와 개발자 그룹은 여러 통합된 사물 인터넷 어플리케이션 개발 환경을 제안하였다. 통합된 사물 인터넷 어플리케이션 개발 모델은 여러 기기의 개발 환경, 기기간의 통신 및 동기화를 하나의 프로그래밍 환경으로 통합하여, 개발자가 마치 하나의 컴퓨팅 환경에서 동작하는 프로그램을 개발하듯이 사물 인터넷 어플리케이션을 개발할 수 있도록 한다. 통합된 사물 인터넷 어플리케이션 개발 환경을 통해, 개발자는 사물 인터넷 서비스 전체에 대한 프로그램 흐름과 데이터 통신 및 동기화 모델을 볼 수 있으며, 일부 개발 환경은 GUI를 통한 시각적인 프로그래밍 개발 환경을 제공하기도 한다. 하지만, 기존의 통합 개발 환경은 사물 인터넷 기기의 선택적 추상화나 함수 호출을 통한 통신 기법 단순화는 지원하지 않는 단점이 있다.To reduce the burden on developers, IT companies and developers have proposed several integrated Internet application development environments. The Integrated Object Internet Application Development Model integrates the development environment of various devices, communication and synchronization between devices into one programming environment, so that developers can develop Internet applications of things as if they are developing programs that operate in a single computing environment. do. Through the integrated object Internet application development environment, the developer can view the program flow, data communication and synchronization model for the whole Internet service of objects, and some development environment also provides a visual programming development environment through GUI. However, the existing integrated development environment has a disadvantage that it does not support selective abstraction of object Internet devices or simplification of communication techniques through function calls.

사물 인터넷 환경에서 이종 기기를 효율적으로 통합하기 위해서는, 통합된 개발 환경은 사물 인터넷 기기들의 선택적인 추상화가 필요하다. 같은 제품군의 기기라도 제조사나 모델에 따라 지원하는 기능이 다르고, 인터페이스도 다르기 때문에, 개발자는 다양한 기기를 지원하기 위해 해당 프로그램을 여러 가지 버젼으로 작성해야 하는 부담이 있다. 이러한 부담을 줄이기 위해, 사물 인터넷 어플리케이션 통합 개발 환경은 각 제품군에 대해 공통의 기능을 가지고 추상화하여, 기기별로 다양한 인터페이스를 하나로 통일해야한다. 하지만 모든 기기를 추상화하는 경우, 추상화가 필요없는 기기에 대해서도 표준화된 인터페이스로 추상화를 진행하여 오히려 개발자의 부담을 늘리게 된다. 따라서, 여러 제품이 있는 제품군에 대해서만 추상화를 진행하는 선택적 추상화 기법이 필요하다.In order to efficiently integrate heterogeneous devices in the Internet environment, the integrated development environment requires a selective abstraction of the Internet devices. Since the functions of the same product group differ depending on the manufacturer or model, and the interface is different, the developer has a burden to write the corresponding program in various versions in order to support various devices. To reduce this burden, the integrated Internet application development environment should be abstracted with common functions for each product group, and the various interfaces for each device should be unified into one. However, when all devices are abstracted, the abstraction is performed with standardized interfaces even for devices that do not require abstraction, thereby increasing the burden on the developer. Therefore, there is a need for an optional abstraction technique that abstracts only the product families with multiple products.

또한 통합된 사물 인터넷 어플리케이션 개발 환경은 기기간 통신 및 동기화를 단순하게 만드는 기법이 필요하다. 사물 인터넷 서비스는 여러 기기가 데이터를 주고받으며, 협력적으로 하나의 서비스를 제공하기 때문에, 개발자는 분산 환경에서의 기기간 통신 및 동기화 코드를 작성해야 한다. 이러한 기기간 통신 및 동기화는 프로그래밍을 어렵게 만들고, 데드락과 같은 오류를 발생하기 쉽게 한다. 이에, 통합된 사물 인터넷 어플리케이션 개발 환경은 기기간 통신 및 동기화를 자동으로 삽입하거나 단순하게 만드는 기능을 지원해야 한다. In addition, the integrated Internet application development environment requires a technique to simplify communication and synchronization between devices. Since the object Internet service sends and receives data between several devices and cooperatively provides one service, the developer must write the communication and synchronization code between devices in a distributed environment. Such inter-device communication and synchronization make programming difficult and error prone to deadlocks. Therefore, the integrated Internet application development environment should support the function of automatically inserting or simplifying communication and synchronization between devices.

대한민국 등록특허공보 제10-0280827호 (2000.11.13)Korean Patent Registration No. 10-0280827 (November 13, 2000)

본 발명은 전술한 바와 같은 문제점을 해결하기 위한 것으로서, 객체지향 프로그래밍(OOP)의 객체가 사물을 반영하여 설계된 것을 기초로 하여, 사물 인터넷 프로그래밍을 하나의 컴퓨터 환경에서 객체지향 프로그램을 작성하듯이 프로그래밍할 수 있도록 하는 객체지향 프로그래밍 기반 통합 사물 인터넷 개발 환경을 제안함에 목적이 있다. The object of the present invention is to solve the above-mentioned problems and to provide a method and apparatus for object-oriented programming (OOP) The goal of this paper is to propose an integrated Internet development environment based on object - oriented programming.

특히, 통합 개발 환경에서 개발자가 효율적으로 이종 기기를 관리를 지원하는 선택적 추상화 기법과, 분산 기기에서 통신 및 동기화를 쉽게 프로그래밍할 수 있는 분산 기기 통합 기법을 제안함에 목적이 있다.Especially, it is an object of the present invention to provide an optional abstraction technique in which a developer efficiently manages heterogeneous devices in an integrated development environment, and a distributed device integration method that can easily program communication and synchronization in a distributed device.

본 발명의 일 실시예에 따른 이종 디바이스의 선택적 추상화(abstraction)를 통한 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법에는, 소정의 프로그래밍 언어를 이용하여 사물 인터넷을 통해 동작될 디바이스의 서브 프로그램들 각각을 하나의 객체 지향 프로그램의 객체들로 구현하기 위한 소스 코드가 코드 생성부를 통해 생성되는 단계, 생성된 소스 코드를 컴파일부를 통해 분석하고 컴파일링(compiling)하여 사물 인터넷을 통해 동작될 디바이스에 대한 프로그램을 생성하는 단계 및 생성된 프로그램을 기초로 사물 인터넷을 통해 동작될 디바이스를 제어하는 단계가 포함될 수 있다.In order to integrate the development environment of the object Internet application through the selective abstraction of the heterogeneous device according to the embodiment of the present invention, A step of generating source code for implementation as objects of one object-oriented program through a code generation unit, a step of analyzing and compiling the generated source code through a compiler, And controlling the device to be operated via the object Internet based on the generated program.

본 발명의 일 실시예에 따른 소정의 프로그래밍 언어의 구문(syntax)에는, 프로그램으로 컴파일 될 클래스를 선언하기 위한 제 1 지시자(pragma), 클래스와 사물 인터넷을 통해 동작되는 디바이스 간의 매핑(mapping)을 위한 제 2 지시자 및 클래스 간의 계층 구조를 이용하여 이종 디바이스의 선택적 추상화가 가능하도록 하기 위한 제 3 지시자가 포함될 수 있다.The syntax of a given programming language according to an embodiment of the present invention includes a first pragma for declaring a class to be compiled into a program and a mapping between a class and a device operated through the object Internet And a third indicator for enabling selective abstraction of heterogeneous devices using a hierarchy between classes.

본 발명의 일 실시예에 따른 클래스에는, 사물 인터넷을 통해 동작되는 디바이스의 공통된 인터페이스를 정의하기 위한 상위 클래스(ancestor class) 및 사물 인터넷을 통해 동작되는 디바이스 각각의 세부 기능을 구현하기 위한 하위 클래스(descendant class)가 포함될 수 있다.The class according to an embodiment of the present invention includes an ancestor class for defining a common interface of a device operated through the object Internet and a subclass for implementing a detailed function of each device operated through the object Internet descendant class) may be included.

본 발명의 일 실시예에 따른 생성된 소스 코드를 컴파일부를 통해 분석하고 컴파일링하여 사물 인터넷을 통해 동작되는 디바이스에 대한 프로그램을 생성하는 단계에는, 컴파일부의 마커(marker)를 통해 소스 코드를 분석하여 소스 코드가 사물 인터넷을 통해 동작되는 디바이스에 관계없이 실행될 수 있는 코드로 변환되는 단계, 컴파일부의 파티셔너(partitioner)를 통해 변환된 코드가 사물 인터넷을 통해 동작되는 디바이스에 대한 코드로 각각 분할되고 분할된 코드에 통신 명령어가 삽입 및 변환되는 단계 및 컴파일부의 커스터마이저(customizer)를 통해 분할된 코드가 사물 인터넷을 통해 동작되는 디바이스에 대한 아키텍쳐(architecture) 정보를 기초로 컴파일링되는 단계가 더 포함될 수 있다.The generated source code according to an embodiment of the present invention is analyzed and compiled through a compiler to generate a program for a device operated through the object Internet. The source code is analyzed through a marker of the compiling unit The source code is converted into a code that can be executed regardless of devices operated on the object Internet, the code converted by the partitioner of the compiling unit is divided into codes for devices operated through the object Internet, Further comprising the step of inserting and translating the communication instruction into the code and the step of compiling the code segmented by the customizer of the compiler based on the architecture information for the device operated through the object internet .

본 발명의 일 실시예에 따른 생성된 프로그램을 기초로 사물 인터넷을 통해 동작되는 디바이스들을 제어하는 단계에는, 장치 관리부를 통해 생성된 프로그램에 사물 인터넷을 통해 동작되는 디바이스가 등록되고 이종 디바이스가 선택적 추상화되는 단계가 더 포함될 수 있다.The step of controlling devices operated through the object Internet based on the generated program according to an embodiment of the present invention includes a step of registering a device operated through the object Internet in a program generated through the device management unit, May be further included.

본 발명의 일 실시예에 따른 생성된 프로그램을 기초로 사물 인터넷을 통해 동작되는 디바이스들을 제어하는 단계에는, 통신 관리부를 통해 생성된 프로그램의 객체가 사물 인터넷을 통해 동작되는 디바이스와 매핑되고 객체 간의 통신이 관리되는 단계가 더 포함될 수 있다.The step of controlling the devices operated through the object Internet based on the generated program according to an embodiment of the present invention includes a step of mapping an object of the program generated through the communication management unit to a device operated through the object Internet, This managed step may be further included.

본 발명의 일 실시예에 따른 생성된 프로그램을 기초로 사물 인터넷을 통해 동작되는 디바이스들을 제어하는 단계에는, 메모리 관리부를 통해 이종 디바이스의 공유 메모리가 지원 및 관리되는 단계가 더 포함되며, 이종 디바이스의 공유 메모리는 이기종 분산 공유 메모리 기법(IoT-HDSM: IoT-Heterogeneous Distributed Shared Memory)를 이용한 가상 메모리 공간일 수 있다.The step of controlling the devices operated through the object Internet based on the generated program according to the embodiment of the present invention further includes a step of supporting and managing the shared memory of the heterogeneous device through the memory management unit, The shared memory may be a virtual memory space using IoT-Heterogeneous Distributed Shared Memory (IoT-HDSM).

본 발명의 일 실시예에 따른 이종 디바이스의 선택적 추상화(abstraction)를 통한 사물 인터넷 어플리케이션의 개발 환경 통합 시스템에는, 소정의 프로그래밍 언어를 이용하여 사물 인터넷을 통해 동작되는 디바이스의 서브 프로그램들을 각각 하나의 객체 지향 프로그램의 객체들로 구현하기 위한 소스 코드를 생성하는 코드생성부, 생성된 소스 코드를 분석하고 컴파일링(compiling)하여 사물 인터넷을 통해 동작되는 디바이스에 대한 프로그램을 생성하기 위한 컴파일부, 생성된 프로그램에 사물 인터넷을 통해 동작되는 디바이스를 등록하고 이종 디바이스를 선택적 추상화하기 위한 장치 관리부, 생성된 프로그램의 객체를 사물 인터넷을 통해 동작되는 디바이스와 매핑하고 객체 간의 통신을 관리하기 위한 통신 관리부 및 이종 디바이스의 공유 메모리를 지원 및 관리하기 위한 메모리 관리부가 포함될 수 있다.In the development environment integration system of the object Internet application through the selective abstraction of the heterogeneous device according to the embodiment of the present invention, the subprograms of the device operated through the object Internet are classified into one object A compiling unit for generating a program for a device operated through the object Internet by analyzing and compiling the generated source code to generate source code to be implemented by the objects of the oriented program, A device management unit for registering a device operated through the object Internet on the program and selectively abstracting the heterogeneous devices, a communication management unit for mapping the generated program object to a device operated on the object Internet, and managing communication between the objects, Shared memory And a memory management unit for supporting and managing the memory.

본 발명의 일 실시예에 따른 소정의 프로그래밍 언어의 구문(syntax)에는, 프로그램으로 컴파일 될 클래스를 선언하기 위한 제 1 지시자(pragma), 클래스와 사물 인터넷을 통해 동작되는 디바이스 간의 매핑(mapping)을 위한 제 2 지시자 및 클래스 간의 계층 구조를 이용하여 이종 디바이스의 선택적 추상화가 가능하도록 하기 위한 제 3 지시자가 포함될 수 있다.The syntax of a given programming language according to an embodiment of the present invention includes a first pragma for declaring a class to be compiled into a program and a mapping between a class and a device operated through the object Internet And a third indicator for enabling selective abstraction of heterogeneous devices using a hierarchy between classes.

본 발명의 일 실시예에 따른 클래스에는, 사물 인터넷을 통해 동작되는 디바이스의 공통된 인터페이스를 정의하기 위한 상위 클래스(ancestor class) 및 사물 인터넷을 통해 동작되는 디바이스 각각의 세부 기능을 구현하기 위한 하위 클래스(descendant class)가 포함될 수 있다.The class according to an embodiment of the present invention includes an ancestor class for defining a common interface of a device operated through the object Internet and a subclass for implementing a detailed function of each device operated through the object Internet descendant class) may be included.

본 발명의 일 실시예에 따른 컴파일부에는, 소스 코드를 분석하여 소스 코드를 사물 인터넷을 통해 동작되는 디바이스에 관계없이 실행될 수 있는 코드로 변환하기 위한 마커(marker), 변환된 코드를 사물 인터넷을 통해 동작되는 디바이스에 대한 코드로 각각 분할하고 분할된 코드에 통신 명령어를 삽입 및 변환하기 위한 파티셔너(partitioner) 및 분할된 코드를 사물 인터넷을 통해 동작되는 디바이스에 대한 아키텍쳐(architecture) 정보를 기초로 컴파일링하기 위한 커스터마이저(customizer)가 더 포함될 수 있다.The compiling unit according to an embodiment of the present invention includes a marker for analyzing the source code and converting the source code into a code that can be executed regardless of devices operated on the object Internet, A partitioner for dividing each of the code into a code for a device operated through the Internet and inserting and converting a communication command into the divided code, and a partitioner for dividing the divided code into architecture information for a device operated over the Internet And may further include a customizer for compiling.

본 발명의 일 실시예에 따른 이종 디바이스의 공유 메모리는 이기종 분산 공유 메모리 기법(IoT-HDSM: IoT-Heterogeneous Distributed Shared Memory)를 이용한 가상 메모리 공간일 수 있다.The shared memory of the heterogeneous device according to an exemplary embodiment of the present invention may be a virtual memory space using IoT-Heterogeneous Distributed Shared Memory (IoT-HDSM).

한편, 본 발명의 일 실시예에 의하면, 전술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다.According to another aspect of the present invention, there is provided a computer-readable recording medium storing a program for causing a computer to execute the above-described method.

본 발명의 일 실시예로서 제공되는 사용자 중독 진단 방법 및 시스템에 따르면, 객체 지향 프로그래밍(OOP)의 특성인 추상화를 디바이스의 종류와 프로그래머의 필요에 따라 선택적으로 적용할 수 있게 함으로써 불필요한 추상화를 줄이거나 다양한 디바이스를 적절하게 추상화하여 관리할 수 있다. 이를 통해 프로그램 코드의 양을 줄일 수 있으며, 고정된 표준에 따른 추상화를 사용하는 방식보다 실행시간 비용을 줄일 수 있다. According to the user-poisoning diagnosis method and system provided as one embodiment of the present invention, it is possible to selectively apply an abstraction characteristic of object-oriented programming (OOP) according to the kind of a device and a need of a programmer, thereby reducing unnecessary abstraction Various devices can be appropriately abstracted and managed. This reduces the amount of program code and reduces runtime costs over the use of fixed-standard abstractions.

또한, 본 발명의 일 실시예로서 제공되는 사용자 중독 진단 방법 및 시스템에 따르면, 사물 인터넷 어플리케이션 통합 개발 환경에서 프로그래머가 효율적으로 이종 디바이스 간의 통신 및 동기화를 용이하게 프로그래밍 할 수 있어 사용자의 편의를 향상시킬 수 있다.In addition, according to the method and system for diagnosing user's poisoning provided as an embodiment of the present invention, a programmer can easily program communication and synchronization between heterogeneous devices in an integrated Internet application development environment to improve user convenience .

도 1a는 본 발명의 일 실시예에 따른 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법을 나타낸 순서도이다.
도 1b는 본 발명의 일 실시예에 따른 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법 중 소스 코드를 분석하고 컴파일링하여 프로그램을 생성하는 방법을 나타낸 순서도이다.
도 1c는 본 발명의 일 실시예에 따른 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법 중 사물 인터넷 디바이스를 제어하는 방법을 나타낸 순서도이다.
도 2는 본 발명의 일 실시예에 따라 작성된 사물 인터넷 어플리케이션의 코드의 예를 나타낸다.
도 3은 본 발명의 일 실시예에 따른 사물 인터넷 어플리케이션의 개발 환경 통합 시스템의 컴파일 과정을 나타낸 블록도이다.
도 4은 본 발명의 일 실시예에 따라 동작하는 사물 인터넷 디바이스를 위한 코드의 예를 나타낸다.
도 5는 본 발명의 일 실시예에 따른 (a) 사물 인터넷 어플리케이션의 개발 환경 통합 시스템을 나타낸 블록도, (b) 사물 인터넷 어플리케이션의 개발 환경 통합 시스템 중 컴파일부를 나타낸 블록도이다.
도 6은 본 발명의 일 실시예에 따른 사물 인터넷의 어플리케이션 개발 환경 통합 시스템의 전체적인 동작 과정을 나타낸 블록도이다.
도 7은 종래의 사물 인터넷 어플리케이션 개발 시스템의 블록도 및 본 발명의 일 실시예에 따른 사물 인터넷 어플리케이션의 개발 환경 통합 시스템의 블록도의 또다른 예를 나타낸다.
FIG. 1A is a flowchart illustrating a method for integrating a development environment of an object Internet application according to an embodiment of the present invention.
FIG. 1B is a flowchart illustrating a method of analyzing source code and generating a program by compiling source code among methods of integrating a development environment of a thing Internet application according to an embodiment of the present invention.
FIG. 1C is a flowchart illustrating a method for controlling an object Internet device in a method for integrating a development environment of an object Internet application according to an exemplary embodiment of the present invention. Referring to FIG.
FIG. 2 shows an example of a code of a thing Internet application created according to an embodiment of the present invention.
FIG. 3 is a block diagram illustrating a compiling process of a development environment integration system for an object Internet application according to an exemplary embodiment of the present invention. Referring to FIG.
FIG. 4 shows an example of a code for an object Internet device operating in accordance with an embodiment of the present invention.
FIG. 5 is a block diagram illustrating a development environment integration system of a () object Internet application according to an embodiment of the present invention, and (b) a compiling unit of a development environment integration system of the object Internet application.
FIG. 6 is a block diagram illustrating an overall operation of an application development environment integration system for the Internet of Things according to an embodiment of the present invention. Referring to FIG.
FIG. 7 is a block diagram of a conventional object Internet application development system and another example of a block diagram of a development environment integration system for an object Internet application according to an embodiment of the present invention.

본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.The terms used in this specification will be briefly described and the present invention will be described in detail.

본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다. While the present invention has been described in connection with what is presently considered to be the most practical and preferred embodiment, it is to be understood that the invention is not limited to the disclosed embodiments. Also, in certain cases, there may be a term selected arbitrarily by the applicant, in which case the meaning thereof will be described in detail in the description of the corresponding invention. Therefore, the term used in the present invention should be defined based on the meaning of the term, not on the name of a simple term, but on the entire contents of the present invention.

명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.When an element is referred to as " including " an element throughout the specification, it is to be understood that the element may include other elements as well, without departing from the spirit or scope of the present invention. Also, the terms " part, " " module, " and the like described in the specification mean units for processing at least one function or operation, which may be implemented in hardware or software or a combination of hardware and software .

아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings, which will be readily apparent to those skilled in the art. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. In order to clearly illustrate the present invention, parts not related to the description are omitted, and similar parts are denoted by like reference characters throughout the specification.

이하 첨부된 도면을 참고하여 본 발명을 상세히 설명하기로 한다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.

도 1a는 본 발명의 일 실시예에 따른 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법을 나타낸 순서도이고, 도 1b는 본 발명의 일 실시예에 따른 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법 중 소스 코드를 분석하고 컴파일링하여 프로그램을 생성하는 방법을 나타낸 순서도이며, 도 1c는 본 발명의 일 실시예에 따른 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법 중 사물 인터넷 디바이스를 제어하는 방법을 나타낸 순서도이다.FIG. 1A is a flowchart illustrating a method of integrating a development environment of a thing Internet application according to an embodiment of the present invention. FIG. 1B is a flowchart illustrating a method of integrating a development environment of a thing Internet application according to an embodiment of the present invention. FIG. 1C is a flow chart illustrating a method for controlling an object Internet device in a method of integrating a development environment of an object Internet application according to an exemplary embodiment of the present invention. Referring to FIG.

도 1을 참조하면, 본 발명의 일 실시예에 따른 이종 디바이스의 선택적 추상화(abstraction)를 통한 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법에는, 소정의 프로그래밍 언어를 이용하여 사물 인터넷을 통해 동작될 디바이스의 서브 프로그램들 각각을 하나의 객체 지향 프로그램의 객체들로 구현하기 위한 소스 코드가 코드 생성부(110)를 통해 생성되는 단계(S110), 생성된 소스 코드를 컴파일부(120)를 통해 분석하고 컴파일링(compiling)하여 사물 인터넷을 통해 동작될 디바이스에 대한 프로그램을 생성하는 단계(S120) 및 생성된 프로그램을 기초로 사물 인터넷을 통해 동작될 디바이스를 제어하는 단계(S130)가 포함될 수 있다.Referring to FIG. 1, a method for integrating a development environment of an object Internet application through selective abstraction of a heterogeneous device according to an embodiment of the present invention includes integrating a development environment The source code for implementing each of the subprograms of one object-oriented program is generated through the code generator 110 (S110), and the generated source code is analyzed through the compiler 120 Compiling the program to create a program for a device to be operated through the object Internet (S120), and controlling a device to be operated over the object Internet based on the generated program (S130).

본 발명이 속하는 기술 분야에서 추상화(abstraction)란 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다. 즉, 추상화는 필요한 부분, 중요한 부분을 통합하여 하나로 만드는 것을 말하며, 여러 가지 요소들을 하나로 통합하는 방향성을 가지고 있다. 추상화를 이용하여 핵심적인 것을 간추려 표현하게 되면, 복잡한 내용도 한 눈에 알아볼 수 있어서 이해하기 쉽다는 장점이 있다.Abstraction refers to the trimming of core concepts or functions from complex data, modules, systems, etc. in the art to which the present invention pertains. In other words, abstraction means combining necessary parts and important parts into one, and has the direction to integrate various elements into one. If you use abstraction to express key things in a short time, you can recognize complex contents at a glance, and it is easy to understand.

즉, 본 발명의 일 실시예에 의하면 이러한 추상화 작업를 통해 각 사물 인터넷 디바이스의 제품군에 대한 공통의 기능을 통합하여 디바이스별로 다양한 인터페이스를 하나로 통일할 수 있으며, 추상화가 필요없는 디바이스에 대해서 추상화를 진행하지 않고 여러 디바이스가 있는 제품군에 대해서만 추상화를 진행하는 선택적 추상화를 진행할 수 있어 사용자의 부담을 줄이고 편의를 향상시킬 수 있다.In other words, according to the embodiment of the present invention, it is possible to integrate common functions for the product groups of each object Internet device through such an abstracting operation to unify various interfaces for each device, and to perform abstraction on devices that do not need abstraction It is possible to proceed with the selective abstraction of the abstraction only for the product group having many devices, thereby reducing the burden on the user and improving the convenience.

또한, 본 발명의 일 실시예에 의하면 소정의 프로그래밍 언어(에스페란토 언어, Esperanto)를 통해 사물 인터넷 디바이스에서 구동되는 각각의 서브 프로그램들 각각을 하나의 객체 지향 프로그램들의 객체들로 구현할 수 있을 뿐만 아니라, 사물 인터넷 디바이스 간의 통신을 클래스 사이의 함수 호출로 구현할 수 있으며, 객체 지향 프로그램의 상속관계를 이용하여 사물 인터넷 디바이스의 추상화를 지원할 수 있다. In addition, according to an embodiment of the present invention, not only can each of the subprograms driven in the object Internet device be implemented as objects of one object oriented program through a predetermined programming language (Esperanto language) Communication between objects Internet devices can be implemented as function calls between classes, and it is possible to support object Internet device abstraction using the inheritance relationship of object-oriented programs.

또한, 소정의 프로그래밍 언어(에스페란토 언어, Esperanto)는 C++ 언어를 확장하지만, C++ 언어의 특정 기능을 필요로 하지 않기 때문에 그 의미는 C++ 언어에 의해 제한되지 않는다.In addition, certain programming languages (Esperanto, Esperanto) extend the C ++ language, but the meaning is not limited by the C ++ language, as it does not require the specific functions of the C ++ language.

도 2는 (a) 본 발명의 일 실시예에 따라 작성된 소정의 프로그래밍 언어(에스페란토 언어, Esperanto)의 구문을 포함하는 사물 인터넷 어플리케이션의 코드의 예, (b) 본 발명의 일 실시예에 따른 사물 인터넷 디바이스의 선택적 추상화가 적용된 클래스의 선언의 예를 나타낸다.FIG. 2 is a diagram illustrating (a) an example of a code for an object Internet application including a syntax of a predetermined programming language (Esperanto language) created according to an embodiment of the present invention, (b) an object according to an embodiment of the present invention An example of declaration of a class to which an optional abstraction of an Internet device is applied is shown.

도 2를 참조하면, 본 발명의 일 실시예에 따른 소정의 프로그래밍 언어(에스페란토 언어, Esperanto)의 구문(syntax)에는, 프로그램으로 컴파일 될 클래스를 선언하기 위한 제 1 지시자(pragma)(c1), 클래스와 사물 인터넷을 통해 동작되는 디바이스 간의 매핑(mapping)을 위한 제 2 지시자(c2) 및 클래스 간의 계층 구조를 이용하여 이종 디바이스의 선택적 추상화가 가능하도록 하기 위한 제 3 지시자(c3)가 포함될 수 있다.Referring to FIG. 2, a syntax of a predetermined programming language (Esperanto) according to an exemplary embodiment of the present invention includes a first indicator p1 for declaring a class to be compiled into a program, A second indicator c2 for mapping classes and devices operating over the Internet and a third indicator c3 for enabling selective abstraction of heterogeneous devices using a hierarchy between classes .

본 발명의 일 실시예에 따른 클래스에는, 사물 인터넷을 통해 동작되는 디바이스의 공통된 인터페이스를 정의하기 위한 상위 클래스(ancestor class) 및 사물 인터넷을 통해 동작되는 디바이스 각각의 세부 기능을 구현하기 위한 하위 클래스(descendant class)가 포함될 수 있다. 각 클래스는 객체 지향 프로그래밍의 상속관계를 이용하여 구현이 가능하며, 상위 클래스를 통해 추상화된 인터페이스를 이용하여 사물 인터넷 디바이스를 제어할 수 있고, 후술할 시스템(100)을 통해 사용자 환경에 있는 디바이스를 파악하여 세부 기능이 구체화된 하위 클래스의 바이너리를 연결함으로써 사용자가 다양한 디바이스를 제어할 수 있도록 할 수 있다.The class according to an embodiment of the present invention includes an ancestor class for defining a common interface of a device operated through the object Internet and a subclass for implementing a detailed function of each device operated through the object Internet descendant class) may be included. Each class can be implemented using the inheritance relation of object-oriented programming. The object Internet device can be controlled by using the abstracted interface through the superclass, and a device in the user environment can be controlled through the system 100, So that the user can control various devices by connecting the binaries of the subclass in which the detailed function is specified.

도 2를 참조하면, 제 1 지시자(c1)는 EspDevDecl라고 칭할 수 있으며, 제 1 지시자(EspDevDecl)(c1)는 이름(devlD), 생성자 및 소멸자로 프로그램이 가능한 디바이스를 선언할 수 있다. 생성자와 소멸자는 디바이스의 서브 프로그램의 처음과 끝에서 순차적으로 호출될 수 있다. 예를 들어, 도 2의 (a)에서와 같이 생성자와 소멸자가 있는 CAM(IP 카메라) 및 Phone과 같은 프로그래밍 가능한 디바이스를 선언할 수 있다. 이때, 컴파일러가 주석 처리된 제 1 지시자(EspDevDecl)(c1) 디바이스에 대한 하위 프로그램 바이너리를 생성하기 때문에 제 1 지시자(EspDevDecl)(c1)은 프로그래밍 가능한 디바이스에만 허용될 수 있다.Referring to Fig. 2, the first indicator c1 may be called EspDevDecl, and the first indicator EspDevDecl c1 may declare a device capable of being programmed with a name (devlD), a constructor and a destructor. Constructors and destructors can be called sequentially at the beginning and end of a device's subprograms. For example, a programmable device such as a CAM (IP camera) and a Phone with a constructor and a destructor can be declared as in FIG. 2 (a). At this time, the first indicator (EspDevDecl) (c1) can be allowed only to the programmable device since the compiler generates the sub-program binary for the annotated first indicator (EspDevDecl) (c1) device.

도 2를 참조하면, 제 2 지시자(c2)는 EspDevice라고 칭할 수 있으며, 제 2 지시자(EspDevice)(c2)는 주석이 달린 클래스가 선언된 디바이스에 매핑(mapping)할 수 있다. 제 2 지시자(EspDevice)(c2)는 항상 클래스 선언 위에 위치하며 바로 아래 선언된 클래스를 구문에 포함된 디바이스의 이름과 연결할 수 있으며, 제 1 지시자(EspDevDecl)(c1)에 포함된 이름과 연결될 수 있다. 예를 들어, 사용자는 도 2의 (a)의 10행과 같이 제 2 지시자(EspDevice)(c2) 주석을 이용하여 Cam 장치에 IPCamera 클래스를 설치할 수 있다. 이 때, 사용자는 디바이스에서 실행되어야하는 코드에 대해서만 주석을 삽입해야하며, 주석이 주어지면 컴파일러를 통해 성능 평가 결과에 따라 비주석 명령을 적절한 사물 인터넷 디바이스에 자동으로 매핑할 수 있다.Referring to FIG. 2, the second indicator c2 may be referred to as EspDevice, and the second indicator EspDevice c2 may be mapped to the device on which the annotated class is declared. The second directive (EspDevice) (c2) is always located above the class declaration and can be concatenated with the name of the device contained in the statement directly below it and can be associated with the name contained in the first directive (EspDevDecl) (c1) have. For example, the user can install the IPCamera class in the Cam device using the second indicator (EspDevice) (c2) annotation as shown in line 10 of FIG. 2 (a). At this time, the user must insert comments only for the code that should be executed on the device, and when given a comment, the compiler can automatically map the non-annotation command to the appropriate object Internet device according to the performance evaluation result.

또한, 제 2 지시자(EspDevice)(c2)는 선택적으로 조건문을 포함할 수 있으며, 이 조건문은 하드웨어 변수의 값을 표현할 수 있다. 즉, 제 2 지시자(c2)는 부가적으로 디바이스의 조건을 인수(argument)로서 전달하여 해당하는 물리적 디바이스를 지정할 수 있다. 사물 인터넷 개발 환경을 구축하기 위해서는 디바이스 유형, 공급 업체, 모델, 아키텍처 및 운영 체제와 같은 각 디바이스의 하드웨어에 대한 설명이 필요하므로 제 2 지시자(EspDevice)(c2)를 통해 설명을 확인하고, 개체를 적절한 디바이스에 매핑할 수 있다. 예를 들어, 도 2의 (b)를 참조하면 Bulb 디바이스의 사용자는 vendor 및 model 런타임 변수(Hue.h의 2행 및 LIFX.h의 2행과 9행)로 해당 클래스에 주석을 주석을 달 수 있으며, 주석이 달린 조건에 따라 후술할 사물 인터넷 개발 환경 시스템(100)을 통해 Hue, LIFX 및 LIFXZ 클래스를 Hue, LIFX 및 LIFXZ smartbulbs와 같은 상응하는 물리적 디바이스로 매핑할 수 있다.In addition, the second indicator EspDevice c2 may optionally include a conditional statement, which may express the value of the hardware variable. That is, the second indicator c2 can additionally specify the corresponding physical device by transferring the condition of the device as an argument. Things To build an Internet development environment requires a description of each device's hardware, such as device type, vendor, model, architecture, and operating system, so use the second directive (EspDevice) (c2) You can map to the appropriate device. For example, referring to FIG. 2 (b), a user of a Bulb device annotates the class with the vendor and model runtime variables (2 lines in Hue.h and lines 2 and 9 in LIFX.h) And the Hue, LIFX, and LIFXZ classes can be mapped to corresponding physical devices such as Hue, LIFX, and LIFXZ smartbulbs through the object Internet development environment system 100 described below according to annotated conditions.

도 2를 참조하면, 제 3 지시자(c3)는 EspImport라고 칭할 수 있으며, 제 3 지시자(EspImport)(c3)는 외부에서 제 2 지시자(EspDevice)(c2)로 선언된 클래스를 연결하는 역할을 하며, 클래스 이름과 함수 이름으로 구성될 수 있다. 예를 들어, 제 3 지시자(EspImport)(c3) 및 후술할 시스템(100)을 통한 가져오기 기능을 이용하면 사물 인터넷 응용 프로그램이 Hue 및 LIFX bulbs와 같이 프로그래밍 할 수 없는 이종 디바이스를 이용할 수 있다.Referring to FIG. 2, the third indicator c3 may be called EspImport, the third indicator EspImport c3 may be used to connect classes declared by the second indicator EspDevice c2 from the outside , A class name, and a function name. For example, using the third indicator (EspImport) (c3) and the import function via the system 100 described below, the object Internet application can use a disparate device that can not be programmed, such as Hue and LIFX bulbs.

도 2의 (a)를 참조하면, 제 3 지시자(EspImport)(c3)는 모든 className 디바이스를 바인딩하는 가져오기 기능(7행)을 생성할 수 있으며, 가져오기 기능은 연결된 모든 디바이스의 className 객체를 반환할 수 있다. 따라서, 사용자는 해당 클래스 유형을 className 인수(argument)로서 전달하여 특정 유형의 디바이스를 지정할 수 있다. 예를 들어, 사용자가 SmartBulb 대신 LIFX를 첫번째 인수로 사용하면 가져온 함수는 연결된 LIFX 및 LIFXZ 객체를 반환하지만 Hue 객체는 반환하지 않는다.Referring to FIG. 2 (a), a third indicator (EspImport) (c3) can generate an import function (line 7) for binding all className devices. The import function acquires the className object Can return. Thus, a user can specify a specific type of device by passing the class type as an argument of className. For example, if a user uses LIFX as the first argument instead of SmartBulb, the imported function returns the associated LIFX and LIFXZ objects, but not the Hue object.

전술한 지시자를 통해 도 2의 (a)를 구체적으로 살펴보면, 도 2의 (a)가 나타내는 사물 인터넷 어플리케이션은 IPCamera가 아기가 우는 것을 감지하여 Mobile 디바이스와 SmartBulb를 통해 알려주는 어플리케이션이다. IPCamera와 Mobile 클래스로 구성된 객체 지향 프로그램(OOP)이 소정의 프로그래밍 언어(이하, Esperanto 언어)과 함께 나타나 있다. IPCamera와 Mobile 클래스는 제 2 지시자(EspDevivce)(c2)를 통해 각각 Cam과 Phone이라는 디바이스와 연결되어 있으며 제 1 지시자(EspDevDecl)(c1)에 포함되어 있는 cam_ctor, m_ctor이라는 생성자(소멸자는 편의를 위해 생략함)를 통해 메인 함수를 구현했다. 2 (a) through FIG. 2 (a), the object Internet application shown in FIG. 2 (a) is an application that IPCamera detects when the baby is crying and informs the mobile device via SmartBulb. An object-oriented program (OOP) composed of IPCamera and Mobile classes is shown along with a predetermined programming language (hereinafter Esperanto language). The IPCamera and Mobile classes are connected to Cam and Phone devices, respectively, via a second indicator (EspDevivce) (c2), and the cam_ctor and m_ctor constructors included in the first indicator (EspDevDecl) (c1) Omitted) to implement the main function.

또한, 제 3 지시자(EspImport)(c3)를 통해 SmartBulb 클래스를 getBulbs 함수를 통해 연결하였다. Global 변수로 선언되어 있는 IPCamera 포인터 타입의 cam, Mobile 포인터의 리스트 형식의 변수 m_list, SmartBulb 이중 포인터 타입의 bulbs, 그리고 정수 변수 num_bulbs는 Cam과 Phone 두 타입의 디바이스에서 모두 공유되며 모든 디바이스가 일관된 값을 볼 수 있다. 디바이스 Cam의 생성자 역할을 하는 cam_ctor 함수를 살펴보면, IPCamera 포인터 변수인 cam을 new 키워드를 통해 생성된 IPCamera 객체로 초기화하고 bulbs 변수를 getBulbs 함수를 통해 초기화한다. getBulbs 함수는 EspImport를 통해 선언된 함수로 SmartBulb 클래스 혹은 하위 클래스로부터 만들어진 실행파일을 구동하는 디바이스를 찾아 SmartBulb 이중 포인터 형식으로 반환해주는 함수이다. IPCamera의 onBabyCry 함수는 Cam 디바이스가 아기가 우는 상황이라고 판단하였을 때 동작하며 현재 연결된 Phone 디바이스의 alarm 함수를 호출해주고, 현재 연결된 SmarBulb 디바이스의 blink 함수를 호출해준다. 디바이스 Phone의 생성자 역할을 하는 m_ctor 함수는 새로운 키워드를 통해 생성된 Mobile 객체로 Mobile 포인터 타입의 변수인 m을 초기화하고, m_list에 그 값을 추가하는 역할을 한다.Also, the SmartBulb class is connected via the getBulbs function through the third indicator (EspImport) (c3). The cam of the IPCamera pointer type declared as a global variable, the variable m_list of the list of the mobile pointer, the bulbs of the SmartBulb double pointer type, and the integer variable num_bulbs are shared by both Cam and Phone devices. can see. If you look at the cam_ctor function, which is the creator of the device Cam, you initialize the IPCamera pointer variable cam to the IPCamera object created with the new keyword and initialize the bulbs variable with the getBulbs function. The getBulbs function is a function declared through EspImport that finds a device that runs an executable created from a SmartBulb class or a subclass and returns it in SmartBulb double pointer format. IPCamera's onBabyCry function works when the Cam device determines that the baby is crying, calls the alarm function of the currently connected Phone device, and calls the blink function of the currently connected SmarBulb device. The m_ctor function, which acts as the creator of the device phone, initializes the m pointer type variable m to the Mobile object created with the new keyword, and adds the value to the m_list.

또한, 도 2의 (b)를 구체적으로 살펴보면, 도 2의 (b)는 도 2의 (a)의 제 3 지시자(EspImport)(c3)를 통해 연결되었던 SmartBulb와 하위 클래스들의 선언의 예를 나타낸다. 도 2의 (b)에는 SmartBulb 클래스와 이를 상속받은 Hue, LIFX 클래스, 그리고 LIFX를 상속받은 LIFXZ 클래스가 선언되어 있으며, 각 클래스들은 제 2 지시자(EspDevice)(c2)를 이용하여 표현되었고, 클래스간의 계층 구조와 조건문이 후술할 시스템(100) 상으로 알려져 디바이스를 검색할 때 사용될 수 있다.2B shows an example of declaration of SmartBulb and its subclasses connected through a third indicator EspImport (c3) of FIG. 2 (a) . In FIG. 2 (b), SmartBulb class, Hue, LIFX class inheriting it, and LIFXZ class inheriting LIFX are declared. Each class is expressed using a second indicator (EspDevice) (c2) The hierarchy and conditional statements are known on the system 100 to be described later and can be used when searching for devices.

도 3은 본 발명의 일 실시예에 따른 사물 인터넷 어플리케이션의 개발 환경 통합 시스템(100)의 컴파일 과정을 나타낸 블록도이다.FIG. 3 is a block diagram illustrating a compiling process of the development environment integration system 100 of the object Internet application according to an embodiment of the present invention.

도 3을 참조하면, 본 발명의 일 실시예에 따른 생성된 소스 코드를 컴파일부(120)를 통해 분석하고 컴파일링하여 사물 인터넷을 통해 동작되는 디바이스에 대한 프로그램을 생성하는 단계(S120)에는, 컴파일부(120)의 마커(marker)(121)를 통해 소스 코드를 분석하여 소스 코드가 사물 인터넷을 통해 동작되는 디바이스에 관계없이 실행될 수 있는 코드로 변환되는 단계(S121), 컴파일부(120)의 파티셔너(partitioner)(122)를 통해 변환된 코드가 사물 인터넷을 통해 동작되는 디바이스에 대한 코드로 각각 분할되고 분할된 코드에 통신 명령어가 삽입 및 변환되는 단계(S122) 및 컴파일부(120)의 커스터마이저(customizer)(123)를 통해 분할된 코드가 사물 인터넷을 통해 동작되는 디바이스에 대한 아키텍쳐(architecture) 정보를 기초로 컴파일링되는 단계(S123)가 더 포함될 수 있다.Referring to FIG. 3, in step S120, the generated source code according to an embodiment of the present invention is analyzed and compiled through the compiling unit 120 to generate a program for a device operated on the object Internet, A step S121 in which the source code is analyzed through a marker 121 of the compiling unit 120 so that the source code is converted into a code that can be executed regardless of the device operated on the object Internet, A step S122 in which the converted code is divided into a code for a device operated through the object Internet and a communication command is inserted and converted into the divided code through the partitioner 122 of the compiler 120, (S123) in which the divided code is compiled through a customizer 123 of the Internet based on architecture information for a device operated over the Internet.

컴파일부(120)의 마커(121)를 통해 소스 코드를 분석하여 변환하는 단계(S121)에서는 최종 실행파일이 구동되는 사물 인터넷 디바이스에 상관없이 행해질 수 있는 front-end 및 IR 코드 변환이 수행될 수 있다. 이 때, 가장 먼저 수행되는 것은 에스페란토 언어를 이용해 작성된 하나의 객체 지향 프로그램(OOP)에서 에스페란토 언어를 해석하여 정보를 추출하고 IR 코드로 변환하는 것이다. 이후 만들어진 IR 코드를 대상으로 static analysis를 이용하여 제 2 지시자(EspDevice)(c2)를 통해 구동될 디바이스를 표기해주지 않은 IR 코드가 구동될 디바이스를 표기해 준다. 이 과정에서 기준이 되는 것은 각 디바이스를 위한 생성자, 소멸자 및 표기된 클래스의 함수들이며, 클래스의 함수 호출로 나타나 있던 원격 함수 호출을 최소화하는 방식으로 IR 코드가 구분될 수 있다. 또한, 객체의 heap 메모리 주소를 각 디바이스의 식별자로 사용할 수 있게 새로운 키워드의 결과를 프레임워크에 등록하는 IR 코드가 삽입될 수 있다.In the step S121 of analyzing and converting the source code through the marker 121 of the compiling unit 120, the front-end and IR code conversion that can be performed irrespective of the object Internet device on which the final executable file is run can be performed have. In this case, the first thing to do is to extract the information and convert it into IR code by interpreting the Esperanto language in an object-oriented program (OOP) written using the Esperanto language. Then, static analysis is performed on the created IR code to indicate the device on which the IR code that will not be displayed on the second indicator (EspDevice) (c2) is to be driven. In this process, the functions of the constructor, the destructor, and the marked class for each device are the criteria, and the IR code can be distinguished by minimizing the remote function call indicated by the function call of the class. In addition, an IR code may be inserted to register the result of a new keyword in the framework so that the heap memory address of the object can be used as an identifier of each device.

컴파일부(120)의 파티셔너(122)를 통해 변환된 코드가 분할되고 통신 명령어가 삽입 및 변환되는 단계(S122)에서는 파티셔너(122)를 통해 IR 코드가 각 사물 인터넷 디바이스에서 동작할 수 있게 변환될 수 있다. 각 클래스 즉, 디바이스 간의 함수 호출 코드가 네트워크 통신 코드로 변환되어 실제로 원격 함수 호출을 가능하게 하며 제 3 지시자(EspImport)(c3)로 구동되는 디바이스의 경우 런타임에 이들을 검색하고 사용할 수 있게 하는 네트워크 통신 코드를 삽입할 수 있다. 또한, 후술할 이기종 분산 공유 메모리(IoT-HDSM: IoT-Heterogeneous Distributed Shared Memory)의 지원을 위해 global과 heap 메모리에 대해 네트워크 통신 코드를 삽입하여 모든 디바이스가 일관된 메모리를 볼 수 있도록 하며, 마지막으로 IR 코드에서 각 디바이스에 필요 없는 부분을 삭제함으로써 최적화된 코드가 생성될 수 있다.In the step S122 in which the converted code is divided through the partitioner 122 of the compiling unit 120 and the communication command is inserted and converted, the IR code is allowed to operate on each of the object Internet devices through the partitioner 122 Can be converted. Each class, that is, a network communication that enables function call codes between devices to be converted into network communication codes to enable real remote function calls, and which is driven by a third indicator (EspImport) (c3) You can insert code. In order to support IoT-Heterogeneous Distributed Shared Memory (IoT-HDSM) described later, a network communication code is inserted into the global and heap memories so that all the devices can see a consistent memory. Finally, IR Optimized code can be generated by deleting unnecessary parts of each device in the code.

컴파일부(120)의 커스터마이저(customizer)(123)를 통해 분할된 코드가 사물 인터넷을 통해 동작되는 디바이스에 대한 아키텍쳐(architecture) 정보를 기초로 컴파일링되는 단계(S123)에서는 커스터마이저(123)를 통해 디바이스들의 아키텍쳐 정보를 기초로 하여 각 사물 인터넷 디바이스를 위해 쪼개어진 코드의 컴파일이 수행될 수 있다.In step S123, in which the divided code is compiled through the customizer 123 of the compiling unit 120 based on the architecture information of the device operated on the object Internet, the customizer 123 123 may compile the compiled code for each object Internet device based on the architectural information of the devices.

도 4의 (a)는 도 2의 예시에서 Cam과 Phone을 위한 코드를 컴파일부(120)를 통해 컴파일한 최종 결과를 나타냅니다. 구체적으로 살펴보면, main 함수가 생성자와 소멸자를 통해 자동으로 생성되며 new 키워드에 결과를 후술할 시스템(100) 상에 등록하는 mapObjDev 함수 호출 코드가 삽입될 수 있다. 또한, IPCamera에서 Mobile로 향하는 함수 호출가 네트워크 통신 함수인 send로 대체되어 Cam에서 Phone으로 향하는 원격 함수 호출이 구현될 수 있다. Phone을 위한 코드에서는 communicationHandler 함수가 자동으로 구현되어 Phone이 Cam으로부터 오는 원격 함수 호출에 대응할 수 있도록 구성될 수 있다. 마지막으로 SmartBulb 이중 포인터 타입을 반환하는 getBulbs 함수의 정의가 자동으로 만들어질 수 있으며 새로 선언된 __getSmartBulb 함수가 호출되어 실제 런타임에 연결된 디바이스들이 검색되어 반환될 수 있다.FIG. 4 (a) shows the final result of compiling the code for Cam and Phone through the compiler 120 in the example of FIG. Specifically, the main function is automatically generated through the constructor and the destructor, and the mapObjDev function calling code for registering the result on the new keyword on the system 100 to be described later can be inserted. In addition, a function call from IPCamera to Mobile can be replaced with a network communication function, send, to implement a remote function call from Cam to Phone. In the code for the Phone, the communicationHandler function is automatically implemented so that the Phone can be configured to respond to remote function calls from Cam. Finally, the definition of the getBulbs function, which returns the SmartBulb double pointer type, can be created automatically, and the newly declared __getSmartBulb function can be called to retrieve and return the devices connected to the actual runtime.

도 4의 (b)는 __getSmartBulb 함수가 자동 구현된 결과를 나타내며, __getSmartBulb 함수는 도 2의 (b)에서 살펴본 SmartBulb와 하위 클래스들에 해당하는 디바이스를 런타임에 검색하여 반환해주는 함수이다. SmartBulb는 도 2의 (b)에 따라 TYPE==BULB라는 조건을 가지고 있다. 때문에 SmartBulb 하위 클래스들은 계층 구조에 의해 TYPE==BULB라는 조건을 만족할 수 있다. __getSmartBulb는 getNumDev 함수를 통해 런타임에 연결되어 있는 디바이스들 중 SmartBulb와 하위 클래스들의 수를 헤아려 size 변수에 저장할 수 있다. 또한, 찾은 디바이스들의 가장 하위 클래스 타입을 찾아 객체를 생성하고 포인터를 배열타입으로 반환할 수 있다.FIG. 4B shows a result of automatic implementation of the __getSmartBulb function, and the function __getSmartBulb is a function that retrieves and returns a device corresponding to the SmartBulb and the subclasses shown in FIG. 2B at runtime. SmartBulb has a condition of TYPE == BULB according to FIG. 2 (b). Therefore, SmartBulb subclasses can satisfy the condition TYPE == BULB by hierarchy. __getSmartBulb can store the number of SmartBulbs and subclasses of devices connected to it at runtime in the size variable by using getNumDev function. You can also find the most subclass type of the found devices and create an object and return the pointer as an array type.

도 1의 (c)를 참조하면, 본 발명의 일 실시예에 따른 생성된 프로그램을 기초로 사물 인터넷을 통해 동작되는 디바이스들을 제어하는 단계(S130)에는, 장치 관리부(130)를 통해 생성된 프로그램에 사물 인터넷을 통해 동작되는 디바이스가 등록되고 이종 디바이스가 선택적 추상화되는 단계(S131)가 더 포함될 수 있다.Referring to FIG. 1 (c), in operation S 130, devices operated through the object Internet on the basis of the generated program according to an embodiment of the present invention, (S131) in which a device operated through the object Internet is registered and a heterogeneous device is selectively abstracted.

장치 관리부(130)를 통해 생성된 프로그램에 사물 인터넷을 통해 동작되는 디바이스가 등록되고 이종 디바이스가 선택적 추상화되는 단계(S131)에서는, 새로운 사물 인터넷 디바이스가 사용자 환경에 연결되면 장치 관리부(130)를 통해 IP 주소, 디바이스 유형, 공급 업체, 아키텍쳐 및 운영체제와 같은 디바이스에 대한 하드웨어 설명의 수집이 이루어질 수 있다. 또한, 디바이스의 추상화를 지원하기 위해 장치 관리부(130)를 통해 연결된 디바이스의 모든 상위 클래스를 포함하는 소프트웨어 설명이 유지될 수 있다. 또한, 제 3 지시자(EspImport)(c3)를 이용하여 상위 클래스 중 하나를 가져오는 경우 장치 관리부(130)를 통해 소프트웨어 설명이 확인되어 연결된 장치가 반환된 후 하드웨어 설명이 있는 디바이스에 적합한 객체가 만들어 질 수 있다.In a step S131 in which a device operated through the object Internet is registered in the program generated through the device management unit 130 and the heterogeneous device is selectively abstracted, when the new object internet device is connected to the user environment, the device management unit 130 The collection of hardware descriptions for devices such as IP address, device type, vendor, architecture, and operating system can be made. In addition, a software description including all superclasses of devices connected through the device management unit 130 to support abstraction of the device can be maintained. In addition, when one of the super classes is imported using the third indicator EspImport (c3), the software description is confirmed through the device management unit 130, the connected device is returned, and an object suitable for the device having the hardware description is created Can be.

예를 들어, 도 4의 (b)를 참조하면, getSmartBulb 함수는 SmartBulb가 상위 클래스인 이종 디바이스를 검색하도록 요청할 수 있다. 장치 관리부(130)를 통해 소프트웨어 설명으로부터 SmartBulb의 하위 클래스를 찾고 Hue, LIFX 및 LIFXZ와 같은 하드웨어 설명으로부터 연결된 디바이스 목록을 반환할 수 있다. 도 4의 (b)에서 볼 수 있듯이, getSmartBulb 함수는 목록에 있는 디바이스에 대한 해당 하위 객체를 작성하여 반환할 수 있다.For example, referring to FIG. 4 (b), the getSmartBulb function may request that the SmartBulb search for a disparate device that is a superclass. The device management unit 130 can find a sub class of SmartBulb from the software description and return a connected device list from a hardware description such as Hue, LIFX and LIFXZ. As shown in FIG. 4 (b), the getSmartBulb function can create and return a corresponding subobject for a device in the list.

도 1의 (c)를 참조하면, 본 발명의 일 실시예에 따른 생성된 프로그램을 기초로 사물 인터넷을 통해 동작되는 디바이스들을 제어하는 단계(S130)에는, 통신 관리부(140)를 통해 생성된 프로그램의 객체가 사물 인터넷을 통해 동작되는 디바이스와 매핑되고 객체 간의 통신이 관리되는 단계(S132)가 더 포함될 수 있다.Referring to FIG. 1C, in step S130 of controlling devices operated through the object Internet based on the generated program according to an embodiment of the present invention, a program generated through the communication management unit 140 (S132) in which an object of the object is mapped to a device operated through the object's internet and communication between the objects is managed (S132).

통신 관리부(140)를 통해 생성된 프로그램의 객체가 사물 인터넷을 통해 동작되는 디바이스와 매핑되고 객체 간의 통신이 관리되는 단계(S132)에서는, 전술한 컴파일러를 통해 제 2 지시자(EspDevice)(c2)가 할당된 객체에 대한 객체-디바이스 간 매핑 호출 함수(mapObjDev)가 삽입되고 호출되는 경우 통신 관리부(140)를 통해 객체-디바이스의 맵 상에 새로운 요소가 삽입될 수 있다. 또한, In step S132, the object of the program generated through the communication management unit 140 is mapped to a device operated through the object's internet and the communication between the objects is managed (S132), a second indicator EspDevice c2 is transmitted through the above- When the object-to-device mapping call function (mapObjDev) for the allocated object is inserted and called, a new element can be inserted on the object-device map via the communication management unit 140. Also,

도 1의 (c)를 참조하면, 본 발명의 일 실시예에 따른 생성된 프로그램을 기초로 사물 인터넷을 통해 동작되는 디바이스들을 제어하는 단계(S130)에는, 메모리 관리부(150)를 통해 이종 디바이스의 공유 메모리가 지원 및 관리되는 단계(S133)가 더 포함되며, 이종 디바이스의 공유 메모리는 이기종 분산 공유 메모리 기법(IoT-HDSM: IoT-Heterogeneous Distributed Shared Memory)를 이용한 가상 메모리 공간일 수 있다.Referring to FIG. 1 (c), in operation S 130 of controlling devices operated through the object Internet based on a generated program according to an embodiment of the present invention, a memory management unit 150 manages The shared memory of the heterogeneous device may be a virtual memory space using IoT-heterogeneous distributed shared memory (IoT-HDSM).

이기종 분산 공유 메모리 기법(IoT-HDSM: IoT-Heterogeneous Distributed Shared Memory)은 이기종 분산 기기에 대해 통합된 가상 메모리 공간을 제공할 수 있으며, 변수들의 동기화 및 일관성 유지(consistency)를 지원할 수 있다. 이기종 분산 공유 메모리를 통해 가상 메모리 공간을 디바이스 간에 공유할 수 있기 때문에 모든 객체는 유일한 메모리 주소를 가질 수 있다. 이에 객체의 메모리 주소가 사물 인터넷 디바이스의 식별자로 사용되어, 같은 종류의 디바이스라도 메모리 주소로 해당 기기를 찾을 수 있다. 또한 시스템(100) 상에서 사물 인터넷 디바이스의 등록을 메모리 할당으로, 탈퇴는 메모리 삭제로 이루어질 수 있다. IoT-Heterogeneous Distributed Shared Memory (IoT-HDSM) can provide an integrated virtual memory space for heterogeneous distributed devices and can support the synchronization and consistency of variables. Because heterogeneous distributed shared memory allows virtual memory space to be shared across devices, all objects can have unique memory addresses. Therefore, the memory address of the object is used as the identifier of the object Internet device, so that the device of the same kind can be found by the memory address. Also, the registration of the object Internet device on the system 100 may be made by allocating memory, and the withdrawal may be by memory deletion.

도 5는 본 발명의 일 실시예에 따른 (a) 사물 인터넷 어플리케이션의 개발 환경 통합 시스템(100)을 나타낸 블록도, (b) 사물 인터넷 어플리케이션의 개발 환경 통합 시스템(100) 중 컴파일부(120)를 나타낸 블록도이다.FIG. 5 is a block diagram illustrating (a) a development environment integration system 100 of a thing Internet application according to an embodiment of the present invention, (b) a compiling unit 120 among the development environment integration system 100 of a thing Internet application, Fig.

도 5의 (a)를 참조하면, 본 발명의 일 실시예에 따른 이종 디바이스의 선택적 추상화(abstraction)를 통한 사물 인터넷 어플리케이션의 개발 환경 통합 시스템(100)에는, 소정의 프로그래밍 언어를 이용하여 사물 인터넷을 통해 동작되는 디바이스의 서브 프로그램들을 각각 하나의 객체 지향 프로그램의 객체들로 구현하기 위한 소스 코드를 생성하는 코드 생성부(110), 생성된 소스 코드를 분석하고 컴파일링(compiling)하여 사물 인터넷을 통해 동작되는 디바이스에 대한 프로그램을 생성하기 위한 컴파일부(120), 생성된 프로그램에 사물 인터넷을 통해 동작되는 디바이스를 등록하고 이종 디바이스를 선택적 추상화하기 위한 장치 관리부(130), 생성된 프로그램의 객체를 사물 인터넷을 통해 동작되는 디바이스와 매핑하고 객체 간의 통신을 관리하기 위한 통신 관리부(140) 및 이종 디바이스의 공유 메모리를 지원 및 관리하기 위한 메모리 관리부(150)가 포함될 수 있다.Referring to FIG. 5A, the development environment integration system 100 of the object Internet application through the selective abstraction of the heterogeneous device according to an embodiment of the present invention includes an object Internet A source code generation unit 110 for generating source code for implementing sub-programs of a device operated through an object-oriented program as objects of one object-oriented program, and a source code generation unit 110 for analyzing and compiling the generated source code, A device management unit 130 for registering a device operated through the object Internet in the generated program and selectively abstracting the heterogeneous devices, Objects Communication with devices that operate over the Internet and to manage communication between objects Rib may include a memory management unit (150) for supporting and managing unit 140 and the shared memory of heterogeneous devices.

본 발명의 일 실시예에 따른 소정의 프로그래밍 언어의 구문(syntax)에는, 프로그램으로 컴파일 될 클래스를 선언하기 위한 제 1 지시자(pragma)(c1), 클래스와 사물 인터넷을 통해 동작되는 디바이스 간의 매핑(mapping)을 위한 제 2 지시자(c2) 및 클래스 간의 계층 구조를 이용하여 이종 디바이스의 선택적 추상화가 가능하도록 하기 위한 제 3 지시자(c3)가 포함될 수 있다.The syntax of a given programming language according to an embodiment of the present invention includes a first indicator p1 for declaring a class to be compiled into a program, a mapping between a class and a device operated through the object Internet a second indicator c2 for the mapping between the classes, and a third indicator c3 for enabling the selective abstraction of the heterogeneous devices using the hierarchical structure between the classes.

본 발명의 일 실시예에 따른 클래스에는, 사물 인터넷을 통해 동작되는 디바이스의 공통된 인터페이스를 정의하기 위한 상위 클래스(ancestor class) 및 사물 인터넷을 통해 동작되는 디바이스 각각의 세부 기능을 구현하기 위한 하위 클래스(descendant class)가 포함될 수 있다.The class according to an embodiment of the present invention includes an ancestor class for defining a common interface of a device operated through the object Internet and a subclass for implementing a detailed function of each device operated through the object Internet descendant class) may be included.

도 3을 참조하면, 본 발명의 일 실시예에 따른 컴파일부(120)에는, 소스 코드를 분석하여 소스 코드를 사물 인터넷을 통해 동작되는 디바이스에 관계없이 실행될 수 있는 코드로 변환하기 위한 마커(marker)(121), 변환된 코드를 사물 인터넷을 통해 동작되는 디바이스에 대한 코드로 각각 분할하고 분할된 코드에 통신 명령어를 삽입 및 변환하기 위한 파티셔너(partitioner)(122) 및 분할된 코드를 사물 인터넷을 통해 동작되는 디바이스에 대한 아키텍쳐(architecture) 정보를 기초로 컴파일링하기 위한 커스터마이저(customizer)(123)가 더 포함될 수 있다.Referring to FIG. 3, a compiler 120 according to an embodiment of the present invention includes a marker for analyzing a source code and converting the source code into a code that can be executed regardless of a device operated on the object Internet A partitioner 122 for dividing the converted code into codes for devices operated through the object Internet, inserting and converting communication commands into the divided codes, and a partitioner 122 for dividing the divided codes into object objects A customizer 123 for compiling on the basis of architecture information for a device operated via a network interface (not shown).

본 발명의 일 실시예에 따른 마커(marker)(121)는 소정의 프로그래밍 언어를 분석하고 프로그램의 모든 명령어를 대상 디바이스에 매핑할 수 있다. 또한, 도 3을 참조하면, 마커(121)에는 파서(parser), 마크 유추자(mark inferrer), 객체 매퍼(object mapper)가 포함될 수 있다.A marker 121 according to an embodiment of the present invention may analyze a predetermined programming language and map all instructions of a program to a target device. 3, the marker 121 may include a parser, a mark inferrer, and an object mapper.

본 발명의 일 실시예에 따른 파서(parser)는 에스페란토 구문을 인식하고 디바이스의 주석이 달린 클래스의 모든 명령어를 대상 디바이스로 표시할 수 있다. 예를 들어, 파서는 IPCamera 클래스 및 해당 멤버 함수를 캠 장치로 표시할 수 있다.A parser according to an embodiment of the present invention recognizes the Esperanto syntax and can display all commands of the annotated class of the device as the target device. For example, the parser can mark the IPCamera class and its member functions as cam devices.

본 발명의 일 실시예에 따른 마크 유추자(mark inferrer)는 모든 주석이 달리지 않은 명렁어를 표시할 수 있다. 사용자는 명령어를 특정 디바이스에 주석으로 표시하지 않으므로, 명령어는 모든 디바이스에 배치될 수 있다. 즉, 마크 유추자는 가능한 대상 디바이스의 성능을 평가하고 최적의 디바이스로 명령어를 주석으로 표시할 수 있다.A mark inferrer according to an embodiment of the present invention may display all unannotated commands. Since the user does not mark the command as a comment on the specific device, the command can be placed on all the devices. That is, the mark evictor can evaluate the performance of the target device as possible and annotate the command with the optimal device.

본 발명의 일 실시예에 따른 객체 매퍼(object mapper)는 제 1 지시자(EspDevDecl)(c1) 주석이 달린 객체가 할당된 곳에 mapObjDev의 호출 명령어를 삽입할 수 있다. mapObjDev 함수는 새롭게 할당된 메모리 객체의 포인터와 현재 네트워크 IP 주소를 시스템(100) 상의 객체-디바이스 맵에 등록시킬 수 있다. 객체-디바이스 맵을 이용하여, 시스템(100)은 메모리 객체 포인터로부터 올바른 대상 디바이스를 찾을 수 있다. 만약 객체에 디바이스의 주석이 없다면, 객체 매퍼는 mapObjDev의 호출 명령어를 삽입하지 않는다.The object mapper according to the embodiment of the present invention can insert a call instruction of mapObjDev in a place where a first indicator (EspDevDecl) (c1) annotated object is allocated. The mapObjDev function may register a pointer to the newly allocated memory object and the current network IP address to the object-device map on the system 100. Using the object-device map, the system 100 can find the correct target device from the memory object pointer. If the object does not have a device annotation, the object mapper does not insert the call instruction of mapObjDev.

본 발명의 일 실시예에 따른 파티셔너(partitioner)(122)는 프로그램을 각 사물 인터넷 디바이스에 대한 여러 하위 프로그램으로 자동으로 분할하고 통신 명령어를 삽입할 수 있다. 예를 들어, 도 4의 (a)는 파티셔너(122)가 에스페란토 프로그램을 여러 분할된 하위 프로그램으로 분할하는 방법을 보여준다. 먼저, 파티셔너(122)는 모든 원격 함수 호출 사이트를 네트워크 통신 함수 호출로 대체한다(23행). 파티셔너(122)는 호출 수신자 객체의 메모리 주소를 send 함수의 첫번째 인수(argument)로 전달한다. mapObjDev는 객체 주소를 IP 주소로 등록하기 때문에, 통신 관리부(140)는 객체 주소에서 대상 IP 주소를 찾을 수 있다. 그런 다음, 파티셔너(122)는 여러 하위 프로그램을 생성하고 각 하위 프로그램에 마크되지 않은 명렁어를 삭제한다. 마지막으로, 파티셔너(122)는 구조체 정렬, 포인터의 크기 및 다른 사물 인터넷 디바이스에서의 endianness와 같은 이종 메모리 레이아웃을 통합한다.A partitioner 122 according to one embodiment of the present invention may automatically partition the program into various sub-programs for each object Internet device and insert communication commands. For example, FIG. 4 (a) shows how the partitioner 122 divides the Esperanto program into several sub-programs. First, the partitioner 122 replaces all remote function call sites with network communication function calls (line 23). The partitioner 122 passes the memory address of the callee object as the first argument of the send function. Since the mapObjDev registers the object address with the IP address, the communication management unit 140 can find the destination IP address from the object address. Then, the partitioner 122 creates various sub-programs and deletes the unmarked commands in each sub-program. Finally, the partitioner 122 incorporates disparate memory layouts such as structure alignment, pointer size, and endianness at other object Internet devices.

본 발명의 일 실시예에 따른 커스터마이저(customizer)(123)는 백엔드 컴파일러 집합을 유지하고, 각 사물 인터넷 디바이스에 대한 각 하위 프로그램을 사용자 정의할 수 있다. 대상 디바이스를 컴파일 입력으로 설명하면, 컴파일부(120)를 통해 해당 백엔드 컴파일러가 선택되어 해당 백엔드 컴파일러와 함께 서브 프로그램이 컴파일될 수 있다. 만약 특정 하드웨어에서만 동작하는 코드가 있다면, 커스터마이저(123)가 백엔드 컴파일러와 함께 코드를 최적화할 수 있다.A customizer 123 according to one embodiment of the present invention can maintain a set of backend compilers and customize each sub-program for each object Internet device. Describing the target device as a compilation input, the corresponding back-end compiler is selected through the compiling unit 120 and the sub-program can be compiled together with the corresponding back-end compiler. If you have code that works only on certain hardware, the customizer (123) can optimize the code with the backend compiler.

즉, 본 발명의 일 실시예에 따른 컴파일부(120)는 사물 인터넷 디바이스 간의 서로 다른 메모리 구조체, 메모리 주소의 크기, endianness를 통합하기 위한 번역코드를 삽입할 수 있으며, 시스템(100)의 이종 디바이스를 위한 공유 메모리 관리 비용을 최소화할 수 있다. 또한, 컴파일부(120)는 제 2 지시자(EspDevice)(c2)가 할당된 객체에 대해 객체-디바이스 간 매핑 호출 함수(mapObjDev)를 삽입할 수 있으며, 객체의 원격 호출 함수의 명령어를 객체 메모리 포인터를 인수로 전달하는 통신 호출 함수(send)로 변환할 수 있다.That is, the compiling unit 120 according to an embodiment of the present invention may insert a translation code for integrating different memory structures, memory address sizes, and endianness among the object Internet devices, Can minimize the cost of managing shared memory. Also, the compiling unit 120 may insert an object-to-device mapping calling function mapObjDev for the object to which the second directive EspDevice c2 is allocated, and store the instruction of the remote calling function of the object in the object memory pointer To a communication call function (send) that passes the argument as an argument.

도 6은 본 발명의 일 실시예에 따른 사물 인터넷의 어플리케이션 개발 환경 통합 시스템(100)의 전체적인 동작 과정을 나타낸 블록도이다.FIG. 6 is a block diagram illustrating an overall operation of an application development environment integration system 100 according to an embodiment of the present invention.

도 6을 참조하면, 본 발명의 일 실시예에 따른 장치 관리부(130)는 새로운 사물 인터넷 디바이스가 사용자 환경에 연결되면 IP 주소, 디바이스 유형, 공급 업체, 아키텍쳐 및 운영체제와 같은 디바이스에 대한 하드웨어 설명의 수집할 수 있다. 또한, 생성된 프로그램을 통해 TYPE==BULB와 같은 런타임 조건을 통해 장치를 검색하면, 장치 관리자는 해당 디바이스를 하드웨어 설명에서 검색할 수 있으며, 연결된 디바이스의 모든 상위 클래스를 포함하는 소프트웨어 설명을 유지할 수 있다. 또한, 장치 관리부(130)는 제 3 지시자(EspImport)(c3)를 이용하여 상위 클래스 중 하나를 가져오는 경우 소프트웨어 설명을 확인하고 연결된 장치를 반환한 후 하드웨어 설명이 있는 디바이스에 적합한 객체를 만들 수 있다.Referring to FIG. 6, a device management unit 130 according to an embodiment of the present invention includes a device management unit 130 for managing a device description such as an IP address, a device type, a supplier, an architecture, and an operating system Can be collected. Also, if a generated program searches for a device through a runtime condition such as TYPE == BULB, the device manager can retrieve the device from the hardware description and maintain a software description containing all the superclasses of the connected device. have. In addition, when the device manager 130 obtains one of the superclasses using the third indicator EspImport c3, it can check the software description, return the connected device, and create an object suitable for the device having the hardware description have.

도 6을 참조하면, 본 발명의 일 실시예에 의해 통신 호출 함수(send)가 호출되면, 장치 관리부(130)는 전달된 객체의 메모리 주소가 있는 해당 IP 주소를 객체-디바이스 맵에서 찾은 다음 메모리 주소를 IP 주소로 변환할 수 있으며, 이후에 통신 관리부(140)는 메시지를 대상 IP 주소로 보낼 수 있다.Referring to FIG. 6, when a communication call function (send) is called according to an embodiment of the present invention, the device management unit 130 finds the corresponding IP address having the memory address of the transferred object in the object-device map, Address to an IP address, and then the communication management unit 140 can send the message to the target IP address.

본 발명의 일 실시예에 따른 이종 디바이스의 공유 메모리는 이기종 분산 공유 메모리 기법(IoT-HDSM: IoT-Heterogeneous Distributed Shared Memory)를 이용한 가상 메모리 공간일 수 있다.The shared memory of the heterogeneous device according to an exemplary embodiment of the present invention may be a virtual memory space using IoT-Heterogeneous Distributed Shared Memory (IoT-HDSM).

도 7은 종래의 사물 인터넷 어플리케이션 개발 시스템(100)의 블록도 및 본 발명의 일 실시예에 따른 사물 인터넷 어플리케이션의 개발 환경 통합 시스템(100)의 블록도의 또다른 예를 나타낸다. 도 7에서 회색으로 표시된 부분들은 사용자가 작성해야하는 프로그램들을 나타낸다. 따라서 도 7의 (c)는 본 발명의 일 실시예에 따른 사물 인터넷 어플리케이션 개발 환경 통합 시스템(100)의 블록도로서, 종래의 사물 인터넷 어플리케이션 개발 시스템(100)의 블록도인 도 7의 (a) 및 (b)에 비해 사용자가 작성해야 하는 프로그램들의 수가 적음을 확인할 수 있고 객체와 디바이스 간의 연결이 단순화되어 사용자의 편의가 향상됨을 확인할 수 있다.FIG. 7 is a block diagram of a conventional object Internet application development system 100 and another example of a block diagram of a development environment integration system 100 according to an embodiment of the present invention. The gray portions in FIG. 7 represent programs that the user has to create. 7 (c) is a block diagram of an object Internet application development environment integration system 100 according to an embodiment of the present invention, and is a block diagram of a conventional object Internet application development system 100, ) And (b), it can be confirmed that the number of programs to be created by the user is small, and the connection between the object and the device is simplified, and the convenience of the user is improved.

본 발명의 일 실시예에 따른 시스템(100)과 관련하여서는 전술한 방법에 대한 내용이 적용될 수 있다. 따라서, 시스템(100)과 관련하여, 전술한 방법에 대한 내용과 동일한 내용에 대하여는 설명을 생략하였다.The contents of the above-described method can be applied in connection with the system 100 according to an embodiment of the present invention. Accordingly, the description of the same contents as those of the above-described method with respect to the system 100 is omitted.

한편, 본 발명의 일 실시예에 의하면, 전술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다. 다시 말해서, 전술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터 판독 가능 매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터 판독 가능 매체에 여러 수단을 통하여 기록될 수 있다. 본 발명의 다양한 방법들을 수행하기 위한 실행 가능한 컴퓨터 프로그램이나 코드를 기록하는 기록 매체는, 반송파(carrier waves)나 신호들과 같이 일시적인 대상들은 포함하는 것으로 이해되지는 않아야 한다. 상기 컴퓨터 판독 가능 매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, DVD 등)와 같은 저장 매체를 포함할 수 있다.According to another aspect of the present invention, there is provided a computer-readable recording medium storing a program for causing a computer to execute the above-described method. In other words, the above-described method can be implemented in a general-purpose digital computer that can be created as a program that can be executed in a computer and operates the program using a computer-readable medium. Further, the structure of the data used in the above-described method can be recorded on a computer-readable medium through various means. Recording media that record executable computer programs or code for carrying out the various methods of the present invention should not be understood to include transient objects such as carrier waves or signals. The computer-readable medium may comprise a storage medium such as a magnetic storage medium (e.g., ROM, floppy disk, hard disk, etc.), optical readable medium (e.g., CD ROM, DVD, etc.).

전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.It will be understood by those skilled in the art that the foregoing description of the present invention is for illustrative purposes only and that those of ordinary skill in the art can readily understand that various changes and modifications may be made without departing from the spirit or essential characteristics of the present invention. will be. It is therefore to be understood that the above-described embodiments are illustrative in all aspects and not restrictive. For example, each component described as a single entity may be distributed and implemented, and components described as being distributed may also be implemented in a combined form.

본 발명의 범위는 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.It is intended that the present invention covers the modifications and variations of this invention provided they come within the scope of the appended claims and their equivalents. .

100: 사용자 어플리케이션 개발 환경 통합 시스템
110: 코드 생성부 120: 컴파일부
121: 마커 122: 파티셔너
123: 커스터마이저 130: 장치 관리부
140: 통신 관리부 150: 메모리 관리부
100: User application development environment integration system
110: code generation unit 120:
121: Marker 122: Partitioner
123: CUSTOMER 130: DEVICE MANAGER
140: communication management unit 150: memory management unit

Claims (13)

이종 디바이스의 선택적 추상화(abstraction)를 통한 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법에 있어서,
소정의 프로그래밍 언어를 이용하여 상기 사물 인터넷을 통해 동작될 디바이스의 서브 프로그램들 각각을 하나의 객체 지향 프로그램의 객체들로 구현하기 위한 소스 코드가 코드 생성부를 통해 생성되는 단계;
상기 생성된 소스 코드를 컴파일부를 통해 분석하고 컴파일링(compiling)하여 상기 사물 인터넷을 통해 동작될 디바이스에 대한 프로그램을 생성하는 단계; 및
상기 생성된 프로그램을 기초로 상기 사물 인터넷을 통해 동작될 디바이스를 제어하는 단계가 포함되는 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법.
1. A method for integrating a development environment of an object Internet application through selective abstraction of heterogeneous devices,
Generating source codes for implementing each of the subprograms of the device to be operated through the object Internet as objects of one object-oriented program through a code generator using a predetermined programming language;
Analyzing and compiling the generated source code through a compiler to generate a program for a device to be operated over the Internet; And
And controlling a device to be operated on the object Internet based on the generated program.
제 1 항에 있어서,
상기 소정의 프로그래밍 언어의 구문(syntax)에는,
상기 프로그램으로 컴파일 될 클래스를 선언하기 위한 제 1 지시자(pragma);
상기 클래스와 상기 사물 인터넷을 통해 동작되는 디바이스 간의 매핑(mapping)을 위한 제 2 지시자; 및
상기 클래스 간의 계층 구조를 이용하여 상기 이종 디바이스의 선택적 추상화가 가능하도록 하기 위한 제 3 지시자가 포함되는 것을 특징으로 하는 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법.
The method according to claim 1,
In the syntax of the predetermined programming language,
A first indicator (pragma) for declaring a class to be compiled with the program;
A second indicator for mapping between the class and a device operated over the Internet; And
And a third indicator for enabling selective abstraction of the heterogeneous devices using the hierarchical structure between the classes.
제 2 항에 있어서,
상기 클래스에는, 상기 사물 인터넷을 통해 동작되는 디바이스의 공통된 인터페이스를 정의하기 위한 상위 클래스(ancestor class); 및 상기 사물 인터넷을 통해 동작되는 디바이스 각각의 세부 기능을 구현하기 위한 하위 클래스(descendant class)가 포함되는 것을 특징으로 하는 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법.
3. The method of claim 2,
The class includes: an ancestor class for defining a common interface of devices operated through the Internet; And a descendant class for implementing a detailed function of each device operated through the object Internet. ≪ Desc / Clms Page number 19 >
제 1 항에 있어서,
상기 생성된 소스 코드를 상기 컴파일부를 통해 분석하고 컴파일링하여 상기 사물 인터넷을 통해 동작되는 디바이스에 대한 프로그램을 생성하는 단계에는,
상기 컴파일부의 마커(marker)를 통해 상기 소스 코드를 분석하여 상기 소스 코드가 상기 사물 인터넷을 통해 동작되는 디바이스에 관계없이 실행될 수 있는 코드로 변환되는 단계;
상기 컴파일부의 파티셔너(partitioner)를 통해 상기 변환된 코드가 상기 사물 인터넷을 통해 동작되는 디바이스에 대한 코드로 각각 분할되고 상기 분할된 코드에 통신 명령어가 삽입 및 변환되는 단계; 및
상기 컴파일부의 커스터마이저(customizer)를 통해 상기 분할된 코드가 상기 사물 인터넷을 통해 동작되는 디바이스에 대한 아키텍쳐(architecture) 정보를 기초로 컴파일링되는 단계가 더 포함되는 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법.
The method according to claim 1,
Analyzing and compiling the generated source code through the compiling unit to generate a program for a device operated through the Internet,
Analyzing the source code through a marker of the compiling unit and converting the source code into a code that can be executed regardless of a device operated on the object Internet;
Wherein the converted code is divided into a code for a device operated through the Internet and a communication command is inserted and converted into the divided code through a partitioner of the compiling unit; And
And a step of compiling the divided code on the basis of architecture information for a device operated through the Internet through a customizer of the compiling unit. How to.
제 1 항에 있어서,
상기 생성된 프로그램을 기초로 상기 사물 인터넷을 통해 동작되는 디바이스들을 제어하는 단계에는,
장치 관리부를 통해 상기 생성된 프로그램에 상기 사물 인터넷을 통해 동작되는 디바이스가 등록되고 상기 이종 디바이스가 선택적 추상화되는 단계가 더 포함되는 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법.
The method according to claim 1,
Controlling devices operated through the Internet based on the generated program includes the steps of:
Further comprising the step of registering a device operated on the object Internet through the device management unit and selectively abstracting the heterogeneous device to the generated program.
제 1 항에 있어서,
상기 생성된 프로그램을 기초로 상기 사물 인터넷을 통해 동작되는 디바이스들을 제어하는 단계에는,
통신 관리부를 통해 상기 생성된 프로그램의 객체가 상기 사물 인터넷을 통해 동작되는 디바이스와 매핑되고 상기 객체 간의 통신이 관리되는 단계가 더 포함되는 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법.
The method according to claim 1,
Controlling devices operated through the Internet based on the generated program includes the steps of:
Further comprising the step of managing an object of the generated program by a communication management unit with a device operated through the Internet, and managing communication between the objects.
제 1 항에 있어서,
상기 생성된 프로그램을 기초로 상기 사물 인터넷을 통해 동작되는 디바이스들을 제어하는 단계에는,
메모리 관리부를 통해 상기 이종 디바이스의 공유 메모리가 지원 및 관리되는 단계가 더 포함되며,
상기 이종 디바이스의 공유 메모리는 이기종 분산 공유 메모리 기법(IoT-HDSM: IoT-Heterogeneous Distributed Shared Memory)를 이용한 가상 메모리 공간인 것을 특징으로 하는 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법.
The method according to claim 1,
Controlling devices operated through the Internet based on the generated program includes the steps of:
The shared memory of the heterogeneous device is supported and managed through the memory management unit,
Wherein the shared memory of the heterogeneous device is a virtual memory space using IoT-Heterogeneous Distributed Shared Memory (IoT-HDSM).
이종 디바이스의 선택적 추상화(abstraction)를 통한 사물 인터넷 어플리케이션의 개발 환경 통합 시스템에 있어서,
소정의 프로그래밍 언어를 이용하여 상기 사물 인터넷을 통해 동작되는 디바이스의 서브 프로그램들을 각각 하나의 객체 지향 프로그램의 객체들로 구현하기 위한 소스 코드를 생성하는 코드 생성부;
상기 생성된 소스 코드를 분석하고 컴파일링(compiling)하여 상기 사물 인터넷을 통해 동작되는 디바이스에 대한 프로그램을 생성하기 위한 컴파일부;
상기 생성된 프로그램에 상기 사물 인터넷을 통해 동작되는 디바이스를 등록하고 상기 이종 디바이스를 선택적 추상화하기 위한 장치 관리부;
상기 생성된 프로그램의 객체를 상기 사물 인터넷을 통해 동작되는 디바이스와 매핑하고 상기 객체 간의 통신을 관리하기 위한 통신 관리부; 및
상기 이종 디바이스의 공유 메모리를 지원 및 관리하기 위한 메모리 관리부가 포함되는 사물 인터넷 어플리케이션의 개발 환경 통합 시스템.
In a development environment integration system for object Internet applications through selective abstraction of heterogeneous devices,
A code generation unit for generating source code for implementing sub-programs of devices operated through the object Internet using objects of a single object-oriented program using a predetermined programming language;
A compiling unit for analyzing and compiling the generated source code to generate a program for a device operated over the Internet;
A device management unit for registering a device operated through the Internet on the generated program and selectively abstracting the heterogeneous devices;
A communication manager for mapping an object of the generated program to a device operated through the Internet, and managing communication between the objects; And
And a memory management unit for supporting and managing the shared memory of the heterogeneous device.
제 8 항에 있어서,
상기 소정의 프로그래밍 언어의 구문(syntax)에는,
상기 프로그램으로 컴파일 될 클래스를 선언하기 위한 제 1 지시자(pragma);
상기 클래스와 상기 사물 인터넷을 통해 동작되는 디바이스 간의 매핑(mapping)을 위한 제 2 지시자; 및
상기 클래스 간의 계층 구조를 이용하여 상기 이종 디바이스의 선택적 추상화가 가능하도록 하기 위한 제 3 지시자가 포함되는 것을 특징으로 하는 사물 인터넷 어플리케이션의 개발 환경 통합 시스템.
9. The method of claim 8,
In the syntax of the predetermined programming language,
A first indicator (pragma) for declaring a class to be compiled with the program;
A second indicator for mapping between the class and a device operated over the Internet; And
And a third indicator for enabling selective abstraction of the heterogeneous device using the hierarchical structure between the classes.
제 9 항에 있어서,
상기 클래스에는, 상기 사물 인터넷을 통해 동작되는 디바이스의 공통된 인터페이스를 정의하기 위한 상위 클래스(ancestor class); 및 상기 사물 인터넷을 통해 동작되는 디바이스 각각의 세부 기능을 구현하기 위한 하위 클래스(descendant class)가 포함되는 것을 특징으로 하는 사물 인터넷 어플리케이션의 개발 환경 통합 시스템.
10. The method of claim 9,
The class includes: an ancestor class for defining a common interface of devices operated through the Internet; And a descendant class for implementing a detailed function of each device operated through the object Internet.
제 8 항에 있어서,
상기 컴파일부에는, 상기 소스 코드를 분석하여 상기 소스 코드를 상기 사물 인터넷을 통해 동작되는 디바이스에 관계없이 실행될 수 있는 코드로 변환하기 위한 마커(marker);
상기 변환된 코드를 상기 사물 인터넷을 통해 동작되는 디바이스에 대한 코드로 각각 분할하고 상기 분할된 코드에 통신 명령어를 삽입 및 변환하기 위한 파티셔너(partitioner); 및
상기 분할된 코드를 상기 사물 인터넷을 통해 동작되는 디바이스에 대한 아키텍쳐(architecture) 정보를 기초로 컴파일링하기 위한 커스터마이저(customizer)가 더 포함되는 사물 인터넷 어플리케이션의 개발 환경 통합 시스템.
9. The method of claim 8,
Wherein the compiling unit includes: a marker for analyzing the source code and converting the source code into a code that can be executed regardless of a device operated through the Internet;
A partitioner for dividing the converted code into a code for a device operated through the Internet and inserting and converting a communication command into the divided code; And
Further comprising a customizer for compiling the divided code on the basis of architecture information for a device operated through the Internet.
제 8 항에 있어서,
상기 이종 디바이스의 공유 메모리는 이기종 분산 공유 메모리 기법(IoT-HDSM: IoT-Heterogeneous Distributed Shared Memory)를 이용한 가상 메모리 공간인 것을 특징으로 하는 사물 인터넷 어플리케이션의 개발 환경 통합 시스템.
9. The method of claim 8,
Wherein the shared memory of the heterogeneous device is a virtual memory space using IoT-Heterogeneous Distributed Shared Memory (IoT-HDSM).
제1항 내지 제7항 중 어느 한 항의 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
8. A computer-readable recording medium on which a program for implementing the method of any one of claims 1 to 7 is recorded.
KR1020170158887A 2017-11-24 2017-11-24 THE INTERGRATED IoT PROGRAMMING METHOD AND SYSTEM WITH SELECTIVE ABSTRACTION OF THIRD-PARTY DEVICES KR20190060561A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170158887A KR20190060561A (en) 2017-11-24 2017-11-24 THE INTERGRATED IoT PROGRAMMING METHOD AND SYSTEM WITH SELECTIVE ABSTRACTION OF THIRD-PARTY DEVICES

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170158887A KR20190060561A (en) 2017-11-24 2017-11-24 THE INTERGRATED IoT PROGRAMMING METHOD AND SYSTEM WITH SELECTIVE ABSTRACTION OF THIRD-PARTY DEVICES

Publications (1)

Publication Number Publication Date
KR20190060561A true KR20190060561A (en) 2019-06-03

Family

ID=66849421

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170158887A KR20190060561A (en) 2017-11-24 2017-11-24 THE INTERGRATED IoT PROGRAMMING METHOD AND SYSTEM WITH SELECTIVE ABSTRACTION OF THIRD-PARTY DEVICES

Country Status (1)

Country Link
KR (1) KR20190060561A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102214060B1 (en) * 2019-08-20 2021-02-09 나모웹비즈주식회사 Integrated development cloud server and method for providing integrated development environment based on cloud to program software for subminiature iot device that support interwork with iot service infrastructure
KR20220058246A (en) * 2020-10-30 2022-05-09 나모웹비즈주식회사 Library management method for software development for subminiature iot device and integrated development cloud server

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100280827B1 (en) 1998-10-08 2001-02-01 정선종 Modeling System of Object-Oriented Framework-based Application Development Tools

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100280827B1 (en) 1998-10-08 2001-02-01 정선종 Modeling System of Object-Oriented Framework-based Application Development Tools

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102214060B1 (en) * 2019-08-20 2021-02-09 나모웹비즈주식회사 Integrated development cloud server and method for providing integrated development environment based on cloud to program software for subminiature iot device that support interwork with iot service infrastructure
WO2021033861A1 (en) * 2019-08-20 2021-02-25 나모웹비즈주식회사 Integrated development cloud server and method for providing cloud-based integrated development environment for developing ultra-micro iot device software supporting interworking with iot service infrastructure
KR20220058246A (en) * 2020-10-30 2022-05-09 나모웹비즈주식회사 Library management method for software development for subminiature iot device and integrated development cloud server

Similar Documents

Publication Publication Date Title
KR101150003B1 (en) Software development infrastructure
US9086931B2 (en) System for translating diverse programming languages
US9965259B2 (en) System for translating diverse programming languages
US10853096B2 (en) Container-based language runtime loading an isolated method
KR101795844B1 (en) Runtime system
US8756590B2 (en) Binding data parallel device source code
US10789047B2 (en) Returning a runtime type loaded from an archive in a module system
CA2753626C (en) Packed data objects
US20090320007A1 (en) Local metadata for external components
US20210055941A1 (en) Type-constrained operations for plug-in types
US10387142B2 (en) Using annotation processors defined by modules with annotation processors defined by non-module code
US11048489B2 (en) Metadata application constraints within a module system based on modular encapsulation
US20120023307A1 (en) Methods, systems, and computer program products for excluding an addressable entity from a translation of source code
CN112818176B (en) Data processing method, device, equipment and storage medium
KR20190060561A (en) THE INTERGRATED IoT PROGRAMMING METHOD AND SYSTEM WITH SELECTIVE ABSTRACTION OF THIRD-PARTY DEVICES
US20120023488A1 (en) Methods, systems, and computer program products for processing an excludable addressable entity
US10983771B1 (en) Quality checking inferred types in a set of code
US10394610B2 (en) Managing split packages in a module system
US9720660B2 (en) Binary interface instrumentation
US20200241857A1 (en) Methods, systems, and computer program products for processing an excludable addressable entity
US10346225B2 (en) Synthesized modules for module renaming
US20160266879A1 (en) Methods, systems, and computer program products for processing an excludable addressable entity
JPH064498A (en) Multiprocessor
Pape et al. Extending a Java Virtual Machine to Dynamic Object-oriented Languages
CN115981652A (en) Language interoperation method, language interoperation device, storage medium and program product

Legal Events

Date Code Title Description
E601 Decision to refuse application