Method, system, and computer program product for calculating developer time

By distinguishing the developer's active time from the application execution time during the software development process, and using machine learning algorithms and application programming interfaces to collect data, the problem of inaccurate efficiency monitoring in the existing technology is solved, and the accuracy of accurate calculation of the developer's active time and work item scheduling is achieved.

CN115812195BActive Publication Date: 2025-08-26INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202180048758.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-07-30
Filing Date
2021-07-28
Publication Date
2025-08-26
Estimated Expiration
2041-07-28

AI Technical Summary

Technical Problem

The existing time tracking system cannot effectively distinguish the time when developers actively participate in software development applications and when the application performs automatic functions, resulting in inaccurate efficiency monitoring.

Method used

The efficiency calculation unit distinguishes the developer's active time and the application execution time, uses the application programming interface to collect activity data from different software development applications, combines machine learning algorithms to identify the relationship between input signals and events, calculates the active time and schedules work items.

Benefits of technology

It realizes accurate monitoring of developers' active time, and improves the accuracy of efficiency evaluation of the software development process and work item scheduling.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115812195B_ABST
    Figure CN115812195B_ABST
Patent Text Reader

Abstract

The present invention relates to a computer-implemented method, a computing system, and a computer program product for calculating active time associated with a first work item on a software application. The computer-implemented method includes retrieving activity data and a plurality of input signals generated by a peripheral device from a software development application. The method also includes determining a causal relationship between the input data and any event described by the activity data. In response to determining the causal relationship, a first time interval between an initial signal and a final signal in the plurality of input signals is calculated. The first time interval is compared to an estimated time interval. A schedule for a second work item is determined based on the comparison, wherein the first time interval is associated with the first work item.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] The present invention relates generally to programmable computing systems and, more particularly, to computing systems that aggregate developer activity data to calculate time during a development process.

[0002] A computing system is used to track the time employees spend performing individual activities to complete an overall task. The goal of monitoring employee time is to improve effectiveness, efficiency, and / or productivity in completing the overall task. The computer system may receive user-entered time data regarding task descriptions and the time spent completing the task. The ability to determine active time spent on work items is important for providing insight into the effectiveness of the software development process. Summary of the Invention

[0003] Embodiments of the present invention relate to a computer-implemented method, computing system, and computer program product for calculating active time for a first work item on a software application. A non-limiting example of the computer-implemented method includes retrieving activity data and a plurality of input signals generated by a peripheral device from a software development application. The method also includes determining a causal relationship between the input data and any events described by the activity data. In response to determining the causal relationship, a first time interval between an initial signal and a final signal in the plurality of input signals is calculated. The first time interval is compared to an estimated time interval. A schedule for a second work item is determined based on the comparison, wherein the first time interval is associated with the first work item.

[0004] Other embodiments of the present invention implement the features of the above-described methods in computer systems and computer program products.

[0005] Additional technical features and advantages are achieved through the technology of the present invention. Embodiments and aspects of the present invention are described in detail herein, and these embodiments and aspects are considered to be part of the claimed subject matter. For a better understanding, reference is made to the detailed description and the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0006] The details of the exclusive rights claimed herein are particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other features and advantages of the embodiments of the present invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings, in which:

[0007] Figure 1 A block diagram illustrating components of a system for monitoring a developer's work activity according to one or more embodiments of the present invention;

[0008] Figure 2 A flowchart illustrating a process for determining active work performed by a developer according to one or more embodiments of the present invention;

[0009] Figure 3 A flowchart illustrating a process for scheduling work items according to one or more embodiments of the present invention;

[0010] Figure 4 Depicting a cloud computing environment according to one or more embodiments of the present invention;

[0011] Figure 5 depicts an abstract model layer according to one or more embodiments of the present invention; and

[0012] Figure 6 A block diagram of a computer system useful for implementing one or more embodiments of the invention is depicted.

[0013] The figures depicted herein are illustrative. Many variations of the figures or operations described herein are possible without departing from the present invention. For example, actions may be performed in a different order, or actions may be added, deleted, or modified. Furthermore, the term "coupled" and its variations describe the presence of a communication path between two elements and do not imply a direct connection between the elements without intervening elements / connections between them. All such variations are considered part of this specification. DETAILED DESCRIPTION

[0014] One or more embodiments of the present invention provide a computing system that monitors the total time a developer spends using a software development application to complete a first work item. The system separates the time the developer is actively engaged in the software development application from the time the application is performing automated functions. The system calculates the developer's efficiency based on the time spent actively engaging with the software development application to complete the first work item.

[0015] In the modern software development process, software companies establish pipelines to manage the tasks necessary to code, test, and deploy software. A pipeline is a predefined, automated, and repeatable process that incorporates work performed on different software development applications. Companies also use time tracking software to help track developers' involvement in software development applications to complete work projects. Time tracking software can rely on time entries from developers. However, honor system time entries are ineffective at accurately monitoring the time developers are actively involved in software development applications. Conventional time tracking systems do not distinguish between the time a developer is actively using a software development application and the time the software development application is performing automated functions.

[0016] One or more embodiments of the present invention address one or more of the aforementioned shortcomings by providing a system that aggregates data from different software development applications. The system distinguishes between active time spent and time spent performing automated functions. Active time includes time that requires active developer participation, such as code drafting and code editing. Automated function time includes time spent performing activities that do not require developer participation, including compiling code, automatic code error checking, and executing code. The system determines the total active time spent on a work item and then returns feedback to any user.

[0017] Now turn Figure 1 , according to one or more embodiments of the present invention, generally illustrates a system 100 for determining active time on a software development application. The system 100 includes an efficiency calculation unit 102 for determining the time a software developer spends on a work item. The system 100 includes a set of application programming interfaces 104 to enable the system 100 to interact with different software development applications. The system 100 also includes a development scheduler unit 106 for scheduling software development work items. The system 100 is operable to transmit and collect data from a first developer computing device 110 and a second developer computing device 112 via a network 108. The system 100 can be executed locally on a computing device or via an external connection (e.g., on a server 50). It will be understood that although only two developer computing devices 110 112 are shown, the system 100 is operable to communicate with more than two developer computing devices.

[0018] The efficiency calculation unit 102 can communicate with the software development application via a corresponding application programming interface (API) from the set of application programming interfaces (APIs) 104. The efficiency calculation unit 102 can use the corresponding API to retrieve activity data from each software development application used by the developer. The activity data includes descriptions of events related to functions and files used during the operation of the application. An event is any occurrence that can be detected by the program and can be initiated by a source internal to the program or external to the program. For example, an event can include external input from a peripheral device, connection or disconnection to a peripheral device, a command, reaching memory capacity, a programming error, or other computing occurrences.

[0019] Activity data includes log files and audit trails, which are generated by software development applications, operating systems, or third-party applications. Log files include what actions the software development application performs and who initiated the action. Audit trails include the sequence of events that occur to place the software development application in a specific state. Activity data includes application-specific audit trails and can be stored as text files or database tables. Activity data also includes function logs, which include events that may not be included in audit trails, such as debug messages and exceptions. Activity data can also include database or storage logs, which include events such as database queries, data changes, and database function changes. Activity data can also include access logs, which include events such as accesses to the application and the IP address of the user accessing the software development application. In many cases, activity data is in plain text form. In these cases, the efficiency calculation unit 102 can use natural language processing (NLP) techniques to analyze the activity data. For example, the efficiency calculation unit can use word embedding models and domain-specific dictionaries to derive the textual meaning of the activity data. Activity data further includes timestamp data for each event. If more than one function is used, the activity data includes the corresponding events that occurred for each function. The efficiency calculation unit 102 may be used to receive activity data from any software development application that includes time tracking functionality, but not necessarily as a core functionality.

[0020] The efficiency calculation unit 102 can track the developer's activities by detecting input from peripheral devices (e.g., keyboard, mouse, touch screen). The efficiency calculation unit 102 includes a keystroke logging function that can detect each keystroke, mouse click, and touch screen input entered by the developer during operation of the software development application. This function includes determining the type of peripheral device and the input based on the input signal. For example, the efficiency calculation unit can distinguish between mouse clicks and keyboard strokes based on the input signal. In addition, the efficiency calculation unit 102 can determine the input based on the input signal. For example, the efficiency calculation unit 102 can determine that the developer wrote the word "mouse" on the keyboard based on the input signal.

[0021] The efficiency calculation unit 102 can further determine whether the software development application is operating an automatic function or the developer is actively participating in the application by comparing the activity data and input signals from the peripheral device. In some embodiments of the present invention, the efficiency calculation unit 102 can be arranged as a neural network and adopt a machine learning algorithm to detect the relationship between the input signal from the peripheral device and the event in the software development application. The efficiency calculation unit 102 can apply a machine learning algorithm and receive the input signal and activity data (e.g., audit trail) from the peripheral device as input. The efficiency calculation unit 102 can be trained to predict whether there is a relationship between the input signal and the event described in the activity data. If the input signal from the peripheral device causes the generation of a detectable event recorded in the activity data, then there is a relationship. Whether there is a relationship between the input signal and the event described in the activity data is based on whether the quantifiable result is within the statistical lower and upper limits of the confidence interval. In the case where the developer is working offline, the efficiency calculation unit 102 can receive a log of the input signal from the peripheral device and receive activity data from a memory storage device.

[0022] The efficiency calculation unit 102 can be trained to distinguish between developers initiating automatic functions and developers actively using functions of the software development application. For example, the efficiency calculation unit 102 can be trained to rely on different parameters, such as the frequency of input signals, the number of input signals, the nature of events caused by the input signals, or various other relevant parameters. For example, if the efficiency calculation unit 102 receives an input signal from the computing device 110 of a first developer and an audit trail from the software application, the audit trail may indicate that the input signal caused the initiation of the automatic function. In this case, the efficiency calculation unit 102 can be trained to recognize that the developer only initiated the automatic function and that the developer is not actively working on the software development application. If the software development application is executing an automatic function, the activity data will still show a record of events detected during the execution of the automatic function. In this case, the efficiency calculation unit 102 can still receive any input signals from any peripheral device. However, the efficiency calculation unit 102 is trained to recognize events that are not caused by input signals but are caused by the automatic function of the software development application.

[0023] If the efficiency calculation unit 102 determines that the developer is actively participating, it can calculate the length of the time interval between the initial input signal from the peripheral device and the final input signal from any peripheral device. The efficiency calculation unit 102 can also calculate the unit time interval between each consecutive input signal. If any unit time interval exceeds a threshold amount (for example, the developer has not input any input within half an hour), the efficiency calculation unit 102 can deduct the unit time interval (inactivity time) from the time interval between the initial input signal and the final input signal. The time value calculated after subtracting the inactivity time is considered to be the active time value.

[0024] The efficiency calculation unit 102 can calculate the sum of the active time values ​​for each instance that the developer is working on a work item. The efficiency calculation unit 102 can calculate the active time value for each function of each software development application used by the developer for the same work item. In other words, the developer may prefer the graphical user interface of the code editor from one software development application and prefer the testing capabilities of another software development application. The efficiency calculation unit 102 can calculate the active time spent values ​​of two software development applications and generate the sum of the two. This set of application programming interfaces 104 enables the efficiency calculation unit to communicate with multiple software development applications, even when one application is incompatible with another application. The API enables the efficiency calculation unit 102 to retrieve activity data and input signal data regardless of the compatibility of one software development application with another software application.

[0025] The efficiency calculation unit 102 may also determine whether the active time spent value needs to be adjusted based on the developer working on more than one work item simultaneously. Periodically, a developer may operate more than one software development application simultaneously, use more than one function of an application, or use a function to act on more than one work item. For example, a software developer may use a code editor to edit the code of two different work items. The efficiency calculation unit 102 may distinguish between a first work item and a second work item based on a work item identifier. A work item identifier is a set of numbers, titles, codes, or words used to identify the corresponding work item. Software developers store code files in a repository and retrieve the code files when needed. Each code file retrieved from the repository includes a pathname, which is a string that includes the location of each code file in the repository. The pathname may include a work item identifier. If the developer has created more than one code file for a work item, each code file may include a pathname that includes the work item identifier. The efficiency calculation unit 102 may analyze the pathname and compare portions of the pathname with a master list of work items. For example, the path name may include "... string / acme2 / elevatorsensor / ...", and the work item identifier may be "elevatorsensor." The efficiency calculation unit 102 may search for a string matching the string "elevatorsensor" in the path name to determine the work item for the code file that the developer has retrieved. Therefore, even if the developer is reviewing another developer's code, the efficiency calculation unit 102 can attribute time to the correct work item.

[0026] The efficiency calculation unit 102 is operable to receive activity data from a plurality of software development applications. The efficiency calculation unit 102 may determine that a developer is using the software development application to complete a first work item. The efficiency calculation unit 102 may further determine that the developer is also using the software development application to complete a second work item. If the efficiency calculation unit 102 determines that the developer is working on the second work item, it may calculate the length of time the developer has worked on the second work item. The method for calculating time is the same as described above using the timestamp of the input signal, except that the inactivity time is not subtracted from the time interval attributable to the second work item. The time spent on the second work item is subtracted from the active time spent value.

[0027] According to one or more embodiments of the present invention, the efficiency calculation unit 102 may further determine the developer's efficiency with respect to the completion of the work item. The efficiency calculation unit 102 may be operable to determine the actual time value spent by the developer on the work item and compare the value with the estimated length of time. The efficiency calculation unit 102 may determine whether the developer's active time is within an upper threshold time or a lower threshold time of the estimated length of time. If the developer's active time spent value is greater than the estimated length of time, the developer may be considered to have below-average efficiency. On the other hand, if the developer's active time spent value is lower than the estimated length of time, the developer may be considered to have above-average efficiency. The estimated length of time may be determined by a user (e.g., a supervisor or program manager).

[0028] The phrases "neural network" and "machine learning" broadly describe the functionality of an electronic system that learns from data. A machine learning system, engine, or module may include a machine learning algorithm that may be trained, for example, in an external cloud environment (e.g., cloud computing environment 50) to learn a functional relationship between currently unknown inputs and outputs. In one or more embodiments, the machine learning functionality may be implemented using an efficiency calculation unit 102 that has the ability to be trained to perform currently unknown functions. In machine learning and cognitive science, neural networks are a family of statistical learning models inspired by biological neural networks of animals (and particularly the brain). Neural networks can be used to estimate or approximate systems and functions that depend on a large number of inputs.

[0029] The efficiency calculation unit 102 can be implemented as a so-called "neuronal morphology" system of interconnected processor elements, which act as simulated "neurons" and exchange "messages" with each other in the form of electronic signals. Similar to the so-called "plasticity" of synaptic neurotransmitter connections that transmit messages between biological neurons, the connections in the efficiency calculation unit 102 that transmit electronic messages between simulated neurons are provided with digital weights corresponding to the strength or weakness of the given connection. During training, the weights can be adjusted and tuned based on experience, so that the efficiency calculation unit 102 adapts to the input and is able to learn. After being weighted and transformed by a function determined by the designer of the network, the activation of these input neurons is then passed to other downstream neurons, which are often referred to as "hidden" neurons. This process is repeated until the output neuron is activated. The activated output neuron determines which character is read.

[0030] The application programming interface suite 104 enables the efficiency calculation unit 102 to communicate with various software development applications. An application programming interface (API) is a software intermediary that enables the efficiency calculation unit 102 to communicate with software development applications. The efficiency calculation unit 102 can select an appropriate API to communicate with the software development application. The selected API enables the efficiency calculation unit 102 to request and receive data to determine a description of the software development application and the time spent using the application. For example, the efficiency calculation unit 102 can request and receive log files or audit trails from the software development application via the API.

[0031] The development scheduler unit 106 is operable to schedule work items to developers based at least in part on the calculated active time spent values. The development scheduler unit 106 may receive a delivery schedule for a software application under development. Based on the expected completion date, the development scheduler unit 106 may establish a target completion date for the work item. The scheduler unit 106 may create or adjust a work order and transmit the work order to the developer. The work order may be in the form of an email, an item created on an electronic calendar, or other electronic communication.

[0032] The system 100 is capable of operatively communicating with a first developer computing device 110 and a second developer computing device 112 via a communication network 108. The system 100 can be connected to the communication network via a communication port, a wired transceiver, a wireless transceiver, and / or a network card. The communication network 108 can use technologies such as Ethernet, fiber optics, microwave, xDSL (digital subscriber line), wireless local area network (WLAN) technology, wireless cellular technology, 5G, Bluetooth technology, and / or any other suitable technology to transmit data.

[0033] The computing unit 102 is operable to communicate with a first developer computing device 110 and a second developer computing device 112 via the communication network 108. The efficiency computing unit 102 can also identify each computing device based on other suitable identifiers, such as a MAC address, IP address, registration code, or a combination thereof. The efficiency computing unit 102 can also be operable to communicate with one or more software development applications operating on the first and second developer computing devices 110 and 112. The efficiency computing unit 102 can identify which developer is using which software development application based on which developer is logged into the corresponding application. If a developer is logged into multiple software development applications, the efficiency computing unit 102 can identify the developer's identity based on logging into each application.

[0034] refer to Figure 2 , illustrates a method 200 for determining active time spent values ​​according to one or more embodiments of the present invention. At block 202, the system is in operable communication with a user's computing device and continuously receives activity data from any software development applications running on the user's computer computing device. The activity data includes a description of the software application used, the functions of the software application used by the developer, and time data indicating the start and end time of each function. The activity data may be included in a log file or audit trail of the software development application. The system may further receive information regarding input signals from peripheral devices connected to the user's computing device.

[0035] At block 204, the system determines the length of time the developer actively used each software development application. The system can calculate the active time spent value by retrieving activity data and input data from peripheral devices. The system can apply a machine learning algorithm and receive input signals and activity data (e.g., audit trails) from the peripheral devices as input. The system is trained to predict whether there is a relationship between the input signals from the user's peripheral devices and the events described in the activity data. If the input signals from the peripheral devices cause the generation of an event recorded in the activity data, the system will find the relationship between the input signals and the events. The system can then calculate the length of the time interval between the initial input signal from the peripheral device and the final input signal from any peripheral device. The system can further calculate the unit time interval between each consecutive input signal. If any unit time interval exceeds a threshold amount, the unit time interval is subtracted from the time interval between the initial input signal and the final input signal.

[0036] At block 206 , the system verifies whether the developer is working on the first work item or the second work item. The system may analyze the pathname of each file on which the developer is working and compare the various components of the pathname to the master list of work items. In cases where the pathname for the second work item is not found, no further analysis is required. If the pathname for the second work item is found, the system analyzes the input data to detect the initial and final timestamps associated with the second work item. The system calculates the second work item time interval between the initial and final time signals from any peripheral devices. The system then subtracts the second work item time interval from the active time spent value for the first work item at block 208 .

[0037] refer to Figure 3 , a method 300 for adjusting pipeline scheduling is shown. At block 302, the system compares the developer's current active time spent value with the estimated active time value. The estimated active time value is an estimate of the total active time required to complete the work item. The estimated active time value can be determined by a user (e.g., a project manager or supervisor).

[0038] At block 304, the system determines whether the developer's actual time spent is within a threshold less than the estimated time spent. The threshold can be determined by a user (e.g., a project manager). The threshold can be a fixed amount of time or a percentage of the estimated active time value. For example, if the threshold is five hours and the estimated active time spent value is thirty hours, the system can determine whether the developer has twenty-five hours of active time. For example, if the threshold is 20%, the system can also determine whether the developer has at least twenty-five hours of active time.

[0039] At block 306, if the developer's actual time spent is within a threshold of the estimated active time value, the system schedules the second work item. For example, if the developer has worked on the work item for 25 hours, the developer is within the five-hour threshold of the estimated 30-hour value. In response to working for 25 hours, the second work item may be scheduled for the developer before the developer completes the first work item. At block 308, if the developer is not within a threshold of the average active time spent, the system refrains from scheduling the second work item.

[0040] It should be understood that although the present disclosure includes detailed descriptions about cloud computing, the implementation of the teachings cited herein is not limited to cloud computing environments. Instead, embodiments of the present invention can be implemented in conjunction with any other type of computing environment now known or later developed.

[0041] Cloud computing is a service delivery model that enables convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be quickly provisioned and released with minimal management effort or interaction with the service provider. The cloud model can include at least five characteristics, at least three service models, and at least four deployment models.

[0042] Features are as follows:

[0043] On-demand self-service: Cloud consumers can unilaterally and automatically provision computing capabilities, such as server time and network storage, as needed, without requiring human interaction with the service provider.

[0044] Broad Network Access: Capabilities are available over the network and accessed through standard mechanisms that facilitate the use of heterogeneous thin-client or thick-client platforms (e.g., mobile phones, laptops, and PDAs).

[0045] Resource pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, where different physical and virtual resources are dynamically assigned and reassigned as needed. There is a sense of location independence, as consumers typically do not have control or knowledge of the exact location of the provided resources, but may be able to specify the location at a higher level of abstraction (e.g., country, state, or data center).

[0046] Rapid elasticity: The ability to quickly and elastically provision capacity, in some cases automatically scaling down and releasing capacity to scale up quickly. To the consumer, the capacity available for provisioning typically appears unlimited and can be purchased in any quantity at any time.

[0047] Metered Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the utilized services.

[0048] The service model is as follows:

[0049] Software as a Service (SaaS): The ability provided to consumers is to use the provider's applications running on a cloud infrastructure. Applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based email). Consumers do not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.

[0050] Platform as a Service (PaaS): The capability provided to consumers is to deploy applications created or acquired using programming languages ​​and tools supported by the provider onto cloud infrastructure. Consumers do not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but do have control over the deployed applications and the configuration of the application hosting environment.

[0051] Infrastructure as a Service (IaaS): The capabilities provided to consumers are processing, storage, networking, and other basic computing resources on which consumers can deploy and run arbitrary software, including operating systems and applications. Consumers do not manage or control the underlying cloud infrastructure, but rather have control over the operating system, storage, deployed applications, and potentially limited control over selected networking components (e.g., host firewalls).

[0052] The deployment model is as follows:

[0053] Private cloud: Cloud infrastructure is operated solely for an organization. It can be managed by the organization or a third party and can exist on-premises or off-premises.

[0054] Community cloud: Cloud infrastructure is shared by several organizations and supports a specific community with shared concerns (e.g., mission, security requirements, policies, and compliance considerations). It can be managed by the organization or a third party and can exist on-premises or off-premises.

[0055] Public cloud: Cloud infrastructure is made available to the public or large industry groups and is owned by the organization that sells cloud services.

[0056] Hybrid cloud: A cloud infrastructure is a combination of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).

[0057] Cloud computing environments are service-oriented and focus on statelessness, low coupling, modularity, and semantic interoperability. The core of cloud computing is the infrastructure that consists of a network of interconnected nodes.

[0058] Now refer to Figure 4, an illustrative cloud computing environment 50 is described. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which a local computing device used by a cloud consumer can communicate, such as, for example, a personal digital assistant (PDA) or cellular phone 54A, a desktop computer 54B, a laptop computer 54C, and / or an automobile computer system 54N. The nodes 10 can communicate with each other. They can be grouped physically or virtually (not shown) in one or more networks, such as a private cloud, community cloud, public cloud, or hybrid cloud, or a combination thereof, as described above. This allows the cloud computing environment 50 to provide infrastructure, platform, and / or software as a service for which the cloud consumer does not need to maintain resources on a local computing device. It should be understood that Figure 4 The types of computing devices 54A-N shown in are intended to be illustrative only, and computing node 10 and cloud computing environment 50 may communicate with any type of computerized device over any type of network and / or network-addressable connection (eg, using a web browser).

[0059] Now see Figure 5 , showing the cloud computing environment 50 ( Figure 4 ) provides a set of functional abstraction layers. It should be understood in advance that Figure 5 The components, layers, and functions shown in are intended to be illustrative only, and embodiments of the present invention are not limited thereto. As described, the following layers and corresponding functions are provided:

[0060] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include: mainframes 61; servers based on RISC (Reduced Instruction Set Computer) architecture 62; servers 63; blade servers 64; storage devices 65; and network and networking components 66. In some embodiments, software components include web application server software 67 and database software 68.

[0061] Virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual servers 71 ; virtual storage 72 ; virtual networks 73 , including virtual private networks; virtual applications and operating systems 74 ; and virtual clients 75 .

[0062] In one example, the management layer 80 may provide the functionality described below. Resource provisioning 81 provides dynamic procurement of computing and other resources for performing tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking when utilizing resources within the cloud computing environment and bills or invoices the consumption of these resources. In one example, these resources may include application software licenses. Security provides authentication for cloud consumers and tasks, as well as protection for data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides cloud computing resource allocation and management so that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides pre-arrangement and procurement of cloud computing resources in anticipation of future demand according to the SLA.

[0063] The workload layer 90 provides examples of functionality that can take advantage of a cloud computing environment. Examples of workloads and functionality that can be provided from this layer include: mapping and navigation 91; software development and lifecycle management 92; virtual classroom education delivery 93; data analytics processing 94; transaction processing 95; and aggregation of developer log data 96.

[0064] It should be understood that the present disclosure can be implemented in conjunction with any other type of computing environment now known or later developed. Figure 6 A block diagram of a processing system 600 for implementing the techniques described herein is depicted. In an example, the processing system 600 has one or more central processing units (processors) 621a, 621b, 621c, etc. (collectively or generally referred to as processor(s) 621 and / or processing device(s)). In various aspects of the present disclosure, each processor 621 may comprise a reduced instruction set computer (RISC) microprocessor. The processor 621 is coupled to system memory (e.g., random access memory (RAM) 634) and various other components via a system bus 633. A read-only memory (ROM) 622 is coupled to the system bus 633 and may include a basic input / output system (BIOS), which controls certain basic functions of the processing system 600.

[0065] Further depicted are input / output (I / O) adapter 627 and communications adapter 626 coupled to system bus 633. I / O adapter 627 may be a Small Computer System Interface (SCSI) adapter that communicates with hard disk 623 and / or tape unit 625, or any other similar component. I / O adapter 627, hard disk 623, and tape unit 625 are collectively referred to herein as mass storage device 624. An operating system 640 for execution on processing system 600 may be stored in mass storage device 624. Communications adapter 626 interconnects system bus 633 with an external network 636, enabling processing system 600 to communicate with other such systems.

[0066] A display (e.g., a display monitor) 635 is connected to the system bus 633 via a display adapter 632, which may include a graphics adapter and a video controller for improving the performance of graphics-intensive applications. In one aspect of the present disclosure, adapters 626, 627, and / or 632 may be connected to one or more I / O buses connected to the system bus 633 via an intermediate bus bridge (not shown). Suitable I / O buses for connecting peripheral devices such as hard disk controllers, network adapters, and graphics adapters typically include common protocols such as the Peripheral Component Interconnect (PCI). Additional input / output devices are shown as being connected to the system bus 633 via a user interface adapter 628 and a display adapter 632. Input devices 629 (e.g., a keyboard, microphone, touch screen, etc.), input pointers 630 (e.g., a mouse, trackpad, touch screen, etc.), and / or speakers 631 may be interconnected to the system bus 633 via a user interface adapter 628, which may include, for example, a super I / O chip that integrates multiple device adapters into a single integrated circuit.

[0067] In some aspects of the present disclosure, the processing system 600 includes a graphics processing unit 641. The graphics processing unit 641 is a specialized electronic circuit designed to manipulate and modify memory to accelerate the creation of images in a frame buffer intended for output to a display. Generally speaking, the graphics processing unit 641 is very efficient at handling computer graphics and image processing and has a highly parallel structure that makes it more efficient than a general-purpose CPU for algorithms that perform processing of large blocks of data in parallel.

[0068] Thus, as configured herein, processing system 600 includes processing capabilities in the form of processor 621, storage capabilities including system memory (e.g., RAM 634) and mass storage device 624, input devices such as keyboard 629 and mouse 630, and output capabilities including speakers 631 and display 635. In some aspects of the present disclosure, a portion of system memory (e.g., RAM 634) and mass storage device 624 collectively store an operating system 640 to coordinate the functionality of the different components shown in processing system 600.

[0069] Various embodiments of the present invention are described herein with reference to the accompanying drawings. Without departing from the scope of the present invention, alternative embodiments of the present invention may be designed. In the following description and accompanying drawings, various connections and positional relationships (e.g., above, below, adjacent, etc.) are described between elements. Unless otherwise specified, these connections and / or positional relationships may be direct or indirect, and the present invention is not intended to be limited in this respect. Therefore, the connection of an entity may refer to a direct or indirect connection, and the positional relationship between the entities may be a direct or indirect positional relationship. In addition, the various tasks and process steps described herein may be incorporated into a more comprehensive program or process with additional steps or functions not described in detail herein.

[0070] One or more of the methods described herein may be implemented using any of the following technologies or a combination of the following technologies, each of which is well known in the art: discrete logic circuits having logic gates for implementing logic functions on data signals, application-specific integrated circuits (ASICs) having appropriate combinational logic gates, programmable gate arrays (PGAs), field programmable gate arrays (FPGAs), etc.

[0071] For the sake of brevity, conventional techniques related to making and using aspects of the present invention may or may not be described in detail herein. In particular, various aspects of the computing systems and specific computer programs used to implement the various technical features described herein are well known. Thus, for the sake of brevity, many conventional implementation details are only briefly mentioned herein or omitted entirely, without providing well-known system and / or process details.

[0072] In some embodiments, various functions or actions can occur at a given location and / or occur in conjunction with the operation of one or more devices or systems. In some embodiments, a portion of a given function or action can be performed at a first device or location, and the remainder of the function or action can be performed at one or more additional devices or locations.

[0073] The terms used herein are for the purpose of describing specific embodiments only and are not intended to be limiting. As used herein, unless the context clearly indicates otherwise, the singular forms "a", "an", and "the" are intended to include the plural forms as well. It should also be understood that when the terms "comprise" and / or "include" are used in this specification, they specify the presence of the features, wholes, steps, operations, elements and / or components, but do not preclude the presence or addition of one or more other features, wholes, steps, operations, elements and / or components and / or combinations thereof.

[0074] All means or steps plus corresponding structures, materials, acts, and equivalents of functional elements in the following claims are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the forms disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope of the present disclosure. These embodiments were chosen and described in order to best explain the principles and practical application of the present disclosure, and to enable others of ordinary skill in the art to understand the present disclosure with respect to different embodiments with different modifications suitable for the specific use contemplated.

[0075] The figures depicted here are illustrative. Many variations may be made to the figures or steps (or operations) described herein without departing from the present disclosure. For example, actions may be performed in a different order, or actions may be added, deleted, or modified. Furthermore, the term "coupled" describes a signal path between two elements and does not imply a direct connection between the elements without an intermediate element / connection therebetween. All of these variations are considered to be part of the present disclosure.

[0076] The following definitions and abbreviations will be used to interpret the claims and description. As used herein, the terms "comprises," "comprising," "consisting of," "having," "having," "containing," or "accommodating" or any other variations thereof are intended to cover a non-exclusive inclusion. For example, a composition, mixture, process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such composition, mixture, process, method, article, or apparatus.

[0077] Additionally, the term "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or designs. The terms "at least one" and "one or more" should be understood to include any integer greater than or equal to one, i.e., one, two, three, four, etc. The term "plurality" should be understood to include any integer greater than or equal to two, i.e., two, three, four, five, etc. The term "connected" may include both indirect and direct "connections."

[0078] The terms "about," "substantially," "approximately," and variations thereof are intended to include the degree of error associated with measurement of a particular quantity based on the equipment available at the time the application is filed. For example, "about" may include a range of ±8%, or 5%, or 2% of a given value.

[0079] The present invention may be a system, method and / or computer program product of any possible degree of technical detail integration. The computer program product may include a computer-readable storage medium (or multiple media) having computer-readable program instructions thereon for causing a processor to execute various aspects of the present invention.

[0080] Computer readable storage medium can be a tangible device that can retain and store the instructions used by the instruction execution device.Computer readable storage medium can be, for example but not limited to, electronic storage device, magnetic storage device, optical storage device, electromagnetic storage device, semiconductor storage device or any suitable combination of the above.The non-exhaustive list of more specific examples of computer readable storage medium includes the following: portable computer disk, hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanical encoding device such as punch card or the protrusion structure in the groove with the instruction recorded thereon and any suitable combination of the above.Computer readable storage medium as used herein should not be interpreted as temporary signal itself, such as radio wave or other free propagation electromagnetic wave, electromagnetic wave (for example, light pulse through fiber optic cable) propagated by waveguide or other transmission medium or electric signal emitted by wire.

[0081] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to a corresponding computing / processing device via a network (e.g., the Internet, a local area network, a wide area network, and / or a wireless network), or downloaded to an external computer or external storage device. The network can include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. The network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions to be stored in a computer-readable storage medium within the corresponding computing / processing device.

[0082] The computer-readable program instructions for performing the operation of the present invention can be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-related instructions, microcode, firmware instructions, state setting data, the configuration data of integrated circuit or source code or object code written in any combination of one or more programming languages, these programming languages ​​include object-oriented programming languages ​​(such as Smalltalk, C++ etc.) and process programming languages ​​(such as " C " programming languages ​​or similar programming languages). The computer-readable program instructions can be performed completely on the user's computer, partly on the user's computer, performed as an independent software package, partly on the user's computer, partly on a remote computer or fully on a remote computer or server. In the latter case, the remote computer can be connected to the user's computer by any type of network (including local area network (LAN) or wide area network (WAN)), or can be connected to an external computer (for example, using an internet service provider through the internet). In certain embodiments, the electronic circuit comprising for example programmable logic circuit, field programmable gate array (FPGA) or programmable logic array (PLA) can make the electronic circuit personalized to perform computer-readable program instructions by utilizing the state information of computer-readable program instructions, so as to perform various aspects of the present invention.

[0083] The present invention will be described below with reference to flowcharts and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the present invention. It should be understood that each block of the flowcharts and / or block diagrams, and combinations of blocks in the flowcharts and / or block diagrams, can be implemented by computer-readable program instructions.

[0084] These computer-readable program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing device to produce a machine, such that the instructions executed by the processor of the computer or other programmable data processing device create a device for implementing the functions / actions specified in the flowchart and / or block diagram or multiple blocks. These computer-readable program instructions can also be stored in a computer-readable storage medium, where these instructions cause the computer, programmable data processing device, and / or other device to operate in a specific manner, so that the computer-readable storage medium having the instructions stored therein includes an article of manufacture containing instructions that implement aspects of the functions / actions specified in the flowchart and / or block diagram or multiple blocks.

[0085] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device, so that a series of operational steps are performed on the computer, other programmable apparatus, or other device to produce computer-implemented processing, so that the instructions executed on the computer, other programmable apparatus, or other device implement the functions / actions specified in one or more boxes in the flowchart and / or block diagram.

[0086] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functions and operations of possible implementations of the systems, methods and computer program products according to different embodiments of the present invention. To this end, each box in the flowchart or block diagram may represent a module, segment or portion of an instruction, which includes one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions annotated in the box may not occur in the order annotated in the figure. For example, depending on the functions involved, the two boxes shown in succession may actually be executed substantially simultaneously, or the boxes may sometimes be executed in the opposite order. It should also be noted that each box in the block diagram and / or flowchart, and the combination of the boxes in the block diagram and / or flowchart, can be implemented using a dedicated hardware-based system that performs a specified function or action or performs a combination of dedicated hardware and computer instructions.

[0087] The description of various embodiments of the present invention has been presented for the purpose of illustration and is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope of the described embodiments. The terminology used herein is selected to best explain the principles of the embodiments, practical applications, or technical improvements over technologies found in the marketplace, or to enable those of ordinary skill in the art to understand the embodiments described herein.

Claims

1. A computer-implemented method comprising: retrieving, by the processor, developer activity data from the software development application and a plurality of input signals generated by the peripheral device; determining, by the processor, a causal relationship between the plurality of input signals and any event described by the activity data; calculating, by the processor and in response to determining a causal relationship, a first time interval between an initial signal and a final signal of the plurality of input signals, wherein the first time interval is associated with a first work item; comparing, by the processor, the first time interval with an estimated time interval, wherein the estimated time interval is an estimate of the activity time required by the developer to complete the first work item; and determining, by the processor, a schedule for the second work item based on the comparison, The computer-implemented method further comprises: calculating, by the processor, a corresponding time interval between each consecutive input signal of the plurality of input signals; comparing, by the processor, each corresponding time interval with a threshold time interval, wherein the threshold time interval is used to determine whether each corresponding time interval is an inactive time period for the developer; The length of a corresponding time interval that exceeds the threshold time interval is subtracted, by the processor, from the first time interval. 2 . The computer-implemented method of claim 1 , further comprising selecting an application programming interface from a suite of application programming interfaces to communicate with the software development application.

3. The computer-implemented method of claim 1 , wherein: Comparing the first time interval to an estimated time interval includes determining whether the first time interval is a threshold time interval that is less than the estimated time interval.

4. The computer-implemented method of claim 1 , further comprising: detecting said software development application operating on a file; detecting the path name of the file; as well as The first work item identifier is compared with the path name to detect the first work item identifier.

5. The computer-implemented method of claim 1 , wherein: The activity data includes log files or audit trails.

6. The computer-implemented method of claim 1 , wherein: The activity data includes plain text, and the method further includes applying natural language processing techniques to understand the meaning of the plain text.

7. A system comprising: a memory having computer-readable instructions; as well as One or more processors configured to execute the computer-readable instructions, the computer-readable instructions controlling the one or more processors to perform operations comprising: retrieving, by the processor, developer activity data from the software development application and a plurality of input signals generated by the peripheral device; determining, by the processor, a causal relationship between the plurality of input signals and any event described by the activity data; calculating, by the processor and in response to determining a causal relationship, a first time interval between an initial signal and a final signal of the plurality of input signals, wherein the first time interval is associated with a first work item; comparing, by the processor, the first time interval with an estimated time interval, wherein the estimated time interval is an estimate of the activity time required by the developer to complete the first work item; and determining, by the processor, a schedule for the second work item based on the comparison, The operations further include: calculating, by the processor, a corresponding time interval between each consecutive input signal of the plurality of input signals; comparing, by the processor, each corresponding time interval with a threshold time interval, wherein the threshold time interval is used to determine whether each corresponding time interval is an inactive time period for the developer; The length of a corresponding time interval that exceeds the threshold time interval is subtracted, by the processor, from the first time interval.

8. The system of claim 7, the operations further comprising selecting an application programming interface from a suite of application programming interfaces to communicate with the software development application.

9. The system according to claim 7, wherein: Comparing the first time interval to an estimated time interval includes determining whether the first time interval is a threshold time interval that is less than the estimated time interval.

10. The system of claim 7, the operations further comprising: detecting said software development application operating on a file; detecting the path name of the file; as well as The first work item identifier is compared with the path name to detect the first work item identifier.

11. The system according to claim 7, wherein: The activity data includes log files or audit trails.

12. The system according to claim 7, wherein: The activity data includes plain text, and the operations further include applying natural language processing techniques to understand the meaning of the plain text.

13. A computer program product comprising a computer-readable storage medium having program instructions embodied therein, the program instructions being executable by a processor to cause the processor to perform operations comprising: retrieving, by the processor, developer activity data from the software development application and a plurality of input signals generated by the peripheral device; determining, by the processor, a causal relationship between the plurality of input signals and any event described by the activity data; calculating, by the processor and in response to determining a causal relationship, a first time interval between an initial signal and a final signal of the plurality of input signals, wherein the first time interval is associated with a first work item; comparing, by the processor, the first time interval with an estimated time interval, wherein the estimated time interval is an estimate of the activity time required by the developer to complete the first work item; and determining, by the processor, a schedule for the second work item based on the comparison, The operations further include: calculating, by the processor, a corresponding time interval between each consecutive input signal of the plurality of input signals; comparing, by the processor, each corresponding time interval with a threshold time interval, wherein the threshold time interval is used to determine whether each corresponding time interval is an inactive time period for the developer; The length of a corresponding time interval that exceeds the threshold time interval is subtracted, by the processor, from the first time interval.

14. The computer program product of claim 13, the operations further comprising selecting an application programming interface from a suite of application programming interfaces to communicate with the software development application.

15. The computer program product of claim 13, wherein: Comparing the first time interval to an estimated time interval includes determining whether the first time interval is a threshold time interval that is less than the estimated time interval.

16. The computer program product of claim 13, the operations further comprising: detecting said software development application operating on a file; detecting the path name of the file; as well as The first work item identifier is compared with the path name to detect the first work item identifier.

17. The computer program product of claim 13, wherein: The activity data includes log files or audit trails.

Citation Information

Patent Citations

  • Project management system and project management method

    JP2007272655A