KR20200034411A - 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리 - Google Patents

소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리 Download PDF

Info

Publication number
KR20200034411A
KR20200034411A KR1020180114166A KR20180114166A KR20200034411A KR 20200034411 A KR20200034411 A KR 20200034411A KR 1020180114166 A KR1020180114166 A KR 1020180114166A KR 20180114166 A KR20180114166 A KR 20180114166A KR 20200034411 A KR20200034411 A KR 20200034411A
Authority
KR
South Korea
Prior art keywords
module
information
recommendation
topology
assembly
Prior art date
Application number
KR1020180114166A
Other languages
English (en)
Other versions
KR102304692B1 (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 KR1020180114166A priority Critical patent/KR102304692B1/ko
Priority to CN201980031868.9A priority patent/CN112154471A/zh
Priority to PCT/KR2019/011983 priority patent/WO2020060146A1/ko
Priority to EP19862450.4A priority patent/EP3726450B1/en
Priority to US16/640,692 priority patent/US11836639B2/en
Publication of KR20200034411A publication Critical patent/KR20200034411A/ko
Application granted granted Critical
Publication of KR102304692B1 publication Critical patent/KR102304692B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0631Item recommendations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0613Third-party assisted
    • G06Q30/0619Neutral agent
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23389Modular program, each process has corresponding program module
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23434Select automatically prefered program data, ordered to most used program
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25307Each module has file with all components in module and the available components

Abstract

본 발명에 따른 소스 코드 및 모듈 추천 시스템은, 토폴로지 정보를 감지 및 생성하는 토폴로지 관리부를 구비하는 기능 유닛을 포함하는 컨트롤 모듈 및 상기 컨트롤 모듈과 다른 기능 유닛을 포함하는 복수의 타모듈을 포함하는 모듈 어셈블리; 상기 모듈 어셈블리와 연결되는 사용자 단말; 및 상기 사용자 단말과 네트워크로 연결되며, 상기 모듈 어셈블리의 토폴로지 정보를 저장하고, 상기 토폴로지 정보에 기초하여 사용자 단말에 추천 소스 코드에 대한 정보를 제공하는 추천 서버를 포함하며, 상기 토폴로지 정보는 상기 컨트롤 모듈에 상기 복수의 타모듈이 연결된 순서를 나타내는 연결 순위를 포함하며, 상기 추천 서버는 상기 연결 순위에 기초하여 상기 추천 소스 코드에 대한 정보를 결정하여 상기 사용자 단말에 전송할 수 있다.

Description

소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리{A System For Recommending Source Codes And Module And A Module Assembly}
본 발명은 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리에 관한 것으로서 보다 상세하게는, 다용도 모듈 어셈블리의 제작 툴에서 모듈 어셈블리의 조립 정보를 공유하고, 사용자가 필요한 조립 정보 및, 소스 코드 정보를 용이하게 추천받고 검색할 수 있는 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리에 관한 것이다.
최근 교육, 취미, 연구, 생산 등을 목적으로 하는 다양한 모듈 기반 제작 도구들이 제안되고 있다. 이러한 제작 도구들에 포함된 모듈들은 각각 특정한 기능을 수행할 수 있으며, 서로 연결되어 모듈 어셈블리를 형성할 수 있도록 제공된다. 이때, 각각의 모듈은 서로 전기적으로도 연결되어 에너지, 신호, 데이터 등을 송수신할 수 있도록 제공될 수도 있다. 사용자는 제공된 매뉴얼 또는 스스로 창작한 방식에 따라 모듈들을 조립하여 특정한 목적을 수행하는 모듈 어셈블리를 제작할 수 있다.
일 예로, 특허문헌 1(대한민국 등록특허 제1761596호)은 네트워크 모듈, 구동 모듈, 센서 모듈 등 다양한 종류의 모듈을 조립하여 제작한 모듈 어셈블리를 개시하고 있다. 이 때, 모듈 어셈블리는 학생이나 사용자가 모듈(10, 20, 30, 40)들을 조립하면서 전자 장치의 작동 원리를 이해할 수 있는 교육용 키트 또는, 연구원이 특정 목적을 수행하기 위한 장치를 제작하기 위해 사용되는 연구용 키트 및 사용자가 취미용으로 조립 가능한 장난감 키트 등의 다양한 용도로 활용될 수 있다.
이러한 모듈 어셈블리들은 위에 언급한 바와 같이 소프트웨어 또는 하드웨어의 전문가인 연구원부터 학생, 일반인 등 다양한 사람들이 이용하고 있다. 단, 전문가를 제외한 일반인이나 학생들은 각 모듈들을 조립하고, 조립된 모듈 어셈블리에 소프트웨어를 포팅하여 사용하는 것이 어려울 수 있어서, 상술한 모듈의 보급에 제약이 되고 있다.
따라서, 모듈 어셈블리의 다양한 활용 가능성을 누구나 쉽게 인지하여 조립하고, 또한, 사용할 소프트웨어를 자동으로 생성 및 추천하여 누구나 활용이 용이할 수 있게 하는 모듈 추천 시스템의 보급이 요청되고 있었다.
상기한 문제점을 해결하기 위하여, 본 발명에 따른 모듈 추천 시스템은, 모듈 어셈블리의 조립 정보를 공유하고, 사용자가 필요한 조립 정보를 용이하게 추천받고 검색할 수 있는 모듈 추천 시스템을 제공할 수 있다.
따라서, 모듈 어셈블리가 교육용, 개인용 장난감 등으로 활용될 때에, 하드웨어 또는 소프트웨어를 잘 알지 못하는 비 전문가들도 쉽게 모듈 어셈블리를 조립하고 또한 사용할 소프트웨어를 자동으로 생성 및 추천하여 누구나 모듈 어셈블리를 쉽게 활용할 수 있는 모듈 추천 시스템 및 모듈 어셈블리가 제공된다.
상기한 문제점을 해결하기 위하여, 본 발명에 따른 모듈 추천 시스템은, 모듈 어셈블리의 조립 정보를 공유하고, 사용자가 필요한 조립 정보를 용이하게 추천받고 검색할 수 있는 모듈 추천 시스템을 제공할 수 있다.
따라서, 모듈 어셈블리가 교육용, 개인용 장난감 등으로 활용될 때에, 하드웨어 또는 소프트웨어를 잘 알지 못하는 비 전문가들도 쉽게 모듈 어셈블리를 조립하고 또한 사용할 소프트웨어를 자동으로 생성 및 추천하여 누구나 모듈 어셈블리를 쉽게 활용할 수 있는 모듈 추천 시스템 및 모듈 어셈블리가 제공된다.
본 발명에 따른 모듈 추천 시스템은, 모듈 어셈블리의 조립 정보를 공유하고, 사용자가 필요한 조립 정보를 용이하게 추천받고 검색할 수 있는 모듈 추천 시스템을 제공할 수 있다.
따라서, 모듈 어셈블리가 교육용, 개인용 장난감 등으로 활용될 때에, 하드웨어 또는 소프트웨어를 잘 알지 못하는 비 전문가들도 쉽게 모듈 어셈블리를 조립하고 또한 사용할 소프트웨어를 자동으로 생성 및 추천하여 누구나 모듈 어셈블리를 쉽게 활용할 수 있는 모듈 추천 시스템 및 모듈 어셈블리가 제공된다.
이 경우, 사용자는 모듈 어셈블리 조립 시 타 사용자가 조립한 모듈 어셈블리 및 모듈 어셈블리를 구동하는 소스 코드를 참조하여 새로운 모듈을 디자인할 수 있다.
도 1은 본 발명의 실시예에 따른 모듈 어셈블리가 조립된 모습을 보여주는 사시도이다.
도 2는 도 1의 제1 모듈의 내부 구조를 보여주는 평면도이다.
도 3은 본 발명의 실시예에 따른 소스코드 및 모듈 추천 시스템을 설명하기 위한 블록도이다.
도 4는 본 발명의 실시예에 따른 모듈 어셈블리의 기능 유닛을 설명하기 위한 블록도이다.
도 5는 본 발명의 다양한 실시예에 따른 모듈 어셈블리가 조립된 모습을 보여주는 사시도이다.
도 6은 본 발명의 실시예에 따른 토폴로지 정보를 설명하기 위한 표이다.
도 7은 본 발명의 실시예에 따른 모듈 어셈블리의 토폴로지를 설명하기 위한 블록도이다.
도 8은 본 발명의 실시예에 따른 토폴로지 감지 프로토콜을 설명하기 위한 도면이다.
도 9 및 도 10은 본 발명의 실시예에 따른 개발자 도구 앱의 유저 인터페이스를 나타낸 도면이다.
도 11은 본 발명의 실시예에 따른 모듈 어셈블리가 조립된 모습을 보여주는 사시도이다.
도 12는 본 발명의 실시예에 따른 시멘틱 모듈을 설명하기 위한 도면이다.
이하의 내용은 단지 발명의 원리를 예시한다. 그러므로 당업자는 비록 본 명세서에 명확히 설명되거나 도시되지 않았지만 발명의 원리를 구현하고 발명의 개념과 범위에 포함된 다양한 장치를 발명할 수 있는 것이다. 또한, 본 명세서에 열거된 모든 조건부 용어 및 실시예들은 원칙적으로, 발명의 개념이 이해되도록 하기 위한 목적으로만 명백히 의도되고, 이와 같이 특별히 열거된 실시예들 및 상태들에 제한적이지 않는 것으로 이해되어야 한다.
또한, 이하의 설명에서 제1, 제2 등과 같은 서수식 표현은 서로 동등하고 독립된 객체를 설명하기 위한 것이며, 그 순서에 주(main)/부(sub) 또는 주(master)/종(slave)의 의미는 없는 것으로 이해되어야 한다.
상술한 목적, 특징 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해질 것이며, 그에 따라 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 이하에 첨부한 도면을 참조하여 설명한다.
도 1은 본 발명의 실시예에 따른 모듈 어셈블리가 조립된 모습을 보여주는 사시도이고, 도 2는 도 1의 제1 모듈의 내부 구조를 보여주는 평면도이다.
도 1 및 도 2를 참조하면, 본 발명의 일 실시예에 따른 모듈 어셈블리(1)는 서로 조립 가능한 복수 개의 모듈 (10, 20, 30, 40)들로 구성된다.
본 실시예에서, 모듈 어셈블리(1)는 서로 조립 가능한 하나 이상의 모듈(10, 20, 30, 40)들의 집합 또는 이들이 조립된 구조체로 정의될 수 있으며, 그 목적, 종류, 형태, 모듈의 개수 등에 의해 제한되지 않는다. 예를 들어, 모듈 어셈블리(1)는 학생이나 사용자가 모듈(10, 20, 30, 40)들을 조립하면서 전자 장치의 작동 원리를 이해할 수 있는 교육용 키트의 일부일 수 있다. 또는, 모듈 어셈블리(1)는 연구원이 특정 목적을 수행하기 위한 장치를 제작하기 위해 사용되는 연구용 키트의 일부일 수 있다. 또한, 모듈 어셈블리(1)는 사용자가 취미용으로 조립 가능한 장난감 키트의 일부일 수 있다.
설명의 용이함을 위하여 본 실시예에서는 모듈 어셈블리(1)가 도 1에 도시된 것과 같이 4개의 모듈(10, 20, 30, 40)들로 구성된 예를 설명하며, 각각 제1 모듈(10), 제2 모듈(20), 제3 모듈(30), 및 제4 모듈(40)로 지칭한다.
아울러, 본 실시예에서 모듈(10, 20, 30, 40)은 전압 또는 전류의 변화로서 나타내는 신호, 데이터, 또는 전기 에너지(이하 '전기적 신호')를 다른 모듈 또는 외부 장치와 송수신할 수 있도록 구성된 객체로 정의될 수 있다. 이러한 모듈(10, 20, 30, 40)들은 중앙처리장치(CPU), 메모리, 전원 등을 구비하거나 또는 다른 모듈의 제어를 받아 작동 가능한 감지(sensing) 수단, 처리(processing) 수단, 구동 수단 등을 구비하여 각각 독립적으로 구동 가능할 수 있다. 또한, 각각의 모듈(10, 20, 30, 40)은 독립적으로 특정한 기능을 수행하거나, 다른 모듈과의 상호 작용에 의해 특정한 기능을 수행하도록 구성될 수도 있다. 모듈(10, 20, 30, 40)들이 중앙처리장치를 구비하는 경우, 각각의 모듈별로 펌웨어가 설치될 수도 있다.
제1 모듈(10) 내지 제4 모듈(40)은 예컨대, 리모컨 등으로부터 적외선 신호를 수신할 수 있는 적외선 센서 모듈, 스마트폰 등과 무선 통신할 수 있는 무선 통신 모듈이고, 자이로스코프 센서 모듈 또는 모터(41) 등의 구동 모듈일 수 있다. 또한, 제1 모듈(10) 내지 제4 모듈(40)은 외부의 구동 장치(41)와 케이블(42)에 의해 연결될 수도 있다. 이 경우, 모듈 어셈블리(1)는 리모컨 또는 스마트폰의 신호를 수신하여 모터(41)를 선택적으로 작동시키는 장치일 수 있다. 상기와 같은 모듈 어셈블리(1)의 구성은 하나의 예에 불과하며, 각각의 모듈은 독립적으로, 또는 다른 모듈과의 연동을 통해 임의의 기능을 수행할 수 있도록 제공될 수 있다.
모듈(10, 20, 30, 40)들은 다른 모듈과 면 접촉 가능한 복수 개의 측면을 갖는 다각형 기둥 형상인 입체일 수 있다. 여기서, 면 접촉은 측면의 모든 면적이 모두 접촉되는 것 만을 의미하는 것은 아니며, 측면의 일부만 접촉되어 어느 하나의 모듈의 측면과 다른 모듈의 측면이 서로 마주보며 일부분이 접촉되는 것을 포함하는 의미로 이해되어야 한다.
본 실시예에서는 모듈(10, 20, 30, 40)들이 모두 동일한 크기의 정사각형 형상의 평면을 갖는 것을 예로 들어 도시하였다. 즉, 본 실시예에서의 모듈(10, 20, 30, 40)들은 4개의 측면을 갖는다. 또한, 본 실시예에서는 모듈 (10, 20, 30, 40)들의 높이가 모두 동일하게 형성되어, 모듈(10, 20, 30, 40)들이 모두 동일한 크기를 갖는 직육면체인 것을 예로 설명한다.
다른 실시예로서, 모듈(10, 20, 30, 40)들은 평면 상 정삼각형, 직사각형, 정오각형 등의 다각형 기둥 형상으로 형성될 수도 있고, 특히 정다각형 형상으로 형성될 수 있다. 일부의 모듈(10, 20, 30, 40)들이 서로 다른 입체적 형상을 가질 수도 있다. 또한, 모듈(10, 20, 30, 40)들 중 일부는 뿔, 다면체 등의 다양한 입체적 형상을 가질 수도 있다.
여기서, 제1 모듈(10)은 외관을 형성하는 하우징(11)과, 하우징(11)의 측면에 노출되어 전기 신호 등을 연결된 다른 모듈에 전달하거나 수신할 수 있는 단자(107)와, 하우징(11)의 외부로 선택적으로 돌출되는 핀(180)이 제공된 핀 설치부(150) 및 다른 모듈의 핀이 삽입되는 핀 수용부(160)를 포함할 수 있다.
하우징(11)은 예컨대, 직육면체 형상으로 형성된 케이스일 수 있다. 하우징(11)은 도 1에 도시된 것처럼 상부 케이스(11a)와 하부 케이스(11b)가 결합되는 형태로 제공될 수 있다. 하우징(11)을 구성하는 방법은 필요에 따라 상부 케이스(11a)와 하부 케이스(11b)가 일체로 형성되거나, 더 많은 부분으로 나뉘어 조립될 수 있다.
단자(107)는 전기 신호 등을 연결된 다른 모듈에 전달하거나 다른 모듈로부터 받을 수 있으며, 일 예로, 하우징 (11)의 내부에 제공된 기판(102)으로부터 전기 신호 등을 전달받아 단자(107)에 접촉된 다른 모듈의 단자로 전 달할 수 있다. 단자(107)는 다수개의 접촉 점이나 연결 핀을 가질 수 있으며, 이는 전기 신호 등의 전달방법, 표준화된 규격 등에 따라 다양한 형태를 가질 수 있다. 이와 같은 단자(107)는 핀(180), 핀 설치부(150), 핀 수 용부(160)와 한 셋트를 이루어 하우징(11)의 일 측면에 배치될 수 있다. 구체적으로, 단자(107)는 핀(180)과 핀 수용부(160) 사이에 배치될 수 있으며, 다른 모듈의 핀과 핀 수용부 사이에 배치된 단자에 접촉될 수 있다.
본 실시예에서는 하우징(11)의 모든 측면에 단자(107)가 제공되는 것을 예로 들었으나, 실시예에 따라서는 단자 (107)가 형성되지 않은 측면이 존재할 수도 있다.
도 2를 참조하면, 하부 케이스(11b)는 외형 및 내부 구조를 형성하는 프레임(100), 프레임(100)의 내측에 제공되는 기판(102), 기판(102)에 설치되는 기능 유닛(104)을 포함할 수 있다.
프레임(100)은 하우징(11)의 일부 또는 전부를 구성하는 구조물로서, 하우징(11)의 일부 또는 전부의 외형을 형성하고, 내부에 각종 부품이 설치되기 위한 공간과 구조를 제공할 수 있다. 본 실시예에서 프레임(100)은 하우징(11)의 하부 케이스(11b)를 형성하는 것을 예로 들어 설명하나, 본 발명의 권리범위는 이에 한정되지 않는다. 또한, 본 실시예에서 프레임(100)은 사각형 형상으로 형성되며, 4개의 코너(corner, 101)를 갖는다.
기판(102)에는 제1 모듈(10)의 기능을 구현하기 위한 기능 유닛(104)이 실장될 수 있으며, 프레임(100)의 내측 공간 중앙부에 고정 설치될 수 있다. 기능 유닛(104)은 예를 들어 마이크로프로세서를 포함할 수 있으며, 이 때 제1 모듈(10)이 독립적인 펌웨어에 의해 구동되면 제1 모듈(10)을 제어하기 위해 제공될 수 있다. 또다른 예로서, 제1 모듈(10)이 적외선 센서 모듈인 경우, 기능 유닛(104)은 적외선 센서 및 적외선 센서로부터 감지된 값을 처리하는데 필요한 ADC(Analog Digital Converter) 및 다른 모듈 또는 외부 하드웨어와 통신하는 데 필요한 인터페이스 예컨대, I2C 또는 UART, 또는 USB 등의 통신 인터페이스 등 필요한 디바이스들을 포함할 수 있다.
본 발명의 모듈(10 내지 40)은 상술한 기능 유닛(104)의 기능에 따라 모듈의 종류가 정해진다. 예컨대, 기능 유닛(104)이 마이크로프로세서 및 메모리를 포함하고 있으며, 다른 유닛들을 제어할 수 있는 OS 또는 펌웨어를 포함하고 있는 경우에는 컨트롤 모듈이 된다. 또는, 기능 유닛(104)이 센서의 센싱 값을 다른 모듈 또는 외부 디바이스에 전달할 수 있는 경우에는 센서 모듈이 된다. 또는, 기능 유닛(104)이 NB-IOT, LTE, LoRa, WiFi, Bluetooth, USB, 케이블 모뎀 등 다양한 유무선 통신 장치를 포함하면서 다른 모듈로부터 전기적 신호를 수신하여 상술한 유무선 통신 장치를 통하여 다른 외부 디바이스에 전기적 신호를 전송할 수 있는 경우에는 통신 모듈이 될 수 있다. 또는, 기능 유닛(104)이 모터 등의 다양한 액추에이터 및 액추에이터 제어 회로들을 포함하여 구동이 가능하게 하는 경우에는 구동 모듈이 될 수 있다. 기타 본원 발명의 모듈의 더욱 상세한 구조 및 결합에 대해서는 대한민국 등록특허 공보 제10-1761596에 상세하게 기재되어 있으며, 본원 특허 명세서에 참조로서 포함된다.
이하에서는 도 3을 참조하여 상술한 구조의 모듈 어셈블리(1)를 조립하고, 조립된 모듈 어셈블리를 구동하기 위한 소스 코드를 작성할 때에 타 사용자가 조립한 모듈 어셈블리(1) 및 모듈 어셈블리(1)를 구동하는 소스 코드를 참조하여 새로운 모듈을 디자인할 수 있는 소스 코드 및 모듈 어셈블리 추천 시스템에 대하여 서술한다. 도 3는 본 발명의 일 실시예에 따른 소스 코드 및 모듈 어셈블리 추천 시스템을 설명하기 위한 블록도이다. 도 3을 참조하면, 본 발명의 실시예에 따른 모듈 어셈블리 추천 시스템은 모듈 어셈블리(1), 추천 서버(2) 및 사용자 단말(3)를 포함할 수 있다.
이 경우, 추천 서버(2)와 사용자 단말(3)은 네트워크(4)로 연결될 수 있다. 본 실시예에서 상술한 네트워크(4)가 인터넷으로 구현되는 예에 대하여 설명하도록 한다. 단, 본 발명은 이에 한정되는 것은 아니며 당업자는 다양한 네트워크를 통하여 추천 서버(2)와 사용자 단말(3)의 연결을 구현할 수 있다.
추천 서버(2)는 사용자 단말(3) 또는 모듈 어셈블리(1)로부터 토폴로지 정보를 네트워크를 통하여 수신할 수 있으며, 이러한 토폴로지 정보를 빅데이터로서 저장할 수 있다. 이 경우, 추천 서버(2)는 토폴로지 정보에 기초하여 활용 가능한 소스 코드 및 추가 또는 치환/추가 가능한 모듈 정보를 추천해 줄 수 있다. 이 경우, 추가 또는 치환 가능한 모듈 정보는 모듈 어셈블리(1)의 현재 구성에서, 모듈을 추가 부착하여 현재 구성 대비 추가적인 동작을 수행하거나, 또는 현재 구성에서 치환할 수 있는 모듈에 대한 정보를 의미한다. 본 발명의 실시예에서는 추가 또는 치환 가능한 모듈 정보 및 해당 조합의 모델 어셈블리에 관련한 소스 코드가 추천 서버(2)에서 추천 및 다운로드될 수 있다.
이 때 추천 서버(2)가 복수의 추가 또는 치환 가능한 모듈 조합 정보 및 관련 소스 코드를 제공하는 경우에 사용자 단말(3)은 선호하는 모듈 정보 및 소스 코드를 선택할 수 있는 인터페이스를 제공할 수 있다. 소스 코드 및 모듈 추천에 관한 상세한 프로세스는 후술하기로 한다.
한편, 모듈 어셈블리(1)는 USB, RS-232, IEEE1394 등 유선 통신 수단을 통하여 사용자 단말(3)과 연결될 수도 있으며 또는 WiFi 또는 Bluetooth 등의 무선 통신 수단을 통하여 사용자 단말(3)과 연결될 수도 있다. 또는 모듈 어셈블리(1)는 네트워크를 통하여 사용자 단말(3)과 연결될 수도 있다.
앞서 기능 유닛(104)에 관한 설명에서 기술한 바와 같이, 모듈(10 내지 40)의 기능은 기능 유닛(104)의 구성에 따라 정해지게 된다. 이 경우, 편의를 위하여, 모듈(10)이 컨트롤 모듈이라고 가정한 후 설명한다. 이 경우, 컨트롤 모듈(10)은 도 4과 같은 구성을 가질 수 있다.
도 4를 참조하면 컨트롤 모듈(10)의 기능 유닛(104)은 토폴로지 관리부(1043), 통신 제어부(1044), 메모리(1045) 및 마이크로프로세서(1050)를 포함할 수 있다.
여기서, 토폴로지 관리부(1043)는 모듈 어셈블리(1)의 연결 구조(토폴로지)를 감지하는 프로토콜을 실행하여 토폴로지를 결정하는 기능을 수행한다. 보다 구체적으로, 토폴로지 관리부(1043)는 토폴로지 감지부(1043-1) 및 토폴로지 정보 생성부(1043-2)를 포함할 수 있다.
토폴로지 감지부(1043-1)는 토폴로지 감지 프로토콜을 포함하며 연결된 모듈들의 토폴로지를 감지할 수 있는 하드웨어 및/또는 소프트웨어 구성요소이다. 예컨대, 도 5을 참조하면, 본 실시예의 토폴로지 감지부(1043-1)는 컨트롤 모듈(10)을 중심으로 모듈 어셈블리(1)에 접속된 연결 순위를 감지하고, 컨트롤 모듈(10)과의 거리에 따라 해당 모듈의 단계(1st tier 내지 4th tier)를 정할 수 있다. 토폴로지 감지부(1043-1)의 상세한 감지 프로토콜은 후술하기로 한다.
이 경우, 토폴로지 감지부(1043-1)는 접속된 순서대로 연결 순위를 파악한다. 예를 들어, 도 5(a)에서 모듈들(20, 30, 40)이 컨트롤 모듈(10)에 순차적으로 접속한 경우에는, 모듈(20)은 연결 순위 1, 모듈(30)은 연결 순위 2, 모듈(40)은 연결 순위 3을 순차적으로 부여받게 된다. 이 때, 모듈(30, 40)이 컨트롤 모듈(10)에 접속하기 전에 먼저 결합하게 된 경우에는 모듈(30, 40)을 모듈 그룹으로 지정한 후, 동일한 연결 순위를 부여할 수도 있다. 이 경우, 모듈(20)은 연결 순위 1, 모듈(30, 40)은 연결 순위 2가 부여될 수 있다.
한편, 도 5(b)와 같은 경우에는 모듈(20, 30)이 각각 컨트롤 모듈(10)과 결합하고 있는데, 이 경우에는, 실제로 결합한 순서에 따라 연결 순위를 부여하게 된다. 예컨대, 모듈(20)이 컨트롤 모듈(10)에 먼저 결합한 경우에는 모듈(20)의 연결 순위가 1이되고, 모듈(30)의 연결 순위가 2가 된다.
한편, 모듈 사이의 거리는 컨트롤 모듈(10)로부터 해당 모듈까지 최단 경로 상으로 연결된 모듈을 카운팅하여 결정된다. 예컨대, 도 5(a)와 같은 연결에서는, 컨트롤 모듈(10)로부터 다른 모듈(30, 20, 40)이 순차적으로 연결되므로, 모듈(20)의 거리는 1가 되고, 모듈(30)의 거리는 2이고, 모듈(40)의 거리는 3이 될 수 있다. 이 경우, 모듈 사이의 거리는 최단 거리상의 모듈 카운팅에 따라서 결정되기 때문에 도 5(b)와 같은 연결에서는, 모듈(20, 30)의 컨트롤 모듈(10)과의 거리가 1이 될 수 있다. 한편, 도 5(c) 및 도 5(d)는 기본적으로 도 5(b)와 같은 연결이지만, 모듈(20, 30)이 무선 또는 유선으로 연결된 경우를 나타낸 도면이다. 이 경우, 무선으로 연결된 경우는 예컨대, 블루투스 페어링이 되거나, 네트워크 상에서 논리적으로 포트 연결이 된 경우를 의미할 수 있다. 이 때, 모듈(20, 30)의 컨트롤 모듈(10)과의 거리는 도 5(b)와 동일하게 1이 될 수 있다.
토폴로지 정보 생성부(1043-2)는 감지된 토폴로지에 따라 도 6과 같이 모듈의 연결 토폴로지를 결정하여 메모리에 기입할 수 있다. 도 6은 도 7과 같은 토폴로지를 감지하여 생성한 토폴로지이다. 토폴로지 정보 생성부(1043-2)는 각 모듈의 ID, 연결 순위, 하위 연결 모듈 정보, 모듈 카테고리 정보 및 단계 정보를 포함하는 모듈 토폴로지 정보(1048)에 기초하여 토폴로지를 결정하게 된다. 여기서 모듈 토폴로지 정보(1048)의 상세 내용에 대해서는 후술한다.
단, 컨트롤 모듈(10)의 하위 연결 모듈로서 또다른 컨트롤 모듈이 접속되는 경우(도 6의 컨트롤 모듈 #2 또는 컨트롤 모듈 #3)에는 먼저 다른 모듈과 연결된 컨트롤 모듈이 메인 컨트롤 모듈로서 1 단계의 컨트롤 모듈이 된다. 즉, 컨트롤 모듈 #1이 다른 모듈인 모듈 #1이나 모듈 #2와 먼저 접속해 있는 경우에 컨트롤 모듈 #2가 단독으로 컨트롤 모듈 #1과 접속되는 경우에는 컨트롤 모듈 #1이 메인 컨트롤 유닛이 될 수 있다. 또는, 컨트롤 모듈에 별도의 우선순위를 저장해 놓고, 우선순위가 높은 컨트롤 모듈이 메인 컨트롤 모듈로, 우선순위가 낮은 컨트롤 모듈이 서브 컨트롤 모듈로 설정될 수 있다. 또는, 사용자 단말(3) 상에서 실행되고 있는 개발자 도구 앱(900)에서 메인 컨트롤 모듈 또는 서브 컨트롤 모듈을 지정할 수도 있다.
한편, 통신 제어부(1044)는 외부 기기와의 통신 및 모듈 사이의 통신을 제어할 수 있다. 외부 기기와의 통신은, NB-IOT, LTE, LoRa, WiFi, Bluetooth, USB, 케이블 모뎀 등 다양한 유무선 통신을 포함할 수 있다. 한편, 모듈 사이의 통신은 UART, I2C, LIN, CAN 등 다양한 내부 통신 수단을 이용하여 모듈간 통신을 수행할 수 있다. 통신 제어부(1044) 내에는 상술한 다양한 유무선 통신 수단 또는 모듈 사이의 통신 수단을 포함할 수도 있고, 별도의 네트워크 모듈과 연결될 때 별도의 네트워크 모듈을 제어하는 방식으로 통신할 수도 있다.
메모리(1045)는 모듈 어셈블리(1)의 동작에 필요한 각종 정보, 소프트웨어 및 연결된 모듈의 토폴로지에 관한 각종 정보들을 포함하며, 예를 들어, 메모리(1045)는 모듈 정보(1046), 구동정보(1047), 토폴로지 정보(1048) 및 펌웨어(1049)를 포함할 수 있다.
모듈 정보(1046)는 모듈 ID, 모듈 카테고리, 기능 정보 및 메타 정보를 포함할 수 있다. 모듈 ID(1046)는 UUID(Universally Unique identifier)와 같은 모듈 고유의 식별자 일 수도 있다. 또는 컨트롤 모듈(10)에서 결합 시 부여하는 임시 ID 일 수도 있다.
이 경우, 모듈 카테고리는 치환 가능한 모듈들을 찾는 것을 보조하기 위하여 복수의 모듈을 기능을 중심으로 유사한 기능을 가진 모듈들을 상위 개념으로 분류하는 개념이다. 예컨대, 센서, 키, 마이크 등 전기 신호를 입력하는 모듈들은 '입력', 액추에이터, 디스플레이, LED 등은 '출력', 또는 마이크로프로세서를 포함하며, 사용자가 포팅한 프로그램을 실행시킬 수 있는 모듈, 네트워크 모듈, 배터리 모듈 또는 가중치 표시 모듈은 “셋업” 등이 모듈 카테고리의 예가 될 수 있다.
또한, 추가적으로 보다 세밀한 분류를 위하여 상술한 모듈 카테고리들은 계층 구조를 가지면서 하위 모듈 카테고리를 가질 수도 있다. 예를 들어, 아래 표와 같은 모듈 카테고리 체계를 가질 수도 있다.
상위 카테고리 하위 카테고리 모듈
셋업 컨트롤 컨트롤 모듈
네트워크 블루투스 모듈
와이파이 모듈
Zigbee 모듈
LTE 모듈
배터리 배터리 모듈
시멘틱 모듈 시멘틱 모듈
입력 센서 가속도 센서
마이크 모듈
카메라 모듈
대기질 측정 모듈
컬러 센서
터치 센서
홀센서
적외선 센서
GPS
자이로스코프
초음파
키 입력 버튼
키보드
출력 시각출력 디스플레이
LED
구동 액츄에이터 구동 모듈
모터 컨트롤러 모듈
엑츄에이터 모터
리니어 엑츄에이터
솔레노이드
음성 출력 스피커
버저
기타 바퀴
운동 변환 모듈
(회전 운동 -> 직선 운동)
단순 연결 모듈
한편, 기능 정보는 모듈의 상세 기능을 표시한 것으로, 예를 들어, 컨트롤 모듈, 적외선 센서 모듈, 스위치 모듈, 전원 모듈 및 네트워크 모듈 등이다. 이 경우, 모듈의 기능은 각 모듈 내의 기능 유닛(104)의 구성에 따라 달라질 수 있다. 메타 정보는 모듈 및 소스 코드의 검색이 필요한 기타 정보로서, 예를 들어, '선풍기' 등의 구체적인 기기 명이 될 수도 있고, '바람', 또는 '시원' 등과 같은 선풍기와 연관된 연관 검색어들이 될 수도 있다.모듈 구동정보(1047)는 각 모듈을 구동하기 위한 드라이버(Driver)이다. 이러한 구동정보는 해당 모듈이 저장하고 있다가 모듈 연결 시에 컨트롤 모듈(10)에 제공하거나 또는 컨트롤 모듈(10)이 토폴로지 정보를 인터넷을 통해 서버 또는 사용자 단말에 포함된 개발자 도구 앱(900)에 제공하는 경우에, 인터넷 상의 추천 서버 또는 해당 개발자 도구 앱으로부터 다운로드 받을 수 있다. 이러한 모듈 구동정보에 기초하여, 컨트롤 모듈(10)은 모듈 어셈블리(1)를 구동할 수 있다.
한편, 모듈 토폴로지 정보(1048)는 컨트롤 모듈(10)에서 수집한 토폴로지 정보로서, 도 6 및 도 7을 참조하여 상세히 설명한다. 도 7은 도 6의 토폴로지를 가진 모듈 어셈블리(1)의 토폴로지 정보를 예시적으로 나타낸다.
도 6에 따르면, 모듈 토폴로지 정보(1048)는 기본적으로 모듈 어셈블리(1) 내의 모듈들의 고유 정보(모듈 ID)(1048-1), 단계 정보(1048-2), 하위 연결 모듈 정보(1048-3), 연결 순위(1048-4) 및 모듈 카테고리(1048-6)를 포함할 수 있다. 추가적으로 모듈 토폴로지 정보(1048)는 연결 방향(1048-5)을 더 포함할 수 있다.
모듈 고유 정보(1048-1)는 모듈 어셈블리에 포함된 연결된 모듈들의 모듈 ID(1046)를 나타낸다. 이 경우, 모듈 고유 정보(1048-1)는 UUID(Universally Unique IDentifier)와 같은 모듈 고유의 식별자 일 수 있으며, 컨트롤 모듈(10)에서 연결 시 부여하는 임시 ID 일 수도 있다.
단계 정보(1048-2)는 앞서 설명한 컨트롤 모듈(10)과의 거리를 의미하며, 컨트롤 모듈(10)로부터 해당 모듈까지 최단 경로 상으로 연결된 모듈을 카운팅하여 결정된다. 단, 상술한 모듈들 중 시멘틱 모듈에 부착되는 모듈의 경우에는 단계 정보(1048-2)가 시멘틱 모듈을 컨트롤 모듈(10)으로 가정하여 시멘틱 모듈로부터의 거리나, (시멘틱 모듈에 지정된 단계) + (시멘틱 모듈과의 거리) - 1 로 정해질 수 있다. 또는 시멘틱 모듈에 부착되는 경우에는 큰 가중치가 부여되어 시멘틱 모듈에 부착되는 모듈의 중요성이 강조될 수 있다.
시멘틱 모듈(Semantic module)은 예컨대, 모듈의 크기 나 다른 모듈에 영향을 주는 등 컨트롤 모듈(10)과 직접 연결이 어려운 경우에 개발자 프로그램에서 소스 코드 추천이나 모듈 추천에 있어서 중요한 모듈이라는 것을 하드웨어적으로 표시하기 위한 모듈이다.
예컨대, 사용자가 모듈을 조립하여 미니 자동차의 기능을 하는 모듈 어셈블리를 만들려는 의도가 있을 때에 모터 모듈이나 바퀴 모듈은 중요한 의미를 가지게 되지만, 바퀴의 사이즈 등으로 인하여 컨트롤 모듈(10)과의 거리가 멀어져서 의미를 주기 어려운 경우가 있을 수 있다. 이 경우, 모터 모듈 또는 바퀴 모듈을 시멘틱 모듈과 연결하게 된다면, 토폴로지 상에서 사용자의 의도가 반영되어 소스 코드 또는 추가 또는 치환 모듈의 추천이 보다 사용자의 의도에 가까워질 수 있다.
도 12는 본 발명의 실시예에 따른 모듈 어셈블리 중 시멘틱 모듈(60)이 부착된 경우를 설명하기 위한 도면이다. 이 경우, 통상적으로는 컨트롤 모듈(10)에 모듈(20, 30)을 통하여 시멘틱 모듈(50)이 부착되어 있고, 모듈(40, 50)은 시멘틱 모듈(60)을 통하여 컨트롤 모듈(10)과 부착되어 있다. 이 경우, 시멘틱 모듈(60)에 부착된 모듈(40, 50)은 가중치가 높게 부여되거나 또는 높은 단계 정보(컨트롤 모듈(10)과의 거리가 더 가까운)가 부여될 수 있다. 이 때, 시멘틱 모듈(60)은 중요 방향 표시(65)를 포함할 수 있다. 중요 방향 표시(65)가 시멘틱 모듈(60)에 포함된 경우에는 표시된 방향에 부착된 모듈(50)만 가중치가 높게 부여되거나 또는 높은 단계 정보를 부여받을 수 있다.
하위 연결 모듈 정보(1048-3)는 해당 모듈보다 단계가 낮은(컨트롤 모듈(10)과의 거리가 더 먼) 모듈의 모듈 고유 정보를 나타낸다. 기본적으로 각 모듈은 해당 모듈과 연결된 모듈들의 정보를 저장하고 컨트롤 모듈(10)에 연결될 때, 하위로 연결된 모듈의 정보를 컨트롤 모듈(10)에 제공할 수 있다.
연결 순위(1048-4)는 컨트롤 모듈(10)에 접속하는 순서를 나타내는 것으로, 추천 서버(2)에서 소스 코드 및 모듈을 추천할 때에 기초가 되는 정보이다. 연결 순위(1048-4)의 결정 방법에 대해서는 도 5에 대한 설명 부분에서 저술하였으므로 공통된 부분의 설명을 생략한다. 컨트롤 모듈(10)에 이미 결합되어 있는 복수의 모듈인 모듈 그룹이 결합되는 경우에는 모듈 그룹에 동일한 공통 연결 순위(1048-7)가 부여될 수 있다.
연결 방향(1048-5)은 부가적인 정보로서, 하위 연결 모듈 및 상위 연결 모듈이 어떤 포트와 물리적으로 접속되었는지를 나타내는 정보이다. 예를 들어, 통신 모듈과 자이로스코프 센서 모듈이 있는 경우에, 통신 모듈의 전자기파가 자이로스코프 센서 모듈의 센싱에 영향을 줄 수도 있으므로, 상술한 연결 방향(1048-4)에 기초하여 가급적이면 영향을 주지 않는 위치에 서로 배치할 수 있다. 이 경우에는 연결 방향 정보 및 단계 정보를 활용할 수 있다.
마지막으로 모듈 카테고리(1048-6)는 모듈의 기능에 따라 모듈을 분류한 정보이다. 예를 들어, 마이크로폰, 온도 센서, 자이로스코프 센서, 적외선 센서, 초음파 센서 등의 각종 센서, 다이얼, 버튼, 키보드 등의 입력되는 전기 신호를 수집하는 모듈들은 '입력' 으로 분류될 수 있다. 또는 모터 등의 액추에이터, 발광다이오드(LED), 액정 디스플레이 장치, 스피커 등은 '출력'으로 분류될 수 있다. 또한, 각종 네트워크 모듈(LTE, Bluetooth 등)은 '통신'으로 분류될 수 있다. 또한, 마이크로프로세서를 포함하며 사용자 단말기(3)에서 프로그래밍한 애플리케이션을 실행할 수 있는 모듈은 '컨트롤'로 분류될 수 있다. 이러한 카테고리 정보에 기초하여 서버에서는 모듈 추천 시 치환 가능한 모듈인지, 추가 가능한 모듈인지 여부를 판단할 수 있다.
이와 같은 토폴로지 정보는 아래와 같이 활용될 수 있다. 이하에서는 도 9 및 도 10을 참조하여, 토폴로지 정보에 기초하여 서버에서 소스 코드 및 모듈을 추천하는 인터페이스 및 알고리즘에 관하여 상세하게 설명한다.
사용자 단말기(3)에 연결된 모듈 어셈블리(1)의 토폴로지 정보가 사용자 단말(3)에 제공되면, 개발자 도구 앱(900)은 현재 구성(910 내지 940), 추천 소스 코드(950, 960) 및 추가 또는 치환 가능한 추천 모듈(970, 980)을 제공할 수 있다. 이 경우, 바람직하게는 개발자 도구 앱(900)은 추천 모듈(970, 980)을 추천 설치 위치(990)와 함께 제공할 수 있다.
이러한 추천 소스 코드(950, 960), 추천 모듈(970, 980) 및 추천 설치 위치(990)는 추천 서버(2)로부터 제공된다. 추천 서버(2)는 기존 사용자들이 이미 사용했던 모듈 어셈블리 토폴로지 이력 및 이에 대응되는 소스 코드를 저장하고 현재 사용자의 모듈 어셈블리(1)의 토폴로지 정보에 기초하여 소스 코드, 추가 구성 및 설치 위치에 관한 추천을 제공하게 된다.
이 때, 추천 서버(2)는 토폴로지 정보 중, 연결 순위(915), 단계 정보, 모듈 카테고리, 사용자가 입력한 키워드(965) 및 메타 정보 등에 따라 추천 소스 코드 및 모듈과, 추천 순서를 결정하여 추천할 수 있다.
먼저, 연결 순위에 대한 실시예를 살펴보면, 예를 들어, 도 9에서는 모듈 어셈블리(1)가 컨트롤 모듈(910)에, 액추에이터 모듈(920), 네트워크 모듈(940) 및 적외선 모듈(930) 순으로 조립되었지만, 도 10에서는 모듈 어셈블리(1)가 컨트롤 모듈(910)에, 적외선 모듈(930), 네트워크 모듈(940) 및 액추에이터 모듈(920) 순으로 조립된 것을 알 수 있다. (연결 순위(915) 참조) 이 때, 도 9 및 도 10에서는 동일한 모듈의 조합 구성이지만, 모듈의 연결 순위가 다르기 때문에 소스 코드의 추천 순서가 다르기 때문에 도 9에서는 소스 코드(950)가 1번으로 추천되지만, 도 10에서는 소스 코드(960)가 1번으로 추천되었다.
또한, 도 9 및 도 10에서는 동일한 모듈의 조합 구성이지만, 모듈의 연결 순위가 다르기 때문에 추천되는 추가 모듈 추천의 순서도 다르게 기재되어 있다. 즉, 도 9에서는 추가 모듈 조합(970)이 1번으로 추천되지만, 도 10에서는 추가 모듈 조합(980)이 1번으로 추천된다는 것을 알 수 있다.
이렇게 연결 순위에 따라 추천 소스 코드를 바꾸는 이유는 연결 순위에 따라 사용자의 의도가 바뀌기 때문이다. 예를 들어, 도 9와 같이 액추에이터 모듈을 먼저 컨트롤 모듈에 부착하고, 센서를 부착한 경우에 사용자는 센서에 의하여 특정 조건에서 멈추게 되는 이동 수단과 같은 장치를 만드는 경향이 있었다.
또는 예를 들어, 도 10과 같이, 센서를 컨트롤 모듈에 먼저 부착하고 액추에이터 모듈을 부착하는 경우에는 이동하면서 여러 위치의 센싱 대상을 파악할 수 있는 센서 장치를 만드는 경향이 있었다.
따라서, 사용자의 모듈 부착 순서에 따라 만들고자 하는 장치가 달라지는 경향이 있고, 이에 따라 본 발명의 발명자는, 사용자들이 손쉽게 소스 코드를 선택할 수 있도록 모듈 부착 순서(컨트롤 모듈에 연결하는 연결 순위)에 따라 다른 소스 코드를 추천할 수 있도록 추천 서버(2)의 알고리즘을 구성하였다.
한편, 모듈 부착 순서와 소스 코드와의 관계는 학습에 의하여 정교하게 매칭될 수 있다. 예컨대, 모듈 부착 순서와 소스 코드와의 관계는 예를 들어, 결정 트리 학습법(Decision Tree Learning)에 의한 기계 학습이 가능하다. 또는 인공 신경망 모형이나 SVC 등의 학습 방법으로도 기계 학습이 가능하다.
또는, 추천 서버(2)는 단계 정보 및 모듈 카테고리를 이용한 추천이 가능하다. 예컨대, 2 단계에서 액추에이터 구동 모듈이 부착되는 경우에는 3 단계의 모듈로서 액추에이터 구동 모듈에 대응하는 액추에이터가 추천되거나, 또는 2 단계의 다른 부분에 추가될 모듈로서 해당 액추에이터 구동 시 자주 사용되는 센서 모듈이 추천될 수 있다(단계 정보 이용). 또는, 키보드 모듈이 부착된 경우에 키보드 모듈을 치환할 다른 입력 모듈(예를 들어 마이크 모듈 등)을 추천하는 것도 가능하다.
또는 추천 서버(2)는 키워드(965)에 의한 추천도 가능하다. 예컨대, 키워드로서 리모컨이 입력되는 경우에는 적외선 모듈이나 간단한 복수의 키를 포함하는 키 모듈 등이 추천될 수 있다.
또는 추천 서버(2)는 메타 정보를 활용한 추천도 가능하다. 예를 들어, 모듈에 메타 정보로서 '선풍기'를 저장하고 있는 경우에, 동일한 메타 정보인 '선풍기'를 저장하고 있는 다른 모듈들을 추가 또는 치환 가능한 모듈로서 추천할 수 있다. 메타 정보는 '선풍기' 등의 구체적인 기기 명이 될 수도 있고, '바람', 또는 '시원' 등과 같은 선풍기와 연관된 연관 검색어들이 될 수도 있다. 메타 정보는 모듈 정보로서 추천 서버(2)에서 각 모듈 별로 저장될 수 있으며, 한편, 사용자가 추천 서버(2)에 접속하여 해당 모듈 메타 정보를 편집하는 것도 가능하다. 또는 메타 정보는 기계 학습에 의하여 입력될 수도 있다.
또는 추천 서버(2)는, 사용자가 입력한 키워드(965)를 추가적으로 고려하여 추천 소스 코드 및 모듈과, 추천 순서를 결정하여 추천할 수 있다. 예컨대, 사용자가 '리모컨'를 입력한 경우에, 추천 서버(2)는 토폴로지 정보에 기초하여 선택한 소스 코드 및 추가/치환 가능한 추천 모듈들 중, 리모컨에 관련한 것을 선별하여 사용자에게 나타낼 수도 있다.
한편, 추천 서버(2)는 모듈 어셈블리(1)의 현재 구성(910 내지 940)과 동일한 모듈 어셈블리 조합 이력(동일한 토폴로지)이 없는 경우에도 토폴로지 정보에 기초하여 일부 동일한 구성(유사한 구성)을 검색하여 추천 소스 코드 및 추가 또는 치환 가능한 추천 모듈을 추천할 수 있다.
이 경우, 추천 서버(2)는 토폴로지 정보 중 모듈 어셈블리(1) 내 모듈들의 단계 정보(컨트롤 모듈로부터 해당 모듈까지의 거리)에 따른 가중치 및 가중치를 이용하여 연산한 연산 값에 기초하여 모듈 추천 순서를 결정할 수 있다. 또한, 가중치는 모듈 고유 정보에 기초하여 결정될 수도 있다. 또한, 가중치는 시멘틱 모듈에 부착된 경우, 컨트롤 모듈(10)에 직접 부착된 것과 동일한 가중치가 부여될 수도 있다. 예를 들어, 도 12를 참조하면, 컨트롤 모듈(10)에 직접 부착된 모듈(20)은 높은 가중치가 부여되고, 그 다음으로 부착된 모듈(30)은 모듈(20)에 비하여 낮은 가중치가 부여되지만, 컨트롤 모듈(10)에 직접 부착되지 않고 시멘틱 모듈(60)에 부착된 모듈(40, 50)은 컨트롤 모듈(10)에 직접 부착된 모듈(20)과 동일하게 높은 가중치가 부여될 수 있다.
예를 들어, 추천 서버(2)는 모듈 카테고리 별로 우선순위를 지정하고, 단계 정보에 따른 가중치와 가중치합을 수행하고, 가중치 합에 따라 모듈의 종류를 결정할 수 있다. 예를 들어, 1 단계인 컨트롤 모듈(10)은 우선순위 1, 가중치 1000, 3 단계인 네트워크 모듈은 우선순위 2, 가중치 100, 2 단계인 입력 모듈(센서)은 우선순위 3, 가중치 100, 마지막으로 3단계인 출력 모듈(액추에이터)은 우선순위 4, 가중치 10이라고 하면, 가중치 합은 1*1000+ 2*100+ 3*100+ 4*10 = 1540이 되고, 이 값을 서버에 기 저장된 값들과 비교하여 가장 유사한 숫자를 가지는 상위 10개의 모듈 어셈블리 정보를 상술한 가중치 합의 순서대로 표시하고 추가 또는 치환 가능한 추천 모듈 및 추천 소스 코드(950, 960)을 표시할 수 있다.
위에서 알 수 있는 바와 같이, 가중치를 적절하게 사용하는 경우에는 유사한 구성을 쉽게 찾을 수 있으며, 예컨대, 가중치는 (상수(위의 실시예에서는 10))^(모듈 어셈블리 내 전체 모듈 수 - 단계 값 + 1)으로 정할 수 있다.
이 경우, 연산된 가중치 연산 값을 통해 모듈 추천 순서를 결정할 수 있다. 도 9를 참조하면, 연산 값이 더 높은 추천 모듈(960)이 연산 값이 낮은 추천 모듈(970)에 비하여 더 상위로 추천될 수 있다. 사용자는 개발자 도구 앱(900)에서 복수의 치환/추가 가능한 모듈 조합 정보 중 어느 하나를 선택할 수 있다. 이 경우, 선택된 모듈 조합 정보에 대응하는 소스 코드(950, 960)가 사용자 단말(3)에 표시될 수 있다.
또한 추천 서버(2)는 추가적으로 사용자가 입력한 키워드 정보(980)를 추천에 활용할 수 있다. 예를 들어, 추천 수가 많은 경우에는 추천 서버(2)는 사용자가 입력한 키워드 정보(980)를 활용하여 추천되는 모듈의 수를 제한할 수 있다.
한편, 위의 실시예에서는 모듈의 토폴로지 정보에 기초하여 연산을 수행하였으나, 자주 쓰이는 모듈들은 모듈 그룹으로 등록하여 이를 하나의 모듈처럼 취급할 수도 있다. 예컨대, 리모컨 신호를 수신할 수 있는 적외선 센서 모듈, 컨트롤 모듈 및 스위치 모듈은 하나의 리모컨 컨트롤 모듈로서 자주 활용될 수 있다. 이와 같은 모듈 조합들은 하나의 모듈 그룹으로 취급될 수 있다.
또한, 앞서 설명한 바와 같이, 추천된 등록된 모듈 그룹이 메인 컨트롤 모듈(10)에 결합될 때에는 공통 연결 순위가 부여될 수 있으며 또는 공통 단계 정보가 부여될 수도 있다. 또는 모듈 그룹은 메인 컨트롤 모듈(10)이 하나의 모듈로 취급할 수도 있다. 이 경우, 모듈 그룹에 포함되는 각각의 모듈은 결합되는 모듈의 정보를 각각 획득한 후, 컨트롤 모듈(10)에 가장 가깝게 결합되는 모듈이 모듈 그룹의 정보를 컨트롤 모듈(10)에 전송할 수 있다. 예컨대, 도 11의 경우, 컨트롤 모듈(10)과 모듈(20)이 결합되어 있는 모듈 어셈블리에, 모듈 그룹(30, 40)이 결합하는 경우에 관한 것이다. 이 경우, 모듈 그룹에 속하는 모듈(30, 40)은 결합 시, 상호 간에 모듈 정보를 주고받는다. 이 때 주고받는 모듈 정보는 도 6에 기재된 토폴로지 정보의 항목의 정보들을 포함할 수 있다. 또한, 이 경우, 각각의 모듈(10 내지 40)은 메타 정보를 포함할 수도 있다. 메타 정보는 예를 들어, 추가 또는 치환 가능한 모듈 정보, 또는 모듈 그룹을 구성할 수 있는 타 모듈들에 대한 정보를 포함할 수 있다.
그리고, 모듈 그룹(30,40)이 컨트롤 모듈(10)이 포함된 모듈 어셈블리와 결합할 때에는 컨트롤 모듈(10)에 가장 가깝게 결합되는 모듈(30)이 컨트롤 모듈(10)에 모듈 정보를 전송하게 된다. 이 경우, 컨트롤 모듈(10)은 모듈 그룹(30, 40)을 단일 모듈과 같이 처리할 수 있다. 즉, 모듈 그룹(30, 40)을 하나의 모듈로 등록할 수도 있다.
다시 도 4를 참조하면, 펌웨어(1049)는 모듈 어셈블리(1)를 동작 시키기 위한 소프트웨어로서, 컨트롤 모듈(10)이 토폴로지 정보를 인터넷을 통해 서버 또는 사용자 단말에 포함된 개발자 도구 앱에 제공하는 경우에, 인터넷상의 추천 서버(2) 또는 해당 개발자 도구 앱으로부터 소스 코드를 추천받고 사용자가 선택한 소스 코드를 컴파일한 실행파일(펌웨어)을 다운로드 받을 수 있다.
마이크로프로세서(1050)는 모듈 어셈블리(1) 상의 펌웨어나 또는 통신 제어부(1044), 토폴로지 감지부(1043)의 프로토콜 실행을 위한 연산장치로서, 당업자는 모듈 어셈블리(1)에 필요한 마이크로프로세서(1050)를 적절하게 선택하여 구현할 수 있다.
이하에서는 도 8을 참조하여, 모듈 어셈블리(1)에서 컨트롤 모듈이 토폴로지를 감지하는 프로토콜을 상세하게 설명한다.
본 실시예에서는 설명의 간략화를 위하여 3 단계의 연결을 구비하는 모듈 어셈블리(1)를 기준으로 설명한다. 단, 당업자는 본 실시예에 기초하여 다양한 변형을 가할 수 있다.
먼저, 새로운 모듈, 예를 들어, 2 단계(2nd Tier) 모듈이 컨트롤 모듈(10, 1st Tier)에 접속한 직후 인터럽트(interrupt) 신호를 컨트롤 모듈(10)의 마이크로프로세서(1050)에 인가하게 된다. 또는, 예를 들어, 컨트롤 모듈(10)이 정기적으로 토폴로지를 인식하기 위하여 정기적으로 질의(query)를 각 모듈에 보내고 새로운 모듈이 접속했는지 여부를 각 모듈이 하위 연결 모듈 정보를 전송하여 알 수도 있다. 단, 본 실시예에서는 각 모듈이 기본적으로 휴대 가능한 모바일 유닛이기 때문에 전력을 아끼기 위하여 연결되었을 때에 인터럽트 신호를 보내는 것으로 설명한다.
또는, 하우징(11)의 외부로 선택적으로 돌출되는 핀(180) 및 핀 수용부(160)(도 2 참조)을 마그네틱으로 제작하고, 돌출되는 핀(180)이 다른 모듈의 핀 수용부(160)에 부착될 때, 돌출되는 핀(180)과 핀 수용부(160)의 결합을 센싱하여 컨트롤 모듈(10)로 하여금 새로운 모듈이 부착되었다는 것을 인식하도록 구성할 수도 있다.
또는, 예컨대, 모듈과 모듈 사이에 CAN(Controller Area Network) 프로토콜을 사용하여 통신하는 경우에는, 먼저, 모듈과 모듈이 결합될 때, 각 모듈에서 모듈 ID를 메시지로 전송하여 해당 모듈이 부착되었음을 선언할 수도 있다. 각 모듈은 CAN 버스를 통하여 서로 연결되어 있으며, CAN 버스가 점유되지 않은 경우에는 어떤 모듈(노드)도 메시지 전송이 가능하며, 두 개의 모듈에서 동시에 전송을 시도하는 경우에는 정해진 우선 순위에 따라 우선 순위가 높은 메시지가 먼저 전송되게 된다. 이 때, 우선 순위는 모듈 카테고리에 따라 결정될 수 있다. CAN 통신을 통하여 모듈들을 서로 연결하게 되는 경우에는 버스를 공유하기 때문에 UART와 같은 일대일(point to point) 방식에 비하여 배선이 증가되지 않으므로, 유리하다.
한편, 컨트롤 모듈(10)은 인터럽트가 발생하는 경우에는 이러한 인터럽트가 정상적인 인터럽트 신호인지를 확인하기 위하여 접속 확인 신호(Connection Check)를 송신하고, 이에 대한 응답으로 확인신호(Ack)를 수신한다.
컨트롤 모듈(10)이 정상적으로 확인 신호(Ack)를 수신하면, 다음으로는 모듈 ID(1046)를 질의하게 된다. 이에 대한 응답으로 새롭게 접속된 모듈의 모듈 ID(1046)를 수신하게 되면, 해당 모듈을 토폴로지 정보에 등록시키고, 해당 모듈에 대하여 연결 순위(Connection Ranking)를 부여한다. 그 후, 모듈 거리를 카운팅하고, 해당 모듈의 가중치(Module Weight)를 부여한 후, 해당 모듈에 하위 연결 모듈에 대한 정보를 요청하게 된다(Connection Info).
한편, 컨트롤 모듈(10)이 하위 연결 모듈에 대한 정보를 수신하게 되면, 해당 하위 연결 모듈(3rd tier)이 제대로 연결되었는지를 확인하기 위하여 모듈 ID를 하위 연결 모듈에 질의한다. 컨트롤 모듈(10)은 질의에 대한 응답으로 수신한 모듈 ID와 2 단계 모듈(2nd Tier)로부터 수신한 하위 연결 모듈 정보를 비교하여 실제 연결상태를 확인한다. 이 때 실제 연결 상태와 다른 경우에는 에러가 발생하며, 컨트롤 모듈(10)은 2 단계 모듈(2nd Tier)에 하위 연결 모듈 정보를 재요청한다.
컨트롤 모듈(10)은 2 단계 모듈(2nd Tier)로부터 수신한 하위 연결 모듈 정보가 실제 연결 상태와 일치하는 경우에는, 다시, 해당 모듈을 토폴로지 정보에 등록시키고, 해당 모듈에 대하여 연결 순위(Connection Ranking)를 부여한다. 그 후, 모듈 거리를 카운팅한 후, 다시 3 단계 모듈(3rd Tier)에 하위 연결 모듈 정보를 요청한다. 그리고, 컨트롤 모듈(10)은 하위 연결 모듈 정보가 없을 때까지 위의 프로토콜을 반복하여 토폴로지 정보를 완성한다.
토폴로지 정보가 완성되면 컨트롤 모듈(10)에 저장되고, 컨트롤 모듈(10)이 사용자 단말(3)과 연결되면, 사용자는 사용자 단말(3) 내에 설치되거나 또는 추천 서버(2)의 웹 인터페이스로 제공되는 개발자 도구 앱(900)을 통하여 현재까지 구성된 모듈 어셈블리(1)에 포팅이 가능한 추천 소스 코드(910)을 제공받는다.
본 발명에 따른 모듈 추천 시스템은, 모듈 어셈블리의 조립 정보를 공유하고, 사용자가 필요한 조립 정보를 용이하게 추천받고 검색할 수 있는 모듈 추천 시스템을 제공할 수 있다.
또한, 본 발명에 따르면, 모듈 어셈블리가 교육용, 개인용 장난감 등으로 활용될 때에, 하드웨어 또는 소프트웨어를 잘 알지 못하는 비 전문가들도 쉽게 모듈 어셈블리를 조립하고 또한 사용할 소프트웨어를 자동으로 생성 및 추천하여 누구나 모듈 어셈블리를 쉽게 활용할 수 있는 모듈 추천 시스템 및 모듈 어셈블리가 제공된다.
이 경우, 모듈 어셈블리를 구성함에 있어서, 기존의 사용자가 이미 조립했던 구성들에 대한 정보를 활용하여, 필요한 모듈 어셈블리를 빠르게 제작할 수 있고, 관련 소스 코드를 빠르게 검색할 수 있는 시스템을 제공할 수 있다.
또한, 사용자는 모듈 어셈블리 조립 시 타 사용자가 조립한 모듈 어셈블리 및 모듈 어셈블리를 구동하는 소스 코드를 참조하여 새로운 모듈을 디자인할 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다.
따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구 범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리 범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (14)

  1. 토폴로지 정보를 감지 및 생성하는 토폴로지 관리부를 구비하는 기능 유닛을 포함하는 컨트롤 모듈 및 상기 컨트롤 모듈과 다른 기능 유닛을 포함하는 복수의 타모듈을 포함하는 모듈 어셈블리;
    상기 모듈 어셈블리와 연결되는 사용자 단말; 및
    상기 사용자 단말과 네트워크로 연결되며, 상기 모듈 어셈블리의 토폴로지 정보를 저장하고, 상기 토폴로지 정보에 기초하여 사용자 단말에 추천 소스 코드에 대한 정보를 제공하는 추천 서버를 포함하며,
    상기 토폴로지 정보는 상기 컨트롤 모듈에 상기 복수의 타모듈이 연결된 순서를 나타내는 연결 순위를 포함하며, 상기 추천 서버는 상기 연결 순위에 기초하여 상기 추천 소스 코드에 대한 정보를 결정하여 상기 사용자 단말에 전송하는,
    소스 코드 및 모듈 추천 시스템.
  2. 제1항에 있어서, 상기 토폴로지 정보는 모듈 고유 정보 및 하위 연결 모듈 정보를 더 포함하며,
    모듈 추천 시스템.
  3. 제2항에 있어서, 상기 토폴로지 정보는 단계 정보를 더 포함하며, 상기 단계 정보는 상기 모듈 어셈블리의 컨트롤 모듈로부터 해당 모듈까지의 최단경로 상의 모듈을 카운팅하여 결정되며, 상기 추천 서버는 상기 단계 정보 및 상기 모듈 고유 정보에 기초하여 상기 모듈 어셈블리에 추가 또는 치환 가능한 추천 모듈을 추천할 수 있는,
    소스 코드 및 모듈 추천 시스템.
  4. 제2항에 있어서, 상기 토폴로지 관리부의 토폴로지 감지부는 상기 컨트롤 모듈의 하위 연결 모듈로부터 제공받은 모듈 ID 및 하위 연결 모듈 정보에 기초하여 상기 모듈 어셈블리의 연결 상태를 감지하는,
    소스 코드 및 모듈 추천 시스템.
  5. 제1항에 있어서, 상기 추천 서버는 추가적으로 상기 사용자 단말로부터 입력받은 키워드 정보에 기초하여 추가 또는 치환 가능한 추천 모듈을 추천하는,
    소스 코드 및 모듈 추천 시스템.
  6. 제1항에 있어서, 상기 추천 서버는 상기 모듈 어셈블리의 토폴로지 정보와 동일한 토폴로지 정보가 상기 추천 서버에 저장되어 있는 경우에는 상기 동일한 구성에 대응하는 소스 코드를 상기 사용자 단말에 표시하고,
    상기 추천 서버는 상기 모듈 어셈블리의 토폴로지 정보와 동일한 토폴로지 정보가 상기 추천 서버에 저장되어 있지 않는 경우에는 상기 모듈 어셈블리의 토폴로지 정보 중 일부를 포함하고 있는 토폴로지 정보에 대응하는 소스 코드 및 추가 또는 치환 가능한 모듈을 추천하는,
    소스 코드 및 모듈 추천 시스템.
  7. 제4항에 있어서, 상기 추천 서버는 메타 정보에 기초하여 소스 코드 및 추가 또는 치환 가능한 추천 모듈을 추천하는,
    소스 코드 및 모듈 추천 시스템.
  8. 제1항에 있어서, 상기 토폴로지 정보는 복수의 모듈 기능을 포함하는 모듈 카테고리를 나타내는 카테고리 정보를 더 포함하며, 상기 추천 서버는 상기 카테고리 정보에 기초하여 소스 코드 및 추가 또는 치환 가능한 추천 모듈을 추천하는,
    소스 코드 및 모듈 추천 시스템.
  9. 추천 서버와 네트워크로 연결된 사용자 단말과 연결될 수 있는 모듈 어셈블리에 있어서,
    토폴로지 정보를 감지하여 생성하는 토폴로지 관리부; 통신 제어부; 모듈 정보 및 토폴로지 정보를 포함하는 메모리; 마이크로프로세서를 포함하며 사용자 단말에서 포팅한 프로그램을 실행할 수 있는 기능 유닛을 구비하는 컨트롤 모듈; 및 상기 컨트롤 모듈과 다른 기능 유닛을 각각 구비하는 복수의 타모듈을 포함하며,
    상기 토폴로지 정보는 상기 컨트롤 모듈에 상기 복수의 타모듈이 연결된 순서를 나타내는 연결 순위를 포함하며, 상기 추천 서버는 상기 연결 순위에 기초하여 상기 추천 소스 코드에 대한 정보를 결정하여 상기 사용자 단말에 전송하는,
    모듈 어셈블리.
  10. 제9항에 있어서, 상기 토폴로지 정보는 모듈 고유 정보 및 하위 연결 모듈 정보를 더 포함하며, 상기 단계 정보는 상기 모듈 어셈블리의 컨트롤 모듈로부터 해당 모듈까지의 최단경로 상의 모듈을 카운팅하여 결정되는,
    모듈 어셈블리.
  11. 제10항에 있어서, 상기 토폴로지 정보는 단계 정보를 더 포함하며, 상기 단계 정보는 상기 모듈 어셈블리의 컨트롤 모듈로부터 해당 모듈까지의 최단경로 상의 모듈을 카운팅하여 결정되며, 상기 추천 서버는 상기 단계 정보 및 상기 모듈 고유 정보에 기초하여 상기 모듈 어셈블리에 추가 또는 치환 가능한 추천 모듈을 추천할 수 있는,
    모듈 어셈블리.
  12. 제10항에 있어서, 상기 토폴로지 관리부의 토폴로지 감지부는 상기 컨트롤 모듈의 하위 연결 모듈로부터 제공받은 모듈 ID 및 하위 연결 모듈 정보에 기초하여 상기 모듈 어셈블리의 연결 상태를 감지하는,
    모듈 어셈블리.
  13. 제9항에 있어서, 상기 모듈 정보는 메타 정보를 포함하며, 상기 추천 서버는 상기 메타 정보에 기초하여 소스 코드 및 추가 또는 치환 가능한 추천 모듈을 추천하는,
    모듈 어셈블리.
  14. 제9항에 있어서, 상기 토폴로지 정보는 복수의 모듈 기능을 포함하는 모듈 카테고리를 나타내는 카테고리 정보를 더 포함하며, 상기 추천 서버는 상기 카테고리 정보에 기초하여 소스 코드 및 추가 또는 치환 가능한 추천 모듈을 추천하는,
    모듈 어셈블리.
KR1020180114166A 2018-09-21 2018-09-21 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리 KR102304692B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180114166A KR102304692B1 (ko) 2018-09-21 2018-09-21 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리
CN201980031868.9A CN112154471A (zh) 2018-09-21 2019-09-17 源代码及模块推荐系统及模块组件
PCT/KR2019/011983 WO2020060146A1 (ko) 2018-09-21 2019-09-17 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리
EP19862450.4A EP3726450B1 (en) 2018-09-21 2019-09-17 Source code and module recommendation system and module assembly
US16/640,692 US11836639B2 (en) 2018-09-21 2019-09-17 Source code and module recommendation system, and module assembly

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180114166A KR102304692B1 (ko) 2018-09-21 2018-09-21 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리

Publications (2)

Publication Number Publication Date
KR20200034411A true KR20200034411A (ko) 2020-03-31
KR102304692B1 KR102304692B1 (ko) 2021-09-24

Family

ID=69887555

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180114166A KR102304692B1 (ko) 2018-09-21 2018-09-21 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리

Country Status (5)

Country Link
US (1) US11836639B2 (ko)
EP (1) EP3726450B1 (ko)
KR (1) KR102304692B1 (ko)
CN (1) CN112154471A (ko)
WO (1) WO2020060146A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020095532A (ja) * 2018-12-13 2020-06-18 Vivita株式会社 情報処理システム
US11604628B2 (en) * 2020-12-16 2023-03-14 Google Llc Generation and/or recommendation of tools for automating aspects of computer programming

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150111134A (ko) * 2014-03-25 2015-10-05 한국전자통신연구원 코드 추천 및 공유 시스템 및 방법
KR20170010720A (ko) * 2015-07-20 2017-02-01 이준희 토폴로지 인식 기능을 갖는 블록 완구 및 이를 이용한 컨텐츠 제공 시스템
KR20170023022A (ko) * 2014-06-30 2017-03-02 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 코드 추천 기법
KR101713085B1 (ko) * 2015-12-15 2017-03-07 위드큐브(주) 스마트 블록을 이용한 컨텐츠 제공시스템

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8554877B2 (en) * 2005-08-19 2013-10-08 Rockwell Automation Technologies, Inc. Motor drive with integrated server module
CA2743466C (en) * 2008-11-19 2015-05-19 Nippon Telegraph And Telephone Corporation Path calculation order deciding method, program and calculating apparatus
US8593996B2 (en) * 2010-02-23 2013-11-26 Lg Electronics Inc. Method and an apparatus for session routing in home network system
US20110238608A1 (en) * 2010-03-25 2011-09-29 Nokia Corporation Method and apparatus for providing personalized information resource recommendation based on group behaviors
EP3058523A4 (en) * 2013-10-16 2017-05-24 Lahti, Ken Assessment system
JP6324716B2 (ja) * 2013-12-26 2018-05-16 株式会社ソニー・インタラクティブエンタテインメント ブロック、ブロックシステム、表示方法、および情報処理方法
US10188939B2 (en) * 2014-03-11 2019-01-29 Microsoft Technology Licensing, Llc Modular construction for interacting with software
US20160283548A1 (en) * 2015-03-27 2016-09-29 International Business Machines Corporation Recommending connections in a social network system
US10452242B2 (en) * 2015-06-07 2019-10-22 Cisco Technology, Inc. System and method of providing a computer networking tool and interfaces
KR101761596B1 (ko) * 2016-03-07 2017-07-26 주식회사 럭스로보 모듈 어셈블리
KR102409158B1 (ko) * 2016-05-10 2022-06-14 엘에스일렉트릭(주) 슬레이브 디바이스 제어 방법
US10771345B1 (en) * 2016-12-28 2020-09-08 Amazon Technologies, Inc. Network monitoring service
KR20180080919A (ko) * 2017-01-05 2018-07-13 조태연 코딩 교육 장치 및 코딩 교육 방법
US11107367B2 (en) * 2017-03-27 2021-08-31 Apple Inc. Adaptive assembly guidance system
US11362882B2 (en) * 2017-08-25 2022-06-14 Veniam, Inc. Methods and systems for optimal and adaptive urban scanning using self-organized fleets of autonomous vehicles
US10728172B2 (en) * 2018-03-28 2020-07-28 Quanta Computer Inc. Method and system for allocating system resources
KR102164853B1 (ko) * 2018-12-06 2020-10-13 이동섭 키트 제어용 단말기 상에서 키트 제어를 위한 명령어를 생성하여 키트를 제어하는 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150111134A (ko) * 2014-03-25 2015-10-05 한국전자통신연구원 코드 추천 및 공유 시스템 및 방법
KR20170023022A (ko) * 2014-06-30 2017-03-02 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 코드 추천 기법
KR20170010720A (ko) * 2015-07-20 2017-02-01 이준희 토폴로지 인식 기능을 갖는 블록 완구 및 이를 이용한 컨텐츠 제공 시스템
KR101713085B1 (ko) * 2015-12-15 2017-03-07 위드큐브(주) 스마트 블록을 이용한 컨텐츠 제공시스템

Also Published As

Publication number Publication date
EP3726450B1 (en) 2022-12-21
US11836639B2 (en) 2023-12-05
EP3726450A1 (en) 2020-10-21
CN112154471A (zh) 2020-12-29
US20210142185A1 (en) 2021-05-13
WO2020060146A1 (ko) 2020-03-26
KR102304692B1 (ko) 2021-09-24
EP3726450A4 (en) 2021-03-24

Similar Documents

Publication Publication Date Title
US10491380B2 (en) Firmware of modular assembly system
EP3424108B1 (en) Modular assembly toy system
US20180280822A1 (en) Building blocks with lights for guided assembly
KR102304692B1 (ko) 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리
US11537022B1 (en) Dynamic tenancy
KR20200086834A (ko) 프로그램 가능한 모듈 어셈블리 및 그에 대한 실행 코드 저작 시스템
US11586180B2 (en) Assembly information providing system and module assembly
KR102137667B1 (ko) 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리
US11229841B2 (en) Reader participation type electronic book system using module and operation method
JP2016091512A (ja) 接続関係検出システム、情報処理装置、及び接続関係検出方法
US11455147B2 (en) System for coding without compilation and a module assembly
EP3905056A1 (en) Reader participation type e-book system and operation method using modules
US11392392B2 (en) Plug and play module assembly and plug and play system
US20230399197A1 (en) Stackable non-intrusive device for touchless operation of an elevator through finger gestures
Sorenson Pods: Physical object devices

Legal Events

Date Code Title Description
E601 Decision to refuse application
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2020101003099; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20201222

Effective date: 20210817

GRNO Decision to grant (after opposition)
GRNT Written decision to grant