This application is a continuation-in-part of System and Method for Managing a Chaotic Event, U.S. application Ser. No. 11/516,954, filed Sep. 7, 2006; and is also a continuation-in-part of System and Method for Optimizing Project Subdivision Using Data and Requirements Focuses Subject to Multidimensional Constraints, U.S. application Ser. No. 11/553,526, filed Oct. 27, 2006.
1. Field of the Invention
The present invention relates generally to an improved data processing system. More particularly, the present invention relates to a computer implemented method, apparatus, and computer usable program code for managing a chaotic event.
2. Description of the Related Art
Major chaotic events are, by definition, times of great difficulty. Chaotic events are events that cause an interruption in routines normally performed by people in everyday activities because of damage inflicted to individuals and infrastructure. For example, there is great potential for episodes of profound chaos during hurricanes, earthquakes, tidal waves, solar flares, flooding, terrorism, war, and pandemics to name a few. Even when the chaotic event is statistically predictable, the results are often still shocking. Chaotic events do not occur frequently, but the results may be long lasting and unexpected.
Human beings, by nature, are generally very ill prepared at a mental level for planning for and dealing with these chaotic events. Leaders and other planners tend to only concentrate on a small number of obvious situations. Additionally, various chaotic events are difficult to plan for because of how rarely they occur and because of the unknowable. The unknowable effects may include the severity and geographic range of the affected area and the reaction to the event. Plans often have political or economic groundings rather than being empirically driven.
Further complicating chaotic events are the disruption to the lives of staff members, leaders of organizations, and individuals that may be expected to provide support, services, or leadership during and after the chaotic event. Unfortunately, during chaotic events, the people most needed may have been killed, injured, assisting family members, fleeing, or otherwise inaccessible. Standard contingency planning, especially for expert support, is necessary but insufficient because chaotic events are rare, catastrophic, and dynamic in nature.
The exact skills and quantities of each skill needed are unknowable. The availability of the necessary skill pool is problematic because trying to lock in additional skills in advance of a chaotic event is financially and organizationally infeasible. Providing the logistics necessary in advance to provide expert support for all potentially catastrophes is impossible. As a result, people, corporations, governments, enterprises, and agencies have great difficulty in finding necessary expert skills during chaotic events.
Additionally, the presentation of data to decision makers during a chaotic effect can have a major impact on the effectiveness of the decision makers. For example, during chaotic events decision makers can have great difficulty making optimal decisions, from a mathematically verifiable perspective, even when theoretically optimal information is available. The decision maker can be overwhelmed or confused by the way information is presented. The decision maker may also be unable to easily find important and relevant pieces of information in a sea of data. These problems may be further compounded when decisions are made by multiple decision makers.
The aspects of the present invention provide for a computer implemented method, apparatus, and computer usable program code for displaying information related to a chaotic event. A mathematical optimization algorithm is used to select an optimal decision set for a user. The mathematical optimization algorithm takes as input a decision template, chaotic event information regarding a chaotic event, and a user profile. The optimal decision set is displayed for the user.
Also provided is a method for optimally selecting a subset of decisions from a first plurality of decisions related to management of a chaotic event. The first plurality of decisions related to the chaotic event is received. A heuristic algorithm is used to eliminate a first subset of decisions. The first subset of decisions is in the first plurality of decisions. A second plurality of decisions is formed. The second plurality of decisions comprises the first plurality of decisions less the first subset of decisions. A mathematical optimization algorithm is then used to select a second subset of decisions. The second subset of decisions is within the second plurality of decisions. The mathematical optimization algorithm takes as input at least one constraint and chaotic event information. The second subset of decisions is stored.
Also provided is a method for determining a sequence of decisions related to a chaotic event. A plurality of decisions related to the chaotic event is received. A mathematical optimization algorithm is used to select a sequence in which the plurality of decisions are to be considered. The mathematical optimization algorithm takes as input at least one constraint and chaotic event information. The sequence is stored.
Also provided is a method for displaying information related to a chaotic event. A mathematical optimization algorithm is used to select a first optimal decision set for a user. The mathematical optimization algorithm takes as input a decision template, chaotic event information, at least one constraint, and a user profile. A heuristic algorithm is used to eliminate a first subset of decisions. The first subset of decisions is in the first optimal decision set. A second optimal decision set is formed. The second optimal decision set comprises the first optimal decision set less the first subset of decisions. The mathematical optimization algorithm is used to select a sequence in which decisions in the second optimal decision set are to be considered. The mathematical optimization algorithm takes as input the second optimal decision set, the decision template, the chaotic event information, the at least one constraint, and the user profile. The sequence is stored.
The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
FIG. 1 is a pictorial representation of a network of data processing systems in which illustrative embodiments may be implemented;
FIG. 2 is a block diagram of a data processing system in which illustrative embodiments may be implemented;
FIG. 3 is a block diagram for managing chaotic events in accordance with the illustrative embodiments;
FIG. 4 is a block diagram for detecting chaotic events in accordance with the illustrative embodiments;
FIG. 5 is a block diagram for predicting severity of chaotic events in accordance with the illustrative embodiments;
FIG. 6 is a block diagram for finding and organizing skills for chaotic events in accordance with the illustrative embodiments;
FIG. 7 is a block diagram for finding and organizing routes for chaotic events in accordance with the illustrative embodiments;
FIG. 8 is a flowchart for managing expert resources during times of chaos in accordance with the illustrative embodiments;
FIG. 9 is a block diagram illustrating a major information technology project, in accordance with an illustrative embodiment;
FIG. 10 is a block diagram of a prior art method of constructing a major information technology project;
FIG. 11 is a block diagram of a set of sub-projects created using the prior art method shown in FIG. 10;
FIG. 12 is a block diagram illustrating major information technology sub-projects that inefficiently overlap underlying realities of existing information technology systems as a result of the prior art method shown in FIG. 10;
FIG. 13 is a block diagram illustrating a computer-implemented method of creating optimized sub-projects for a major information technology project, in accordance with an illustrative embodiment;
FIG. 14 is a block diagram illustrating optimally selected sub-projects for a major information technology project, in accordance with an illustrative embodiment;
FIG. 15 is a block diagram illustrating major information technology sub-projects that efficiently overlap underlying realities of existing information technology systems, in accordance with an illustrative embodiment;
FIG. 16 is a block diagram illustrating a method of creating optimized sub-projects for a major information technology project, in accordance with an illustrative embodiment;
FIG. 17 is an exemplary output object valuation matrix, in accordance with an illustrative embodiment;
FIG. 18 is a block diagram of a “to be” data model, in accordance with an illustrative embodiment;
FIG. 19 is a block diagram of a “to be” process model, in accordance with an illustrative embodiment;
FIG. 20 is a block diagram illustrating data value clusters, in accordance with an illustrative embodiment;
FIG. 21 is a block diagram illustrating process value clusters, in accordance with an illustrative embodiment;
FIG. 22 is a block diagram illustrating elements of a “to be” data model, in accordance with an illustrative embodiment;
FIG. 23 is a block diagram illustrating elements of a “to be” process model, in accordance with an illustrative embodiment;
FIG. 24 is an exemplary affinity matrix, in accordance with an illustrative embodiment;
FIG. 25 is a block diagram illustrating mapping from an “as-is” model to a “to be” model, in accordance with an illustrative embodiment;
FIG. 26 is a block diagram illustrating transformation issues applied to the mapping from an “as-is” model to a “to be” model, in accordance with an illustrative embodiment;
FIG. 27 is a block diagram illustrating exemplary available resources, in accordance with an illustrative embodiment;
FIG. 28 is a block diagram illustrating exemplary project constraints, in accordance with an illustrative embodiment;
FIG. 29 is a block diagram illustrating exemplary political concerns, in accordance with an illustrative embodiment;
FIG. 30 is a block diagram illustrating examples of feedback applied to an optimization engine, in accordance with an illustrative embodiment;
FIG. 31 is a block diagram illustrating a computer-implemented method of creating optimized sub-projects for a major information technology project, in accordance with an illustrative embodiment;
FIG. 32 is a flowchart illustrating a computer-implemented method of creating optimized sub-projects for a major information technology project, in accordance with an illustrative embodiment;
FIG. 33 is a block diagram of a system for chaotic event management, in accordance with an illustrative embodiment;
FIG. 34 is a block diagram of an additional function for a system for chaotic event management, in accordance with an illustrative embodiment;
FIG. 35 is an exemplary screenshot of an output of a system for chaotic event management, in accordance with an illustrative embodiment;
FIG. 36 is an exemplary screenshot of an output of a system for chaotic event management, in accordance with an illustrative embodiment;
FIG. 37 is an exemplary screenshot of an output for a system for chaotic event management, in accordance with an illustrative embodiment;
FIG. 38 is a flowchart illustrating an operation of a system for chaotic event management, in accordance with an illustrative embodiment;
FIG. 39 is a flowchart illustrating a process of sub-dividing a decision set, in accordance with an illustrative embodiment;
FIG. 40 is a flowchart of a process of sequencing a set of decisions, in accordance with an illustrative embodiment;
FIG. 41 is a flowchart illustrating a process of generating optimal decision sets, in accordance with an illustrative embodiment;
FIG. 42 is a flowchart illustrating a process of generating a set of decisions, in accordance with an illustrative embodiment;
FIG. 43 is a flowchart illustrating a process of optimizing a sequence of decisions, in accordance with an illustrative embodiment;
FIG. 44 is a flowchart illustrating a process of generating an optimal sequence of decisions, in accordance with an illustrative embodiment;
FIG. 45 is a flowchart illustrating a process of generating and sequencing an optimal decision set, in accordance with an illustrative embodiment.
I. Preface
This document is divided into six major sections. This section, Section I is the preface and describes the overall organization of this document. The second section, Section II, provides general background knowledge of networks and computers. The third section, Section III, describes our prior work with regard to the management of chaotic events. The fourth section, Section IV, describes our prior work with regard to mathematically rigorous optimal selection of subprojects for a major project. The fifth section, Section V, describes our additional work in the area of management of chaotic events. The sixth section, Section VI, is the conclusion section. The terms “our” and “we” refer to the inventors of the material in this document and/or of the materials in the related documents described below. The terms “we” and “our” can refer to a singular inventive entity, a single person, or multiple persons where appropriate.
II. Computer and Network Background
This section, Section II, provides general background knowledge of computers and networks. The following section, Section III, describes our prior work in the area of chaotic event management.
With reference now to the figures and in particular with reference to FIGS. 1-2, exemplary diagrams of data processing environments are provided in which illustrative embodiments may be implemented. It should be appreciated that FIGS. 1-2 are only exemplary and are not intended to assert or imply any limitation with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environments may be made.
FIG. 1 is a pictorial representation of a network of data processing systems in which illustrative embodiments may be implemented. Network data processing system 100 is a network of computers in which embodiments may be implemented. Network data processing system 100 contains network 102 , which is the medium used to provide communications links between various devices and computers connected together within network data processing system 100 . Network 102 may include connections, such as wire, wireless communication links, or fiber optic cables.
In the depicted example, server 104 and server 106 connect to network 102 along with storage unit 108 . In addition, clients 110 , 112 , and 114 connect to network 102 . These clients 110 , 112 , and 114 may be, for example, personal computers or network computers. In the depicted example, server 104 provides data, such as boot files, operating system images, and applications to clients 110 , 112 , and 114 . Clients 110 , 112 , and 114 are clients to server 104 in this example. Network data processing system 100 may include additional servers, clients, and other devices not shown.
In the depicted example, network data processing system 100 is the Internet with network 102 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, governmental, educational and other computer systems that route data and messages. Of course, network data processing system 100 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN). FIG. 1 is intended as an example, and not as an architectural limitation for different embodiments.
FIG. 2 is a block diagram of a data processing system in which illustrative embodiments may be implemented. Data processing system 200 is an example of a computer, such as server 104 or client 110 in FIG. 1, in which computer usable code or instructions implementing the processes may be located for the illustrative embodiments.
In the depicted example, data processing system 200 employs a hub architecture including a north bridge and memory controller hub (MCH) 202 and a south bridge and input/output (I/O) controller hub (ICH) 204 . Processor 206 , main memory 208 , and graphics processor 210 are coupled to north bridge and memory controller hub 202 . Graphics processor 210 may be coupled to the MCH through an accelerated graphics port (AGP), for example.
In the depicted example, local area network (LAN) adapter 212 is coupled to south bridge and I/O controller hub 204 and audio adapter 216 , keyboard and mouse adapter 220 , modem 222 , read only memory (ROM) 224 , universal serial bus (USB) ports and other communications ports 232 , and PCI/PCIe devices 234 are coupled to south bridge and I/O controller hub 204 through bus 238 , and hard disk drive (HDD) 226 and CD-ROM drive 230 are coupled to south bridge and I/O controller hub 204 through bus 240 . PCI/PCIe devices may include, for example, Ethernet adapters, add-in cards, and PC cards for notebook computers. PCI uses a card bus controller, while PCIe does not. ROM 224 may be, for example, a flash binary input/output system (BIOS). Hard disk drive 226 and CD-ROM drive 230 may use, for example, an integrated drive electronics (IDE) or serial advanced technology attachment (SATA) interface. A super I/O (SIO) device 236 may be coupled to south bridge and I/O controller hub 204 .
An operating system runs on processor 206 and coordinates and provides control of various components within data processing system 200 in FIG. 2. The operating system may be a commercially available operating system such as Microsoft® Windows® XP (Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both). An object oriented programming system, such as the Java™ programming system, may run in conjunction with the operating system and provides calls to the operating system from Java programs or applications executing on data processing system 200 (Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc., in the United States, other countries, or both).
Instructions for the operating system, the object-oriented programming system, and applications or programs are located on storage devices, such as hard disk drive 226 , main memory 208 , tape drives, or any other form of memory or storage for data, and may be loaded into main memory 208 for execution by processor 206 . The processes of the illustrative embodiments may be performed by processor 206 using computer implemented instructions, which may be located in a memory such as, for example, main memory 208 , read only memory 224 , or in one or more peripheral devices.
The hardware in FIGS. 1-2 may vary depending on the implementation. Other internal hardware or peripheral devices, such as flash memory, equivalent non-volatile memory, or optical disk drives and the like, may be used in addition to or in place of the hardware depicted in FIGS. 1-2. Also, the processes of the illustrative embodiments may be applied to a multiprocessor data processing system.
In some illustrative examples, data processing system 200 may be a personal digital assistant (PDA), which is generally configured with flash memory to provide non-volatile memory for storing operating system files and/or user-generated data. A bus system may be comprised of one or more buses, such as a system bus, an I/O bus and a PCI bus. Of course the bus system may be implemented using any type of communications fabric or architecture that provides for a transfer of data between different components or devices attached to the fabric or architecture. A communications unit may include one or more devices used to transmit and receive data, such as a modem or a network adapter. A memory may be, for example, main memory 208 or a cache such as found in north bridge and memory controller hub 202 . A processing unit may include one or more processors or CPUs. The depicted examples in FIGS. 1-2 and above-described examples are not meant to imply architectural limitations. For example, data processing system 200 also may be a tablet computer, laptop computer, or telephone device in addition to taking the form of a PDA.
III. Our Prior Work in the Area of Chaotic Event Management
The previous section, Section II, describes computers and networks generally. This section, Section III, describes our prior work in the area of chaotic event management. The following section, Section IV, describes our prior work in the area of optimized selection of sub-projects for a major information technology project.
Illustrative embodiments provide a computer implemented method, apparatus, and computer usable program code for managing a chaotic event. A chaotic event is detected automatically or manually based on received information. The process of the illustrative embodiments is initiated in response to the detection of a potentially chaotic event. In general terms, management of the event begins from a single point or multiple points, based on the detection of a potentially chaotic situation. A determination is made as to what the required resources are for the situation.
Resources or expert resources are skills, expert skills, and resources required by individuals with skills to deal with the chaotic event. Resources include each expert individual with the necessary skills as well as transportation, communications, and materials to properly perform the task required by the expertise or skill of the individual. For example, heavy equipment operators may be needed as well as doctors. Heavy equipment operators may need bulldozers, backhoes, and transportation to the event location, and the doctors may require nurses, drugs, a sterile room, a communications center, emergency helicopters, and operating instruments.
The needed skills are optimized based on requirements and constraints for expert services, a potential skills pool, cohorts of a related set of skills, and enabling resources. Optimization is the process of finding a solution that is the best fit based on the available resources and specified constraints. The solution is skills and resources that are available and is recognized as the best solution among numerous alternatives because of the constraints, requirements, and other circumstances and criteria of the chaotic event. A cohort or unified group may be considered an entity rather than a group of individual skills, such as a fully functioning mobile army surgical hospital (MASH) unit.
The service requirements are transmitted to the management location for reconciliation of needed skills against available skills. Skills requirements and individuals and cohorts available for deployment are selected based on optimization of costs, time of arrival, utility value, capacity of transportation route, and value. Routes are how the resource is delivered. For example, in some cases, a route is an airplane. In another example, a route is a high-speed data line that allows a surgeon to remotely view an image. The process is continuously monitored and optimized based on feedback and changing situations. The execution of the plan is implemented iteratively to provide the necessary expert resources. The expert resources are deployed by decision makers to manage the chaotic event by effectively handling the circumstances, dangers, events, and problems caused by the chaotic event.
FIG. 3 is a block diagram for managing chaotic events in accordance with the illustrative embodiments. Event management system 300 is a collection or network of computer programs, software components or modules, data processing systems, devices, and inputs used to manage expert skills for a chaotic event. Event management system 300 includes all steps, decisions, and information that may be needed to deal with a chaotic event. Event management system 300 may be a centralized computer program executed and accessible from a server, such as server 104 of FIG. 1 or a network of hardware and software components, such as network data processing system 200 of FIG. 2.
Event management system 300 or portions of event management system 300 may be stored in a databases or data structures, such as storage 108 of FIG. 1. Event management system 300 may be accessed in person or by using a network, such as network 102 of FIG. 1. Event management system 300 may be accessed by one or more users, decision makers, or event managers for managing the chaotic event. The user may enter information and receive information through an interface of event management system 300 . The information may be displayed to the user in text and graphics. Additionally, the user may be prompted to enter information and decisions to help the user walk through the management of the chaotic event. For example, event management system 300 may walk a state governor through each step that should be taken for a sun flare that has crippled the state in a logical and effective sequence.
Event management system 300 is used for information processing so that decisions may be more easily made based on incoming information that is both automatically sent and manually input. Event management system 300 enables administrators, leaders, and other decision makers to make decisions in a structured and supported framework. In some cases, leaders may be so unprepared or shocked by the chaotic event that event management system 300 may walk leaders through necessary steps. In this manner, event management system 300 helps the leaders to take effective action quickly. Event management system 300 intelligently interacts with decision makers providing a dynamic interface for prioritizing steps and a work flow for dealing with the chaotic event in a structured framework. The decisions may be based on policy and politics in addition to logistical information.
Event management system 300 is managed by event management 302 . Event management 302 begins the process of managing a chaotic event in response to event detection 304 detecting the event. For example, if the chaotic event is a series of catastrophic tornadoes, event detection 304 may become aware of the tornadoes through the national weather service. Alternatively, storm chasers may witness the series of tornadoes and report the event in the form of manual input 306 to event detection 304 . Event detection 304 may also be informed of the chaotic event by sensor data 308 . Sensor data is information from any number of sensors for detecting chaotic events including sensors for detecting wind, rain, seismic activity, radiation, and so forth. Event detection 304 informs event management 302 of the chaotic event occurrence and known details of severity so that preliminary estimates may be made. Event detection 304 is further described in FIG. 4, and predicting severity of chaotic events is further described in FIG. 5 below.
Once event detection 304 has informed event management 302 of the location and occurrence of a chaotic event, event management 302 works with management location 310 to determine a suitable location for management of the event. Event detection 304 sends a message to event management 302 . The message may specify any ascertained information, such as the time, focal point, geographic area, and severity of the chaotic event if known. For example, if event management 302 is located on server 104 of FIG. 1 that has been flooded by torrential rains in Georgia, event management 302 may be transferred to server 106 of FIG. 1, located in Texas. Management location 310 allows the process of event management 302 to occur from the best possible location. Event management 302 may occur from multiple event management positions if there are multiple chaotic events simultaneously.
For example, the best possible location may be an external location out of the danger zone or affected area. Alternatively, the best possible location may be the location closest to the affected area that still has access to power, water, communications, and other similar utilities. Management location 310 may maintain a heartbeat connection with a set of one or more event management positions for immediately transferring control to a specified event management component if the heartbeat connection is lost from an event management component in the affected area. The heartbeat signal should be an encrypted signal.
A heartbeat connect is a periodic message or signal informing other locations, components, modules, or people of the status of event management 302 . In another example, the chaotic event may be a federal disaster. A local management location 310 may transfer control of event management 302 to the headquarters of the supervising federal agency, such as Homeland Security or the Federal Aviation Administration (FAA). If event management 302 is damaged or inaccessible, a redundant or alternative event management location automatically takes control. Additionally, event management 302 may systematically make decisions regarding event management or transfer management location 310 to a different location if event management 302 does not receive instructions or feedback from decision makers or other individuals involved in management of the chaotic event.
For example, if a mayor providing user input and information from event management 302 becomes unavailable, decisions regarding management may be made based on the best available information and alternatives. Additionally, management location 310 may be transferred to a location where individuals are able and willing to provide user input and receive information from event management 302 .
In some cases, such as a large chemical release, leaders for corporations, organizations, and government entities may not have direct access to event management 302 . As a result, message routing group 312 may be used to communicate instructions 314 for the effective management of the chaotic event. Message routing group 312 is the hardware and software system used to communicate instructions 314 from event management 302 . Instructions 314 may include directions, instructions, and orders for managing the response and other event-specific information.
Message routing group 312 may keep track of whether instructions 314 have been received by the intended party through the tracking of delivery status 316 . Delivery status 316 indicates status information, such as if, when, how the message in instructions 314 was delivered, and descriptions of any problems preventing delivery.
Event management 302 passes information about the event to event requirements 318 . For example, event management 302 may pass information regarding the severity of the chaotic event gleaned from manual input 306 and sensor data 308 to event requirements 318 . Event requirements 318 determine which skills, resources, or other information is required for the chaotic event. Event requirements 318 determine whether required skills and resources may be provided in person or remotely. For example, welders and trauma doctors may be required to be in person, but a pathologist may work via remote microscope cameras and a high-speed data connection.
Event requirements 318 may be updated by event management 302 as more information becomes available about the chaotic event. Event requirements 318 may use event type skills 320 to determine the skills needed based on the type of chaotic event. Event type skills 320 is a collection of resources needed for each event type. For example, if a hurricane has damaged water-retaining facilities, such as reservoirs, levees, and canals, more civil engineers than normal may be required for the hurricane. Event type skills 320 is preferably a database of skills stored in a database or memory, such as main memory 208 of FIG. 2 required for all possible chaotic events. For example, event type skills 320 may specify the skills needed for a meltdown of a nuclear reactor including welders, waste disposal experts, nuclear engineers, paramedics, doctors, nuclear researchers, and so forth.
Event requirements 318 may also receive information regarding required skills in the form of manual input 322 . Manual input 322 may be received from authorized individuals close to the chaotic event, experts in the field, or based on other in-field or remote observations.
Information from event requirements 318 is passed to availability 319 . Availability 319 performs a preliminary determination of the skills and resources to determine available skills and resources. For example, experts with required skills may be called, emailed, or otherwise contacted to determine whether the expert is available, and if so, for how long and under what conditions or constraints. Individuals or organizations with manage, access, control, or possess resources are contacted to determine whether the resources may be used. Availability 319 may also rank potential skills and resources based on location, availability, proximity, cost, experience, and other relevant factors. Availability information is passed from availability 319 to optimization routines 324 .
Optimization routines 324 uses information from availability 319 , requirements and constraints 326 , potential skills 328 , and enabling resources 330 to iteratively make suggestions regarding optimal skills and resources. Iterations are based particularly on event severity and event type. For example, optimization routines 324 may be used once every six minutes at the onset of a chaotic event whereas after three months, the iterations may be updated once a day. Only skills and resources that may be available are considered by optimization routines 324 . Optimal skills and resources are derived based on elapsed time to arrive on-scene, proximity, capacity, importance, cost, time, and value. For example, optimal location for skills may be preferentially ordered by skill type and value or estimated time of arrival to the scene of the chaotic event.
Optimization routines 324 is a process for maximizing an objective function by systematically choosing the values of real or integer variables from within an allowed set. The values used by optimization routines are values assigned to each skill, resource, route, and other factors that relate to delivery of the required skills and resources.
In one example, optimization routines 324 may be described in the following way:
Given: a function ƒ: A-R from some set A
Sought: an element x 0 such that ƒ(x 0 )≧ƒ(x) for all x in A
Typically, A is some subset of the Euclidean space R n , often specified by a set of constraints, equalities or inequalities that the members of A have to satisfy. For example, constraints may include capacity, time, and value. For example, the capacity of a truck and a helicopter are different as are a dial-up Internet connection and a cable Internet connection.
The elements of A are called feasible solutions. The function ƒ, that is maximized, is called an objective function or cost function. A feasible solution that maximizes the objective function is called an optimal solution and is the output of optimization routines 324 in the form of optimized skills and resources. Optimal skills and resources are the resources that are the best solution to a problem based on constraints and requirements. For example, the problem or skill to be optimized may be that event managers need a doctor with a specialty in radiation sickness with three or more years experience in or around Texas with transportation to Dallas, Tex. that is available for the next two weeks. The optimal solution in this case may be a doctor that lives in Northern Dallas with the required experience and availability. The optimal solution for skills and resources is also optimized based on cost. If a bulldozer may be moved from two locations with similar restraints, the optimal solution is the cheapest solution. In other words, all other constraints being met, a lower cost resource is preferably to a higher cost resource. Aspects of optimization routines 324 are further described in FIG. 6 for finding and organizing skills.
Requirements and constraints 326 specify the requirements and constraints for expert services. Requirements and constraints 326 may be established by local and federal law, organizational ethics, or other societal norms and policies. Similarly, requirements and constraints 326 may be adjusted by persons in authority based on the needs and urgency of those needs. For example, during a biological disaster, there may be a requirement that only individuals immunized for small pox be allowed to provide services. Additionally, requirements and constraints 326 may initially suggest that only medical doctors with three or more years of practice will be beneficial for the chaotic event. Requirements and constraints 326 may be adjusted as needed, removed, or replaced with a new looser restraint. Decision makers should be informed about the binding constraints, such as license required.
Requirements and constraints 326 may be dynamically adjusted based on conditions of the disaster. For example, if there is an extreme outbreak of small pox, constraints and requirements 326 may specify that any doctor immunized for smallpox, regardless of experience, would be useful for dealing with the small pox outbreak. Requirements and constraints 326 may be specified by governmental, public health, or business requirements.
Potential skills 328 specify the potential expert skills of individuals that may be available. Potential skills 328 may be generated based on commercial or governmental databases, job sites, research and papers, public licenses, or using a web crawler. For example, OmniFind produced by International Business Machines Corporation.
Enabling resources 330 are the resources that enable qualified experts to perform the required tasks. Enabling resources 330 may be manually generated by experts in each field or may be automatically generated based on past events. Enabling resources 330 may be stored in a database or storage, such as 108 of FIG. 1. For example, if a bomb has partially destroyed a building, a structural engineer may require the use of a concrete X-ray machine to properly perform the tasks that may be required. In another example, a heart surgeon may instruct a general surgeon how to perform specialized procedures using high resolution web-cameras. As a result, enabling resources 330 needs to have access to a data connection, including landlines or wireless communications at a specified bandwidth, and cameras, as well as a sterile location, medical equipment, and personnel to perform the procedure. In yet another example, doctors remotely servicing the outbreak of a virus may require email access to digital pictures taken by medical technicians in the area of the chaotic event.
Optimization routines 324 computes the optimum mix of skills and resources. The answer will consist of the person and/or resources, transportation routes to the disaster site, time of availability, and the shadow price of substituting an alternate resource. Optimization routines 324 specifies alternatives in case an optimum skill and resource is unavailable. As a result, the next most optimal skill and resource may be quickly contacted until the necessary skills and resources are found to manage the chaotic event.
Availability 319 and verify availability 332 determines which experts and resources are available automatically or based on manual input 334 . In these examples, manual input 334 may be received as each individual or group responsible for the expert or resource is contacted and terms of availability are checked. Manual inputs 306 , 322 , and 334 may be submitted via phone, email, or other voice, text, or data recognition system. Alternatively, availability 319 and verify availability 332 may use an automatic message system to contact each expert to determine availability. For example, using pre-collected email addresses for the experts, an automated messaging system may request availability information from experts with the desired skill set. For example, the Centers for Disease Control (CDC) may have a database of experts specifying personal information, for example, addresses, contact information, and inoculation history that may be used to contact required experts and professionals.
Verify availability 332 determines whether the optimized skills and resources are available. Verify availability 332 confirms that the skills and resources selected by event management 302 to manage the chaotic event will in fact be available and may be relied on. For example, a surgical team that is selected by optimization routines 324 as the best fit for an earthquake trauma team may need to be called on the phone to confirm that the surgical team may be flown to the earthquake site in exactly twenty four hours. Once verify availability 332 has determined which experts and resources are available, that information is passed to event management 302 .
The process for updating event requirements 318 , availability 319 , optimization routines 324 , and verify availability 332 are repeated iteratively based on information regarding the chaotic event. For example, after an earthquake affecting the San Francisco area, event requirements 318 may be updated every eight hours for two months until all of the required needs and skills have been acquired.
FIG. 4 is a block diagram for detecting chaotic events in accordance with the illustrative embodiments. Event detection system 400 may be implemented in an event detection component, such as event detection 304 of FIG. 3. Alternatively, event detection system 400 may be part of an event management module, such as event management 302 of FIG. 3. Event detection system 400 is the system used to detect a potentially chaotic event. Event detection system 400 may determine whether an event is real, and if so, whether the event is significant. For example, an undersea earthquake may or may not be a chaotic event based on location, size of the earthquake, and the potential for a tsunami.
Event detection 402 functions using various techniques and processes to detect a potentially chaotic event. Event detection 402 may become aware of the chaotic event through external service 404 . External service 404 may be a government, business, or other organizational monitoring service. For example, external service 404 may include the National Transportation Board, National Weather Service, National Hurricane Service, news wire services, Lloyds of London for loss of ships, the Bloomberg service, or Guy Carpenter insurance database, and other commercial information brokers.
Event detection 402 may also receive manual input 406 , such as manual input 306 of FIG. 3 as previously described. Manual input 306 may also be used to verify whether a chaotic event has actually occurred. Crawler and semantic search 406 may be used to access Internet 408 . Crawler and semantic search 406 is a web crawler that searches publicly available portions of the Internet for keywords or other indications that a chaotic event has, is, or will occur. A web crawler is a program which browses Internet 408 in a methodical, automated manner. For example, the web crawler may note email traffic, news stores, and other forms of data mining. False alarms are filtered out with heuristic rules and man-in-the-loop functions.
Similarly, voice to text semantic search 410 may be used to identify that a chaotic event has taken place. Voice to text semantic search 410 may use voice to text translations or voice recognition technologies to recognize phrases, keywords, or other indicators of a chaotic event. For example, transmissions across emergency broadcast channels or to emergency services may be analyzed by voice to text semantic search to identify that a reservoir has broken.
Event detection 402 may also receive input from sensor data 412 . Sensor data 412 is data, such as sensor data 308 of FIG. 3. Sensor data 412 may be received from sensors 414 which may include physical sensors 416 , such as sensors that monitor gaps in bridges, seismic sensors 418 for monitoring seismic activity, current sensors 420 such as current sensors in utility lines for detecting electromagnetic pulses, water level sensors 422 , and solar monitoring sensors 424 for indicating solar activity. Sensors 414 are used to automatically pass sensor data 412 indicating a chaotic event to event detection 402 . Sensors 414 may also include monitors to indicate total loss of communications via internet or telephone to a given area, absolute volumes coming out of a particular area, spikes or communications jams, failures of cell phone towers, and other occurrences that indicate a chaotic event may have occurred.
Event detection 402 outputs the event detection to timing and severity prediction 426 . Timing and severity prediction 426 indicates the known timing and severity of the chaotic event or a predicted time and severity if the chaotic event is anticipated. Timing and severity prediction 426 may receive information via manual input 428 . For example, a scientist measuring seismic activity may send data and visual information regarding the eruption of a volcano to indicate the severity of the event. Timing and severity prediction 426 passes the information regarding time and severity to management location 430 . Management location 430 is a location management module, such as management location 310 of FIG. 3.
Timing and severity prediction 426 passes information about the chaotic event to event requirements 432 . Timing and severity prediction 426 predicts the severity of the chaotic event in addition to what skills and resources may be needed as well as the quantities of skills and resources. Event requirements 432 is an event specific module, such as event requirements 318 of FIG. 3. For example, if an unusually powerful solar flare is expected, communications and satellite coordinators and experts may be required to prevent effects of the solar flare or to recover from the effects after the event.
FIG. 5 is a block diagram for predicting severity of chaotic events in accordance with the illustrative embodiments. Timing and severity prediction system 500 is a more detailed description of timing and severity prediction 426 of FIG. 4. As previously described, timing and severity prediction 502 receives manual input 504 .
Timing and severity prediction 502 receives information from catastrophe models 506 . Catastrophe models 506 are models of each possible chaotic event by region and the resulting affects and consequences of the chaotic event. Catastrophe models 506 are preferably created by scientists and other experts before the occurrence of the chaotic event. For example, catastrophe models 506 may model the effects of a category five hurricane striking South Carolina.
Sensor data 508 is data, such as sensor data 308 of FIG. 3. Additional information resources including, for example, image mapping 510 , map resources 512 and weather information 514 may be used by timing and severity prediction 502 to determine the severity of the chaotic event. For example, image mapping 510 may show the impact crater of a meteor. Map resources 512 may be used to determine the number of buildings destroyed by a tornado. Weather information 514 may be used to show whether a hurricane is ongoing or whether recovery efforts may begin. Weather information 514 includes forecast models rather than raw data.
Timing and severity prediction 502 uses all available information to make risk prediction 516 . Risk prediction 516 specifies the risks associated with the chaotic event. For example, risk prediction 516 may predict the dangers of a magnitude 7.4 earthquake in St. Louis before or after the earthquake has occurred.
FIG. 6 is a block diagram for finding and organizing skills for chaotic events in accordance with the illustrative embodiments. Organization system 600 is a system that helps find expert skills or potentially available skills. Data is collected and organized by data organization 602 to populate skills database 604 . Skills database 604 is a unified database of skills and supporting data in discrete and textual form. For example, skills database 604 may be implemented in event type skills 320 of FIG. 3. The data organized by data organization 602 may be physically instantiated or federated. In other words, the data may be actually copied into a database used by data organization 602 or accessed through a query through a federated database. Federated databases may allow access to data that is not easily transferred but provides useful information.
Data organization 602 organizes data from any number of sources as herein described. Data is received from discrete data 606 and semantic data 608 . Discrete data 606 is something that may be entered in a database, such as numbers or specific words. Semantic data has to be read in context. A pathology report may be broken up into discrete data 606 including temperature, alive or dead. Manual input 610 may be communicated to discrete data 606 . Data organization 602 may use queries for discrete and semantic data to find necessary information.
Web crawler and semantic search referred to as crawler and semantic search 612 may be used to gather data from any number of sources on Internet 614 that are publicly available. Crawler and semantic search 612 may be, Webfountain™, produced by International Business Machines Corporation or other similar products. For example, crawler and semantic search 612 may search licenses 616 , school records 618 , research papers 620 , immunization records 622 , organizational records, and union records 624 . For example, crawler and semantic search 612 may discover a large number of doctors that have graduated from medical school but do not have licenses in the state where the chaotic event occurred.
Data organization 602 may further access internal skill bank 626 , external skill bank 628 , vocabularies 630 , and legal and other requirements 632 . Internal skill bank 626 is a skill bank maintained by data organization 602 in the event of a chaotic event. External skill bank 628 may be a skill bank maintained by an outside organization or individual. External skill bank 628 may be intended for emergency situations or may simply be a skill bank for organizing relevant skill sets in other business, government, or miscellaneous settings.
Feedback from inquiries 634 specifies whether an individual is available and that another individual should be considered. For example, a drilling engineer may disclose unavailability to assist with a mine collapse.
FIG. 7 is a block diagram for finding and organizing routes for chaotic events in accordance with the illustrative embodiments. Route system 700 may be implemented in optimization routine modules, such as optimization routines 324 of FIG. 3. Route system 700 is used to optimize available skills and resources based on distance, traveling time, capacity of a route, cost, and value as prioritized by decision makers from event management 302 of FIG. 3. Route system 700 performs optimizations based on questions which may include how far away the skills or resources are, how long the skills or resources take to get to the necessary location, and what the capacity is. For example, a truck may have a high capacity to move a team of surgeons if a road is available, but may take eight hours to get to a desired location. A helicopter may be used to quickly move a nuclear engineer regardless of road conditions. Route system 700 may be used to perform optimizations based on event requirements 318 of FIG. 3.
Data organization 702 organizes information from various resources, and that information is passed to routes database 704 . Routes database 704 is a unified database of physical and electronic routes including distances and capacity for expert skills and resources and limiting constraints. Constraints for routes may include availability, volume, cost, capacity, bytes, flights per hour, and trucks per day. Routes database 704 may be used by availability components, such as availability 332 of FIG. 3 to determine whether expert skills and resources are feasibly accessible by a route either physically or electronically even if they are available.
Data organization 702 receives information from landline public circuits 706 . Landline public circuits 706 may include communications lines, such as telephones, fiber-optics, data lines, and other physical means for transporting data and information. Data organization 702 also receives information from wireless public circuits 708 which may include wireless access points, cell phone communications, and other publicly available wireless networks.
Data is received from discrete data 710 and semantic data 712 . Manual input 714 may be communicated to discrete data 710 . Crawler and semantic search 716 may be used to gather data from any number of sources. For example, crawler and semantic search 716 may search commercial transportation schedules 718 to find tractor trailers, busses, airlines, trains, boats, and other means of commercially available means of transporting people and resources.
Data organization 702 may receive information from road databases 720 for determining which roads may be used to access the geographic region of the chaotic event. Road databases 720 may also specify which roads are accessible after the chaotic event. For example, after an earthquake in Salt Lake City, Interstate 15 may not be available because of overpass collapses.
Data organization 702 may also receive information from bridges and other potential obstacles 722 . Airports and other facilities 724 may provide additional information regarding airports and other similar facilities including status and capacity, such as train stations, docks, and other transportation hubs. For example, a data network may be available but only with low bandwidth access.
Data organization 702 also receives information from ground station 726 . Ground station 726 is a station located on the earth that is used for transmitting information to or receiving information from satellite 728 or other earth orbiting communication devices. For example, information regarding ground station 726 and satellite 728 may specify capacity, capability, data rates, and availability. Ground station 726 and satellite 728 may be used by individuals with expert skills or resources to coordinate the response to the chaotic event. For example, in the event that medical images need to be sent from rural Idaho to New York City, ground station 726 and satellite 728 may need to have available bandwidth. Data organization 702 may also receive information in the form of manual input 730 .
FIG. 8 is a flowchart for managing expert resources during times of chaos in accordance with the illustrative embodiments. The process of FIG. 8 may be implemented by an event management system, such as event management system 300 of FIG. 3. In one example, the process of FIG. 8 is implemented by a program application that systematically walks one or more decision makers through the steps and decisions that need to occur to effectively manage the chaotic event. The program application systematically helps the decision make, develop, and implement a strategy for the chaotic event in a logical sequence based on predefined steps and priorities.
The process of FIG. 8 begins by detecting a chaotic event (step 802 ). The event may be detected by a module, such as event detection 304 of FIG. 3 and event detection system 400 of FIG. 4.
Next, the process selects an event management location and begins active management (step 804 ). Step 804 may be performed by a module, such as event management 302 of FIG. 3. The determination regarding event management location may be made based on feedback from a module, such as management location 310 of FIG. 3. Active management in step 804 may involve managing the situation by deploying personnel with expert skills and resources and coordinating relevant communication and recovery efforts.
Next, the process predicts severity and timing of the chaotic event, and the expert resources required (step 806 ). Step 806 may be implemented by a module, such as event requirements 318 of FIG. 3 and timing and severity prediction system 500 of FIG. 5. If the chaotic event is particularly severe, additional expert skills and resources may be required. Expert skills may be further determined using a module, such as organization system 600 of FIG. 6. For example, if a tsunami occurs off the western coast of the United States, a large number of doctors and water contamination specialists may be required.
Next, the process verifies the availability and cost of the expert resources (step 807 ). The process of step 807 may be implemented by a module, such as availability 319 of FIG. 3. Step 807 ensures that only potentially available resources are examined to save time, effort, and processing power.
Next, the process optimizes the expert resources (step 808 ). The process of step 808 may be performed by optimization routines, such as optimization routines 324 of FIG. 3. The expert resources may be optimized based on factors, such as requirements and constraints 326 , potential skills 328 , and enabling resources 330 of FIG. 3.
Next, the process confirms the availability of the expert resources by direct contact (step 810 ). The process of step 810 may be implemented by a module, such as verify availability 332 of FIG. 3. Availability may be based on the schedule, time, and commitments of individual experts or groups of experts. Availability may also be determined based on routes for communicating and transporting skills and resources based on a system, such as route system 700 of FIG. 7.
Next, the process determines whether the expert resources are available (step 812 ). The determination of step 812 may be based on transportation, cost, proximity, schedule, and time. For example, if the cost of flying a surgeon from Alaska to New York is impractical, the process may need to re-optimize the expert resources. If the expert resources are available, the process returns to step 806 . The process of steps 806 - 812 is repeated iteratively to optimize and re-optimize the active management of the response to the chaotic event in step 804 .
As a result, the management of the chaotic event is dynamic and adapts to changing circumstances. For example, if flooding from a hurricane washes out roads that were previously used to access staging areas, new routes for medical personnel and supplies needs to be determined in a step, such as step 810 . In addition, water contamination experts and water testing equipment may be required in greater numbers for a category five hurricane than for a category two hurricane.
If the process determines the expert sources are not available in step 812 , the process optimizes expert resources (step 808 ). In other words, optimized expert resources are further re-optimized based on confirmed availability in step 812 . As a result, the decision makers or event managers may deploy the most appropriate resources to effectively manage each aspect of the chaotic event.
Thus, illustrative embodiments provide a system, method and computer usable program code for managing a chaotic event. By detecting chaotic events as soon as possible, effective management of expert skills and resources may be quickly and efficiently managed. By effectively optimizing expert skills and available routes based on availability, severity of the chaotic event, and other resulting factors, lives may be saved, and recovery efforts and the appropriate response may begin more effectively.
IV. Optimized Selection of Sub-Projects
This section, Section IV, describes a method for mathematically rigorous optimized selection of project subdivisions using data and requirements subject to multidimensional constraints. This section is shown with respect to the optimized selection of sub-projects for a major information technology project. The following section, Section V, describes the application of this optimized selection technology to the area of chaotic event management.
IV.1 Background of Optimized Selection of Sub-Projects
Large corporations or other large entities use information technology systems to manage their operations. An information technology system is a system of data processing systems, applications, data, reports, flows, algorithms, databases, and other infrastructure used to maintain the data and operations of the organization. A large scale information technology system is not necessarily located in one single physical location, but can be situated in many different physical sites implemented using numerous physical devices and software components. A large scale information technology system can be referred to as a major information technology system.
Major information technology system projects, such as those used by large corporations, often fail and some fail disastrously. Failure often costs millions of dollars, tens of millions of dollars, or even more in wasted time, manpower, and physical resources. Thus, substantial effort is usually exerted in planning the construction of a major information technology system. Planning construction of a major information technology system, at least in theory, reduces the chances of failure.
Major information technology systems projects are beyond the abilities of a single individual to implement alone. Likewise, construction of major information technology system projects can not be viewed as a single monolithic project due to the vastness and complexity of these system projects. Thus, major information technology system projects are often constructed in phases using groups of sub-projects. Various groups of people work to complete each sub-project. As work progresses, the sub-projects are assimilated together in order to create the major information technology system project.
However, even with planning and the use of sub-projects, most major information technology system projects fail or are never completed. Even if the major information technology system project is implemented, the resulting major information technology system project does not function optimally with respect to maximizing the efficiency of the organization for which the major information technology system project is constructed. For example, subsets of the whole major information technology system project may not match data, business requirements, and/or resources in an optional manner. As a result, the organization suffers from the inefficiencies of the final major information technology system project. Correcting or adjusting these inefficiencies may be cost prohibitive due to the fundamental nature of how the major information technology system project was constructed.
The most typical reason for failure or inefficiency of these system projects is that the construction of these system projects is approached from a non-data centric viewpoint. Instead, design of sub-projects of major information technology system projects often is performed by managers, executives, or others who are experts at understanding where a business should go or how a business should operate, but are not technically proficient at implementing or constructing a major information technology system project. As a result, the sub-projects “look good on paper” but, when implemented, fail or, if successful individually, can not be integrated together in a desired manner. An entire major information technology system project may fail or be inefficient if sub-projects that were designed to build the major information technology system projects can not be integrated. Currently available methods and system projects do not provide a means to reliably create efficient major information technology system projects. Therefore, it would be advantageous to have an improved method and apparatus for creating optimized sub-projects useful for creating and implementing a major information technology project.
IV.2 Optimized Selection of Sub-Projects for a Major Information Technology Project: Definitions and Examples
A computer-implemented method, computer program product, and data processing system are provided for creating an optimized major information technology project having optimally selected optimized sub-projects. An optimized sub-project is a set of data representing a portion of the project. For example, an optimized sub-project could be a set of data that describes how physical data processing systems should be setup relative to each other. Another example of an optimized sub-project could be a set of data that describes how business reports should be generated, what information should be included in the business reports, who should receive the business reports and the order in which the business reports should be generated. Many other examples of optimized sub-projects exist.
As part of an exemplary process, one or more data processing systems receive boundary conditions, input regarding output objects, and input regarding “as-is” data sources. An “as-is” data source is an existing data source. Boundary conditions include all data that places one or more boundaries on a project. Examples of boundary conditions include resource data and constraint data. Resource data reflects resources available for the project, such as money and manpower. Constraint data includes constraints imposed on the project, such as data reflecting deadlines, legal requirements, data availability, and others. A special type of constraint data is data regarding political concerns. Data reflecting political concerns includes data that reflects political realities, such as resource allocation among organizational departments, timing of deliverables, and work allocation.
Examples of input regarding output objects include data reflective of output objects. Output objects are those outputs or deliverables that the project is designed to deliver. Specific examples of output objects include screens showing particular information, pictures, or query results; interactive graphical user interfaces; reports; services delivered, including deliverables; applications; queries; applications, flows, and algorithms; combinations thereof, and others.
Data regarding “as-is” data sources is data reflective of available data sources. Examples of “as-is” data sources can include available databases, available files, available hard-copy paper files, and other data sources. An “as-is” data source is not a data source that is yet to be developed or that is yet to be placed into a desired form. An “as-is” data source is distinguished from a “to be” data source. A “to be” data source is a data source that is not yet in existence or is not yet in a desired form, but that has been modeled or can be modeled.
Once the boundary conditions, input regarding output objects, and input regarding “as-is” data sources are received, the output objects are decomposed into data objects. A data object is a data structure that contains data reflective of an output object. A data object can be an “object” as that term is used in object-oriented programming for computer languages such as C++ and Java.
The term “decompose,” which also includes the concept of factoring in computer science, refers to the process by which a complex problem or system is broken down into parts that are easier to conceive, understand, program, and maintain. In structured programming, algorithmic decomposition breaks a process down into well-defined steps. In object-oriented programming, one breaks a large system down into progressively smaller classes or objects that are responsible for some part of the problem domain. An object, process, data, or flow can be “decomposed” in a mathematical, data-centric manner according to many known methods.
Additionally, the output objects are also decomposed into process data objects, which are data objects reflective of logical processes used to create the output objects. A logical process used to create an output object can be any application, flow, algorithm, or similar process for creating an output object. Such flows can also be characterized as “objects” as that term is used in object-oriented programming.
The illustrative examples also include determining value clusters. A value cluster is the discrete intersection of data and that data's ability to add value to an organization. A value cluster may also be considered a group of resources that, when taken together, support one or more output objects having a utility value to an organization. A value cluster may be considered one of a data value cluster and a process value cluster. A data value cluster includes one or more data sources that support one or more data objects. A process value cluster includes one or more logical processes that support one or more output objects.
Next, the data objects are organized into “to be” data structures to form a “to be” data model and the “to be” data structures are mapped to the “as-is” data sources. The phrase “to be”, as used herein, describes something that is desired for the major information technology project that may, or may not, yet exist. The phrase “to be” also can be referred to as “future” or “future model.” Thus, a “to be” data model is a model or other description of a future data model. A “to be” data structure is data assembled into data models appropriate to producing one or more output objects. A “to be” data structure therefore includes one or more data objects, as defined above. Different parts of the “to be” data model may be at different levels of completeness. An example of a “to be” data structure is a data structure that shows the “skeleton” of a massive database that is to be constructed. Although not all information regarding the future database is available, the “to be” model of the database describes the structure of the database and what information it should contain.
Continuing with the illustrative example, the “to be” data structures are mapped to the “as-is” data sources. An “as-is” data source is an existing source of data. The existing source of data may not be complete, may not be of sufficient quality, and may not be in a format desired for the completed project; nevertheless, the “as-is” data sources may be adequate for the completed project.
Next, additional processes are determined for moving data from a source to a target. For example, a process can be determined for summarizing raw patient data and turning that raw patient data into a report for a hospital executive or for a doctor. Additionally, transformation issues are incorporated into the processes, such as estimating the costs and risks of moving data from a source to a destination in the correct format.
The exemplary embodiment also includes creating an affinity matrix based on the value clusters. An affinity matrix is a matrix of data that indicates a relationship between groups of data sources and groups of output objects, and/or groups of available logical processes and groups of output objects. The affinity matrix describes data sources and output objects in terms of what output objects are available based on what data sources are available. Thus, for example, the affinity matrix can allow a user to determine that if Output Object “X” is available because its data sources are available, then Output Object “Y” and Output Object “Z” are also available because they use similar data sources.
Finally, an optimization operation is executed with an optimization engine to produce the optimized sub-projects. The optimization engine takes as inputs the boundary conditions, the “as-is” data sources, the data objects, the logical processes used to create the output objects, the value clusters, the “to be” data structures; the mapping of the “to be” data structures to the “as-is” data sources, the additional processes for moving data from the source to the target, and the affinity matrix.
Optimization, as used herein, is the mathematical study of problems in which a minimum or a maximum for a function of a real variable is sought by systematically choosing the values of the real number or integer variables from within an allowed set. The problem can be mathematically represented as follows:
Given: A function f: A-R from some set A to the real numbers. Sought: An element x 0 in A such that f(x 0 )≦f(x) for all x in A (“minimization”) or such that f(x 0 )≧f(x) for all x in A (“maximization”).
Typically, A is some subset of the Euclidean space Rn, often specified by a set of constraints, equalities or inequalities that the members of A have to satisfy. The elements of A are called feasible solutions. The function f is called an objective function, or cost function. A feasible solution that minimizes or maximizes the objective function is called an optimal solution. The domain A of f is called the search space, while the elements of A are called candidate solutions or feasible solutions.
Generally, when the feasible region or the objective function of the problem does not present convexity, there may be several local minima and maxima, where a local minimum x* is defined as a point for which there exists some δ>0 so that for all x such that
∥ x−x*∥≦δ;
the expression
ƒ( x *)≦ƒ( x )
holds. In other words on some region around x* all of the function values are greater than or equal to the value at that point. Local maxima are defined similarly.
Commercial optimization engines are available and can be used with the illustrative examples described herein. Examples of commercial optimization engines include Optimization Subroutine Library and MPSX (Mathematical Programming System Extended), both available from International Business Machines Corporation, ILOG Cplex, and GLPK (Gnu Linear Programming Kit). Thus, as defined herein, the term “optimized sub-project” refers to a mathematically defined data structure that describes the structure of a sub-project and steps to be taken to implement a sub-project of a major project. Accordingly, described differently, the exemplary processes described herein provide a computer implemented method, apparatus, and computer usable program code for generating optimized sub-projects based on a weighted value of desired outputs mapped against source data, required transformations, boundaries, and an affinity matrix.
The project sought to be constructed using the illustrative embodiments described herein can be any large project. Examples of other large projects suitable for the planning techniques described herein include government agencies, outer-space programs, major military operations, and other major projects. However, the non-limiting embodiments described herein provide an illustrative example of creating a major information technology project.
Taken together, the group of optimized sub-projects can be assimilated into a plan an organization can follow to build the most efficient project plan possible. Because the plan is data-centric, an efficient major information technology project can be constructed even if the major information technology project is very large and complex.
IV.3 Mathematically Optimized Selection of Subprojects for Major Information Technology Projects
The following figures describe in detail the problem to be solved, the inadequacies of the prior art, and examples of the solution to the problem to be solved. FIG. 9 through FIG. 12 describe the problem to be solved and the inadequacies of the prior art. FIG. 13 through FIG. 15 illustrate a summary of an illustrative embodiment for solving the problem described in FIG. 9 through FIG. 12. FIG. 16 through FIG. 30 provide a detailed description of the devices and methods useful for implementing the illustrative embodiments described herein. FIG. 31 provides another overview of an illustrative embodiment for solving the problem of planning a project. FIG. 32 is a flowchart illustrating an illustrative embodiment of planning a major information technology project.
As specified above, FIG. 9 through FIG. 12 describe the problem to be solved and the inadequacies of the prior art. Common reference numerals used in different figures correspond to each other. Thus, for example, major information technology project 902 is the same in FIG. 9, FIG. 10, FIG. 11, and FIG. 12.
Referring now to the particular figures, FIG. 9 is a block diagram illustrating a major information technology project, in accordance with an illustrative embodiment. An organization has organizational goal 900 that the organization desires to implement. The goal may be to create a hospital system, a new government agency, a new major corporation, or any other goal. In the illustrative embodiments described herein, organizational goal 900 is a large scale goal similar to those described in the previous examples.
As part of organizational goal 900 , major information technology project 902 is to be implemented to create a large scale information technology system project. An information technology system project is a system of data processing systems, applications, data, reports, flows, algorithms, databases, and other infrastructure used to maintain the data and operations of the organization. A large scale information technology system project is not necessarily located in one single physical location, but can be situated in many different physical sites implemented using numerous physical devices and software components. A large scale information technology system project can be referred to as a major information technology system project.
Major information technology project 902 has as goals one or more output objects. Output objects are those outputs or deliverables that the project is designed to deliver. Specific examples of output objects include report 904 , report 906 , application 908 , application 910 , screen 912 , and screen 914 .
A report is any type of output of a query or process. For example, a report could be a list of the number of patients having a particular set of properties. A report could also be a quarterly financial statement or any other type of report as that word is commonly known in business.
An application is any type of software application. An application can also be a script, flow, or other process that can be implemented in a computer.
A screen can be any graphical user output of an application. A screen can be a graphical user interface adapted to accept user input. For example, a screen could be a graphical user interface adapted to accept a query for a database, or a screen could be a graphical user interface adapted to accept data for entry into a database. A screen can also display a report.
Although major information technology project 902 is expressed as having output objects 904 , 906 , 908 , 910 , 912 , and 914 , many other types of output objects could also exist. For example, other types of output objects could be application, database, data cube, data structure, flat file of data, a graph, a directed graph, a project plan, an automated control system, a virtual reality visualization, a printed report, an on-screen representation of a printed report, a Web page, an email, an XML (Extended Markup Language) data structure, a document, a submission for an organization such as a government agency (like a FDA submission), an alert, a natural language representation of data, and a notification list. Other types of output objects exist.
FIG. 10 is a block diagram of a prior art method of constructing a major information technology project. The method shown in FIG. 10 can be implemented in one or more data processing systems, such as data processing systems 104 , 106 , 110 , 112 , and 114 in FIG. 1 or data processing system 200 shown in FIG. 2. The method shown in FIG. 10 can be implemented among multiple computers over a network, such as network 102 shown in FIG. 1.
Once an organization has specified organization goal 900 and the output objects desired for major information technology project 902 of FIG. 9, the organization then has to cause major information technology project 902 to be created. In the prior art, the process of implementing major information technology project 902 is performed in a “left to right” manner.
Specifically, one or more individuals identify all resources available 1000 to the organization for major information technology project 902 . Examples of resources are shown in FIG. 27, though can include items such as money, manpower, existing databases, existing software, and the like. Similarly, one or more individuals identify all constraints 1002 imposed on the organization for major information technology project 1002 . Examples of constraints are shown in FIG. 28, though can include items such as legal constraints, security requirements, time constraints, and the like.
Resources 1000 and constraints 1000 are fed into “as-is” model 1004 . An “as-is” model describes all of the identified resources available to major information technology project 902 and all of the identified constraints imposed on major information technology project 902 . Thus, an “as-is” model can be referred to as an existing model that describes existing resources. An “as-is” model can be reflected in a database or some other computer readable format; however, often “as-is” model 1004 is an ad-hoc report used by individuals to manually define subprojects 1006 . Thus, one or more individuals and/or one or more computer programs define subprojects 1006 . The sub-projects are then individually executed in a specified order, some of which are performed in parallel, to implement major information technology project 902 .
FIG. 11 is a block diagram of a set of sub-projects created using the prior art method shown in FIG. 10. As a result of performing the step of “define sub-projects” 1006 in FIG. 10, major information technology project 902 is divided up into sub-projects as shown. In the illustrative example of FIG. 11, major information technology project 902 includes six sub-projects; sub-project 1102 , sub-project 1104 , sub-project 1106 , sub-project 1108 , sub-project 1110 , and sub-project 1112 . Each sub-project is shown as having various different areas on the figure in order to show that each sub-project can have a different scale in terms of difficulty, size, or some other parameter. Most sub-projects are performed in a particular order, though some sub-projects could be performed in parallel.
Each sub-project reflects a particular aspect of building major information technology project 902 . In a non-limiting example, each sub-project has a particular purpose described as follows. Sub-project 1102 is a sub-project to implement the physical machinery and wiring used to implement major information technology project 902 . Sub-project 1104 is a project to create a new database used in major information technology project 902 . Sub-project 1106 is a project to create a new software application useful for performing temporal analysis on data. Sub-project 1108 is a project to convert existing data to a new format. Sub-project 1110 is a project to create a graphical user interface for interacting with the database to be defined in sub-project 1104 . Sub-project 1112 is a project to develop a second database.
Although sub-projects 1102 through 1112 are described in terms of specific examples, many other types of sub-projects exit. Additionally, major information technology project 902 can include more or fewer sub-projects. Most major information technology project 902 would have many more sub-projects. Moreover, sub-projects 1102 through 1112 could each include one or more smaller sub-projects. Each smaller sub-project is used to plan construction of the corresponding larger sub-project. Conceivably, smaller sub-projects could also include deeper levels of sub-projects.
FIG. 12 is a block diagram illustrating major information technology sub-projects that inefficiently overlap underlying realities of existing information technology systems as a result of the prior art method shown in FIG. 10. As stated previously, the prior art method show in FIG. 10 of generating sub-projects for major information technology project 902 is unsatisfactory. The prior art method shown in FIG. 10 is unsatisfactory because the prior art method often results in total failure of major information technology project 902 or results in a final major information technology project that has unacceptable inefficiencies.
The cause of this result is illustrated in FIG. 12. In broad terms, the prior art method shown in FIG. 10 does not take into account the underlying technical realities of existing systems in “as-is” model 1004 . In other words, the prior art method shown in FIG. 10 is not data centric. A method of creating a major information technology project is data centric when the method is based on empirical data, even if the empirical data includes subjective considerations that have been reduced to data models.
For example, major information technology project 902 shows sub-project 1106 and sub-project 1110 as defined according to the method shown in FIG. 10. However, each of sub-project 1106 and sub-project 1110 overlap multiple “as-is” conceptual objects. An “as-is” conceptual object is some underlying physical information technology-related thing. An “as-is” conceptual object can be an existing conceptual object. For example, sub-project 1110 overlaps all three of “as-is” data structure 1200 , “as-is” data structure 1202 , and “as-is” data structure 1204 . Similarly, sub-project 1106 overlaps both “as-is” data structure 1200 and “as-is” data structure 1204 . Although blocks 1200 , 1202 , and 1204 are characterized as “as-is” data structures, one or more of these blocks could be replaced with “as-is” applications, databases, physical hardware, or other “as-is” conceptual objects.
The overlap of sub-projects to multiple “as-is” conceptual objects shown in FIG. 12 illustrates why the prior art method shown in FIG. 10 often fails. Because sub-projects are designed without taking into account the underlying “as-is” conceptual objects, work on sub-projects proceeds without having all pertinent information. Those working on sub-project 1106 do not appreciate that “as-is” data structure 1200 will impact construction of both sub-project 1106 and sub-project 1110 . As a result, duplicative effort may take place, resulting in possibly gross inefficiency. Alternatively, “as-is” data structure is not modified to handle the workload imposed by both sub-project 1106 and sub-project 1110 , resulting in failure of both projects.
As stated above, FIG. 13 through FIG. 15 illustrate a summary of an illustrative embodiment for solving the problem described in FIG. 9 through FIG. 12. Common reference numerals used in different figures correspond to each other. Thus, for example, major information technology project 902 is the same in FIG. 9 through FIG. 15.
In particular, FIG. 13 is a block diagram illustrating a computer-implemented method of creating optimized sub-projects for a major information technology project, in accordance with an illustrative embodiment. The method shown in FIG. 13 can be implemented in one or more data processing systems, such as data processing systems 104 , 106 , 110 , 112 , and 114 in FIG. 1 or data processing system 200 shown in FIG. 2. The method shown in FIG. 13 can be implemented among multiple computers over a network, such as network 102 shown in FIG. 1.
FIG. 13 illustrates a counter-intuitive method 13000 of selecting a set of optimized sub-projects into a plan for creating an optimal project definition. Instead of proceeding from a “right to left” perspective shown in FIG. 10, the illustrative embodiment shown in FIG. 13 solves the problem of planning major information technology problem 902 from “left to right.” Specifically, the term “left to right” in this context means that the illustrative process first defines a solution model 1302 , instead of defining the problem—as in FIG. 10.
The solution model 1302 , resources 1000 , constraints 1002 , and political concerns 1306 are all described in terms of data that can be manipulated by a computer-implemented process. Thus, the definition of solution model 1302 , resources 1000 , constraints 1002 , and political concerns 1306 are provided to optimization engine 1304 . An optimization engine is a computer-implementable software application that performs rigorously defined mathematically optimization, as defined above, on inputs 1302 , 1306 , 1000 , and 1002 .
After feedback 1308 , the output of optimization engine is an optimized major information technology project 902 having optimally selected sub-projects 1310 . The term “optimally selected sub-projects” means that the sub-projects were selected via a mathematical optimization project.
The process, however, usually proceeds through several adjustments and iterations in order to bring the optimized major information technology project 902 into closer agreement with expectations of those responsible for major information technology project 902 . Thus, feedback process 1308 allows a user or process to adjust one or more of solution model 1302 , resources 1000 , constraints 1002 , or political concerns 1306 and then re-execute optimization engine 1304 .
Ultimately, the result of the process shown in FIG. 13 is an optimized major information technology project 902 having optimally selected sub-projects 1310 that are in accord with expectations of those responsible for major information technology project 902 . The process shown in FIG. 13 is data centric. In other words, the process shown in FIG. 13 is based on data and mathematical characterizations of factors important to major information technology project 902 . As a result, as shown in FIG. 14 and FIG. 15, the optimally selected sub-projects 1310 more closely reflect underlying realities of “as-is” conceptual objects. Thus, by using the method shown in FIG. 13, the probability of success of completing an efficient major information technology project 902 is greatly increased.
FIG. 14 is a block diagram illustrating optimally selected sub-projects for a major information technology project, in accordance with an illustrative embodiment. The optimally selected sub-projects shown in FIG. 14 are different than the non-optimally selected sub-projects shown in FIG. 12. Thus the shapes of sub-project 1400 , sub-project 1402 , sub-project 1404 , sub-project 1406 , sub-project 1408 , sub-project 1410 , and sub-project 1412 are different than the various sub-projects shown in FIG. 12. Optimally selected sub-projects shown in FIG. 14 are part of major information technology project 902 .
By implementing optimally selected sub-projects 1400 through 1412 in a particular order, which could be parallel implementation in some instances, the probability of successfully implementing major information technology project 902 is substantially increased.
FIG. 15 is a block diagram illustrating major information technology sub-projects that efficiently overlap underlying realities of existing information technology systems, in accordance with an illustrative embodiment. FIG. 15 illustrates why the process shown in FIG. 13 is superior to the prior art method shown in FIG. 9.
Unlike in FIG. 12, which is a result of the prior art method shown in FIG. 10, the shown optimally selected sub-projects directly overlap underlying conceptual data objects. For example, optimally selected sub-project 1400 corresponds directly to conceptual data object 1200 without overlapping conceptual data object 1202 . Similarly, optimally selected sub-project 1402 directly corresponds to conceptual data object 1202 without overlapping conceptual data object 1200 . Thus, duplicative effort is avoided and major information technology project 902 is much more efficiently produced. Additionally, major information technology project 902 operates more efficiently when completed.
FIG. 16 is a block diagram illustrating a method of creating optimized sub-projects for a major information technology project, in accordance with an illustrative embodiment. In particular, the method shown in FIG. 16 is a more detailed version of the method shown in FIG. 13. Thus, corresponding reference numerals shown in FIG. 16 correspond to like numerals shown in FIG. 13. The method shown in FIG. 16 can be implemented in one or more data processing systems, such as data processing systems 104 , 106 , 110 , 112 , and 114 in FIG. 1 or data processing system 200 shown in FIG. 2. The method shown in FIG. 16 can be implemented among multiple computers over a network, such as network 102 shown in FIG. 1.
As in FIG. 13, solution model 1302 , resources 1000 , constraints 1002 , and political concerns 1306 are provided to optimization engine 1304 . In conjunction with optional feedback 1308 , optimization engine creates optimized major information technology project 902 having optimally selected sub-projects 1310 . However, the method shown in FIG. 16 details solution model 1302 .
Construction of solution model 1302 begins with creating output object definitions 1602 . Output objects are those outputs or deliverables that the project is designed to deliver. Specific examples of output objects include screen shots showing particular information, pictures, or query results; reports; services delivered; applications; queries; and others. Output objects are decomposed into three types of conceptual data objects: output data objects, process data objects, and connector data objects that connect the former two data objects. Output data objects are data objects that represent data and data structures, such as databases and other similar data objects. Process data objects are data objects that represent processes used to create the output objects, such as applications, algorithms, and flows.
For example, an output object could be a report. Decomposing this output object results in a corresponding output data object that is data that identifies or represents the report. Additionally, the report is decomposed into the logical processes used to create the report. Continuing the example, the each of three applications, algorithms, or flows used to create the report are identified and represented as a data object that can be called an output process object.
The sum of decomposed output data objects are then collected and assimilated into “to be” data model 1604 . “To-be” data model 1604 is a model of all output data objects, data structures desired or needed for the output data objects, and any other data objects desired to implement optimized major information technology project 902 . “To be” data model 1604 is data assembled into data models appropriate to producing one or more optimized sub-projects. A “to be” data structure therefore includes one or more data objects, as defined above.
Different parts of “to be” data model 1604 may be at different levels of completeness. Thus, an example of “to be” data model 1604 is a data structure that shows the “skeleton” of a massive database that is to be constructed. Although not all information regarding the future database is available, the “to be” model of the database describes the structure of the database and what information it should contain.
Similarly, the sum of decomposed output process objects are collected and assimilated into “to be” process model 1606 . “To-be” process model 1606 is a model of processes and flows desired to implement optimized major information technology project 902 . “To be” process model 1606 is data assembled into data models appropriate to producing one or more optimized sub-projects. A “to be” process therefore includes one or more data objects, as defined above.
Different parts of “to be” process model 1606 may be at different levels of completeness. Thus, an example of “to be” data model 1606 is an application that has not yet been written or that is incomplete. Although not all information regarding the future application is available, the “to be” model of the application describes the structure of the application and what information it should contain.
Next, “to be” data model 1604 and “to be” process model 1606 are arranged into value clusters. Possibly, connector data objects generated during output object definition 1602 are also integrated into value clusters 1608 . A value cluster is the discrete intersection of data and that data's ability to add value to an organization. A value cluster may also be considered a group of resources that, when taken together, support one or more output objects having a utility value to an organization.
Value clusters 1608 may be considered a group of data value clusters, process value clusters, and connector value clusters. Each data value cluster includes one or more data sources that support one or more data objects. Each process value cluster includes one or more logical processes that support one or more output objects.
Value clusters 1608 are then related to each other using affinity matrix 1610 . Affinity matrix 1610 is a matrix of data that indicates a relationship between groups of data sources and groups of output objects, and/or groups of available logical processes and groups of output objects. The affinity matrix des