US20190138280A1 - One-click deployment of industrial software - Google Patents
One-click deployment of industrial software Download PDFInfo
- Publication number
- US20190138280A1 US20190138280A1 US15/804,223 US201715804223A US2019138280A1 US 20190138280 A1 US20190138280 A1 US 20190138280A1 US 201715804223 A US201715804223 A US 201715804223A US 2019138280 A1 US2019138280 A1 US 2019138280A1
- Authority
- US
- United States
- Prior art keywords
- application file
- application
- software
- user
- platform
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 70
- 238000012360 testing method Methods 0.000 claims abstract description 42
- 230000004044 response Effects 0.000 claims abstract description 18
- 230000003213 activating effect Effects 0.000 claims abstract description 6
- 238000011161 development Methods 0.000 claims description 42
- 238000004519 manufacturing process Methods 0.000 claims description 25
- 230000003993 interaction Effects 0.000 claims description 12
- 230000008569 process Effects 0.000 description 33
- 238000004891 communication Methods 0.000 description 12
- 238000003860 storage Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000013500 data storage Methods 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000001994 activation Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 4
- 238000009434 installation Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000000275 quality assurance Methods 0.000 description 4
- 238000012800 visualization Methods 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000005065 mining Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000013439 planning Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000010354 integration Effects 0.000 description 2
- 230000003137 locomotive effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000940835 Pales Species 0.000 description 1
- 206010033546 Pallor Diseases 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000003339 best practice Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012993 chemical processing Methods 0.000 description 1
- 238000012824 chemical production Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005553 drilling Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 238000011900 installation process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 239000002994 raw material Substances 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000012502 risk assessment Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000004753 textile Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Definitions
- Machine and equipment assets are engineered to perform particular tasks as part of a business process.
- assets can include, among other things and without limitation, industrial manufacturing equipment on a production line, drilling equipment for use in mining operations, wind turbines that generate electricity on a wind farm, transportation vehicles, and the like.
- assets may include healthcare machines and equipment that aid in diagnosing patients such as imaging devices (e.g., X-ray or MRI systems), monitoring devices, and the like.
- imaging devices e.g., X-ray or MRI systems
- monitoring devices e.g., and the like.
- Machine and equipment assets are often controlled by industrial software which may be included within an Industrial Internet of Things (IIoT).
- Industrial software is often implemented within machines, on-premises, in a cloud environment, and the like, and can be used to manage devices, analyze data, predict future characteristics of or about assets, schedule maintenance, and the like.
- Industrial software is typically used by technicians in the field, administrative staff on a back-end, customers, and the like, who are not very familiar with designing software applications or generating executable code. However, these users are very familiar with the data provided from assets and functions that they need in order to perform their duties. Accordingly, what is needed is a tool that can facilitate industrial software development and deployment without the requirement of a programmer or other expert in generating code.
- Embodiments described herein improve upon the prior art by providing systems and methods which facilitate and manage the software development lifecycle of an industrial-based software application.
- a software development lifecycle service can provide developers with a user interface for developing and deploying applications without requiring users to write significant portions of code or perform lengthy installation and activation processes to active the software. Accordingly, even a citizen developer can generate new and update previously designed software applications.
- the example embodiments herein may be incorporated within software such as a service or other program that is deployed on a cloud platform for use with an Industrial Internet of Things (IIoT) system.
- IIoT Industrial Internet of Things
- the embodiments disclosed herein automate and guide a user through the software development process in order to improve on the previous manual approaches performed in the prior art.
- a computer-implemented method includes displaying a user interface for managing a software development lifecycle of an application, determining software components available for developing the application and displaying representations of the software components via the user interface, receiving a selection of at least one software component from among the available software components, via the user interface, and adding the selected at least one software component to a development workspace of the user interface, configuring the selected at least one software component based on data that is to be processed by the application, and generating an application file for the application including the at least one configured software component and storing the application file in a code repository.
- a computing system includes an output configured to output a user interface for managing a software development lifecycle of an application, and a processor configured to determine software components available for developing the application and displaying representations of the software components via the user interface, detect a selection of at least one software component from among the available software components via the user interface, add the selected at least one software component to a development workspace of the user interface, configure the selected at least one software component based on data that is to be processed by the application, and generate an application file for the application including the at least one configured software component and store the application file in a code repository.
- a computer-implemented method includes developing a software application via a user interface, storing an application file representing the developed software application in a code repository associated with the user interface, testing the application file to determine whether the developed software application successfully satisfies requirements for a platform, and deploying the successfully tested application file from the code repository to the platform for active use, in response to receiving a user request.
- a computing system includes a processor configured to detect commands for developing a software application via a user interface, store an application file representing the developed software application in a code repository associated with the user interface, and test the application file to determine whether the developed software application successfully satisfies requirements for a platform, wherein the processor is further configured to deploy the successfully tested application file from the code repository to the platform for active use, in response to detecting a user request.
- FIG. 1 is a diagram illustrating a cloud computing environment associated with industrial systems in accordance with an example embodiment.
- FIG. 2 is a diagram illustrating an industrial application development network in accordance with an example embodiment.
- FIG. 3 is a diagram illustrating a software development lifecycle process in accordance with an example embodiment.
- FIG. 4 is a diagram illustrating a user interface for managing a software development lifecycle of an application in accordance with an example embodiment.
- FIG. 5 is a diagram illustrating a system for deploying an industrial application in accordance with an example embodiment.
- FIG. 6 is a diagram illustrating a method for managing a software development lifecycle of an industrial application in accordance with an example embodiment.
- FIG. 7 is a diagram illustrating a method for deploying an industrial application in accordance with an example embodiment.
- FIG. 8 is a diagram illustrating a computing system for developing and deploying an industrial application in accordance with an example embodiment.
- the example embodiments are directed to a software and system for managing and facilitating a software development lifecycle of a software application.
- Software development lifecycle is a process used by the software industry to design, develop and test high quality software.
- the software development lifecycle aims to produce a high-quality software that meets or exceeds customer expectations, reaches completion within times and cost estimates.
- Traditional software development is performed by a designer/developer that typically has a detailed understanding and training using various programming languages. Based on this expertise, the developer is able to develop, test, and deploy the software application. This developer is often a computer professional such as a software engineer.
- the example embodiments provide a software development lifecycle service that can guide and facilitate an entire development lifecycle for a software application even for a user who is not familiar with the deep complexities of programming languages and data models.
- the service can provide automated features and tools which can enable even a novice user to develop and deploy a software application.
- the service can provide a user interface that enables a user to easily build a new application based on components previously requested by the user.
- the service also puts the developed application into a pipeline for production in a live environment such as a cloud platform or on-premises.
- the pipeline can further include multiple rounds of testing as well as automated deployment of the application.
- the software development is performed for an industrial application that might be applied to one or more assets such as machine and equipment for use in healthcare, industry, manufacture, energy, transportation, and the like.
- the examples herein are not limited to industrial software development and may include any type of software application.
- the primary users of industrial software may include technicians in the field as well as administrative staff and other users who lack software development training.
- the software development lifecycle service described herein automates and guides a user through the software development lifecycle process and also deploys the software in response to a simple user request without requiring the software to be manually installed within a cloud platform or an on-premises platform.
- the software development lifecycle service may abstract away the time-consuming tasks associated with deploying a software application by allowing automatically deploying the software with a single click of a button.
- Assets may refer to equipment and machines used in fields such as energy, healthcare, transportation, heavy manufacturing, chemical production, printing and publishing, electronics, textiles, and the like. Aggregating data collected from or about multiple assets can enable users to improve business processes, for example by improving effectiveness of asset maintenance or improving operational performance if appropriate industrial-specific data collection and modeling technology is developed and applied.
- an asset can be outfitted with one or more sensors configured to monitor respective operations or conditions associated with the asset.
- Data from the sensors can be recorded or transmitted to a cloud-based or other remote computing environment.
- cloud-based computing environment By bringing such data into a cloud-based computing environment, new software applications informed by industrial process, tools and know-how can be constructed, and new analytics specific to an industrial environment can be created. Insights gained through analysis of such data can lead to enhanced asset designs, enhanced software algorithms for operating the same or similar assets, better operating efficiency, and the like. Examples of the methods-based software applications are described herein as analytics. Analytics may be used to analyze, evaluate, and further understand issues related to manufacturing.
- the assets and the software described herein can be included within an Industrial Internet of Things (IIoT).
- IIoT Industrial Internet of Things
- an IIoT connects assets including machines and equipment, such as turbines, jet engines, healthcare machines, locomotives, and the like, to the Internet or cloud, or to each other in some meaningful way such as through one or more networks.
- the systems and methods described herein can include using a “cloud” or remote or distributed computing resource or service.
- the cloud can be used to receive, relay, transmit, store, analyze, or otherwise process information for or about one or more assets.
- a cloud computing system includes at least one processor circuit, at least one database, and a plurality of users or assets that are in data communication with the cloud computing system.
- the cloud computing system can further include or can be coupled with one or more other processor circuits or modules configured to perform a specific task, such as to perform tasks related to asset maintenance, analytics, data storage, security, or some other function.
- the integration of assets with the remote computing resources to enable the IIoT often presents technical challenges separate and distinct from the specific industry and from computer networks, generally.
- a given machine or equipment based asset may need to be configured with novel interfaces and communication protocols to send and receive data to and from distributed computing resources.
- Given assets may have strict requirements for cost, weight, security, performance, signal interference, and the like such that enabling such an interface is rarely as simple as combining the asset with a general-purpose computing device.
- the cloud platform can receive and host applications from many different fields of industrial technologies.
- the example embodiments facilitate generation and design of these applications by providing a software development lifecycle service capable of being used to build and deploy new software applications for use in the cloud computing environment.
- the PredixTM platform available from GE is a novel embodiment of an Asset Management Platform (AMP) technology enabled by state of the art cutting edge tools and cloud computing techniques that enable incorporation of a manufacturer's asset knowledge with a set of development tools and best practices that enables asset users to bridge gaps between software and operations to enhance capabilities, foster innovation, and ultimately provide economic value.
- AMP Asset Management Platform
- a manufacturer of assets can be uniquely situated to leverage its understanding of assets themselves, models of such assets, and industrial operations or applications of such assets, to create new value for industrial customers through asset insights.
- FIG. 1 illustrates a cloud computing environment associated with industrial systems in accordance with an example embodiment.
- FIG. 1 illustrates generally an example of portions of an asset management platform (AMP) 100 .
- AMP asset management platform
- one or more portions of an AMP can reside in a cloud computing system 120 , in a local or sandboxed environment, or can be distributed across multiple locations or devices.
- the AMP 100 can be configured to perform any one or more of data acquisition, data analysis, or data exchange with local or remote assets, or with other task-specific processing devices.
- the AMP 100 includes an asset community (e.g., turbines, healthcare machines, oil rigs, mining equipment, chemical processing systems, etc.) that is communicatively coupled with the cloud computing system 120 .
- asset community e.g., turbines, healthcare machines, oil rigs, mining equipment, chemical processing systems, etc.
- a machine module 110 receives information from, or senses information about, at least one asset member of the asset community, and configures the received information for exchange with the cloud computing system 120 .
- the machine module 110 is coupled to the cloud computing system 120 or to an enterprise computing system 130 via a communication gateway 105 .
- the communication gateway 105 includes or uses a wired or wireless communication channel that extends at least from the machine module 110 to the cloud computing system 120 .
- the cloud computing system 120 may include several layers, for example, a data infrastructure layer, an application platform layer, and modules for providing various functions.
- the cloud computing system 120 includes an asset module 121 , an analytics module 122 , a data acquisition module 123 , a data security module 124 , and an operations module 125 .
- Each of the modules includes or uses a dedicated circuit, or instructions for operating a general purpose processor circuit, to perform the respective functions.
- the modules 121 - 125 are communicatively coupled in the cloud computing system 120 such that information from one module can be shared with another.
- the modules 121 - 125 are co-located at a designated datacenter or other facility, or the modules 121 - 125 can be distributed across multiple different locations.
- An interface device 140 (e.g., user device, workstation, tablet, laptop, appliance, kiosk, and the like) can be configured for data communication with one or more of the machine module 110 , the gateway 105 , and the cloud computing system 120 .
- the interface device 140 can be used to monitor or control one or more assets.
- the interface device 140 may be used to develop and upload applications to the cloud computing system 120 .
- the interface device 140 may be used to access analytical applications hosted by the cloud computing system 120 .
- information about the asset community may be presented to an operator at the interface device 140 .
- the information about the asset community may include information from the machine module 110 , or the information can include information from the cloud computing system 120 .
- the interface device 140 can include options for optimizing one or more members of the asset community based on analytics performed at the cloud computing system 120 . Prior to analytics being accessed through the cloud computing system 120 , the cloud computing system 120 may certify the analytics.
- a user of the interface device 140 may control an asset through the cloud computing system 120 , for example, by selecting a parameter update for a first wind turbine 101 .
- the parameter update may be pushed to the first wind turbine 101 via one or more of the cloud computing system 120 , the gateway 105 , and the machine module 110 .
- the interface device 140 is in data communication with the enterprise computing system 130 and the interface device 140 provides an operation with enterprise-wide data about the asset community in the context of other business or process data. For example, choices with respect to asset optimization can be presented to an operator in the context of available or forecasted raw material supplies or fuel costs. As another example, choices with respect to asset optimization can be presented to an operator in the context of a process flow to identify how efficiency gains or losses at one asset can impact other assets.
- FIG. 1 includes the asset community with multiple wind turbine assets, including the first wind turbine 101 .
- wind turbines are merely used in this example as a non-limiting example of a type of asset that can be a part of, or in data communication with, the first AMP 100 .
- FIG. 1 further includes the device gateway 105 configured to couple the asset community to the cloud computing system 120 .
- the device gateway 105 can further couple the cloud computing system 120 to one or more other assets or asset communities, to the enterprise computing system 130 , or to one or more other devices.
- the AMP 100 thus represents a scalable industrial solution that extends from a physical or virtual asset (e.g., the first wind turbine 101 ) to a remote cloud computing system 120 .
- the cloud computing system 120 optionally includes a local, system, enterprise, or global computing infrastructure that can be optimized for industrial data workloads, secure data communication, and compliance with regulatory requirements.
- the cloud computing system 120 can include the operations module 125 .
- the operations module 125 can include services that developers can use to build or test Industrial Internet applications, and the operations module 125 can include services to implement Industrial Internet applications, such as in coordination with one or more other AMP modules.
- the operations module 125 includes a microservices marketplace where developers can publish their services and/or retrieve services from third parties.
- the operations module 125 can include a development framework for communicating with various available services or modules. The development framework can offer developers a consistent look and feel and a contextual user experience in web or mobile applications. Developers can add and make accessible their applications (services, data, analytics, etc.) via the cloud computing system 120 .
- Information from an asset, about the asset, or sensed by an asset itself may be communicated from the asset to the data acquisition module 123 in the cloud computing system 120 .
- an external sensor can be used to sense information about a function of an asset, or to sense information about an environment condition at or near an asset.
- the external sensor can be configured for data communication with the device gateway 105 and the data acquisition module 123
- the cloud computing system 120 can be configured to use the sensor information in its analysis of one or more assets, such as using the analytics module 122 .
- an operational model can optionally be updated, such as for subsequent use in optimizing the first wind turbine 101 or one or more other assets, such as one or more assets in the same or different asset community.
- information about the first wind turbine 101 can be analyzed at the cloud computing system 120 to inform selection of an operating parameter for a remotely located second wind turbine that belongs to a different asset community.
- the cloud computing system 120 may include a Software-Defined Infrastructure (SDI) that serves as an abstraction layer above any specified hardware, such as to enable a data center to evolve over time with minimal disruption to overlying applications.
- SDI Software-Defined Infrastructure
- the SDI enables a shared infrastructure with policy-based provisioning to facilitate dynamic automation, and enables SLA mappings to underlying infrastructure. This configuration can be useful when an application requires an underlying hardware configuration.
- the provisioning management and pooling of resources can be done at a granular level, thus allowing optimal resource allocation.
- the asset cloud computing system 120 may be based on Cloud Foundry (CF), an open source PaaS that supports multiple developer frameworks and an ecosystem of application services. Cloud Foundry can make it faster and easier for application developers to build, test, deploy, and scale applications. Developers thus gain access to the vibrant CF ecosystem and an ever-growing library of CF services. Additionally, because it is open source, CF can be customized for IIoT workloads.
- CF Cloud Foundry
- the cloud computing system 120 can include a data services module that can facilitate application development.
- the data services module can enable developers to bring data into the cloud computing system 120 and to make such data available for various applications, such as applications that execute at the cloud, at a machine module, or at an asset or other location.
- the data services module can be configured to cleanse, merge, or map data before ultimately storing it in an appropriate data store, for example, at the cloud computing system 120 .
- a special emphasis may be placed on time series data, as it is the data format that most sensors use.
- the software development lifecycle service described herein may be implemented within the cloud computing system 120 .
- the software development lifecycle service may be implemented in an application platform that is not part of a cloud platform.
- a user e.g., via a cloud-connected device such as interface device 140 or some other user device
- the service can guide the user through the building process and also put the application in a pipeline to deployment.
- the service in response to receiving a simple user input such as a button click or a mouse click, the service can deploy the newly created application within the cloud computing system 120 where it is available and active to other users and subscribers of the cloud computing system 120 .
- FIG. 2 illustrates an industrial application development network 200 in accordance with an example embodiment.
- the network 200 includes a cloud platform 210 , a developer workstation 220 , and an on-premises server 230 .
- the developer workstation 220 may be controlled by a user that is developing a new industrial software application via the software development lifecycle service of the example embodiments.
- the developer workstation 220 may be connected to the cloud platform 210 via a network 240 such as the Internet, a private network, and/or the like.
- the developer workstation 220 may also be connected to an on-premises platform 230 via a local network or through a user manually deploying an application to the on-premises platform 230 from the cloud platform 210 .
- the user operating developer workstation 220 may be a staff or a technician of an organization that hosts or otherwise uses on-premises platform 230 which may be a local network server.
- the user may develop a new software application using the software development lifecycle service described herein.
- the newly developed software application may be deployed to either of the cloud platform 210 brought to and installed at the on-premises server 230 .
- the developer workstation 220 may perform maintenance and updated on the deployed application.
- FIG. 3 illustrates a software development lifecycle process 300 in accordance with an example embodiment.
- the process 300 may be performed by the service described herein to build, test, and deploy a new software application.
- the process includes planning and requirement analysis.
- the planning 310 may include receiving goals and objectives to be accomplished by the software, identifying quality and other requirements necessary, and planning a basic software approach to satisfy these goals and requirements.
- the software product requirements are clearly defined and approved by the client typically through documentation.
- the software application is designed. In most cases, there will be multiple approaches for designing the software. The designing in 320 determines the best architecture to be used to develop the product.
- the design may be reviewed and analyzed and based on various parameters such as risk assessment, product robustness, design modularity, and budget and time constraints, and the best design approach is selected for the product.
- a design approach clearly defines all the architectural modules of the software along with its communication and data flow representation with the external and third-party modules (if any).
- the software is developed through a coding process. In this stage, the development starts and the product is built. In a conventional process, the user must generate programming code.
- the software development lifecycle as a service can use pre-defined software components which the user has already registered with and which are made available by the software via a user interface.
- the pre-defined software components may include built-in code that is already adapted for use with the user's data and that is tested and tried to work with a platform such as the cloud or an on-premises environment.
- the available pre-defined software components may include analytics, applications, services, data storage services, historical programs, and the like, and may be defined based on a data storage model of the user's data.
- the pre-defined software components may follow coding guidelines defined by their organization and programming tools including compilers, interpreters, debuggers, etc. which are used to generate the code.
- Different high-level programming languages such as C, C++, Pascal, Java, R, Python, and PHP may be used for coding.
- 4GL fourth-generation programming languages
- the application file may be an application definition, an application artifact, an application model, and/or the like, which represents runs on an application platform such as a host server, a web server, a cloud platform, or the like.
- the application file may be stored in a code repository or other storage associated with the user interface and/or the software development lifecycle service.
- testing is performed on the application file to test the developed software application.
- the testing may be initiated based on the application file being stored in the code repository.
- the repository may include a hook that identifies when a new project is stored therein and which triggers execution of one or more software tests based on the identifying.
- testing of the software product may be performed to identify defects and report the defects. Accordingly, the defects can be tracked, fixed and retested, until the product reaches the quality standards.
- the successfully tested and developed software application is deployed into a live operating environment where it may be consumed by one or more client/users of the product.
- the software application may be automatically deployed into a cloud environment (e.g., an application platform) such as shown in FIG. 1 .
- the application file may be downloaded and installed manually.
- the deploying may include several interrelated activities with possible transitions between them. These activities can occur at the developer side or at the client side or both. Because every software system is unique, the deployment processes or procedures within each activity may be different. Therefore, “deployment” may be a general process that is customized according to specific requirements or characteristics.
- the deployment includes installation of the software application within an operating platform which is also referred to as a production or productive environment.
- the installation may include establishing some form of command, shortcut, script or service for executing the software (manually or automatically).
- it may also include configuration of the system which may be performed automatically by the lifecycle service.
- Activation includes the activity of starting up or otherwise running the application component of software for the first time on the platform.
- maintenance on the deployed software is performed. This step may be continuous or performed on a periodic basis over a continued period of time. Maintenance may include modifications and updates that are performed after the delivery of software application. Reasons for modifications and updates include changes to market conditions (e.g., policies which change over the time such as newly introduced constraints) client requirements (e.g., add new features or functions), host modifications (e.g., hardware, platform, software changes), and organization changes (e.g., changes in company structure, adding a new business, etc.)
- changes to market conditions e.g., policies which change over the time such as newly introduced constraints
- client requirements e.g., add new features or functions
- host modifications e.g., hardware, platform, software changes
- organization changes e.g., changes in company structure, adding a new business, etc.
- FIG. 4 illustrates a user interface 400 for managing a software development lifecycle of an application in accordance with an example embodiment.
- the user interface 400 may be displayed via a user device and may be generated and controlled by the software development lifecycle service.
- the user may develop a software application via the user interface 400 based available software components 430 which may be identified and provided to the user by the service via an available software window or other visual means.
- the service may receive a user identifier during a sign-in process, authentication process, etc. and may identify software components such as analytics, applications, historical time-series data, visual software, and the like.
- the available software components 430 may be provided automatically to the user when the user interface 400 opens, or they may be searched for by the user via a search bar.
- a catalog of available services may be automatically provided to the user when they sign-in to the service.
- the component may require configuration information such as authentication information, data formats, a URL of the application, and the like.
- the configuration information may be entered by the user or it may be automatically or partially provided by the service.
- the user may select one or more available software components 430 , for example, by dragging-and-dropping the available software components in a development workspace 420 or they may select the available components in another way such as by a check-box, or the like.
- the user has added Analytic B, Analytic C, and Visualization 1 to the development workspace 420 .
- the user may easily arrange software components to generate an end-to-end flow 422 for the software application.
- the user may select a save button 424 which may store the developed software flow 422 (e.g., the underlying executable code) as an application file in a code repository or other storage medium.
- the application file may be automatically tested by the code repository to ensure that the software can satisfy requirements of its intended activation platform and any coding guidelines. Additional testing such as quality assurance (QA) testing may be performed on an instance of the application file.
- QA quality assurance
- the user may also select a software component from the list of available components 430 to expand the software and the underlying code.
- the code may be displayed via a window that enables the user to modify the code or data pointers included within the code.
- the service may also provide the user with an input 410 for uploading their data or importing their data into the service and the underlying system via the user interface 400 .
- the service may automatically recognize a format of the user's data and notify the user of the data format in a notification window enabling the user to understand the format of their data.
- the available software components 430 may already be pre-configured to work with the user's data either by the system or by the user that designed the software components.
- the user may begin accessing their industrial data in an efficient manner. For example, where it would normally take a long time to wire up services with data, but the service may provide tools which automate the process and facilitate an understanding of the data to the user.
- the primary goal for digital and industrial application development is performing functions, analytics, and visualizations on data (e.g., time-series data) received from one or more assets on the edge of the cloud.
- data e.g., time-series data
- the user interface 400 may include forums or FAQ sections (not shown) where the user can search for guidance on developing the application.
- the user interface 400 facilitates and manages a pipeline that helps the user build a software project and put the software into production as part of a cloud or other environment.
- the service also provides testing which can be performed automatically on the software without requiring user interaction. For example, testing may automatically occur when the user save the software project.
- the user or a controller of the user interface 400 can deploy the application into an active environment.
- the user is provided a deploy button 440 for simply requesting the application to be transferred from the development process to a live platform such as a cloud environment or an on-premises environment with a click of a mouse cursor 450 .
- the user can develop the application within the user interface 400 against a time-series test data store.
- the user or the system may change a pointer of the application to point at live data instead of the test data.
- the test data may be the same format as the live data (as ensured by the service) where the only thing that needs to be changed within the code is the end point of the pointer.
- the user may add metadata to the application code and submit the code to source code repository.
- the repository can run the automated tests, then the application in the repository may be deployed onto another instance of a runtime engine (runtime that runs the app that you defined in the user interface 400 ).
- the application may be deployed on a QA instance for additional validation. That same app that is in the repository can be pushed into production by specifying where it should be installed and by the user simply pressing the deploy request.
- the application may be seamlessly installed and activated from the repository to an active operating platform.
- a deployment system 500 includes a developer terminal 510 , a host platform for hosting a deployed application, and a code repository 520 which is shown as a separate device for convenience but may be incorporated into the host platform 530 and/or the development terminal 510 .
- the development terminal 510 may display a user interface (e.g., user interface 400 shown in FIG. 4 ) that enables a user of the terminal 510 to build and test a software application and store the software application in the code repository 520 .
- the code repository 520 can transfer the successfully tested application to the host platform 530 where it is deployed without the need for user interaction.
- the deployment may include an installation of the application on the platform 530 , an activation of the application, and the like.
- the application is then accessible to one or more users 541 , 542 , and 543 via a connection to the host platform 530 .
- the deployment process is performed behind the scenes such that the user/developer does not need to understand or know how to perform the deployment and all the associated activities and procedures involved with the deployment. As a result, the developer does not need to be physically present at the site of the deployment or be able to access the cloud platform or other platform where the software is deployed. Instead, the developer may provide a URL or other address during the development process via the user interface 400 , and the service may take care of the rest.
- FIG. 6 illustrates a method 600 for managing a software development lifecycle of an industrial application in accordance with an example embodiment.
- the method 600 may be performed by the software development lifecycle service described herein which may be executed by a user device, a server, a cloud computing environment, and the like.
- the method includes displaying a user interface for managing a software development lifecycle of an application that is to be deployed.
- the user interface may be displayed via a user terminal (e.g., software developer, technician, subject matter expert, etc.) and may include tools that facilitate the development of a software application.
- a user terminal e.g., software developer, technician, subject matter expert, etc.
- the user interface may include tools that automate and guide the user through the software development lifecycle process such that the user does not need to be an expert or even familiar with coding to develop a new industrial application but instead may be a novice such as an office staff, an administrator, or a technician in the field who is a subject matter expert on assets such as wind turbines, jet engines, locomotives, gas turbines, mining equipment, aircraft, oil rigs, or the like.
- the service provided herein is targeted for these users who are unfamiliar with code writing and developing of software.
- the method includes determining software components available for developing the application and displaying representations of the software components via the user interface.
- the service may identify a user based on a user authentication or login process performed or some other identifier (IP address, email address, etc.) and also perform a look-up of previous software components that the developer or team of developers have previously built or otherwise have access to.
- the software components may include analytics, visualization programs, data storage programs, or even complete applications.
- the software components may also be found by the user via the user interface. For example, the user may perform a search for applications that they have previously registered to use.
- the user interface can provide a panel, box, window, etc., providing a listing of these available software components and enabling the user to select any of the components to add to a new software project or modify an existing software project.
- the determining may include determining a catalog of services that have been registered for use by a developer of the software application where the catalog includes one or more of an analytic service, a data storage service, and a visualization service.
- the method includes receiving a selection of at least one software component from among the available software components, via the user interface, and adding the selected at least one software component to a development workspace of the user interface.
- the user may perform a drag-and-drop operation pulling the representation of the available software component to the workspace.
- the available software component may include underlying executable code.
- the service controlling the user interface may associate the corresponding code of the software component with the current project being developed or edited by the user.
- the method includes configuring the selected at least one software component based on data that is to be processed by the application, and in 650 , generating an application file for the application including the at least one configured software component and storing the application file in a storage such as a code repository or other file storage.
- the configuring may be manual, partially automated, or fully automated.
- the configuring may include receiving one or more configuration inputs manually entered by a user via the user interface.
- the one or more configuration inputs may include one or more of a uniform resource locator (URL) and authentication information associated with the application.
- URL uniform resource locator
- the configuring may include an automated or partially-automated configuration process in which the selected at least one software component is automatically configured to process time-series data for the industrial application.
- the method may further include performing testing such as cloud-based integration testing and/or QA testing on the application file of the application after it has been stored in the code repository. For example, the testing may be automatically performed in response to the application file being stored in the code repository.
- FIG. 7 illustrates a method 700 for deploying an industrial application in accordance with an example embodiment.
- the method 700 may be performed by the software development lifecycle service described herein which may be executed by a user device, a server, a cloud computing environment, and the like.
- the method includes developing an industrial software application via a user interface.
- the developing process may include the steps described in FIG. 6 in which a software development lifecycle is managed by a user interface.
- the software may be developed by someone who is not familiar with software writing but instead a technician or other person such as a subject matter expert, a staff member or administrator, and the like.
- the method includes storing an application file representing the developed industrial software application in a code repository associated with the user interface.
- the application file may be generated by a command received via the user interface and in response, the user interface may generate the application file and store the application file in a code repository that is included in a host device of the user interface software, or that is connected to the host device via a network such as the Internet.
- the method further includes testing the application file to determine whether the developed industrial software application successfully satisfies requirements for a platform as well as any other tests that the developer or the company desires. The testing may be automatically performed in response to the code being stored in the code repository.
- the code repository may include a hook such that each time a new software file is added or updated, the hook executes one or more tests on the newly added or updated software file.
- the method includes deploying the successfully tested application file from the code repository to the platform for active use, in response to receiving a user request.
- the deploying may include deploying the successfully tested application file from the code repository to a cloud platform or an on-premises platform in response to receiving a single input (e.g., mouse-click, speech command, key press, hand motion, etc.) from a user.
- the single input may include a single input received from a developer of the application via the user interface.
- the single input may include a single input received from an administrator of the platform that controls the deployment process of new applications.
- the deploying may include transferring the application file from the code repository or other storage to the platform, installing the application file on the platform, and activating the application file on the platform.
- the method may further include modifying a data pointer of code in the application file from pointing at test data to point at live data. In other words, the administrator or the developer may easily change the target of the application file from the test data to the real live data.
- the example embodiments essentially abstract away the lengthy and time-consuming process of deploying applications as performed traditionally. That is, the one-click deployment does not require a user to manually perform a number of functions and operations such as installation and configuration of the application on-premises or in a cloud environment. Rather, all the user needs to do is make a single selection and the deployment process is performed behind the scenes.
- FIG. 8 is a diagram illustrating a computing system for developing and deploying an industrial application in accordance with an example embodiment.
- the computing system 800 may be implemented within a cloud computing environment, a server, a user device, and the like.
- the computing system 800 includes a network interface 810 , a processor 820 , an output 830 , and a storage device 840 .
- the computing system 800 may include other components such as a display, an input unit, a receiver/transmitter, and the like.
- the network interface 810 may transmit and receive data over a network such as the Internet, a private network, a public network, and the like.
- the network interface 810 may be a wireless interface, a wired interface, or a combination thereof.
- the processor 820 may include one or more processing devices each including one or more processing cores. In some examples, the processor 820 is a multicore processor or a plurality of multicore processors. Also, the processor 820 may be fixed or it may be reconfigurable.
- the output 830 may output data to an embedded display of the computing system 800 , an externally connected display, a cloud, another device, and the like.
- the storage device 840 is not limited to any particular storage device and may include any known memory device such as RAM, ROM, hard disk, and the like.
- the output 830 may output a user interface for managing a software development lifecycle of an application.
- the user interface may be output to an embedded display of the computer system 800 , an externally connected display, a display attached to another device that is connected to the computing system 800 via a network, and the like.
- the user interface may facilitate and control the software development lifecycle for a new software application and also enable the user to update or modify an existing software project.
- the processor 820 may determine software components available for developing the application and displaying representations of the software components via the user interface.
- the software components may include analytics, data storage models, previously designed applications and parts thereof, visual representations, and the like.
- the processor 820 may detect a selection of at least one software component from among the available software components via the user interface, and add the selected at least one software component to a development workspace included within the user interface. For example, the processor 820 may detect a selection (e.g., drag-and-drop operation, check-mark, etc.) generated by the user via the user interface, and select the software component based thereon. Also, the selected software component may be configured based on data that is to be processed by the application. For example, the configuration may include a data format model of the application, a URL location of the application and/or data, authentication information, and the like. As another example, the configuration may be performed automatically or partially-automated by the software development lifecycle service.
- a selection e.g., drag-and-drop operation, check-mark, etc.
- the selected software component may be configured based on data that is to be processed by the application.
- the configuration may include a data format model of the application, a URL location of the application and/or data, authentication information,
- the processor 820 may also generate an application file for the application including the at least one configured software component and store the application file in a code repository. In some embodiments, the processor 820 may also perform testing on the application file to determine whether the application file can be successfully integrated into an execution environment such as a cloud platform or an on-premises platform.
- the computing system 800 may also perform a one-input or single input deployment of the application file.
- the processor 820 may detect commands for developing a software application via the user interface, store an application file representing the developed software application in a code repository associated with the user interface, and test the application file to determine whether the developed software application successfully satisfies requirements for a platform.
- the processor is further configured to deploy the successfully tested application file from the code repository to an application and active platform for active use, in response to detecting a user request.
- the user request may include a user input such as a single input received from a user via the user interface or a single input received from an administrator via an administrator window of the platform.
- the processor 820 may transfer the application file to the execution platform, install the application file on the platform, and activate the application file on the platform, all without user interaction. In other words, the deployment may be performed behind the scenes such that the user is not required to manually perform the deployment operations.
- the processor 820 is further configured to modify a data pointer of code in the application file from pointing at test data to point at live data, prior to or during the deploying of the application file
- the above-described examples of the disclosure may be implemented using computer programming or engineering techniques including computer software, firmware, hardware or any combination or subset thereof. Any such resulting program, having computer-readable code, may be embodied or provided within one or more non transitory computer-readable media, thereby making a computer program product, i.e., an article of manufacture, according to the discussed examples of the disclosure.
- the non-transitory computer-readable media may be, but is not limited to, a fixed drive, diskette, optical disk, magnetic tape, flash memory, semiconductor memory such as read-only memory (ROM), and/or any transmitting/receiving medium such as the Internet, cloud storage, the internet of things, or other communication network or link.
- the article of manufacture containing the computer code may be made and/or used by executing the code directly from one medium, by copying the code from one medium to another medium, or by transmitting the code over a network.
- the computer programs may include machine instructions for a programmable processor, and may be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language.
- the terms “machine-readable medium” and “computer-readable medium” refer to any computer program product, apparatus, cloud storage, internet of things, and/or device (e.g., magnetic discs, optical disks, memory, programmable logic devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal.
- PLDs programmable logic devices
- the term “machine-readable signal” refers to any signal that may be used to provide machine instructions and/or any other kind of data to a programmable processor.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
Description
- Machine and equipment assets, generally, are engineered to perform particular tasks as part of a business process. For example, assets can include, among other things and without limitation, industrial manufacturing equipment on a production line, drilling equipment for use in mining operations, wind turbines that generate electricity on a wind farm, transportation vehicles, and the like. As another example, assets may include healthcare machines and equipment that aid in diagnosing patients such as imaging devices (e.g., X-ray or MRI systems), monitoring devices, and the like. The design and implementation of these assets often takes into account both the physics of the task at hand, as well as the environment in which such assets are configured to operate.
- Low-level software and hardware-based controllers have long been used to drive machine and equipment assets. However, the rise of inexpensive cloud computing, increasing sensor capabilities, and decreasing sensor costs, as well as the proliferation of mobile technologies have created opportunities for creating novel industrial and healthcare based assets with improved sensing technology and which are capable of transmitting data that can then be distributed throughout a network. As a consequence, there are new opportunities to enhance the business value of some assets through the use of novel industrial-focused hardware and software.
- Machine and equipment assets are often controlled by industrial software which may be included within an Industrial Internet of Things (IIoT). Industrial software is often implemented within machines, on-premises, in a cloud environment, and the like, and can be used to manage devices, analyze data, predict future characteristics of or about assets, schedule maintenance, and the like. Industrial software is typically used by technicians in the field, administrative staff on a back-end, customers, and the like, who are not very familiar with designing software applications or generating executable code. However, these users are very familiar with the data provided from assets and functions that they need in order to perform their duties. Accordingly, what is needed is a tool that can facilitate industrial software development and deployment without the requirement of a programmer or other expert in generating code.
- Embodiments described herein improve upon the prior art by providing systems and methods which facilitate and manage the software development lifecycle of an industrial-based software application. A software development lifecycle service can provide developers with a user interface for developing and deploying applications without requiring users to write significant portions of code or perform lengthy installation and activation processes to active the software. Accordingly, even a citizen developer can generate new and update previously designed software applications. In some examples, the example embodiments herein may be incorporated within software such as a service or other program that is deployed on a cloud platform for use with an Industrial Internet of Things (IIoT) system. The embodiments disclosed herein automate and guide a user through the software development process in order to improve on the previous manual approaches performed in the prior art.
- In an aspect of an example embodiment, a computer-implemented method includes displaying a user interface for managing a software development lifecycle of an application, determining software components available for developing the application and displaying representations of the software components via the user interface, receiving a selection of at least one software component from among the available software components, via the user interface, and adding the selected at least one software component to a development workspace of the user interface, configuring the selected at least one software component based on data that is to be processed by the application, and generating an application file for the application including the at least one configured software component and storing the application file in a code repository.
- In an aspect of another example embodiment, a computing system includes an output configured to output a user interface for managing a software development lifecycle of an application, and a processor configured to determine software components available for developing the application and displaying representations of the software components via the user interface, detect a selection of at least one software component from among the available software components via the user interface, add the selected at least one software component to a development workspace of the user interface, configure the selected at least one software component based on data that is to be processed by the application, and generate an application file for the application including the at least one configured software component and store the application file in a code repository.
- In an aspect of another example embodiment, a computer-implemented method includes developing a software application via a user interface, storing an application file representing the developed software application in a code repository associated with the user interface, testing the application file to determine whether the developed software application successfully satisfies requirements for a platform, and deploying the successfully tested application file from the code repository to the platform for active use, in response to receiving a user request.
- In an aspect of yet another example embodiment, a computing system includes a processor configured to detect commands for developing a software application via a user interface, store an application file representing the developed software application in a code repository associated with the user interface, and test the application file to determine whether the developed software application successfully satisfies requirements for a platform, wherein the processor is further configured to deploy the successfully tested application file from the code repository to the platform for active use, in response to detecting a user request.
- Other features and aspects may be apparent from the following detailed description taken in conjunction with the drawings and the claims.
- Features and advantages of the example embodiments, and the manner in which the same are accomplished, will become more readily apparent with reference to the following detailed description taken in conjunction with the accompanying drawings.
-
FIG. 1 is a diagram illustrating a cloud computing environment associated with industrial systems in accordance with an example embodiment. -
FIG. 2 is a diagram illustrating an industrial application development network in accordance with an example embodiment. -
FIG. 3 is a diagram illustrating a software development lifecycle process in accordance with an example embodiment. -
FIG. 4 is a diagram illustrating a user interface for managing a software development lifecycle of an application in accordance with an example embodiment. -
FIG. 5 is a diagram illustrating a system for deploying an industrial application in accordance with an example embodiment. -
FIG. 6 is a diagram illustrating a method for managing a software development lifecycle of an industrial application in accordance with an example embodiment. -
FIG. 7 is a diagram illustrating a method for deploying an industrial application in accordance with an example embodiment. -
FIG. 8 is a diagram illustrating a computing system for developing and deploying an industrial application in accordance with an example embodiment. - Throughout the drawings and the detailed description, unless otherwise described, the same drawing reference numerals will be understood to refer to the same elements, features, and structures. The relative size and depiction of these elements may be exaggerated or adjusted for clarity, illustration, and/or convenience.
- In the following description, specific details are set forth in order to provide a thorough understanding of the various example embodiments. It should be appreciated that various modifications to the embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the disclosure. Moreover, in the following description, numerous details are set forth for the purpose of explanation. However, one of ordinary skill in the art should understand that embodiments may be practiced without the use of these specific details. In other instances, well-known structures and processes are not shown or described in order not to obscure the description with unnecessary detail. Thus, the present disclosure is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein.
- The example embodiments are directed to a software and system for managing and facilitating a software development lifecycle of a software application. Software development lifecycle is a process used by the software industry to design, develop and test high quality software. The software development lifecycle aims to produce a high-quality software that meets or exceeds customer expectations, reaches completion within times and cost estimates. Traditional software development is performed by a designer/developer that typically has a detailed understanding and training using various programming languages. Based on this expertise, the developer is able to develop, test, and deploy the software application. This developer is often a computer professional such as a software engineer.
- However, software engineers are not very prevalent in general and especially in industrial and manufacturing organizations. Furthermore, the cost of hiring and employing a software engineer can be significant. The example embodiments provide a software development lifecycle service that can guide and facilitate an entire development lifecycle for a software application even for a user who is not familiar with the deep complexities of programming languages and data models. The service can provide automated features and tools which can enable even a novice user to develop and deploy a software application. The service can provide a user interface that enables a user to easily build a new application based on components previously requested by the user. The service also puts the developed application into a pipeline for production in a live environment such as a cloud platform or on-premises. The pipeline can further include multiple rounds of testing as well as automated deployment of the application.
- In some of the examples herein, the software development is performed for an industrial application that might be applied to one or more assets such as machine and equipment for use in healthcare, industry, manufacture, energy, transportation, and the like. However, the examples herein are not limited to industrial software development and may include any type of software application. The primary users of industrial software may include technicians in the field as well as administrative staff and other users who lack software development training. The software development lifecycle service described herein automates and guides a user through the software development lifecycle process and also deploys the software in response to a simple user request without requiring the software to be manually installed within a cloud platform or an on-premises platform. For example, the software development lifecycle service may abstract away the time-consuming tasks associated with deploying a software application by allowing automatically deploying the software with a single click of a button.
- While progress with machine and equipment automation has been made over the last several decades, and assets have become “smarter,” the intelligence of any individual asset pales in comparison to the intelligence that can be gained when multiple smart devices are connected together, for example, in the cloud. Assets, as described herein, may refer to equipment and machines used in fields such as energy, healthcare, transportation, heavy manufacturing, chemical production, printing and publishing, electronics, textiles, and the like. Aggregating data collected from or about multiple assets can enable users to improve business processes, for example by improving effectiveness of asset maintenance or improving operational performance if appropriate industrial-specific data collection and modeling technology is developed and applied.
- For example, an asset can be outfitted with one or more sensors configured to monitor respective operations or conditions associated with the asset. Data from the sensors can be recorded or transmitted to a cloud-based or other remote computing environment. By bringing such data into a cloud-based computing environment, new software applications informed by industrial process, tools and know-how can be constructed, and new analytics specific to an industrial environment can be created. Insights gained through analysis of such data can lead to enhanced asset designs, enhanced software algorithms for operating the same or similar assets, better operating efficiency, and the like. Examples of the methods-based software applications are described herein as analytics. Analytics may be used to analyze, evaluate, and further understand issues related to manufacturing.
- The assets and the software described herein can be included within an Industrial Internet of Things (IIoT). In an example, an IIoT connects assets including machines and equipment, such as turbines, jet engines, healthcare machines, locomotives, and the like, to the Internet or cloud, or to each other in some meaningful way such as through one or more networks. The systems and methods described herein can include using a “cloud” or remote or distributed computing resource or service. The cloud can be used to receive, relay, transmit, store, analyze, or otherwise process information for or about one or more assets. In an example, a cloud computing system includes at least one processor circuit, at least one database, and a plurality of users or assets that are in data communication with the cloud computing system. The cloud computing system can further include or can be coupled with one or more other processor circuits or modules configured to perform a specific task, such as to perform tasks related to asset maintenance, analytics, data storage, security, or some other function.
- However, the integration of assets with the remote computing resources to enable the IIoT often presents technical challenges separate and distinct from the specific industry and from computer networks, generally. A given machine or equipment based asset may need to be configured with novel interfaces and communication protocols to send and receive data to and from distributed computing resources. Given assets may have strict requirements for cost, weight, security, performance, signal interference, and the like such that enabling such an interface is rarely as simple as combining the asset with a general-purpose computing device. To address these problems and other problems resulting from the intersection of certain industrial fields and the IIoT, the cloud platform can receive and host applications from many different fields of industrial technologies. The example embodiments facilitate generation and design of these applications by providing a software development lifecycle service capable of being used to build and deploy new software applications for use in the cloud computing environment.
- The Predix™ platform available from GE is a novel embodiment of an Asset Management Platform (AMP) technology enabled by state of the art cutting edge tools and cloud computing techniques that enable incorporation of a manufacturer's asset knowledge with a set of development tools and best practices that enables asset users to bridge gaps between software and operations to enhance capabilities, foster innovation, and ultimately provide economic value. Through the use of such a system, a manufacturer of assets can be uniquely situated to leverage its understanding of assets themselves, models of such assets, and industrial operations or applications of such assets, to create new value for industrial customers through asset insights.
-
FIG. 1 illustrates a cloud computing environment associated with industrial systems in accordance with an example embodiment.FIG. 1 illustrates generally an example of portions of an asset management platform (AMP) 100. As further described herein, one or more portions of an AMP can reside in acloud computing system 120, in a local or sandboxed environment, or can be distributed across multiple locations or devices. TheAMP 100 can be configured to perform any one or more of data acquisition, data analysis, or data exchange with local or remote assets, or with other task-specific processing devices. TheAMP 100 includes an asset community (e.g., turbines, healthcare machines, oil rigs, mining equipment, chemical processing systems, etc.) that is communicatively coupled with thecloud computing system 120. In an example, a machine module 110 receives information from, or senses information about, at least one asset member of the asset community, and configures the received information for exchange with thecloud computing system 120. In an example, the machine module 110 is coupled to thecloud computing system 120 or to anenterprise computing system 130 via acommunication gateway 105. - In an example, the
communication gateway 105 includes or uses a wired or wireless communication channel that extends at least from the machine module 110 to thecloud computing system 120. Thecloud computing system 120 may include several layers, for example, a data infrastructure layer, an application platform layer, and modules for providing various functions. In the example ofFIG. 1 , thecloud computing system 120 includes anasset module 121, ananalytics module 122, adata acquisition module 123, adata security module 124, and anoperations module 125. Each of the modules includes or uses a dedicated circuit, or instructions for operating a general purpose processor circuit, to perform the respective functions. In an example, the modules 121-125 are communicatively coupled in thecloud computing system 120 such that information from one module can be shared with another. In an example, the modules 121-125 are co-located at a designated datacenter or other facility, or the modules 121-125 can be distributed across multiple different locations. - An interface device 140 (e.g., user device, workstation, tablet, laptop, appliance, kiosk, and the like) can be configured for data communication with one or more of the machine module 110, the
gateway 105, and thecloud computing system 120. Theinterface device 140 can be used to monitor or control one or more assets. As another example, theinterface device 140 may be used to develop and upload applications to thecloud computing system 120. As yet another example, theinterface device 140 may be used to access analytical applications hosted by thecloud computing system 120. In an example, information about the asset community may be presented to an operator at theinterface device 140. The information about the asset community may include information from the machine module 110, or the information can include information from thecloud computing system 120. Theinterface device 140 can include options for optimizing one or more members of the asset community based on analytics performed at thecloud computing system 120. Prior to analytics being accessed through thecloud computing system 120, thecloud computing system 120 may certify the analytics. - As a non-limiting example, a user of the
interface device 140 may control an asset through thecloud computing system 120, for example, by selecting a parameter update for afirst wind turbine 101. In this example, the parameter update may be pushed to thefirst wind turbine 101 via one or more of thecloud computing system 120, thegateway 105, and the machine module 110. In some examples, theinterface device 140 is in data communication with theenterprise computing system 130 and theinterface device 140 provides an operation with enterprise-wide data about the asset community in the context of other business or process data. For example, choices with respect to asset optimization can be presented to an operator in the context of available or forecasted raw material supplies or fuel costs. As another example, choices with respect to asset optimization can be presented to an operator in the context of a process flow to identify how efficiency gains or losses at one asset can impact other assets. - Returning again to the example of
FIG. 1 , some capabilities of theAMP 100 are illustrated. The example ofFIG. 1 includes the asset community with multiple wind turbine assets, including thefirst wind turbine 101. However, it should be understood that wind turbines are merely used in this example as a non-limiting example of a type of asset that can be a part of, or in data communication with, thefirst AMP 100.FIG. 1 further includes thedevice gateway 105 configured to couple the asset community to thecloud computing system 120. Thedevice gateway 105 can further couple thecloud computing system 120 to one or more other assets or asset communities, to theenterprise computing system 130, or to one or more other devices. TheAMP 100 thus represents a scalable industrial solution that extends from a physical or virtual asset (e.g., the first wind turbine 101) to a remotecloud computing system 120. Thecloud computing system 120 optionally includes a local, system, enterprise, or global computing infrastructure that can be optimized for industrial data workloads, secure data communication, and compliance with regulatory requirements. - The
cloud computing system 120 can include theoperations module 125. Theoperations module 125 can include services that developers can use to build or test Industrial Internet applications, and theoperations module 125 can include services to implement Industrial Internet applications, such as in coordination with one or more other AMP modules. In an example, theoperations module 125 includes a microservices marketplace where developers can publish their services and/or retrieve services from third parties. In addition, theoperations module 125 can include a development framework for communicating with various available services or modules. The development framework can offer developers a consistent look and feel and a contextual user experience in web or mobile applications. Developers can add and make accessible their applications (services, data, analytics, etc.) via thecloud computing system 120. - Information from an asset, about the asset, or sensed by an asset itself may be communicated from the asset to the
data acquisition module 123 in thecloud computing system 120. In an example, an external sensor can be used to sense information about a function of an asset, or to sense information about an environment condition at or near an asset. The external sensor can be configured for data communication with thedevice gateway 105 and thedata acquisition module 123, and thecloud computing system 120 can be configured to use the sensor information in its analysis of one or more assets, such as using theanalytics module 122. Using a result from theanalytics module 122, an operational model can optionally be updated, such as for subsequent use in optimizing thefirst wind turbine 101 or one or more other assets, such as one or more assets in the same or different asset community. For example, information about thefirst wind turbine 101 can be analyzed at thecloud computing system 120 to inform selection of an operating parameter for a remotely located second wind turbine that belongs to a different asset community. - The
cloud computing system 120 may include a Software-Defined Infrastructure (SDI) that serves as an abstraction layer above any specified hardware, such as to enable a data center to evolve over time with minimal disruption to overlying applications. The SDI enables a shared infrastructure with policy-based provisioning to facilitate dynamic automation, and enables SLA mappings to underlying infrastructure. This configuration can be useful when an application requires an underlying hardware configuration. The provisioning management and pooling of resources can be done at a granular level, thus allowing optimal resource allocation. In addition, the assetcloud computing system 120 may be based on Cloud Foundry (CF), an open source PaaS that supports multiple developer frameworks and an ecosystem of application services. Cloud Foundry can make it faster and easier for application developers to build, test, deploy, and scale applications. Developers thus gain access to the vibrant CF ecosystem and an ever-growing library of CF services. Additionally, because it is open source, CF can be customized for IIoT workloads. - The
cloud computing system 120 can include a data services module that can facilitate application development. For example, the data services module can enable developers to bring data into thecloud computing system 120 and to make such data available for various applications, such as applications that execute at the cloud, at a machine module, or at an asset or other location. In an example, the data services module can be configured to cleanse, merge, or map data before ultimately storing it in an appropriate data store, for example, at thecloud computing system 120. A special emphasis may be placed on time series data, as it is the data format that most sensors use. - In the example of
FIG. 1 , the software development lifecycle service described herein may be implemented within thecloud computing system 120. As another example, the software development lifecycle service may be implemented in an application platform that is not part of a cloud platform. Using the software development lifecycle service, a user (e.g., via a cloud-connected device such asinterface device 140 or some other user device) can access the lifecycle service and build a new software application. The service can guide the user through the building process and also put the application in a pipeline to deployment. In addition, in response to receiving a simple user input such as a button click or a mouse click, the service can deploy the newly created application within thecloud computing system 120 where it is available and active to other users and subscribers of thecloud computing system 120. -
FIG. 2 illustrates an industrialapplication development network 200 in accordance with an example embodiment. Referring toFIG. 2 , thenetwork 200 includes acloud platform 210, adeveloper workstation 220, and an on-premises server 230. In this example, thedeveloper workstation 220 may be controlled by a user that is developing a new industrial software application via the software development lifecycle service of the example embodiments. In this example, thedeveloper workstation 220 may be connected to thecloud platform 210 via anetwork 240 such as the Internet, a private network, and/or the like. Thedeveloper workstation 220 may also be connected to an on-premises platform 230 via a local network or through a user manually deploying an application to the on-premises platform 230 from thecloud platform 210. In this example, the useroperating developer workstation 220 may be a staff or a technician of an organization that hosts or otherwise uses on-premises platform 230 which may be a local network server. In this example, the user may develop a new software application using the software development lifecycle service described herein. The newly developed software application may be deployed to either of thecloud platform 210 brought to and installed at the on-premises server 230. Furthermore, thedeveloper workstation 220 may perform maintenance and updated on the deployed application. -
FIG. 3 illustrates a softwaredevelopment lifecycle process 300 in accordance with an example embodiment. Theprocess 300 may be performed by the service described herein to build, test, and deploy a new software application. Referring toFIG. 3 , in 310 the process includes planning and requirement analysis. For example, theplanning 310 may include receiving goals and objectives to be accomplished by the software, identifying quality and other requirements necessary, and planning a basic software approach to satisfy these goals and requirements. In addition, the software product requirements are clearly defined and approved by the client typically through documentation. In 320, the software application is designed. In most cases, there will be multiple approaches for designing the software. The designing in 320 determines the best architecture to be used to develop the product. The design may be reviewed and analyzed and based on various parameters such as risk assessment, product robustness, design modularity, and budget and time constraints, and the best design approach is selected for the product. A design approach clearly defines all the architectural modules of the software along with its communication and data flow representation with the external and third-party modules (if any). - In 330, the software is developed through a coding process. In this stage, the development starts and the product is built. In a conventional process, the user must generate programming code. According to various embodiments, the software development lifecycle as a service can use pre-defined software components which the user has already registered with and which are made available by the software via a user interface. The pre-defined software components may include built-in code that is already adapted for use with the user's data and that is tested and tried to work with a platform such as the cloud or an on-premises environment. The available pre-defined software components may include analytics, applications, services, data storage services, historical programs, and the like, and may be defined based on a data storage model of the user's data.
- According to various embodiments, the pre-defined software components may follow coding guidelines defined by their organization and programming tools including compilers, interpreters, debuggers, etc. which are used to generate the code. Different high-level programming languages such as C, C++, Pascal, Java, R, Python, and PHP may be used for coding. As another example, one or more fourth-generation programming languages (4GL) may be supported, and the like. Because the software components are already coded, there is an enormous amount of time and difficulty which the user/developer is relieved of. Furthermore, when the user has developed an initial version of the project they are satisfied with, they may save the version of the product and generate an application or software file (e.g., by pressing a button in the user interface). The application file may be an application definition, an application artifact, an application model, and/or the like, which represents runs on an application platform such as a host server, a web server, a cloud platform, or the like. The application file may be stored in a code repository or other storage associated with the user interface and/or the software development lifecycle service.
- In 340, testing is performed on the application file to test the developed software application. Here, the testing may be initiated based on the application file being stored in the code repository. For example, the repository may include a hook that identifies when a new project is stored therein and which triggers execution of one or more software tests based on the identifying. At this stage, in some embodiments, testing of the software product may be performed to identify defects and report the defects. Accordingly, the defects can be tracked, fixed and retested, until the product reaches the quality standards.
- In 350, the successfully tested and developed software application is deployed into a live operating environment where it may be consumed by one or more client/users of the product. For example, the software application may be automatically deployed into a cloud environment (e.g., an application platform) such as shown in
FIG. 1 . For an on-premises environment such asFIG. 2 , the application file may be downloaded and installed manually. The deploying may include several interrelated activities with possible transitions between them. These activities can occur at the developer side or at the client side or both. Because every software system is unique, the deployment processes or procedures within each activity may be different. Therefore, “deployment” may be a general process that is customized according to specific requirements or characteristics. Typically, the deployment includes installation of the software application within an operating platform which is also referred to as a production or productive environment. The installation may include establishing some form of command, shortcut, script or service for executing the software (manually or automatically). For complex systems, it may also include configuration of the system which may be performed automatically by the lifecycle service. Activation includes the activity of starting up or otherwise running the application component of software for the first time on the platform. - In 360, maintenance on the deployed software is performed. This step may be continuous or performed on a periodic basis over a continued period of time. Maintenance may include modifications and updates that are performed after the delivery of software application. Reasons for modifications and updates include changes to market conditions (e.g., policies which change over the time such as newly introduced constraints) client requirements (e.g., add new features or functions), host modifications (e.g., hardware, platform, software changes), and organization changes (e.g., changes in company structure, adding a new business, etc.)
-
FIG. 4 illustrates auser interface 400 for managing a software development lifecycle of an application in accordance with an example embodiment. Theuser interface 400 may be displayed via a user device and may be generated and controlled by the software development lifecycle service. The user may develop a software application via theuser interface 400 basedavailable software components 430 which may be identified and provided to the user by the service via an available software window or other visual means. For example, the service may receive a user identifier during a sign-in process, authentication process, etc. and may identify software components such as analytics, applications, historical time-series data, visual software, and the like. Theavailable software components 430 may be provided automatically to the user when theuser interface 400 opens, or they may be searched for by the user via a search bar. For example, a catalog of available services may be automatically provided to the user when they sign-in to the service. In addition, when a user searches for a software component, the component may require configuration information such as authentication information, data formats, a URL of the application, and the like. In some embodiments, the configuration information may be entered by the user or it may be automatically or partially provided by the service. - According to various embodiments, the user may select one or more
available software components 430, for example, by dragging-and-dropping the available software components in adevelopment workspace 420 or they may select the available components in another way such as by a check-box, or the like. In this example, the user has added Analytic B, Analytic C, andVisualization 1 to thedevelopment workspace 420. Within thedevelopment workspace 420, the user may easily arrange software components to generate an end-to-end flow 422 for the software application. When the user has reached a point where they would like to test the end-to-end flow 422, the user may select asave button 424 which may store the developed software flow 422 (e.g., the underlying executable code) as an application file in a code repository or other storage medium. In some cases, the application file may be automatically tested by the code repository to ensure that the software can satisfy requirements of its intended activation platform and any coding guidelines. Additional testing such as quality assurance (QA) testing may be performed on an instance of the application file. In some embodiments, the user may also select a software component from the list ofavailable components 430 to expand the software and the underlying code. Here, the code may be displayed via a window that enables the user to modify the code or data pointers included within the code. - In addition to the
available software components 430, the service may also provide the user with aninput 410 for uploading their data or importing their data into the service and the underlying system via theuser interface 400. By uploading the data, the service may automatically recognize a format of the user's data and notify the user of the data format in a notification window enabling the user to understand the format of their data. Theavailable software components 430 may already be pre-configured to work with the user's data either by the system or by the user that designed the software components. In the example ofFIG. 4 , the user may begin accessing their industrial data in an efficient manner. For example, where it would normally take a long time to wire up services with data, but the service may provide tools which automate the process and facilitate an understanding of the data to the user. - In some cases, the primary goal for digital and industrial application development is performing functions, analytics, and visualizations on data (e.g., time-series data) received from one or more assets on the edge of the cloud. When a user understands their data, it is much easier to build useful insights and views on top of the data. The
user interface 400 may include forums or FAQ sections (not shown) where the user can search for guidance on developing the application. In addition, theuser interface 400 facilitates and manages a pipeline that helps the user build a software project and put the software into production as part of a cloud or other environment. The service also provides testing which can be performed automatically on the software without requiring user interaction. For example, testing may automatically occur when the user save the software project. - Furthermore, when the application has been successfully tested, the user or a controller of the
user interface 400 can deploy the application into an active environment. In the example ofFIG. 4 , the user is provided a deploybutton 440 for simply requesting the application to be transferred from the development process to a live platform such as a cloud environment or an on-premises environment with a click of amouse cursor 450. The user can develop the application within theuser interface 400 against a time-series test data store. When the application is deployed, the user or the system may change a pointer of the application to point at live data instead of the test data. In this case, the test data may be the same format as the live data (as ensured by the service) where the only thing that needs to be changed within the code is the end point of the pointer. - Prior to the application file being stored in the source code repository, the user may add metadata to the application code and submit the code to source code repository. The repository can run the automated tests, then the application in the repository may be deployed onto another instance of a runtime engine (runtime that runs the app that you defined in the user interface 400). For example, the application may be deployed on a QA instance for additional validation. That same app that is in the repository can be pushed into production by specifying where it should be installed and by the user simply pressing the deploy request. In other words, the application may be seamlessly installed and activated from the repository to an active operating platform.
- An example of the deployment process is shown in
FIG. 5 . In this example, adeployment system 500 is shown and includes adeveloper terminal 510, a host platform for hosting a deployed application, and acode repository 520 which is shown as a separate device for convenience but may be incorporated into thehost platform 530 and/or thedevelopment terminal 510. Here, thedevelopment terminal 510 may display a user interface (e.g.,user interface 400 shown inFIG. 4 ) that enables a user of the terminal 510 to build and test a software application and store the software application in thecode repository 520. Furthermore, based on a triggering event such as a user input, command, script execution, etc., via the development terminal 510 (or via another device not shown such as a platform device), thecode repository 520 can transfer the successfully tested application to thehost platform 530 where it is deployed without the need for user interaction. In addition to the transferring, the deployment may include an installation of the application on theplatform 530, an activation of the application, and the like. - Once activated, the application is then accessible to one or
more users host platform 530. The deployment process is performed behind the scenes such that the user/developer does not need to understand or know how to perform the deployment and all the associated activities and procedures involved with the deployment. As a result, the developer does not need to be physically present at the site of the deployment or be able to access the cloud platform or other platform where the software is deployed. Instead, the developer may provide a URL or other address during the development process via theuser interface 400, and the service may take care of the rest. -
FIG. 6 illustrates amethod 600 for managing a software development lifecycle of an industrial application in accordance with an example embodiment. For example, themethod 600 may be performed by the software development lifecycle service described herein which may be executed by a user device, a server, a cloud computing environment, and the like. Referring toFIG. 6 , in 610, the method includes displaying a user interface for managing a software development lifecycle of an application that is to be deployed. The user interface may be displayed via a user terminal (e.g., software developer, technician, subject matter expert, etc.) and may include tools that facilitate the development of a software application. The user interface may include tools that automate and guide the user through the software development lifecycle process such that the user does not need to be an expert or even familiar with coding to develop a new industrial application but instead may be a novice such as an office staff, an administrator, or a technician in the field who is a subject matter expert on assets such as wind turbines, jet engines, locomotives, gas turbines, mining equipment, aircraft, oil rigs, or the like. The service provided herein is targeted for these users who are unfamiliar with code writing and developing of software. - In 620, the method includes determining software components available for developing the application and displaying representations of the software components via the user interface. For example, the service may identify a user based on a user authentication or login process performed or some other identifier (IP address, email address, etc.) and also perform a look-up of previous software components that the developer or team of developers have previously built or otherwise have access to. For example, the software components may include analytics, visualization programs, data storage programs, or even complete applications. The software components may also be found by the user via the user interface. For example, the user may perform a search for applications that they have previously registered to use. The user interface can provide a panel, box, window, etc., providing a listing of these available software components and enabling the user to select any of the components to add to a new software project or modify an existing software project. In some embodiments, the determining may include determining a catalog of services that have been registered for use by a developer of the software application where the catalog includes one or more of an analytic service, a data storage service, and a visualization service.
- In 630, the method includes receiving a selection of at least one software component from among the available software components, via the user interface, and adding the selected at least one software component to a development workspace of the user interface. For example, the user may perform a drag-and-drop operation pulling the representation of the available software component to the workspace. Here, the available software component may include underlying executable code. As a result, the user does not need to generate new code, but may instead rely on previously generated code by other users or the system. By selecting the representation of the available software component into the workspace, the service controlling the user interface may associate the corresponding code of the software component with the current project being developed or edited by the user.
- In 640, the method includes configuring the selected at least one software component based on data that is to be processed by the application, and in 650, generating an application file for the application including the at least one configured software component and storing the application file in a storage such as a code repository or other file storage. In these examples, the configuring may be manual, partially automated, or fully automated. For example, the configuring may include receiving one or more configuration inputs manually entered by a user via the user interface. For example, the one or more configuration inputs may include one or more of a uniform resource locator (URL) and authentication information associated with the application. As another example, the configuring may include an automated or partially-automated configuration process in which the selected at least one software component is automatically configured to process time-series data for the industrial application. Although not shown in
FIG. 6 , the method may further include performing testing such as cloud-based integration testing and/or QA testing on the application file of the application after it has been stored in the code repository. For example, the testing may be automatically performed in response to the application file being stored in the code repository. -
FIG. 7 illustrates amethod 700 for deploying an industrial application in accordance with an example embodiment. For example, themethod 700 may be performed by the software development lifecycle service described herein which may be executed by a user device, a server, a cloud computing environment, and the like. Referring toFIG. 7 , in 710, the method includes developing an industrial software application via a user interface. For example, the developing process may include the steps described inFIG. 6 in which a software development lifecycle is managed by a user interface. Here, the software may be developed by someone who is not familiar with software writing but instead a technician or other person such as a subject matter expert, a staff member or administrator, and the like. - In 720, the method includes storing an application file representing the developed industrial software application in a code repository associated with the user interface. For example, the application file may be generated by a command received via the user interface and in response, the user interface may generate the application file and store the application file in a code repository that is included in a host device of the user interface software, or that is connected to the host device via a network such as the Internet. In 730, the method further includes testing the application file to determine whether the developed industrial software application successfully satisfies requirements for a platform as well as any other tests that the developer or the company desires. The testing may be automatically performed in response to the code being stored in the code repository. For example, the code repository may include a hook such that each time a new software file is added or updated, the hook executes one or more tests on the newly added or updated software file.
- In 740, the method includes deploying the successfully tested application file from the code repository to the platform for active use, in response to receiving a user request. For example, the deploying may include deploying the successfully tested application file from the code repository to a cloud platform or an on-premises platform in response to receiving a single input (e.g., mouse-click, speech command, key press, hand motion, etc.) from a user. In some embodiments, the single input may include a single input received from a developer of the application via the user interface. As another example, the single input may include a single input received from an administrator of the platform that controls the deployment process of new applications. As an example, the deploying may include transferring the application file from the code repository or other storage to the platform, installing the application file on the platform, and activating the application file on the platform. Prior to or during the deploying, the method may further include modifying a data pointer of code in the application file from pointing at test data to point at live data. In other words, the administrator or the developer may easily change the target of the application file from the test data to the real live data.
- By automatically deploying the industrial application to the platform with a single input such as a mouse-click, the example embodiments essentially abstract away the lengthy and time-consuming process of deploying applications as performed traditionally. That is, the one-click deployment does not require a user to manually perform a number of functions and operations such as installation and configuration of the application on-premises or in a cloud environment. Rather, all the user needs to do is make a single selection and the deployment process is performed behind the scenes.
-
FIG. 8 is a diagram illustrating a computing system for developing and deploying an industrial application in accordance with an example embodiment. For example, thecomputing system 800 may be implemented within a cloud computing environment, a server, a user device, and the like. Referring toFIG. 8 , thecomputing system 800 includes anetwork interface 810, aprocessor 820, anoutput 830, and astorage device 840. Although not shown inFIG. 8 , thecomputing system 800 may include other components such as a display, an input unit, a receiver/transmitter, and the like. Thenetwork interface 810 may transmit and receive data over a network such as the Internet, a private network, a public network, and the like. Thenetwork interface 810 may be a wireless interface, a wired interface, or a combination thereof. Theprocessor 820 may include one or more processing devices each including one or more processing cores. In some examples, theprocessor 820 is a multicore processor or a plurality of multicore processors. Also, theprocessor 820 may be fixed or it may be reconfigurable. Theoutput 830 may output data to an embedded display of thecomputing system 800, an externally connected display, a cloud, another device, and the like. Thestorage device 840 is not limited to any particular storage device and may include any known memory device such as RAM, ROM, hard disk, and the like. - According to various embodiments, the
output 830 may output a user interface for managing a software development lifecycle of an application. The user interface may be output to an embedded display of thecomputer system 800, an externally connected display, a display attached to another device that is connected to thecomputing system 800 via a network, and the like. The user interface may facilitate and control the software development lifecycle for a new software application and also enable the user to update or modify an existing software project. In response to the user interface being launched, theprocessor 820 may determine software components available for developing the application and displaying representations of the software components via the user interface. For example, the software components may include analytics, data storage models, previously designed applications and parts thereof, visual representations, and the like. - The
processor 820 may detect a selection of at least one software component from among the available software components via the user interface, and add the selected at least one software component to a development workspace included within the user interface. For example, theprocessor 820 may detect a selection (e.g., drag-and-drop operation, check-mark, etc.) generated by the user via the user interface, and select the software component based thereon. Also, the selected software component may be configured based on data that is to be processed by the application. For example, the configuration may include a data format model of the application, a URL location of the application and/or data, authentication information, and the like. As another example, the configuration may be performed automatically or partially-automated by the software development lifecycle service. Theprocessor 820 may also generate an application file for the application including the at least one configured software component and store the application file in a code repository. In some embodiments, theprocessor 820 may also perform testing on the application file to determine whether the application file can be successfully integrated into an execution environment such as a cloud platform or an on-premises platform. - According to various other embodiments, the
computing system 800 may also perform a one-input or single input deployment of the application file. Here, theprocessor 820 may detect commands for developing a software application via the user interface, store an application file representing the developed software application in a code repository associated with the user interface, and test the application file to determine whether the developed software application successfully satisfies requirements for a platform. In this embodiment, the processor is further configured to deploy the successfully tested application file from the code repository to an application and active platform for active use, in response to detecting a user request. As an example, the user request may include a user input such as a single input received from a user via the user interface or a single input received from an administrator via an administrator window of the platform. - During the deployment of the application file, the
processor 820 may transfer the application file to the execution platform, install the application file on the platform, and activate the application file on the platform, all without user interaction. In other words, the deployment may be performed behind the scenes such that the user is not required to manually perform the deployment operations. In some embodiments, theprocessor 820 is further configured to modify a data pointer of code in the application file from pointing at test data to point at live data, prior to or during the deploying of the application file - As will be appreciated based on the foregoing specification, the above-described examples of the disclosure may be implemented using computer programming or engineering techniques including computer software, firmware, hardware or any combination or subset thereof. Any such resulting program, having computer-readable code, may be embodied or provided within one or more non transitory computer-readable media, thereby making a computer program product, i.e., an article of manufacture, according to the discussed examples of the disclosure. For example, the non-transitory computer-readable media may be, but is not limited to, a fixed drive, diskette, optical disk, magnetic tape, flash memory, semiconductor memory such as read-only memory (ROM), and/or any transmitting/receiving medium such as the Internet, cloud storage, the internet of things, or other communication network or link. The article of manufacture containing the computer code may be made and/or used by executing the code directly from one medium, by copying the code from one medium to another medium, or by transmitting the code over a network.
- The computer programs (also referred to as programs, software, software applications, “apps”, or code) may include machine instructions for a programmable processor, and may be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” and “computer-readable medium” refer to any computer program product, apparatus, cloud storage, internet of things, and/or device (e.g., magnetic discs, optical disks, memory, programmable logic devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The “machine-readable medium” and “computer-readable medium,” however, do not include transitory signals. The term “machine-readable signal” refers to any signal that may be used to provide machine instructions and/or any other kind of data to a programmable processor.
- The above descriptions and illustrations of processes herein should not be considered to imply a fixed order for performing the process steps. Rather, the process steps may be performed in any order that is practicable, including simultaneous performance of at least some steps. Although the disclosure has been described in connection with specific examples, it should be understood that various changes, substitutions, and alterations apparent to those skilled in the art can be made to the disclosed embodiments without departing from the spirit and scope of the disclosure as set forth in the appended claims.
Claims (20)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/804,223 US10296302B1 (en) | 2017-11-06 | 2017-11-06 | One-click deployment of industrial software |
US16/374,855 US20190227778A1 (en) | 2017-11-06 | 2019-04-04 | One-click deployment of industrial software |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/804,223 US10296302B1 (en) | 2017-11-06 | 2017-11-06 | One-click deployment of industrial software |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/374,855 Continuation US20190227778A1 (en) | 2017-11-06 | 2019-04-04 | One-click deployment of industrial software |
Publications (2)
Publication Number | Publication Date |
---|---|
US20190138280A1 true US20190138280A1 (en) | 2019-05-09 |
US10296302B1 US10296302B1 (en) | 2019-05-21 |
Family
ID=66327287
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/804,223 Active 2037-11-07 US10296302B1 (en) | 2017-11-06 | 2017-11-06 | One-click deployment of industrial software |
US16/374,855 Abandoned US20190227778A1 (en) | 2017-11-06 | 2019-04-04 | One-click deployment of industrial software |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/374,855 Abandoned US20190227778A1 (en) | 2017-11-06 | 2019-04-04 | One-click deployment of industrial software |
Country Status (1)
Country | Link |
---|---|
US (2) | US10296302B1 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170132378A1 (en) * | 2015-07-29 | 2017-05-11 | Siemens Healthcare Gmbh | Devices, methods and computer readable mediums for flexible delivery and deployment of medical applications |
US10489123B1 (en) * | 2018-06-12 | 2019-11-26 | Sap Se | Selectively enabling requests to backend executable application programs from a user interface in a multi-tier computer architecture |
US11226801B2 (en) * | 2019-10-30 | 2022-01-18 | Mastercard International Incorporated | System and methods for voice controlled automated computer code deployment |
US11347627B2 (en) * | 2019-08-07 | 2022-05-31 | Bank Of America Corporation | System for customization of software platforms for implementation in legacy systems |
US11809897B2 (en) * | 2020-11-30 | 2023-11-07 | Red Hat, Inc. | Chained triggering of builds in continuous integration environments |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10606583B2 (en) | 2017-12-08 | 2020-03-31 | International Business Machines Corporation | Software change tracking and management |
US11474814B1 (en) * | 2020-03-13 | 2022-10-18 | Liberty Mutual Insurance Company | Modular software application configuration management |
US11461093B1 (en) | 2020-03-13 | 2022-10-04 | Liberty Mutual Insurance Company | Automated generation of release note data objects based at least in part on release-time configuration settings |
US11561517B2 (en) * | 2020-09-09 | 2023-01-24 | Rockwell Automation Technologies, Inc. | Industrial development hub vault and design tools |
US11294360B2 (en) | 2020-09-09 | 2022-04-05 | Rockwell Automation Technologies, Inc. | Industrial automation project code development guidance and analysis |
CN113391794A (en) * | 2021-07-08 | 2021-09-14 | 上海浦东发展银行股份有限公司 | System and method for developing collaboration service |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7134122B1 (en) * | 2001-05-31 | 2006-11-07 | Oracle International Corporation | One click deployment |
US20070250816A1 (en) * | 2006-04-19 | 2007-10-25 | International Business Machines Corporation | Process and method for using real-work statistics for automatically selecting appropriate developer to fix a problem |
US8079019B2 (en) * | 2007-11-21 | 2011-12-13 | Replay Solutions, Inc. | Advancing and rewinding a replayed program execution |
US8719776B2 (en) * | 2009-12-30 | 2014-05-06 | Foneclay, Inc. | System for creation and distribution of software applications usable on multiple mobile device platforms |
US8505003B2 (en) * | 2010-04-28 | 2013-08-06 | Novell, Inc. | System and method for upgrading kernels in cloud computing environments |
US8677315B1 (en) * | 2011-09-26 | 2014-03-18 | Amazon Technologies, Inc. | Continuous deployment system for software development |
US9268589B2 (en) * | 2011-12-09 | 2016-02-23 | Yahoo! Inc. | Method and system for deploying multiple distributed application stacks on a target machine |
US9612814B2 (en) * | 2012-02-02 | 2017-04-04 | Sungard Availability Services, Lp | Network topology-aware recovery automation |
US8843889B2 (en) * | 2012-04-04 | 2014-09-23 | International Business Machines Corporation | Managing application template artifacts in a networked computing environment |
US20150199197A1 (en) * | 2012-06-08 | 2015-07-16 | Stephane H. Maes | Version management for applications |
US20140149966A1 (en) * | 2012-11-27 | 2014-05-29 | Inadev Corporation | Application, build, integration, and release management system and method |
US10083027B2 (en) * | 2013-03-14 | 2018-09-25 | Solano Labs, Inc. | Systems and methods for managing software development environments |
US9134985B2 (en) * | 2013-08-13 | 2015-09-15 | Marck R. Robinson | Live data as a service and corresponding programming infrastructure |
US10289539B1 (en) * | 2013-09-18 | 2019-05-14 | Amazon Technologies, Inc. | Performance testing in a software deployment pipeline |
US9223684B2 (en) * | 2013-09-25 | 2015-12-29 | Microsoft Technology Licensing, Llc | Online application testing across browser environments |
US9274757B2 (en) * | 2013-12-19 | 2016-03-01 | Sap Se | Customer tailored release master plan generation for hybrid networked solutions |
EP3982256B1 (en) * | 2014-01-17 | 2023-11-01 | Fair Isaac Corporation | Cloud-based decision management platform |
US9952856B2 (en) * | 2014-08-01 | 2018-04-24 | Sap Se | Deploying mobile applications in a collaborative cloud environment |
US9842042B2 (en) * | 2014-09-25 | 2017-12-12 | Bank Of America Corporation | Datacenter management computing system |
US10182103B2 (en) * | 2014-10-16 | 2019-01-15 | Amazon Technologies, Inc. | On-demand delivery of applications to virtual desktops |
US9971733B1 (en) * | 2014-12-04 | 2018-05-15 | Altera Corporation | Scalable 2.5D interface circuitry |
US9996374B2 (en) * | 2015-06-16 | 2018-06-12 | Assured Information Security, Inc. | Deployment and installation of updates in a virtual environment |
US9910651B2 (en) * | 2015-08-31 | 2018-03-06 | Verizon Patent And Licensing Inc. | System for developing, testing, deploying, and managing applications in real-time |
US9846633B2 (en) * | 2015-10-06 | 2017-12-19 | Ca, Inc. | Generating tests for testing software applications |
WO2017074414A1 (en) * | 2015-10-30 | 2017-05-04 | Hewlett Packard Enterprise Development Lp | Software kit release management |
US10942790B2 (en) * | 2015-12-04 | 2021-03-09 | Vmware, Inc. | Automated-application-release-management subsystem that incorporates script tasks within application-release-management pipelines |
US9760366B2 (en) * | 2015-12-21 | 2017-09-12 | Amazon Technologies, Inc. | Maintaining deployment pipelines for a production computing service using live pipeline templates |
US9787779B2 (en) * | 2015-12-21 | 2017-10-10 | Amazon Technologies, Inc. | Analyzing deployment pipelines used to update production computing services using a live pipeline template process |
US10241775B2 (en) * | 2016-01-14 | 2019-03-26 | Ca, Inc. | Dynamic release baselines in a continuous delivery environment |
US9934118B2 (en) * | 2016-01-22 | 2018-04-03 | International Business Machines Corporation | Reducing SPQL tester time for the critical paths stress test |
US10114732B2 (en) * | 2016-01-29 | 2018-10-30 | Ca, Inc. | Debugging in-cloud distributed code in live load environment |
AU2017285429B2 (en) * | 2016-06-16 | 2022-03-31 | Virsec Systems, Inc. | Systems and methods for remediating memory corruption in a computer application |
US10353807B2 (en) * | 2016-08-26 | 2019-07-16 | Accenture Global Solutions Limited | Application development management |
US9870314B1 (en) * | 2016-12-12 | 2018-01-16 | Red Hat, Inc. | Update testing by build introspection |
US10228936B2 (en) * | 2016-12-16 | 2019-03-12 | EntIT Software, LLC | Software delivery pipeline management |
US20180307472A1 (en) * | 2017-04-20 | 2018-10-25 | Sap Se | Simultaneous deployment on cloud devices and on on-premise devices |
US10108533B1 (en) * | 2017-09-25 | 2018-10-23 | Bank Of America Corporation | Enterprise framework for efficient software deployment |
US10671368B2 (en) * | 2017-11-03 | 2020-06-02 | International Business Machines Corporation | Automatic creation of delivery pipelines |
-
2017
- 2017-11-06 US US15/804,223 patent/US10296302B1/en active Active
-
2019
- 2019-04-04 US US16/374,855 patent/US20190227778A1/en not_active Abandoned
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170132378A1 (en) * | 2015-07-29 | 2017-05-11 | Siemens Healthcare Gmbh | Devices, methods and computer readable mediums for flexible delivery and deployment of medical applications |
US10635779B2 (en) * | 2015-07-29 | 2020-04-28 | Siemens Healthcare Gmbh | Devices, methods and computer readable mediums for flexible delivery and deployment of medical applications |
US10489123B1 (en) * | 2018-06-12 | 2019-11-26 | Sap Se | Selectively enabling requests to backend executable application programs from a user interface in a multi-tier computer architecture |
US11347627B2 (en) * | 2019-08-07 | 2022-05-31 | Bank Of America Corporation | System for customization of software platforms for implementation in legacy systems |
US11226801B2 (en) * | 2019-10-30 | 2022-01-18 | Mastercard International Incorporated | System and methods for voice controlled automated computer code deployment |
US11809897B2 (en) * | 2020-11-30 | 2023-11-07 | Red Hat, Inc. | Chained triggering of builds in continuous integration environments |
Also Published As
Publication number | Publication date |
---|---|
US20190227778A1 (en) | 2019-07-25 |
US10296302B1 (en) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10296302B1 (en) | One-click deployment of industrial software | |
US20190138299A1 (en) | Software development lifecycle as a service | |
US11042362B2 (en) | Industrial programming development with a trained analytic model | |
US11080176B2 (en) | Testing framework for automation objects | |
EP3798758B1 (en) | System, method and medium for generating system project data | |
US20180189344A1 (en) | Onboarding portal for cloud platform | |
US20180292983A1 (en) | Methods and systems for assigning asset sensor tags to analytic input ports | |
US20180137431A1 (en) | Multimodal, small and big data, machine learing systems and processes | |
US11294360B2 (en) | Industrial automation project code development guidance and analysis | |
US20180165070A1 (en) | Service broker code generator | |
CN105359102A (en) | Advanced customer support services-advanced support cloud portal | |
US20180300333A1 (en) | Feature subset selection and ranking | |
US11226605B2 (en) | Provisioning of control layer applications for use in industrial control environments | |
US9753834B1 (en) | Certification process for cloud platform | |
EP4120113A1 (en) | Digital engineering secure remote access | |
US20180300637A1 (en) | Domain knowledge integration into data-driven feature discovery | |
US11556837B2 (en) | Cross-domain featuring engineering | |
US10810334B2 (en) | Application store test environment | |
EP3968110A1 (en) | Digital engineering on an industrial development hub | |
EP4296803A1 (en) | Device configuration object template with user interaction for device properties generator | |
US10719534B2 (en) | Rollup engine for internet of things | |
US10467124B2 (en) | Certification process for cloud platform | |
US11994842B2 (en) | Notifications from an industrial automation development environment | |
US11561517B2 (en) | Industrial development hub vault and design tools | |
EP4120067B1 (en) | Industrial automation control project conversion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: GENERAL ELECTRIC COMPANY, NEW YORK Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MA, HUIYUAN;HSIEH, WEI CHUNG;CHAN, SZE YIP;AND OTHERS;SIGNING DATES FROM 20171030 TO 20171103;REEL/FRAME:044040/0472 |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
AS | Assignment |
Owner name: GE DIGITAL HOLDINGS LLC, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GENERAL ELECTRIC COMPANY;REEL/FRAME:065612/0085 Effective date: 20231110 |