This application is the National Phase of PCT International Application No. PCT/KR2022/005883, filed on Apr. 25, 2022, which claims priority under 35 U.S.C. 119(a) to Patent Application No. 10-2021-0058045, filed in the Republic of Korea on May 4, 2021, all of which are hereby expressly incorporated by reference into the present application.
The present invention relates to a technology that supports a development environment of a developer of a device having a computing function, and particularly, to a cloud platform technology that provides a resource constituted by a combination of hardware and firmware function packets which are reusable.
Software developers are fostered due to changes in an industrial structure, but engineers with hardware development capabilities are decreasing in the human resources market. However, since all software is based on hardware, the importance of a hardware development capability has not been reduced at all.
It is difficult to acquire hardware development methodology because of completing a higher curriculum, and the hardware development methodology tends to be transferred to apprenticeship in actual industrial fields. Eventually, the obstacles in the development of new products became the hardware development ability.
Meanwhile, a process installing firmware, OS, and drivers on the SOM by a software engineer with a hardware module like System on Module is also difficult is also difficult, and even if this process has passed, there are various issues related to hardware even in a process of building an application program which the software engineer intends to develop.
When the issues occur, even if analysis of the issues is requested to an external hardware expert, all development environments and histories up to the occurrence of the issues are transferred to the hardware expert, and as a result, there is a problem in that the analysis request cannot quickly bear fruit.
The present invention has been made in an effort to provide a cloud development platform technology for supporting trouble-shooting of a software developer which is vulnerable to hardware development.
According to an aspect of the present invention, a cloud development platform system may be provided. A cloud development platform system includes: a project server 150 including an issue management unit 151 managing histories of all issues which occur in the middle of performing a development project; a project management server 120 including a project replication unit 123; and an issue management server 180 providing a first issue selected by a developer of the development project among all issues which occur in the project server 150 in the middle of performing the development project to the project management server 120. In this case, the project replication unit 123 is configured to generate a replicated server 150′ replicating all data of an OS of the project server 150 generating the first issue and an upper layer of the OS.
In this case, the issues management server 180 may include an issue management interface 181 for an issue manager who manages the issue management server 180. In addition, the issue management server 180 may be configured to acquire a configuration of a system on module (SOM) to which a code or a binary generated by the development project should be provided in addition to the first issue, and in order to analyze the first issue, the replicated server 150′ and a test SOM having the same configuration as the SOM may be to be used by another engineer or an external expert other than the developer.
In this case, when an analysis result of the first issue analyzed by the another engineer or the external expert is input into the issue management interface 181, the analysis result of the first issue may be configured to be provided to a developer terminal 300.
In this case, the analysis result of the first issue may be configured to be provided to the developer terminal 300 through the project server 150.
In this case, the cloud platform development system may further include a project management interface 124 for an interaction between a developer who accesses the project management server 120 through the developer terminal 300, and the project management server 120, and an interaction between the another engineer or the external expert. In addition, when an analysis result of the first issue analyzed by the another engineer or the external expert is input into the project management interface 124, the analysis result of the first issue may be configured to be provided to a developer terminal 300.
In this case, the analysis result of the first issue may be configured to be provided to the developer terminal 300 through the project server 150.
In this case, the cloud platform development system may further include a project management interface 124 for an interaction between a developer who accesses the project management server 120 through the developer terminal 300, and the project management server 120. I addition, when the developer generates the development project by using the project management interface 124, the project management server 120 may be configured to prepare the project server 150 in order to support execution of the development project, and the project server 150 may include a user interface 153 which supports the developer to perform the development project.
In this case, when the developer generates the development project by using the project management interface 124, the project management server 120 may be configured to prepare the project server 150 by using some of computing resources which exist on a cloud 500, the project management server 120 may further include a project identification unit 121 and a project resource identification unit 122, and the project identification unit 121 may be configured to identify the development project among a plurality of projects formed in the platform 100 based on information included in the first issue when receiving the first issue from the management server 180 and the project resource identification unit 122 may be configured to identify resources on the cloud 500 constituting the project server 150 when the project identification unit 121 identifies the development project, the project replication unit 123 may be configured to generate the replicated server 150′ based on the resources on the cloud 500 identified by the project resource identification unit 122, and the replicated server 150′ may be prepared by using some other resources among the computing resources which exist on the cloud 500.
In this case, the cloud development platform system may further include another project server. In addition, the issue management server 180 may be configured to manage a plurality of issues transmitted from the respective project servers to the issue management server 180 among the issues which occur in one set of project servers including the project server 150 and the another project server, and the issue management server 180 may include the issue management interface 181 for the issue manager who manages the issue management server 180, and the issue management server 180 may be configured to provide the issue selected by the issue manager to the project management server 120 through the issue management interface 181.
In this case, the cloud development platform system may further include a source server 110 and a resource pool server 170. In addition, the project server 150 may further include a user interface 153 which supports the code/configuration management unit 152 and the developer to perform the development project, and the code/configuration management unit 152 is configured to transfer the request of the developer input through the user interface 153 to the source server 110, the source server 110 may be configured to acquire the source matching the request of the developer among the resources stored in the resource pool server 170 and provide the acquired source to the project server 150, and the code/configuration management unit 152 may be configured to provide the source provided from the source server 110 to the developer terminal 300 used by the developer in the form of the code or the binary.
In this case, the developer may select the selected first issue by using the project server 150, and the replicated server may replicate an OS image of the project server 150 and all data of an upper layer thereof.
According to the present invention, provided is an effect that when a software developer who is vulnerable to hardware development reports issues which are revealed in the process of a development project to a platform provided according to the present invention, the platform reproduces a development environment by replicating all issue histories which occur in the process of the development project in addition to a server and a SOM used during the development process in order to resolve the issues to allow another engineer or external expert other than the developer to analyze the issues.
Hereinafter, an embodiment of the present invention will be described with reference to the accompanying drawings. However, the present invention is not limited the embodiment described in this specification, and may be implemented in various different forms. Terms used in the present specification are used to assist understanding of the embodiment, and are not intended to limit the scope of the present invention. Further, singular forms used herein will include plural forms as well, if the phrases do not clearly have the opposite meaning.
A cloud development system 1 according to an embodiment of the present invention may include a platform 100, a local developer terminal 300, and a system on module (SOM) 200.
The platform 100 may include one set of servers. The one set of servers may be constituted by one server or a plurality of servers.
The local developer terminal 300 may be a terminal for a developer connected to the platform 100 through a network. The local developer terminal 300 may be locally connected to the SOM 200.
The SOM 200 as a hardware device may receive firmware and software required for an operation of the SOM 200 from the local developer terminal 300. That is, the SOM 200 is hardware which is or may be equipped with the firmware/software.
The local developer terminal 300 may develop the firmware and the software to be provided to the SOM 200 by accessing the platform 100, and download the developed firmware and software from the platform 100. The local developer terminal 300 may provide the downloaded firmware or software to the SOM 200.
The SOM 200 may include components such as a CPU 210, a ROM 211, a RAM 212, an RF/connectivity module 230, a power supply unit 220, a HAL 240, a sensor 250, an actuator 251, and memories 261 to 264. A specification of each component may be changed according to the SOM 200 of each component.
The memory may be divided into a first memory area 261 storing a boot loader and an OS, a second memory area 262 storing a security code, a third memory area 263 storing software which is dependent on the firmware and the hardware, and a fourth memory area 264 storing application software constituted only by a logic operation.
In an embodiment, the software stored in the third memory area 263 may include a function of sending and receiving a command/data to and from the firmware or the hardware. Unlike this, the software stored in the fourth memory area 264 may not include the function of sending and receiving the command/data to and from the firmware or the hardware.
The firmware of the third memory area 263 may be, for example, a driver for an LTE chip, a driver for touch sensing and an input chip, etc.
The software of the third memory area 263 may include a library associated with the hardware, for example.
The sensor 250 and the actuator 251 may be connected to a machine device not illustrated, which operates jointly with the SOM 200. The machine device may be, for example, various devices such as a machine device constituting various IoT devices installed in an infrastructure facility or a machine device constituting a transportation means for a single person.
The SOM 200 may be a device which becomes an independent transaction target. The SOM 200 may be provided to various developers who intend to develop various devices which is implementable by using the same.
The developers may select resource build codes which should be stored in the first memory area 261, the second memory area 262, and the third memory area 263 in the SOM 200 from the platform 100 through the local developer terminal 300. The SOM 200 may receive the selected resource build codes from the platform 100 through the local developer terminal 300.
The developer may not need to directly develop specific contents of the resource build codes which should be stored in the first memory area 261, the second memory area 262, and the third memory area 263.
A combination of the resource build codes which should be stored in the first memory area 261, the second memory area 262, and the third memory area 263 may depend on a specific configuration of the SOM 200 used by the developer. When the specific configuration of the SOM 200 used by the developer is designated, the platform 100 may determine the combination of the resource build codes which should be stored in the first memory area 261, the second memory area 262, and the third memory area 263 and build the determined combination as one resource build code, and provide the resource build code to the developer. The developer may provide the built resource build code to the SOM 200 through the local developer terminal 300.
For example, the specific configuration of the SOM 200 may depend on a boot loader, firmware, an OS, security level, software type and version, hardware installed in the SOM 200, and a peripheral device.
The developers may develop an app build code which should be stored in the fourth memory area 264 in the SOM 200 in the platform 100 through the local developer terminal 300. The SOM 200 may receive the developed app build code from the platform 100 through the local developer terminal 300.
In an embodiment, when the CPU 210 is an MCU, RTOS may be coupled. In addition, in this case, an RTOS based app may be stored in the third memory area 263 and the fourth memory area 264.
In another embodiment, when the CPU 210 is an MPU, Linux or a homogeneous OS may be coupled. In addition, in this case, a Linux based app may be stored in the third memory area 263 and the fourth memory area 264.
The local developer terminal 300 may access the platform 100 through the network. The developer terminal 300 and the platform 100 may send and receive the command and the data, and the developer terminal 300 may provide executable binary data to the SOM 200.
In an embodiment, the cloud 500 may be provided by an operator different from an operator who provides the platform 100 and the SOM 200. The operator who provides the cloud 500 may operate servers and devices therefor.
The operator who provides the platform 100 may rent and use a computing resource such as a server required for configuration of the platform 100 from the operators who provide the cloud 500. The platform 100 may be completed by using the rented computing resource and another computing resource provided by the operator who provides the platform 100.
The platform 100 may be a computing system including a resource server 110, a build server 160, a project server 150, a project management server 120, and an issue management server 180.
The resource server 110 may provide a resource pool 170 including resources which enable various configurations which the SOM 200 may have to operate. A size of the resource pool 170 may reach a size of dozens to hundreds of terabytes or more, for example. The resource pool 170 may be referred to as a resource pool server or a resource pool database.
Hereinafter, an embodiment in which the developer performs the development by using the platform 100 will be described.
The developer may access at least one of the resource server 110, the project management server 120, the project server 150, the build server 160, and the issue management server 180 included in the platform 100, and the access may be achieved through the developer terminal 300.
A server that permits the access of the developer among various servers included in the platform 100 may provide a user interface for the developer.
The developer may generate an account for the developer by accessing the project management server 120.
The developer may generate a first project for developing an app to be executed in the SOM 200 by accessing the project management server 120.
The project management server 120 may define, prepare, and provide a project server generated by using the resource of the cloud 500 so that the developer may execute the first project. The project management server 120 may perform a task of renting various computing resources provided by the cloud 500 in order to prepare and provide the project server.
Hereinafter, for convenience of description, the project server defined and prepared for the first project will be referred to as the project server 150.
When the first project is generated, the project server 150 may be prepared from the generation time, and a use history and a log history for the first project may be stored in the project server 150.
The project management server 120 may provide an independent project server for each of different projects generated by the same developer. Further, the project management server 120 may provide the independent project server for each of different projects generated by different developers. In
The project server 150 may include an issue management unit 151, a code/configuration management unit 152, and a user interface 153.
The user interface 153 may be provided in various schemes such as a command line interface and a graphic user interface.
When the project server 150 is generated, the developer may perform the first project through the user interface 153. The developer may input a command including a configuration and a code required for the first project through the user interface 153.
Based on the command which the developer inputs through the user interface 153, the project server 150 may request the resource server 110 to select and provide the resource required for executing the first project from the resource pool 170.
The command input by the developer may include a configuration of hardware constituting the SOM 200 used by the developer and a command of requesting providing of the firmware and the software which should be provided to the SOM 200.
The configuration of the hardware may include, for example, information on the type and the version of hardware. Further, all of the firmware and the software which should be provided to the SOM 200 may be dependent on the configuration of the hardware. When the configuration fluctuates, a combination of libraries provided to the developer may be changed.
For example, when the developer generates the first project using the SOM 200, the developer may input a library required for the first project and a command of requesting providing of the driver.
For example, the SOM 200 used by the developer may include WiFi and Ethernet hardware, and the developer may intend to use only the WiFi of them. In this case, the developer may not request a driver for the Ethernet. Further, if for example, a mesh function among WiFi functions is not required, a WiFi resource which may be provided by the resource pool 170 may be lightened through a configuration process of removing the mesh function, and then a lightened WiFi driver may be provided to the developer. The configuration process may be executed by the project server 150 or the resource server 110.
The resource server 110 may select resources requested by the developer from the resource pool 170 and provide the selected resources to the project server 150, and the project server 150 may maintain the resources as they are or process the resources, and provide the resources to the developer terminal 300.
The developer may also receive the resource provided from the resource pool 170 from the project server 150 as source code and configuration forms.
Further, the developer may also receive the resource provided from the resource pool 170 from the project server 150 as a form of building the source code and the configuration.
Further, the developer may also receive the library and the driver provided from the resource pool 170 from the project server 150 as a code form or a binary form.
In addition, the developer may also receive an app which the developer himself/herself develops in the project server 150 from the project server 150.
Further, the command input by the developer may include a code which should be input for developing software which is not dependent on the configuration of the hardware as the software which should be provided to the SOM 200.
The code/configuration management unit 152 may transmit code and/or binary data provided by the resource server 110 to the developer terminal 300.
Alternatively, the code/configuration management unit 152 may transmit code and/or binary data processed and generated by the project server 150 to the developer terminal 300. Here, the binary data may mean data of a form executable by the SOM 200. In addition, the code and/or binary data processed and generated by the project server 150 may be code and/or binary data generated by processing the code and/or binary data provided by the resource server 110.
In this case, the code and/or binary may be the library or the app.
The project server 150 may use the build server 160 in order to perform building using the code and/or binary data provided by the resource server 110.
In this case, the build server 160 may also be provided conceptually integrally with the project server 150.
Alternatively, the build server 160 may also be provided independently from the project server 150. In this case, when the project server is replicated, the build server corresponding thereto may also be replicated. The build server may be replicated for each user according to a purpose thereof. Since the build process is a task of requesting the use of a CPU resource, it is difficult for a second developer to execute the build process by using the CPU while a first developer performs the build process by using the CPU. In this case, the build server may be virtually replicated and used for the second developer. The project server may be constituted only by less computing resources than the build server. Therefore, the independent project server may be provided for each project, but it is difficult to provide the build server for each project.
The issue management unit 151 may store (some or) all issues which occur after the project server 150 is defined and generated and while the developer develops the first project in a storage space therein. The issues may include the use history and the log history. In order to store all issues which occur while developing the first project in the storage space therein, a storage of the project server 150 should be able to a large value.
The developer may monitor the issues which occur in the project server 150 through the developer terminal 300 during a progress process of the first project. The developer may select an issue in which the developer is interested among the issues and transmit the issue to the issue management server 180 through the user interface 153.
For example, the issue in which the developer is interested may be an issue selected at the time when the trouble-shooting is required while executing the first project. For example, when it is assumed that an error occurs during the build process for performing the first project and in a case where the developer may not solve the error, the developer may select the issue for the error for the build and have a need for requesting back tracking to another expert. Meanwhile, unlike this, the issue in which the developer is interested may also be an issue selected due to another reason.
Hereinafter, for convenience of description, it is assumed that the issue in which the developer is interested may be an issue to be solved, which is the issue selected at the time when the trouble-shooting is required while executing the first project.
A manager who manages the issue management server 180 may be a person different from the developer which is the user of the developer terminal 300. The manager who manages the issue management server 180 may be a person who participates in providing a service provided by the platform 100. That is, the manager who manages the issue management server 180 may be a person who is employed by a company providing the platform 100.
The issue management server 180 may receive a plurality of issues from the project server 150 and other project servers other than the project server 150. That is, one issue management server 180 may manage issues transmitted from a plurality of different project servers.
When the manager of the issue management server 180 selects the issue to be solved among the plurality of issues, the issue management server 180 may provide the issue to be solved to the project management server 120.
The project management server 120 may include a project identification unit 121, a project resource identification unit 122, a project replication unit 123, and a project management interface 124.
The project identification unit 121 may identify a project in which the issue to be solved occurs based on information including the received issue to be solved. For example, the project identification unit 121 may identify that the project in which the issue to be solved occurs is the first project based on the received issue to be solved.
The project resource identification unit 122 may check with which resources among the resources of the cloud 500 for the project server 150 for the identified first project is provided.
The project replication unit 123 may generate a replicated server 150′ which is a server replicating all data of an OS of the project server 150 checked by the projection resource identification unit 122 and an upper layer of the OS.
A function of the project replication unit 123 may be executed by the manager who manages the project management server 120. The manager may judge whether the replication of the first project is required in order to solve the received issue to be solved, and when it is judged that the replication of the first project is required, the project replication unit 123 may generate the replicated server 150′ by a manipulation of the manager.
The replicated server 150′ may also be generated within the cloud 500 or also locally generated.
All data of the OS of the project server 150 and the upper layer of the OS may include the use history/log history generated in the process of performing the first project.
Now, since the replicated server 150′ includes all data of the same OS as the project server 150 and the upper layer of the OS, it may be appreciated that the replicated server 150′ has the same development environment as the project server 150. Further, since the replicated server 150′ includes the same use history/log history as the project server 150, a situation of the trouble-shooting faced by the developer may be reproduced as it is.
The project management interface 124 is used? for an interaction between a developer who accesses the project management server 120 through the developer terminal 300, and the project management server 120, and an interaction between the another engineer or the external expert and the project management server 120.
A cloud development platform system 1 provided according to one viewpoint of the present invention may include a project server 150 including the issue management unit managing histories of all issues which occur in the middle of performing a development project, a project management server 120 including a project replication unit 123, and an issue management server 180 which provides a first issue selected by the developer through the project server 150 among all issues which occur in the middle of performing the development project in the project server 150 to the project management server 120.
The issues management server 180 may include an issue management interface 181 for an issue manager who manages the issue management server 180.
In this case, the project replication unit 123 may be configured to generate a replicated server 150′ replicating all data of an OS of the project server 150 generating the first issue and an upper layer of the OS.
To this end, the project replication unit 123 may identify a computing resource in the cloud 500 constituting the project server 150. In addition, the project replication unit 123 may generate, in the cloud 500, the replicated server 150′ replicating all data of the OS of the project server 150 and the upper layer of the OS based on the identified computing resource. Here, all replicated data may include (some or) all issues which occur while the developer develops the first project in the project server 150. The issues may include the use history and the log history.
The replicated server 150′ may not be a server used by the developer who generates the first project. The replicated server 150′ may be a server used by an engineer employed by a company which operates the platform 100 or an external expert employed by the company. The engineer or the external expert employed by the company which operates the platform 100 may access the replicated server 150′, and analyze the first issue selected by the developer and report the analyzed result. The report may be transmitted to the replicated server 150′, the issue management server 180, the project management server 120, or the project server 150, and finally transferred to the developer. Therefore, a report acquired analyzed by the first issue in which the developer is interested in the middle of performing the first project may be provided to the developer.
By the replication method of the project server provided according to an embodiment of the present invention, the engineer or the external expert may access an environment which is the same as the project environment performed by the developer and a history which is the same as a progress history of the project. Accordingly, an effect of the present invention is that an environment capable of providing an accurate report for the first issue may be provided to the developer. The engineer or the external expert uses the replicated server 150′ and jointly uses an SOM which is the same as the SOM 200 used by the developer to substantially equally implement the development environment used by the developer.
According to the present invention, for example, when the developer fails in the build in the process of performing the first project, another expert may intend to equally reproduce the development environment and a project history in order to find a failure cause of the build. To this end, in an embodiment of the present invention, a replication server may be generated by replicating the project server 150 used by the developer. In this case, if a version of a replicated OS, a version of a replicated compiler, and a version of a replicated library which exist in the replication server are not all the same as a version of an original OS, a version of an original complier, and a version of an original library which exist in the project server 150, the failure cause of the build may not be found even though the another expert uses the replication server. The replication of the project server provided according to an embodiment of the present invention may be useful when the another expert may not use the project server 150. The reason is that it is inappropriate that the another expert other than the developer uses the project server 150 according to a use contract of the platform 100 of the developer.
By using the embodiments of the present invention, those who belong to the technical field of the present invention will be able to easily perform various changes and modifications within a range without departing from essential characteristics of the present invention. Contents of each claim of the claims may be combined with another claim which does not have a citation relationship within a range which may be understood through this specification.
Number | Date | Country | Kind |
---|---|---|---|
10-2021-0058045 | May 2021 | KR | national |
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/KR2022/005883 | 4/25/2022 | WO |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2022/234995 | 11/10/2022 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
6615253 | Bowman-Amuah | Sep 2003 | B1 |
8781924 | Bang | Jul 2014 | B2 |
9170784 | Friedman | Oct 2015 | B1 |
9952782 | Chandrasekaran | Apr 2018 | B1 |
10970150 | Hunter | Apr 2021 | B1 |
11010266 | Blaszka | May 2021 | B1 |
11030555 | Bar-on | Jun 2021 | B2 |
11132285 | Sukhyani | Sep 2021 | B1 |
11243830 | Hunter | Feb 2022 | B2 |
11271796 | Tapia | Mar 2022 | B2 |
11308417 | Vichare | Apr 2022 | B2 |
11461206 | Roll | Oct 2022 | B2 |
11494179 | Paramasivan | Nov 2022 | B1 |
11507493 | Windh | Nov 2022 | B1 |
20050216486 | Barshefsky | Sep 2005 | A1 |
20080147693 | Clemm | Jun 2008 | A1 |
20110029956 | Ledenev et al. | Feb 2011 | A1 |
20130174151 | Nakajima | Jul 2013 | A1 |
20160253167 | Zamir | Sep 2016 | A1 |
20170220451 | Mankovskii | Aug 2017 | A1 |
20170322781 | Schreder | Nov 2017 | A1 |
20180165086 | Prakash | Jun 2018 | A1 |
20180203689 | Murugesan | Jul 2018 | A1 |
20190205110 | Liu | Jul 2019 | A1 |
20190220255 | Taniguchi | Jul 2019 | A1 |
20190370471 | Petratos | Dec 2019 | A1 |
20200004529 | Ravipati | Jan 2020 | A1 |
20200184355 | Mehta | Jun 2020 | A1 |
20200210934 | Bar-On | Jul 2020 | A1 |
20200218533 | Sharma | Jul 2020 | A1 |
20210004312 | Tanaka | Jan 2021 | A1 |
20210042180 | Sutton | Feb 2021 | A1 |
20210349859 | Bafna | Nov 2021 | A1 |
20210397495 | Prakash | Dec 2021 | A1 |
20210397527 | Purushothaman | Dec 2021 | A1 |
20210406008 | Maleki | Dec 2021 | A1 |
20220222170 | Jones | Jul 2022 | A1 |
20220261242 | Pakiteeri | Aug 2022 | A1 |
20220299981 | Ohlsen | Sep 2022 | A1 |
20220334837 | Sa | Oct 2022 | A1 |
20230032901 | Tarocchi | Feb 2023 | A1 |
20230259431 | Jain | Aug 2023 | A1 |
20230269294 | Sharma | Aug 2023 | A1 |
Number | Date | Country |
---|---|---|
101866315 | Oct 2010 | CN |
102088367 | Jun 2011 | CN |
104965775 | Feb 2018 | CN |
115016801 | Sep 2022 | CN |
115586919 | Jan 2023 | CN |
115629746 | Jan 2023 | CN |
2009104393 | May 2009 | JP |
2011-521328 | Jul 2011 | JP |
2013084276 | May 2013 | JP |
2018-55588 | Apr 2018 | JP |
2018-142076 | Sep 2018 | JP |
10-2009-0049292 | May 2009 | KR |
10-2019-0134135 | Dec 2019 | KR |
Entry |
---|
Text Translation for all listed Foreign Patent Documents. |
Number | Date | Country | |
---|---|---|---|
20230350671 A1 | Nov 2023 | US |