Guidelines for Final Project

Deadlines: Initial Design (2%): Due 7/23, Final Project (6%): Due 7/30

This is a group project (maximum 3 member teams)


Objective:

Design, develop and implement a working software system in Java. All code must be maintained on GitHub (See instructions on Canvas)


Problem Statement - Job Search app

Congrats! You’re hired to create a project that will mimic a job search app. There will be two perspectives for the app; the job seeker and the employer. The job seeker should be able to showcase his profile only to employers, view and apply to open jobs and track status of application. The employer should be able to post new jobs which will be visible only to job seekers

1. Job seeker perspective:

● User should be able to register to the app by specifying username and password. Usernames should be unique.

● User should be able to log in to the app with his/her own credentials

● User is presented with main-menu style options after logging in, containing items like:

○ View my profile

○ Update profile

○ Browse through open jobs

○ Track status of applied jobs

○ Sign out

○ Delete account

● Profile should have basic details of the person as well as work experience, strengths etc.

● Browse through open jobs:

○ User is presented with a list of jobs as a landing page

■ Search feature: In this section, user can search for jobs via job title and/or location. This will yield a similar list of jobs but filtered according to search keyword

○ User should have the ability to view complete details of any one of them and apply to the position

○ Ability to go back to the list of jobs

● Track status of applied jobs:

○ User should be able to view his past and current applications and their status (accepted/rejected/pending)

● Sign out:

○ User should be redirected back to log-in page

● Delete account:

○ If a user chooses this option, he/she should not be able to log in again

○ The user’s profile should not show up to employers henceforth

2. Employer view:

● Register as a company looking to hire people

● Log in to the app with credentials

● User is presented with main-menu style options after logging in, containing items like:

○ Create a new job post

○ View list of posted jobs

○ Update job post details

○ Browse through all job seekers

○ Sign out

○ Delete account

● Create new job post:

○ This should contain basic information about the position being offered (location and title is mandatory)

○ After creation, this post should become visible to all job seekers

● View a list of posted jobs:

○ Should be able to see a summary of jobs posted by that specific employer

○ Should be able to see the details of users who applied to that specific job and accept/reject their application

○ By default, all applications should be set to pending state

● Browse through all job seekers:

○ Should be shown a list of users (like the one in job seeker view)

○ Employer should be able to view complete profile details of specific user

○ Should be able to search for the job seekers based on skills

● Delete account

○ All posts by that employer should also get deleted and pending applications should get rejected.

3. Optional Features

● View recent history:

○ User should be able to see a list of jobs that he/she browsed through (say, last 10)

● Suggested jobs

○ Show recommended jobs based on the user’s profile (matches user’s skills, strengths etc.)

● Generate resume

○ Parse the user’s profile details and create an HTML resume. It should be formatted properly and resemble an actual resume as much as possible (not just lines of text one below the other)

The software development cycle includes requirement specification, design and analysis, coding, and testing phases. You will also prepare a report documenting each step used in the software design cycle and will use UML diagrams to properly represent all classes used in your design. (You may use free software called StarUML which can be downloaded from http://staruml.sourceforge.net/en/download.php)


System Features:

The System that you are designing offers a variety of design choices. You are encouraged to design the software system that provides the most realistic user experience. Here are some of the required functionalities:

• Users should be able to register and login to their accounts using their unique credentials.

• User should be able to browse through open jobs

• Track status for application

• Employer should be able to create/update a job post

• Employer Browse through all job seekers

• Delete account

• Sign out

• Make your system user friendly by providing sufficient guidelines and help to use the system (For example: if your system is expecting any input in a specific format, be sure to specify that in the instructions as well as the Testing part of your report)

• Note: Your Job search system must have state persistence by saving the necessary data to files. State persistence allows your system to outlive the process that created it. For example, if you add a jobs and/or users (job seekers) to the system when you initially run it and then close the execution before running the system again, the system must be able to remember the previous jobs and/or users and its state. This will allow you to use the previously entered information without having to create user accounts and table information, etc. again and again. You can complete the entire project by storing data in files or any other persistent storage medium.

You have tremendous amount of freedom in designing this application. You are welcome to add any additional functionality to your system. Just imagine that you are an actual developer of the application.

Note: The design of a Graphical User Interface (GUI) is optional. You can also develop a command-line based system.


System Design & Development:

The final project includes two major components: Project Design and Implementation.

Design (2%): The design component will consist of the software design for the project and will include the list of all classes (member variables and functions) to be used, their relationships & collaboration, as well as databases/files. The initial design must precede any implementation. You will start by analysing the requirements of the project and by identifying the classes required along with attributes and functionalities. A doc/docx document listing the design along with UML diagrams (Class diagrams, activity diagrams, etc.) must be submitted by deadline. Please include the following:

● Skeleton Code with all classes (with member attributes and member functions)

● What are class hierarchies and relationships? (in your report)

● All other data structures or files to be used (in your report)

● Group Peer evaluations are REQUIRED and it counts towards final grade. Each member is ideally required to put in equal amount of effort.

● Also, setup a private repository for your source code on GitHub and add all instructors as collaborators (See instructions on Canvas).

It would be beneficial for you to analyse your system thoroughly and provide detailed UML diagrams. Here are some of the questions, answering those will help you put on the good path:

• How many classes will you have and how will they interact?

• How will you store job seeker/employer ID, passwords, menu options?

• How will you represent job browse options and the menu?

• How will you deal with adding multiple job seekers to a job search system?

Implementation (6%): Once you complete the initial design, setup a private github repository and start implementing the job seeker, employer functionalities separately. Test these separately with individual drivers. Be sure to add the appropriate user-friendly menu options that would allow the user to select various actions easily. Ensure that the menu options only work when correct input is provided by the user. Test each option individually to ensure that all available functionality is properly implemented. All sourcecode must be shared amongst team members and instructors via github.

Now imagine yourself as the user of the system (as Job seeker, Employer) and observe the behaviour of the system (and see how it changes). Reflect on the efficiency of your choices. Review your initial design and make the necessary changes to remove any unnecessary attributes and functions. You may have to add some more functionality that you might have missed in your initial design. Implement the updated design and report the updates to the initial design along with a discussion regarding the efficiency of your choices. A doc/docx document listing the final design including UML diagrams must be submitted along with working Source Code and video demo by deadline. See the checklist given below.

Testing: Develop and build unit tests for each operator. Create different drivers for testing each component of the system as a Job seeker, Employer separately and then integrate the entire system and test with a separate main driver. Please ensure that the complete system is properly tested before submission.

Deliverables: The following items must be submitted:

All source and header files related to the system implementation (on Canvas as well as github).

■ All drivers that are part of the testing as Job seeker, and Employer separated in different folders

■ A README file with any information regarding compilation and testing I need to know in order to successfully compile and run your system. Include any other files needed to compile or test

■ Source code must be properly organized, readable, and must use proper best coding practices.

■ The report file with the final design with discussion, and details of testing activities. Feel free to show additional testing you performed in the report

■ Video Demo (10 minutes long max) showing all features of your working system. Voice over is not mandatory

■ Group Peer evaluations are REQUIRED and it counts towards final grade. Each member is ideally required to put in equal amount of effort.


Project Checklist:

You can use the following checklist to ensure that you have submitted everything required for the project:

• Did you submit evidence of successful compilation or testing (screen captures)?

• Did you submit the instructions required to compile your code?

• Did you add all instructors as collaborators to your private github repository?

• Did you submit all files including any new header files used for compilation on Canvas (compressed as one file)?

• Did you implement user’s features: password, unique ID, Job ID, etc.?

• Did you submit a report with your designs (and UML diagrams), evidence of successful testing of all features?