System and method of generating and managing computing tasks

A method, computer program product, and system of managing computing tasks includes storing at least one build information element within at least one attribute of a configuration management tool A computing task is generated from within the configuration management tool based upon, at least in part, the at least one build information element. The computing task is initiated from within the configuration management tool. The computing task is deployed on a computing device.

TECHNICAL FIELD

This disclosure relates to the generation and management of computing tasks, and, more particularly, to the generation and management of computing tasks from within a configuration management tool.

BACKGROUND

A build process may be the process by which an individual and/or an organization builds, compiles, and deploys software. The build process for many computer systems is a manual process. In particular, the process of developing, deploying, and executing mainframe computer jobs is a manual, burdensome process. Developers must manually determine how to build, compile, and deploy their work within the development environment. Additionally, developers must be aware of and manage build/compile components for each individual source file within a project. The manual development process, especially a mainframe development process, is costly and inefficient. Development resources that could be directed toward software development are consumed by management of the build, compilation, and deployment processes.

A data driven approach to automating the build and deployment processes that utilizes functionality of a configuration management tool may alleviate the burden placed on developers who must manage the build and deployment process. This data driven approach may also increase efficiency by bridging the gap between PC based development tools and various development models, including development models that include mainframe-based build cycles.

SUMMARY OF DISCLOSURE

According to a first implementation, a method of managing computing tasks includes storing at least one build information element within at least one attribute of a configuration management tool. A computing task is generated from within the configuration management tool based upon, at least in part, upon the at least one build information element. The computing task is initiated from within the configuration management tool. The computing task is deployed on a computing device.

One or more of the following features may be included. The computing task may be executed on the computing device. The computing task may be generated based upon, at least in part, the at least one build information element by initiating a script that is operative to perform operations including one or more of using the at least one build information element to generate the computing task; initiating the computing task; and executing the computing task on the computing device. The at least one build information element may include one or more of build parameters; software code; script code; flags; deployment parameters; meta-data; and build commands. The at least one attribute may include one or more of a project level attribute; an element level attribute; an environment variable level attribute; and a global level attribute. The computing device may include a mainframe computer. The computing task may include build control language. The computing task may include a multi-platform computing task. Generating the computing task may include generating at least one task for each platform of the multi-platform computing task. The method of managing computing tasks may include managing a version of the at least one build information element via the configuration management tool.

According to a second implementation, a computer program product residing on a computer readable medium has a plurality of instructions stored thereon, which, when executed by a processor, cause the processor to perform operations including: storing at least one build information element within at least one attribute of a configuration management tool; generating a computing task from within the configuration management tool based, at least in part, upon the at least one build information element; initiating the computer task from within the configuration management tool; and deploying the computing task on a computing device.

One or more of the following features may be included. The computing task may be executed on the computing device. The computing task may be generated based upon, at least in part, the at least one build information element by initiating a script that is operative to perform operations including one or more of using the at least one build information element to generate the computing task; initiating the computing task; and executing the computing task on the computing device. The at least one build information element may include one or more of build parameters; software code; script code; flags; deployment parameters; meta-data; and build commands. The at least one attribute may include one or more of a project level attribute; an element level attribute; an environment variable level attribute; and a global level attribute. The computing device may include a mainframe computer. The computing task may include build control language. The computing task may include a multi-platform computing task. Generating the computing task may include generating at least one task for each platform of the multi-platform computing task. The method of managing computing tasks may include managing a version of the at least one build information element via the configuration management tool.

Like reference symbols in the various drawings denote like elements.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Referring toFIG. 1, there is shown build and deployment architecture100and build and deployment process102. As will be discussed below in greater detail, build and deployment process102may store at least one build information element within a configuration management tool. Build and deployment process102may also generate a computing task from within the configuration management tool based upon, at least in part, the at least one build information element. Additionally, build and deployment process102may initiate and deploy the computing task from within the configuration management tool.

The above-described build and deployment process (e.g., build and deployment process102) may be a client-side build and deployment process (e.g., client-side build and deployment process102), a server-side build and deployment process (not shown) or a hybrid server-side/client-side build and deployment process (e.g., the combination of client-side build and deployment process102and one or more server-side build and deployment processes).

Build and deployment process102may reside on and may be executed by client computer104, which may be connected to network106(e.g., the Internet or a local area network). Examples of client computer104may include, but are not limited to: a personal computer, a server computer, a series of server computers, a mini computer, a mainframe computer, a terminal, a laptop computer, a notebook computer, and a tablet computer. Client computer104may run a network operating system, such as Microsoft XP™, OS/2™, or Ubuntu Linux™. Client computer104may also be a terminal computer without a resident operating system. Various and multiple computer applications may run on client computer104. For example, in addition to build and deployment process102, client computer104may also run a configuration management application, such as configuration management application108. Examples of configuration management application108may include, but are not limited to: the ClearCase™, Visual Source Safe™, CVS™, and CM Synergy™ configuration management tools.

Build and deployment process102may be a stand alone build and deployment application or an applet/application that is executed within a build and deployment application (not shown), examples of which may include, but are not limited to: BuildForge™, Visual Studio™, or a custom deployment application. Configuration management application108may be a stand alone application and may provide configuration management services locally. Configuration management application108may also be a client-side application that may accesses remote configuration management services. For example, configuration management application108may access configuration management services110provided by server computer112.

The instruction sets and subroutines of various applications and processes, including build and deployment process102, configuration management application108, and configuration management service110may reside on a computer readable medium that may be coupled to a computing device. For example, the instruction sets and subroutines of build and deployment process102and configuration management application108may reside on computer readable medium114coupled to client computer104, configuration management service110may reside on computer readable medium116coupled to server computer112. Similarly, one or more of the build and deployment process, the configuration management application, and the configuration management service may reside on computer readable medium118coupled to target computer120. Computer readable media114,116,118may be any type of computer readable media including, but not limited to: a hard disk drive, a solid state drive, an array of hard drives, an optical disc, a read-only memory, a random access memory, a flash memory, and a tape drive.

Server computer112may be a server (or a series of servers) running a network operating system, examples of which may include but are not limited to: Microsoft Windows 2003 Server™; Novell Netware™; or Redhat Linux™, for example. Server computer114may also execute at least one server application and/or provide at least one server service. For example, server computer112may provide a database service, such as database service122and/or configuration management service110. Database service122may provide database services through a database application including, but not limited to: an Oracle™ database application, a SQL™ database application, and/or a custom database application. Similarly, configuration management service110may provide configuration management services through a configuration management application including, but not limited to: CVS™ configuration management, Perforce™ configuration management, and/or ClearCase™ configuration management. Server computer112may execute a web server application, examples of which may include but are not limited to: the Microsoft IIS™, Novell Webserver™, or Apache™ Webserver, that allows for HTTP (i.e., HyperText Transfer Protocol) access to server computer112via network106. In general, server services running on server computer112, such as database service122and configuration management service110, may be available via a network, such as computer network106.

The instruction sets and subroutines of build and deployment process102, which may be stored on computer readable medium114coupled to client computer104, may be executed by one or more processors (not shown) and one or more memory architectures (not shown) incorporated into client computer104. As mentioned above, computer readable medium114may include but is not limited to: a hard disk drive; a solid state drive; a tape drive; an optical drive; a RAID array; a random access memory (RAM); and a read-only memory (ROM), and a flash memory device.

Network106may be a local network or a wide area network. For example, network106may be a local area network, a wide area network, and intranet, an internet, or any form of network. Additionally, network106may include multiple networks and multiple types of networks. For example, network106may include all the interconnected networks that are necessary to connect one or more computing devices, i.e., network106may include multiple local area networks, and/or multiple wide area networks, and/or multiple intranets, and/or multiple internets in varied and various connection configurations.

User124may access the client computer directly through the device on which the build and deployment process (e.g., build and deployment process102) is executed, namely client computer104, for example. User124may also access one or more of client computer104, server computer112, or target computer120through network106.

Various electronic devices may be directly or indirectly coupled to network106. For example, target computer120is shown directly coupled to network via a hardwired network connection. Further, server computer112is also shown directly coupled to network via a hardwired network connection. Client computer104is shown wirelessly coupled to network via wireless communication channel126established between client computer104and wireless access point128(i.e., WAP128), which is shown directly coupled to network106. WAP128may be, for example, an IEEE 802.11a, 802.11b, 802.11g, Wi-Fi, and/or Bluetooth device that is capable of establishing wireless communication channel between client computer104and WAP128.

The Build and Deployment Process:

While the above-described build and deployment process may be implemented as a server-side build and deployment process, a client-side build and deployment process, or a hybrid server-side/client-side build and deployment process, for illustrative purposes, the following discussion will relate to the client-side build and deployment process (e.g., build and deployment process102residing on client computer104). However, this should not be construed as a limitation of the present disclosure as other configurations (e.g., a server-side build and deployment process, or a hybrid server-side/client-side build and deployment process) are possible and are considered to be within the scope of this disclosure.

Referring also toFIG. 2build and deployment process102may store202at least one build information element within at least one attribute of a configuration management tool. Build and deployment process102may further generate204a computing task from within the configuration management tool based upon, at least in part, the at least one build information element. The computing task may initiate206the computing task from within the configuration management tool. The computing task may be deployed208on a computing device. For example, build and deployment process102may store202build information within attributes and elements of a configuration management tool, such as configuration management application108and/or configuration management service110.

A build process may be the process by which an individual and/or an organization builds, compiles, and deploys software. The configuration management tool (e.g., configuration management application108and/or configuration management service110) may provide methods of managing and storing the configurations and revisions of files and information associated with a build process. For example, as mentioned above, configuration management application108may be a commercial configuration management tool, i.e., the ClearCase™ tool or the Perforce™ tool. Additionally, configuration management application108may allow a user, such as user124, to add, remove, and/or modify elements and attributes within configuration management application108. User124may, for example, add a source file to configuration management application108. As another example, user124may create a new version of a DLL file within configuration management application108. Additionally, user124may add, remove, or modify ancillary information associated with an element within configuration management application108, i.e., user124may add a comment to an element, modify a documentation associated with an element, or delete a parameter of an element, and/or modify a variable associated with the configuration management tool, for example.

User124may also store202at least one build information element within a configuration management tool. A build element may describe an aspect of a build process. For example, a build information element may contain information about a compiler that may be used to perform a build. As another example, a build information element may contain information relating to build options or build parameters that may be used to perform a build. A build information element may also contain information about libraries that may be included in a build, files that may be included in a build, global parameters that may be included in a build, and/or steps that may be performed in a build. Additionally, a build information element may contain software code, such as job control language (“JCL”), build control language (“BCL”), C, C++, C#, Java™ code, Perl, and/or any type of code. In general, a build information element may contain any information associated with a build or build process.

The at least one build information element stored202within the configuration management tool may take various forms. For example, a build information element may include one or more of build parameters; software code; script code; flags; deployment parameters; meta-data; and build commands. A build parameter may be a build option, a build attribute, or any information associated with the compilation and/or building of a computing task. For example, a build parameter may be an option that may direct a compiler to include debugging information in the output of the compiler. A build parameter may also contain information about whether to include or exclude an assembly step as part of the compilation process. A build information element may also contain software code and/or script code. For example, when build and deployment process102generates204a computing task, build and deployment process102may include within the software task any software code and/or script code that is stored202as build information elements within at least one attribute of the configuration management tool.

A build information element may also be a flag, for example a compilation flag that may instruct the compiler to perform (or omit) a particular task. A flag may also be a software flag that may be included within software code that may be generated and/or compiled by build and deployment process102. A build information element may also be a deployment parameter that may contain information, instructions, flags, etc., that may be used during deployment208of the computing task. A build information element may also be meta-data (e.g., data that describes and/or distinguishes other data) or build commands, such as a command to execute a compiler. In general, a build information element may contain any information necessary to facilitate the generation204of the computing task.

The build information element(s) within the configuration tool may be stored202within attributes of a configuration management tool, such as configuration management application108and/or configuration management service110. Attributes of a configuration management tool may be configuration elements, such as files and/or file revisions, for example. Attributes of a configuration management tool may also be variables within the configuration management tool, such as variables, global variables, or other information that may be stored within a configuration management tool. For example, the ClearCase™ configuration management tool may allow a user to store, revise, and keep revisions of a file. A user, such as user124, may also store202build information elements within the file. Additionally, the ClearCase™ configuration management tool may allow user124to store additional information within the ClearCase™ configuration management environment, such as variable values, or other information. Again, user124may be able to store202at least one build information element as variables or other information within the ClearCase™ configuration management environment. Although ClearCase™ is used as an example, one skilled in the art will recognize that any configuration management tool may be used.

The build information elements may be stored202within attributes of a configuration management tool, such as configuration management application108and/or configuration management service110. The attributes may include one or more of a project level attribute; an element level attribute; an environment variable level attribute; and a global level attribute. A project level attribute may be an attribute, such as a variable or other attribute, associated with a project of the configuration management tool. An environment variable level attribute may be an attribute or element associated with the computing environment. For example, an environment variable level attribute may be an environment variable of the operating system running on client computer104or server computer112. A global level attribute may be a global variable within the configuration management tool. The scope of a global level attribute may be a global scope within the configuration management tool and/or within the development environment. The global level attribute may, for example, affect all projects within the configuration management tool whereas a project level attribute may affect only one or more projects within the configuration management tool.

As stated above, build and deployment process102may generate204a computing task within the configuration management tool based upon, at least in part, the at least one stored202build information element. The one or more build information elements stored202within the configuration management tool may contain information that may allow build and deployment process102to generate204a computing task. For example, build and deployment process102may access the build information elements stored202within the configuration management tool and may use the build information elements to generate204a computing task. Unlike a standard build process, build and deployment process102may generate204the computing task from within the configuration management tool. That is, build and deployment process102(alone or in conjunction with the configuration management tool, e.g., provided by one or more of configuration management application108and/or configuration management service110) may contain all the information and intelligence necessary to generate204the computing task. The computing task may be an application, a mainframe job, a batch job, or any form of computing task.

Build and deployment process102may also initiate206a computing task from within the configuration management tool. Build and deployment process102may, for example, send210the computing task to a computing device, such as target computer120. Target computer120may be a computer of the type and configuration to accept the computing task. For example, if the computer task is an application, target computer120may be a personal computer; if the computing task is a mainframe, the computing task may be a JCL or BCL task. A build control language (“BCL”) task may be similar to a job control language (“JCL”) task, for example. When build and deployment process102initiates206a computing task from within the configuration management tool, build and deployment process102may, in general, process the computing task, which may include preparing the computing task for execution.

Build and deployment process102may deploy208a computing task on a computing device. Deployment208of the computing task may be a permanent or semi-permanent installation on one or more target devices, such as target computer120. Deployment208may also include generating212an installation package that may be used to install the computing task on one or more target devices.

Build and deployment process102may include a user interface to provide a user, such as user124, with a visual representation and interface of the features and functions of build and deployment process102. Alternatively, build and deployment process102may be a computer service sans a user interface, or may include only a text-based interface. Build and deployment process102may also be a process that borrows and/or adds to the user interface of another application. For example, build and deployment process102may include a button, menu item, or other element that is displayed as part of the user interface of configuration management application108, for example.

Build and deployment process102(alone or in conjunction with the configuration management tool, e.g., provided by one or more of configuration management application108and/or configuration management service110) may execute214the computing task on the computing device. For example, build and deployment process102may initiate206a computing task by, for example, sending210the computer task to a computer device for execution. Build and deployment process102may also execute214the computing task. Executing214the computing task may include executing214the computing task on a local machine, such as client computer104, or controlling216execution on a remote machine, such as target machine120. Executing214the computing task may also include controlling218the flow of execution214. For example, build and deployment process102may execute214the computing task without any breaks, may break the execution of the computing task, may pause the execution of the computing task, and/or may set the priority of the execution of the computing task, etc., thereby controlling218the flow of execution214.

In one embodiment, the computing device may be a mainframe computer. For example, target computer120may be a mainframe computer. Target computer120may also be running a mainframe operating system such as z/OS™. Additionally, in the case where target computer120is a mainframe computer, the computing task may include build control language. Build control language may be a scripting language that runs on mainframe computers and may instruct the mainframe computer how to run a batch job or start a subsystem, for example. Build control language may be similar to job control language, which is a mainframe scripting language that is known in the art.

The computing task may be able to run on multiple platforms. As such, the computing task may be a multi-platform computing task. For example, the computing task may be targeted toward a mainframe, such as an IBM™ mainframe, or may be targeted toward a personal computer. Additionally, build and deployment process102may generate204at least one task for each platform of the multi-platform computing task. A single computing task may not be able to run on all platforms. For example, a script may run on an IBM™ mainframe computer, but may not also run on a personal computer or Macintosh™ computer. Accordingly, build and deployment process102may generate a task for each platform targeted by the multi-platform computing task. In such an example, the build information elements within the configuration management tool may contain information that may allow build and deployment process102to generate204computing tasks for each of the platforms that may be targeted by the multi-platform computing task.

In order to generate204the computing task, build and deployment process102may initiate220(e.g., may create) a script that may generate204the computing task. The script may, for example, read the one or more build information elements stored202within a configuration management tool (e.g., provided by one or more of configuration management application108and/or configuration management service110) and may use the one or more build information elements to generate204a computing task based upon, at least in part, the one or more build information elements. As stated, a computing task may be an application, a JCL task, a BCL task, or any other computing task. Similarly, the script may be any type of script including: an application, a perl script, a Java™ script, etc. The script initiated220(e.g., created) by build and deployment process102may also initiate206the computing task on a target device, such as target computer120. The script may also deploy208the computing task on one or more target devices, such as target computer120. Further, the script initiated220by build and deployment process102may execute214and/or control the execution214of the computing task on the target device (e.g., target computer120). Build and deployment process102may initiate220and/or activate the script via a user interface element (not shown), such as a button, menu item, or other user interface element that may be part of the user interface of a third party application, such as configuration management application108.

As described, the build and deployment architecture100may include a configuration management tool, such as configuration management application108and/or configuration management service110. Build and deployment process102(alone or in conjunction with the configuration management tool), may store202one or more build elements and may generate204, initiate206, and deploy208computing tasks from within the configuration management tool. Additionally, build and deployment process102(alone or in conjunction with the configuration management tool) may manage222a version of the at least one build information element via the configuration management tool, and may have the ability to keep track of versions, revisions, and changes to elements and attributes within the configuration management tools. A user, such as user124, may also use the versioning features of build and deployment process102and/or the configuration management tool to capture and track changes to the build information elements stored202within the configuration management tool. For example, user124may wish to roll back to a prior version of the build and control elements and may utilize the versioning features of build and deployment process102and/or the configuration management tool to recall all the build information elements associated with the prior version.