US20160132418A1 - Optimized generation of data for software problem analysis - Google Patents

Optimized generation of data for software problem analysis Download PDF

Info

Publication number
US20160132418A1
US20160132418A1 US14/735,587 US201514735587A US2016132418A1 US 20160132418 A1 US20160132418 A1 US 20160132418A1 US 201514735587 A US201514735587 A US 201514735587A US 2016132418 A1 US2016132418 A1 US 2016132418A1
Authority
US
United States
Prior art keywords
analysis
data
software problem
optimizing
processors
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US14/735,587
Inventor
Markus Reichart
Michael K. Schaefer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US14/735,587 priority Critical patent/US20160132418A1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: REICHART, MARKUS, SCHAEFER, MICHAEL K.
Publication of US20160132418A1 publication Critical patent/US20160132418A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases

Definitions

  • the present invention relates generally to the field of software problem determination, and more particularly to data generation for software problem analysis.
  • data generation When analyzing a software problem, it is desired to have enough data to enable a successful analysis. However, generating excess data, while often not detrimental to the analysis, may adversely impact system performance. System administrators try to balance the need for sufficient data against the performance impact of generating that data. Finding an optimum balance is often a continual trial and error proposition.
  • Embodiments in accordance with the present invention disclose a method, computer program product, and system for optimizing prospective generation of data used for analysis of a software problem.
  • a computer generates data in accordance with data generation parameters.
  • a computer analyzes the data generated and creates a report detailing the nature of the software problem, the data that was available for the analysis, a flag to indicate whether the analysis was able identify a root cause of the software problem, and information to identify whether the data supplied was insufficient, sufficient, or superfluous with respect to identifying a root cause of the software problem.
  • a computer modifies the data generation parameters in accordance with the analysis report, to iteratively optimize data generated for analysis of subsequent software problems.
  • FIG. 1 is an illustrative diagram of a data processing environment, generally designated 100 , is provided in which embodiments in accordance with the present invention may be implemented;
  • FIG. 2 depicts a feedback loop, in an embodiment in accordance with the present invention, to automatically and continuously optimize generation of data for problem analysis;
  • FIG. 3 is a flowchart depicting functions comprising the feedback loop, in an embodiment in accordance with the present invention.
  • FIG. 4 depicts a block diagram of components of system 110 , in accordance with an illustrative embodiment in accordance with the present invention.
  • a user may contact the product vendor, or in-house support, to seek a solution.
  • An automated system may analyze certain data, to attempt to identify the cause of the problem. Types of problems that a user might encounter include a system crash, slow system performance, unexpected system behavior, etc.
  • the amount and types of data sufficient to identify the root cause of a problem differ from case to case. For example, to successfully analyze a problem such as “Accessing a non-initialized variable (NullPointerException),” it may be sufficient to examine the exception call stack. However, a “memory leak” problem may be particularly difficult to analyze, and may require the user to reproduce the problem in a production environment, using special trace settings. Moreover, there may be multiple iterations before the root cause can be identified.
  • the data generation parameters may be configured such that a minimum amount of problem analysis data is generated.
  • the change often may be initiated by a system administrator.
  • Embodiments in accordance with the present invention introduce a feedback loop to iteratively optimize data generated for analysis of a software problem and thereby enable the analysis to converge on a solution to the problem and further to optimize data generation for analysis of a subsequent problem. Components and operational aspects of the feedback loop are discussed below, particularly with reference to FIGS. 2 and 3 .
  • FIG. 1 an illustrative diagram of a data processing environment, generally designated 100 , is provided in which embodiments in accordance with the present invention may be implemented. It should be appreciated that FIG. 1 is only illustrative and is intended neither to assert nor imply any limitation with regard to the environments in which aspects of embodiments in accordance with the present invention may be implemented. Many modifications to the depicted environment may be made without departing from the spirit and scope of the present invention.
  • Data processing environment 100 includes a data processing system, designated as system 110 , and one or more each, of user 135 , client 106 , and analyzer 125 respectively and administrator 130 , interconnected over network 105 .
  • the data processing environment may further comprise data generation parameters 120 , and data 115 .
  • data 115 is generated, according to data generation parameters 120 .
  • data 115 is a source of information which analyzer 125 can reference when analyzing the problem.
  • Data 115 may be composed of data units comprising various types of data, in various respective quantities, including trace files, screenshots, logs of user actions, video files, audio files, etc.
  • Data generation parameters 120 may define, at least, which data units are generated, maximum sizes for certain data units, and conditions under which older data units are discarded or replaced with newer ones, etc.
  • data generation parameters 120 might specify a maximum number of five trace files, of 20 MB maximum size. In this example, when five trace files already exist, and a sixth one is created, the oldest of the previous five is discarded.
  • System 110 may be a mainframe computer, a desktop computer, a laptop computer, a specialized computer server, or any other computer system known in the art.
  • system 110 represents a computer system utilizing clustered computers and components that act as a single seamless pool of resources, when accessed through network 105 , as is common in data centers and with cloud computing applications.
  • system 110 is representative of any programmable electronic device or combination of programmable electronic devices capable of executing machine-readable program instructions and communicating with other computing devices via a network. Components of system 110 are described in greater detail with reference to FIG. 4 .
  • client 106 can be a laptop computer, a desktop computer, or any programmable electronic device capable of communicating with system 110 , either via a direct connection or via network 105 .
  • network 105 can be any combination of connections and protocols that will support communications between system 110 and client 106 .
  • Network 105 can include, for example, a local area network (LAN), a wide area network (WAN) such as the internet, or any combination of the preceding, and can further include wired, wireless, and/or fiber optic connections.
  • LAN local area network
  • WAN wide area network
  • Analyzer 125 can be an automated system operationally coupled with system 110 .
  • the function of analyzer 125 is to analyze software problems arising in the operation of system 110 .
  • analyzer 125 employs various computer-implemented analysis techniques, some of which include cognitive computing techniques, image analysis in conjunction with character recognition, pattern recognition and other suitable techniques, toward the end of finding a root cause of the problem.
  • a root cause of a problem is defined herein as one or more causes, that when eliminated, will prevent or significantly reduce the likelihood of a recurrence of the problem.
  • FIG. 2 depicts a feedback loop, in an embodiment in accordance with the present invention, to automatically and continuously optimize generation of data for problem analysis.
  • the feedback loop comprises at least the following components operating within environment 100 of FIG. 1 : Data generation parameters 120 ; data 115 , generated according to data generation parameters 120 ; analyzer 125 ; analysis report 225 produced by analyzer 125 ; optimizer 205 comprising rules engine 210 and one or more optimizing rules 215 ; and analysis history 220 which is accumulated by saving and accumulating one or more analysis report 225 .
  • Analysis report 225 is created by analyzer 125 .
  • Analysis report 225 may comprise: 1) Flag 235 , a Boolean element, to indicate whether the analysis is a success or a failure.
  • a failed analysis is one in which analyzer 125 is not able to identify a root cause of a software problem under analysis.
  • a failed analysis may be indicated when flag 235 is set to a first pre-determined value, for example: “FALSE”.
  • a successful analysis is one in which analyzer 125 is able to identify a root cause of a problem under analysis.
  • a successful analysis may be indicated when flag 235 is set to a second pre-determined value, for example: “TRUE”; 2) A problem description, comprising, for example, a stack trace, a formal problem classification, freeform text, etc., or any combination thereof; 3) An assessment and classification of the usefulness of data 115 , determined by assessing whether data 115 was necessary and of sufficient quantity for a successful analysis of the problem, wherein the classification indicates at least: 3a) Sufficiency of each type of data included in data 115 for a successful analysis; 3b) For each type of data included in data 115 , whether too little, too much, or the correct amount of data was included; and 3c) Whether data types absent from data 115 would have been required for a successful analysis.
  • Analysis history 220 is a repository storing an accumulation of analysis reports 225 pertaining to one or more software problem analyses.
  • Analysis history 220 comprises a historical record of previous problem analyses as recorded in analysis reports 225 .
  • Analysis history 220 can also store results of previous optimizations.
  • Optimizer 205 can make reference to analysis history 220 , as required, for evaluation of optimizing rules 215 .
  • Analysis history 220 may comprise a relational database or any other suitable data storage implementation in an embodiment in accordance with the present invention, to accumulate, retain and retrieve data from analysis reports 225 .
  • Analysis report 225 is formatted such that it can be read by rules engine 210 .
  • Examples of formatting options for analysis report 225 include: An XML document based on a data structure adapted for the present purpose; a data object that can be serialized and deserialized; or a text document or a spreadsheet with a predefined data structure.
  • Analysis report 225 may also comprise one or more records in a relational database.
  • Optimizer 205 comprises rules engine 210 and at least one optimizing rule 215 .
  • Optimizer 205 can modify data generation parameters 120 , according to evaluation results of optimizing rules 215 , in order to optimize data 115 for efficient problem analysis.
  • Various evaluation strategies can be implemented by optimizer 205 , such as, but not limited to: 1) Applying only the first rule that evaluates to “True”; or 2) Applying more than one rule that evaluate to “True”. Whichever strategy is implemented is an aspect of a particular embodiment in accordance with the present invention, and is neither defined nor limited by this disclosure.
  • Optimizer 205 can be part of system 110 , or it can be on one or more separate systems. Furthermore, multiple optimizers 205 , included in multiple feedback loops, can be implemented that independently optimize different aspects of system 110 .
  • An optimizing rule 215 comprises a Boolean condition and one or more actions.
  • a Boolean condition is a logical test that can be resolved either to “True” or “False”.
  • optimizing rule 215 is evaluated and its Boolean condition resolves to “True,” the one or more actions defined by optimizing rule 215 are triggered.
  • Complex optimizing rules 215 can be defined so as to consider, among other things, analysis results from previous optimizations. For example, it would be possible for optimizer 215 to cause system 110 to revert directly to a previously optimized state when system 110 characteristics change (such as when a fix is installed) without having to gradually converge again toward the optimized state.
  • optimizing rules 215 can be defined so as to modify system 110 .
  • modifications could include, for example: 1) Applying a diagnostic component to provide additional analysis data that otherwise would not exist; 2) Modifying applications installed on system 110 by, for example, adding trace statements to a JavaScript program; 3) Making a configuration change not directly related to error analysis but that indirectly enables efficient diagnosis of the error: For example, in an OutOfMemory error, size of allocated memory could be increased in order subsequently to determine whether the error might be caused by insufficient memory allocation, a memory leak, or an infinite loop.
  • the plurality of optimizing rules 215 can be configured to achieve certain optimization goals. For example, different goals could be desired for a development environment as opposed to a production environment. One goal could be to minimize the overall performance impact of the data generation process, thus accepting a certain proportion of problems that cannot be analyzed successfully. Another goal could be to achieve a specified minimum analysis success rate. Some goals might be based on a specific timeframe (for example: less data generated on the weekend, and more during the week. Furthermore, multiple goals could be implemented concurrently, such as for example, to have a minimal system performance impact that also achieves a specified minimum analysis success rate.
  • Optimizer 205 uses rules engine 210 to evaluate optimizing rules 215 .
  • rules engine 210 can be evaluated, for example, responsive to receipt of a new analysis report 225 , or based on a defined schedule.
  • An optimizing rule 215 could specify, as part of its Boolean condition, when it should be evaluated, such as for example, after a specified number of analysis reports 225 were received or when a specified amount of time has elapsed since its previous evaluation.
  • One or more actions defined in optimizing rule 215 when carried out, can modify data generation parameters 120 or system 110 configuration parameters, both of which may in turn, influence continuing generation of data 115 , thus completing the feedback loop. More particularly, actions can, for example: Disable generation of types of data that have proven to be of little use; enable generation of data types that were required by analyzer 125 but not included in data 115 ; modify trace settings such that more or fewer traces are written; modify system 110 configuration by, for example, installing fixes or patches for debugging purposes, or by uninstalling fixes or patches that were previously used for debugging purposes, and are no longer required; or modify an optimizing rule 215 , thereby indirectly affecting data generation parameters 120 , by altering the conditions under which certain modifications to data generation parameters 120 are carried out.
  • Optimizing rules 215 may be defined with respect to relevant factors. In some embodiments in accordance with the present invention, a default set of optimizing rules 215 is provided for example, as an aspect of the system or software product. Optimizing rules 215 can subsequently be modified, for example, to reflect changes in optimization goals, changes in system configuration, or ongoing problem analysis performance. Furthermore, optimizing rules 215 may be updated automatically by optimizer 205 , by, for example, performing actions triggered by optimizing rules 215 .
  • Ruleset 1 takes into account, that by default, only a limited number of trace files are kept at a time (for example 5 trace files are kept at a time with a maximum size of 20 MB each). If a problem analysis requires a trace file older than the oldest trace file retained, the analysis cannot be successful, because the required trace file will have already been deleted. Therefore, ruleset 1 increases or decreases the number of trace files, according to the Boolean conditions in the rules, in order to find a number of trace files such that there will be enough trace files for problem analysis in most cases.
  • Rule 1 - 1 If an analysis was not successful, and analysis report 225 states that not enough trace files existed for a successful analysis, increase, by 1, the number of trace files that are retained.
  • Rule 1 - 2 If the analysis was successful, and analysis report 225 states that more trace files were provided than required for the successful analysis, decrease, by 1, the number of trace files that are retained.
  • Ruleset 2 is designed to determine the best trace level for system 110 .
  • the trace level steps can be, in ascending order from least detailed to most detailed, for example, “None, Info, Fine, Finer, Finest, All”.
  • a trace level controls the amount of information that is written to the trace files, the greatest amount being written when trace level is set to “All”. When more information is written to the trace files, the performance impact to system 110 is greater than when lesser information is written.
  • Rule 2 - 1 Based on data in analysis history 220 , if fewer than 80 percent of analyses in the last 30 days were successful, increase the trace level by one step.
  • Rule 2 - 2 Based on data in analysis history 220 , if more than 90 percent of analyses in the last 30 days were successful, decrease the trace level by one step.
  • Ruleset 3 describes a generic logic to enable or disable generation of specific data types, based on the result of a problem analysis.
  • Rule 3 - 1 If an analysis is not successful, and analysis report 225 states that a specific type of data would be required for a successful analysis, but was missing from data 115 , enable generation of the missing data type.
  • Rule 3 - 2 If the analysis was successful, and analysis report 225 states that a specific type of data was provided, but was not required for the analysis, disable generation of the unnecessary data type.
  • Ruleset 4 checks whether an additional type of data should be generated. If an error occurs in the component “com.ibm.bpm.dataAccessLayer” (which can be determined, for example, based on an exception call stack, or based on user 135 feedback), then the SQL log files are required for a successful analysis because they provide further insights into the database processing. If errors no longer occur in “com.ibm.bpm.dataAccessLayer” because, for example, a fix was installed, thus changing system 110 characteristics, then it is no longer required to generate the SQL log files.
  • Rule 4 - 1 Based on data in analysis history 220 , if in the last five days, more than one error occurred in the component “com.ibm.bpm.dataAccessLayer”, capture the SQL log files whenever they are changed.
  • Rule 4 - 2 Based on data in the analysis history 220 , if in the last five days, no error occurred in the component “com.ibm.bpm.dataAccessLayer”, stop capturing the SQL log files.
  • Ruleset 5 optimizes the system when multiple users report issues with the same dialog in a user interface. This type of issue can be difficult successfully to analyze, because it can depend on the order in which the user clicked elements in the dialog, on data in the system 110 backend, or other factors. Therefore, it is often not enough, for analysis purposes, to look only at a trace. Ruleset 5 enables the (voluntary) recording of a user's actions within this specific dialog (in the present example, a “CreateNewInsuranceClaim” dialog). The recording could be a log of user actions (text input, mouse clicks, etc.) or screenshots that are taken upon each user action.
  • Rule 5 - 1 Based on the data in analysis history 220 , if in the last 24 hours, at least two users reported issues using the “CreateNewInsuranceClaim” dialog, enable the voluntary recording of user actions in this dialog.
  • Rule 5 - 2 Based on the data in the analysis history 220 , if in the last 24 hours, fewer than two users reported issues with using the “CreateNewInsuranceClaim” dialog, disable the recording of user actions in this dialog.
  • Ruleset 6 is directed at a specific component to demonstrate how an optimizing rule can be narrowly targeted if, for example, the component generates a number of errors in excess of a predefined threshold.
  • Ruleset 6 demonstrates a narrowly targeted example optimization of data 115 .
  • Rule 6 - 2 Based on data in analysis history 220 , if the tracing for component “com.ibm.bpm.common” is active, and the last 2 error analyses for the component were successful, and the provided trace information was more than required, decrease the trace level by one step.
  • Rule 6 - 3 Based on data in analysis history 220 , if the tracing for component “com.ibm.bpm.common” is active, and the last 2 error analyses for this component were not successful, and the provided trace information was not enough, increase the trace level by one step.
  • Rule 6 - 4 Based on data in analysis history 220 , if in the last 24 hours no errors occurred in the component “com.ibm.bpm.common”, disable the trace setting “com.ibm.bpm.common.*”.
  • Ruleset 7 is an example of rules that require detailed knowledge about the system. In this example, enhanced tracing is only available beginning with a specific version of the installed software.
  • FIG. 3 is a flowchart depicting functions comprising the feedback loop in an embodiment in accordance with the present invention.
  • system 110 During normal system operation (block 310 and decision 312 “No” branch), system 110 generates data 115 , according to data generation parameters 120 . Responsive to occurrence of a problem (decision 312 , “Yes” branch), data 115 , along with a problem description, are passed to analyzer 125 (block 314 ).
  • Analyzer 125 analyzes the problem (block 316 ), based at least in part, on data 115 and the problem description. Analyzer 125 produces analysis report 225 and sends it to optimizer 205 (block 318 ). Analysis report 225 is stored in analysis history 220 (block 320 ).
  • rules engine 210 evaluates optimizing rules 215 , based at least in part, on analysis report 225 and analysis history 220 (block 322 ). If, for all rules tested, their Boolean conditions evaluate to “False” (decision 324 , “No” branch), normal system operation resumes (block 310 and decision 312 ).
  • optimizer 205 performs the actions of those optimizing rule(s) 215 that evaluated to “True” (block 328 ) and normal system operation resumes (block 310 and decision 312 , “No” branch).
  • the paths, represented in the flowchart of FIG. 3 , from block 314 through block 310 constitute a feedback loop, wherein occurrence of a problem triggers not only an analysis of the problem, but an analysis of the data supplied to diagnose the problem.
  • modifications to the parameters that govern generation of the data may be made, modifications such that if it would have been useful to have additional data, additional data may be generated in the future and if extraneous data had been supplied, less data may be generated in the future.
  • FIG. 4 depicts a block diagram of components of system 110 , in accordance with an illustrative embodiment in accordance with the present invention. It should be appreciated that FIG. 4 provides only an illustration of one implementation and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made. For example, system 110 may comprise components spread through multiple systems and resources and may provide systems and resources beyond what is necessary to operate embodiments of the present invention.
  • System 110 includes communications fabric 402 , which provides communications between computer processor(s) 404 , memory 406 , persistent storage 408 , communications unit 410 , and input/output (I/O) interface(s) 412 .
  • Communications fabric 402 can be implemented with any architecture designed for passing data and/or control information between processors (such as microprocessors, communications and network processors, etc.), system memory, peripheral devices, and any other hardware components within a system.
  • processors such as microprocessors, communications and network processors, etc.
  • Communications fabric 402 can be implemented with one or more buses.
  • Memory 406 and persistent storage 408 are computer-readable storage media.
  • memory 406 includes random access memory (RAM) 414 and cache memory 416 .
  • RAM random access memory
  • cache memory 416 In general, memory 406 can include any suitable volatile or non-volatile computer-readable storage medium.
  • persistent storage 408 includes a magnetic hard disk drive.
  • persistent storage 408 can include a solid state hard drive, a semiconductor storage device, read-only memory (ROM), erasable programmable read-only memory (EPROM), flash memory, or any other computer-readable storage medium that is capable of storing program instructions or digital information.
  • the media used by persistent storage 408 may also be removable.
  • a removable hard drive may be used for persistent storage 408 .
  • Other examples include optical and magnetic disks, thumb drives, and smart cards that are inserted into a drive for transfer onto another computer-readable storage medium that is also part of persistent storage 408 .
  • Communications unit 410 in these examples, provides for communications with other data processing systems or devices, including systems and devices within or controlled by system 110 .
  • communications unit 410 includes one or more wireless network interface cards.
  • Communications unit 410 may provide communications through the use of either or both physical and wireless communications links.
  • Computer programs and processes, software and data may be downloaded to persistent storage 408 through communications unit 410 .
  • I/O interface(s) 412 allows for input and output of data with other devices that may be connected to system 110 .
  • I/O interface 412 may provide a connection to external devices 418 such as a keyboard, keypad, a touch screen, and/or some other suitable input device.
  • External devices 418 can also include portable computer-readable storage media such as, for example, thumb drives, portable optical or magnetic disks, and memory cards.
  • Software and data used to practice embodiments of the present invention can be stored on such portable computer-readable storage media and can be loaded onto persistent storage 408 via I/O interface(s) 412 .
  • I/O interface(s) 412 may also connect to a display 420 .
  • Display 420 provides a mechanism to display data to a user and may be, for example, a touch screen or a computer monitor.
  • the present invention may be a system, a method, and/or a computer program product.
  • the computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
  • the computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device.
  • the computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing.
  • a non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing.
  • RAM random access memory
  • ROM read-only memory
  • EPROM or Flash memory erasable programmable read-only memory
  • SRAM static random access memory
  • CD-ROM compact disc read-only memory
  • DVD digital versatile disk
  • memory stick a floppy disk
  • a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon
  • a computer readable storage medium is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
  • Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network.
  • the network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers.
  • a network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
  • Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
  • the computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
  • the remote computer may be connected to the user's computer through 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 (for example, through the Internet using an Internet Service Provider).
  • electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
  • 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 flowchart and/or block diagram block or blocks.
  • These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
  • 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 to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
  • each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s).
  • the functions noted in the block may occur out of the order noted in the figures.
  • two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.

Abstract

A computer optimizes the prospective generation of data used for analysis of a software problem. The computer generates data in accordance with data generation parameters and a software problem is analyzed with reference to the data so generated. The problem analysis produces a report that details specifics of the software problem, the data that was available for analysis, a flag to indicate success or failure of the analysis to identify a root cause, and information about whether the data supplied was insufficient, sufficient, or superfluous with respect to identifying a root cause of the software problem. The method then uses the analysis report to modify the data generation parameters, thereby iteratively optimizing the data that are generated for analysis of subsequent software problems.

Description

    BACKGROUND OF THE INVENTION
  • The present invention relates generally to the field of software problem determination, and more particularly to data generation for software problem analysis. When analyzing a software problem, it is desired to have enough data to enable a successful analysis. However, generating excess data, while often not detrimental to the analysis, may adversely impact system performance. System administrators try to balance the need for sufficient data against the performance impact of generating that data. Finding an optimum balance is often a continual trial and error proposition.
  • SUMMARY
  • Embodiments in accordance with the present invention disclose a method, computer program product, and system for optimizing prospective generation of data used for analysis of a software problem. In one embodiment, a computer generates data in accordance with data generation parameters. A computer analyzes the data generated and creates a report detailing the nature of the software problem, the data that was available for the analysis, a flag to indicate whether the analysis was able identify a root cause of the software problem, and information to identify whether the data supplied was insufficient, sufficient, or superfluous with respect to identifying a root cause of the software problem. A computer modifies the data generation parameters in accordance with the analysis report, to iteratively optimize data generated for analysis of subsequent software problems.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is an illustrative diagram of a data processing environment, generally designated 100, is provided in which embodiments in accordance with the present invention may be implemented;
  • FIG. 2 depicts a feedback loop, in an embodiment in accordance with the present invention, to automatically and continuously optimize generation of data for problem analysis;
  • FIG. 3 is a flowchart depicting functions comprising the feedback loop, in an embodiment in accordance with the present invention; and;
  • FIG. 4 depicts a block diagram of components of system 110, in accordance with an illustrative embodiment in accordance with the present invention.
  • DETAILED DESCRIPTION
  • If a user encounters a problem with a computer software product, they may contact the product vendor, or in-house support, to seek a solution. An automated system may analyze certain data, to attempt to identify the cause of the problem. Types of problems that a user might encounter include a system crash, slow system performance, unexpected system behavior, etc.
  • The amount and types of data sufficient to identify the root cause of a problem, differ from case to case. For example, to successfully analyze a problem such as “Accessing a non-initialized variable (NullPointerException),” it may be sufficient to examine the exception call stack. However, a “memory leak” problem may be particularly difficult to analyze, and may require the user to reproduce the problem in a production environment, using special trace settings. Moreover, there may be multiple iterations before the root cause can be identified.
  • Many systems prospectively generate certain data, according to data generation parameters, in order to have available for analysis enough relevant data to analyze a problem, should one occur. To maximize system performance, the data generation parameters may be configured such that a minimum amount of problem analysis data is generated. When a change to the data generation parameters is required, the change often may be initiated by a system administrator.
  • When analyzing a system problem, if enough relevant data is not available, it may become necessary to modify the data generation parameters, so as to generate more data, and then to reproduce the problem, such that there can then be sufficient data to enable a successful analysis of the problem. This process may have to be repeated multiple times, until at least a sufficient amount of data, of the relevant data types, is generated to enable a successful analysis.
  • If the data generation parameters are configured such that excessive data is generated, overall system performance can be negatively impacted. It is a desired aspect of optimized data generation parameters to strike a balance between generating enough data to resolve most problems efficiently, while not generating too much data and thereby impacting system performance. Finding an optimum balance is often difficult, and is further complicated when system operating parameters change.
  • Embodiments in accordance with the present invention introduce a feedback loop to iteratively optimize data generated for analysis of a software problem and thereby enable the analysis to converge on a solution to the problem and further to optimize data generation for analysis of a subsequent problem. Components and operational aspects of the feedback loop are discussed below, particularly with reference to FIGS. 2 and 3.
  • With reference now to FIG. 1, an illustrative diagram of a data processing environment, generally designated 100, is provided in which embodiments in accordance with the present invention may be implemented. It should be appreciated that FIG. 1 is only illustrative and is intended neither to assert nor imply any limitation with regard to the environments in which aspects of embodiments in accordance with the present invention may be implemented. Many modifications to the depicted environment may be made without departing from the spirit and scope of the present invention.
  • Data processing environment 100 includes a data processing system, designated as system 110, and one or more each, of user 135, client 106, and analyzer 125 respectively and administrator 130, interconnected over network 105. The data processing environment may further comprise data generation parameters 120, and data 115.
  • During routine operation of system 110, data 115 is generated, according to data generation parameters 120. If a system problem occurs, data 115 is a source of information which analyzer 125 can reference when analyzing the problem. Data 115 may be composed of data units comprising various types of data, in various respective quantities, including trace files, screenshots, logs of user actions, video files, audio files, etc. Data generation parameters 120 may define, at least, which data units are generated, maximum sizes for certain data units, and conditions under which older data units are discarded or replaced with newer ones, etc. For example, data generation parameters 120 might specify a maximum number of five trace files, of 20 MB maximum size. In this example, when five trace files already exist, and a sixth one is created, the oldest of the previous five is discarded.
  • System 110 may be a mainframe computer, a desktop computer, a laptop computer, a specialized computer server, or any other computer system known in the art. In certain embodiments in accordance with the present invention, system 110 represents a computer system utilizing clustered computers and components that act as a single seamless pool of resources, when accessed through network 105, as is common in data centers and with cloud computing applications. In general, system 110 is representative of any programmable electronic device or combination of programmable electronic devices capable of executing machine-readable program instructions and communicating with other computing devices via a network. Components of system 110 are described in greater detail with reference to FIG. 4.
  • In various embodiments in accordance with the present invention, client 106 can be a laptop computer, a desktop computer, or any programmable electronic device capable of communicating with system 110, either via a direct connection or via network 105.
  • In general, network 105 can be any combination of connections and protocols that will support communications between system 110 and client 106. Network 105 can include, for example, a local area network (LAN), a wide area network (WAN) such as the internet, or any combination of the preceding, and can further include wired, wireless, and/or fiber optic connections.
  • Analyzer 125 can be an automated system operationally coupled with system 110. The function of analyzer 125 is to analyze software problems arising in the operation of system 110. In at least one embodiment in accordance with the present invention, analyzer 125 employs various computer-implemented analysis techniques, some of which include cognitive computing techniques, image analysis in conjunction with character recognition, pattern recognition and other suitable techniques, toward the end of finding a root cause of the problem. A root cause of a problem is defined herein as one or more causes, that when eliminated, will prevent or significantly reduce the likelihood of a recurrence of the problem.
  • FIG. 2 depicts a feedback loop, in an embodiment in accordance with the present invention, to automatically and continuously optimize generation of data for problem analysis. The feedback loop comprises at least the following components operating within environment 100 of FIG. 1: Data generation parameters 120; data 115, generated according to data generation parameters 120; analyzer 125; analysis report 225 produced by analyzer 125; optimizer 205 comprising rules engine 210 and one or more optimizing rules 215; and analysis history 220 which is accumulated by saving and accumulating one or more analysis report 225.
  • Analysis report 225 is created by analyzer 125. Analysis report 225 may comprise: 1) Flag 235, a Boolean element, to indicate whether the analysis is a success or a failure. A failed analysis is one in which analyzer 125 is not able to identify a root cause of a software problem under analysis. A failed analysis may be indicated when flag 235 is set to a first pre-determined value, for example: “FALSE”. A successful analysis is one in which analyzer 125 is able to identify a root cause of a problem under analysis. A successful analysis may be indicated when flag 235 is set to a second pre-determined value, for example: “TRUE”; 2) A problem description, comprising, for example, a stack trace, a formal problem classification, freeform text, etc., or any combination thereof; 3) An assessment and classification of the usefulness of data 115, determined by assessing whether data 115 was necessary and of sufficient quantity for a successful analysis of the problem, wherein the classification indicates at least: 3a) Sufficiency of each type of data included in data 115 for a successful analysis; 3b) For each type of data included in data 115, whether too little, too much, or the correct amount of data was included; and 3c) Whether data types absent from data 115 would have been required for a successful analysis.
  • Analysis history 220 is a repository storing an accumulation of analysis reports 225 pertaining to one or more software problem analyses. Analysis history 220 comprises a historical record of previous problem analyses as recorded in analysis reports 225. Analysis history 220 can also store results of previous optimizations. Optimizer 205 can make reference to analysis history 220, as required, for evaluation of optimizing rules 215. Analysis history 220 may comprise a relational database or any other suitable data storage implementation in an embodiment in accordance with the present invention, to accumulate, retain and retrieve data from analysis reports 225.
  • Analysis report 225 is formatted such that it can be read by rules engine 210. Examples of formatting options for analysis report 225 include: An XML document based on a data structure adapted for the present purpose; a data object that can be serialized and deserialized; or a text document or a spreadsheet with a predefined data structure. Analysis report 225 may also comprise one or more records in a relational database.
  • Optimizer 205 comprises rules engine 210 and at least one optimizing rule 215. Optimizer 205 can modify data generation parameters 120, according to evaluation results of optimizing rules 215, in order to optimize data 115 for efficient problem analysis. Various evaluation strategies can be implemented by optimizer 205, such as, but not limited to: 1) Applying only the first rule that evaluates to “True”; or 2) Applying more than one rule that evaluate to “True”. Whichever strategy is implemented is an aspect of a particular embodiment in accordance with the present invention, and is neither defined nor limited by this disclosure.
  • Optimizer 205 can be part of system 110, or it can be on one or more separate systems. Furthermore, multiple optimizers 205, included in multiple feedback loops, can be implemented that independently optimize different aspects of system 110.
  • An optimizing rule 215 comprises a Boolean condition and one or more actions. A Boolean condition is a logical test that can be resolved either to “True” or “False”. When optimizing rule 215 is evaluated and its Boolean condition resolves to “True,” the one or more actions defined by optimizing rule 215 are triggered.
  • An advantage afforded by embodiments in accordance with the present invention is great flexibility. Complex optimizing rules 215 can be defined so as to consider, among other things, analysis results from previous optimizations. For example, it would be possible for optimizer 215 to cause system 110 to revert directly to a previously optimized state when system 110 characteristics change (such as when a fix is installed) without having to gradually converge again toward the optimized state.
  • Yet another advantage afforded by embodiments in accordance with the present invention is that in addition to modifying data generation parameters 120, optimizing rules 215 can be defined so as to modify system 110. Such modifications could include, for example: 1) Applying a diagnostic component to provide additional analysis data that otherwise would not exist; 2) Modifying applications installed on system 110 by, for example, adding trace statements to a JavaScript program; 3) Making a configuration change not directly related to error analysis but that indirectly enables efficient diagnosis of the error: For example, in an OutOfMemory error, size of allocated memory could be increased in order subsequently to determine whether the error might be caused by insufficient memory allocation, a memory leak, or an infinite loop.
  • The plurality of optimizing rules 215 can be configured to achieve certain optimization goals. For example, different goals could be desired for a development environment as opposed to a production environment. One goal could be to minimize the overall performance impact of the data generation process, thus accepting a certain proportion of problems that cannot be analyzed successfully. Another goal could be to achieve a specified minimum analysis success rate. Some goals might be based on a specific timeframe (for example: less data generated on the weekend, and more during the week. Furthermore, multiple goals could be implemented concurrently, such as for example, to have a minimal system performance impact that also achieves a specified minimum analysis success rate.
  • Optimizer 205 uses rules engine 210 to evaluate optimizing rules 215. There are many possible implementations of rules engine 210. Optimizing rules 215 can be evaluated, for example, responsive to receipt of a new analysis report 225, or based on a defined schedule. An optimizing rule 215 could specify, as part of its Boolean condition, when it should be evaluated, such as for example, after a specified number of analysis reports 225 were received or when a specified amount of time has elapsed since its previous evaluation.
  • One or more actions defined in optimizing rule 215, when carried out, can modify data generation parameters 120 or system 110 configuration parameters, both of which may in turn, influence continuing generation of data 115, thus completing the feedback loop. More particularly, actions can, for example: Disable generation of types of data that have proven to be of little use; enable generation of data types that were required by analyzer 125 but not included in data 115; modify trace settings such that more or fewer traces are written; modify system 110 configuration by, for example, installing fixes or patches for debugging purposes, or by uninstalling fixes or patches that were previously used for debugging purposes, and are no longer required; or modify an optimizing rule 215, thereby indirectly affecting data generation parameters 120, by altering the conditions under which certain modifications to data generation parameters 120 are carried out.
  • Optimizing rules 215 may be defined with respect to relevant factors. In some embodiments in accordance with the present invention, a default set of optimizing rules 215 is provided for example, as an aspect of the system or software product. Optimizing rules 215 can subsequently be modified, for example, to reflect changes in optimization goals, changes in system configuration, or ongoing problem analysis performance. Furthermore, optimizing rules 215 may be updated automatically by optimizer 205, by, for example, performing actions triggered by optimizing rules 215.
  • Some example rule sets will now be provided to illustrate various approaches that could be defined within optimizer 205, in embodiments in accordance with the present invention.
  • Ruleset 1 takes into account, that by default, only a limited number of trace files are kept at a time (for example 5 trace files are kept at a time with a maximum size of 20 MB each). If a problem analysis requires a trace file older than the oldest trace file retained, the analysis cannot be successful, because the required trace file will have already been deleted. Therefore, ruleset 1 increases or decreases the number of trace files, according to the Boolean conditions in the rules, in order to find a number of trace files such that there will be enough trace files for problem analysis in most cases.
  • Rule 1-1: If an analysis was not successful, and analysis report 225 states that not enough trace files existed for a successful analysis, increase, by 1, the number of trace files that are retained.
  • Rule 1-2: If the analysis was successful, and analysis report 225 states that more trace files were provided than required for the successful analysis, decrease, by 1, the number of trace files that are retained.
  • Ruleset 2 is designed to determine the best trace level for system 110. The trace level steps can be, in ascending order from least detailed to most detailed, for example, “None, Info, Fine, Finer, Finest, All”. A trace level controls the amount of information that is written to the trace files, the greatest amount being written when trace level is set to “All”. When more information is written to the trace files, the performance impact to system 110 is greater than when lesser information is written.
  • Rule 2-1: Based on data in analysis history 220, if fewer than 80 percent of analyses in the last 30 days were successful, increase the trace level by one step.
  • Rule 2-2: Based on data in analysis history 220, if more than 90 percent of analyses in the last 30 days were successful, decrease the trace level by one step.
  • Ruleset 3 describes a generic logic to enable or disable generation of specific data types, based on the result of a problem analysis.
  • Rule 3-1: If an analysis is not successful, and analysis report 225 states that a specific type of data would be required for a successful analysis, but was missing from data 115, enable generation of the missing data type.
  • Rule 3-2: If the analysis was successful, and analysis report 225 states that a specific type of data was provided, but was not required for the analysis, disable generation of the unnecessary data type.
  • Ruleset 4 checks whether an additional type of data should be generated. If an error occurs in the component “com.ibm.bpm.dataAccessLayer” (which can be determined, for example, based on an exception call stack, or based on user 135 feedback), then the SQL log files are required for a successful analysis because they provide further insights into the database processing. If errors no longer occur in “com.ibm.bpm.dataAccessLayer” because, for example, a fix was installed, thus changing system 110 characteristics, then it is no longer required to generate the SQL log files.
  • Rule 4-1: Based on data in analysis history 220, if in the last five days, more than one error occurred in the component “com.ibm.bpm.dataAccessLayer”, capture the SQL log files whenever they are changed.
  • Rule 4-2: Based on data in the analysis history 220, if in the last five days, no error occurred in the component “com.ibm.bpm.dataAccessLayer”, stop capturing the SQL log files.
  • Ruleset 5 optimizes the system when multiple users report issues with the same dialog in a user interface. This type of issue can be difficult successfully to analyze, because it can depend on the order in which the user clicked elements in the dialog, on data in the system 110 backend, or other factors. Therefore, it is often not enough, for analysis purposes, to look only at a trace. Ruleset 5 enables the (voluntary) recording of a user's actions within this specific dialog (in the present example, a “CreateNewInsuranceClaim” dialog). The recording could be a log of user actions (text input, mouse clicks, etc.) or screenshots that are taken upon each user action.
  • Rule 5-1: Based on the data in analysis history 220, if in the last 24 hours, at least two users reported issues using the “CreateNewInsuranceClaim” dialog, enable the voluntary recording of user actions in this dialog.
  • Rule 5-2: Based on the data in the analysis history 220, if in the last 24 hours, fewer than two users reported issues with using the “CreateNewInsuranceClaim” dialog, disable the recording of user actions in this dialog.
  • Ruleset 6 is directed at a specific component to demonstrate how an optimizing rule can be narrowly targeted if, for example, the component generates a number of errors in excess of a predefined threshold. The rule not only enables a specific trace setting (“com.ibm.bpm.common.*=ALL”) if an error occurs in the component, but also optimizes the trace level for this setting (for example by reducing it to “com.ibm.bpm.common.*=FINER”. Ruleset 6 demonstrates a narrowly targeted example optimization of data 115.
  • Rule 6-1: Based on data in analysis history 220, if in the last 2 hours an error occurred in the component “com.ibm.bpm.common”, enable the trace setting “com.ibm.bpm.common.*=ALL”.
  • Rule 6-2: Based on data in analysis history 220, if the tracing for component “com.ibm.bpm.common” is active, and the last 2 error analyses for the component were successful, and the provided trace information was more than required, decrease the trace level by one step.
  • Rule 6-3: Based on data in analysis history 220, if the tracing for component “com.ibm.bpm.common” is active, and the last 2 error analyses for this component were not successful, and the provided trace information was not enough, increase the trace level by one step.
  • Rule 6-4: Based on data in analysis history 220, if in the last 24 hours no errors occurred in the component “com.ibm.bpm.common”, disable the trace setting “com.ibm.bpm.common.*”.
  • Ruleset 7 is an example of rules that require detailed knowledge about the system. In this example, enhanced tracing is only available beginning with a specific version of the installed software.
  • Rule 7-1: If the error stack trace shows a failure in component “com.ibm.wps.failedevents” and the version check of the system returns “7.0.2.4” or earlier, install update “7.0.2.5” and set trace to “com.ibm.wpsfailedevents.*=FINEST”.
  • Rule 7-2: If the error stack trace shows a failure in component “com.ibm.wps.failedevents” and the version check of the system returns “7.0.2.5” or later, set trace to “com.ibm.wps.failedevents.*=FINEST”.
  • FIG. 3 is a flowchart depicting functions comprising the feedback loop in an embodiment in accordance with the present invention. During normal system operation (block 310 and decision 312 “No” branch), system 110 generates data 115, according to data generation parameters 120. Responsive to occurrence of a problem (decision 312, “Yes” branch), data 115, along with a problem description, are passed to analyzer 125 (block 314).
  • Analyzer 125 analyzes the problem (block 316), based at least in part, on data 115 and the problem description. Analyzer 125 produces analysis report 225 and sends it to optimizer 205 (block 318). Analysis report 225 is stored in analysis history 220 (block 320).
  • In an embodiment in accordance with the present invention, rules engine 210 evaluates optimizing rules 215, based at least in part, on analysis report 225 and analysis history 220 (block 322). If, for all rules tested, their Boolean conditions evaluate to “False” (decision 324, “No” branch), normal system operation resumes (block 310 and decision 312).
  • If the Boolean conditionals of one or more optimizing rules 215 evaluate to “True” (decision 324, “Yes” branch), optimizer 205 performs the actions of those optimizing rule(s) 215 that evaluated to “True” (block 328) and normal system operation resumes (block 310 and decision 312, “No” branch).
  • As will be recognized by one skilled in the relevant art, the paths, represented in the flowchart of FIG. 3, from block 314 through block 310 constitute a feedback loop, wherein occurrence of a problem triggers not only an analysis of the problem, but an analysis of the data supplied to diagnose the problem. Depending on the results of the analysis of the data supplied to diagnose the problem, modifications to the parameters that govern generation of the data may be made, modifications such that if it would have been useful to have additional data, additional data may be generated in the future and if extraneous data had been supplied, less data may be generated in the future.
  • FIG. 4 depicts a block diagram of components of system 110, in accordance with an illustrative embodiment in accordance with the present invention. It should be appreciated that FIG. 4 provides only an illustration of one implementation and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made. For example, system 110 may comprise components spread through multiple systems and resources and may provide systems and resources beyond what is necessary to operate embodiments of the present invention.
  • System 110 includes communications fabric 402, which provides communications between computer processor(s) 404, memory 406, persistent storage 408, communications unit 410, and input/output (I/O) interface(s) 412. Communications fabric 402 can be implemented with any architecture designed for passing data and/or control information between processors (such as microprocessors, communications and network processors, etc.), system memory, peripheral devices, and any other hardware components within a system. For example, communications fabric 402 can be implemented with one or more buses.
  • Memory 406 and persistent storage 408 are computer-readable storage media. In this embodiment, memory 406 includes random access memory (RAM) 414 and cache memory 416. In general, memory 406 can include any suitable volatile or non-volatile computer-readable storage medium.
  • Software and data are stored in persistent storage 408 for execution by one or more of computer processors 404 via one or more memories of memory 406. In this embodiment, persistent storage 408 includes a magnetic hard disk drive. Alternatively, or in addition to a magnetic hard disk drive, persistent storage 408 can include a solid state hard drive, a semiconductor storage device, read-only memory (ROM), erasable programmable read-only memory (EPROM), flash memory, or any other computer-readable storage medium that is capable of storing program instructions or digital information.
  • The media used by persistent storage 408 may also be removable. For example, a removable hard drive may be used for persistent storage 408. Other examples include optical and magnetic disks, thumb drives, and smart cards that are inserted into a drive for transfer onto another computer-readable storage medium that is also part of persistent storage 408.
  • Communications unit 410, in these examples, provides for communications with other data processing systems or devices, including systems and devices within or controlled by system 110. In these examples, communications unit 410 includes one or more wireless network interface cards. Communications unit 410 may provide communications through the use of either or both physical and wireless communications links. Computer programs and processes, software and data, may be downloaded to persistent storage 408 through communications unit 410.
  • I/O interface(s) 412 allows for input and output of data with other devices that may be connected to system 110. For example, I/O interface 412 may provide a connection to external devices 418 such as a keyboard, keypad, a touch screen, and/or some other suitable input device. External devices 418 can also include portable computer-readable storage media such as, for example, thumb drives, portable optical or magnetic disks, and memory cards. Software and data used to practice embodiments of the present invention can be stored on such portable computer-readable storage media and can be loaded onto persistent storage 408 via I/O interface(s) 412. I/O interface(s) 412 may also connect to a display 420.
  • Display 420 provides a mechanism to display data to a user and may be, for example, a touch screen or a computer monitor.
  • The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The terminology used herein was chosen to best explain the principles of the embodiment, 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 disclosed herein.
  • The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
  • The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
  • Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
  • Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through 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 (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
  • Aspects of the present invention are 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.
  • 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 flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
  • 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 to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
  • The flowchart 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 diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block 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 the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.

Claims (6)

What is claimed is:
1. A method for automatically optimizing prospective generation of data used for analysis of a software problem the method comprising:
generating, by one or more processors, data for analysis of a software problem, in accordance with data generation parameters;
analyzing, by one or more processors, a software problem, based at least in part, on data generated for analysis of the software problem, using one or more computer-implemented methods including cognitive computing, image analysis, character recognition, and pattern recognition to produce at least an analysis report configured to provide one or more of:
a description of the software problem;
a Boolean flag indicating success or failure of the analysis to identify a root cause of the software problem;
a description of data that was supplied for the analysis, including data types and respective quantities thereof;
a description of data types, or respective quantities thereof, provided for the analysis, but not needed for a successful analysis; and
a description of data types, or respective quantities thereof, needed for a successful analysis, but not provided;
saving the analysis report in an analysis history;
modifying, by one or more processors, the data generation parameters in accordance with one or more rules, to create modified data generation parameters; and
generating, by one or more processors, data for analysis of the software problem, in accordance with the modified data generation parameters.
2. The method of claim 1, further comprising:
iteratively optimizing, by one or more processors, data generation parameters, by utilizing a feedback loop, to enable software problem analysis to converge on a solution of the software problem.
3. The method of claim 1 wherein modifying data generation parameters comprises:
evaluating, by one or more processors, an optimizing rule based at least in part on one or more of the analysis report, or the analysis history and wherein the optimizing rule can be modified in response to evaluation of an optimizing rule, problem determination results, a new or updated optimization goal, or other aspects of a computer system.
4. The method of claim 3 wherein the analysis history comprises:
an accumulation of one or more analysis reports pertaining to one or more software problem analyses.
5. The method of claim 3 wherein the optimizing rule comprises:
a Boolean conditional; and
one or more actions.
6. The method of claim 3 wherein evaluating an optimizing rule further comprises:
evaluating, by one or more processors, a Boolean conditional of an optimizing rule; and
performing, by one or more processors, actions of the optimizing rule if the Boolean conditional evaluates to a pre-determined state.
US14/735,587 2014-11-12 2015-06-10 Optimized generation of data for software problem analysis Abandoned US20160132418A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/735,587 US20160132418A1 (en) 2014-11-12 2015-06-10 Optimized generation of data for software problem analysis

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/538,890 US9965348B2 (en) 2014-11-12 2014-11-12 Optimized generation of data for software problem analysis
US14/735,587 US20160132418A1 (en) 2014-11-12 2015-06-10 Optimized generation of data for software problem analysis

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US14/538,890 Continuation US9965348B2 (en) 2014-11-12 2014-11-12 Optimized generation of data for software problem analysis

Publications (1)

Publication Number Publication Date
US20160132418A1 true US20160132418A1 (en) 2016-05-12

Family

ID=55912315

Family Applications (2)

Application Number Title Priority Date Filing Date
US14/538,890 Active 2035-01-31 US9965348B2 (en) 2014-11-12 2014-11-12 Optimized generation of data for software problem analysis
US14/735,587 Abandoned US20160132418A1 (en) 2014-11-12 2015-06-10 Optimized generation of data for software problem analysis

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US14/538,890 Active 2035-01-31 US9965348B2 (en) 2014-11-12 2014-11-12 Optimized generation of data for software problem analysis

Country Status (1)

Country Link
US (2) US9965348B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108304328A (en) * 2018-02-05 2018-07-20 苏州大学 A kind of text of crowdsourcing test report describes generation method, system and device
US11151121B2 (en) 2019-08-30 2021-10-19 International Business Machines Corporation Selective diagnostics for computing systems

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428619A (en) * 1990-02-15 1995-06-27 Digital Equipment Corporation Model based reasoning system for network fault diagnosis
US5983364A (en) * 1997-05-12 1999-11-09 System Soft Corporation System and method for diagnosing computer faults
US6145096A (en) * 1998-05-06 2000-11-07 Motive Communications, Inc. Method, system and computer program product for iterative distributed problem solving
US20020198983A1 (en) * 2001-06-26 2002-12-26 International Business Machines Corporation Method and apparatus for dynamic configurable logging of activities in a distributed computing system
US6654914B1 (en) * 1999-05-28 2003-11-25 Teradyne, Inc. Network fault isolation
US20040034456A1 (en) * 2002-08-16 2004-02-19 Felke Timothy J. Method and apparatus for improving fault isolation
US20040268314A1 (en) * 2003-06-27 2004-12-30 International Business Machines Corporation System and method for automatically collecting trace detail and history data
US20050154939A1 (en) * 2003-11-26 2005-07-14 International Business Machines Corporation Methods and apparatus for adaptive problem determination in distributed service-based applications
US20060048004A1 (en) * 2004-08-30 2006-03-02 Norimi Kawashima Log collecting apparatus, image forming apparatus and computer-readable storage medium
US20060112312A1 (en) * 2004-11-18 2006-05-25 Dickenson Gary I Apparatus, system, and method for adjusting trace data granularity
US20060174165A1 (en) * 2005-02-03 2006-08-03 Cisco Technology, Inc. System and method for tracing and logging for software module
US20090222492A1 (en) * 2008-02-28 2009-09-03 Mtsubishi Electric Corporation Logging Device and Recording Medium
US9274902B1 (en) * 2013-08-07 2016-03-01 Amazon Technologies, Inc. Distributed computing fault management

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6259445B1 (en) 1997-07-07 2001-07-10 Informix, Inc. Computer-based documentation and instruction
US8312435B2 (en) 2000-12-26 2012-11-13 Identify Software Ltd. (IL) System and method for conditional tracing of computer programs
US20090171741A1 (en) 2005-07-26 2009-07-02 International Business Machines Corporation BSM Problem Analysis Programmable Apparatus
US20070113180A1 (en) 2005-11-15 2007-05-17 Michael Danninger Method and system for providing improved help functionality to assist new or occasional users of software in understanding the graphical elements of a display screen
US7933666B2 (en) 2006-11-10 2011-04-26 Rockwell Automation Technologies, Inc. Adjustable data collection rate for embedded historians
US20090183237A1 (en) 2008-01-12 2009-07-16 Ricardo Cortes Contextual and customized help information
US8997063B2 (en) * 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US9449278B2 (en) * 2013-04-12 2016-09-20 Apple Inc. Cloud-based diagnostics and remediation
US9590880B2 (en) 2013-08-07 2017-03-07 Microsoft Technology Licensing, Llc Dynamic collection analysis and reporting of telemetry data
WO2015148328A1 (en) 2014-03-23 2015-10-01 Diagknowlogy, Inc. System and method for accelerating problem diagnosis in software/hardware deployments
US9953041B2 (en) * 2014-09-12 2018-04-24 Verily Life Sciences Llc Long-term data storage service for wearable device data

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428619A (en) * 1990-02-15 1995-06-27 Digital Equipment Corporation Model based reasoning system for network fault diagnosis
US5983364A (en) * 1997-05-12 1999-11-09 System Soft Corporation System and method for diagnosing computer faults
US6145096A (en) * 1998-05-06 2000-11-07 Motive Communications, Inc. Method, system and computer program product for iterative distributed problem solving
US6654914B1 (en) * 1999-05-28 2003-11-25 Teradyne, Inc. Network fault isolation
US20020198983A1 (en) * 2001-06-26 2002-12-26 International Business Machines Corporation Method and apparatus for dynamic configurable logging of activities in a distributed computing system
US20040034456A1 (en) * 2002-08-16 2004-02-19 Felke Timothy J. Method and apparatus for improving fault isolation
US20040268314A1 (en) * 2003-06-27 2004-12-30 International Business Machines Corporation System and method for automatically collecting trace detail and history data
US20050154939A1 (en) * 2003-11-26 2005-07-14 International Business Machines Corporation Methods and apparatus for adaptive problem determination in distributed service-based applications
US20060048004A1 (en) * 2004-08-30 2006-03-02 Norimi Kawashima Log collecting apparatus, image forming apparatus and computer-readable storage medium
US20060112312A1 (en) * 2004-11-18 2006-05-25 Dickenson Gary I Apparatus, system, and method for adjusting trace data granularity
US20060174165A1 (en) * 2005-02-03 2006-08-03 Cisco Technology, Inc. System and method for tracing and logging for software module
US20090222492A1 (en) * 2008-02-28 2009-09-03 Mtsubishi Electric Corporation Logging Device and Recording Medium
US9274902B1 (en) * 2013-08-07 2016-03-01 Amazon Technologies, Inc. Distributed computing fault management

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108304328A (en) * 2018-02-05 2018-07-20 苏州大学 A kind of text of crowdsourcing test report describes generation method, system and device
US11151121B2 (en) 2019-08-30 2021-10-19 International Business Machines Corporation Selective diagnostics for computing systems

Also Published As

Publication number Publication date
US9965348B2 (en) 2018-05-08
US20160132419A1 (en) 2016-05-12

Similar Documents

Publication Publication Date Title
US10360142B2 (en) Proactive and selective regression testing based on historic test results
US9715441B2 (en) Risk-based test coverage and prioritization
US10748068B2 (en) Predictive model scoring to optimize test case order in real time
US9703686B2 (en) Software testing optimizer
US20150007138A1 (en) Method and system for incrementally updating a test suite utilizing run-time application executions
US10698799B2 (en) Indicating a readiness of a change for implementation into a computer program
US20090204946A1 (en) Intelligent software code updater
WO2023082907A1 (en) Defect tracking and remediation using client-side screen recording
US10310961B1 (en) Cognitive dynamic script language builder
US9817731B2 (en) Acquiring diagnostic data selectively
US20160139961A1 (en) Event summary mode for tracing systems
US11157394B2 (en) Exception cause analysis during computer program execution
US9965348B2 (en) Optimized generation of data for software problem analysis
US20180267795A1 (en) Smart reviews for applications in application stores
US11176024B1 (en) Software patch application and testing optimization
US10891354B2 (en) Categorizing and processing time-series data
JP2023143842A (en) Computer-implemented method, computer program and computer system (task-specific log record in digital computer system)

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:REICHART, MARKUS;SCHAEFER, MICHAEL K.;REEL/FRAME:035816/0580

Effective date: 20141111

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION