1. Field of the Invention
The present invention relates generally to process re-engineering, and more particularly, to providing repeatable service patterns for delivering Information Technology Services that are standardized where possible and customized where required.
2. Background Art
Businesses are beset by conflicting imperatives. On the one hand, they want employees to adhere to standard business processes (often referred to as “best practices”) to provide efficient and low-cost operations as well as to adhere to legal requirements (e.g., Sarbanes-Oxley). On the other hand, businesses want innovation and flexibility, something that often requires deviating from best practices. The inevitable result of this situation is that there are many variations of the same process. Further complicating matters are mergers and acquisitions, which requires that best practices from different businesses be combined.
The foregoing situation means that businesses need a way to converge divergent processes. Further, when processes are automated through the use of a workflow engine, there is often a need to re-target a process from one workflow engine to another.
There are many areas of prior art that are somewhat related to this problem, although it is not obvious to one skilled in the art how to solve the problem. First, there are code structuring and refactoring techniques that generally increase the ease with which processes can be adapted. Examples of this are: (a) specifying command paths that determine which executable is invoked to resolve a command; (b) objective oriented programming, which provides a class hierarchies, inheritance, and abstract methods; and (c) aspect oriented programming, which allows the modification of code based on patterns in its implementation. Unfortunately, none of these techniques help with restructuring divergent processes per se; rather, they provide a framework in which to write processes.
Another potentially related area is design patterns. Design patterns are abstractions about how to write code to gain improvements in flexibility, speed, and other considerations. Processes that are developed in accordance with properly designed patterns can be much easier to adapt and more efficient. However, the problem faced by many businesses is that their processes do not adhere to well formulated guidelines.
One potentially related area is data mining, a capability whereby patterns in processes can be discovered (e.g., the use of a specific web service). While data mining allows an analyst to discover similarities and differences between processes, it does not by itself provide a way to transform divergent processes.
An object of this invention is to provide a system and method for converging divergent processes.
Another object of the present invention is to provide repeatable service patterns for delivering Information Technology Services.
These and other objectives are attained with a system for and method of identifying similarities and differences between processes, through the use of an ontology. The system comprises an Ontology Repository providing a specified vocabulary for describing a set of processes, and a Process Annotator for labeling fragments of the processes using said specified vocabulary. The system further comprises a Process Grapher to form graphs of the processes, said graphs showing relationships between the processes at a plurality of levels; and a Process Analyzer and Visualizer to identify similarities and differences between the process elements based on the ontology.
The Process Ontology Repository, as mentioned above, provides a vocabulary for describing the set of processes. For example, processes might be categorized in terms of the IT Infrastructure Library, such as change management, problem management, and configuration management. Indeed, these high level processes can be refined further for considerations such as approval processes. The ontology provides a way to name process fragments as well as to relate higher-level expectations to lower level processes.
The preferred embodiment of the invention uses the Process Ontology Repository in conjunction with a: (a) Process Annotator that labels process fragments based on the ontology; (b) Process Grapher that shows the relationship between process elements at different levels; (c) Process Graph Repository that contains process graphs and workflow associations and supports queries against them; (d) Process Analyzer and Visualizer that provides a way to find similar process elements based on the ontology; (e) Transformation Planner that creates a plan for how divergent processes can be converged based on similarities identified by the Process Analyzer and Visualizer; and (f) Workflow Enabler that retargets process workflows to different workflow engines.
The preferred embodiment of the invention provides a means for an Ontology Designer to update the Process Ontology Repository to describe new processes. A second aspect of the preferred embodiment of the invention details how to transform divergent processes into a single process. A third aspect of the preferred embodiment of the invention prescribes how variants of a single master process are updated when there are changes in the master process.
Considerable benefits accrue from the preferred system and methods of the present invention. Foremost, businesses are able to converge divergent processes while retaining flexibility. Further, businesses are able to operate in a more decentralized way, which provides agility and speed-to-market.
Further benefits and advantages of the invention will become apparent from a consideration of the following detailed description, given with reference to the accompanying drawings, which specify and show preferred embodiments of the invention.
The present invention relates to the use of ontology to identify similarities and differences between processes. Ontology is a philosophy of what exists. In computer science ontology is used to model entities of the real world and the relations between them, so as to create common dictionaries for their discussion. Basic concepts of ontology include (i) classes of instances/things, and (ii) relations between the classes, as described hereinbelow. Ontology provides a vocabulary for talking about things that exist. Ontological models are used to talk about “things.” An important vocabulary tool is “relations” between things. An ontology model itself does not include the “things,” but introduces class and relation symbols which can then be used as a vocabulary for talking about and classifying things. Ontology provides a vocabulary for speaking about instances, even before the instances themselves are identified. A class Book is used to say that an instance “is a Book.” A function Author allows one to create clauses “author of” about an instance. A relation Siblings allows one to create statements “are siblings” about instances. Inheritance is used to say, for example, “every Book is a PublishedWork”. Thus all vocabulary appropriate to PublishedWork can be used for Book.
Once an ontology model is available to provide a vocabulary for talking about instances, the instances themselves can be fit into the vocabulary. For each class symbol, C, all instances which satisfy “is a C” are taken to be the set of instances of C, and this set is denoted B(C). Sets of instances are consistent with inheritance, so that B(C1)⊂B(C2) whenever C1 is a subclass of C2. Relation symbols with domain C1xC2x . . . xCn correspond to relations on B(C1)xB(C2)x . . . xB(Cn). Similarly, function symbols with domain B(C1) and co-domain B(C2) correspond to functions with domain B(C1) and co-domain B(C2). It is noted that if class C1 inherits from class C, then every instance of C1 is also an instance of C, and it is therefore known already at the ontology stage that the vocabulary of C is applicable to C1.
Ontology enables creation of a model of multiple classes and a graph of relationships therebetween. When a class is defined, its attributes are described using handles to related classes. These can in turn be used to look up attributes of the related class, and thus attributes of attributes can be accessed to any depth.
The method of the present invention will be generally implemented by a computer executing a sequence of program instructions for carrying out the steps of the method and may be embodied in a computer program product comprising media storing the program instructions. Referring to
The program product may also be stored on hard disk drives within processing unit 802 or may be located on a remote system 814 such as a server, coupled to processing unit 802, via a network interface, such as an Ethernet interface. Monitor 806, mouse 814 and keyboard 808 are coupled to processing unit 802, to provide user interaction. Scanner 824 and printer 822 are provided for document input and output. Printer 822, is shown coupled to processing unit via a network connection, but may be coupled directly to processing unit 802. Scanner 824 is shown coupled to processing unit 802 directly, but it should be understood that peripherals may be network coupled or direct coupled without affecting the ability of workstation computer 800 to perform the method of the invention.
As will be readily apparent to those skilled in the art, the present invention can be realized in hardware, software, or a combination of hardware and software. Any kind of computer/server system(s)—or other apparatus adapted for carrying out the methods described herein—is suited. A typical combination of hardware and software could be a general-purpose computer system with a computer program that, when loaded and executed, carries out the respective methods described herein. Alternatively, a specific use computer, containing specialized hardware for carrying out one or more of the functional tasks of the invention, could be utilized.
The present invention, or aspects of the invention, can also be embodied in a computer program product, which comprises all the respective features enabling the implementation of the methods described herein, and which—when loaded in a computer system—is able to carry out these methods. Computer program, software program, program, or software, in the present context mean any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form.
While it is apparent that the invention herein disclosed is well calculated to fulfill the objects stated above, it will be appreciated that numerous modifications and embodiments may be devised by those skilled in the art, and it is intended that the appended claims cover all such modifications and embodiments as fall within the true spirit and scope of the present invention.