payroll system. The following functional capabilities represent only some of the tasks a
payroll system should be able to perform. This list is far short of what a real payroll system
would need.
n
Add, modify, and delete the names and associated personal information of all employ-
ees.
n
Add, modify, and delete all the benefits associated with all employees.
n
Add, modify, and delete all the tax and other deductions associated with all employ-
ees.
n
Add, modify, and delete all the gross income associated with all employees.
n
Add, modify, and delete all the algorithms related to computing the net pay for each
employee.
n
Generate a paper check or an electronic direct bank deposit for each employee.
Each of these functional requirements may be expanded to several levels of more
details. For example, just for the first item of names and associated personal information,
one would need to understand what the associated information is. This is a simple ques-
tion, but would require the software engineer to solicit the input for this. Where and who
would the software engineer ask? Should the software engineer ask the users, some desig-
nated official requirements person, or the project leader? Once the question is answered,
should the answer be documented? The next functional requirement in the preceding list
speaks to all the benefits. What are all the benefits? What does having a benefit mean to an
employee’s payroll? Is there a list of all possible benefits? It does not take much to realize
that the requirements solicitation, gathering, documentation, analysis, and validation of a
payroll system will need a considerable effort. In order to properly handle the application
side of the payroll system requirement, we may need to understand something about
benefits, tax laws, and other domain-specific knowledge.
In addition, the payroll system must be able to generate the paychecks and direct
deposits several times a month. What is the allowable payroll cycle? In other words, if
the checks and deposits must be completed by the middle and end of the month, when
must the inputs to the cycle, such as salary increase, be closed? Here we are interested in
understanding the payroll-processing-cycle window that is allowable within the business
environment and what performance capability the system must have to satisfy that pro-
cessing window. The answer to this question will require the software engineer to know
the volume of payroll transactions and the speed of processing each payroll transaction.
To analyze and handle this type of requirement, we may need to know the hardware and
operating system environment capability on top of which the payroll system will be run-
ning. Some of the payroll system requirements will require, in addition to payroll domain
knowledge, the knowledge of technical system and interface information.
There also needs to be an understanding of how the actual payroll run process works
at the user/customer site. For example, if there is a bad record, how should that person’s
paycheck be reprocessed? Does this imply that there is a requirement to rerun the pay-
roll system several times? There may also be some requirements that the users/custom-
ers may not even remember to provide. In Chapter 6 we discuss how we may handle
these late requirements.
Once the requirements information of a payroll system is documented, the complex-
ity of such a system will most likely necessitate a review with the users/customers prior to
2.2 Building a Hypothetical System
31
91998_CH02_Tsui.indd 31 1/5/13 6:57:59 AM