The present disclosure relates to the field of data processing, and, more specifically, to systems and methods for real-time payroll data validation.
Payroll transactions are an essential part of the world economy as they provide employees with their salaries, employers with their costs, and governmental entities with fees and taxes. As companies have grown to a global scale, the complexities of payroll transactions have risen. For example, an office in a first country may have employees that are taxed differently than an office in a second country, despite both offices being associated with a single company.
One of the issues with managing payroll transactions is viewing, customizing, and validating data in a convenient manner. Firstly, there is a lack of a system that enables users to set rules based on the requirements of different geographic locations. As laws change, conventional systems tend to have high latency in change/adaption. Second, after data is entered by employees, employers, etc., the validation step is often delayed until a payroll transaction needs to be executed or a minimum amount of new data values have been entered (e.g., validation is performed for a batch of new employees rather than a single employee). While this delay certainly causes issues for an employee expecting a quick payment, it also becomes a detriment to computing devices executing the validation. For example, validating several thousand/million entries in a small period of time (e.g., right before a payment is due) puts greater stress in terms of processing and memory usage on the computing devices executing the validation.
Aspects of the disclosure relate to the field of data processing. In one exemplary aspect, the techniques described herein relate to a system for payroll data validation, including: at least one memory; at least one hardware processor coupled with the at least one memory and configured, individually or in combination, to: receive a first user input including at least one data value associated with an employee of a company, wherein the at least one data value is used to complete payroll transactions of the company in a first geographic location; while receiving the first user input, validate the at least one data value of the first user input in real-time by: determining a data type of the at least one data value; retrieving a plurality of localization rules associated with the data type and the first geographic location; and validating whether the at least one data value satisfies criteria provided by the plurality of localization rules; in response to determining that the at least one data value does not satisfy the criteria, generate, on a graphical user interface, an indication that the first user input requires review to complete the payroll transactions, wherein the graphical user interface displays a view of a geographical region and the indication is generated in a portion of the geographical region associated with the first geographic location.
In some aspects, the techniques described herein relate to a system, wherein the at least one hardware processor is further configured to: receive a second user input including at least one other data value associated with a different employee of the company, wherein the at least one other data value is used to complete payroll transactions of the company in a second geographic location; and validate the at least one other data value using a different plurality of localization rules associated with the data type of the at least one other data value and the second geographic location.
In some aspects, the techniques described herein relate to a system, wherein the at least one data value is a national identification number of the employee, and wherein determining that the at least one data value does not satisfy the criteria includes determining that the national identification number has an invalid format, and wherein determining that the at least one other data value satisfies criteria of the different plurality of localization rules includes determining that the national identification number is not required to complete the payroll transactions.
In some aspects, the techniques described herein relate to a system, wherein the at least one hardware processor is further configured to: determine an amount of the criteria that the at least one data value satisfies, wherein the indication generated on the graphical user interface is a visual marker that depicts the amount of the criteria that the at least one data value satisfies.
In some aspects, the techniques described herein relate to a system, wherein the at least one data value includes a first data value and a second data value, wherein the at least one hardware processor is further configured to determine that the at least one data value does not satisfy the criteria in response to determining that the first data value contradicts and the second data value.
In some aspects, the techniques described herein relate to a system, wherein the at least one hardware processor is further configured to generate, on the graphical user interface, at least one option to correct the at least one data value.
In some aspects, the techniques described herein relate to a system, wherein the at least one hardware processor is further configured to: receive a second user input including at least one corrected data value to replace the at least one data value; validate whether the at least one corrected data value satisfies the criteria provided by the plurality of rules.
In some aspects, the techniques described herein relate to a system, wherein the at least one hardware processor is configured to: disable a payroll transaction in response to determining that the at least one data value does not satisfy the criteria.
In some aspects, the techniques described herein relate to a system, wherein the at least one hardware processor is configured to: enable a payroll transaction in response to determining that the at least one data value satisfies the criteria.
In some aspects, the techniques described herein relate to a system, wherein the at least one hardware processor is further configured to: receive, via the graphical user interface, a selection of the indication; and generate, on the graphical user interface, a view of the at least one data value with specific data values visually marked for not satisfying the criteria.
In some aspects, the techniques described herein relate to a system, wherein the first geographic location is a country and the geographic region is one or more continents.
In some aspects, the techniques described herein relate to a method for payroll data validation, including: receiving a first user input including at least one data value associated with an employee of a company, wherein the at least one data value is used to complete payroll transactions of the company in a first geographic location; while receiving the first user input, validating the at least one data value of the first user input in real-time by: determining a data type of the at least one data value; retrieving a plurality of localization rules associated with the data type and the first geographic location; and validating whether the at least one data value satisfies criteria provided by the plurality of localization rules; in response to determining that the at least one data value does not satisfy the criteria, generate, on a graphical user interface, an indication that the first user input requires review to complete the payroll transactions, wherein the graphical user interface displays a view of a geographical region and the indication is generated in a portion of the geographical region associated with the first geographic location.
In some aspects, the techniques described herein relate to a non-transitory computer readable medium storing thereon computer executable instructions for payroll data validation, including instructions for: receiving a first user input including at least one data value associated with an employee of a company, wherein the at least one data value is used to complete payroll transactions of the company in a first geographic location; while receiving the first user input, validating the at least one data value of the first user input in real-time by: determining a data type of the at least one data value; retrieving a plurality of localization rules associated with the data type and the first geographic location; and validating whether the at least one data value satisfies criteria provided by the plurality of localization rules; in response to determining that the at least one data value does not satisfy the criteria, generate, on a graphical user interface, an indication that the first user input requires review to complete the payroll transactions, wherein the graphical user interface displays a view of a geographical region and the indication is generated in a portion of the geographical region associated with the first geographic location.
The above simplified summary of example aspects serves to provide a basic understanding of the present disclosure. This summary is not an extensive overview of all contemplated aspects, and is intended to neither identify key or critical elements of all aspects nor delineate the scope of any or all aspects of the present disclosure. Its sole purpose is to present one or more aspects in a simplified form as a prelude to the more detailed description of the disclosure that follows. To the accomplishment of the foregoing, the one or more aspects of the present disclosure include the features described and exemplarily pointed out in the claims.
The accompanying drawings, which are incorporated into and constitute a part of this specification, illustrate one or more example aspects of the present disclosure and, together with the detailed description, serve to explain their principles and implementations.
Exemplary aspects are described herein in the context of a system, method, and computer program product for real-time payroll data validation. Those of ordinary skill in the art will realize that the following description is illustrative only and is not intended to be in any way limiting. Other aspects will readily suggest themselves to those skilled in the art having the benefit of this disclosure. Reference will now be made in detail to implementations of the example aspects as illustrated in the accompanying drawings. The same reference indicators will be used to the extent possible throughout the drawings and the following description to refer to the same or like items.
The systems and methods of the present disclosure describe real-time payroll data validation (also referred to as perpetual validation). Perpetual validation allows for instant validation of inputted payroll data by both systematic integrations and user inputs. Unlike traditional methods where validation is performed on delayed triggers and batches when a dataset submission is completed, perpetual validation involves applying validation and generating messages/errors in real-time as data is persisted into a database.
With the graphical user interface generated using perpetual validation, users can quickly identify data observations, warnings, and errors occurring in geographic locations around the world—with those data observations, warnings, and errors being specific to the local criteria of each geographic location.
Perpetual validation is unique from previous payroll transaction validation schemes for at least the following reasons:
By using perpetual validation, users of the platform may greatly increase the efficiency in processing payroll by quickly seeing data summary, navigating to errors, correcting them before approval for gross to net calculations. Overall, perpetual validation is designed to quickly help users see data problems via summary user interface elements, navigate through warning and errors (which can cause employees not getting paid) and correct them in the input interfaces. As mentioned before, because perpetual validation works in the first instance when data is inputted/ingested, it creates significant value in early detection of erroneous data so that errors can be corrected before downstream processing prevents employees from being be paid on time and computing reaches a bottleneck. It also warns integrations of potential data errors coming from HCM systems.
Computing device 102a may execute data collection module 104, which includes a user interface 106. User interface 106 may enable an employee to input information about themselves. For example, user interface 106 may be an interface of a web application, a standalone application, a website, etc. User interface 106 may request the employee to input various data values to build an employee profile. Data values include, but are not limited to, name, address, job title, a government-issued identification number, date of birth, marital status, number of dependents, and emergency contact.
Data collection module 104 may be configured to upload the inputs gathered via user interface 106 to a user input database 112. In particular, user input database 112 may be configured and access via perpetual validation module 108. It should be noted that user input database 112 may receive the data values from a plurality of computing devices belonging to different employees. Each data collection module 104 of a respective computing device may be connected to user input database 112 via a network (e.g., a local area network, a wide area network, etc.).
In some aspects, perpetual validation module 108 may be an application split into a thick and thin client application. The thick client application may access user input database 112 and perform validation. In some aspects, the thick client application may be executed on a remote server. The thin client application may receive validation results and generate user interface 126 on computing device 102b.
In an exemplary aspect, data parser 110 retrieves data in user input database 112. For example, perpetual validation module 108 may receive a first user input that includes at least one data value associated with an employee of a company. Suppose that the company is an international retailer that has multiple offices throughout the world. For example, the company may have an office in a country (e.g., France) and another office in a different country (e.g., United States). Suppose that the first user input is associated with an employee from the United States. Accordingly, the at least one data value may include a name, an address, a marital status, and a social security number. The data values may be: “John Doe” as the name, “123 John Doe St., New York 10021” as the address, “single” as the marital status, and “123-45-56789 as the social security number.” It should be noted that the following examples provided are highly simplified for the sake of brevity and understanding. For example, the amount of data values received per user input may be quite large despite only four data values being given in the example.
It should also be noted that rather than be divided into countries/offices, employees may be divided into different pay groups (i.e., a group of employees paid at the same time). Each of those employees may be part of the same office or different offices.
The purpose of gathering these data values is to complete payroll transactions of the company in a given geographic location (e.g., a country). For example, an employee may provide the data values in order to enable a payback deposit in his/her bank account. The payroll transaction may need the data values for identification purposes and to perform calculations of taxation, fees, credits, salary, benefits, etc. For example, the person may have a bi-weekly paycheck deposit of $2000 and based on the information provided in the data values, the company may be able to determine the amount of tax the person owes (e.g., using marital status).
Because a company may be spread out across multiple geographic locations (e.g., cities, towns, states, provinces, countries, continents, etc.), the guidelines for performing payroll transactions may be different depending on the location of the office that the employee works in. For example, the tax rules in the United Kingdom may be different than the tax laws in the United States. Similarly, certain identifiers such as a social security number may be required in one country (e.g., the United States), but not in other countries that utilize a different identification system (e.g., a social insurance number that is used in Canada).
In a conventional approach, a user input is received and validation is not performed until a threshold number of user inputs have been received or when validation is manually launched (e.g., right before performing payroll transactions). This delayed/batch approach is inefficient because it can cause many payroll transactions to get delayed if multiple errors are detected. On a technical level, when validation is performed in one batch, a greater amount of computational resources are expended by a computing device in a short period of time. If a company has several thousands of employees, these shortcomings are exacerbated.
Accordingly, the systems and methods of the present disclosure perform data validation in real-time. For example, when a user enters data values using user interface 106, data collection module 104 may immediately upload the values to user input database 112. Perpetual validation module 108 may detect that user input database 112 has been updated and may be begin validation on the new data values received.
In an exemplary aspect, while receiving user input 113, perpetual validation module 108 validates the at least one data value (e.g., data value 120) of user input 113 in real-time. This involves first determining a data type of the at least one data value. For example, user input 113 may be [John Doe; 123 John Doe St., New York 10021; single; 123-45-56789]. For each data value, data parser 110 may identify one or more data types 114. For example, data type 114a may be “social security number.” The icons for types name, address, marital status, etc., are not shown in
Each data type and geographic location may be linked to a plurality of localization rules 116. For example, rules 116a may be linked with data type 114a and the first geographic location (e.g., the location of the office or the residential location of the employee). Suppose that user input 113 is for an employee working in the United States. Rules 116a represent localization rule(s) associated with social security numbers in the United States.
It should be noted that the same data type may have different rules in different geographic locations. For example, data type 114b may also be social security number. However, if the geographic location is the United Kingdom, then data parser 110 retrieves rules 116b instead of rules 116a.
Localization rules establish certain criteria for a data value. For example, a rule may query the format of the data value. For example, a social security number is a 9-digit value that includes solely integers. Accordingly, one rule of rules 116a may indicate that the social security number must be nine digits. Other examples of localization rules may be: (1) the social security number cannot have symbols or letters; (2) the social security number should be formatted with 3 digits, followed by 2 digits, followed by 4 digits, (3) the social security number is only issued to persons that are citizens or permanent residents of the United States, etc.
From user input 113, data validation 118 may extract data value 120 (e.g., 123-45-56789) and assess the validity of the data value in view of the criteria of the plurality of localization rules 116a. For example, data validation component 118 may determine that the input social security number has 10-digits. Accordingly, data value 120 has an error 122. Suppose that in another data value, the employee indicated that he/she is not a citizen and is not a permanent resident. Based on the localization rules, this indicates that the employee should not have a social security number. Accordingly, the mere presence of the data value 120 would trigger an error. Errors 122 are provided to data review and rectification component 124, which generates and manages user interface 126.
In an exemplary aspects, data review and rectification component 124 generates, on user interface 126, an indication that the first user input requires review to complete the payroll transactions. In an exemplary aspects, user interface 126 displays a view of a geographical region and the indication is generated in a portion of the geographical region associated with the geographic location of the employee. In some aspects, the geographic location is a country and the geographic region is one or more continents.
User interface 126 depicts a plurality of indicators including validation indicator 204, error indicator 206, warning indicator 208, and observations indicator 210. When an employee provides a user input, perpetual validation module 108 validates the information and populates the indicators of use interface 126. For example, when an error is detected, the error count of error indicator 206 is incremented. When an error is resolved, the error count is decremented. As shown in
Validation indicator 204 is a marker generated on each geographic location associated with a given company. For example, a company may have 16 offices distributed over 16 countries. The employees from each office may provide data values for validation. In order to view the employee user inputs of a given geographic location, a user of map interface 202 may select validation indicator 204 of that geographic location.
In some aspects, validation indicator 204 may be represented by a shape such as a circle. In some aspects, validation indicator 204 may be color coded. For example, if a given office has more than a threshold amount of errors (e.g., 20% of entered data values), the indicator may be red. If a given office has less than the threshold amount of errors, the indicator may be green. Any number of visual effects (e.g., shading, textures, colors, etc.) and thresholds (e.g., 10%, 20%, etc.) can be applied to a validation indicator 204. The purpose is to allow the user to highlight the areas that are in immediate need of review.
For example, in
Invalid entry 404 is generated because the employee failed to provide a social security number, city of work location, and weekly working hours. These are marked as error fields 502. In addition, there is a warning generated because the employee failed to provide a state of work location. This is marked as warning field 504. In some aspects, the error fields are visually marked/highlighted by an error icon or a color associated with error (e.g., red). In some aspects, the warning fields are visually marked/highlighted by a warning icon or a color associated with error (e.g., yellow).
It should be noted that the interface shown in
While receiving the first user input, at 604, perpetual validation module 108 validates the at least one data value of the first user input in real-time. The validation at 604 includes steps 606, 608, and 610. At 606, perpetual validation module 108 determines a data type of the at least one data value. In some aspects, the data value may be accompanied by metadata that indicates the data type. For example, when the employee provides a data value such as their name, the field that he/she enters the name into in user interface 106 may be configured to receive a name. When stored in user input database 112, the name is stored in a column that includes a plurality of names. Accordingly, the metadata that accompanies each data value may include the data type under which the data value was either received via user interface 106 or stored in user input database 112. Suppose that data value 120 has a data type 114a.
At 608, perpetual validation module 108 retrieves a plurality of localization rules associated with the data type and the first geographic location. Rules 116a and rules 116b may be stored in a database of localization rules. Each rule may be tagged with a given data type and a given geographic location. When identifying the rules to retrieve, perpetual validation module 108 may search the database for rules that have both the data type tag and geographic location tag associated with data value 120. For example, rules 116a may each be tagged with data type 114a and the United States.
At 610, perpetual validation module 108 determines whether the at least one date value satisfies the criteria (i.e., validates whether the at least one data value satisfies criteria provided by the plurality of localization rules). The plurality of localization rules make up criteria that dictates whether a data value is entered correctly and can be used to process payroll transactions.
In some aspects, the at least one data value comprises a first data value and a second data value. For example, the first data value may indicate that the employee lives in the state of New York and the second data value may indicate that the employee's residential street address is 9999 John St. Perpetual validation module 108 may determine that the at least one data value does not satisfy the criteria in response to determining that the first data value contradicts and the second data value. For example, perpetual validation module 108 may determine that 9999 John St. does not exist in the state of New York.
In another example, the first data value may indicate that the employee has a job title such as “CEO” and the second data value may indicate that the employee is a part-time worker or a person paid hourly. The localization rules may indicate that a CEO must be full-time. Accordingly, the first data value contradicts with the second data value.
In yet another example, the first data value may indicate that employee has a bachelors degree and the second data value may indicate that the last education institution attended by the person is a high school. A localization rule may indicate that a bachelors degree requires the last attended education institution to be a college or a university. Accordingly, the first data value contradicts with the second data value.
In some aspects, the at least one data value is a national identification number of the employee. Foe example, the national identification number may be one of a passport number, a social security number, a driver license number, etc. Perpetual validation module 108 may determine that the at least one data value does not satisfy the criteria of rules 116a by determining that the national identification number has an invalid format. For example, the social security number may be a 9-digit number and the employee may have left the field blank, may have entered one too many or one too few digits via user interface 106. In another case, perpetual validation module 108 may determine that the at least one other data value satisfies criteria of a different plurality of localization rules (e.g., rules 116b) based on determining that the national identification number is not required to complete the payroll transactions. For example, in the United Kingdom, a social security number may not be necessary and may be replaced with a different national identification number. If the employee is a dual citizen in multiple countries, his/her entry for one geographic location may not affect his/her entry for a different geographic location.
In response to determining that the at least one data value does not satisfy the criteria, method 600 advances to 612, where perpetual validation module 108 generates, on a graphical user interface, an indication that the first user input requires review to complete the payroll transactions, wherein the graphical user interface displays a view of a geographical region and the indication is generated in a portion of the geographical region associated with the first geographic location.
In some aspects, determine an amount of the criteria that the at least one data value satisfies, wherein the indication generated on the graphical user interface is a visual marker that depicts the amount of the criteria that the at least one data value satisfies.
In response to determining that the at least one data value does satisfy the criteria, method 600 advances from 610 to 614, where perpetual validation module 108 generates, on a graphical user interface, an indication that the first user input is valid.
At 704, perpetual validation module 108 receives a second user input comprising at least one corrected data value to replace the at least one data value. For example, the user may enter a corrected social security number and fill the remaining error fields 502 and warning field 504.
At 706, perpetual validation module 108 validates whether the at least one corrected data value satisfies the criteria provided by the plurality of rules. For example, perpetual validation module 108 may determine whether the corrected social security number meets the rules associated with social security number criteria.
Alternatively, in response to determining that the at least one data value does satisfy the criteria, perpetual validation module 108 may execute step 614 and 904, where perpetual validation module 108 enables a payroll transaction for the employee.
As shown, the computer system 20 includes a central processing unit (CPU) 21, a system memory 22, and a system bus 23 connecting the various system components, including the memory associated with the central processing unit 21. The system bus 23 may comprise a bus memory or bus memory controller, a peripheral bus, and a local bus that is able to interact with any other bus architecture. Examples of the buses may include PCI, ISA, PCI-Express, HyperTransport™, InfiniBand™, Serial ATA, I2C, and other suitable interconnects. The central processing unit 21 (also referred to as a processor) can include a single or multiple sets of processors having single or multiple cores. The processor 21 may execute one or more computer-executable code implementing the techniques of the present disclosure. For example, any of commands/steps discussed in
The computer system 20 may include one or more storage devices such as one or more removable storage devices 27, one or more non-removable storage devices 28, or a combination thereof. The one or more removable storage devices 27 and non-removable storage devices 28 are connected to the system bus 23 via a storage interface 32. In an aspect, the storage devices and the corresponding computer-readable storage media are power-independent modules for the storage of computer instructions, data structures, program modules, and other data of the computer system 20. The system memory 22, removable storage devices 27, and non-removable storage devices 28 may use a variety of computer-readable storage media. Examples of computer-readable storage media include machine memory such as cache, SRAM, DRAM, zero capacitor RAM, twin transistor RAM, eDRAM, EDO RAM, DDR RAM, EEPROM, NRAM, RRAM, SONOS, PRAM; flash memory or other memory technology such as in solid state drives (SSDs) or flash drives; magnetic cassettes, magnetic tape, and magnetic disk storage such as in hard disk drives or floppy disks; optical storage such as in compact disks (CD-ROM) or digital versatile disks (DVDs); and any other medium which may be used to store the desired data and which can be accessed by the computer system 20.
The system memory 22, removable storage devices 27, and non-removable storage devices 28 of the computer system 20 may be used to store an operating system 35, additional program applications 37, other program modules 38, and program data 39. The computer system 20 may include a peripheral interface 46 for communicating data from input devices 40, such as a keyboard, mouse, stylus, game controller, voice input device, touch input device, or other peripheral devices, such as a printer or scanner via one or more I/O ports, such as a serial port, a parallel port, a universal serial bus (USB), or other peripheral interface. A display device 47 such as one or more monitors, projectors, or integrated display, may also be connected to the system bus 23 across an output interface 48, such as a video adapter. In addition to the display devices 47, the computer system 20 may be equipped with other peripheral output devices (not shown), such as loudspeakers and other audiovisual devices.
The computer system 20 may operate in a network environment, using a network connection to one or more remote computers 49. The remote computer (or computers) 49 may be local computer workstations or servers comprising most or all of the aforementioned elements in describing the nature of a computer system 20. Other devices may also be present in the computer network, such as, but not limited to, routers, network stations, peer devices or other network nodes. The computer system 20 may include one or more network interfaces 51 or network adapters for communicating with the remote computers 49 via one or more networks such as a local-area computer network (LAN) 50, a wide-area computer network (WAN), an intranet, and the Internet. Examples of the network interface 51 may include an Ethernet interface, a Frame Relay interface, SONET interface, and wireless interfaces.
Aspects of the present disclosure may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure.
The computer readable storage medium can be a tangible device that can retain and store program code in the form of instructions or data structures that can be accessed by a processor of a computing device, such as the computing system 20. The computer readable storage medium may be an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. By way of example, such computer-readable storage medium can comprise a random access memory (RAM), a read-only memory (ROM), EEPROM, a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), flash memory, a hard disk, a portable computer diskette, a memory stick, a floppy disk, or even a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon. As used herein, a computer readable storage medium is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or transmission media, or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network interface in each computing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing device.
Computer readable program instructions for carrying out operations of the present disclosure may be assembly instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language, and conventional procedural programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a LAN or WAN, or the connection may be made to an external computer (for example, through the Internet). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure.
In various aspects, the systems and methods described in the present disclosure can be addressed in terms of modules. The term “module” as used herein refers to a real-world device, component, or arrangement of components implemented using hardware, such as by an application specific integrated circuit (ASIC) or FPGA, for example, or as a combination of hardware and software, such as by a microprocessor system and a set of instructions to implement the module's functionality, which (while being executed) transform the microprocessor system into a special-purpose device. A module may also be implemented as a combination of the two, with certain functions facilitated by hardware alone, and other functions facilitated by a combination of hardware and software. In certain implementations, at least a portion, and in some cases, all, of a module may be executed on the processor of a computer system. Accordingly, each module may be realized in a variety of suitable configurations, and should not be limited to any particular implementation exemplified herein.
In the interest of clarity, not all of the routine features of the aspects are disclosed herein. It would be appreciated that in the development of any actual implementation of the present disclosure, numerous implementation-specific decisions must be made in order to achieve the developer's specific goals, and these specific goals will vary for different implementations and different developers. It is understood that such a development effort might be complex and time-consuming, but would nevertheless be a routine undertaking of engineering for those of ordinary skill in the art, having the benefit of this disclosure.
Furthermore, it is to be understood that the phraseology or terminology used herein is for the purpose of description and not of restriction, such that the terminology or phraseology of the present specification is to be interpreted by the skilled in the art in light of the teachings and guidance presented herein, in combination with the knowledge of those skilled in the relevant art(s). Moreover, it is not intended for any term in the specification or claims to be ascribed an uncommon or special meaning unless explicitly set forth as such.
The various aspects disclosed herein encompass present and future known equivalents to the known modules referred to herein by way of illustration. Moreover, while aspects and applications have been shown and described, it would be apparent to those skilled in the art having the benefit of this disclosure that many more modifications than mentioned above are possible without departing from the inventive concepts disclosed herein.