Complete and attach this cover sheet to your assessment before submitting
Assessment Title
Project
Programme Title:
Course Code:
ITB 6006
Course Title:
Object-Oriented Design
Student Names:
Student IDs:
Tutor:
Ali Alaali
Mahdi Ebrahim
201000096
201101299
Mohamed Sharaf
201100383
Osama Al Abedallat
By submitting this assessment for marking, either electronically or as hard copy, I confirm the
following:
Assessor:
Date of Marking:
Grade/Mark:
Comments:
Page 1 of 43
Table of Contents
INTRODUCTION ............................................................................................................... 4
1.
PURPOSE ........................................................................................................................ 4
2.
3.
METHOD ........................................................................................................................ 4
2.
3.
4.
5.
6.
7.
8.
9.
10.
Narratives/Scenarios........................................................................................................ 9
1.
Registration ................................................................................................................... 9
2.
3.
4.
Registration ................................................................................................................. 15
2.
3.
4.
2.
3.
P a g e 2 | 43
4.
P a g e 3 | 43
INTRODUCTION
1. PURPOSE
Job seekers can apply for a job by going to the company to search for the available
jobs and the company will show him/her the available jobs according to his/her
qualifications. This project is designed for a business case on behalf of a job portal
application, which aims to provide a centralized communication tool for job seekers,
companies human resource administrators and portal administration, in order to allow and
help the companies source employees with suitable skills and expand their market share and
provide a tool for job seekers to help them in searching for a job and apply of it.
2. TERMS OF REFERENCE
Mr Osama Al Abedallat, an ICT Tutor at Bahrain Polytechnic, requested this report
on portal job application on the 22nd of November 2014 as part of ITB6006 Object-Oriented
Design, Bachelor of ICT at Bahrain Polytechnic.
3. METHOD
The information used to produce this report was obtained throughout a range of
sources. These sources include textbooks, class activities and previous knowledge.
P a g e 4 | 43
User
Administrator
Employer
The System Boundary shows the
logical interface between users
and the system being described.
System Boundary
invokes
Review application
Rev iew applications
Maintain jobs
extend
subscription
extend
Reset passw ord
Maintain
subscriptions
Read Messages
Delete Messages
extend
Maintain Jobs
Delete subscription
Schedule Interv iew s
invokes
extend
extend
extend
extend
Post new Job
Add subscription
Send Email
extend
extend
Edit subscription
Maintain Messages
extend uses
extend
uses
Update Job
Remov e Jobs
Backup Database
Maintain Job
Categories
Login
extend
Logout
invokes
extend
Send Messages
Login
extend
extend
Maintain Database
uses
Add j ob category
extend
extend
Update j ob category
Delete j ob category
Search CVs
extend
uses
extend
Apply for a job
Maintain user
Apply for a
subscription
invokes
Apply for a Job
Maintain Users
Maintain locations
extend
extend
List subscriptions
Delete user
Rigisteration
invokes
Maintain Locations
uses
extend
extend
extend
extend
invokes
extend
Register Company
Profile
Get payment
extend
Unsubscribe from
search notifications
extend
extend
Assign Roles
Add an administrator
extend
View Job
Add Location
Edit Location
Remov e Location
invokes
Register Personal
Profile
Issue a recipt
extend
uses
extend
depends on
Register Profile
extend
Subscribe to search
notifications
Search Jobs
Build CV
invokes
invokes
Guest
Job Seeker
Page 5 of 43
The use case diagram above describes the events in the system, and each sub
system specified within a boundary.
The system boundary includes with all use cases in the system, and there are other
sub boundaries, which contain the sub systems use cases.
The first four sub-systems will be described in details during the course of this
report.
uc Registration
1.
Functionality
User
(from
Actors)
Employer
Job Seeker
(from
Actors)
(from
Actors)
Registration
Register Company
Profile
extend
Registration
extend
Register Personal
Profile
depends on
Register Profile
Guest
(from
Actors)
2.
Search Jobs
Job Seeker
(from
Actors)
Job Application
Functionality
Apply for a job sub system
contains Apply for a job, View job and
Search jobs use cases which describes
the event of Applying for a job ,
viewing job and searching jobs.
extend
View Job
extend
Page 6 of 43
uc Maintain j obs
Maintain jobs
Remov e Jobs
Maintain Jobs
extend
Employer
(from
Actors)
extend
extend
Update Job
uc Profiles management
Profiles management
Assign Roles
Maintain Users
extend
Administrator
(from
Actors)
extend
extend
Update User profile
extend
Delete user
Add an administrator
5. Login functionality
The login system includes the login use case, which describes the event of Login and
the logout use cases, which describes the event of Logout.
P a g e 7 | 43
Maintain locations system aims to add, edit, and remove locations and it contains
four use cases Maintain location, Add location, Edit location and Remove location.
The more use cases, the more provided functionalities making the system more
reliable, and feature filled for the users.
P a g e 8 | 43
Narratives/Scenarios
The scenarios below describe the process of several functionalities on the system:
1. Registration
Registration functionality included with several functionalities (register profile, active
user account, register personal profile and register company profile)
1.1 Register Profile
1. Guest clicks sign up in the home_page
2. Redirect the guest to the registration_page
3. Guest fills in required information in the registration_page
4. registration_page validates the inserted information
4a. registration_page displays error message
5. registration_page sends information to the registration_controller
6. Registration_controller sends information to the DBM
7. DBM validate the new user
7a. DBM return error message the registration_controller
7b. Registration_controller return error message to the registration_page
7c. Registration_page displays error message
8. DBM create new user in the database
9. Database return successful message the DBM
10. DBM return successful message the registration_controller
11. Registration_controller return successful message to the registration_page
12. registration_page displays successful message
1.2 Activate user account
1. User clicks activation link
2. Validation_page activates user account
3. Validation_page redirect the user to profile selection_page
3.1a.
3.1b.
3.2a.
3.2b.
P a g e 9 | 43
P a g e 10 | 43
3. Maintain jobs
Maintain jobs functionality included with several functionalities (maintain jobs, post
new job, remove job and update job)
3.1 Maintain Jobs
1. The Employer open jobs_management_page
2. Jobs_management_page requests job list from job_controller
3. Job_controller request user ID from session_controller
4. Session_controller returns the employer_ID to job_controller
5. Job_controller sends employer_ID to the DBM
6. DBM request job list from the jobs_entity
7. jobs_entity search job
8. jobs_entity return job list to the DBM
8a. jobs_entity return message no posted jobs to DBM
8b. DBM return the message job_controller
8c. Job_controller displays the message on the jobs_management_page
9. DBM return job list to the job_controller
10.Job_controller displays job list on the jobs_management_page
3.2 Post new Job
1. The Employer clicks on post new job on the jobs_management_page
2. jobs_management_page redirect the employer to post_new_job_page
3. Employer inserts the job details and clicks post
4. post_new_job_page validate the inserted data
5. post_new_job_page sends the data to the job_controller
5a. post_new_job_page reurn error message to post_new_job_page
6. Job_controller sends the data to the DBM
7. DBM insert the new record in the jobs_entity
8. jobs_entity return successful message to DBM
9. DBM return message to the job_controller
P a g e 11 | 43
4. Profiles management
Profile management functionality included with several functionalities (maintain
users, update user profile, delete user, assign roles and add and administrator)
4.1 Maintain Users
1. Administrator clicks search users on management_page
2. Management_page redirect the administrator to search_users_page
3. Administrator inserts search criteria and click search on the search_users_page
4. Search_users_page request the result from the search_users_controller
5. Search_users_controller sends criteria to DBM
P a g e 12 | 43
P a g e 13 | 43
P a g e 14 | 43
return
message(successful
message)
DBM :DBM
di spl ay message
(successful message)
P a g e 15 | 43
1.1.2 Sequence
sd 1_Basic_Path
users_enti ty
:users_enti ty
Guest :Guest
Registration_Controller
:Registration_Controller
cl i cks si gn up()
di spl ay()
return message(successful
message)
i nsert new user()
End
Registration_Page
displays successful
message
Registration_Controller
return successful
message to the
Registration_Page
users_entity return
successful message the
DBM
[new user]
val i date
the new
user
Registration_Controller
sends the information to
the DBM
Registration_Page
displays error message
Registration_Controller
return error message to
the Registration_Page
Registration_Page
displays error message
Registration_Page sends
the information to the
Registration_Controller
Val i date
i nserted
i nform ati on
Registration_Page
v alidates the inserted
information
Start
before.
1. Registration
1.1.1 Activity
1.1.3 Communication
sd 1_Basic_Path Communication
DBM :DBM
0.1: clicks sign up()
users_entity :
users_entity
Guest :Guest
Home_Page :Home_Page
Registration_Controller
:Registration_Controller
P a g e 16 | 43
1.2.2 Sequence
sd 1_Basic_Path
User :User
Validation_page
:Validation_page
clicks activation link()
profile_selection_page
:profile_selection_page
Register Personal
Profile :Register
Personal Profile
Register Company
Profile :Register
Company Profile
activates (user_account)
display profile_selection_page()
select personal profile type()
invokes Register Personal Profile use case()
1.2.3 Communication
sd 1_Basic_Path Communication
Validation_page
:Validation_page
profile_selection_page
:profile_selection_page
P a g e 17 | 43
End
profile_selection_page
inv okes Register
Company Profile
profile_selection_page
inv okes Register Personal
Profile
[Personal profile]
Select
profile type
Validation_page redirect
the user to
profile_selection_page
Start
[Company profile]
1.2.1 Activity
Register_Personal_Profile_page
:Register_Personal_Profile_page
insert information()
validates information()
1.3.2 Sequence
sd 1_Basic_Path
DBM :DBM
User :User
Job_seeker_entity
:Job_seeker_entity
upload CV()
get information()
create personal profile()
display message(error
message)
alt Build CV
build CV()
P a g e 18 | 43
End
Register_Personal_Profile_page
display successful message
Job_seeker_entity return
successful message to
the DBM
Register_Personal_Profile_page
sends information to the DBM
Val i date
i nserted
i nformati on
Register_Personal_Profile_page
v alidates the inserted information
User upload CV on
Register_Personal_Profile_page
Upl oad or
bui l d CV
Start
Register_Personal_Profile_page
display error message
Register_Personal_Profile_page
inv oks build CV use case
[Bui l d CV]
1.3.1 Activity
1.3.3 Communication
sd 1_Basic_Path Communication
0.8: display message(error message)
0.2: validates information()
DBM :DBM
Job_seeker_entity
:Job_seeker_entity
P a g e 19 | 43
1.4.2 Sequence
sd 1_Basic_Path
DBM :DBM
User :User
Register_Company_Profile_page
:Register_Company_Profile_page
company_profile_entity
:company_profile_entity
insert information()
validates information()
gets information()
insert company profile()
1.4.3 Communication
sd 1_Basic_Path Communication
0.7: di spl ay message(error message)
0.2: val i dates i nformati on()
company_profi l e_enti ty
:company_profi l e_enti ty
P a g e 20 | 43
End
Register_Company_Profile_page
display successful message
company_profile_entity
return successful
message to the DBM
Register_Company_Profile_page
display error message
DBM create new company
profile in the
company_profile_entity
Register_Company_Profile_page
sends information to the DBM
[Valid information]
[wrong validation]
Validate
inserted
information
Register_Company_Profile_page
v alidates the inserted information
Start
1.4.1 Activity
Search_controller
displays the result on the
search_page
2.1.2 Sequence
sd 1_Basic_Path
DBM :DBM
jobs_entity
:jobs_entity
search_page
:search_page
search_controller
:search_controller
display search_page()
query(key_word)
:query_results
return(ArrayList<job>)
set(ArrayList<job>)
display(ArrayList<job>)
alt no j ob found
return message(error
message)
display message(error message)
2.1.3 Communication
sd 1_Basic_Path Communication
j obs_entity :
j obs_entity
home_page :home_page
0.6: query_jobs(key_word)
0.2: display search_page()
0.9: set(ArrayList<job>)
0.10: display(ArrayList<job>)
0.8: return(ArrayList<job>)
DBM :DBM
0.4: search_jobs(key_word)
search_page :search_page
0.5: search_jobs(key_word)
search_controller
:search_controller
P a g e 21 | 43
End
Jobs_entity returns
message no j ob found
DBM
Jobs_entity returns the
query results to DBM
Search for
jobs
Search_controller sends
criteria to DBM
Start
Search_controller
displays the message on
the search_page
2.1.1 Activity
End
search_controller display
v iew _j ob_page and
display j ob details
search_controller request
the j ob details from DBM
Start
2.2.1 Activity
2.2.2 Sequence
sd 1_Basic_Path
DBM :DBM
Job Seeker :Job Seeker
search_page
:search_page
clicks view()
v iew _j ob_page
:v iew _j ob_page
search_controller
:search_controller
j obs_entity
:j obs_entity
2.2.3 Communication
sd 1_Basic_Path Communication
search_controller
:search_controller
view_job_page :view_job_page
0.6: return job details()
0.4: query job details(job_ID)
0.5: return job details()
DBM :DBM
jobs_entity :jobs_entity
P a g e 22 | 43
2.3.2 Sequence
sd 1_Basic_Path
DBM :DBM
Job Seeker :Job Seeker
v iew _j ob_page
:v iew _j ob_page
clicks apply()
application_controller
:application_controller
session_controller
:session_controller
applications_entity
:applications_entity
get requests()
get ID(Job_Seeker_ID)
return ID(Job_Seeker_ID)
get(job_ID, Job_Seeker_ID)
insert(job_ID, Job_Seeker_ID)
2.3.3 Communication
sd 1_Basic_Path Communication
0.9: invoke send message use case()
0.2: get requests()
application_controller
:application_controller
session_controller
:session_controller
DBM :DBM
P a g e 23 | 43
End
Application_controller
displays successful
message on the
v iew _j ob_page
Application_controller
inv okes send message
use case
applications_entity return
successful message to
DBM
Application_controller
sends j ob ID and the
Job_Seeker_ID to the DBM
Session_controller returns
the Job_Seeker_ID to
application_controller
Application_controller
request the
Job_Seeker_ID from the
session_controller
Start
2.3.1 Activity
Employer :Employer
j obs_management_page
:j obs_management_page
open()
j ob_controller
:j ob_controller
3.1.2 Sequence
sd 1_Basic_Path
DBM :DBM
j obs_entity
:j obs_entity
get user_ID()
returns user_ID(ID)
return jobs(job_list)
search job (emplyer_ID)
display(job_list)
return jobs(job_list)
return message(not_found)
return message(not_found)
display messge(not_found)
P a g e 24 | 43
End
Job_controller displays
j ob list on the
j obs_management_page
T here is any
posted job?
j obs_entity search j ob
Job_controller sends
user_ID to the DBM
Session_controller returns
the user_ID to
j ob_controller
Job_controller request
user_ID from
session_controller
Jobs_management_page
requests j ob list from
j ob_controller
Start
Job_controller displays
the message on the
j obs_management_page
j obs_entity return
message no posted j obs
to DBM
3. Maintain jobs
3.1.1 Activity
3.1.3 Communication
sd 1_Basic_Path Communication
0.10: display(job_list)
Employer :
Employer
session_controller
:session_controller
P a g e 25 | 43
3.2.2 Sequence
sd 1_Basic_Path
DBM :DBM
Employer :Employer
j obs_management_page post_new _j ob_page
:j obs_management_page :post_new _j ob_page
clicks post new job()
j ob_controller
:j ob_controller
j obs_entity
:j obs_entity
display()
get job
details(dictionary<string,
string>)
insert
job(dictionary<string,
string>)
return message(successful)
return message(successful)
displays(successful message )
3.2.3 Communication
sd 1_Basic_Path Communication
Employer :
Employer
job_controller :job_controller
jobs_management_page
:jobs_management_page
post_new_job_page
:post_new_job_page
P a g e 26 | 43
End
j obs_entity return
successful message to
DBM
post_new _j ob_page
sends the data to the
j ob_controller
right validation
Validate
inserted
information
post_new _j ob_page
v alidate the inserted data
j obs_management_page
redirect the employer to
post_new _j ob_page
Start
[wrong validation]
3.2.1 Activity
3.3.2 Sequence
sd 1_Basic_Path
DBM :DBM
Employer :Employer
j obs_management_page
:j obs_management_page
j ob_controller
:j ob_controller
j obs_entity
:j obs_entity
clicks delete()
get job ID(ID)
get job ID(ID)
delete job(ID)
3.3.3 Communication
sd 1_Basic_Path Communication
Employer :
Employer
job_controller :job_controller
P a g e 27 | 43
End
j obs_entity return
successful message to
DBM
j obs_management_page
send the j ob ID to the
j ob_controller
Start
3.3.1 Activity
return m essage(successful
3.4.2 Sequence
sd 1_Basic_Path
j ob_controller
:j ob_controller
DBM :DBM
j obs_entity
:j obs_entity
get j ob ID(ID)
P a g e 28 | 43
End
j obs_entity return
successful message to
DBM
Val i date
i nform ati on
j ob_controller displays
edit_j ob_page and
displays j ob details
j obs_management_page
send the j ob ID to the
j ob_controller
Start
3.4.1 Activity
2.4.3 Communication
sd 1_Basic_Path Communication
job_controller :job_controller
P a g e 29 | 43
management_page
:management_page
clicks search users()
search_users_page
:search_users_page
4.1.2 Sequence
sd 1_Basic_Path
Administrator :Administrator
DBM :DBM
users_entity
:users_entity
get craiteria(search_key)
get criteria(search_key)
query results(search_ke)
returns results(users)
searches user(search_key)
display(users)
return results(users)
P a g e 30 | 43
End
Search_users_controller
displays the result on the
search_users_page
[found user]
found user
users_entity searches
user
Search_users_controller
sends criteria to DBM
Search_users_page
request the result from the
search_users_controller
Administrator inserts
search criteria and click
search on the
search_users_page
M anagement_page
redirect the administrator
to search_users_page
Administrator clicks
search users on
management_page
Start
Search_users_controller
displays the message on
the search_users_page
users_entity returns
message no user found to
DBM
4. Profiles management
4.1.1 Activity
4.1.3Communication
sd 1_Basic_Path Communication
0.7: searches user(search_key)
users_entity :users_entity
management_page
:management_page
0.2: display()
0.12: return message(error message)
search_users_controller
:search_users_controller
P a g e 31 | 43
Search_users_page
:Search_users_page
update_user_page
:update_user_page
search_users_controller
:search_users_controller
4.2.2 Sequence
sd 1_Basic_Path
DBM :DBM
Administrator :Administrator
select user()
users_entity
:users_entity
get user_ID(ID)
get user_ID(ID)
query user details(ID)
displays(successful message)
return message(successful message)
P a g e 32 | 43
End
Search_users_controller
redirect the administrator
to the Search_users_page
and displays successful
message
users_entity return
successful message to
DBM
Search_users_controller
sends the data to the DBM
Update_user_page sends
the data to the
search_users_controller
Val i date
i nserted
i nform ati on
update_user_page
v alidate the inserted data
search_users_controller
displays
update_user_page and
user details
Search_users_controller
request the user details
from the DBM
Search_users_page send
the user ID to the
search_users_controller
Start
update_user_page return
error message
4.2.1 Activity
4.2.3 Communication
sd 1_Basic_Path Communication
0.14: return message(successful message)
0.1: select user()
Administrator :
Administrator
DBM :DBM
Search_users_page
:Search_users_page
search_users_controller
:search_users_controller
P a g e 33 | 43
4.3.2 Sequence
sd 1_Basic_Path
DBM :DBM
Administrator :Administrator
Search_users_page
:Search_users_page
click remove()
search_users_controller
:search_users_controller
users_entity
:users_entity
get user_ID(ID)
get user ID(ID)
delete user(ID)
delete user(ID)
return message(successful message)
return message(successful message)
displays message(successful message)
4.3.3 Communication
sd 1_Basic_Path Communication
Administrator :
Administrator
Search_users_page
:Search_users_page
search_users_controller
:search_users_controller
DBM :DBM
0.6: return message(successful message)
users_entity :users_entity
P a g e 34 | 43
End
Search_users_controller
redirect the administrator
to the Search_users_page
and displays successful
message
users_entity return
successful message to
DBM
Search_users_controller
sends the user ID to the
DBM
Search_users_page send
the user ID to the
search_users_controller
Administrator click
remov e on select the user
on Search_users_page
Start
4.3.1 Activity
4.4.2 Sequence
sd 1_Basic_Path
DBM :DBM
Administrator :Administrator
Search_users_page update_user_priv ileges_page
:Search_users_page :update_user_priv ileges_page
select user()
search_users_controller
:search_users_controller
users_entity
:users_entity
get user_ID(ID)
get user(ID)
query user privileges(ID)
returns results(privileges)
return user privileges(privileges)
displays user privileges(privileges)
4.4.3Communication
sd 1_Basic_Path Communication
0.13: return message(successful message)
0.14: desplay(successful message)
DBM :DBM
Administrator :
Administrator
Search_users_page
:Search_users_page
search_users_controller
:search_users_controller
update_user_privileges_page
:update_user_privileges_page
users_entity :users_entity
P a g e 35 | 43
End
Search_users_controller
redirect the administrator
to the Search_users_page
and displays successful
message
users_entity return
successful message to
DBM
Search_users_controller
sends the data to the DBM
Update_user_priv ileges_page
sends the data to the
search_users_controller
search_users_controller
displays
update_user_priv ileges_page
and displays user priv ileges
Search_users_controller
sends the user ID to the
DBM
Search_users_page send
the user ID to the
search_users_controller
Start
4.4.1 Activity
4.5.2 Sequence
sd 1_Basic_Path
DBM :DBM
Administrator :Administrator
management_page
:management_page
add_administrator_page
:add_administrator_page
add_administrator_controller
:add_administrator_controller
Administrator_intity
:Administrator_intity
4.5.3 Communication
sd 1_Basic_Path Communication
management_page
:management_page
DBM :DBM
0.3: insert data()
0.5: get data()
0.2: display()
add_administrator_page
:add_administrator_page
Administrator_intity
:Administrator_intity
P a g e 36 | 43
End
Add_administrator_controller
redirect the administrator to
the management_page and
displays successful message
Administrator_intity return
successful message to
DBM
Add_administrator_controller
sends the data to the DBM
Add_administrator_page
sends the data to the
add_administrator_controller
right validation
Validate
inserted
information
add_administrator_page
v alidate the inserted data
Management_page
redirect the administrator
to add_administrator_page
Start
[wrong validation]
add_administrator_page
return error message
4.5.1 Activity
Deployment Diagram
The deployment diagram consists of 2 main machine: a Database Server and Enduser Computer. In addition to a Firewall device located alongside the Database Server.
Database Server:
The Database Server runs a Microsoft Windows Server platform, supports the
intended application execution environment .Net Framework. A running SQL service which is
Microsoft SQL 2008. As well ass, the application data schema in the SQL application.
Firewall:
In short, Firewall is intended to protect the explicitness of the data server; as the
direct communication between the Job Portal application and the data source (SQL server
2008).
End-User Computer:
Contains the application itself and compiler of .NET Framework.
The JobPortal.exe consists of both Application Logic and Application Design Interface. Since
the application is installed and on single platform, there will be "Persistence Settings"
component that maintain the application setting and preferences.
P a g e 37 | 43
The ERD Diagram shows the implementation of the Job Portal Database. It consists
of all entities needed to create a data source of Resumes (CVs) - referenced for Job Seeker and Jobs referenced for companies. In addition to the user management and
administration capabilities.
The Resume or CV builder subsystem is composed of essential details requirement
that compasses the information that is needed to be provided when applying for specific job,
in a CV.
The Company Profile subsystem holds the Company's main information for
applicant's to view and for the Company itself when posting a job.
The User Management subsystem is considered as the first step in getting in all of the data
entities. It keeps the records for variety of the system users and which data they are
interacting with.
This practice and implementation provide a complete and flawless data structure
easy to maintain and update.
P a g e 38 | 43
is
a
DataList
is
a
Driv er
+
+
+
+
is
a
OpenConnection(string) :bool
CloseConnection() :void
ExecuteCommand(String) :void
Filter(string, string) :List<Item>
is
a
is
a
is
a
is
a
is
a
is
a
is
a
is
a
list :List<Item>
DatabaseDriver :Driver
#
+
+
+
+
+
PopulateList(Item) :void
Populate(Item) :void
Update(Item) :void
Add(Item) :void
Delete(Item) :void
clone() :DataList
is
a
is
a
is
a
is
a
is
a
is
a
is
a
is
a
is
a
is
a
is
a
is a
property
+ List() :List<Item>
is
a
JobApplicationsList
GenderList
MeetingList
JobList
JobTypeList
JobStatusList
MSSQLDriv er
DataListJoin
+
+
+
+
connection :SqlConnection
command :SqlCommand
reader :SqlDataReader
+
+
+
+
OpenConnection(string) :bool
CloseConnection() :void
ExecuteCommand(String) :void
Filter(string, string) :List<Item>
JobApplication
-
Meeting
jobId :String
jobSeekerId :String
applyDate :String
applicationId :String
date :String
time :String
addressLine1 :String
addressLine2 :String
cityId :String
+
+
+
Edit() :void
Make() :void
Cancle() :void
JobType
-
IndustryList
CompanyList
OperationSiteList
CompanySizeList
CityList
CountryList
UserList
MessageList
JobCategoryList
SkillsList
ExperienceList
MaritalStatusList
CVList
EducationList
DegreeTypeList
UserStatusList
RoleList
DataListJoin(string)
Populate(ItemJoin) :void
Update(ItemJoin) :void
Delete(ItemJoin) :void
JobCategoriesList
Industry
typeTitle :String
typeDescription :String
City
industryTitle :String
cityName :String
countryId :String
Country
1..*
1 -
Message
countryName :String
countryCode :String
cityList :arrayList<City>
has a
is
an
Skills
subject :string
body :string
from :Registered_User
to :Registered_User
Date :date
+
+
+
Send() :void
Write() :void
Attache() :void
Sends
MaritalStatus
CVId :String
Skill :String
Skill Level :String
UserStatus
maritalStatusName :String
statusTitle :String
add
Guest
instantiate
+
+
Company
Driv erFactory
-
dataList :DataList
CreateObject(String) :DataList
Applys, searches
name :String
CR :String
URL :String
telephone :String
fax :String
industryId :String
sizeId :String
cityId :String
contactEmail :String
+
+
+
Create() :void
Edit() :void
Delete() :void
Rgister() :void
Login() :void
CompanySize
is a part of
sizeTitle :String
sizeDescription :String
Opration site
#
#
#
#
#
#
#
#
firstName :String
lastName :String
userName :String
password :String
email :String
userStatus :String
joinDate :String
roleID :String
+
+
ChangPassword() :void
logout() :void
jobId :String
catId :String
Arranges
statusTitle :String
description :String
Manages
companyId :String
telephoneNumber :String
addessLine1 :String
addressLine2 :String
cityId :String
Configration
Manages
Experience
-
is a
Job
Employer
Database :DataList
Gender
JobSeeker
-
CV :CV
addressLine1 :String
addressLine2 :String
dateOfBirth :String
cityId :String
CPR :String
nationality :String
maritalStatus :String
gender :String
create_CV(CVBuilder) :void
genderName :String
title :String
description :String
statusId :String
requirments :String
qualifications :String
postStartDate :String
postExpiryDate :String
operationSiteId :String
salary :String
jobType :String
jobStartDate :String
jobCat :arrayList<JobCatogaries>
+
+
+
+
+
Post() :void
Change_Status() :void
Edit() :void
Delete() :void
Apply() :void
Manages
is
an
companyId :String
contactName :String
contactNumebr :String
contactPosition :String
companyName :String
startDate :String
endDate :String
CVId :String
Description :String
cityID :String
CV
searches,
Downloads,
Views
is
an
is
an
create
1..*
1..*
name :String
description :String
parentCatogary :String
+
+
+
Create() :void
Delete() :void
Edit() :void
ItemJoin(string, string)
ItemJoin()
property
+ IDJoin() :string
+ IDFieldJoin() :string
is
an
is
an
is
an
is
an
is
an
is
an
is
an
id :string
idField :string
table :string
valid :bool
errorMessage :string
fields :Dictionary<string, string>
updateFields :Dictionary<string, string>
+
+
+
Item(string)
Item()
clone() :Item
+
+
+
+
+
addExperiance() :void
addEducation() :void
addSkill() :void
addObjective() :void
getCV() :void
property
+ ID() :string
+ Fields() :Dictionary<string, string>
+ UpdateFields() :Dictionary<string, string>
+ IDField() :string
+ Table() :string
+ Valid() :bool
+ ErrorMessage() :string
CVBuilder
+
+
+
+
is
an
-list
is
an
is
an
is
an
addExperiance() :void
addEducation() :void
addSkill() :void
addObjective() :void
is
an
is
an
0..*
View() :void
Download() :void
Search() :void
degreeTitle :String
contains
implements
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CVConcreatBuilder
Manages
Item
is
an
+
+
+
Role
-
roleDescription :String
canResetPassword :String
canApplyForJob :String
canSendMsg :String
canRegisterEmployeeProfile :String
canAddService :String
canReadMsg :String
canAssignRole :String
canApplyForSubscription :String
canManageSubscription :String
canChangeUserStatus :String
canDeleteMsg :String
roleTitle :String
canBackupDatabase :String
canReviewApplications :String
canBuildCV :String
canMaintainLocations :String
canSearchCVs :String
canMaintainUsers :String
canMaintainJobsCat :String
canMaintainJobs :String
canRegisterCompanyProfile :String
RoleConcreatBuilder
is a
idJoin :string
idFieldJoin :string
+
+
Experiance :arrayList<Experiance>
Education :arrayList<Education>
Skills :arrayList<Skills>
CVid :String
jobSeekerId :String
createdDate :String
lastUpdated :String
objective :String
uploadedCV :blob
nationality :String
maritalStatus :String
languages :String
CVId :String
degreeId :String
graduationDate :String
schoolName :String
cityId :String
Description :String
objective
setRoleTitle(String) :void
setRoleDescription(String) :void
canResetPassword() :void
canApplyForJob() :void
canSendMsg() :void
canRegisterEmployeeProfile() :void
canAddService() :void
canReadMsg() :void
canAssignRole() :void
canApplyForSubscription() :void
canManageSubscription() :void
canChangeUserStatus() :void
CarDeleteMsg() :void
canBackupDatabase() :void
canReviewApplications() :void
canBuildCV() :void
canMaintainLocations() :void
canSearchCVs() :void
canMaintainUsers() :void
canMaintainJobsCat() :void
canMaintainJobs() :void
canRegisterCompanyProfile() :void
roleId :String
ItemJoin
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Administrator
JobCategory
is a part of
DegreeType
Education
has a
is
an
RoleBuilder
Manages
j obCatogaries
JobStatus
creates
has a
Registered_User
addExperiance() :void
setRoleTitle(String) :void
addEducation() :void
setRoleDescription(String) :void
addSkill() :void
canResetPassword() :void
addObjective() :void
canApplyForJob() :void
canSendMsg() :void
getCV() :void
canRegisterEmployeeProfile() :void
canAddService() :void
canReadMsg() :void
canAssignRole() :void
canApplyForSubscription() :void
canManageSubscription() :void
canChangeUserStatus() :void
CarDeleteMsg() :void
canBackupDatabase() :void
canReviewApplications() :void
canBuildCV() :void
canMaintainLocations() :void
canSearchCVs() :void
canMaintainUsers() :void
canMaintainJobsCat() :void
canMaintainJobs() :void
canRegisterCompanyProfile() :void
creates
is
an
is
an
is a
is a part of
The previous static structural diagram describes the structure of the Job Portal proposed system, including the systems classes, their attributes,
and methods. Furthermore, it includes and names the relationships among the systems objects. These relationships includes weaker association
relationships, and the more solid and specific relationship, the aggregation in addition to the strongest and the most specific relationship, the composition.
Furthermore, the multiplicity is included in order to demonstrate the possible number of elements in a relationship. The proposed class diagram follows
and implements the object-oriented approach in a variety of occasions. For instance, it includes creator classes, which are inheriting using polymorphism
from the DataList or Item classes. Other occasions of the Object Oriented Design Patterns are discussed in details in their own section of this report.
P a g e 39 | 43
Patterns
A wide variety of object-oriented principals and patterns were followed and
implemented in the Domain Class Diagram, including the General Responsibility Assignment
Patterns and Principals.
class RoleBuilder
class CV Builder
interface
Domain Model::RoleBuilder
Registered_User
Domain Model::JobSeeker
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
DataList
Domain Model::
RoleList
add
Registered_User
Domain Model::
Administrator
-
roleId :String
setRoleTitle(String) :void
setRoleDescription(String) :void
canResetPassword() :void
canApplyForJob() :void
canSendMsg() :void
canRegisterEmployeeProfile() :void
canAddService() :void
canReadMsg() :void
canAssignRole() :void
canApplyForSubscription() :void
canManageSubscription() :void
canChangeUserStatus() :void
CarDeleteMsg() :void
canBackupDatabase() :void
canReviewApplications() :void
canBuildCV() :void
canMaintainLocations() :void
canSearchCVs() :void
canMaintainUsers() :void
canMaintainJobsCat() :void
canMaintainJobs() :void
canRegisterCompanyProfile() :void
implements
Item
Domain Model::Role
-
roleDescription :String
canResetPassword :String
canApplyForJob :String
canSendMsg :String
canRegisterEmployeeProfile :String
canAddService :String
canReadMsg :String
canAssignRole :String
canApplyForSubscription :String
canManageSubscription :String
canChangeUserStatus :String
canDeleteMsg :String
roleTitle :String
canBackupDatabase :String
canReviewApplications :String
canBuildCV :String
canMaintainLocations :String
canSearchCVs :String
canMaintainUsers :String
canMaintainJobsCat :String
canMaintainJobs :String
canRegisterCompanyProfile :String
Domain Model::RoleConcreatBuilder
creates
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
addExperiance() :void
setRoleTitle(String) :void
addEducation() :void
setRoleDescription(String) :void
addSkill() :void
canResetPassword() :void
addObjective() :void
canApplyForJob() :void
canSendMsg() :void
getCV() :void
canRegisterEmployeeProfile() :void
canAddService() :void
canReadMsg() :void
canAssignRole() :void
canApplyForSubscription() :void
canManageSubscription() :void
canChangeUserStatus() :void
CarDeleteMsg() :void
canBackupDatabase() :void
canReviewApplications() :void
canBuildCV() :void
canMaintainLocations() :void
canSearchCVs() :void
canMaintainUsers() :void
canMaintainJobsCat() :void
canMaintainJobs() :void
canRegisterCompanyProfile() :void
DataList
Domain Model::
CVList
CV :CV
addressLine1 :String
addressLine2 :String
dateOfBirth :String
cityId :String
CPR :String
nationality :String
maritalStatus :String
gender :String
create_CV(CVBuilder) :void
Item
Domain Model::CV
is a part of
Experiance :arrayList<Experiance>
Education :arrayList<Education>
Skills :arrayList<Skills>
CVid :String
jobSeekerId :String
createdDate :String
lastUpdated :String
objective :String
uploadedCV :blob
nationality :String
maritalStatus :String
languages :String
+
+
+
View() :void
Download() :void
Search() :void
interface
Domain Model::CVBuilder
+
+
+
+
addExperiance() :void
addEducation() :void
addSkill() :void
addObjective() :void
is a
create
Domain Model::
CVConcreatBuilder
+
+
+
+
+
addExperiance() :void
addEducation() :void
addSkill() :void
addObjective() :void
getCV() :void
1. Builder Pattern
The builder pattern was utilized in order to allow different representations of
both, the CV object and the Role object.
creational process, by adding the required modules one at the time on the fly, thus
allowing them to be generated dynamically.
Page 40 of 43
Domain Model::Item
-
Domain Model::DataList
-
list :List<Item>
DatabaseDriver :Driver
#
+
+
+
+
+
PopulateList(Item) :void
Populate(Item) :void
Update(Item) :void
Add(Item) :void
Delete(Item) :void
clone() :DataList
id :string
Configration
idField :string
table :string
Database
:DataList
valid :bool
errorMessage :string
fields :Dictionary<string, string>
updateFields :Dictionary<string, string>
-list
contains
+
0..* +
+
Item(string)
Item()
clone() :Item
property
+ ID() :string
+ Fields() :Dictionary<string, string>
+
+ UpdateFields() :Dictionary<string,
+
+ IDField() :string
+ Table() :string
+
+ Valid() :bool
+
+ ErrorMessage() :string
property
+ List() :List<Item>
interface
Domain Model::Driv er
OpenConnection(string) :bool
string>
CloseConnection() :void
ExecuteCommand(String) :void
Filter(string, string) :List<Item>
is an
Domain Model::MSSQLDriv er
Domain Model::Company
-
name :String
CR :String
URL :String
telephone :String
fax :String
industryId :String
sizeId :String
cityId :String
contactEmail :String
+
+
+
Create() :void
Edit() :void
Delete() :void
Domain Model::Message
connection :SqlConnection
command :SqlCommand
- subject :string
- body :string
reader :SqlDataReader
+
+
+
+
- to :Registered_User
OpenConnection(string)
:bool
- Date :date
CloseConnection()
:void
ExecuteCommand(String) :void
+ Send() :void
Filter(string, string)
:List<Item>
+ Write()
:void
from :Registered_User
Attache() :void
creates
Domain Model::Item
instantiate
2. Prototype Pattern
dataList :DataList
CreateObject(String) :DataList
several factors.
(Database
Server).
The
database-retrieved
"cloned object".
list
in
source
since
Item(string)
Item()
clone() :Item
0..*
is an
Another case or
untouched,
+
+
+
id :string
idField :string
table :string
valid :bool
errorMessage :string
fields :Dictionary<string, string>
updateFields :Dictionary<string, string>
property
+ ID() :string
+ Fields() :Dictionary<string, string>
+ UpdateFields() :Dictionary<string, string>
+ IDField() :string
+ Table() :string
+ Valid() :bool
-list + ErrorMessage() :string
contains
One of which is to
the
Domain Model::DataList
-
list :List<Item>
DatabaseDriver :Driver
#
+
+
+
+
+
PopulateList(Item) :void
Populate(Item) :void
Update(Item) :void
Add(Item) :void
Delete(Item) :void
clone() :DataList
property
+ List() :List<Item>
Domain Model::ItemJoin
-
idJoin :string
idFieldJoin :string
+
+
ItemJoin(string, string)
ItemJoin()
property
+ IDJoin() :string
+ IDFieldJoin() :string
3. Factory Pattern
is a
to
encapsulate
Domain Model::DataListJoin
+
+
+
+
DataListJoin(string)
Populate(ItemJoin) :void
Update(ItemJoin) :void
Delete(ItemJoin) :void
each
P a g e 41 | 43
database engine driver class, produce, and switch between database drivers
without affecting the rest of the code.
P a g e 42 | 43
Domain Model::Item
Domain Model::DataList
-
list :List<Item>
DatabaseDriver :Driver
#
+
+
+
+
+
PopulateList(Item) :void
Populate(Item) :void
Update(Item) :void
Add(Item) :void
Delete(Item) :void
clone() :DataList
contains
property
+ List() :List<Item>
-list
+
0..* +
+
id :string
idField :string
table :string
valid :bool
errorMessage :string
fields :Dictionary<string, string>
updateFields :Dictionary<string, string>
Item(string)
Item()
clone() :Item
property
+ ID() :string
+ Fields() :Dictionary<string, string>
+ UpdateFields() :Dictionary<string, string>
+ IDField() :string
+ Table() :string
+ Valid() :bool
+ ErrorMessage() :string
is a
is an
abstract
Domain Model::
Registered_User
Domain Model::
UserList
#
#
#
#
#
#
#
#
firstName :String
lastName :String
userName :String
password :String
email :String
userStatus :String
joinDate :String
roleID :String
+
+
ChangPassword() :void
logout() :void
Domain Model::
Guest
+
+
Rgister() :void
Login() :void
Manages
is a
is a
Domain Model::JobSeeker
Domain Model::
Administrator
-
roleId :String
Domain Model::Employer
-
companyId :String
contactName :String
contactNumebr :String
contactPosition :String
CV :CV
addressLine1 :String
addressLine2 :String
dateOfBirth :String
cityId :String
CPR :String
nationality :String
maritalStatus :String
gender :String
create_CV(CVBuilder) :void
4. State Diagram
The state pattern was implemented in order to allow a user to complete its
registration after activating its profile; an activated registered user is allowed to
finish his Job Seeker or Employer profile based on his choice during runtime. Thus,
changing his class to support each ones special and unique requirements from the
method in the class to the default role in their attribute.
P a g e 43 | 43