US20190163609A1 - Cognitive dynamic script language builder - Google Patents
Cognitive dynamic script language builder Download PDFInfo
- Publication number
- US20190163609A1 US20190163609A1 US15/825,220 US201715825220A US2019163609A1 US 20190163609 A1 US20190163609 A1 US 20190163609A1 US 201715825220 A US201715825220 A US 201715825220A US 2019163609 A1 US2019163609 A1 US 2019163609A1
- Authority
- US
- United States
- Prior art keywords
- code
- error message
- database
- script
- segment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G06F15/18—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G06F17/30345—
Definitions
- the present invention relates to script language deployment, and more specifically, to cognitively updating scrip languages.
- a scripting or script language is a programming language that supports scripts: programs written for a special run-time environment that automate the execution of tasks that could alternatively be executed one-by-one by a human operator.
- Scripting languages are often interpreted (rather than compiled). Primitives are usually the elementary tasks or API calls, and the language allows them to be combined into more complex programs. Environments that can be automated through scripting include software applications, web pages within a web browser, the monikers of operating systems (OS), embedded systems, as well as numerous games.
- a scripting language can be viewed as a domain-specific language for a particular environment; in the case of scripting an application, this is also known as an extension language.
- Scripting languages are also sometimes referred to as very high-level programming languages, as they operate at a high level of abstraction, or as control languages, particularly for job control languages on mainframes.
- JCL Job Control Language
- IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem. More specifically, the purpose of JCL is to say which programs to run, using which files or devices for input or output, and at times to also indicate under what conditions to skip a step.
- An embodiment of the invention may include a method, computer program product and computer system for updating a script of scripting language.
- the embodiment may include a computing device that receives an error message from the script operating in a run-time environment.
- the embodiment may include a computing device that determines a cause of the error message, wherein the cause of the error message is an erroneous segment of code of the script.
- the embodiment may include a computing device that determines a solution to the error message, wherein the solution to the error message is a replacement segment of code for the erroneous segment of code.
- the embodiment may include a computing device that creates a new script based on the replacement segment of code.
- the embodiment may include a computing device that operates the new script in the run-time environment.
- FIG. 1 illustrates a Cognitive Dynamic Script Building System, in accordance with an embodiment of the invention
- FIG. 2 is a flowchart illustrating the operations of the cognitive builder of FIG. 1 , in accordance with an embodiment of the invention
- FIGS. 3A and 3B show an implementation of the method of FIG. 2 , in accordance with an embodiment of the invention
- FIG. 4 is a flowchart illustrating the operations of the cognitive module of FIG. 1 , in accordance with an embodiment of the invention
- FIG. 5 is a block diagram depicting the hardware components of the Cognitive Dynamic Script Building System of FIG. 1 , in accordance with an embodiment of the invention.
- JCL Job Control Language
- IBM zOS mainframes is used to initiate programs to run, and what files to run the programs with, in order to manage and initiate all of the commands throughout the system.
- file names, system parameters, and other human errors may require constant monitoring to ensure the proper batch operations are performed on the right files.
- Such monitoring can be labor intensive, and lead to system failures if not addressed.
- This increased expense may hinder the dynamic capabilities of the entire system, as version updates to a system file may require large amounts of time to implement due to the need to rewrite all of the batch operations for the system.
- FIG. 1 illustrates Cognitive Dynamic Script Building System 199 , in accordance with an embodiment of the invention.
- Cognitive Dynamic Script Building System 199 includes a server 110 and a computing device 150 interconnected via a network 198 .
- a cognitive module 125 may monitor system performance, updates, and changes, and make dynamic changes to elements of the batch processes, or system code, that fix errors, or stop malicious activity by users, that may lead to failures in the system.
- network 198 is the Internet, representing a worldwide collection of networks and gateways to support communications between devices connected to the Internet.
- Network 198 may include, for example, wired, wireless or fiber optic connections.
- network 198 may be implemented as an intranet, a local area network (LAN), or a wide area network (WAN).
- network 198 can be any combination of connections and protocols that will support communications between the server 110 and the computing device 150 .
- Computing device 150 may include process interface 152 .
- Computing device 150 may be a desktop computer, a notebook, a laptop computer, a tablet computer, a handheld device, a smart-phone, a thin client, or any other electronic device or computing system capable of receiving and sending data to and from other computing devices such as server 110 via network 198 .
- computing device 150 is a computing device that enables a user to interface with the programs and files located on server 110 . Computing device 150 is described in more detail with reference to FIG. 4 .
- Process interface 152 is a is a program located on computing device 150 that allows a user to issue commands to, or receive feedback from, Cognitive Dynamic Script Building System 199 .
- the process interface 152 issues a command to initiate the Cognitive Dynamic Script Building System 199 .
- the process interface 152 may select different operations or programs to execute in the process environment 135 , or receive feedback from the process environment 135 .
- process environment 135 may receive updates, or fixes, made by cognitive module 125 .
- Server 110 includes JCL skeletons 112 , Symbolic Resolution Instructions 116 , JCL Assembly Instructions 114 , jobname resolution 118 , cognitive builder 120 , cognitive module 125 , and assembled JCL 130 and process environment 135 .
- server 110 is a server, or any other electronic device or computing system capable of receiving and sending data to and from computing device 150 via network 198 , and managing mainframe operations of process environment 135 .
- server 110 can comprise a cluster of servers executing the same software to collectively process the requests from multiple computing devices. Server 110 is described in more detail with reference to FIG. 4 .
- JCL skeletons 112 is a database containing the commands necessary to perform specific functions on the mainframe.
- the commands contain one or more command lines for performing a specific task, function, batch return or other operation that are written having a variable in place of a specific file or program name.
- a command line may contain one or more variables in place of specific file names, or parameters, that the command refers to.
- each JCL skeleton is a subroutine, or segment of code, that accomplishes a specific outcome as part of a larger job in the mainframe.
- Each JCL skeleton may be used across multiple different batch jobs.
- JCL Monikers 114 is a database, or look-up table, containing monikers that outline the JCL skeletons necessary to accomplish a specific batch job.
- the monikers may be the ordered high-level operations necessary to achieve a batch job, and may be a ordered listing of calls to one or more skeletons from JCL skeletons 112 , as well as any intervening command lines.
- JCL symbols 116 is database, or look-up table, relating the variables contained in the command lines from JCL skeletons 112 into discrete values for use in an assembled JCL script.
- Symbolic Resolution Instructions 116 acts as a database, or look-up table, to input the specific names into JCL skeleton 112 to create suitable code for operation.
- Jobname table 118 is a database containing the rules for constructing a jobname for each assembled JCL script, as well as the monikers, JCL skeletons, and variable values for the JCL builds under that jobname.
- Cognitive builder 120 creates assembled JCL batch operations using the information contained in JCL skeletons 112 , Symbolic Resolution Instructions 116 , JCL Assembly Instructions 114 , and jobname resolution 118 .
- Cognitive builder 120 receives a build instruction to implement the dynamic variables for each batch job.
- the Cognitive builder 120 implements the necessary command skeleton, from JCL skeletons 112 , into the moniker for a batch job contained in JCL Assembly Instructions 114 .
- Cognitive builder 120 then inserts the current variable values contained in Symbolic Resolution Instructions 116 into the lines of command, and forms a JCL script.
- Assembled JCL 130 is a set of commands that may be executed to perform a batch job, or start a subsystem in process environment 135 .
- Each set of commands, or script, located in assembled JCL 130 is the result of the combination of the elements from JCL skeletons 112 , Symbolic Resolution Instructions 116 , JCL Assembly Instructions 114 , jobname resolution 118 using cognitive builder 120 .
- Process environment 135 is the environment in which each script from assembled JCL 130 is executed. Each script may perform a specific action in process environment 135 , which may be monitored by cognitive module 120 . Additionally, process environment 135 may feedback errors, and the extent of those errors, to cognitive module 125 , which may then be used to update JCL skeletons 112 , Symbolic Resolution Instructions 116 , JCL Assembly Instructions 114 in an attempt to eliminate said errors. Further, process environment may log the system parameters of the process environment 135 , such as the batch jobs that have been run, errors associated with any batch jobs, any logged system file changes (e.g. file name changes, file deletions, file creations), and any logged system changes (e.g. hardware changes). Additionally, process environment 135 may contained other processes or functionalities that instruct the system when to operate each script from assembled JCL 130 .
- process environment 135 may contained other processes or functionalities that instruct the system when to operate each script from assembled JCL 130 .
- Cognitive module 125 updates JCL skeletons 112 , Symbolic Resolution Instructions 116 , JCL Assembly Instructions 114 , jobname resolution 118 based on the results of assembling the content using cognitive builder 120 , as well as results of executing assembled JCL scripts in process environment 135 .
- Cognitive modules 125 may contain a cognitive error model and cognitive solution model.
- the cognitive error model and cognitive solution model may be machine learning algorithms that analyzes job logs, error logs, assembled JCL 130 , and system and file changes to work in tandem to determine solutions to errors from running batch jobs in process environment 135 .
- FIG. 2 is a flow chart illustrating of the cognitive builder 120 .
- cognitive builder 120 receives a deployment command.
- the deployment command is the instruction to put together, or update, an assembled JCL script or scripts, based on a either the initiation of the Cognitive Dynamic Script Building System 199 via process interface 152 , or alternatively based on an update by cognitive builder 125 to a component, such as a skeleton in JCL skeletons 112 , a variable contained in Symbolic Resolution Instructions 116 , a moniker contained in JCL Assembly Instructions 114 .
- cognitive builder 120 inserts the command skeleton, from JCL skeletons 112 , into the moniker outlining the steps for a batch job contained in JCL Assembly Instructions 114 . Additionally, cognitive builder 120 may resolve any syntax or context related issues during the insertion.
- cognitive builder 120 inserts the current variable values contained in Symbolic Resolution Instructions 116 , as well as the jobname from jobname resolution 118 , into the lines of command, and forms a JCL script. Additionally, cognitive builder 120 may record the variables, skeletons and monikers used to create the batch job associated with the jobname in jobname resolution 118 . As should be understood, the order of steps S 220 and S 230 is a matter of design choice, and could be performed in the order depicted, in the reverse order (i.e. S 220 then S 230 ), or simultaneously.
- FIGS. 3A and 3B show lines of commands prior to, and following, step S 230 of the above method.
- FIG. 3A depicts lines of commands containing a jobname placeholder 301 A, a first variable name 303 A and a second variable name 305 A.
- cognitive builder 120 determines values for these variables, and inserts them into the code.
- cognitive builder returns DB2CSIBL as actual jobname 301 B, DB2C10 as actual first variable name 303 B, and CV120216 as actual second variable 305 B.
- FIG. 4 is a flow chart illustrating of the cognitive module 125 .
- cognitive module 125 receives an error message from process environment 135 .
- the error message may contain an error code, an explanation of the error and a field for the error.
- cognitive module 125 determines whether a security violation has occurred.
- Security violations may be determined by a set of system level rules, such as users that are able to perform a specific job or operation, or how often a user may be able to perform a specific job within a given amount of time (e.g. number of deletions within an hour).
- a violation may include a RACF violation. If a security violation occurs, cognitive module proceeds to step S 425 . If a security violation does not occur, cognitive module proceeds to step S 430 .
- cognitive module terminates script operation, and sends a system level alert to process interface 152 .
- Such alerts may notify a system administrator of failure in the process environment 135 .
- the error model may be a machine learning algorithm, or rules engine, that enables cognitive module to determine the root cause of a system error.
- the error model may be created or updated during step S 430 .
- the error model may be based on a supervised machine learning algorithm, the model may be trained using system logs (containing error messages) and script logs.
- the cognitive module 125 may compare two subsequent runs of a batch job, the first being a run containing an error, and the second being a successful run.
- the cognitive module 125 may analyze differences in the script for each batch job to determine what change in the script for each batch job created an error (and thus what the original cause of the error in the first script). In such an example, the “answer” to the training set is the script present in the first run, and not in the second. Additional embodiments of the error model may implement other system parameters for higher level correlations. Cognitive module 125 may analyze the error message to determine the cause of the error, based on the error model.
- cognitive module 125 may determine possible solutions to the cause of the error determined in step S 430 based on a solution model.
- the solution model may be a machine learning algorithm, or rules engine, that enables cognitive module to determine likely solutions to the determined cause of the error.
- the model may be trained using system logs (containing error messages), script logs for all associated scripts from the system logs, any logged system file changes (e.g. file name changes, file deletions, file creations), and any logged system changes (addition or removal of hardware).
- the cognitive module 125 may compare two subsequent runs of a batch job, the first being a run containing an error, and the second being a successful run.
- the cognitive module 125 may look at the newly inserted language into the script, and may use the script in the second run as the training “answer” to build a predictive solution model, and confidence score for the resulting answer.
- the cognitive module 125 may correlate the correction to the error to other system changes (e.g. change in a job class of an updated file led to the error, and the fix was to update the job class in the script), and score such changes based on a confidence of the algorithm in those solutions.
- the cognitive module 125 may then evaluate the error determined in step S 430 for possible cognitive solutions.
- cognitive module 125 determines if there are any valid cognitive solutions to test from step S 435 .
- a valid cognitive solution may be any possible cognitive solution with a confidence score above a threshold level.
- a valid cognitive solution may be the top Nth number of cognitive solutions. Further, combinations of the above may be performed. If cognitive module determines that there are valid cognitive solutions to test, cognitive module 125 proceeds to step S 450 . If cognitive module 125 determines there are no valid cognitive solutions to test, cognitive module proceeds to step S 445 .
- cognitive module 125 builds a test script, using cognitive builder 120 , introduction the cognitive solution into the test script. Cognitive module 125 may then run the test script in process environment 135 , or alternatively in test environment build to simulate process environment 135 . Cognitive module 125 may record the test script, and result of the test, in a test log for process environment 135 , which may be used in training cognitive module 125 in subsequent iterations. Referring to step S 460 , if the test is successful cognitive module 125 proceeds to step S 470 . If the test is not successful, cognitive module 125 proceeds to step S 440 to run subsequent tests (if possible).
- cognitive module 125 updates the appropriate database(s), JCL skeleton 112 , JCL Monikers 114 and/or JCL Symbols 116 , and issues a command to cognitive builder 120 to rebuild the associated JCL scripts.
- cognitive module 125 determines if there are any valid iterative solutions to test from step S 435 .
- An iterative solution may be determined when the error determined in step S 430 has a defined set of solutions. For example, an iterative solution may be available for class type errors. Additionally, an iterative solution may be available in instances where there is a naming convention for variable names or file names. Additionally, a counter may be implemented with respect to determining the iterative solution. In such instances, the iterative solution may only be determined a valid iterative solution to test if the counter does not exceed a threshold value. If cognitive module 125 determines that there are valid iterative solutions to test, cognitive module 125 proceeds to step S 450 . If cognitive module 125 determines there are no valid iterative solutions to test, cognitive module proceeds to step S 445 .
- cognitive module 125 builds a test script, using cognitive builder 120 , introduction the iterative solution into the test script. Cognitive module 125 may then run the test script in process environment 135 , or alternatively in test environment build to simulate process environment 135 . Cognitive module 125 may record the test script, and result of the test, in a test log for process environment 135 , which may be used in training cognitive module 125 in subsequent iterations. Referring to step S 465 , if the test is successful cognitive module 125 proceeds to step S 470 . If the test is not successful, cognitive module 125 proceeds to step S 445 to run subsequent tests (if possible).
- a Cognitive Dynamic Script Building System 199 exists in which a user may initiate the process environment 135 without additional input to maintain proper performance.
- Cognitive module 125 of Cognitive Dynamic Script Building System 199 may monitor the process environment 135 for system errors, and then determine solutions to the system errors based on the cognitive models.
- the cognitive module 125 may update JCL skeletons 112 , JCL monikers 114 , JCL symbols 116 and jobname table 118 based on the determined solutions, and initiate new builds of JCL scripts by cognitive builder 120 .
- These scripts may be contained in assembled JCL 130 , and used in process environment 135 . Additionally, while the above system is described in a JCL environment, the system may operate with other scripting languages.
- FIG. 3 depicts a block diagram of components of server 110 and computing device 150 , in accordance with an illustrative embodiment of the present invention. It should be appreciated that FIG. 3 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.
- Server 110 and computing device 150 include communications fabric 902 , which provides communications between computer processor(s) 904 , memory 906 , persistent storage 908 , communications unit 912 , and input/output (I/O) interface(s) 914 .
- Communications fabric 902 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 902 can be implemented with one or more buses.
- Memory 906 and persistent storage 908 are computer-readable storage media.
- memory 906 includes random access memory (RAM) 916 and cache memory 918 .
- RAM random access memory
- cache memory 918 In general, memory 906 can include any suitable volatile or non-volatile computer-readable storage media.
- the programs/files JCL skeletons 112 , JCL monikers 114 , JCL symbols 116 , Jobname table 118 , cognitive builder 120 , cognitive module 125 , assembled JCL 130 , and process environment 135 in server 110 ; and process interface 152 in computing device 150 are stored in persistent storage 908 for execution by one or more of the respective computer processors 904 via one or more memories of memory 906 .
- persistent storage 908 includes a magnetic hard disk drive.
- persistent storage 908 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 media that is capable of storing program instructions or digital information.
- ROM read-only memory
- EPROM erasable programmable read-only memory
- flash memory or any other computer-readable storage media that is capable of storing program instructions or digital information.
- the media used by persistent storage 908 may also be removable.
- a removable hard drive may be used for persistent storage 908 .
- 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 908 .
- Communications unit 912 in these examples, provides for communications with other data processing systems or devices.
- communications unit 912 includes one or more network interface cards.
- Communications unit 912 may provide communications through the use of either or both physical and wireless communications links.
- the programs/files JCL skeletons 112 , JCL monikers 114 , JCL symbols 116 , Jobname table 118 , cognitive builder 120 , cognitive module 125 , assembled JCL 130 , and process environment 135 in server 110 ; and process interface 152 in computing device 150 may be downloaded to persistent storage 908 through communications unit 912 .
- I/O interface(s) 914 allows for input and output of data with other devices that may be connected to server 110 and social media computing device 150 .
- I/O interface 914 may provide a connection to external devices 920 such as a keyboard, keypad, a touch screen, and/or some other suitable input device.
- external devices 920 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 e.g., the programs/files JCL skeletons 112 , JCL monikers 114 , JCL symbols 116 , Jobname table 118 , cognitive builder 120 , cognitive module 125 , assembled JCL 130 , and process environment 135 in server 110 ; and process interface 152 in computing device 150 , can be stored on such portable computer-readable storage media and can be loaded onto persistent storage 908 via I/O interface(s) 914 .
- I/O interface(s) 914 can also connect to a display 922 .
- Display 922 provides a mechanism to display data to a user and may be, for example, a computer monitor.
- the present invention may be a system, a method, and/or a computer program product at any possible technical detail level of integration
- 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, configuration data for integrated circuitry, 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 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 blocks 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.
- each block in the flowchart or block diagrams may represent a module, segment, or portion of code, 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. 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.
- steps of the disclosed method and components of the disclosed systems and environments have been sequentially or serially identified using numbers and letters, such numbering or lettering is not an indication that such steps must be performed in the order recited, and is merely provided to facilitate clear referencing of the method's steps. Furthermore, steps of the method may be performed in parallel to perform their described functionality.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Medical Informatics (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
Description
- The present invention relates to script language deployment, and more specifically, to cognitively updating scrip languages.
- A scripting or script language is a programming language that supports scripts: programs written for a special run-time environment that automate the execution of tasks that could alternatively be executed one-by-one by a human operator. Scripting languages are often interpreted (rather than compiled). Primitives are usually the elementary tasks or API calls, and the language allows them to be combined into more complex programs. Environments that can be automated through scripting include software applications, web pages within a web browser, the monikers of operating systems (OS), embedded systems, as well as numerous games. A scripting language can be viewed as a domain-specific language for a particular environment; in the case of scripting an application, this is also known as an extension language. Scripting languages are also sometimes referred to as very high-level programming languages, as they operate at a high level of abstraction, or as control languages, particularly for job control languages on mainframes.
- Job Control Language (JCL) is a name for scripting languages used on IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem. More specifically, the purpose of JCL is to say which programs to run, using which files or devices for input or output, and at times to also indicate under what conditions to skip a step.
- An embodiment of the invention may include a method, computer program product and computer system for updating a script of scripting language. The embodiment may include a computing device that receives an error message from the script operating in a run-time environment. The embodiment may include a computing device that determines a cause of the error message, wherein the cause of the error message is an erroneous segment of code of the script. The embodiment may include a computing device that determines a solution to the error message, wherein the solution to the error message is a replacement segment of code for the erroneous segment of code. The embodiment may include a computing device that creates a new script based on the replacement segment of code. The embodiment may include a computing device that operates the new script in the run-time environment.
-
FIG. 1 illustrates a Cognitive Dynamic Script Building System, in accordance with an embodiment of the invention; -
FIG. 2 is a flowchart illustrating the operations of the cognitive builder ofFIG. 1 , in accordance with an embodiment of the invention; -
FIGS. 3A and 3B show an implementation of the method ofFIG. 2 , in accordance with an embodiment of the invention; -
FIG. 4 is a flowchart illustrating the operations of the cognitive module ofFIG. 1 , in accordance with an embodiment of the invention; -
FIG. 5 is a block diagram depicting the hardware components of the Cognitive Dynamic Script Building System ofFIG. 1 , in accordance with an embodiment of the invention. - Embodiments of the present invention will now be described in detail with reference to the accompanying Figures.
- Scripting languages are used as high-level language in order to issue batch commands to a system. For example, Job Control Language (JCL) on IBM zOS mainframes is used to initiate programs to run, and what files to run the programs with, in order to manage and initiate all of the commands throughout the system.
- However, in a dynamic environment, file names, system parameters, and other human errors may require constant monitoring to ensure the proper batch operations are performed on the right files. Such monitoring can be labor intensive, and lead to system failures if not addressed. This increased expense may hinder the dynamic capabilities of the entire system, as version updates to a system file may require large amounts of time to implement due to the need to rewrite all of the batch operations for the system.
-
FIG. 1 illustrates Cognitive DynamicScript Building System 199, in accordance with an embodiment of the invention. In an example embodiment, Cognitive Dynamic Script Building System 199 includes aserver 110 and acomputing device 150 interconnected via anetwork 198. By implementing Cognitive Dynamic Script Building System 199, acognitive module 125 may monitor system performance, updates, and changes, and make dynamic changes to elements of the batch processes, or system code, that fix errors, or stop malicious activity by users, that may lead to failures in the system. - In the example embodiment,
network 198 is the Internet, representing a worldwide collection of networks and gateways to support communications between devices connected to the Internet.Network 198 may include, for example, wired, wireless or fiber optic connections. In other embodiments,network 198 may be implemented as an intranet, a local area network (LAN), or a wide area network (WAN). In general,network 198 can be any combination of connections and protocols that will support communications between theserver 110 and thecomputing device 150. -
Computing device 150 may includeprocess interface 152.Computing device 150 may be a desktop computer, a notebook, a laptop computer, a tablet computer, a handheld device, a smart-phone, a thin client, or any other electronic device or computing system capable of receiving and sending data to and from other computing devices such asserver 110 vianetwork 198. In an example embodiment,computing device 150 is a computing device that enables a user to interface with the programs and files located onserver 110.Computing device 150 is described in more detail with reference toFIG. 4 . -
Process interface 152 is a is a program located oncomputing device 150 that allows a user to issue commands to, or receive feedback from, Cognitive Dynamic Script Building System 199. In one instance, theprocess interface 152 issues a command to initiate the Cognitive DynamicScript Building System 199. In another instance, theprocess interface 152 may select different operations or programs to execute in theprocess environment 135, or receive feedback from theprocess environment 135. Additionally,process environment 135 may receive updates, or fixes, made bycognitive module 125. -
Server 110 includes JCLskeletons 112, Symbolic Resolution Instructions 116, JCL AssemblyInstructions 114,jobname resolution 118,cognitive builder 120,cognitive module 125, and assembled JCL 130 andprocess environment 135. In the example embodiment,server 110 is a server, or any other electronic device or computing system capable of receiving and sending data to and fromcomputing device 150 vianetwork 198, and managing mainframe operations ofprocess environment 135. Although not shown, optionally,server 110 can comprise a cluster of servers executing the same software to collectively process the requests from multiple computing devices.Server 110 is described in more detail with reference toFIG. 4 . - JCL
skeletons 112 is a database containing the commands necessary to perform specific functions on the mainframe. The commands contain one or more command lines for performing a specific task, function, batch return or other operation that are written having a variable in place of a specific file or program name. A command line may contain one or more variables in place of specific file names, or parameters, that the command refers to. In an example embodiment, each JCL skeleton is a subroutine, or segment of code, that accomplishes a specific outcome as part of a larger job in the mainframe. Each JCL skeleton may be used across multiple different batch jobs. - JCL Monikers 114 is a database, or look-up table, containing monikers that outline the JCL skeletons necessary to accomplish a specific batch job. The monikers may be the ordered high-level operations necessary to achieve a batch job, and may be a ordered listing of calls to one or more skeletons from JCL
skeletons 112, as well as any intervening command lines. -
JCL symbols 116 is database, or look-up table, relating the variables contained in the command lines fromJCL skeletons 112 into discrete values for use in an assembled JCL script.Symbolic Resolution Instructions 116 acts as a database, or look-up table, to input the specific names into JCLskeleton 112 to create suitable code for operation. - Jobname table 118 is a database containing the rules for constructing a jobname for each assembled JCL script, as well as the monikers, JCL skeletons, and variable values for the JCL builds under that jobname.
-
Cognitive builder 120 creates assembled JCL batch operations using the information contained in JCLskeletons 112, Symbolic Resolution Instructions 116, JCL Assembly Instructions 114, andjobname resolution 118.Cognitive builder 120 receives a build instruction to implement the dynamic variables for each batch job. TheCognitive builder 120 implements the necessary command skeleton, from JCLskeletons 112, into the moniker for a batch job contained in JCL AssemblyInstructions 114.Cognitive builder 120 then inserts the current variable values contained inSymbolic Resolution Instructions 116 into the lines of command, and forms a JCL script. - Assembled JCL 130 is a set of commands that may be executed to perform a batch job, or start a subsystem in
process environment 135. Each set of commands, or script, located inassembled JCL 130 is the result of the combination of the elements fromJCL skeletons 112,Symbolic Resolution Instructions 116,JCL Assembly Instructions 114,jobname resolution 118 usingcognitive builder 120. -
Process environment 135 is the environment in which each script from assembledJCL 130 is executed. Each script may perform a specific action inprocess environment 135, which may be monitored bycognitive module 120. Additionally,process environment 135 may feedback errors, and the extent of those errors, tocognitive module 125, which may then be used to updateJCL skeletons 112,Symbolic Resolution Instructions 116,JCL Assembly Instructions 114 in an attempt to eliminate said errors. Further, process environment may log the system parameters of theprocess environment 135, such as the batch jobs that have been run, errors associated with any batch jobs, any logged system file changes (e.g. file name changes, file deletions, file creations), and any logged system changes (e.g. hardware changes). Additionally,process environment 135 may contained other processes or functionalities that instruct the system when to operate each script from assembledJCL 130. -
Cognitive module 125updates JCL skeletons 112,Symbolic Resolution Instructions 116,JCL Assembly Instructions 114,jobname resolution 118 based on the results of assembling the content usingcognitive builder 120, as well as results of executing assembled JCL scripts inprocess environment 135.Cognitive modules 125 may contain a cognitive error model and cognitive solution model. The cognitive error model and cognitive solution model may be machine learning algorithms that analyzes job logs, error logs, assembledJCL 130, and system and file changes to work in tandem to determine solutions to errors from running batch jobs inprocess environment 135. -
FIG. 2 is a flow chart illustrating of thecognitive builder 120. Referring to step S210,cognitive builder 120 receives a deployment command. The deployment command is the instruction to put together, or update, an assembled JCL script or scripts, based on a either the initiation of the Cognitive Dynamic ScriptBuilding System 199 viaprocess interface 152, or alternatively based on an update bycognitive builder 125 to a component, such as a skeleton inJCL skeletons 112, a variable contained inSymbolic Resolution Instructions 116, a moniker contained inJCL Assembly Instructions 114. - Referring to step S220,
cognitive builder 120 inserts the command skeleton, fromJCL skeletons 112, into the moniker outlining the steps for a batch job contained inJCL Assembly Instructions 114. Additionally,cognitive builder 120 may resolve any syntax or context related issues during the insertion. - Referring to step S230,
cognitive builder 120 inserts the current variable values contained inSymbolic Resolution Instructions 116, as well as the jobname fromjobname resolution 118, into the lines of command, and forms a JCL script. Additionally,cognitive builder 120 may record the variables, skeletons and monikers used to create the batch job associated with the jobname injobname resolution 118. As should be understood, the order of steps S220 and S230 is a matter of design choice, and could be performed in the order depicted, in the reverse order (i.e. S220 then S230), or simultaneously. -
FIGS. 3A and 3B show lines of commands prior to, and following, step S230 of the above method.FIG. 3A depicts lines of commands containing a jobname placeholder 301A, a firstvariable name 303A and a secondvariable name 305A. Following step S230,cognitive builder 120 determines values for these variables, and inserts them into the code. In this example, cognitive builder returns DB2CSIBL asactual jobname 301B, DB2C10 as actual firstvariable name 303B, and CV120216 as actual second variable 305B. -
FIG. 4 is a flow chart illustrating of thecognitive module 125. Referring to step S410,cognitive module 125 receives an error message fromprocess environment 135. The error message may contain an error code, an explanation of the error and a field for the error. - Referring to step S420,
cognitive module 125 determines whether a security violation has occurred. Security violations may be determined by a set of system level rules, such as users that are able to perform a specific job or operation, or how often a user may be able to perform a specific job within a given amount of time (e.g. number of deletions within an hour). In one example, a violation may include a RACF violation. If a security violation occurs, cognitive module proceeds to step S425. If a security violation does not occur, cognitive module proceeds to step S430. - Referring to step S425, cognitive module terminates script operation, and sends a system level alert to process
interface 152. Such alerts may notify a system administrator of failure in theprocess environment 135. - Referring to step S430,
cognitive module 125 determines the cause of the error message, and a possible answer to solve the error message, based on an error model. The error model may be a machine learning algorithm, or rules engine, that enables cognitive module to determine the root cause of a system error. In embodiments in which the error model is created based on a machine leaning algorithm, the model may be created or updated during step S430. In such embodiments, the error model may be based on a supervised machine learning algorithm, the model may be trained using system logs (containing error messages) and script logs. In building the error model, thecognitive module 125 may compare two subsequent runs of a batch job, the first being a run containing an error, and the second being a successful run. Thecognitive module 125 may analyze differences in the script for each batch job to determine what change in the script for each batch job created an error (and thus what the original cause of the error in the first script). In such an example, the “answer” to the training set is the script present in the first run, and not in the second. Additional embodiments of the error model may implement other system parameters for higher level correlations.Cognitive module 125 may analyze the error message to determine the cause of the error, based on the error model. - Referring to step S435,
cognitive module 125 may determine possible solutions to the cause of the error determined in step S430 based on a solution model. The solution model may be a machine learning algorithm, or rules engine, that enables cognitive module to determine likely solutions to the determined cause of the error. In an embodiment in which the solution model is based on a machine learning algorithm, the model may be trained using system logs (containing error messages), script logs for all associated scripts from the system logs, any logged system file changes (e.g. file name changes, file deletions, file creations), and any logged system changes (addition or removal of hardware). In building the solution model, thecognitive module 125 may compare two subsequent runs of a batch job, the first being a run containing an error, and the second being a successful run. Thecognitive module 125 may look at the newly inserted language into the script, and may use the script in the second run as the training “answer” to build a predictive solution model, and confidence score for the resulting answer. Thecognitive module 125 may correlate the correction to the error to other system changes (e.g. change in a job class of an updated file led to the error, and the fix was to update the job class in the script), and score such changes based on a confidence of the algorithm in those solutions. Thecognitive module 125 may then evaluate the error determined in step S430 for possible cognitive solutions. - Referring to step S440,
cognitive module 125 determines if there are any valid cognitive solutions to test from step S435. In one embodiment, a valid cognitive solution may be any possible cognitive solution with a confidence score above a threshold level. In another embodiment, a valid cognitive solution may be the top Nth number of cognitive solutions. Further, combinations of the above may be performed. If cognitive module determines that there are valid cognitive solutions to test,cognitive module 125 proceeds to step S450. Ifcognitive module 125 determines there are no valid cognitive solutions to test, cognitive module proceeds to step S445. - Referring to step S450,
cognitive module 125 builds a test script, usingcognitive builder 120, introduction the cognitive solution into the test script.Cognitive module 125 may then run the test script inprocess environment 135, or alternatively in test environment build to simulateprocess environment 135.Cognitive module 125 may record the test script, and result of the test, in a test log forprocess environment 135, which may be used in trainingcognitive module 125 in subsequent iterations. Referring to step S460, if the test is successfulcognitive module 125 proceeds to step S470. If the test is not successful,cognitive module 125 proceeds to step S440 to run subsequent tests (if possible). - Referring to step S470,
cognitive module 125 updates the appropriate database(s),JCL skeleton 112,JCL Monikers 114 and/orJCL Symbols 116, and issues a command tocognitive builder 120 to rebuild the associated JCL scripts. - Referring to step S445,
cognitive module 125 determines if there are any valid iterative solutions to test from step S435. An iterative solution may be determined when the error determined in step S430 has a defined set of solutions. For example, an iterative solution may be available for class type errors. Additionally, an iterative solution may be available in instances where there is a naming convention for variable names or file names. Additionally, a counter may be implemented with respect to determining the iterative solution. In such instances, the iterative solution may only be determined a valid iterative solution to test if the counter does not exceed a threshold value. Ifcognitive module 125 determines that there are valid iterative solutions to test,cognitive module 125 proceeds to step S450. Ifcognitive module 125 determines there are no valid iterative solutions to test, cognitive module proceeds to step S445. - Referring to step S455,
cognitive module 125 builds a test script, usingcognitive builder 120, introduction the iterative solution into the test script.Cognitive module 125 may then run the test script inprocess environment 135, or alternatively in test environment build to simulateprocess environment 135.Cognitive module 125 may record the test script, and result of the test, in a test log forprocess environment 135, which may be used in trainingcognitive module 125 in subsequent iterations. Referring to step S465, if the test is successfulcognitive module 125 proceeds to step S470. If the test is not successful,cognitive module 125 proceeds to step S445 to run subsequent tests (if possible). - With reference to the above, a Cognitive Dynamic Script
Building System 199 exists in which a user may initiate theprocess environment 135 without additional input to maintain proper performance.Cognitive module 125 of Cognitive Dynamic ScriptBuilding System 199 may monitor theprocess environment 135 for system errors, and then determine solutions to the system errors based on the cognitive models. Thecognitive module 125 may updateJCL skeletons 112,JCL monikers 114,JCL symbols 116 and jobname table 118 based on the determined solutions, and initiate new builds of JCL scripts bycognitive builder 120. These scripts may be contained in assembledJCL 130, and used inprocess environment 135. Additionally, while the above system is described in a JCL environment, the system may operate with other scripting languages. -
FIG. 3 depicts a block diagram of components ofserver 110 andcomputing device 150, in accordance with an illustrative embodiment of the present invention. It should be appreciated thatFIG. 3 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. -
Server 110 andcomputing device 150 includecommunications fabric 902, which provides communications between computer processor(s) 904,memory 906,persistent storage 908,communications unit 912, and input/output (I/O) interface(s) 914.Communications fabric 902 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 902 can be implemented with one or more buses. -
Memory 906 andpersistent storage 908 are computer-readable storage media. In this embodiment,memory 906 includes random access memory (RAM) 916 andcache memory 918. In general,memory 906 can include any suitable volatile or non-volatile computer-readable storage media. - The programs/
files JCL skeletons 112,JCL monikers 114,JCL symbols 116, Jobname table 118,cognitive builder 120,cognitive module 125, assembledJCL 130, andprocess environment 135 inserver 110; andprocess interface 152 incomputing device 150 are stored inpersistent storage 908 for execution by one or more of therespective computer processors 904 via one or more memories ofmemory 906. In this embodiment,persistent storage 908 includes a magnetic hard disk drive. Alternatively, or in addition to a magnetic hard disk drive,persistent storage 908 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 media that is capable of storing program instructions or digital information. - The media used by
persistent storage 908 may also be removable. For example, a removable hard drive may be used forpersistent storage 908. 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 ofpersistent storage 908. -
Communications unit 912, in these examples, provides for communications with other data processing systems or devices. In these examples,communications unit 912 includes one or more network interface cards.Communications unit 912 may provide communications through the use of either or both physical and wireless communications links. The programs/files JCL skeletons 112,JCL monikers 114,JCL symbols 116, Jobname table 118,cognitive builder 120,cognitive module 125, assembledJCL 130, andprocess environment 135 inserver 110; andprocess interface 152 incomputing device 150 may be downloaded topersistent storage 908 throughcommunications unit 912. - I/O interface(s) 914 allows for input and output of data with other devices that may be connected to
server 110 and socialmedia computing device 150. For example, I/O interface 914 may provide a connection toexternal devices 920 such as a keyboard, keypad, a touch screen, and/or some other suitable input device.External devices 920 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, e.g., the programs/files JCL skeletons 112,JCL monikers 114,JCL symbols 116, Jobname table 118,cognitive builder 120,cognitive module 125, assembledJCL 130, andprocess environment 135 inserver 110; andprocess interface 152 incomputing device 150, can be stored on such portable computer-readable storage media and can be loaded ontopersistent storage 908 via I/O interface(s) 914. I/O interface(s) 914 can also connect to adisplay 922. -
Display 922 provides a mechanism to display data to a user and may be, for example, a computer monitor. - The present invention may be a system, a method, and/or a computer program product at any possible technical detail level of integration. 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, configuration data for integrated circuitry, 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 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 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 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.
- The programs described herein are identified based upon the application for which they are implemented in a specific embodiment of the invention. However, it should be appreciated that any particular program nomenclature herein is used merely for convenience, and thus the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature.
- 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 code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, 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 combinations of special purpose hardware and computer instructions.
- While steps of the disclosed method and components of the disclosed systems and environments have been sequentially or serially identified using numbers and letters, such numbering or lettering is not an indication that such steps must be performed in the order recited, and is merely provided to facilitate clear referencing of the method's steps. Furthermore, steps of the method may be performed in parallel to perform their described functionality.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/825,220 US10310961B1 (en) | 2017-11-29 | 2017-11-29 | Cognitive dynamic script language builder |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/825,220 US10310961B1 (en) | 2017-11-29 | 2017-11-29 | Cognitive dynamic script language builder |
Publications (2)
Publication Number | Publication Date |
---|---|
US20190163609A1 true US20190163609A1 (en) | 2019-05-30 |
US10310961B1 US10310961B1 (en) | 2019-06-04 |
Family
ID=66632362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/825,220 Active US10310961B1 (en) | 2017-11-29 | 2017-11-29 | Cognitive dynamic script language builder |
Country Status (1)
Country | Link |
---|---|
US (1) | US10310961B1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11071496B2 (en) * | 2015-08-06 | 2021-07-27 | Avishai Abrahami | Cognitive state alteration system integrating multiple feedback technologies |
US11113144B1 (en) * | 2020-05-31 | 2021-09-07 | Wipro Limited | Method and system for predicting and mitigating failures in VDI system |
US20220012021A1 (en) * | 2020-07-09 | 2022-01-13 | Accenture Global Solutions Limited | Artificial intelligence-based intelligent programming assistance |
CN115048316A (en) * | 2022-08-15 | 2022-09-13 | 中国电子科技集团公司第三十研究所 | Semi-supervised software code defect detection method and device |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4974191A (en) | 1987-07-31 | 1990-11-27 | Syntellect Software Inc. | Adaptive natural language computer interface system |
US5432940A (en) * | 1992-11-02 | 1995-07-11 | Borland International, Inc. | System and methods for improved computer-based training |
US5812850A (en) * | 1995-11-13 | 1998-09-22 | Object Technology Licensing Corp. | Object-oriented symbolic debugger using a compiler driven database and state modeling to control program execution |
US6430708B1 (en) | 1998-04-17 | 2002-08-06 | Visa International Service Association | Method and apparatus for testing job control language (JCL) members |
US6851115B1 (en) | 1999-01-05 | 2005-02-01 | Sri International | Software-based architecture for communication and cooperation among distributed electronic agents |
US6662355B1 (en) | 1999-08-11 | 2003-12-09 | International Business Machines Corporation | Method and system for specifying and implementing automation of business processes |
US6944630B2 (en) | 2000-11-22 | 2005-09-13 | Bmc Software | Database management system and method which monitors activity levels and determines appropriate schedule times |
US7818729B1 (en) * | 2003-09-15 | 2010-10-19 | Thomas Plum | Automated safe secure techniques for eliminating undefined behavior in computer software |
US7343588B2 (en) * | 2004-01-30 | 2008-03-11 | International Business Machines Corporation | Method of generating and utilizing debug history |
US7886273B2 (en) * | 2005-04-29 | 2011-02-08 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Systems, methods and apparatus for generation and verification of policies in autonomic computing systems |
US7979848B2 (en) * | 2005-04-29 | 2011-07-12 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Systems, methods and apparatus for pattern matching in procedure development and verification |
US7992134B2 (en) * | 2005-04-29 | 2011-08-02 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Systems, methods and apparatus for modeling, specifying and deploying policies in autonomous and autonomic systems using agent-oriented software engineering |
US7822303B2 (en) * | 2005-09-08 | 2010-10-26 | Oclaro (New Jersey), Inc. | Optical wavelength selective router |
US8209667B2 (en) * | 2006-01-11 | 2012-06-26 | International Business Machines Corporation | Software verification using hybrid explicit and symbolic model checking |
US8381187B2 (en) | 2006-09-21 | 2013-02-19 | International Business Machines Corporation | Graphical user interface for job output retrieval based on errors |
US7895576B2 (en) * | 2006-11-10 | 2011-02-22 | International Business Machines Corporation | Method for automating internationalization software testing |
US8191044B1 (en) * | 2006-12-14 | 2012-05-29 | Fannie Mae | System and method for maintaining requirements traceability |
US8719792B2 (en) | 2008-03-24 | 2014-05-06 | International Business Machines Corporation | Correcting job control language job errors |
US8332820B2 (en) * | 2008-10-30 | 2012-12-11 | Accenture Global Services Limited | Automated load model |
US8037357B2 (en) | 2009-03-24 | 2011-10-11 | Visa U.S.A. Inc. | System and method for generating test job control language files |
US8566792B2 (en) * | 2010-05-07 | 2013-10-22 | Salesforce, Inc. | Validating visual components |
FI20115779A0 (en) * | 2011-08-02 | 2011-08-02 | Uniqoteq Oy | Device search and associative search method and presentation in a television web browser environment |
US9244814B1 (en) * | 2013-06-25 | 2016-01-26 | Cadence Design Systems, Inc | Enriched log viewer |
US9703681B2 (en) * | 2014-05-29 | 2017-07-11 | Microsoft Technology Licensing, Llc | Performance optimization tip presentation during debugging |
US20160070698A1 (en) | 2014-09-04 | 2016-03-10 | Total System Services, Inc. | Database Management System Tools for An Automated Work to Stage Process |
JP2016081126A (en) | 2014-10-10 | 2016-05-16 | 株式会社エクサ | Job control language automatic generation program |
US9448769B1 (en) * | 2015-03-30 | 2016-09-20 | International Business Machines Corporation | Employing code overlays to facilitate software development |
-
2017
- 2017-11-29 US US15/825,220 patent/US10310961B1/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11071496B2 (en) * | 2015-08-06 | 2021-07-27 | Avishai Abrahami | Cognitive state alteration system integrating multiple feedback technologies |
US11672478B2 (en) | 2015-08-06 | 2023-06-13 | Psyable Technologies Ltd. | Hypnotherapy system integrating multiple feedback technologies |
US11113144B1 (en) * | 2020-05-31 | 2021-09-07 | Wipro Limited | Method and system for predicting and mitigating failures in VDI system |
US20220012021A1 (en) * | 2020-07-09 | 2022-01-13 | Accenture Global Solutions Limited | Artificial intelligence-based intelligent programming assistance |
CN115048316A (en) * | 2022-08-15 | 2022-09-13 | 中国电子科技集团公司第三十研究所 | Semi-supervised software code defect detection method and device |
Also Published As
Publication number | Publication date |
---|---|
US10310961B1 (en) | 2019-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9009183B2 (en) | Transformation of a system change set from machine-consumable form to a form that is readily consumable by a human | |
US10310961B1 (en) | Cognitive dynamic script language builder | |
US10613799B2 (en) | Updating storage migration rates | |
AU2019202251A1 (en) | Automated program code analysis and reporting | |
US20200073649A1 (en) | Generating target configuration containers providing computer environments based on a configuration container | |
CN114830156A (en) | System and computer-implemented method for analyzing test automation workflows for Robotic Process Automation (RPA) | |
US20170199810A1 (en) | Automatic Cognitive Adaptation of Development Assets According to Requirement Changes | |
US20170228220A1 (en) | Self-healing automated script-testing tool | |
US9563421B2 (en) | Refining data understanding through impact analysis | |
US20190129788A1 (en) | Automated, adaptive, and auto-remediating system for production environment | |
US20180307567A1 (en) | Performing a closure merge operation | |
US9424116B2 (en) | Program development in a distributed server environment | |
US9256509B1 (en) | Computing environment analyzer | |
US11797820B2 (en) | Data augmented training of reinforcement learning software agent | |
US20190196944A1 (en) | System for writing and executing unit test cases | |
US10789563B2 (en) | Building confidence of system administrator in productivity tools and incremental expansion of adoption | |
CN111966382A (en) | Online deployment method and device of machine learning model and related equipment | |
US9507592B2 (en) | Analysis of data integration job | |
WO2023138594A1 (en) | Machine learning assisted remediation of networked computing failure patterns | |
US10705824B2 (en) | Intention-based command optimization | |
US11625309B1 (en) | Automated workload monitoring by statistical analysis of logs | |
US11347623B1 (en) | Automated defect type based logging integration within source code | |
US20170212755A1 (en) | System and method for computing a criticality metric of a unit of source code | |
US9910645B2 (en) | Incremental build generation | |
US11321225B2 (en) | Reducing the memory load time for logic simulator by leveraging architecture simulator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:RABASCO, RALPH A.;VAN WAGNER, CHRISTOPHER B.;SIGNING DATES FROM 20171121 TO 20171127;REEL/FRAME:044244/0374 |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |