Report Sample Over 70%
Report Sample Over 70%
TRIMESTER 2 2021
SID:
Contents
1 - Introduction........................................................................................................................................2
1.2 - Resources:....................................................................................................................................3
2 - Literature Review...............................................................................................................................6
3 - Software Design.................................................................................................................................8
As an interviewer I want to be able to log in so that I can access the system securely................18
As an interviewer I want to be able to see from the home page the list of vacancies, the list
should tell me if I need to create a template or if I need to complete feedback for a vacancy......21
5 - Testing..............................................................................................................................................26
6 - Conclusions......................................................................................................................................28
6.1 - Advantages................................................................................................................................28
6.2 - Limitations.................................................................................................................................28
7 - References........................................................................................................................................30
1 - Introduction
A successful project aims to create an easy to use web application that allows the company
recruitment.
The application should create a standard template to provide feedback to all applicants. This
template will include information regarding the person the feedback is for, details of who is
Once created, the user will then use checkboxes and radio buttons to provide feedback. There
will also be an option to have a text box to provide specific feedback. This stage requires an
Once all feedback is collated, it should be saved as a PDF file, using the applicant’s name.
Once the interview process has been completed, all feedback sends automatically.
The project involves working incrementally towards the target, prioritising the tasks by
importance. Working collaboratively is valued, with the belief that working together on
The scope of the project is within this module, not for commercial use. Risks include the
project not being completed on time and errors in the code not being spotted.
1.2 - Resources:
All team members are responsible for managing and completing the project. The team
members will communicate via Outlook and Microsoft Teams. The team will look to Cristina
GitHub
Microsoft Publisher
Codecademy
W3 Schools Website
Coolors Website
A team meeting will be held every Thursday 2pm - 4pm. This meeting will consist of a
progress review from the previous week, setting aims for next session, along with client
A mid-week review of progress will be carried out every Monday at 7pm. This meeting will
review the progress for that week and allow for any issues to be resolved.
Frequent communication between these meetings will be maintained to ensure that the
workload is correctly managed and that team members can access help and support from the
As an interviewer I want to be able to login so that I can access the system securely.
As an interviewer I want to be able to see from the home page the list of vacancies,
the list should tell me if I need to create a template or if I need to complete feedback
for a vacancy.
As an interviewer I want to be able to select the name of the interviewer and candidate
As an interviewer I want to add custom feedback options with the possibility to delete
them so that I can customize the feedback form for every vacancy.
As an interviewer I want to be brought back to the home page when I save a template
so that I can quickly move on to creating the next template/see all vacancies and their
templates.
feedback from.
candidates.
As an interviewer I want to be able to retrieve and edit the feedback during the review
before submitting.
once.
2 - Literature Review
Dynamic HR web applications can massively reduce labour costs. Typeform1 is a customer
feedback tool. It puts surveys together, allowing the user to add questions and choose
templates. This site is user-friendly and runs smoothly. The questions, once answered by the
intended flows away and onto the next question. Whilst this is stylistically appealing, it does
not allow the user to go back and edit any answers to the questions. Another example,
15Five2 is an employee engagement survey platform. Managers are able to create custom
questions, set reviewers & employees, whilst allowing answers to be sent to other people.
The customisable questions afford the user flexibility. Promoter.io3 demonstrates an easy to
use navigation panel to the left of the main information. The main information contains
previously saved information and advises statistics regarding the information stored.
DocuSign similarly has a navigation panel to the left hand side, and a similar layout for the
main information stored on the right. You are able to manage these items, and see when it
There was not an exact example of the program this paper will build, but taking useful
features from the above listed resources may be useful. Additionally, being able to re-visit
any questions or templates to edit them in the future could be useful for a user.
3 - Software Design
The wireframe contains two parts, the first page to create a template and the second page uses
this created template to allow the user to create feedback and save it as a PDF file.
The first page contains a header. This header shows the user that they are in the create
template stage. There are two drop down menus, one which will feed in the vacancies from
the database and allow the user to select which job they are reviewing candidates for. A
second drop down menu allows the feedback-provider to select their own name. This list is
pre-populated using the database of staff. Next to these options is a set of three radio buttons,
allowing the user to select what is being reviewed, either a CV, interview or technical
interview.
In the main content box there is a section for standard feedback options. This includes tick
boxes allowing the user to select what they wish to comment on. If, for example, the user
selects qualifications, in the next stage the user will be presented with two YES or NO
options in the feedback form to display the corresponding text, either ‘You have the required
qualifications for this role’ or ‘you do not have the required qualifications for this role’.
There is an option for custom feedback. The user will be able to click the ‘add’ button and be
presented with a text box that allows them to write in custom feedback. This will also
Finally at the bottom, there are two buttons to save and delete the template.
The second page the user sees is the feedback page. The header contains a drop down menu
In the main body of the feedback form, the standard options selected via the tick boxes at the
template stage have appeared. There are radio buttons, YES and NO. Dependant on what the
user selects, text will generate next to this option, displaying a sample of the message sent to
the candidate.
Underneath the standard options are the custom options created in the previous page. The
user will then select the appropriate response via tick boxes. There is a free text box
There are radio buttons at the bottom of the page, allowing the user to select which action
they want for the next step, telephone interview, technical interview etc.
Finally, buttons allow the user to save the feedback, reset the feedback, preview and edit the
template. If the user selects ‘edit template’, they are taken back to the previous creation page
be broadly split into three functionalities to reflect the flow of the program:
The database needs to store users of the software, also a list of vacancies and the respective
The table users stores a user’s username & password needed to access the system. The
primary key is the UserID, and this table is linked to the feedback table, this is a one-to-
many relationship. This is used to show the logged in user the list of all feedback they have
generated.
The candidates table contains the Primary Key of CandidateID which is linked to the
application table via a one-to-one relationship. The purpose of this table is to register
application and templates via a one-to-many relationship. The purpose of this table is to
store the list of vacancies on the database, and enable the gathering at runtime of linked
The table templates has a primary key of TemplateID and is linked to vacancies via a one-
to-one relationship, and feedback and comments as one-to-many. The comments table
allows custom comments stored in the database to be linked to a TemplateID. This template
Finally the database will store feedback and provide the feedback to candidates.
The table feedback has the primary key of FeedbackID. This table stores the feedback and
which application and candidates it applies to. It is linked to the tables; application, users,
The table feedbackcomments, stores free form comments entered onto the template at the
stage of completing the feedback. This has a primary key of FCID and is linked via a one-to-
one candidate. It is then used when generating the preview page, and subsequently emailing
the feedback to candidates. It has the primary key of FileId, however it is linked to the table
As an interviewer I want to be able to log in so that I can access the system securely.
Design – For the front end I used a simple login page from W3Schools4. To login a user
would be provided with a username and password, which is stored in the database in the users
table. Aside from the standard styling with .css elements, the login page included styling for
the colour of the login button and the submission form. The colour palette was provided by
coolors5
Implementation –
Core Files:
login.php
loginbackend.php
nav.php
createtemplatefail.php
feedbackfail.php
When the user arrives on any page with protected access, a php script will check if session
variables have been set for their username. These session variables can only be set via the
login page when a login has been completed successfully. In the event that no session
variable has been set for the user they will instead be presented with a message advising them
to login.
The page login.php provides a form for users to provide their login information to. This is a
html form with two text inputs, username and password. It also has a submit button which
The page loginbackend.php is where user credentials are verified, it creates a connection to
the backend mySQL database using PDO. PDO is the preferred connection over mySQLi –
using PDO means that only a few lines of code will have to be changed if another database
needs to be used, as opposed to a full rewrite if mySQLi were to be used. The username that
was posted from the login form in login.php is used as a query to select rows from the users
database table. The first error case is that the username cannot be found in the users table. If
this occurs, the user is informed that their username was not found and is redirected to
Passwords stored in the users table are all hashed using the default password_hash(). Doing
this prevents the user from having their passwords stolen in the event of a security breach.
The password_verify function in php takes a raw text password as an input, hashes it with
password_hash function and compares it to the hash of password retrieved from elsewhere. If
it evaluates to true, this means that the hash of the raw text password and the saved hash
password match.
If the user logs in successfully, two session variables will be set (Username, LoggedIn).
Other restricted access pages can then check these variables to see if the user should be
allowed to access their content. If password doesn’t match, the user is redirected to the login
same time, the script nav.php will always check if a session has been started for that page and
As an interviewer I want to be able to see from the home page the list of vacancies, the list
should tell me if I need to create a template or if I need to complete feedback for a vacancy.
Design – Once logged in a user will be presented with a list of vacancies that are stored in the
database in the table ‘vacancies’. The user will be able to see from looking at this list which
vacancies have a template created, and which do not. Buttons will show asking the user to
either create a template, or to complete feedback for a vacancy. The table is generated from
the database, checking if a vacancy has a corresponding template in the table ‘template’. This
page was created to make it easy for the user to see what they needed to do when logging in.
Implementation –
Core Files:
index.php
IDX_delete_template.php
IDX_generatetable.php
Index.php is the default page for a logged in user. The dynamically generated table will only
be generated if the user arrives at this page after having logged in successfully. This is
ensured by wrapping the database access and html creation functions in an if statement which
information (getVacancyData()) and the second generates HTML to represent that data
(echoTableHTML()).
The first part of the function involves preparing two mySQL statements. The first is a simple
query to retrieve every row from the vacancies table. The second query is a conditional
statement for selecting rows from the templates table. The condition selected upon is the
VacancyID. A dynamic parameter is used for VacancyID so that arbitrary values can be
provided to the statement when it is executed. The function then initialises three arrays which
contained code block will execute. The main loop is a while loop which fetches individual
rows from the vacancies table and continues to loop conditionally upon the successful
retrieval of the next row. For each row that is retrieved, the VacancyID that it contains will be
provided to the prepared template query as its dynamic parameter. This query will then be
requested to fetch a matching row from the templates table. Since the relationship between
templates and vacancies is one-to-one no code is needed for a case when multiple rows are
returned. If a vacancy row was successfully retrieved we append a ‘true’ value to the $found
array, the TemplateID to the $templateIDs array, in addition to the entire vacancy row which
was appended to the $vacancies array at the start of the loop. If a corresponding template was
not found, a ‘false’ value is appended to the $found array and a -1 value is appended to the
$templateIDs array. Appending to all three arrays each time the loop executes guarantees
each index position in all three arrays will always point to the same template/vacancy
combination. These three arrays are added to an array themselves to be returned as php does
recover the three arrays populated in the database access function. The function then creates
the static part of the HTML table which is it’s header row.
A for loop is used to iterate through the three arrays. Since the arrays all have the same
length, the same value ($x) can be used to index all of them. Each row in the table consists of
two parts, the first part, consists of three columns with data from the vacancies table. A table
row (<tr>) is generated containing the three variables retrieved from the current row that was
whether or not a corresponding template was retrieved for that vacancy. The php script
generates two sets of buttons, wrapped in HTML forms. $buttons1 is displayed if a template
is found in the database, indicating to the user to complete feedback. It contains two forms,
the first form posts to feedback.php, and the second posts to IDX_delete_template.php. These
are the destinations for the ‘Complete Feedback’ and ‘Delete Template’ buttons respectively.
These forms also contain hidden fields which are provided with the current respective
$buttons2 is displayed if no template is found and prompts the user to create a template.
Similar to the previous, a form posts to createtemplate_main.php. However, in this case since
no template exists, the vacancyID is posted so one can be created for it.
Finally, an if statement evaluates whether or not a template row was retrieved for this
vacancy using the $found array. This logic controls whether or not buttons 1 or 2 gets echoed
No password
Incorrect password
Correct Password
Correct Password
change
database
Select radio buttons for stage Allows user to select stage PASS
commenting on
Tick box for pre-populated Tick boxes for pre-populated radio PASS
populate feedback
feedback – YES
feedback – NO
6.1 - Advantages
data and is easily queried. In addition, relational database designs can be visualised
and modified quickly with the current range of mySQL tools. All information is
divided into appropriate manageable tables. Key matching between tables enables a
The application makes it easy to see if the user is logged in or logged out, by checking
session variables have been set before displaying data on the each page. If they do not
6.2 - Limitations
With regard to the original brief set by the customer, the program is unable to email
feedback automatically to applicants. Whilst the program can generate a PDF, which
can then be saved and then emailed to candidates, it would have been preferable and
user friendly to have a button after the preview screen to allow the user to email this
PDF to an applicant, providing the automated feedback. This could be achieved using
Once a user logs in they remain logged in until they choose to logout. This is
dangerous as this could make to program vulnerable to attack. This could be rectified
After initial implementation, the testing phase was slow due to imprecise definitions
the team’s development efforts here. Performing manual testing is time consuming
and not as reliable, as there is no way to consistently perform the same tasks required
to test the full functionality of the program. Whilst manual testing is easier and better
for UI testing, it would have been preferable to write automated tests before building
the application, as this would have made testing compatibility of new features easier
The application is not compatible with all browsers, the program was not tested on
Safari, and Chrome displays an error when the password is entered. The password is
hashed, allowing the user to enter ‘Password1’ but as this is such a vulnerable and
common password Chrome displays a message stating that the user’s login details
have been compromised. The application runs smoothly without any errors on
Microsoft Edge and Opera. For further improvement, work could be done to ensure
commonplace.
The structure of the application could be easier to use. Rather than navigating through
several different pages, it may be easier for all of the interaction to take place from a
more modern ‘single-page’ webapp, which frameworks like React and Angular
facilitate. Currently, a user is presented with a navigation panel and then has to click
to different pages, and then back to the home page. It would be better for the user to
be presented with the navigation panel, have the forms they wish to use ‘pop-up’
when clicked on from the navigation panel. Once all data is saved the pop-up would
then disappear. This would be a better alternative as it would stop the user having to
navigate continuously.
7 - References
1
Typeform.com [online] available at > https://www.typeform.com/product/ [accessed 19/02/2021]
2
15five.com [online] available at > https://www.15five.com/ [accessed 19/02/2021]
3
Promoter.io [online] available at > https://www.promoter.io/ [accessed 19/02/2021]
4
W3Schools [online] available at > https://www.w3schools.com/howto/howto_css_login_form.asp [accessed 24/03/2021]
5
Coolors [online] available at > https://coolors.co/f4f1de-e07a5f-3d405b-81b29a-f2cc8f [accessed 24/03/2021]