Calculation of Developer Time during the Development Process

The computing system addresses the challenge of inaccurate developer time tracking by distinguishing between active and automated time in software development, enhancing efficiency measurement and scheduling.

JP7710812B2Active Publication Date: 2025-07-22INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2023505704
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-07-30
Filing Date
2021-07-28
Publication Date
2025-07-22
Estimated Expiration
2041-07-28

AI Technical Summary

Technical Problem

Conventional time-tracking systems in software development fail to distinguish between the time developers actively engage with software development applications and the time these applications execute automated functions, leading to inaccurate monitoring of developer efficiency.

Method used

A computing system that aggregates data from various software development applications, distinguishing between active developer time and automated function time by using application programming interfaces, natural language processing, and machine learning algorithms to analyze activity data and input signals from peripheral devices, calculating the actual time spent on tasks and comparing it to estimated times to determine efficiency.

Benefits of technology

Accurately measures developer efficiency by separating active engagement time from automated function time, enabling better scheduling and management of software development work items.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007710812000001
    Figure 0007710812000001
  • Figure 0007710812000002
    Figure 0007710812000002
  • Figure 0007710812000003
    Figure 0007710812000003
Patent Text Reader

Abstract

This specification includes a computer-implemented method, computing system, and computer program product for calculating activity time in a software application for a first work item. The computer-implemented method includes retrieving activity data from the software development application and a plurality of input signals generated by peripheral devices. The method further includes determining a causal relationship between the input data and all events represented by the activity data. In response to determining the causal relationship, a first time interval between a first signal and a last signal of the plurality of input signals is calculated. The first time interval is compared to an estimated time interval. Based on this comparison, a schedule for a second work item is determined, the first time interval being associated with the first work item.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

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

Background Art

[0002] Computing systems are employed to track the time spent by employees on individual activities performed to complete an entire task. The purpose of monitoring the time spent by employees is to improve the effectiveness, efficiency, or productivity, or a combination thereof, associated with completing the entire task. A computer system can receive time data input by a user regarding the description of the task and the time spent to complete the task. The ability to view the activity time spent on a task item is important for providing insight into the effectiveness of the software development process.

Summary of the Invention

[0003] Embodiments of the present invention are directed to a computer-implemented method, a computing system, and a computer program product for calculating activity time in a software application related to a first task item. Non-limiting examples of the computer-implemented method include extracting activity data from a software development application and a plurality of input signals generated by peripheral devices. The method further includes determining a causal relationship between the input data and all events represented by the activity data. In response to determining the causal relationship, a first time interval between a first signal and a last signal among the plurality of input signals is calculated. The first time interval is compared with an estimated time interval. Based on this comparison, a schedule for a second task item is determined, and the first time interval is related to the first task item.

[0004] Other embodiments of the present invention implement the features of the foregoing method in a computer system and a computer program product.

[0005] Other technical features and advantages are realized by the technology of the present invention. Embodiments and aspects of the present invention are described in detail herein and are considered part of the claimed subject matter. Refer to the detailed description and drawings for a better understanding.

[0006] The details of the proprietary rights described herein are specifically pointed out and clearly claimed in the claims at the end of this specification. The foregoing and other features and advantages of embodiments of the present invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings.

Brief Description of the Drawings

[0007]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Modes for Carrying Out the Invention

[0008] The figures shown in this specification are illustrative. Without departing from the present invention, many variations of the figures or operations described herein are possible. For example, the operations can be executed in a different order, or the operations can be added, deleted, or changed. Also, the term "coupled" and its variations represent that there is a communication path between two elements, and do not mean a direct connection between elements without an element / connection intervening between them. All of these variations are considered to be part of this specification.

[0009] One or more embodiments of the present invention provide a computing system that monitors the total time spent by a developer who uses a software development application to complete a first work item. This system separates the time the developer actively engages with the software development application and the time the application executes automated functions. This system calculates the developer's efficiency based on the time spent actively engaging with the software development application to complete the first work item.

[0010] In the latest software development process, software companies establish a pipeline to manage the work required for software coding, testing, and deployment. The pipeline is a pre-defined and automated repeatable process that incorporates work performed in various software development applications. Companies further adopt time-tracking software to assist in tracking the developer's engagement with the software development application towards completing work items. Time-tracking software may rely on time inputs from developers. However, time inputs in a self-reporting system are not effective for accurately monitoring the time the developer actively engages with the software development application. Conventional time-tracking systems do not distinguish between the time the developer actively uses the software development application and the time the software development application executes automated functions.

[0011] One or more embodiments of the present invention address one or more of the foregoing drawbacks by providing a system that aggregates data from various software development applications. This system distinguishes between the time spent on activities and the time during which the application executed automated functions. Activity time includes time that requires active participation by the developer (e.g., code design and code editing). The time for automated functions includes the time for activities such as code compilation, automated code error checking, and code execution that do not require developer participation. This system determines the aggregation of the activity time spent on work items and returns feedback to all users.

[0012] Referring now to FIG. 1, a system 100 for determining activity time in a software development application is generally shown in accordance with one or more embodiments of the present invention. System 100 includes an efficiency calculation unit 102 for determining the time spent on work items by software developers. System 100 includes a series of application programming interfaces 104 to enable System 100 to communicate information with various software development applications. System 100 further includes a development scheduler unit 106 for scheduling software development work items. System 100 is operable to transmit data to and collect data from a first developer computing device 110 and a second developer computing device 112 via a network 108. System 100 may be executed locally on a computing device or via an external connection, for example, on a server 50. Although only two developer computing devices 110, 112 are shown, it is understood that System 100 is operable to communicate with three or more developer computing devices.

[0013] The efficiency calculation unit 102 can communicate with software development applications via each of a series of application programming interfaces (APIs). The efficiency calculation unit 102 can use each API to extract activity data from each software development application used by a 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 a program and can be initiated internally by the program or by an external source. For example, an event can include an external input from a peripheral device, a connection or disconnection with a peripheral device, a command, reaching a memory capacity, a programming error, or the occurrence of other calculations.

[0014] Activity data includes log files and audit trails generated by software development applications, operating systems, or third-party applications. Log files include what operations the software development application executed and who initiated the operations. Audit trails include a series of events that occurred for the software development application to reach a particular state. Activity data includes audit trails specific to the application and can be stored as text files or database tables. Activity data also includes functional logs that include events that may not be included in the audit trail (e.g., debug messages and exceptions). Activity data can also include database logs or memory logs that include events such as database queries, changes in data, and changes in database functions. Activity data can include access logs that include events such as access to the application and the IP address of the user accessing the software development application. In many cases, activity data is in the form of plain text. In that case, the efficiency calculation unit 102 can employ natural language processing (NLP) techniques to analyze the activity data. For example, the efficiency calculation unit can employ a word embedding model and a domain-specific dictionary to derive the meaning of the text of the activity data. Activity data further includes timestamp data for each event. When two or more functions are used, activity data includes each event that occurs for each function. The efficiency calculation unit 102 is operable to receive activity data from any software development application that includes a time-tracking function not necessarily as a central function.

[0015] The efficiency calculation unit 102 can track the activities of the developer by detecting inputs 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 the operation of the software development application. This function includes determining the type and input of the peripheral device based on the input signal. For example, the efficiency calculation unit can distinguish a mouse click from a keyboard stroke based on the input signal. Further, 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 has written the word "mouse" on the keyboard based on the input signal.

[0016] The efficiency calculation unit 102 can further determine whether the software development application is operating an automated function or the developer is actively engaged in the application by comparing the activity data and the input signals from the peripheral devices. In some embodiments of the present invention, the efficiency calculation unit 102 can be arranged as a neural network and can use a machine learning algorithm to detect the relationship between the input signals from the peripheral devices and the events in the software development application. The efficiency calculation unit 102 can apply a machine learning algorithm and receive as input the input signals from the peripheral devices and the activity data (e.g., audit trails). The efficiency calculation unit 102 can be trained to predict whether there is a relationship between the input signals and the events described in the activity data. A relationship exists if the input signals from the peripheral devices cause the generation of detectable events recorded in the activity data. Whether there is a relationship between the input signals and the events described in the activity data is based on whether the quantifiable result is within the range of the statistical lower and upper bounds of the confidence interval. When the developer is working offline, the efficiency calculation unit 102 can receive the logs of the input signals from the peripheral devices and the activity data from the memory storage device.

[0017] The efficiency calculation unit 102 can be trained to distinguish between a developer starting an automated function and the developer actively using the functions of a software development application. For example, the efficiency calculation unit 102 can be trained to depend on various parameters such as the frequency of the input signal, the number of input signals, the nature of the events caused by the input signals, or various other relevant parameters. For example, when the efficiency calculation unit 102 receives an input signal from the first developer's computing device 110 and receives an audit trail from the software application, the audit trail may indicate that the input signal caused the start of an automated function. In this case, the efficiency calculation unit 102 can be trained to recognize that the developer only starts automated functions and is not actively working in the software development application. When the software development application is executing an automated function, the activity data still shows a record of the events detected during the execution of the automated function. In this case, the efficiency calculation unit 102 can still receive all input signals from all peripheral devices. However, the efficiency calculation unit 102 is trained to recognize that the events are not caused by the input signals but are due to the automated functions of the software development application.

[0018] When the efficiency calculation unit 102 determines that the developer is actively participating, it can calculate the length of the time interval between the first input signal from the peripheral device and the last input signal from any peripheral device. The efficiency calculation unit 102 can further calculate the unit time interval between each consecutive input signal. If any unit time interval exceeds a threshold amount (e.g., the developer did not input anything for 30 minutes), the efficiency calculation unit 102 can subtract the unit time interval (inactive time) from the time interval between the first input signal and the last input signal. The calculated time value after subtracting the inactive time is considered the active time value.

[0019] The efficiency calculation unit 102 can calculate the total activity time value for each case where a developer is working on a work item. The efficiency calculation unit 102 can calculate the activity time value for each function of each software development application used by the developer for the same work item. In other words, a developer may prefer the graphical user interface of the code editor of a certain software development application and prefer the test function of another software development application. The efficiency calculation unit 102 can calculate the activity time values spent on both software development applications and generate the total of both. A series of application programming interfaces 104 enable the efficiency calculation unit to communicate with multiple software development applications even if one application is not compatible with another. The API enables the efficiency calculation unit 102 to retrieve activity data and input signal data regardless of the compatibility between one software development application and another software application.

[0020] The efficiency calculation unit 102 can further determine whether the expended activity time value needs to be adjusted based on the developer being engaged in two or more work items simultaneously. A developer may regularly operate two or more software development applications simultaneously, use two or more functions of an application, or engage in two or more work items using one function. For example, a software developer may use a code editor to edit code for two different work items. The efficiency calculation unit 102 can distinguish a first work item from a second work item based on work item identification information. The work item identification information is a set of numbers, titles, codes, or words used to identify each work item. A software developer stores code files in a repository and retrieves the code files when needed. Each code file retrieved from the repository includes a path name that is a character string containing the location of each code file within the repository. The path name can include the work item identification information. When a developer creates two or more code files regarding a work item, each code file can include a path name containing the work item identification information. The efficiency calculation unit 102 can analyze the path name and compare a part of the path name with a master list of work items. For example, the path name may contain "...string / acme2 / elevatorsensor / ..." and the work item identification information may be "elevatorsensor". The efficiency calculation unit 102 can search the path name for a string that matches the string "elevatorsensor" and determine the work item of the code file retrieved by the developer. Therefore, even when a developer is reviewing another developer's code, the efficiency calculation unit 102 can recognize that the time is due to the correct work item.

[0021] The efficiency calculation unit 102 is operable to receive activity data from a plurality of software development applications. The efficiency calculation unit 102 can determine that a developer is using a software development application to complete a first work item. The efficiency calculation unit 102 can further determine that the developer is also using the software development application to complete a second work item. When the efficiency calculation unit 102 determines that the developer is engaged in the second work item, it can calculate the length of time the developer has been engaged in the second item. The method for calculating this time uses the time stamp of the input signal as described above, but differs in that inactive time is not subtracted from the time interval resulting from the second work item. The time spent on the second work item is subtracted from the activity time value spent.

[0022] In accordance with one or more embodiments of the present invention, the efficiency calculation unit 102 can further determine the developer's efficiency regarding the completion of work items. The efficiency calculation unit 102 is operable to determine the time value actually spent by the developer on a work item and compare that value with the estimated length of time. The efficiency calculation unit 102 can determine whether the developer's activity time is within the range of the upper or lower limit of the estimated length of time. If the developer's spent activity time value exceeds the estimated length of time, the developer can be considered to have an efficiency below the average. On the other hand, if the developer's spent activity time value is less than the estimated length of time, the developer can be considered to have an efficiency above the average. The estimated length of time can be determined by a user (e.g., a supervisor or program manager).

[0023] The terms "neural network" and "machine learning" broadly represent the functionality of electronic systems that learn from data. A machine learning system, engine, or module can include machine learning algorithms that are trained in an external cloud environment (e.g., cloud computing environment 50) to learn the functional relationship between inputs and outputs that are currently unknown. In one or more embodiments, the machine learning functionality can be implemented using an efficient computing unit 102 that has the ability to be trained to perform functions that are currently unknown. In machine learning and cognitive science, a neural network is a group of statistical learning models inspired by the biological neural networks of animals and particularly the brain. Neural networks can be used to estimate or approximate systems and functions that depend on multiple inputs.

[0024] The efficient computing unit 102 can be embodied as a so-called "neuromorphic" system of interconnected processor elements that function as simulated "neurons" and exchange "messages" with each other in the form of electrical signals. Similar to the so-called "plasticity" of synaptic neurotransmitter connections that transmit messages between biological neurons, the connections within the efficient computing unit 102 that transmit electronic messages between simulated neurons are provided with numerical weights corresponding to the strength or weakness of specific connections. During training, these weights can be adjusted based on experience, making the efficient computing unit 102 adaptable to inputs and enabling learning. The activation of these input neurons is passed on to other downstream neurons, often called "hidden" neurons, after being weighted and transformed by a function determined by the network designer. This process is repeated until the output neuron is activated. The activated output neuron determines which character was read.

[0025] A series of application programming interfaces 104 enables the efficiency computing unit 102 to communicate with various software development applications. The application programming interface (API) is intermediate software that enables the efficiency computing unit 102 to communicate with software development applications. The efficiency computing unit 102 can select an appropriate API to communicate with a software development application. The selected application programming interface enables the efficiency computing unit 102 to request and receive data for determining the description of the software development application and the time spent using this application. For example, the efficiency computing unit 102 can request and receive a log file or an audit trail from the software development application via the API.

[0026] The development scheduler unit 106 is operable to schedule work items for a developer based at least in part on the calculated activity time values spent. The development scheduler unit 106 can receive the delivery schedule of the software application under development. Based on the expected completion date, the development scheduler unit 106 can determine the scheduled completion date of the work item. The scheduler unit 106 can create or adjust the work order and send this work order to the developer. The work order can be in the form of an email, an item created on an electronic calendar, or other forms of electronic communication.

[0027] System 100 can communicate operably with the computing device 110 of the first developer and the computing device 112 of the second developer via the communication network 108. System 100 can be connected to the communication network via a communication port, a wired transceiver, a wireless transceiver, or a network card, or a combination thereof. The communication network 108 can transmit data using technologies such as Ethernet (R), optical fiber, microwave, xDSL (Digital Subscriber Line), wireless local area network (WLAN) technology, wireless cellular technology, 5G, Bluetooth technology, or any other suitable technology, or a combination thereof.

[0028] The computing unit 102 communicates operably with the computing device 110 of the first developer and the computing device 112 of the second developer via the communication network 108. The efficiency computing unit 102 can further identify each computing device based on, for example, MAC address, IP address, registration code, or other suitable identification information of these combinations. The efficiency computing unit 102 can further communicate operably with one or more software development applications operating on the computing devices 110, 112 of the first and second developers. The efficiency computing unit 102 can identify which developer is using which software development application based on which developer is recorded in each application. If a developer is recorded in multiple software development applications, the efficiency computing unit 102 can identify the developer identification information based on what is recorded in each application.

[0029] Referring to FIG. 2, a method 200 for determining expended activity time values is shown in accordance with one or more embodiments of the present invention. At block 202, the system operably communicates with the user's computing device and continuously receives activity data from all software development applications being executed on the user's computing device. The activity data includes descriptions of the software applications being used, the functions of the software applications being used by the developer, and time data indicating the start time and end time of each of the functions. The activity data may be included in the log files or audit trails of the software development applications. The system can further receive information regarding input signals from peripheral devices connected to the user's computing device.

[0030] At block 204, the system determines the length of time the developer was actively using each software development application. The system can calculate the expended activity time values by extracting the activity data and the input data from the peripheral devices. The system can apply a machine learning algorithm and receive as input the input signals and the activity data (e.g., audit trails) from the peripheral devices. The system is trained to predict whether a relationship exists between the input signals from the user's peripheral devices and the events described in the activity data. The system detects the relationship between the input signal and the event if the input signal from the peripheral device causes the generation of an event recorded in the activity data. Next, the system can calculate the length of the time interval between the first input signal from the peripheral device and the last input signal from any of the peripheral devices. The system can further calculate the unit time intervals between each successive input signals. If any of the unit time intervals exceeds a threshold amount, the system subtracts the unit time intervals from the time interval between the first input signal and the last input signal.

[0031] In block 206, the system verifies whether the developer has worked on the first work item or the second work item. The system can analyze the path name for each file worked on by the developer and compare a part of the path name with the master list of work items. If the path name of the second work item is not detected, further analysis is not required. If the path name of the second work item is detected, the system analyzes the input data and detects the first timestamp and the last timestamp related to the second work item. The system calculates the time interval of the second work item between the first time signal and the last time signal from any peripheral device. Next, in block 208, the system subtracts the time interval of the second work item from the activity time value spent on the first work item.

[0032] Referring to FIG. 3, a method 300 for adjusting the pipeline schedule is shown. In block 302, the system compares the currently spent activity time value of the developer with the estimated activity time value. The estimated activity value is an estimate of the total activity time required to complete the work item. The estimated activity time value can be determined by a user (e.g., a project manager or supervisor).

[0033] In block 304, the system determines whether the actual time spent by the developer is within a threshold smaller than the estimated time spent value. The threshold can be determined by a user (e.g., a project manager). The threshold can be a fixed time or a percentage of the estimated activity time value. For example, assume the threshold is 5 hours and the estimated time spent activity value is 30 hours. The system can determine whether the developer has 25 hours of activity time. For example, if the threshold is 20%, again the system can determine whether the developer has at least 25 hours of activity time.

[0034] In block 306, if the time actually spent by the developer is within the threshold of the estimated activity time value, the system schedules a second work item. For example, if the developer has worked on a work item for 25 hours, the developer is within the 5-hour threshold of the estimated 30 hours. In response to working for 25 hours, the developer's second work item can be scheduled before the completion of the developer's first work item. In block 308, if the developer's average activity time is not within the threshold, the system stops scheduling the second work item.

[0035] Although the present disclosure includes a detailed description of cloud computing, it should be understood that the implementation of the teachings presented herein is not limited to a cloud computing environment. Embodiments of the present invention can be implemented in combination with any other type of computing environment that is currently known or developed in the future.

[0036] 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), and these resources can be rapidly provisioned and released with minimal management effort or interaction with a service provider. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.

[0037] The characteristics are as follows.

[0038] On-demand self-service: Cloud users can automatically provision computing capabilities such as server time and network storage unilaterally without the need for human interaction with a service provider as needed.

[0039] Broad network access: The capabilities are network-accessible and can be accessed using standard mechanisms, facilitating use by heterogeneous thin or thick client platforms (such as mobile phones, laptops, and PDAs).

[0040] Resource pooling: The provider's computing resources are pooled and offered to multiple users using a multi-tenant model, and various physical and virtual resources are dynamically assigned and re-assigned according to demand. There is a sense of location independence, and users usually neither manage nor know about the exact location of the provided resources, although at a higher level of abstraction, it may be possible to specify a location (such as a country, state, or data center).

[0041] Rapid elasticity: The capabilities can be provisioned quickly and flexibly, sometimes automatically, scale out rapidly, and be released quickly to scale in. The capabilities available for provisioning often appear limitless to users, who can purchase any amount at any time.

[0042] Measured service: The cloud system automatically controls and optimizes resource use at an appropriate level of abstraction for the type of service (such as storage, processing, bandwidth, and active user accounts) by leveraging metering capabilities. Resource usage can be monitored, controlled, and reported, providing transparency to both the provider and the user of the services utilized.

[0043] The service model is as follows.

[0044] SaaS (Software as a Service): The capabilities provided to users are to utilize the provider's applications running on cloud infrastructure. These applications can be accessed from various client devices via a thin-client interface such as a web browser (e.g., web-based email). Users have no control or management over the underlying cloud infrastructure, which includes the network, servers, operating system, storage, or individual application features, except for limited user-specific application configuration settings which may be an exception.

[0045] PaaS (Platform as a Service): The capabilities provided to users are to deploy the applications created or acquired by the users, which are created using programming languages and tools supported by the provider, onto the cloud infrastructure. Users have no control or management over the underlying cloud infrastructure, which includes the network, servers, operating system, or storage, but can control the deployed applications and, in some cases, the configuration of the application hosting environment.

[0046] IaaS (Infrastructure as a Service): The capabilities provided to users are to provision processing, storage, network, and other basic computing resources, and users can deploy and run any software that can include an operating system and applications. Users have no control or management over the underlying cloud infrastructure, but can control the operating system, storage, deployed applications, and, in some cases, have limited control over selected network components (e.g., host firewall).

[0047] The deployment model is as follows.

[0048] Private cloud: This cloud infrastructure is operated only for an organization. It can be managed by this organization or a third party and can exist on-premises or off-premises.

[0049] Community cloud: This cloud infrastructure is shared by multiple organizations and supports a specific community that shares concerns (e.g., mission, security requirements, policies, and compliance considerations). It can be managed by these organizations or a third party and can exist on-premises or off-premises.

[0050] Public cloud: This cloud infrastructure is available for general users or large industry groups and is owned by an organization that sells cloud services.

[0051] Hybrid cloud: This cloud infrastructure is a composition of two or more clouds (private, community, or public) that are joined together while leaving their distinct entities, by means of standardized technologies or proprietary technologies (e.g., cloud bursting to adjust the load balance between clouds) that enable the migration of data and applications.

[0052] The cloud computing environment is a service-oriented environment that emphasizes statelessness, loose coupling, modularity, and semantic interoperability. At the center of cloud computing is an infrastructure that includes a network of interconnected nodes.

[0053] Referring now to FIG. 4, an exemplary cloud computing environment 50 is shown. As illustrated, cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices (e.g., personal digital assistant (PDA) or cellular phone 54A, desktop computer 54B, laptop computer 54C, or automotive computer system 54N, or a combination thereof, etc.) used by cloud consumers may communicate. The nodes 10 may communicate with one another. The nodes 10 may be physically or virtually grouped (not shown) in one or more networks into private clouds, community clouds, public clouds, or hybrid clouds, or combinations thereof, as described hereinabove. Thereby, cloud computing environment 50 can provide an infrastructure, platform, or SaaS, or a combination thereof, for which cloud consumers need not maintain resources on local computing devices. The types of computing devices 54A - N shown in FIG. 4 are only intended to be exemplary, and it is understood that cloud computing nodes 10 and cloud computing environment 50 can communicate with any type of computer - controlled device via any type of network or network - addressable connection (e.g., a connection using a web browser) or both.

[0054] Referring now to FIG. 5, a set of functional abstraction layers provided by cloud computing environment 50 (FIG. 4) is shown. It should be understood upfront that the components, layers, and functions shown in FIG. 5 are only intended to be exemplary and that embodiments of the invention are not limited thereto. As illustrated, the following layers and corresponding functions are provided.

[0055] The hardware and software layer 60 includes hardware components and software components. Examples of hardware components include mainframe 61, RISC (Reduced Instruction Set Computer) architecture-based server 62, server 63, blade server 64, storage device 65, and network and network components 66. In some embodiments, the software components include network application server software 67 and database software 68.

[0056] The virtualization layer 70 is an abstract layer that can provide virtual entities such as virtual server 71, virtual storage 72, virtual network 73 including a virtual private network, virtual applications and operating systems 74, and virtual clients 75.

[0057] For example, the management layer 80 may provide the functions described below. Resource provisioning 81 performs dynamic procurement of computing resources and other resources used to execute tasks within a cloud computing environment. Metering and pricing 82 performs cost tracking when resources are utilized within a cloud computing environment and sends invoices or bills for the use of those resources. For example, those resources may include application software licenses. Security performs ID verification of cloud users and tasks and protects data and other resources. The user portal 83 provides access to the cloud computing environment to users and system administrators. Service level management 84 allocates and manages cloud computing resources to meet the required service levels. Service level agreement (SLA) planning and execution 85 performs advance preparation and procurement of cloud computing resources for which future demands are expected, in accordance with the SLA.

[0058] The workload layer 90 shows examples of functions available in a cloud computing environment. Examples of workloads and functions that may be provided from this layer include mapping and navigation 91, software development and lifecycle management 92, delivery of virtual classroom education 93, data analysis processing 94, transaction processing 95, and aggregation of developer log data 96.

[0059] It is understood that the present disclosure can be implemented in combination with any other type of computing environment that is currently known or developed in the future. For example, FIG. 6 shows a block diagram of a processing system 600 for implementing the techniques described herein. In the example, the processing system 600 includes one or more central processing units (processors) 621a, 621b, 621c, etc. (collectively or generally referred to as processor 621 or processing device or both). In aspects of the present disclosure, each processor 621 can include a reduced instruction set computer (RISC) microprocessor. The processor 621 is coupled to a system memory (e.g., random access memory (RAM) 624) 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) that controls certain basic functions of the processing system 600.

[0060] Also shown are an input / output (I / O) adapter 627 and a network adapter 626 coupled to system bus 633. The I / O adapter 627 may be a small computer system interface (SCSI) adapter that communicates with a hard disk 623 or a storage device 625 or both, or any other similar components. The I / O adapter 627, the hard disk 623, and the storage device 625 are collectively referred to herein as mass storage 634. An operating system 640 for execution on the processing system 600 may be stored on the mass storage 634. The network adapter 626 interconnects the system bus 633 with an external network 636, enabling the processing system 600 to communicate with other such systems.

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

[0062] In some aspects of the present disclosure, the processing system 600 includes a graphics processing unit 637. The graphics processing unit 637 is a special electronic circuit designed to operate on and modify memory to speed up the creation of images in a frame buffer targeted for output to a display. Generally, the graphics processing unit 637 is very efficient in computer graphics and image processing operations and has an advanced parallel structure that makes it more effective than a general-purpose CPU for algorithms where large blocks of data are processed in parallel.

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

[0064] In this specification, various embodiments of the present invention are described with reference to the associated drawings. Alternative embodiments of the present invention may be devised without departing from the scope of the present invention. In the following description and drawings, various connections and positional relationships between elements (e.g., above, below, adjacent, etc.) are shown. Those connections or positional relationships or both can be direct or indirect unless otherwise specifically defined, and the present invention is not intended to be limited in this regard. Thus, a physical coupling can refer to a direct coupling or an indirect coupling, and a positional relationship between entities can be a direct positional relationship or an indirect positional relationship. Further, the various operations and process steps described herein can be incorporated into a more comprehensive procedure or process that includes additional steps or functions not described in detail herein.

[0065] One or more of the methods described herein may be implemented using any or a combination of techniques, each well known in the prior art, including discrete logic circuits that include logic gates for implementing logical functions on data signals, application specific integrated circuits (ASICs) that include appropriate combinational logic gates, programmable gate arrays (PGAs), field programmable gate arrays (FPGAs), and the like.

[0066] For the sake of brevity, the prior art related to the creation and use of aspects of the present invention may or may not be described in detail herein. Specifically, various computing systems and various aspects of specific computer programs for implementing the various technical features described herein are well known. Accordingly, for the sake of brevity, many details regarding conventional implementations are only briefly described herein, or are omitted entirely, without providing details of known systems or processes or both.

[0067] In some embodiments, various functions or operations may be performed at a particular location, or in connection with, or both, the operation of one or more devices or systems. In some embodiments, a portion of a particular function or operation may be capable of being performed at a first device or location, and the remaining portion of the function or operation may be performed at one or more additional devices or locations.

[0068] The terms used in this specification are for the purpose of describing particular embodiments only and are not intended to be limiting. As used herein, the singular forms "a", "an", and "the" are intended to include the plural forms as well, unless the context clearly dictates otherwise. The terms "comprising", "comprises", and / or "comprising", when used in this specification, specify the presence of the stated feature, integer, step, operation, element, or component, or a combination thereof, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or groups thereof, or a combination thereof.

[0069] All means or steps and corresponding structures, materials, acts, and equivalents of the functional elements in the claims below are intended to include any structure, material, or act for performing the functions in combination with the other claimed elements specifically claimed. This disclosure is presented for purposes of illustration and description but is not intended to be exhaustive or limited to the disclosed forms. It will be apparent to those skilled in the art that many modifications and variations are possible without departing from the scope of the disclosure. Embodiments were chosen and described in order to best explain the principles of the disclosure and its practical application, and to enable others skilled in the art to understand the disclosure for various embodiments with various modifications as are suited to the particular use contemplated.

[0070] The figures shown in this specification are illustrative. Many variations of the figures or steps (or acts) described herein are possible without departing from the disclosure. For example, acts may be performed in a different order, or acts may be added, deleted, or changed. Also, the term "coupled" represents that there is a signal path between two elements and does not mean a direct connection between the elements without an element / connection intervening therebetween. All of these variations are considered to be part of the disclosure.

[0071] The following definitions and abbreviations are used in the claims and the interpretation of this specification. As used herein, the terms "comprising," "comprises," "including," "includes," "having," "has," "containing," "contains," or any other variation thereof are intended to cover non-exclusive inclusion. For example, a composition, mixture, process, method, product, or apparatus that includes a list of elements is not necessarily limited to only those elements, and may include other elements not expressly listed or inherent to such composition, mixture, process, method, product, or apparatus.

[0072] Furthermore, the term "exemplary" is used herein to mean "serving as an example, instance, or illustration." Embodiments or designs described herein as "exemplary" should not necessarily be construed as preferred or advantageous over other embodiments or designs. The terms "at least one" and "one or more" are understood to include any integer greater than or equal to one (i.e., 1, 2, 3, 4, etc.). The term "plurality" is understood to include any integer greater than or equal to two (i.e., 2, 3, 4, 5, etc.). The term "connected" can include both indirect "connection" and direct "connection."

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

[0074] The present invention may be a system, method, or computer program product, or a combination thereof, at any possible level of integration of technical details. The computer program product may include a computer-readable storage medium including computer-readable program instructions for causing a processor to execute aspects of the present invention.

[0075] A computer-readable storage medium can be a tangible device that can hold and store instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof, but is not limited thereto. A non-exhaustive list of more specific examples of computer-readable storage media includes portable floppy (R) disks, hard disks, 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 disc (DVD), memory stick, floppy (R) disk, mechanically encoded devices such as punch cards or raised structures in grooves in which instructions are recorded, and any suitable combination thereof. As used herein, a computer-readable storage medium should not be construed to be a transient signal such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., an optical pulse passing through an optical fiber cable), or an electrical signal transmitted through a wire.

[0076] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device, or to an external computer or external storage device via a network (e.g., the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof). This network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface within each computing / processing device receives the computer-readable program instructions from the network and transfers them for storage on a computer-readable storage medium within each computing / processing device.

[0077] Computer-readable program instructions for carrying out the operations of the present invention may be any combination of source code or object code written in any one or more programming languages, including assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuits, or object-oriented programming languages such as Smalltalk(R), C++, and procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may be executed entirely on the user's computer, partially executed on the user's computer as a stand-alone software package, partially executed on the user's computer and a remote computer respectively, or executed entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, to carry out aspects of the present invention, an electronic circuit, including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may execute computer-readable program instructions for customizing the electronic circuit by utilizing the state information of the computer-readable program instructions.

[0078] Aspects of the invention will be described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.

[0079] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in the block or blocks of the flowchart and / or block diagram. These computer readable program instructions may be stored in a computer readable storage medium that includes instructions for causing a computer, programmable data processing apparatus, or other device to function in a particular manner, such that the storage medium is a product including instructions for implementing the aspects of the functions / acts specified in the block or blocks of the flowchart and / or block diagram.

[0080] The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions / acts specified in the block or blocks of the flowchart and / or block diagram.

[0081] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagram may represent a module, segment, or portion of instructions comprising one or more executable instructions for implementing the specified logical function. In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or in the reverse order, depending upon the functionality involved. It should also be noted that each block of the block diagrams or flowchart diagrams, or combinations of blocks in the block diagrams or flowchart diagrams or both, can be implemented by a dedicated hardware-based system that performs the specified functions or operations, or combinations of dedicated hardware and computer instructions.

[0082] The description of the various embodiments of the present invention has been presented for purposes of illustration, but 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 terms used herein were chosen in order to best explain the principles of the embodiments, the practical application, or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments described herein.

Claims

**Claim 1** A computer-implemented method, the computer-implemented method comprising: retrieving, by a processor, developer activity data from a software development application and a plurality of input signals generated by a peripheral device; determining, by the processor, a causal relationship between the plurality of input signals and all events represented by the activity data; calculating, by the processor, a first time interval between a first signal and a last signal among the plurality of input signals in response to the determination of the causal relationship, the first time interval being related to a first work item; comparing, by the processor, the first time interval with an estimated time interval, the estimated time interval being an estimated time of activity time required for the developer to complete the first work item; determining, by the processor, a schedule for a second work item based on the comparison; and the computer-implemented method further comprising: calculating, by the processor, each time interval between each consecutive input signal among the plurality of input signals; comparing, by the processor, each time interval with a threshold time interval; subtracting, by the processor, the length of each time interval exceeding the threshold time interval from the first time interval. A computer-implemented method. **Claim 2** A computer-implemented method, the computer-implemented method comprising: retrieving, by a processor, developer activity data from a software development application and a plurality of input signals generated by a peripheral device; determining, by the processor, a causal relationship between the plurality of input signals and all events represented by the activity data; calculating, by the processor, a first time interval between a first signal and a last signal among the plurality of input signals in response to the determination of the causal relationship, the first time interval being related to a first work item; comparing, by the processor, the first time interval with an estimated time interval, the estimated time interval being an estimated time of activity time required for the developer to complete the first work item; ​ determining, by the processor, a schedule for a second work item based on the comparison, wherein the first time interval is associated with a first work item, the determining including wherein the computer-implemented method selecting, by the processor, one application programming interface from a series of application programming interfaces for communicating with the software development application further including a computer-implemented method **Claim 3** A computer-implemented method, wherein the computer-implemented method retrieving, by the processor, developer activity data from a software development application and a plurality of input signals generated by peripheral devices determining, by the processor, a causal relationship between the plurality of input signals and all events represented by the activity data calculating, by the processor, in response to the determination of the causal relationship, a first time interval between a first signal and a last signal among the plurality of input signals, wherein the first time interval is associated with a first work item, the calculating comparing, by the processor, the first time interval with an estimated time interval, wherein the estimated time interval is an estimated time of activity time required for the developer to complete the first work item, the comparing determining, by the processor, a schedule for a second work item based on the comparison, wherein the first time interval is associated with a first work item, the determining including wherein the activity data includes a log file or an audit trail a computer-implemented method **Claim 4** A computer-implemented method, wherein the computer-implemented method retrieving, by the processor, developer activity data from a software development application and a plurality of input signals generated by peripheral devices determining, by the processor, a causal relationship between the plurality of input signals and all events represented by the activity data calculating, by the processor, in response to the determination of the causal relationship, a first time interval between a first signal and a last signal among the plurality of input signals, wherein the first time interval is associated with a first work item, the calculating comparing, by the processor, the first time interval with an estimated time interval, wherein the estimated time interval is an estimated time of an activity time required for the developer to complete the first work item; determining, by the processor, a schedule of a second work item based on the comparison, wherein the first time interval is related to the first work item; comprising; wherein the activity data includes plain text, and the method further includes, by the processor, applying natural language processing techniques to understand the meaning of the plain text; A computer-implemented method. The computer-implemented method according to any one of claims 1 to 4, wherein comparing, by the processor, the first time interval with the estimated time interval includes determining whether the first time interval is smaller than the estimated time interval by a threshold time interval. detecting, by the processor, that the software development application is operating on a file; detecting, by the processor, a path name of the file; detecting, by the processor, first work item identification information by comparing the first work item identification information with the path name; The computer-implemented method according to any one of claims 1 to 5, further comprising. calculating, by the processor, each time interval between each consecutive input signal among the plurality of input signals; comparing, by the processor, each time interval with a threshold time interval; subtracting, by the processor, a length of each time interval exceeding the threshold time interval from the first time interval; The computer-implemented method according to any one of claims 2 to 4, further comprising. The computer-implemented method according to any one of claims 1 and 3 to 4, further comprising selecting, by the processor, one application programming interface from a series of application programming interfaces for communicating with the software development application.

9. The computer-implemented method according to any one of claims 1 to 2 and 4, wherein the activity data includes a log file or an audit trail.

10. The computer-implemented method according to any one of claims 1 to 3, wherein the activity data includes plain text, and the method further includes the processor applying natural language processing techniques to understand the meaning of the plain text.

11. A system comprising a memory containing computer-readable instructions, and one or more processors for executing the computer-readable instructions, wherein the computer-readable instructions control the one or more processors to retrieve, by the processor, developer activity data from a software development application and a plurality of input signals generated by peripheral devices; determine, by the processor, a causal relationship between the input data and all events represented by the activity data; calculate, by the processor, a first time interval between a first signal and a last signal among the plurality of input signals in response to the determination of the causal relationship, the first time interval being associated with a first work item; compare, by the processor, the first time interval with an estimated time interval, the estimated time interval being an estimated time of activity required for the developer to complete the first work item; determine, by the processor, a schedule for a second work item based on the comparison; perform operations including wherein the operations further include calculating each time interval between each consecutive input signal among the plurality of input signals; comparing each time interval with a threshold time interval; subtracting, from the first time interval, the length of each time interval that exceeds the threshold time interval; and a system.

12. A system comprising a memory containing computer-readable instructions, and one or more processors for executing the computer-readable instructions, wherein the computer-readable instructions control the one or more processors to retrieve, by the processor, developer activity data from a software development application and a plurality of input signals generated by peripheral devices; determine, by the processor, a causal relationship between the input data and all events represented by the activity data; Calculating, by the processor, a first time interval between a first signal and a last signal among the plurality of input signals in response to a determination of a causal relationship, 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 estimated time of an activity time required for the developer to complete the first work item; Determining, by the processor, a schedule for a second work item based on the comparison; Performing an operation including; The operation further includes; Selecting one application programming interface from a series of application programming interfaces for communicating with the software development application; A system. A system.

13. A system comprising a memory containing computer-readable instructions, and One or more processors for executing the computer-readable instructions, wherein the computer-readable instructions control the one or more processors to: Retrieving, by the processor, developer activity data from a software development application and a plurality of input signals generated by peripheral devices; Determining, by the processor, a causal relationship between the input data and all events represented by the activity data; Calculating, by the processor, a first time interval between a first signal and a last signal among the plurality of input signals in response to a determination of a causal relationship, 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 estimated time of an activity time required for the developer to complete the first work item; Determining, by the processor, a schedule for a second work item based on the comparison; Performing an operation including; The activity data includes a log file or an audit trail. A system.

14. A system comprising a memory containing computer-readable instructions, and One or more processors for executing the computer-readable instructions ​ A system comprising, wherein the computer-readable instructions control the one or more processors to retrieve, by the processor, developer activity data from a software development application and a plurality of input signals generated by peripheral devices; determine, by the processor, a causal relationship between the input data and all events represented by the activity data; calculate, by the processor, a first time interval between a first signal and a last signal among the plurality of input signals in response to the determination of the causal relationship, wherein the first time interval is related to a first work item; compare, by the processor, the first time interval with an estimated time interval, wherein the estimated time interval is an estimated time of activity time required for the developer to complete the first work item; determine, by the processor, a schedule for a second work item based on the comparison; perform operations including wherein the activity data includes plain text; wherein the operations further include applying natural language processing techniques to understand the meaning of the plain text; system.

15. The system according to any one of claims 11 to 14, wherein the operation of comparing the first time interval with the estimated time interval includes determining whether the first time interval is less than a threshold time interval than the estimated time interval.

16. wherein the operations further include detecting that the software development application is operating on a file; detecting a path name of the file; comparing first work item identification information with the path name to detect the first work item identification information. The system according to any one of claims 11 to 15.

17. wherein the operations further include calculating each time interval between each consecutive input signal among the plurality of input signals; comparing each time interval with a threshold time interval; subtracting, from the first time interval, the length of each time interval exceeding the threshold time interval. The system according to any one of claims 12 to 14.

18. The system according to any one of claims 11 and 13 to 14, wherein the operation further includes selecting one application programming interface from a series of application programming interfaces to communicate with the software development application.

19. The system according to any one of claims 11 to 12 and 14, wherein the activity data includes a log file or an audit trail.

20. A computer program, The computer program that causes a processor to execute each step of the method according to any one of claims 1 to 10.

Citation Information

Patent Citations

  • Project management system and project management method

    JP2007272655A

  • Work time accumulating device, work time accumulating method, and work time accumulation program

    JP2011164936A

  • Progress bar

    JP2013186907A

  • Desktop environment management program, desktop environment management method, and information processing device

    JP2016057721A

  • Cloud management device, method for managing same, and system thereof

    WO2015052823A1