COMP1610 Programming Enterprise Components Practical
Programming Enterprise Components – Practical
University of Greenwich
COMP1610 Programming Enterprise Components Practical
Assessment No: 1
COMP1610|Programming Enterprise Components
Student’s Score cards
This assignment consists of two parts:
- Part A will be completed in a group
- Part B must be completed individually
Please read the entire specification before starting your work.
Holiday Booking System
You have been approached by a construction company called Straight Walls Ltd to develop a holiday booking system. The company gives all of its employees a number of days of holiday entitlement per year, but the company has found it difficult to continue functioning properly at times when staff are on leave. The company relies on a variety of skills in their daily operations. This is aggravated by the fact that staff often go on leave at similar times of the year and the company is wondering how it can ensure that it can still operate well at these times.
To address this problem the company has asked for an automated holiday booking system which can capture constraints such as:
- Holiday entitlement
- Minimum number of staff levels with particular skills
- Peak time balancing
The company envisages that the system could automatically enforce constraints when approving holiday requests. When it isn't possible to approve a holiday request because this would break a constraint, the system should suggest an alternative.
The company has a number of departments:
An employee works for a particular department, but in addition an employee will hold one of the following roles within their department:
- Deputy Head
- Junior member
- Senior member
Every department has only one head and deputy head but has multiple members of all other roles.
3 Programming Enterprise Components – Practical
The system needs to record details of all employees, which includes an employee's personal details, as well as the date when an employee joined the company.
The holiday entitlement for an employee is based on how long he/she has worked at the company. All employees get 30 days of holiday per year, plus one extra day for every 5 years an employee has been with the company.
The following constraints have been identified by the company which apply at all times:
- No employee can exceed the number of days of holiday entitlement
- Either the head or the deputy head of the department must be on duty
- At least one manager and one senior staff member must be on duty
- At least 60% of a department must be on duty
There are some exceptions which are that none of these constraints apply between the 23rd of December to the 3rd January of every year.
In the month of August, the constraints are relaxed such that only 40% of a department must be on duty.
The following periods are considered peak times:
- 15th of July to 31st of August
- 15th of December to 22nd of December
- The week before and after Easter, which changes each year as Easter falls on a different day each year
Holiday requests are manually approved by a Head of Department. However, when the system lists holiday requests, it should identify those when break constraints and shouldn’t allow them to be approved. Also, when staff apply for holiday the system should prioritise staff who have had a lower number of holidays in the current year, followed by those who have fewer days in the peak time periods, so requests should be listed in order of priority (highest priority first). If the approval of one request means that others now no longer fulfil the constraints, then the system would need to identify them and not allow them to be approved.
There are strict requirements about the technologies and architecture to be implemented. These are detailed in the deliverables section.
Part A (30%)
With the help of the tutor, organise yourselves into groups consisting of 4-6 students.
The successful implementation of an enterprise application requires teams of people with different roles to collaborate.
Within the group assign the following roles:
- Java back-end programmer
- User interface designer
- Database administrator
- Server administrator
- Project manager
Depending on the group size, you may have multiple members sharing the same role or members with multiple roles. It makes sense to allocate roles based on experience, but as you will engage in work together, this is also an opportunity to learn from other members of the team, so don't worry if you don't yet have expertise related to your role at the start of the assignment.
As a team you are required to:
- Design/implement a database which meets the requirements of the case- study described above. You can use any relational database management system you wish (e.g. JavaDB, SQLServer, MySQL, Oracle, Access, etc.). The database should be normalised and use primary key and foreign key constraints.
- Set up an Application Server which will allow you to deploy an enterprise application. This includes configuration files which change the session timeout to 15 minutes and setting the database up as a data source in the Application Server
- Implement a web application using Jakarta EE, which offers the following functionality to admin users: o User log in o User management enabling an admin user to create/edit/delete employees. It must be possible to allocate an employee to a department and assign him/her a role.
The implementation should use entity classes and Session Beans for back-end functionality and JSP or JSF for the user interfaces. You should secure access to this functionality, so that it is limited to an authenticated user. As a group you should decide when you consider this part of the system to be completed, at which time it must be demonstrated to your tutor. This must be no later than week 7 of the module.
Group report section (10%) The group report section should contain the design documentation that you created as a group, which should contain an Entity Relationship Diagram outlining the database structure and an architecture diagram which shows the overall setup of the system. This should be prepared by the group and each member then includes the same diagrams in their final report.
Individual report section (approx. 300 words) (10%) Please include a reflection of your role within the team and discuss lessons learnt. What you think went well and what you think could have been improved and how. This section should be included in the final report.
Part B (70%)
For Part B the teams will be disbanded, and you are expected to work individually.
You can take a copy of the work completed as a group and build on it to complete the remaining implementation. This may involve exporting the database you developed as a team and importing it to your individual database account.
It is envisaged that the system will be developed in three stages, to include basic, intermediate and advanced functionality.
Functionality A (10%)
Extend the functionality implemented as a group to add a separate section which allows employees to:
- Log in
- Submit a holiday request
- View a list of existing holiday requests, which also shows whether they were approved/rejected
Functionality B (10%)
You should also add the following functionality for an admin user:
When a holiday request is accepted or rejected it should be removed from the list of outstanding requests.
Functionality C (10%)
You should extend the system by including a component which applies constraint checking.
When an employee submits a holiday request, the system should use the component to automatically check whether all constraints are satisfied. The list of outstanding requests shown to the admin user should be split into two, those which don’t break any of the constraints and those which do and can't be accepted.
For requests which break constraints, the system should specify which constraint is being broken. There could be more than one, in which case they should all be listed.
Functionality D (10%)
Create a Web Service (SOAP or REST) which exposes functionality for employee log in and make a holiday request submission. This web service will be called from the employee app.
The prototype of the employee app should also be created, as a Java desktop application, and it must be possible for an employee to log in and to submit a holiday booking request.
The employee app should not connect directly to the database, but all communication must be via the Web Service (remember that the company is planning to replace the desktop application with a mobile app at a later stage).
Functionality E (10%)
Add the following functionality to the web application.
When a holiday booking request is created via the web service, this should trigger an alert to the administrator. You should implement a Message- Driven Bean which is called when a holiday request is generated. The web service should publish a message using JMS which is then received by the Message-Driven Bean. At a later stage, the Message-Driven Bean should send an automated email to the administrator, but for the time being, this should record the alert in the database.
Functionality E (10%)
Implement the prioritisation of requests based on the number of days already approved and the number of days requested during the peak times. The prioritisation should determine the order in which outstanding requests are listed.
Finally, add functionality to the system which suggests alternative dates (where possible) for requests which break constraints.
Technical and User Documentation (10%)
Prepare a final report which should contain the design documentation and reflection from Part A as well as the following sections:
- View a list of outstanding holiday requests
- Accept/reject a request
- View a list of all holiday bookings and filter them by employee
- Select a date and show all employees working that day and those on leave that day.
- Screenshots: Screen shots demonstrating each of the features that you have implemented. Give captions or annotations to explain which features are being demonstrated.
- Evaluation (approx. 600 words): An evaluation of the evolution of your application. You should discuss any problems you had during implementation. You should be critical (both positive and negative) of your implementation. Be prepared to suggest alternatives. Discuss how your final implementation could be improved.
- Research (approx. 600 words): Jakarta EE makes it possible to create enterprise applications. Carry out some research and critically discuss what other technologies and frameworks are available and how they compare to Jakarta EE.
Why invest in our services?
Our assignment help team is trained to provide you high quality writing services.
High scores achieved by our students is a portrayal of our high quality online assignment help
You can place your assignment order through 4 easy modes of communication