Method and system for adding target message
By analyzing application information and code elements on user computers and user interfaces, identifying and solving code quality problems, and presenting target messages, solving the problems of inefficiency and code quality in software platform customization and management, and achieving efficient and reliable software development and management.
Patent Information
- Application Number
- CN202411259685.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-09-29
- Filing Date
- 2024-09-10
- Publication Date
- 2025-04-01
AI Technical Summary
The prior art has problems of inefficiency, high cost and time consuming when customizing and managing software platforms, especially in the review and maintenance of code bases, which are difficult to effectively solve the code quality problems.
By establishing communications on user computers and user interfaces, analyzing application information and code elements to identify code quality issues and selecting and presenting target messages based on these issues to improve code quality and mitigate the risk of defects.
It realizes efficient management, operation and customization of software platforms in software development solutions, improves code quality, reduces defect risks, and improves the efficiency and reliability of software development.
Smart Images

Figure CN119739444A_ABST
Abstract
Description
[0001] Priority claim
[0002] This application is filed under applicable patent laws and / or rules under the Paris Convention to timely claim priority to and the benefit of prior-filed U.S. patent application serial number 18 / 478,324, filed on September 29, 2023, entitled “Methods and Systems for AddingTargeted Messages,” the entire contents of which are incorporated herein by reference as permitted by applicable law. Technical Field
[0003] Aspects of the present disclosure relate to targeted messages, and more particularly, to adding targeted messages to software development solutions. The present disclosure also encompasses applying this same approach to product and other technical documentation. Background Art
[0004] Today, more and more organizations utilize various software platforms to improve internal processes and / or customer experience. For example, a Supervisory Control and Data Acquisition (SCADA) system may be used to collect and analyze data to provide remote control capabilities for high-level processes across large geographic areas. Some known software platforms allow organizations to customize the platform by modifying and / or enhancing the default code base. However, such customization may be cumbersome, expensive, and / or time-consuming. Summary of the invention
[0005] The present disclosure enables organizations to efficiently and reliably manage, operate and / or customize software platforms. In one aspect, a method for presenting targeted messages is provided. The method includes: establishing communication with a user computer to obtain information about applications running on the user computer from the user computer; analyzing the information about the applications to identify opportunities to present messages to the user computer; in response to identifying opportunities to present messages, selecting one or more targeted messages; and providing the one or more targeted messages to the user computer for presentation at the user computer.
[0006] In another aspect, a method for presenting a target message is provided. The method includes: establishing communication with a user interface to obtain one or more representations of input received and output provided at the user interface; analyzing the one or more representations to identify one or more code elements; analyzing the one or more code elements to identify one or more code quality issues associated with the one or more code elements; in response to identifying the one or more code quality issues, selecting one or more target messages based at least in part on the one or more code quality issues; and providing the one or more target messages to the user interface.
[0007] In yet another aspect, a system is provided. The system includes: a processor; and a computer-readable memory, the computer-readable memory including one or more instructions, the one or more instructions being used to cause the processor to: establish communication with a user interface to obtain from the user interface one or more representations of input received at the user interface and output provided; analyze the one or more representations to identify one or more code elements; analyze the one or more code elements to identify one or more code quality issues associated with the one or more code elements; in response to identifying the one or more code quality issues, select one or more target messages based at least in part on the one or more code quality issues; and provide the one or more target messages to the user interface.
[0008] Other aspects and features of the present disclosure will be apparent in part and pointed out in part herein. This Summary is provided to introduce a selection of concepts in a simplified form, which are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used solely to assist in determining the scope of the claimed subject matter. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] Various aspects of the present disclosure are described in detail below with reference to the accompanying drawings, in which:
[0010] Figure 1 is a block diagram illustrating an example environment;
[0011] Figure 2 is a diagram used in applications such as Figure 1 A block diagram of an example system for presenting one or more targeted messages in an environment such as the environment illustrated in ;
[0012] Figure 3 The icon can be found in Figure 1 The environment shown in the figure and / or Figure 2 A block diagram of an example messaging engine utilized in the system illustrated in FIG.
[0013] Figure 4 is a diagram for use Figure 2 The system shown in and / or Figure 3 A flowchart of an example method for a messaging engine to present one or more target messages as shown in;
[0014] Figure 5 is a diagram for use Figure 2 The system shown in and / or Figure 3 A flowchart of another example method of a messaging engine to present one or more target messages as shown in; and
[0015] Figure 6 This diagram can be used to Figure 1 The environment shown in the figure, Figure 2 The system shown in the figure and / or Figure 3 A computer architecture diagram of a computing system that performs one or more computing operations in a messaging engine illustrated in FIG.
[0016] Corresponding reference characters indicate corresponding parts throughout the drawings. DETAILED DESCRIPTION
[0017] According to various examples of the present disclosure, one or more target messages are added to the software development solution to promote the improvement of code quality and / or mitigate the risk of defects in software development. Additionally or alternatively, the various aspects and features of the present disclosure can be applied to other documents or text content (e.g., technical documents, user manuals, engineering reports, medical and scientific writing, research papers, academic articles, marketing materials) to promote consistency, clarity and / or accuracy. The system and method described herein can be used to determine context and transmit useful information. For example, target messages can be generated and / or selected based on current conditions, code elements, usage information and / or profile information. In some examples, the presentation of one or more target messages can be initiated and / or realized in response to one or more triggering events or conditions. In this way, useful information can be transmitted or presented in real time (or near real time), thereby enabling wise decisions to be made on a timely basis.
[0018] Aspects of the present disclosure provide a computing system that performs one or more operations in an environment including multiple devices coupled to each other via a network (e.g., a local area network (LAN), a wide area network (WAN), the Internet). The systems and methods described herein may be implemented using computer programming or engineering techniques including computer software, firmware, hardware, or a combination or subset thereof. Unless otherwise defined, all technical and scientific terms used herein have the same meaning as those generally understood by one of ordinary skill in the art to which the present disclosure belongs. Although any methods and materials similar or equivalent to the methods and materials described herein may be used in the practice or testing of the present disclosure, some preferred methods and materials are described below.
[0019] As used herein, the term "code base" refers to a collection of source code used to build a software system, application, or software component, and the term "code element" refers to an element or component of a code base. A code base can be hierarchical in structure and include multiple code elements with corresponding subordinate code elements. For example, a Common Business Oriented Language (COBOL) code base can include the following hierarchical levels in descending order, i.e., from most general to most specific: (1) program, (2) section, (3) section, (4) paragraph, (5) sentence, and (6) statement.
[0020] As used herein, the term "quality profile" refers to a set of rules, conditions, and / or metrics for reviewing or evaluating a code base and / or code elements, and the term "code quality issue" refers to an indication that a given code base and / or code element fails to conform to or satisfy a quality profile or at least a portion of a quality profile.
[0021] Custom code bases can be cumbersome, expensive, and / or time consuming. Furthermore, given the scope and size of at least some code bases, it is difficult or impossible for human developers to actually review or evaluate the code base or changes to the code base. The impact of these challenges is that the code base is at high risk of being poorly developed, tested, and / or maintained, and therefore is likely to include one or more code quality issues. Furthermore, systems that contain or use such code bases are at risk of runtime errors, failures, system downtime, and even obsolescence.
[0022] The system and method disclosed herein provide a technical solution to such technical problems by adding target messages. For example, target messages can be used to promote code base development, maintenance, quality assurance and / or security risk mitigation. In some examples, target messages can be used to inform users of application status and / or prompt users to take actions. In addition, at least some target messages can be consumed by the application itself and used to notify the application of state changes and / or control application behavior. In this way, various aspects of the present disclosure can facilitate the management, operation and / or customization of one or more software platforms.
[0023] The technical effects of the systems and methods described herein are achieved by using a computing system configured to perform one or more of the following operations: (i) establish communication with a user computer to obtain information about an application running on the user computer; (ii) establish communication with a user interface to obtain representations of input received and output provided at the user interface; (iii) analyze information about the application to identify opportunities to present messages to the user computer; (iv) analyze input received and representations of output provided at the user interface to identify or detect code elements; (v) analyze code elements to identify code quality issues associated with code elements; (vi) determine whether the code elements comply with a style guide; (vii) generate or record usage information associated with the application and / or the user computer; (viii) obtain profile information associated with a user associated with the user computer and / or the user interface; (ix) select a target message; and (x) provide the target message to the user computer and / or the user interface.
[0024] Figure 1An example environment 100 is shown that includes a plurality of field devices 110. Each field device 110 may be and / or include a remote terminal unit (RTU) and / or a programmable logic controller (PLC) configured to receive or collect sensor information from one or more sensors 112. In some examples, the field devices 110 are distributed across a widely dispersed infrastructure to facilitate monitoring and / or controlling one or more industrial processes.
[0025] like Figure 1 As shown in FIG. 1 , the environment 100 may include one or more monitoring computers 120 for monitoring and / or controlling field devices 110 and / or sensors 112. For example, the monitoring computer 120 may receive or collect sensor information from the field devices 110 and analyze the sensor information to facilitate monitoring and / or controlling one or more industrial processes. In some examples, the monitoring computer 120 is configured to automatically operate and / or reconfigure one or more field devices 110 based on the sensor information.
[0026] The monitoring computer 120 is communicatively coupled to the field devices 110 via a network 130. In some examples, the network 130 is an industrial control system (ICS) network that connects the monitoring computer 120 to the field devices 110 for automation and process control applications. Figure 1 As shown in FIG. 1 , the network 130 may include one or more network devices 132 , such as firewalls, unidirectional gateways, and / or data diodes, to facilitate protecting the field devices 110 and / or the monitoring computer 120 from external threats.
[0027] Figure 2 An example system 200 is shown that can be used to monitor and / or control one or more devices (e.g., field device 110). System 200 can include one or more servers 210 and one or more user computers 220 coupled to servers 210. In some examples, system 200 is a distributed computing environment in which servers 210 and user computers 220 can operate on, communicate with, or be part of a network (e.g., network 130). For example, the functionality of server 210 can be provided by user computer 220 that performs one or more operations as part of or in communication with the network. In some examples, server 210 can host one or more services, applications, portals, and / or other resources for performing one or more operations and / or providing other functionality described herein.
[0028] like Figure 2 As shown in , the system 200 may include one or more applications 222 configured to perform a plurality of operations. For example, the application 222 may be used to monitor and / or control ( Figure 1One or more industrial processes in the environment 100 shown in FIG. Figure 2 One application 222 is shown running on user computer 220, but one of ordinary skill in the art will appreciate that any number of applications 222 may operate or run on any combination of computing devices that enables system 200 to function as described herein.
[0029] In some examples, a user 224 of the user computer 220 can customize the system 200, the server 210, the user computer 220, and / or the application 222 by designing and / or developing a code library. One or more code elements of the code library can be designed and / or developed, for example, to improve or reconfigure one or more industrial processes and / or otherwise allow for improved management of one or more devices. In order to facilitate code library development, maintenance, quality assurance, and / or security risk mitigation, the application 222 may include or use a user interface 232 and an application programming interface (API) 234, which is configured to receive input from the user 224 and / or provide output to the user, and the application programming interface (API) is configured to receive input from the user interface 232 and / or provide output to the user and / or one or more other software systems, applications, or software components. In some examples, the API 234 communicates with the user interface 232 and one or more other software systems, applications, or software components to facilitate identifying opportunities for presenting messages and generating and / or selecting one or more target messages 236 for presentation. For example, the API 234 can be used to monitor the current state or condition of the user computer 220, application 222, and / or user interface 232 for a triggering event or condition, and when a triggering event or condition is detected, present one or more targeted messages 236. In this way, the system 200 can be used to present useful information in real time (or near real time), thereby enabling the user computer 220, application 222, and / or user 224 to make informed decisions on a timely basis.
[0030] like Figure 2As shown in FIG. 1 , the server 210 and / or the user computer 220 may be coupled to a data warehouse 240 that is configured to store data associated with the server 210, the user computer 220, the application 222, the user 224, the user interface 232, and / or the API 234. For example, the user interface 232 and / or the API 234 may accumulate time-stamped data and events in the data warehouse 240. In some examples, the functionality of the data warehouse 240 is provided by the server 210 and / or the user computer 220 as part of a network or in communication with a network to perform one or more operations. For example, the data warehouse 240 may host or store data structures and / or algorithms used by the application 222, the user interface 232, and / or the API 234. In some examples, the data warehouse 240 may host or store configuration data that enables the server 210 and / or the user computer 220 to add one or more targeted messages to the software development solution and / or monitor, operate, and / or reconfigure one or more field devices 110 ( Figure 1 Additionally or alternatively, data warehouse 240 may host or store any other type of data that enables system 200 to function as described herein.
[0031] Figure 3 An example messaging engine 300 is shown that can be used to improve code quality and / or mitigate defect risks in software development. The messaging engine 300 can also be applied to other documents or textual content such as documents developed as manuals that describe the operation of a solution to a customer (e.g., manuals or marketing materials), or to internal documents used to develop and support a solution.
[0032] In some examples, the messaging engine 300 includes a context analyzer 310 configured to determine a context 312 and a message generator 320 configured to determine content 322 (e.g., a target message 236). The messaging engine 300 can be used in a computing system (e.g., system 200), for example, to determine the context 312 for identifying an opportunity to present a message and / or to determine content 322 for presenting a target message (e.g., target message 236) to a user (e.g., user 224) and / or a system (e.g., user computer 220, application 222). Alternatively, the messaging engine 300 can be used for any other purpose that allows or enables the messaging engine 300 to function as described herein.
[0033] Context analyzer 310 may determine context 312, for example, by receiving or obtaining information 332 from user computer 220, application 222, and / or user interface 232 and analyzing information 332 to determine a current state or condition of user computer 220, application 222, and / or user interface 232. In some examples, information 332 includes information in user interface 232 ( Figure 2 One or more representations of input received and / or output provided at .
[0034] To facilitate determining the current state or condition, context analyzer 310 can process information 332 into multiple components (e.g., text, shapes, edges) from which meaningful information can be extracted. In this way, text can be monitored to identify opportunities to present messages to the client regarding the quality, character, and / or style of the document or text content.
[0035] In the case where the current state or condition includes or indicates a code base or at least one code element of the code base, the context analyzer 310 can analyze one or more code elements to identify or detect code quality issues such as code errors, code vulnerabilities, and / or code smells. Code errors can refer to defects or bad coding practices that can cause or produce code reliability or performance issues. Code vulnerabilities can refer to defects or bad coding practices that can allow an application (e.g., application 222) or data to be inappropriately accessed or utilized by a third party. Code smells can refer to qualities or characteristics in a code element that indicate bad software development practices, which may hinder development and / or increase the likelihood of future code errors or code vulnerabilities.
[0036] In some examples, the context analyzer 310 can identify or detect code quality problems by comparing the code base and / or code elements with the style guide 334 that defines one or more quality profiles. For example, when the context analyzer 310 determines that at least one code element does not meet the style guide 334, the context analyzer 310 can identify or detect code quality problems. The style guide 334 may include one or more programming standards, conventions, and / or best practices that enable the code base to be easily or efficiently reviewed, analyzed, and / or maintained. In this way, the style guide 334 can be used to ensure consistent design and / or promote informed design decisions. In other examples, the context analyzer 310 can identify or detect text quality problems by comparing documents and / or text content with the style guide 334, which includes one or more writing standards, conventions, and / or best practices that enable documents to be easily or efficiently reviewed, analyzed, and / or maintained.
[0037] In some examples, the context analyzer 310 may also consider the severity of the code quality issues when determining the context 312. The severity of the code quality issues may be indicated by the following levels: minor, major, severe, and fatal (blocker). Minor code quality issues are likely to cause or have adverse effects when the code base is put into production and / or use. Major code quality issues are very likely to cause or have adverse effects when the code base is put into production and / or use. Severe code quality issues are likely to cause or have significant adverse effects when the code base is put into production and / or use. Fatal code quality issues are very likely to cause or have significant adverse effects when the code base is put into production and / or use.
[0038] In some examples, the context analyzer 310 can collect or record context 312 and / or information 332 to generate or determine usage information 336 that can be used to determine the current context 312. For example, the context analyzer 310 can be configured to analyze the recorded context 312 and / or information 332 to determine the usage information 336 indicating one or more patterns or trends in the recorded context 312 and / or information 332. In this way, historical data (e.g., recorded context 312 and / or information 332) can be efficiently used to facilitate determining the current context 312. In some examples, the usage information 336 indicates a propensity to engage in or exhibit behavior (e.g., generate code quality issues). Additionally or alternatively, the context analyzer 310 can determine the current context 312 based at least in part on profile information 338 such as user roles, user permissions, and user preferences.
[0039] In some examples, message generator 320 receives or obtains context 312 from context analyzer 310 and analyzes context 312 to determine content 322 based on context 312. For example, content 322 may be determined to be relevant and / or useful based on the current state or condition of user computer 220, application 222, and / or user interface 232, as well as usage information 336 and / or profile information 338.
[0040] In some examples, the message generator 320 can provide or transmit content 322 to the user computer 220, the application 222, and / or the user interface 232 for presentation at the user interface 232. Such content 322 can promote improving code quality and / or mitigating the possibility or impact of code quality problems by notifying the user 224 of the application state and / or by prompting the user 224 to take action (e.g., solve the code quality problem) based on the content 322. Additionally or alternatively, the message generator 320 can provide or transmit content 322 to the user computer 220, the application 222, and / or the user interface 232 for consumption by the user computer 220, the application 222, and / or the user interface 232. Such content 322 can improve code quality and / or mitigate the possibility or impact of code quality problems by automatically controlling application behavior or taking action (e.g., solving the code quality problem) based on the content 322.
[0041] Figure 4 A method for presenting one or more target messages 236 ( Figure 2 4. The method 400 may be implemented, for example, by a server (e.g., server 210) in a client / server system in which the server performs one or more operations for a client (e.g., user computer 220). In some examples, the server establishes communication with the client at operation 410 to obtain information (e.g., information 332) from the client about a software development solution running on the client.
[0042] The server may analyze the information obtained from the client at operation 420 to identify an opportunity to present a message to the client. For example, a user interface of a software development solution running on the client (e.g., user interface 232) may be analyzed to detect or identify one or more code elements, and the code elements may be analyzed to detect or identify one or more code quality issues associated with the code elements. In this way, an opportunity to present a message to the client may be identified based at least in part on the code quality issues. In some examples, when a code element does not conform to style guide 334 ( Figure 3 ), the server can recognize an opportunity to present a message to the client.
[0043] In some examples, the server may collect or record historical data associated with the software development solution, the client, and / or a user of the client (eg, user 224), and analyze the historical data to generate or determine usage information 336 ( Figure 3), the server may use the usage information to identify opportunities to present messages based at least in part on usage information 336. Additionally or alternatively, the server may obtain profile information associated with the user (e.g., profile information 338) and analyze the profile information to identify opportunities to present messages based at least in part on the profile information.
[0044] In response to identifying an opportunity to present a message, the server may generate and / or select one or more target messages (e.g., target message 236, content 322) at operation 430. For example, the target message may be generated and / or selected based on the current state or condition of the user interface, software development solution, and / or client. In some examples, when a code element does not conform to style guide 334 ( Figure 3 336 and / or profile information 338.
[0045] At operation 440, the server may provide the target message to the client. In some examples, the server provides the target message for presentation to the user at the user interface. Such a target message may include instructions on how to fix the code quality problem. Additionally or alternatively, the server may provide the target message for consumption by the client, software development solution, and / or user interface to enable the client, software development solution, and / or user interface to automatically perform one or more operations.
[0046] Figure 5 A method for presenting one or more target messages 236 ( Figure 2 2 (shown in FIG. 2 ). The method 500 may be implemented, for example, by an application programming interface (e.g., API 234) of a user computer (e.g., user computer 220) and / or an application (e.g., application 222) running on the user computer. In some examples, the API is used to establish communication with a user interface (e.g., user interface 232) at operation 510 to obtain from the user interface one or more representations (e.g., information 332) of input received at the user interface and / or output provided.
[0047] The API is used to analyze the representation obtained from the user interface to detect or identify one or more code elements at operation 520, and to analyze the code elements to detect or identify one or more code quality issues associated with the code elements at operation 530. In some examples, when a code element does not conform to the style guide 334 ( Figure 3 ), the API can be used to identify code quality issues.
[0048] In some examples, the API can be used to collect or record historical data associated with an application, a user computer, and / or a user of the user computer (eg, user 224), and analyze the historical data to generate or determine usage information 336 ( Figure 3 ), the usage information may be used to identify code quality issues based at least in part on usage information 336. Additionally or alternatively, the API may be used to obtain profile information associated with the user (e.g., profile information 338), and analyze the profile information to identify code quality issues based at least in part on the profile information.
[0049] In response to identifying the code quality issues, the API can be used to generate and / or select one or more target messages (e.g., target message 236, content 322) at operation 540. For example, the target message can be generated and / or selected based at least in part on the code quality issues. In some examples, when one or more code elements do not conform to the style guide 334 ( Figure 3 ) and / or is otherwise determined to include one or more code quality issues, the API can be used to generate and / or select a target message. Additionally or alternatively, the API can be used to generate and / or select a target message based at least in part on usage information 336 and / or profile information 338.
[0050] The API may be used to provide a target message to a user interface for presentation to a user at operation 550. Such a target message may include instructions on how to fix the code quality issue. Additionally or alternatively, the API may be used to provide a target message for consumption by a user computer, application, and / or user interface to enable the user computer, application, and / or user interface to automatically perform one or more operations.
[0051] Figure 6 An example computing system 600 (e.g., monitoring computer 120, server 210, user computer 220, messaging engine 300) configured to perform one or more computing operations described herein is shown. In some examples, computing system 600 includes processor 610, system memory 620, and bus 630 that couples various system components including system memory 620 to processor 610.
[0052] The processor 610 is configured to perform general computing functions and process data and instructions to perform one or more operations and / or provide other functions described herein. For example, the processor 610 can access the system memory 620 to read data and instructions from the system memory 620 and / or write data and instructions to the system memory 620 for executing one or more computer executable instructions. In this way, the processor 610 can be programmed to perform any aspect of the software components described herein, including for implementing the application 222 ( Figure 2 ), user interface 232 ( Figure 2 ), API 234 ( Figure 2 ), context analyzer 310 ( Figure 3 ) and / or the message generator 320 ( Figure 3 In some examples, processor 610 may be or include any number of processing units, including a central processing unit, a graphics processing unit, a field programmable gate array (FPGA), a digital signal processor (DSP), or other hardware logic components, including but not limited to application specific integrated circuits (ASICs), application specific standard products (ASSPs), systems on chips (SOCs), complex programmable logic devices (CPLDs), etc.
[0053] The system memory 620 includes any combination of computer-readable media that can be accessed by the processor 610. In some examples, the system memory 620 includes a read-only memory (ROM) 632 that stores instructions for performing basic functions and a random access memory (RAM) 634 that temporarily stores data and instructions for actively used programs. For example, the RAM 634 can be used to host or store the target message 236 ( Figure 2 ), context 312 ( Figure 3 ), content 322 ( Figure 3 ), information 332 ( Figure 3 ), Style Guide 334 ( Figure 3 ), usage information 336 ( Figure 3 ) and / or profile information 338 ( Figure 3 ) and for implementing application 222 ( Figure 2 ), user interface 232 ( Figure 2 ), API 234 ( Figure 2 ), context analyzer 310 ( Figure 3 ) and / or the message generator 320 ( Figure 3 One or more software components of the system.
[0054] Computer-readable media include both communication media and computer storage media. Communication media typically implement computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in a manner that encodes information into the signal. By way of example, and not limitation, communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency, and infrared media.
[0055] In contrast, computer storage media include media in a tangible form that can store information such as computer-readable instructions, data structures, program modules or other data. By way of example, and not limitation, computer storage media include ROM 632, RAM 634, hard disk drives (HDD), solid-state drives (SSD), external hard drives, flash drives, optical storage media (e.g., compact disks (CDs), digital versatile disks (DVDs)), and magnetic storage media (e.g., tape drives). For purposes of this disclosure, computer storage media are mutually exclusive of communication media and do not include media in waves, signals, and other transient or intangible forms.
[0056] It should be understood that the software components described herein, when loaded into the processor 610 and executed, can convert the processor 610 and the entire computing system 600 from a general purpose computing system to a special purpose computing system customized to facilitate the functionality described herein. More specifically, the computer executable instructions contained within the software components described herein convert the processor 610 to operate or function as a finite state machine by specifying how the processor 610 transitions between states, thereby converting the transistors or other discrete circuit elements that make up the processor 610.
[0057] Encoding the software components described herein may also convert the physical structure of the computer-readable medium described herein. In different implementations of the present disclosure, the specific conversion of the physical structure may depend on various factors. Examples of such factors may include, but are not limited to, the technology used to implement the computer-readable medium, whether the computer-readable medium is characterized as a primary storage device or an auxiliary storage device, etc. For example, if the computer-readable medium is implemented as a semiconductor-based memory, the software disclosed herein may be encoded on the computer-readable medium by converting the physical state of transistors, capacitors, or other discrete circuit elements that constitute the semiconductor-based memory. The software may also convert the physical state of such components to store data thereon.
[0058] As another example, the computer readable medium disclosed herein can be implemented using magnetic technology or optical technology. In such an implementation, when software is encoded therein, the software proposed herein can convert the physical state of the magnetic medium or optical medium. These conversions can include changing the magnetic properties of a specific location in a given magnetic medium. These conversions can also include changing the physical characteristics or properties of a specific location in a given optical medium to change the optical properties of those locations. Without departing from the scope and spirit of this specification, other conversions of physical media are possible, wherein the aforementioned examples are provided only to facilitate this discussion.
[0059] In some examples, the computing system 600 includes a mass storage device 640 (e.g., data repository 240) coupled to the processor 610 for hosting or storing data and instructions, such as an operating system 642, one or more programs 644 (e.g., applications 222, user interface 232, API 234, context analyzer 310, message generator 320), and / or data 646 (e.g., target message 236, context 312, content 322, information 332, style guide 334, usage information 336, profile information 338). One of ordinary skill in the art will appreciate that a copy of at least some of the data and / or instructions hosted or stored in the mass storage device 640 may be at least temporarily stored in the system memory 620 to enable the computing system 260 to function as described herein.
[0060] like Figure 6 As shown in , the computing system 600 can be connected to a network 650 (e.g., network 130) via a network interface unit 652 connected to the bus 630. In this way, the computing system 600 can operate in a networked environment in which the computing system 600 can use one or more remote devices (not shown) to host or store at least some data and / or execute at least some instructions. Computer communication between computing systems can be network transmission, file transmission, applet transmission, email, hypertext transfer protocol (HTTP) transmission, etc.
[0061] In some examples, computing system 600 may include one or more input / output (I / O) controllers 660 that facilitate communication and data transfer between processor 610 and one or more I / O devices (not shown) configured to provide input and / or output capabilities. For example, a user (e.g., user 224) may input commands and information into computing system 600 using one or more input devices such as a keyboard, a pointing device (e.g., a mouse, a trackball, a touchpad, a stylus), a microphone, a camera, a scanner, an accelerometer, etc. Additionally or alternatively, computing system 600 may use one or more output devices such as a monitor, a projector, a printer, a speaker, an actuator, etc. to present various forms of information such as text, images, audio, video, alarms, etc. In some examples, the output device may be integrated with the input device (e.g., in a touch screen panel or in a controller including a vibration component).
[0062] Although some examples are illustrated and described herein with reference to the computing system 600, aspects of the present disclosure are operable with any computing system that can execute computer-executable instructions to implement operations and functions associated with the computing system 600, including the monitoring computer 120 ( Figure 1 ), server 210 ( Figure 2 ), user computer 220 ( Figure 2 ) and / or the messaging engine 300 ( Figure 3 It is also contemplated that the computing system 600 may not include Figure 6 All components shown may include Figure 6 Other components not explicitly shown in the drawings or may be used in conjunction with Figure 6 The computing system 600 should not be interpreted as having a completely different architecture than the architecture shown in FIG. Figure 6 The computing system 600 is only one example of a computing and networking environment for performing one or more computing operations and is not intended to suggest any limitation as to the scope of use or functionality of the present disclosure.
[0063] Example methods and systems for presenting targeted messages are described herein. The examples described herein provide useful information in real time (or near real time) to facilitate managing, operating, and / or customizing a software platform in an efficient and reliable manner. For example, an API can be used to monitor the current operation and / or state of a user's computer, and when a triggering event or condition is detected, one or more targeted messages are pushed to a window of an application running on the user's computer. When a user is seen viewing the firmware version installed on the device, the window can display information about the current approved firmware version as a reminder to check whether an upgrade is needed or desired. In view of the above, it will be seen that several advantages of various aspects of the present disclosure are achieved and other favorable results are obtained.
[0064] Although described in conjunction with an example computing system environment, examples of the present disclosure can be implemented using many other general or special computing system environments, configurations, or devices. Examples of known computing systems, environments, and / or configurations that may be suitable for use with aspects of the present disclosure include, but are not limited to, server computers, desktop computers, laptop computers, tablet computers, mobile devices, wearable or accessory form factor communication devices, microprocessor-based systems, multiprocessor systems, programmable consumer electronics, kiosks, desktop devices, industrial control devices, minicomputers, mainframe computers, network computers, distributed computing environments including any of the above systems or devices, and the like.
[0065] Examples of the present disclosure may be described in the general context of computer-executable instructions (such as program modules) executed by one or more computers or other devices in software, firmware, hardware, or a combination thereof. Computer-executable instructions may be organized into one or more computer-executable modules or components. Typically, program modules include, but are not limited to, routines, objects, components, and data structures that perform specific tasks or implement specific abstract data types. Aspects of the present disclosure may be implemented using any number and organization of such modules or components. For example, aspects of the present disclosure are not limited to specific computer-executable instructions or specific components or modules illustrated in the accompanying drawings and described herein. Other examples of the present disclosure may include different computer-executable instructions or components having more or less functionality than illustrated and described herein.
[0066] In some examples, the operations illustrated in the figures may be implemented as software instructions encoded on a computer-readable medium, implemented with hardware programmed or designed to perform the operations, or both. For example, aspects of the present disclosure may be implemented as a system on a chip, or other circuit comprising a plurality of interconnected conductive elements.
[0067] One or more elements of an implementation of a device as described herein may be used to perform tasks not directly related to the operation of the device or to perform other instruction sets, such as tasks related to another operation of the device or system in which the device is embedded. One or more elements of such an implementation of a device may also have a common structure (e.g., a processor for executing portions of code corresponding to different elements at different times, an instruction set executed to perform tasks corresponding to different elements at different times, or an arrangement of electronic and / or optical devices that perform operations for different elements at different times).
[0068] Unless otherwise specified, the order in which the operations in the examples of the present disclosure illustrated and described herein are performed or executed is not required. That is, unless otherwise specified, the operations may be performed in any order, and the examples of the present disclosure may include additional or fewer operations than the operations disclosed herein. For example, it is contemplated that performing or executing a particular operation before, simultaneously with, or after another operation is within the scope of various aspects of the present disclosure.
[0069] The examples illustrated and described herein, as well as examples not specifically described herein but within the scope of aspects of the present disclosure, constitute example means for presenting a targeted message. For example, Figure 1-Figure 3 and Figure 6 The components shown in the figure are programmed, coded or configured to perform Figure 4 The operations illustrated in the foregoing may constitute at least example means (e.g., server 210, context analyzer 310) for establishing communication with a user computer to obtain information about a software development solution, example means (e.g., server 210, context analyzer 310) for analyzing the information about the software development solution to identify an opportunity to present a message to the user computer, example means (e.g., server 210, message generator 320) for selecting one or more target messages, and example means (e.g., server 210, message generator 320) for providing the one or more target messages to the user computer for presentation at the user computer. Additionally or alternatively, Figure 1-Figure 3 and Figure 6 The components shown in the figure are programmed, coded or configured to perform Figure 5The operations illustrated in the foregoing at least constitute example means (e.g., monitoring computer 120, user computer 220, application 222, API 234, server 210, context analyzer 310) for establishing communication with a user interface to obtain one or more representations of input received at the user interface and output provided, example means (e.g., monitoring computer 120, user computer 220, application 222, API 234, server 210, context analyzer 310) for analyzing the one or more representations to identify one or more code elements, example means (e.g., monitoring computer 120, user computer 220, application 222, API 234, server 210, context analyzer 310) for analyzing the one or more code elements to identify one or more code quality issues associated with the one or more code elements, example means (e.g., monitoring computer 120, user computer 220, application 222, API 234, server 210, context analyzer 310) for selecting one or more target messages based at least in part on the one or more code quality issues. 234, server 210, message generator 320), and / or example means for providing one or more target messages to a user interface (e.g., monitoring computer 120, user computer 220, application 222, API 234, server 210, message generator 320).
[0070] When introducing elements of aspects of the present disclosure or examples thereof, the articles "a," "an," "the," and "said" are intended to mean that there are one or more of the elements. In addition, references to "embodiments" or "examples" in the present disclosure are not intended to be interpreted as excluding the existence of additional embodiments or examples that also contain the recited features. The terms "comprising," "including," and "having" are intended to be inclusive and mean that there may be additional elements in addition to the listed elements. The phrase "one or more of: A, B, and C" means "at least one of A and / or at least one of B and / or at least one of C."
[0071] The term "determining" encompasses a wide variety of actions, and thus, "determining" may include calculating, computing, processing, deriving, investigating, looking up (e.g., looking up in a table, a database, or another data structure), ascertaining, etc. Additionally, "determining" may include receiving (e.g., receiving information), accessing (e.g., accessing data in a memory), etc. Additionally, "determining" may include resolving, selecting, choosing, establishing, etc.
[0072] In this specification, reference signs are sometimes used in conjunction with various terms. Where a term is used in conjunction with a reference sign, this may be meant to refer to a specific element shown in one or more of the accompanying drawings. Where a term is used without a reference sign, this may be meant to refer generally to the term without limitation to any particular drawing.
[0073] Having described various aspects of the disclosure in detail, it will be apparent that modifications and variations are possible without departing from the scope of various aspects of the disclosure as defined in the appended claims. As various changes can be made in the above constructions, products and methods without departing from the scope of various aspects of the disclosure, it is intended that all matters contained in the above description and shown in the accompanying drawings shall be interpreted as illustrative and not restrictive.
[0074] Although aspects of the present disclosure have been described in terms of various examples and their associated operations, those skilled in the art will appreciate that combinations of operations from any number of the different examples are also within the scope of aspects of the present disclosure.
[0075] Therefore, optionally in combination with one or more of the above-mentioned features of the present invention, the present invention can be described as follows: a method (400) for presenting a target message, comprising: establishing communication with a user computer (220) to obtain information (332) about an application (222) running on the user computer from the user computer; analyzing the information about the application to identify an opportunity to present a message to the user computer; in response to identifying an opportunity to present a message, selecting one or more target messages (236); and providing the one or more target messages to the user computer for presentation at the user computer.
Claims
1. A method (400) for presenting a target message, the method comprising: establishing communication with a user computer (220) to obtain information (332) from the user computer about an application (222) running on the user computer; analyzing information about the application to identify an opportunity to present a message to the user computer; In response to identifying an opportunity to present the message, selecting one or more target messages (236); as well as The one or more targeted messages are provided to the user computer for presentation at the user computer.
2. The method according to claim 1, wherein: Information analyzed about the application includes: Detecting text content; and The textual content is analyzed to identify one or more quality issues associated with the textual content, wherein an opportunity to present the message is identified based at least in part on the one or more quality issues.
3. The method according to claim 1, wherein: Information analyzed about the application includes: Detecting text content; and The textual content is analyzed to identify one or more quality issues associated with the textual content, wherein the one or more target messages are selected based at least in part on the one or more quality issues.
4. The method according to any one of claims 1 to 3, wherein: Information analyzed about the application includes: detecting one or more code elements; as well as The one or more code elements are analyzed to identify one or more code quality issues associated with the one or more code elements, wherein an opportunity to present the message is identified based at least in part on the one or more code quality issues.
5. The method according to any one of claims 1 to 3, wherein: Information analyzed about the application includes: detecting one or more code elements; as well as The one or more code elements are analyzed to identify one or more code quality issues associated with the one or more code elements, wherein the one or more target messages are selected based at least in part on the one or more code quality issues.
6. The method according to any one of claims 4 to 5, further comprising determining whether the one or more code elements comply with a style guide, wherein: The one or more code quality issues are identified under the condition that the one or more code elements do not comply with the style guide.
7. The method of any one of claims 1 to 6, further comprising recording usage information (336) associated with one or more of the application or the user computer, wherein: Analyzing the information about the application includes analyzing the usage information along with the information about the application to identify an opportunity to present the message based at least in part on the usage information.
8. The method of any one of claims 1 to 6, further comprising recording usage information (336) associated with one or more of the application or the user computer, wherein: Selecting the one or more target messages includes analyzing the usage information to select the one or more target messages based at least in part on the usage information.
9. The method of any one of claims 1 to 8, further comprising obtaining profile information (338) associated with a user (224) of the user computer, wherein: Analyzing the information about the application includes analyzing the profile information along with the information about the application to identify an opportunity to present the message based at least in part on the profile information.
10. The method of any one of claims 1 to 8, further comprising obtaining profile information (338) associated with a user (224) of the user computer, wherein Selecting the one or more target messages includes analyzing the profile information to select the one or more target messages based at least in part on the profile information.
11. A system (600), comprising: Processor (610); as well as A computer readable memory (620) comprising one or more instructions for causing the processor to: establishing communication with a user computer (220) to obtain information (332) from the user computer about an application (222) running on the user computer; analyzing information about the application to identify an opportunity to present a message to the user computer; In response to identifying an opportunity to present the message, selecting one or more target messages (236); as well as The one or more targeted messages are provided to the user computer for presentation at the user computer.
12. The system according to claim 11, wherein: The processor is also configured to detect text content, and analyze the text content to identify one or more quality issues associated with the text content, wherein an opportunity to present the message is identified based at least in part on the one or more quality issues, and wherein the one or more target messages are selected based at least in part on the one or more quality issues.
13. A system according to any one of claims 11 to 12, wherein: The processor is further configured to detect one or more code elements, and analyze the one or more code elements to identify one or more code quality issues associated with the one or more code elements, wherein an opportunity to present the message is identified based at least in part on the one or more code quality issues, and wherein the one or more target messages are selected based at least in part on the one or more code quality issues.
14. A system according to any one of claims 11 to 13, wherein: The processor is also configured to record usage information (336) associated with one or more of the application or the user computer, and analyze the usage information together with information about the application to identify opportunities to present the message and select the one or more target messages based at least in part on the usage information.
15. A system according to any one of claims 11 to 14, wherein: The processor is also configured to obtain profile information (338) associated with a user (224) of the user computer and analyze the profile information together with information about the application to identify an opportunity to present the message based at least in part on the profile information and to select the one or more target messages based at least in part on the profile information.
16. A method (500) for presenting a target message, the method comprising: establishing communications with a user interface (232) to obtain one or more representations of input received and output provided at the user interface; analyzing the one or more representations to identify one or more code elements; analyzing the one or more code elements to identify one or more code quality issues associated with the one or more code elements; In response to identifying the one or more code quality issues, selecting one or more target messages based at least in part on the one or more code quality issues (236); as well as The one or more targeted messages are provided to the user interface.
17. The method according to claim 16, wherein: Analyzing the one or more code elements includes determining whether the one or more code elements comply with a style guide (334), wherein the one or more code quality issues are identified if the one or more code elements do not comply with the style guide.
18. The method according to any one of claims 16 to 17, wherein: Analyzing the one or more representations includes generating usage information (336), wherein the one or more code quality issues are identified based at least in part on the usage information, and wherein the one or more target messages are selected based at least in part on the usage information.
19. The method of any one of claims 16 to 18, further comprising obtaining profile information (338) associated with a user associated with the user interface, wherein The one or more code quality issues are identified based at least in part on the profile information, and wherein the one or more target messages are selected based at least in part on the profile information.
20. A system (600), comprising: Processor (610); as well as A computer readable memory (620) comprising one or more instructions for causing the processor to: establishing communication with a user interface (232) to obtain from the user interface one or more representations of input received and output provided at the user interface; analyzing the one or more representations to identify one or more code elements; analyzing the one or more code elements to identify one or more code quality issues associated with the one or more code elements; In response to identifying the one or more code quality issues, selecting one or more target messages based at least in part on the one or more code quality issues (236); as well as The one or more targeted messages are provided to the user interface.
21. The system of claim 20, wherein: The one or more instructions further cause the processor to determine whether the one or more code elements comply with a style guide (334), wherein the one or more code quality issues are identified if the one or more code elements do not comply with the style guide.
22. A system according to any one of claims 20 to 21, wherein: The one or more instructions also cause the processor to generate usage information (336), wherein the one or more code quality issues are identified based at least in part on the usage information, and wherein the one or more target messages are selected based at least in part on the usage information.
23. A system according to any one of claims 20 to 22, wherein: The one or more instructions also cause the processor to obtain profile information associated with a user associated with the user interface (338), wherein the one or more code quality issues are identified based at least in part on the profile information, and wherein the one or more target messages are selected based at least in part on the profile information.