A project can be loosely defined as an endeavor to achieve a specific goal, subject to some limiting constraints such as time and resources. Projects occur everywhere and may be of various scopes and importance. Some examples of projects include mapping the human genome, building the golden gate bridge, putting a satellite into orbit, and renovating a kitchen.
Managing a project can be a complicated affair, so much so that “Project Management” has become a small industry by itself. There are books, professional bodies, consultants, and scores of software tools to aid in the process of project management. Useful as all of these may be, delays in projects that can lead to project failure are still alarmingly prevalent.
Accurate decision making is the key to successful project management. Decision making relies heavily on different project statuses. For example, whether to look for new labor resources or not for a project is dependent upon the progress of presently engaged labor resources. If the progress of the presently engaged labor resources is on track, project management will typically assume that everything is alright and, therefore, would not go looking for new resources. However, if project management becomes aware that the progress data has not been updated for fifteen (15) days, for example, then management would likely try to find out what has transpired over those fifteen (15) days.
For example, project management may discover that there is an average delay of fifteen (15) days for all tasks associated with the project. The delay may be due to, for example, resources being stuck at a complex maneuver for which additional expert help is needed but not available. Since no progress was made for the last fifteen (15) days, no update has been reported to the project management system. Clearly, project management has to urgently look for expert help in this situation. The urgency to look for expert help may not have become known to project management if project management had not become aware of the delay.
The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate various systems, methods, and other embodiments of the disclosure. It will be appreciated that the illustrated element boundaries (e.g., boxes, groups of boxes, or other shapes) in the figures represent one embodiment of the boundaries. In some embodiments one element may be designed as multiple elements or that multiple elements may be designed as one element. In some embodiments, an element shown as an internal component of another element may be implemented as an external component and vice versa. Furthermore, elements may not be drawn to scale.
The following terms are used herein with respect to various embodiments.
The terms “project” and “project plan” may be used interchangeably herein.
The term “staleness”, as used herein, refers to how dated or how old information may be. For example, a status staleness value for a project may be ten (10) days, indicating that information related to a particular status type (e.g., labor availability) of the project has not been reported for ten (10) days (e.g., because no update may be necessary if the status is the same as before).
The term “status type”, as used herein, refers to a particular aspect of a project or component of a project that may be reported to provide an update with respect to how well that particular aspect of the project or component of the project is progressing or being utilized. Some examples of status types include project progress, labor availability, raw material availability, equipment availability, failure risk, labor resource usage, resource productivity, public perception of brand value, public perception of a product line, or public perception of the reliability of a product.
The term “reportable component”, as used herein, refers to a component of a project plan for which one or more status types may be reported into a project management system. Some examples of reportable components of a project include tasks of the project, resources used in the project, groups of related tasks of the project, and groups of related resources used in the project.
Systems, methods, and other embodiments for facilitating the determination of how stale or dated project information is for a project plan associated with a computer application are disclosed. Example embodiments are discussed herein with respect to computerized project management, where activities are defined and are to be performed over scheduled time periods using resources. Some activities are related by one or more of timing with respect each other, common category (similar type of activities), or common resources used to complete the activities.
In one embodiment, a project staleness tool is disclosed that is configured to read status data, associated with reportable components of a project, into an input data structure associated with a project management computer application. The status data may be transformed into status staleness values for the reportable components, forming a plurality of status staleness values corresponding to a status type. Each status staleness value indicates how old or dated the status data is for that reportable component (i.e., how long it has been since the status of that reportable component has been updated).
The plurality of status staleness values may be transformed into a staleness value for the project (i.e., a project staleness value), corresponding to the status type. The status staleness value for the project may be output to a data structure associated with the project management computer application for display. The status staleness value for the project is an indication of how old or dated the status data is, in general, for the project.
In one embodiment, data is represented in terms of at least one computer-implemented data structure. A data structure can be transformed within a computing system by transforming the data within the data structure, transforming the structure of the data structure, or both.
With reference to
However, other embodiments may provide different logics or combinations of logics that provide the same or similar functionality as the project staleness tool 110 of
The computer system 100 also includes a display screen 135 operably connected to the computing device 105. In accordance with one embodiment, the display screen 135 is used to display views of and facilitate user interaction with a graphical user interface (GUI) generated by the visual user interface logic 130 for checking project status. In one embodiment, the project staleness tool 110 is a centralized server-side application that is accessed by many users. Thus the display screen 135 may represent multiple computing devices/terminals that allow users to access and receive services from the project staleness tool 110 via networked computer communications.
In one embodiment, the computer system 100 further includes at least one database device 140 operably connected to the computing device 105 or a network interface to access the database device 140 via a network connection. In accordance with one embodiment, the database device 140 is configured to store and manage data structures (e.g., records of project components and associated status data) associated with the project staleness tool 110 in a database system (e.g., a program management computer application).
Referring back to the logics of the project staleness tool 110 of
In one embodiment, the status staleness logic 115 is configured to generate a status staleness value for each reportable component of a project. The status staleness values are generated based on transforming status data associated with the reportable components which are input (e.g., read) into the status staleness logic 115. The status staleness values for the reportable components may be generated for a particular status type of the project (e.g., raw material availability).
In one embodiment, the visual user interface logic 130 is configured to facilitate reading of status data into at least one input data structure associated with a project management computer application. Furthermore, in one embodiment, the visual user interface logic 130 is configured to operably interact with the staleness roll-up logic 120 to allow a user to drill down from a status staleness value of an organization to a status staleness value of a reportable component of a project.
For example, in one embodiment, a status staleness value for a reportable component of a project may be the number of days since a status of the reportable component was last reported or updated into a project management system. Determination of such status staleness values from status data and manipulation of such status staleness values are discussed more fully herein with respect to the remaining figures.
In one embodiment, the staleness roll-up logic 120 is configured to generate a status staleness value for a project based on multiple status staleness values for the reportable components of the project. The status staleness value for the project corresponds to a particular status type of the project (e.g., raw material availability) as defined by the status type of the multiple status staleness values for the reportable components. In one embodiment, staleness roll-up logic 120 is configured to generate the status staleness value for the project by calculating a weighted average of the multiple status staleness values of the reportable components. In one embodiment, transforming a plurality of status staleness values includes generating a weighted average of the plurality of status staleness values as the project staleness value.
Also, in one embodiment, the staleness roll-up logic 120 is configured to generate a status staleness value for an organization. Just as a staleness value for a project may be generated from multiple staleness values of reportable components of the project, a staleness value for an organization may be generated from multiple staleness values of projects associated with the organization.
For example, the staleness roll-up logic 120 may first generate a status staleness value for each project of an organization based on staleness values for multiple reportable components corresponding to the different projects. The staleness roll-up logic 120 may then generate a staleness value for the organization, for example, by calculating a weighted average of the multiple status staleness values of the multiple projects. Examples of rolling up status staleness values from one level to another are discussed later herein in detail with respect to the remaining figures.
In one embodiment, the staleness correlation logic 125 is configured to determine status staleness outliers of reportable components of a project based on the status staleness values for the reportable components. A status staleness outlier corresponds to a status staleness value, within a group of status staleness values of a group of reportable components, which is significantly different from the other status staleness values in the group.
For example, in one embodiment, the staleness correlation logic 125 is configured to determine status staleness outliers by generating a scatterness value and eccentricity values. The scatterness value is a single value that is generated based on the multiple status staleness values of the reportable components of the project. An eccentricity value is generated for each reportable component of the project based on the multiple status staleness values of the reportable components of the project. In one embodiment, the scatterness value and the eccentricity values are analyzed to determine if any outliers exist among the status staleness values of the reportable components. Generation of scatterness values and eccentricity values is discussed later herein in detail with respect to the remaining figures.
Method 200 will be described from the perspective that a project has many reportable components including tasks and resources. Each reportable component of a project may be reportable in the sense that a status of one or more status types of a component may be reported (e.g., to the system 100). By reviewing the statuses and associated staleness of the components of a project, a user (e.g., a project manager) may gain keen insight into how well the project is doing.
Upon initiating method 200, at block 210, status data associated with reportable components of a project is input into at least one input data structure associated with a project management computer application (e.g., project staleness tool 110 of
At block 220, at least a portion of the status data is transformed into a status staleness value for each reportable component of the project, forming a plurality of status staleness values. The plurality of status staleness values correspond to a status type of the project (e.g., project progress). In accordance with one embodiment, the status staleness logic 115 transforms the status data into status staleness values. For example, a status staleness value for a reportable component may correspond to a number of days since status data was last reported or updated for the reportable component.
At block 230, the plurality of status staleness values for the components are transformed into a status staleness value for the project, corresponding to the status type. In accordance with one embodiment, the staleness roll-up logic 120 transforms (rolls up) the plurality of status staleness values for the components into the status staleness value for the project. The plurality of status staleness values may be transformed by calculating a weighted average of the status staleness values, in one embodiment. The status staleness value for the project may be representative of an overall average status staleness for the project (e.g., an overall average number of days for which the status type of the project is out of date).
At block 240, the status staleness value for the project is output for display to at least one output data structure associated with the project management computer application. In accordance with one embodiment, the visual user interface logic 130 receives the status staleness value for the project from the staleness roll-up logic 120 and outputs the status staleness value for the project to at least one output data structure. In addition to outputting the status staleness value for the project, an indication of whether the status staleness value for the project is within an acceptable range for the status type may be similarly output for display as well.
In this manner, the project staleness tool 110 will take into account how much time has elapsed since a status of a particular status type of a particular project component has been updated. By similarly accounting for each project component of the project, the project staleness tool 110 is able to make a determination of overall project status staleness for that particular status type. Therefore, a project manager may gain deeper insight into a status of a project and associated project components by realizing how stale (or fresh) is the status data. In accordance with one embodiment, a status staleness value may be determined for multiple status types for a reportable component or a project.
Furthermore, in one embodiment, an organization status staleness value may be generated corresponding to the status type. Such an organization status staleness value may be generated by rolling up the staleness value for the project with at least one other (different) status staleness value for at least one other (different) project associated with the organization. In accordance with one embodiment, the staleness roll-up logic 120 of the project staleness tool 110 performs the rolling up.
Referring to table 300 of
ψstatus=Tnow−Treported,
where Tnow is the present date-time, and Treported is when the status was last reported/updated. For example if a project risk was reported 2 days and 3 hours ago, then ψrisk=2.125 days.
For a project composed of multiple components such as tasks or resources, the status staleness value of the project is determined as follows:
where ωi is the size (or weight) of the ith component/task, Tnow is date-time now, Ti,reported is when the status for the ith component/task was last reported/updated (in case no reporting is available, Ti,reported is assumed to be equal to the planned start date-time), and n is the number of such components/tasks in the project.
For example, referring to table 300 of
That is, the staleness of total progress for the project is 1.464 days. For this example of project progress status, it is noted here that:
1. If a task is completed in the past, the staleness value of its own progress status is zero.
2. If a task is planned in the future, and no progress is yet available, it does not contribute to the staleness calculation.
3. If no progress update is received for a task, but it is planned to start in the past, then the staleness is calculated by considering the planned start.
4. The actual progress of a task does not contribute to the staleness (but does contribute to the progress).
In this manner, a staleness value for an overall average (total) progress of a project may be determined from the progress staleness values of the constituent components (i.e., tasks) of the project. In accordance with other embodiments, other status types, other than project progress, and other reportable component types, other than tasks, may be used to determine other status staleness values for those other status types.
Furthermore, in accordance with other embodiments, other means may be used to roll-up status staleness values without departing from the scope of the present application. For example, other equations, formulas, or algorithms may be used to determine (roll-up) a staleness value, for the overall average (total) status of a project, by transforming the status staleness values of the constituent components of the project.
Therefore, on a progress status report, total progress of the project may be shown as 40.303% with a staleness of 1.464 days. The staleness information provides additional insight to the project manager. For example, with a staleness value of 1.464 days, the project manager may feel fairly comfortable with the calculated total progress of the project. However, if the staleness value were to exceed five (5) days, the project manager may not trust that the calculated total progress of the project is representative of reality.
As mentioned previously herein, the status staleness values for multiple projects may be rolled up to an organization level. Just as the status staleness value is important in the decision making process of the project manager, status staleness at a summary level may be important to a higher level manager in making higher management decisions.
As an example, assume that higher management is interested in tracking the statuses of “risk of project failure” and “labor resource usage” over multiple projects. In one embodiment, risk of project failure is entered in the system 100 directly by a project manager. Labor resource usage is calculated as follows:
Labor Resource Usage=Labor Resource Capacity Required/Labor Resource Capacity Allocated.
Continuing with the example, assume the following organizational project hierarchy:
In one embodiment, the weight-based roll-up approach for staleness roll-up is followed through the project hierarchy, similar to the process described herein for staleness roll-up from the task level to the project level. The status staleness value for a project hierarchy node j is determined as follows:
where ωi,status is the status-specific size of the project i, and ψi,status is the staleness of the same status for project I. When status is not available for any project i, ωi,status is taken as 0. If for a project node j, the term Σi=1n ωi,status turns out to be 0, then ill ψj,status is also assumed to be 0 (to avoid dividing by zero).
For the example described immediately above herein, the rolled up status staleness values at the various hierarchical levels are calculated as follows:
As seen above, the weights are summed at every node in the hierarchy. In this manner, application of weight-based roll-up for achieving staleness roll-up through project hierarchy with subtle adjustments is provided. “Project failure risk” and “labor resource usage” are just example status types used in the above example herein. The hierarchical roll-up process may be used with other status types as well, in accordance with other embodiments. In accordance with another embodiment, an application may employ a different algorithm for organization level roll-up. For example, different equations and/or different coefficients may be configured without departing from the scope of the present application.
In accordance with one embodiment, the visual user interface logic 130 is configured to allow a user to drill down (via a graphical user interface) from the root organization level, to the project level, to the reportable component level for a particular status type. In this manner, a higher level manager may investigate the underlying cause of a problem associated with a status or status staleness.
Method 500 will be described from the perspective that a project has many components including tasks and resources. Each component of a project may be reportable in the sense that a status of one or more status types of a component may be reported (e.g., to the system 100). By reviewing the statuses and associated staleness of the components of a project, a user (e.g., a project manager) may gain keen insight into how well the project is doing.
Upon initiating method 500, at block 510, status data associated with reportable components of a project is input into at least one input data structure associated with a project management computer application (e.g., project staleness tool 110 of
At block 520, at least a portion of the status data is transformed into a status staleness value for each reportable component of the project, forming a plurality of status staleness values. The plurality of status staleness values correspond to a status type of the project (e.g., project progress). In accordance with one embodiment, the status staleness logic 115 transforms the status data into status staleness values. For example, a status staleness value for a reportable component may correspond to a number of days since status data was last reported or updated for the reportable component.
At block 530, the plurality of status staleness values is transformed into a scatterness value associated with the reportable components of the project. Also, at block 540, the plurality of status staleness values is transformed into an eccentricity value for each reportable component of the project, forming a plurality of eccentricity values. In accordance with one embodiment, the staleness correlation logic 125 is configured to transform the status staleness values into a scatterness value and the plurality of eccentricity values.
At block 550, the scatterness value and the eccentricity values are analyzed to determine which, if any, reportable components of the project are outliers with respect to the status type. In one embodiment, an outlier corresponds to a status staleness value, within a group of status staleness values of a group of reportable components, which is significantly different from the other status staleness values in the group.
The scatterness value λ indicates how widely the status staleness values for a group of reportable components are scattered. In one embodiment, the scatterness value λ is calculated as follows:
where σ and μ are the standard deviation and mean, respectively, of the status staleness values for a group of reportable components.
The eccentricity value εi, for each reportable component (i for the ith component having an ith status staleness value) of the project, indicates how far the ith status staleness value is with respect to the others. In one embodiment, each eccentricity value εi is calculated as follows:
where ψi is the ith status staleness value corresponding to the ith reportable component.
The mean, μ, may be calculated as follows:
where n is the number of status staleness values and the number of reportable components in the group.
The standard deviation, σ, may be calculated as follows:
Again, the scatterness value, λ, may be calculated as follows:
In accordance with one embodiment, when the scatterness value λ is determined to be greater than or equal to 0.5 (λ≧0.5), then the existence of outliers is inferred. When the scatterness value λ is determined to be less than 0.5, then it is presumed that there are no outliers in the group.
Again, the eccentricity value, εi, for each reportable component in the group may be calculated as follows:
When σ=0, meaning that all status staleness values in the group are the same, εi is defined to be 0. In one embodiment, for any reportable component having an eccentricity value greater than or equal to 1.0 (εi≧1.0), the associated status staleness value is considered to be an outlier. It is noted that a reportable component having an eccentricity value that is less than 0 is considered to be very fresh (not stale).
Referring to table 620 of
In this manner, identification of an outlier is essentially identifying a reportable component of a group that is extra stale with respect to the other reportable components of the group for a particular status type. It is noted that other formulations of scatterness and eccentricity may be determined, in accordance with other embodiments, without departing from the scope of the present application. Furthermore, in accordance with one embodiment, data identifying which reportable components have been determined to be outliers may be output for display to at least one output data structure associated with the project management computer application.
Systems, methods, and other embodiments for determining the staleness of activities of a project plan as well as of the project plan itself, associated with a computer application, have been described herein. In one embodiment, a project staleness tool is configured to generate status staleness values for reportable components of a project. The status staleness values for the reportable components may be rolled up into a status staleness value for the entire project. Furthermore, reportable components may be determined to be outliers with respect to status staleness and may be accounted for accordingly. This provides more insight to a project manager with respect to individual components of a project and with respect to the entire project for a particular status type.
Computing Device Embodiment
In one embodiment, tool 730 or the computer 700 is a means (e.g., structure: hardware, non-transitory computer-readable medium, firmware) for performing the actions described. In some embodiments, the computing device may be a server operating in a cloud computing system, a server configured in a Software as a Service (SaaS) architecture, a smart phone, laptop, tablet computing device, and so on.
The means may be implemented, for example, as an ASIC programmed to facilitate the management of components (e.g., tasks and resources) of a project plan. The means may also be implemented as stored computer executable instructions that are presented to computer 700 as data 716 that are temporarily stored in memory 704 and then executed by processor 702.
Tool 730 may also provide means (e.g., hardware, non-transitory computer-readable medium that stores executable instructions, firmware) for facilitating the determination of how stale or dated project information may be.
Generally describing an example configuration of the computer 700, the processor 702 may be a variety of various processors including dual microprocessor and other multi-processor architectures. A memory 704 may include volatile memory and/or non-volatile memory. Non-volatile memory may include, for example, ROM, PROM, and so on. Volatile memory may include, for example, RAM, SRAM, DRAM, and so on.
A storage disk 706 may be operably connected to the computer 700 via, for example, an input/output interface (e.g., card, device) 718 and an input/output port 710. The disk 706 may be, for example, a magnetic disk drive, a solid state disk drive, a floppy disk drive, a tape drive, a Zip drive, a flash memory card, a memory stick, and so on. Furthermore, the disk 706 may be a CD-ROM drive, a CD-R drive, a CD-RW drive, a DVD ROM, and so on. The memory 704 can store a process 714 and/or a data 716, for example. The disk 706 and/or the memory 704 can store an operating system that controls and allocates resources of the computer 700.
The computer 700 may interact with input/output devices via the i/o interfaces 718 and the input/output ports 710. Input/output devices may be, for example, a keyboard, a microphone, a pointing and selection device, cameras, video cards, displays, the disk 706, the network devices 720, and so on. The input/output ports 710 may include, for example, serial ports, parallel ports, and USB ports.
The computer 700 can operate in a network environment and thus may be connected to the network devices 720 via the i/o interfaces 718, and/or the i/o ports 710. Through the network devices 720, the computer 700 may interact with a network. Through the network, the computer 700 may be logically connected to remote computers. Networks with which the computer 700 may interact include, but are not limited to, a LAN, a WAN, and other networks.
In another embodiment, the described methods and/or their equivalents may be implemented with computer executable instructions. Thus, in one embodiment, a non-transitory computer readable/storage medium is configured with stored computer executable instructions of an algorithm/executable application that when executed by a machine(s) cause the machine(s) (and/or associated components) to perform the method. Example machines include but are not limited to a processor, a computer, a server operating in a cloud computing system, a server configured in a Software as a Service (SaaS) architecture, a smart phone, and so on). In one embodiment, a computing device is implemented with one or more executable algorithms that are configured to perform any of the disclosed methods.
In one or more embodiments, the disclosed methods or their equivalents are performed by either: computer hardware configured to perform the method; or computer software embodied in a non-transitory computer-readable medium including an executable algorithm configured to perform the method.
While for purposes of simplicity of explanation, the illustrated methodologies in the figures are shown and described as a series of blocks of an algorithm, it is to be appreciated that the methodologies are not limited by the order of the blocks. Some blocks can occur in different orders and/or concurrently with other blocks from that shown and described. Moreover, less than all the illustrated blocks may be used to implement an example methodology. Blocks may be combined or separated into multiple actions/components. Furthermore, additional and/or alternative methodologies can employ additional actions that are not illustrated in blocks. The methods described herein are limited to statutory subject matter under 35 U.S.C §101.
The following includes definitions of selected terms employed herein. The definitions include various examples and/or forms of components that fall within the scope of a term and that may be used for implementation. The examples are not intended to be limiting. Both singular and plural forms of terms may be within the definitions.
References to “one embodiment”, “an embodiment”, “one example”, “an example”, and so on, indicate that the embodiment(s) or example(s) so described may include a particular feature, structure, characteristic, property, element, or limitation, but that not every embodiment or example necessarily includes that particular feature, structure, characteristic, property, element or limitation. Furthermore, repeated use of the phrase “in one embodiment” does not necessarily refer to the same embodiment, though it may.
ASIC: application specific integrated circuit.
CD: compact disk.
CD-R: CD recordable.
CD-RW: CD rewriteable.
DVD: digital versatile disk and/or digital video disk.
HTTP: hypertext transfer protocol.
LAN: local area network.
RAM: random access memory.
DRAM: dynamic RAM.
SRAM: synchronous RAM.
ROM: read only memory.
PROM: programmable ROM.
EPROM: erasable PROM.
EEPROM: electrically erasable PROM.
USB: universal serial bus.
WAN: wide area network.
An “operable connection”, or a connection by which entities are “operably connected”, is one in which signals, physical communications, and/or logical communications may be sent and/or received. An operable connection may include a physical interface, an electrical interface, and/or a data interface. An operable connection may include differing combinations of interfaces and/or connections sufficient to allow operable control. For example, two entities can be operably connected to communicate signals to each other directly or through one or more intermediate entities (e.g., processor, operating system, logic, non-transitory computer-readable medium). Logical and/or physical communication channels can be used to create an operable connection.
A “data structure”, as used herein, is an organization of data in a computing system that is stored in a memory, a storage device, or other computerized system. A data structure may be any one of, for example, a data field, a data file, a data array, a data record, a database, a data table, a graph, a tree, a linked list, and so on. A data structure may be formed from and contain many other data structures (e.g., a database includes many data records). Other examples of data structures are possible as well, in accordance with other embodiments.
“Computer communication”, as used herein, refers to a communication between computing devices (e.g., computer, personal digital assistant, cellular telephone) and can be, for example, a network transfer, a file transfer, an applet transfer, an email, an HTTP transfer, and so on. A computer communication can occur across, for example, a wireless system (e.g., IEEE 802.11), an Ethernet system (e.g., IEEE 802.3), a token ring system (e.g., IEEE 802.5), a LAN, a WAN, a point-to-point system, a circuit switching system, a packet switching system, and so on.
“Computer-readable medium” or “computer storage medium”, as used herein, refers to a non-transitory medium that stores instructions and/or data configured to perform one or more of the disclosed functions when executed. A computer-readable medium may take forms, including, but not limited to, non-volatile media, and volatile media. Non-volatile media may include, for example, optical disks, magnetic disks, and so on. Volatile media may include, for example, semiconductor memories, dynamic memory, and so on. Common forms of a computer-readable medium may include, but are not limited to, a floppy disk, a flexible disk, a hard disk, a magnetic tape, other magnetic medium, an application specific integrated circuit (ASIC), a programmable logic device, a compact disk (CD), other optical medium, a random access memory (RAM), a read only memory (ROM), a memory chip or card, a memory stick, solid state storage device (SSD), flash drive, and other media from which a computer, a processor or other electronic device can function with. Each type of media, if selected for implementation in one embodiment, may include stored instructions of an algorithm configured to perform one or more of the disclosed and/or claimed functions. Computer-readable media described herein are limited to statutory subject matter under 35 U.S.C §101.
“Logic”, as used herein, represents a component that is implemented with computer or electrical hardware, firmware, a non-transitory medium with stored instructions of an executable application or program module, and/or combinations of these to perform any of the functions or actions as disclosed herein, and/or to cause a function or action from another logic, method, and/or system to be performed as disclosed herein. Logic may include a microprocessor programmed with an algorithm, a discrete logic (e.g., ASIC), at least one circuit, an analog circuit, a digital circuit, a programmed logic device, a memory device containing instructions of an algorithm, and so on, any of which may be configured to perform one or more of the disclosed functions. In one embodiment, logic may include one or more gates, combinations of gates, or other circuit components configured to perform one or more of the disclosed functions. Where multiple logics are described, it may be possible to incorporate the multiple logics into one logic. Similarly, where a single logic is described, it may be possible to distribute that single logic between multiple logics. In one embodiment, one or more of these logics are corresponding structure associated with performing the disclosed and/or claimed functions. Choice of which type of logic to implement may be based on desired system conditions or specifications. Logic is limited to statutory subject matter under 35 U.S.C. §101.
“User”, as used herein, includes but is not limited to one or more persons, computers or other devices, or combinations of these.
“Operable interaction”, as used herein, refers to the logical or communicative cooperation between two or more logics via an operable connection to accomplish a function.
While the disclosed embodiments have been illustrated and described in considerable detail, it is not the intention to restrict or in any way limit the scope of the appended claims to such detail. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the various aspects of the subject matter. Therefore, the disclosure is not limited to the specific details or the illustrative examples shown and described. Thus, this disclosure is intended to embrace alterations, modifications, and variations that fall within the scope of the appended claims, which satisfy the statutory subject matter requirements of 35 U.S.C. §101.
To the extent that the term “includes” or “including” is employed in the detailed description or the claims, it is intended to be inclusive in a manner similar to the term “comprising” as that term is interpreted when employed as a transitional word in a claim.
To the extent that the term “or” is used in the detailed description or claims (e.g., A or B) it is intended to mean “A or B or both”. When the applicants intend to indicate “only A or B but not both” then the phrase “only A or B but not both” will be used. Thus, use of the term “or” herein is the inclusive, and not the exclusive use.
To the extent that the phrase “one or more of, A, B, and C” is used herein, (e.g., a data store configured to store one or more of, A, B, and C) it is intended to convey the set of possibilities A, B, C, AB, AC, BC, and/or ABC (e.g., the data store may store only A, only B, only C, A&B, A&C, B&C, and/or A&B&C). It is not intended to require one of A, one of B, and one of C. When the applicants intend to indicate “at least one of A, at least one of B, and at least one of C”, then the phrasing “at least one of A, at least one of B, and at least one of C” will be used.