Detailed Description
The following description of the embodiments of the present invention will be made clearly and completely with reference to the accompanying drawings, in which it is apparent that the embodiments described are only some embodiments of the present invention, but not all embodiments. All other embodiments, which can be made by those skilled in the art based on the embodiments of the invention without making any inventive effort, are intended to be within the scope of the invention.
Those skilled in the art will appreciate that embodiments of the invention may be implemented as a system, apparatus, device, method, or computer program product. Accordingly, the present disclosure may be embodied in the form of entirely hardware, entirely software (including firmware, resident software, micro-code, etc.) or in a combination of hardware and software.
In view of the fact that task arrangement in the prior art is experienced, task completion efficiency is low and project cost is too high, the task distribution method is provided, the optimal matching of tasks is selected through decision factors of tasks and personnel IDs in a greedy mode in a task-by-task distribution mode, tasks are distributed and scheduled through date dimensions according to the principle that personnel on the same day are free, automatic distribution of the tasks can be achieved, production is reasonably arranged, task completion efficiency is improved, and project completion time and project cost are reduced. The present invention will be described in detail with reference to the accompanying drawings.
FIG. 1 is a flow chart of a task allocation method in an embodiment of the present invention. As shown in fig. 1, the task allocation method includes:
s101, acquiring a label factor, labels of tasks to be allocated, n labels of IDs to be matched and maturity base numbers of the n IDs to be matched.
Wherein n is an integer greater than 1.
TABLE 1
TABLE 2
TABLE 3 Table 3
Table 1 is a task representation table, table 2 is a personnel representation table, and Table 3 is a parameter information table. As shown in tables 1 to 3, the demand items are decomposed into sub-items, and tasks are assigned and produced for each sub-item representation. Each sub-entry includes a design task, an encoding task, and a testing task. The nature of the sub-items referred to in the present invention is a design task, an encoding task or a test task, and each sub-item needs to be arranged for a corresponding type of person to sequentially complete the design, encoding or testing of the sub-item.
FIG. 2 is a flow chart of determining tasks to be allocated in an embodiment of the invention. As shown in fig. 2, determining the task to be allocated includes:
and S201, sorting the tasks according to the task parameters.
In specific implementation, when the current time is earlier than the start time of the demand item corresponding to the task, the task is not ordered. Since the scheduling of tasks is determined by the current allocated personnel schedule, the earlier allocated tasks will have a relatively earlier completion time, with the same other conditions. However, each task has a requirement of ending time, so that it is required to ensure that the task with the earlier ending time of the requirement is assigned in advance, i.e. the task with the highest priority. In the case where the end time of satisfying the demand item is the same, it is assumed that some special tasks are designated by designated persons (including designers, coders, and testers) for the purpose of cultivating a certain ability of a developer, etc., and that if such tasks cannot be assigned in advance, there may be a premature saturation of the designated persons, resulting in a failure to acquire the task later, and thus the priority of the task having the characteristic requirement is also higher. Besides the priority requirements, the tasks have the attributes of risk, value and the like, and the tasks with high risk and high value are required to be matched with personnel with higher maturity as far as possible in the range of allocable personnel, and the personnel with higher maturity are preferentially matched through personnel level, nearly three quarterly assessment average values, defect density and other dimensions, so that reasonable allocation of resources is guaranteed to the greatest extent. Thus, all tasks may be initially ordered according to the priority requirements described above. And finally, considering that a plurality of tasks have a dependency relationship, namely the completion time of the coding task which needs to meet the sub-item is later than the completion time of the coding task which depends on the sub-item, if the dependent task is not scheduled yet, the scheduling task can not be guaranteed to meet the dependency relationship, so that fine adjustment is needed on the basis of initial sequencing, and the dependent task is advanced. The method is specifically realized in such a way that no additional adjustment is needed if the initial ordering has satisfied the requirements of the dependency relationship, otherwise, the order of the dependent tasks of the tasks is advanced to the previous bit of the sub-entry.
For example, the task is ordered according to the order from the early to the late when the end time of the demand item is the same, the task of the appointed person is ordered in front of the task of the unspecified person, the person level is ordered according to the order from the high to the low when the end time of the demand item is the same, the task is ordered according to the person level corresponding to the task, the average value of the last three quarterly evaluations is ordered according to the fourth priority, the task is ordered according to the average value of the last three quarterly evaluations from the high to the low, the defect density is ordered according to the fifth priority, the task is ordered according to the defect density corresponding to the low to the high, and finally the dependency sub-item sequence number of the ordered task is judged whether the dependency relationship is met, if the dependency relationship between the tasks is the task X-task Y-task Z, the task Y-task Y is the task Y, the task X-task Y is the task Z, and the task Y is the task Z.
The software development process has the special requirement that design review needs to be completed uniformly within a certain time, so that all tasks need to be ordered according to the sequence of undesigned priority before tasks are distributed every day, and the design ending time of all tasks is guaranteed to meet the requirement of the design completion time as much as possible.
S202, determining the tasks ordered at the first as tasks to be allocated.
After tasks and personnel are distributed through a greedy algorithm, scheduling is required. Scheduling is to perform scheduling on time according to actual workload under the condition that the saturation of the fair workload and the upper limit of the actual workload are met according to a time schedule of the personnel, so that the starting time and the ending time of the task are obtained to determine idle personnel (idle ID) of the next task, and the results of personnel scheduling and task scheduling are temporarily stored in a computer memory. The system comprises a system and a system, wherein the saturation of the fair workload is equal to the product of the saturation of the basic fair workload and the development test input ratio corresponding to the personnel ID; the upper limit of the actual workload is equal to the product of the upper limit of the basic workload and the development test input ratio corresponding to the personnel ID.
Fig. 3 is a flowchart of determining an ID to be matched in an embodiment of the present invention. As shown in fig. 3, determining the ID to be matched includes:
S301, determining the historical ending time corresponding to each ID according to the historical task starting time corresponding to each ID and the historical actual workload corresponding to each ID.
In one embodiment, the method further comprises the step of determining the historical actual workload corresponding to each ID according to the historical decision factors of each ID and the fair workload of each historical task.
In one embodiment, the method further comprises determining the historical decision factor of each ID according to the tag factor, the tag of the historical task, the tag of each ID and the maturity base of each ID.
In specific implementation, determining the historical decision factor of each ID according to the label factor, the label of the historical task, the label of each ID and the maturity base of each ID comprises:
Determining the number of label matching of each ID and the historical task according to the label of the historical task and the label of each ID, and determining the historical decision factor of each ID according to the label factor, the number of label matching of each ID and the historical task and the maturity base of each ID.
Wherein, the historical actual workload is equal to the product of the historical decision factor and the fair workload of the historical task:
historical actual workload = fair workload of historical tasks x historical decision factor;
determining a historical decision factor according to the following formula:
DecisionFactor(i)=U(i)×V^(W1(i)+W2(i));
Wherein DecisionFactor (i) is the historical decision factor of the ith ID, U (i) is the maturity base of the ith ID, V is the label factor, W 1 (i) is the technical label matching number of the ith ID and the historical task, and W 2 (i) is the service label matching number of the ith ID and the historical task. The fair work load can be divided into design fair work load, coding fair work load and test fair work load according to task types.
According to the formula for determining the historical decision factor and the historical actual workload, when the ID (personnel ID) is not matched with the technical label of the historical task and the ID is not matched with the service label of the historical task, the time required for completing the historical task corresponding to the ID is the fair workload time of the historical task, if the label is matched, the historical task and the ID are more adaptive, the time required for actually completing the task is correspondingly reduced according to the value of the decision factor, so that the task can be completed faster and better, and the project cost is reduced as much as possible.
The time required for completing the historical task corresponding to the personnel ID can be determined according to the historical actual workload corresponding to the ID, the fair workload saturation and the actual workload upper limit, and then the historical ending time is determined according to the historical task starting time and the time required for completing the historical task corresponding to the ID.
S302, determining an idle ID according to the historical ending time corresponding to each ID.
When the historical ending time corresponding to the ID is on the same day, the corresponding fair workload is less than the saturation of the fair workload, and the corresponding actual workload is less than the upper limit of the actual workload, the ID can be determined to be an idle ID.
S303, selecting n IDs to be matched from the idle IDs according to the requirement parameters corresponding to the tasks to be distributed.
In specific implementation, the requirement parameters corresponding to the tasks include the type of the task to be allocated (design task, coding task or test task), whether to specify the designer, whether to specify the coding person, whether to specify the tester, the personnel level, the average value of the examination of the near three quarters and the defect density requirement. The invention can select the ID meeting the above requirement parameters from the idle IDs as the ID to be matched.
For example, the type of the task to be distributed is a design task, no designer is specified, the personnel level is required to be greater than or equal to the A level, the average value of the nearly three quarter evaluations is greater than B and the defect density is greater than C, the personnel type is selected from the idle IDs to be the designer, the personnel level is greater than or equal to the A level, and the ID of the nearly three quarter evaluations is greater than B and the defect density is greater than C is used as the ID to be matched. Wherein the ID to be matched is generally selected from the idle IDs of the current day. And if the idle ID does not exist on the same day, selecting the ID to be matched from the idle IDs on the next day.
S102, determining decision factors of n IDs to be matched according to the label factors, the labels of the tasks to be allocated, the labels of the n IDs to be matched and the maturity base numbers of the n IDs to be matched.
In one embodiment, S102 comprises determining the number of matching n to-be-matched IDs with the labels of the to-be-allocated tasks according to the labels of the to-be-allocated tasks and the labels of the n to-be-matched IDs, and determining the decision factors of the n to-be-matched IDs according to the label factors, the number of matching n to-be-matched IDs with the labels of the to-be-allocated tasks and the maturity base of the n to-be-matched IDs.
The labels comprise technical labels and service labels, and the matching number of the to-be-matched IDs and the technical labels of the to-be-allocated tasks and the matching number of the to-be-matched IDs and the service labels of the to-be-allocated tasks can be determined according to the labels of the to-be-allocated tasks and the n to-be-matched IDs.
For a task to be allocated, there may be multiple idle people (using employee number (ID) identification, i.e. idle ID) meeting the requirement on the same day, so that optimal matching needs to be performed according to a certain rule, and on the basis of meeting the rigidity requirement (such as the end time of a requirement item, a dependency relationship, etc.), the actual completion time of the task (the time required for completing the task) is shortened as much as possible, thereby achieving the purpose of controlling the cost. The invention defines technical labels and business labels in the input personnel portraits and task portraits, and determines a decision factor through the following formula, thereby representing the matching degree of tasks and IDs, wherein a greedy algorithm is used for searching the optimal matching ID so as to minimize the decision factor, and the objective function is as follows:
f=min DecisionFactor(i),i=1,2,...,n;
DecisionFactor(i)=U(i)×V^(W1(i)+W2(i));
Wherein DecisionFactor (i) is a decision factor of the ith ID to be matched, U (i) is a maturity base of the ith ID to be matched, V is a label factor, W 1 (i) is a technical label matching number of the ith ID to be matched and the task to be allocated, and W 2 (i) is a service label matching number of the ith ID to be matched and the task to be allocated.
And S103, distributing the task to be distributed to the ID to be matched corresponding to the smallest decision factor in the n decision factors.
TABLE 4 Table 4
Table 4 is a task output table. And the sub-item distribution, namely outputting Jira tasks, wherein after determining the ID to be matched corresponding to the task to be distributed, the corresponding ID, the fair workload corresponding to the task and the time for starting the task can be output according to the task type as shown in the table 4. And determining the time required for completing the task to be allocated corresponding to the ID to be matched according to the process of determining the time required for completing the historical task corresponding to the ID, and determining the task completion time by the same method.
The execution subject of the task allocation method shown in fig. 1 may be a task allocation device located on a computer. As can be seen from the flow shown in fig. 1, the task allocation method in the embodiment of the present invention obtains the label factor, the label of the task to be allocated, the label of the ID to be matched and the maturity base to determine the decision factor, and allocates the task to be allocated to the ID to be matched corresponding to the minimum decision factor, so as to realize automatic allocation of the task, reasonably arrange production, improve task completion efficiency, and reduce project completion time and project cost.
TABLE 5
Numbering device |
Output item |
Output information description |
1 |
Contract pricing |
Actual pricing of items |
2 |
Project cost |
Actual cost of the project |
Table 5 is a cost output table. As shown in table 5, the cost of the project refers to the sum of the manpower costs required to actually complete all tasks, and if the salary of the personnel adopts a daily settlement mode, the cost calculation formula of each personnel is:
personnel cost = employee unit price x time required to complete a task x professional manager cost amortization;
when the cost of the project is smaller than the contract pricing, the project is profitable, otherwise, the personnel configuration and whether the contract pricing is reasonable or not are considered, and the purpose of controlling the cost is achieved.
If the task allocation (scheduling) is performed, the success of scheduling is prompted, and the scheduling is possibly caused by the factors that the design personnel are too few, all design tasks cannot be completed before the design completion time, or the code testers are too few, the tasks cannot be completed before the end time of the required items, or the saturation configuration of the fair workload is unreasonable or the upper limit configuration of the actual workload is unreasonable, and the like, and the scheduling is successfully performed by adopting the scheduling method of the scheduling.
The specific flow of the embodiment of the invention is as follows:
1. and determining the historical actual workload corresponding to each ID according to the historical decision factors of each ID and the fair workload of each historical task.
2. And determining the historical ending time corresponding to each ID according to the historical task starting time corresponding to each ID and the historical actual workload corresponding to each ID.
3. And determining the idle ID according to the historical ending time corresponding to each ID.
4. And selecting n IDs to be matched from the idle IDs according to the required parameters corresponding to the tasks to be allocated.
5. And sequencing the tasks according to the task parameters, and determining the task sequenced in the first stage as the task to be distributed.
6. And determining decision factors of the n IDs to be matched according to the label factors, the labels of the tasks to be allocated, the labels of the n IDs to be matched and the maturity base numbers of the n IDs to be matched.
7. And distributing the task to be distributed to the ID to be matched corresponding to the smallest decision factor in the n decision factors.
In summary, in order to solve the problems of uneven work distribution, task mismatch, time and manpower resource investment waste and excessive project cost caused by manual production scheduling in the field of software development project management, the invention provides a task distribution method based on a decision factor and a greedy algorithm. The advantages are as follows:
1. By adopting a computer means, the task scheduling is automatically completed, and the efficiency is greatly improved.
2. The optimal matching of the personnel ID and the task is selected based on the algorithm, so that the randomness of manual scheduling is avoided, the rationality of the scheduling result is improved, and the project cost is reduced.
Based on the same inventive concept, the embodiment of the invention also provides a task allocation device, and because the principle of the device for solving the problem is similar to that of the task allocation method, the implementation of the device can be referred to the implementation of the method, and the repetition is omitted.
Fig. 4 is a block diagram showing the configuration of a task assigning apparatus according to an embodiment of the present invention. Fig. 5 is a block diagram showing the construction of a task assigning apparatus according to another embodiment of the present invention. Fig. 6 is a block diagram illustrating a user input module according to another embodiment of the present invention. Fig. 7 is a block diagram of a task division module according to another embodiment of the present invention. Fig. 8 is a block diagram of a result output module according to another embodiment of the present invention. Fig. 9 is a functional flow diagram of the module of fig. 5. As shown in fig. 4 to 9, the task assigning device includes:
the acquisition module is used for acquiring a label factor, labels of tasks to be allocated, n labels of IDs to be matched and maturity base numbers of the n IDs to be matched, wherein n is an integer greater than 1;
The decision factor determining module is used for determining decision factors of n IDs to be matched according to the label factors, the labels of the tasks to be allocated, the labels of the n IDs to be matched and the maturity base numbers of the n IDs to be matched;
and the task allocation module is used for allocating the task to be allocated to the ID to be matched corresponding to the minimum decision factor in the n decision factors.
In one embodiment, the method further comprises:
The sequencing module is used for sequencing the tasks according to the task parameters;
And the task to be allocated determining module is used for determining the tasks ordered at the first stage as tasks to be allocated.
In one embodiment, the method further comprises:
the historical ending time determining module is used for determining the historical ending time corresponding to each ID according to the historical task starting time corresponding to each ID and the historical actual workload corresponding to each ID;
The idle ID determining module is used for determining idle IDs according to the historical ending time corresponding to each ID;
The ID selection module to be matched is used for selecting n IDs to be matched from the idle IDs according to the requirement parameters corresponding to the tasks to be allocated.
In one embodiment, the method further comprises:
and the historical actual workload determination module is used for determining the historical actual workload corresponding to each ID according to the historical decision factors of each ID and the fair workload of each historical task.
In one embodiment, the method further comprises:
The historical decision factor determining module is used for determining the historical decision factors of the IDs according to the label factors, the labels of the historical tasks, the labels of the IDs and the maturity base numbers of the IDs.
In one embodiment, the decision factor determination module includes:
the first tag matching number determining unit is used for determining the tag matching number of the n IDs to be matched and the tasks to be distributed according to the tags of the tasks to be distributed and the tags of the n IDs to be matched;
And the decision factor determining unit is used for determining the decision factors of the n IDs to be matched according to the tag factors, the tag matching number of the n IDs to be matched with the task to be allocated and the maturity base number of the n IDs to be matched.
In one embodiment, the historical decision factor determination module includes:
the second tag matching number determining unit is used for determining the tag matching number of each ID and the historical task according to the tag of the historical task and the tag of each ID;
and the historical decision factor determining unit is used for determining the historical decision factor of each ID according to the tag factor, the tag matching number of each ID and the historical task and the maturity base number of each ID.
As shown in fig. 5-9, in practical application, the task allocation device includes a user input module, a task division module, and a result output module.
The user input module comprises an acquisition module, and specifically comprises a task portrait configuration unit, a personnel portrait configuration unit and a parameter information configuration unit.
The task portrait configuration unit is used to input the task portrait table.
The personnel image configuration unit is used for inputting the personnel image table.
The parameter information configuration unit is used for inputting the parameter information table.
The task division module comprises a task preprocessing unit and a strategy executing unit.
The task preprocessing unit comprises a sequencing module and a task to be distributed determining module.
The strategy execution unit comprises a historical ending time determination module, an idle ID determination module, an ID selection module to be matched, a historical actual workload determination module, a historical decision factor determination module and a decision factor determination module.
The result output module is used for outputting the results of personnel scheduling and task scheduling stored in the computer memory according to a certain format, and comprises Jira task output units and cost output units.
The Jira task output unit comprises a task allocation module, and is used for outputting Jira tasks, and Jira tasks comprise data in a task output table.
The cost output unit is used for outputting the cost of the item and contract pricing.
As shown in fig. 9, the function of the module in fig. 5 is as follows:
1. the user input module acquires a task portrait table, a personnel portrait table and a parameter information table.
2. The task division module sorts all tasks according to the end time of the demand items, personnel level, defect density and other parameters, the sorting priority is reduced in sequence, the time sequence requirement and high-value demand are guaranteed to be realized preferentially, and then the optimal ID of the task to be distributed is selected through a greedy algorithm based on a decision factor.
3. And judging whether tasks which are not scheduled exist or not.
4. If the idle ID does not exist on the same day, selecting an ID to be matched from the idle ID on the next day, and entering the task division module again to perform optimization division matching.
5. If all tasks have been scheduled, the results output module outputs Jira a task output table and a cost output table to the user.
In summary, the task allocation device of the embodiment of the invention obtains the label factors, the labels of the tasks to be allocated, the labels of the IDs to be matched and the maturity base numbers to determine the decision factors, and allocates the tasks to be allocated to the IDs to be matched corresponding to the minimum decision factors, so that automatic allocation of the tasks is realized, production is reasonably arranged, task completion efficiency is improved, and project completion time and project cost are reduced.
The embodiment of the invention also provides a specific implementation mode of the computer equipment capable of realizing all the steps in the task allocation method in the embodiment. Fig. 10 is a block diagram of a computer device according to an embodiment of the present invention, and referring to fig. 10, the computer device specifically includes:
A processor (processor) 1001 and a memory (memory) 1002.
The processor 1001 is configured to invoke a computer program in the memory 1002, where the processor executes the computer program to implement all the steps in the task allocation method in the above embodiment, for example, the processor executes the computer program to implement the following steps:
acquiring a label factor, labels of tasks to be allocated, n labels of IDs to be matched and maturity base numbers of the n IDs to be matched, wherein n is an integer greater than 1;
Determining decision factors of n IDs to be matched according to the label factors, the labels of the tasks to be allocated, the labels of n IDs to be matched and the maturity base numbers of the n IDs to be matched;
And distributing the task to be distributed to the ID to be matched corresponding to the smallest decision factor in the n decision factors.
In summary, the computer equipment of the embodiment of the invention acquires the label factors, the labels of the tasks to be distributed, the labels of the IDs to be matched and the maturity base numbers to determine the decision factors, and distributes the tasks to be distributed to the IDs to be matched corresponding to the minimum decision factors, so that automatic distribution of the tasks is realized, production is reasonably arranged, task completion efficiency is improved, and project completion time and project cost are reduced.
The embodiment of the present invention also provides a computer-readable storage medium capable of implementing all the steps of the task allocation method in the above embodiment, the computer-readable storage medium storing thereon a computer program which, when executed by a processor, implements all the steps of the task allocation method in the above embodiment, for example, the processor implements the following steps when executing the computer program:
acquiring a label factor, labels of tasks to be allocated, n labels of IDs to be matched and maturity base numbers of the n IDs to be matched, wherein n is an integer greater than 1;
Determining decision factors of n IDs to be matched according to the label factors, the labels of the tasks to be allocated, the labels of n IDs to be matched and the maturity base numbers of the n IDs to be matched;
And distributing the task to be distributed to the ID to be matched corresponding to the smallest decision factor in the n decision factors.
In summary, the computer readable storage medium of the embodiment of the invention acquires the label factors, the labels of the tasks to be distributed, the labels of the IDs to be matched and the maturity base numbers to determine the decision factors, and distributes the tasks to be distributed to the IDs to be matched corresponding to the minimum decision factors, so as to realize automatic distribution of the tasks, reasonably arrange production, improve task completion efficiency, and reduce project completion time and project cost.
The foregoing description of the embodiments has been provided for the purpose of illustrating the general principles of the invention, and is not meant to limit the scope of the invention, but to limit the invention to the particular embodiments, and any modifications, equivalents, improvements, etc. that fall within the spirit and principles of the invention are intended to be included within the scope of the invention.
Those of skill in the art will further appreciate that the various illustrative logical blocks (illustrative logical block), units, and steps described in connection with the embodiments of the invention may be implemented by electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software (interchangeability), various illustrative components described above (illustrative components), elements, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design requirements of the overall system. Those skilled in the art may implement the described functionality in varying ways for each particular application, but such implementation is not to be understood as beyond the scope of the embodiments of the present invention.
The various illustrative logical blocks, or units, or devices described in the embodiments of the invention may be implemented or performed with a general purpose processor, a digital signal processor, an Application Specific Integrated Circuit (ASIC), a field programmable gate array or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described. A general purpose processor may be a microprocessor, but in the alternative, the general purpose processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a digital signal processor and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a digital signal processor core, or any other similar configuration.
The steps of a method or algorithm described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may be stored in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. In an example, a storage medium may be coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC, which may reside in a user terminal. In the alternative, the processor and the storage medium may reside as distinct components in a user terminal.
In one or more exemplary designs, the above-described functions of embodiments of the present invention may be implemented in hardware, software, firmware, or any combination of the three. If implemented in software, the functions may be stored on a computer-readable medium or transmitted as one or more instructions or code on the computer-readable medium. Computer readable media includes both computer storage media and communication media that facilitate transfer of computer programs from one place to another. A storage media may be any available media that can be accessed by a general purpose or special purpose computer. For example, such computer-readable media may include, but is not limited to, RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to carry or store program code in the form of instructions or data structures and other data structures that may be read by a general or special purpose computer, or a general or special purpose processor. Further, any connection is properly termed a computer-readable medium, e.g., if the software is transmitted from a website, server, or other remote source via a coaxial cable, fiber optic cable, twisted pair, digital Subscriber Line (DSL), or wireless such as infrared, radio, and microwave, and is also included in the definition of computer-readable medium. The disks (disks) and disks (disks) include compact disks, laser disks, optical disks, DVDs, floppy disks, and blu-ray discs where disks usually reproduce data magnetically, while disks usually reproduce data optically with lasers. Combinations of the above may also be included within the computer-readable media.