08-09-2016, 11:11 AM
1453777457-projectreport.pdf (Size: 641.45 KB / Downloads: 111)
ABSTRACT
Project Objectives
The Software engineering course that we took this semester placed emphasis on the paradigm of
eXtreme Programming (XP) techniques. Extreme programming is a programming technique that
bases its values on simplicity, communication, feedback and courage. It encourages team work and
constant communication with the client. The objective of this project is to put into practice the
teachings that we have learnt about XP.
Approach
When we were first given this project, we met to determine how we were to carry out the task
assigned to us. We drew up a time-line, discussed about the programming language to use to carry
out the task, how the GUI would look like and also to make sure that we understood what was
assigned to us. We finally settled for Visual Basic (VB) as our programming language. We got more
information on what we were to do and set about completing our task, making use of the new ideas
taught in class, and especially spikes.
Achievement
Our task was to develop a payroll system that would keep a record of employee data including their
pension plan, union membership status, and taxes and also to be able to calculate the pay of the
employees taking into consideration employee data. We have been able to achieve these task. The
software we developed calculates the employee net pay from the deductions. The payslip can be
printed out as a receipt. Most of the bugs that we found and those that the clients and beta users
found have been corrected. Any new bugs found will also be corrected and the software will be
updated and released. Because we used object-oriented principles, modifying the software to fix bugs
or add a new feature has been relatively easy.
Definition of Problem
In XP, the user story serves the purpose of the problem statement and the specifications. The user
story provided by the client was as follows:
“You are to design and implement a payroll system that should accept employee hours
worked, compute net pay and record all the payroll data for subsequent processing. The
system should prepare pay cheques and a payroll ledger, and maintain data on a sequential
payroll file. Non-statutory deductions such as union dues and pension plans to be made.
“The payroll data are employee number, employee name, pay rate, and union member flag.
The year-to-date total should contain earnings, federal tax, pension plan, and union dues”
To accomplish these tasks, we had to meet with the client to find out exactly what the program is
meant to do. Here are the sub stories that we were able to get from the client:
The program accepts employee hours worked
The program computes net pay
The program record all the payroll data for subsequent processing
The program should prepare pay cheques
The program should prepare a payroll ledger
The program should maintain data on a sequential payroll file
Non-statutory deductions such as union dues and pension plans to be made
Year-to-date total should contain earnings, federal tax, pension plan, and union dues
Payroll data are employee number, employee name, pay rate, and union member flag
1.2 Terminology Definition
This section gives a definition and explanation of some of the terms used in the project:
Employee Data: This is the employee's information in the company. It consists of the employee
identification number, employee name, pay rate, pension plan flag, and union member flag.
Payroll Records: The payroll records are used to store each month’s hours worked, and the rates for
that month.
Rates: Rates consists of the percentage that would be deducted from the gross pay depending on
union membership status, pension plan, state and federal tax. Each employee can have a unique
hourly rate.
Payroll Ledger: This is a table that shows the calculated pay of employees and the month in which
they earned the pay. The ledger can be filtered by name, identification number, year and month.
Hours Worked: This is the number of times that an employee work in a month. The hours worked is
used to calculate the pay that an employee will receive for that month.
Net Pay: The net pay is the final salary amount that would be given to the employee after all the
deductions are subtracted from the gross pay. The deductions include among others taxes, union
member dues and pension plan.
Gross Pay: The gross pay is the amount that the employee earns before the deductions are
subtracted.
Deductions: Deductions are made up of taxes, union membership dues, pension plan. They are
subtracted from the gross pay to give the net pay which is the employee's final pay for the month.
Taxes: The taxes consists of the state dues and federal dues. A percentage of the employee's salary
goes to state and country.
Union Membership Dues: This is meant for employee's that are union workers in the company.
They get to pay a percentage for union dues. An employee can be a union member and later change
status to be a non-union member.
Pension Plan: Employees that opted to use the pension plan of the company get to pay a particular
percentage of their pay in preparation for their retirement.
Payslip: These are similar to pay cheques. They allow the employee to have his or her pay printed
out on paper so that they can cash it.
Year-To-Date Total: The year-to-date total is the summation of all the previous earnings till the
month before the current month.
1.3 Definition of Project Objectives
The purpose of this project is to put into practice what we have learnt so far in our software
engineering class. We spent most of the semester studying extreme programming. With extreme
programming, the client knows how far he or her software is coming and knows what to except at
one particular time or the other. The software is built exactly the way the client wants it to be built.
1.4 Project Deliverables
We met with our client on a few occasions to show our progress so far. In the long run, showing the
client part of the finished product in stages helped. There were a few things he brought to our
understanding and we were able to change those things. If we had waited till we finished the coding,
we would have found it really difficult to correct the errors we found in such a short time.
The graphical user interface was acceptable to the client at this stage even though he thought we
could improve on it with a little more time. From our project deliverables, the client was able to
bring to our understanding that the employees should have different pay rates and that it would be
safe (for record purposes) to calculate the employee's year-to-data total salary earnings. These
observations were later incorporated into the final deliverable.
Project Plan
At the beginning of the project, we scheduled meeting time for the group to discuss on the design
and implementation of the software and what language to use in writing the software. We had several
meetings to this effect. When then developed a time-line for the project–when we would be releasing
the first version for scrutiny and the estimated time we thought we would use for refactoring. We also
pondered on a suitable name to give the project. We came up with the name “Piccolo” but it was later
changed to “Payroll System” after our meeting with our client.
The group was then divided into two pairs that would work on parts of the code. We kept in touch
with each other and whenever we had difficulties, we asked each other questions. On some
occasions, we had to pretend we were the customer so as to try to figure out some of the things that
user would desire, such as the friendliness of the user interface and ease of navigation through the
software. We also created a blog so that we could communicate with each other, and also so that our
client could track our progress http://project2.wordpress.com
When we discovered that we were behind schedule, we met to create a new time-line. We were
behind schedule mostly because of our different engagements in school work and other personal
issues. Fortunately for the team, we were able to stick to the new time-line and the project was
completed in due time.
After the major part of the code was completed, we went ahead to lace the code, that is, adding
exception handlers which will make the software more robust. We avoided this at the beginning
because we did not want to get confused with too many lines of code.
The version of the software that has been released can still be improved depending on user response.
So far, we have succeeded in completing the desired goal of from the user stories given to us. The
beta software has been released about three times and we have been able to get good ideas from the
various users on how to improve the functionality, reliability and robustness of the software.
An Introduction to the methods and techniques adopted
within the design
The software was built using Visual Basic and it can run on computers that have the .NET
Framework installed. We divided the whole project into five main modules: employee data, payroll
records, rates, ledger and help.
When a data is saved, the data gets written into an XML file. Keeping in line with making the
software platform-independent, XML is also a highly platform-independent format for storing data.
This is where all the data of the employee is stored, along with each month’s payroll data for the
employee. There is also a separate XML file for storing current rates. For an employee data or
payroll data to be saved to the file, it has to be serialized. Getting any data from the file will require
the data to first be deserialized before it can be used. Serialization and deserialization helped make
the data storage very simple.
We also used the object-oriented paradigm to code and organize our program. This ensured code
reuse, and efficient updating of the code later on.