1. Jericho Project Overview
By Jaco Koekemoer
Date: 2017-01-03
I started with development on a private, brand new, web application project for a client in
the property industry. I performed the following activities on the project:
Requirements gathering from the client though various face-to-face meetings.
Systems analysis and design using UML, which involved identifying system use cases
using UML use case diagram, identifying and designing use case activity sequences using
UML sequence diagram, and identifying and designing domain and business objects using
UML class diagrams.
Systems development was then performed using the following technologies:
• PHP and the Laravel PHP web framework
• MYSQL database
• Ubuntu Linux environment
• PHPUnit for unit testing
• GIT for version control, and using Github as an online code repository
As part of the development process, unit tests was also developed in order to ensure
system quality.
The system that I designed and developed includes the following features:
• Role-based authentication: I defined roles in the system, together with
permissions, then assigned permissions to certain roles, in order to ensure
progressive access to functionality in the system. Users are then assigned to roles,
which provides a user access to all permissions for a role.
• CRUD (Create, Read, Update, Delete): The main purpose of the system was to
enable the client to capture, update and search for important data, and to perform
reporting on the data. A PHP library for creating PDFs was used for creating the
reports. The functional requirements of the system are mostly fulfilled using CRUD
operations.
• Auditing: I also built in auditing functionality into the system at different levels.
When a record in the database is created or updated, the current user and current
date/time is also stored in the affected table. A seperate table is also used for
storing any changes to the data in the database. A Laravel PHP library was used for
this purpose.
• Bugtracking Component: A component for tracking bugs was built into the system,
to allow users to report any bugs they find in the system. The user can assign bugs
to a developer, who will then fix and reply with a comment in the component.
• User management: Users are able to register in the system, as well as change
passwords. A component for managing users by an administrator was also created.
• Security: Security measures that I catered for in the system includes authentication
with strong, encrypted passwords, an SSL certificate, roles and permissions. The
Laravel framework also covers security for common cyber attacks.
• Global Error page: A n error page for displaying global errors in the system was
also built. As far as possible, bugs are identified using unit testing.
• Pagination: The Laravel framework makes provision for pagination in the system,
in order to ensure that large search results are properly managed and displayed in
2. the system.
• Lookups: The system was made fully configurable in terms of lookup data that are
displayed in dropdown boxes. An administrator user is able to manage data for
most dropdown boxes in the system.
• Diary Component: As part of user requirements, I built in a component for diarising
items in the system. A user is able to set the item to be followed up on a certain
date and time. On the date of followup, the user can then add comments, and
rediarise, or close the diary item. On the user's home page, all open diary items can
be viewed, categorised past, present and future.
Docker
I also researched containerisation for this project. I set up my development enviroment by
running the database in one docker container, and runing the webserver inside an Ubuntu
image in a separate container. I must say that I do not have experience in running systems
in a production environment using Docker containerisation technology yet.
Conclusion
My drive for learning new technology is demonstrated by the fact that I took some time,
about a week, to first learn the Laravel webframework, before I started development on the
project. The project also required constant technology research, as I progressed through
the development phase, such as, setting up an SSL certificate, learning the Ubuntu
operating system, Docker containerisation. All research was done online, however, I also
sought advice from for experience contacts in the software development industry.