Final Year Project
Elaborated in
Prepared By
Torjmen Mariem
To Obtain National Diploma of
ENGINEERS IN COMPUTER ENGINEERING
Entitled:
redevelopment of Sifast Website
Presented on Jully 02 , 2018, in front of review committee :
Mr. Hassen Mrabet
Ms. Eya Mezghani
President
Reviewer
Mr. Maher Ben Jemaa Academic supervisor
Mr. Omar Elloumi Industrial supervisor
University year 2017-2018
Ministère de l’Enseignement Supérieur et
de la Recherche Scientifique
Institut International de Technologie à Sfax
‫العلمي‬ ‫والبحث‬ ‫العالي‬ ‫التعليم‬ ‫وزارة‬
‫للتكنولوجيا‬ ‫الخاصة‬ ‫الدولية‬ ‫العليا‬ ‫المدرسة‬‫ق‬ ‫بصفا‬‫س‬
Dedication
To my wonderful parents Najiba and Habib
You have raised me to be the person who I am to today.
Thank you for your unconditional love and support, you provided me with
Thank you for everything.
To the source of my success and achievements
My brother Mourad and my sister Mouna.
You have stood by my side in each step of my life.
You have nurtured me with knowledge and wisdom
Thank you for your guidance and enlightenment.
To my teachers, to whom I express My deep sincerity
For their assistance and support through my studies.
To the reason of my happiness my friends
I dedicate this work to you and I wish all the happiness.
Mariem
Acknowledgment
I would like to thank
Mr.Maher Ben Jmaa
My supervisor at International Institute of technology (IIT)
For his supervision, his advice, his support and the friendly manner to fellow
and accomplish this work
Mr.Omar Ellomi
My supervisor at SiFAST Company
For his dynamism, his valuable idea and its generous cooperation in the
development of this work.
Mr.Mouhamed Trabelsi
A software engineer in SiFAST Company
For his encouragements, his tuition, and his guidance in developing the project.
Mr.Anis Samet
The director of SiFAST Company
For sharing his direction, his instruction, and his wisdom.
Mr.Fadhel Abid
God Bless him, the founder and the manager of SiFAST Company
For accepting me as interne in his enterprise.
The committee members
For sucreficing their time and attention to review and evaluate my work.
Mariem
Redevelopment of SIFAST website
Table of Contents
List of Figures
List of Tables
Abbreviations
General Introduction 1
Chapter I: Background and aims 4
Introduction 5
1.1 Presentation of the host COMPANY: SIFAST 5
1.1.1 Enterprise profile 5
1.1.2 Organizational structure of SIFAST 5
1.1.3 SIFAST solutions 6
1.1.4 System quality 6
1.1.5 Technical environment 7
1.2 The context of the project 9
1.3 Description of the current website 10
1.3.1 Criticism of the existing website 11
1.3.2 Differences between Symfony 2.8 and Symfony 4 11
1.4 Aims of the project 13
1.4.1 A new version of SIFAST website 13
1.4.2 A workflow solution for CV selection 13
Conclusion 14
Chapter II: Specification & Design 15
Introduction 16
2.1 Methodology of work 16
2.1.1 Scrum 16
Redevelopment of SIFAST website
2.1.2 Theory 17
2.1.3 Implementation of SCRUM 19
2.2 Backlog 21
2.3 Design Diagrams 26
2.3.1 Use case Diagrams 26
2.3.2 Class Diagram 38
Conclusion 38
Chapter III: Implementation 40
Introduction 41
3.1 Logical architecture of the solution 41
3.2 Work environments 44
3.2.1 Material environment 44
3.2.2 Software tools 44
3.2.3 Development environment 44
3.3 Release1: Renovate the website using Symfony 4 45
3.3.1 Backlog of Sprint 0 45
3.3.2 Design of Sprint 0 48
3.3.3 Backlog of Sprint 1 54
3.3.4 Design of Sprint 1 57
3.4 Release2: Adding the statistic and the cv selection modules 60
3.4.1 Backlog of Sprint 2 60
3.4.2 Design of Sprint 2 62
3.4.3 Backlog of Sprint 3 69
3.4.4 Design of Sprint 3 70
Conclusion 72
Redevelopment of SIFAST website
Chapter IV: Realisation 73
Introduction 74
4.1 Illustration of release1 74
4.1.1 Sprint0 74
4.1.2 Sprint1 76
4.2 Illustration of release2 79
4.2.1 Sprint 2 80
4.2.2 Sprint3 85
Conclusion 90
General Conclusion 91
References 93
Redevelopment of SIFAST website
List of Figures
Figure 1: SIFAST organisation architecture 6
Figure 2: Scrum description 16
Figure 3: Application of Scrum in my project 20
Figure 4: General use case 27
Figure 5: Visitor consultation use case 28
Figure 6: Job application use case 31
Figure 7: Website management use case 33
Figure 8: Website maintaining use case 36
Figure 9: Class diagram 39
Figure 10: An overview of the logical architecture of the proposed application 41
Figure 11: Architecture of the doctrine project 43
Figure 12: Class diagram of sprint0 48
Figure 13: Sequence diagram of offers management 50
Figure 14: Sequence diagram of candidature creation 51
Figure 15: Sequence diagram of candidature management 52
Figure 16 : Sequence diagram of sharing a job offer 53
Figure 17: Activity diagram of sharing a job offer on social network 54
Figure 18: Class diagram of sprint1 58
Figure 19: The management of the visitor messages 59
Figure 20: Sequence diagram of visitor messages management 59
Figure 21 : Class diagram of sprint2 63
Figure 22: Sequence diagram of the alert subscribing 64
Figure 23: The sequence diagram of the alert sending 64
Figure 24: Activity diagram of CV selection workflow 65
Figure 25: An example of a Json file 66
Figure 26: An overview of the CV selection workflow 68
Figure 27: Class diagram of sprint3 71
Figure 28: Sequence diagram of interview management 72
Figure 29: Configuration of the main menu list of the front office website 74
Redevelopment of SIFAST website
Figure 30: Configuration of the submenu list of the front office website 75
Figure 31: Form of candidature application according to a job offer 75
Figure 32: Interface of the messages form 76
Figure 33: The list of displayed job offers of SiFAST 77
Figure 34: Interface of job offer details 77
Figure 35 : List of job offers according to a domain filter 78
Figure 36: Application by the job offer form 79
Figure 37: A modal containing a form of candidate experience details 79
Figure 38: List of offers after the search 80
Figure 39: An example of a list of expertise 81
Figure 40: Job offer creation interface in back office using the French form 81
Figure 41: Introduction page displayed in French and English 82
Figure 42: Front office references 82
Figure 43: Reference creation in Back office 83
Figure 44: Alert subscribing form 83
Figure 45: Alert email of confirmation 84
Figure 46: Job offer received by email 84
Figure 47: Alert deactivation form 85
Figure 48: Employer dashboard 86
Figure 49: Statistic of using social networking 86
Figure 50: Interface of accepted candidatures by number of experience years 87
Figure 51: Interface of interview creation 87
Figure 52: Interface of available recruiters 88
Figure 53: Interview created in Zimbra 88
Figure 54: An interview email received by recruiter 89
Figure 55: Interview mail received by a candidate 89
Figure 56: Output of training and testing command 90
Figure 57: An example of a list containing rejected candidatures 90
Redevelopment of SIFAST website
List of Tables
Table 1: Product Backlog 21
Table 2: Textual description of message sending 28
Table 3: Textual description of activating alert use case 29
Table 4: Textual description of disactivating alert 30
Table 5: Textual description of job application 31
Table 6: Textual description of spontaneous application 32
Table 7 : Textual description of the job offer management 34
Table 8 : Textual description of the candidature management 34
Table 9 : Textual description of interview management 35
Table 10: Textual description of settings management 37
Table 11 : Textual description of employers management use case 37
Table 12: Computer characteristics 44
Table 13: Sprint0 Backlog 45
Table 14 Sprint1 Backlog 55
Table 15: Sprint 2 Backlog 60
Table 16: Sprint 3 Backlog 69
Redevelopment of SIFAST website
Abbreviations
Sf: Symfony
CE:Community Edition
EE:Enterprise Edition
IT:Information technology
CV: Curriculum vitae
PHP: Hypertext Preprocessor
MIT: Massachusetts Institute of Technology
BO: Back office
FO: Front office
SQL: Structured Query Language.
HTML: Hypertext Markup Language
CSS: Cascading Style Sheets
ML: Machine learning
SVM: Support Vector Machines
KNN: K nearest neighbour
BN: Naive Bayes classifier
UML: Unified Modelling Language
OCR: Optical Character Recognition
CSV: Comma-Separated Value
JSON: JavaScript Object Notation
JS: JavaScript
Redevelopment of SIFAST website
1
General Introduction
General Introduction Redevelopment of SIFAST website
2
The internship presented in this report was held in SIFAST company at Sfax and it took a
duration of four months. SIFAST company, is well known in Tunisia for its mastery of new
technologies and developing innovative solutions for its clients. SIFAST company always keeps
an eye on the trended technologies and updates its website in order to stay modernised and
improved in performance and deliver a best quality service to clients.
In this context, my project titled “Redevelopment of SIFAST website” aims to improve the
company existing website and add new functionalities, such as recruitment process and social
networks statics. The website improvements concern the migration from Symfony 2.8 to Symfony
4, in order to guarantee better technical features such as speed and design.
The basic idea of the recruitment process is to construct a CV selection workflow, which
helps recruiters to release a first selection of candidatures either spontaneous or according to a job
offer. The candidature selection workflow consists of selecting some specific informations of
candidate resume and store them into structed documents to facilitate the comparison. A score will
be computed and assigned automatically to the candidature. For the selection of candidature
applied to a job offer, a comparison of candidate features could be released by machine learning
algorithm. For the social media statics, the number of sharing a job offer of SiFAST company
could be computed. Moreover, the recruitment process includes interview management, which
helps the Resource Human agent to choose the best recruiters available for the interview according
to their skills and expertise, taking into account the job offer requirements.
This report presents the different stages of the project realisation and it is divided on four
chapters.
The first chapter "Background and Aims" is an introductory chapter in which we give a
brief description of the company. Then we expose the general framework project and the proposed
solution.
The second chapter “Requirements Specification and Design” outlines the achievement of
this work with the Scrum methodology. It also includes the functional needs of a product backlog
and the defined sprint schedule. Afterwards, it presents the functional requirements illustrated by
the use case diagrams with some scenarios.
General Introduction Redevelopment of SIFAST website
3
The third chapter “Implementation” covers the different implemented sprints and the
different design diagrams needed in each sprint.
The forth chapter “Realisation” contains the development environment, the application
architecture as well as the environment hardware and software. Moreover, this chapter illustrates
by some screenshots the releases of my project.
Finally, this report finishes with a general conclusion aiming to evaluate the achieved work
and to outline the potential prospective of this project.
Redevelopment of SIFAST website
4
Chapter I: Background and aims
Chapter 1: Background and aims Redevelopment of SIFAST website
5
INTRODUCTION
This chapter aims to clarify the motivation of the work and gives an overview of the released
application. More precisely, it presents the host organization in which the internship was
conducted, as well as the study of the existing solution and the objectives of the presented project.
1.1 PRESENTATION OF THE HOST COMPANY: SIFAST
1.1.1 Enterprise profile
SIFAST is a Digital Services Company (ESN) created in 2010 by service and IT
professionals. It is based in Tunisia and located in France.
SIFAST is one of Tunisia's Near Shore Francophone leaders. It delivers IT services that
help its customers to improve their efficiency and profitability. Thanks to its mastery of new
technologies, its outsourcing experience and its collaborative approach, it helps its clients to
develop innovative solutions to meet their challenges.
Its main values show the determinism of its teams. In fact, the strength keys for their
success are the respect for others, the responsibility, the cultural diversity, the excellence and the
innovation.
1.1.2 Organizational structure of SIFAST
To ensure a good presentation and a good functioning of its services, SIFAST company is
based on the interaction of several directions and complementary departments as illustrated in
Figure 1.
Chapter 1: Background and aims Redevelopment of SIFAST website
6
1.1.3 SIFAST solutions
SIFAST company offers several solutions and covers many activity domains such as:
• WEB
• E-COMMERCE
• MOBILE
• Systems and networks engineering.
1.1.4 System quality
SIFAST was inspired by the different standards of the market and its Near Shore
experience to define its quality system while maintaining flexibility and agility. By constantly
taking into account the importance of projects and the criticality of information, SIFAST has put
in place safeguards to collaborate with confidence and transparency:
➢ Software compliant with French and European rights.
Drupal
.Net/Open ERP
Technical director
JAVA EE Mobile/ UnityLAMP DB manager
Assistante
HR manager
Financial
Manager
Site director
System & network
Methods & process
Contract&sourcing
manager
WEB integrationSymfony
Figure 1: SIFAST organisation architecture
Chapter 1: Background and aims Redevelopment of SIFAST website
7
➢ Software compliant with market norms and standards.
➢ Software that meets the requirements and the needs of the customers.
➢ Confidentiality and guarantee of intellectual property.
➢ Security system: Access, backup, inverters.
1.1.5 Technical environment
SiFAST uses several technical solutions as Gitlab, Jenkins, Redmine, etc. We will detail
some of them in as the following:
1.1.5.1 Gitlab
GitLab [1] is a system for managing Git repositories. It is written in Ruby and allows to
easily deploy meaningful version control for the code.
It was first published on GitHub in October 2011 and has grown into a powerful tool since
then. GitLab is published under the MIT license1
, but it is mandatory to keep a mention of the
author when redistributing the code.
1.1.5.2 JENKIS
JENKIS [2] is an open source automation server. With Jenkins, organizations can
accelerate the software development process through automation. Jenkins manages and controls
development lifecycle processes of all kinds, including build, document, test, package, stage,
deployment, static analysis and many more
1.1.5.3 Redmine
Redmine [3] is a flexible project management web application, written in Ruby on Rails
framework. It is cross-platform and cross-database system. Redmine is open source and released
under the terms of the GNU General Public License v22
.
1
https://opensource.org/licenses/MIT
2
https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
Chapter 1: Background and aims Redevelopment of SIFAST website
8
1.1.5.4 SonarQube
SonarQube (formerly known as Sonar) [2] is an open source tool suite aiming to measure
and analyse the quality of the source code. It is written in Java but is able to analyse code written
by 20 different programming languages. Code analysis may be started manually by executing a
so-called sonar runner but SonarQube’s full is potential and especially revealed when used in
combination with continuous integration such as a Jenkins server.
1.1.5.5 Docker
The Docker [3]platform is the only container platform to build, secure and manage the
widest array of applications from development to production both on premises and in the cloud.
Docker Community Edition [CE] empowers developers with tools to build applications and
Docker Enterprise Edition [EE] provides IT with multi-architecture operations at scale. Docker
delivers both an engine for innovation that modernizes without disruption while reducing total
costs by more than 50%. Unlike other solutions that specialize in a narrow slice of the enterprise
IT portfolio, Docker delivers operations at scale by addressing a diverse set of applications and
infrastructure for both developers and IT.
1.1.5.6 Nexus
Nexus repository manager [4] is a free, open source repository for storing and managing
code artifacts in various formats. It allows to proxy, collect, and manage the dependencies in a
collection of JARs. It facilities the distribution of the software.
1.1.6 Software factory of SIFAST
Software factory is a software product line that configures extensive tools, processes, and
content using a template based on a schema to automate the development and the maintenance of
variants of an archetypical product by adapting, assembling, and configuring framework-based
components
Developing applications using a software factory can provide many benefits such as:
• Consistency: Software factories can be used to build multiple instances of a software
product line (a set of applications sharing similar features and architecture), making it
Chapter 1: Background and aims Redevelopment of SIFAST website
9
easier to achieve consistency. This simplifies governance and also lowers training and
maintenance costs.
• Quality: Using a software factory makes developing easier for developers to learn and
implement proven practices. Thanks to the integration of reusable code, developers are able
to spend more time working on features that are unique to each application and reducing
the likelihood of design flaws and code defects. Applications developed using a software
factory can also be verified before deployment, ensuring that factory-specific best practices
were followed during development.
• Productivity: Many application development activities can be streamlined and automated,
such as reusing software assets and generating code from abstractions of the application
elements and mechanisms.
For this purpose, SIFAST uses a particular architecture for its projects or each one of its
projects, whatever the used technology (Java, .NET, Mobile, Unity, PHP, JS ...),
So, at the start of any project, the developer should create 4 Jenkins jobs from the first line
of code (integration, quality audit, delivery and deployment jobs should be operational and tested
from the first commit / push).
At each code change, the software brick will execute a set of tasks (compilation, tests,
packaging, deployment).
1.2 THE CONTEXT OF THE PROJECT
It is imperative for every company to have a website. The more professional the website is,
the more advantages are gained such as the marketing of products, the communication with clients,
etc. In this context, SIFAST company has its own website to present its products and facilitate the
communication with its clients.
The actual version of the SIFAST website contains the main functionalities, but it was
released with an old version of web technologies which causes some problems related to the
download the website pages from the webserver to the client navigator, etc. In addition, within its
Chapter 1: Background and aims Redevelopment of SIFAST website
10
evolution strategy, SIFAST aims to improve and add new features to the actual website version
such as the automatic selection of candidatures according to a job offer and releasing some statics
of social networks to help in making decisions.
1.3 DESCRIPTION OF THE CURRENT WEBSITE
The existing SIFAST website3
was created using the old version of PHP (5.1) and the old
version of Symfony framework [5] (2.8). To improve and add new features, we need to take the
compatibility of the modern solutions and technologies into consideration .
In fact, the existing solution allows citizens to consult, activate alerts using an email and
sent notes in the Front Office. Even though the existing website seems to cover the main
functionalities, it will be interesting to add new features such as an automatic management of
recruitment applications. The existing solution processed as follows: The Human Resource
manager indicates the information related to a job offer and decides to publish it or not. The user
does a search on job offers already published in the Front Office.
A user could apply for a job offer at SIFAST according to two methods:
▪ Application for a job offer: a list of job offers is displayed on the website or sent
by email to the candidat. This latter applies to a specific job offer.
▪ Spontaneous application: the candidate submits his candidature without choosing
a job offer.
The actual recruitment process is described as follows:
▪ A first CV selection of all candidates (either by spontaneous application or by application
for a job offer) is done manually.
▪ If an application is accepted, it is automatically moved to the second selection, otherwise
it passes to the rejected list.
▪ If an application is accepted at the second selection, an interview date will be assigned to
the appropriate candidate.
3
https://www.sifast.com/
Chapter 1: Background and aims Redevelopment of SIFAST website
11
▪ After the interview, the recruiters who attended assign grades for this candidate according
to three categories (HR, Technique, Language).
1.3.1 Criticism of the existing website
The current SIFAST website suffers from a certain number of deficiencies that can only be
definitively resolved through a redesign of the existing solution. In the following, we describe
some of these deficiencies:
▪ The upgrade to new features using the technology Symfony2.8 is complicated and difficult.
▪ The Alert activation by email lacks security.
▪ The search of job offers by keywords in the Front Office, is not well represented.
▪ The Management and the selection of candidatures is not functional.
▪ The interview reservation and the email sending to confirm the date, is also not functional.
1.3.2 Differences between Symfony 2.8 and Symfony 4
As the first purpose of the project is to migrate SiFAST website from Sf4
2.8 to Sf 4 this
section compares between both versions.
Symfony is an open-source PHP web framework with an emphasis on less memory
consumption and faster execution times, Symfony is apt for complex web applications with
300000 developers from more than 120 countries. It has won the reputation of the most mature
and reliable PHP framework and is the number 1 choice for the enterprise web applications.
The framework is presented in the form of a ‘bundle’ that the developer can use repeatedly in one
or more projects. It simplifies and speeds up the development process and offers a functional and
expandable environment with native security features.
For several years, the framework Symfony has seen improvements and developments with
different releases. The main important releases are: Sf 2.8, Sf 3.4 and currently Sf 4. In my project,
we will migrate the existing website from Symfony 2.8 (Sf 2) to Symfony4 (Sf 4).
Thought, there are some major differences between Sf2 and Sf4. In fact, the goal of
Symfony 4 is to keep a light structure to reduce the complexity of applications. The code becomes
4
Sf :Symfony
Chapter 1: Background and aims Redevelopment of SIFAST website
12
"Bundleless", which means that there is no need to use "Bundles" anymore. In fact, developers are
free to organize their code in the 'src /' folder the way they are pleased. But that does not mean that
bundles are obsolete. The "bundles" developers usually use will be available to set up features in
the application, but just that it doesn’t have to be created in the application.
In addition, Sf4 is more powerful than the previous versions, because it is faster in the
performance and more suited to the cloud infrastructure.
Figure 2 illustrates the evolution of the Symfony Framework.
Figure 2: Comparison between different versions of Symphony framework structure
This figure, presented by Piotr Grabski-Gradziński, a member of Symfony community
[6]demonstrates that the structure of directories was changed and improved.
Chapter 1: Background and aims Redevelopment of SIFAST website
13
1.4 AIMS OF THE PROJECT
Two main aims of the project are identified as fellow:
1.4.1 A new version of SIFAST website
After having cleared up the deficiency observed at the level of criticism of the existing solution,
the solution proposed is to redevelop the website with a new technology and prospects to reach the
next level of evolution. This solution consists of:
1. Renovate the website using Sf 4 and Php 7
2. Add the candidature management through an automatic selection of CV.
3. Improve the alerts security and management.
4. Add the interviews management.
5. Add statistics and analyses of social networks related to job offer shared by SiFAST
company.
1.4.2 A workflow solution for CV selection
There are several workflow solutions for CV selection, each one of them responds to a
specific need.
In general, there are many ways to construct a resume (CV). For example, it is possible to
use an existing template to create a CV via online tools or to write a CV using a specific tool such
as Illustrator tool, etc.
However, in my work, the resume file does not matter in which tool it was written with, as
long the extension of resume should be PDF.
After a brief study, we cite the following solutions:
• Cleverstaff, [7]: a comprehensive applicant tracking and recruitment automation
software. It is a single platform for all the necessary tools recruiters requires in
looking for qualified talents, keeping track of vacant positions, and organizing
pertinent data.
Chapter 1: Background and aims Redevelopment of SIFAST website
14
• Livecareer [8]: the resume-Check has been designed by experts to identify 20 of
the most common resume mistakes. Resume-Check instantly analyses your
resume’s grammar, spelling, organization, length, writing style, and other key
areas.
• Rchill [9]: a Natural Language Processing (NLP) based technology which reads
analyse any resume/CV and gives standard XML /HR XML structure. It provides
resume/CV services to Job Sites, ATS / CRM Applications, Large Company IT
Departments, Recruiters, ERP Systems like SAP, People-soft and many other
Enterprise Solutions.
The problems with these different solutions and APIS are:
Cleverstaff tool only uses resume files that are provided by LinkedIn. Livecareer is intended for
candidates more than recruiters. Rchill uses its own cloud which does not respect the data privacy.
Moreover, these three solutions are not free and requires payment.
Consequently, the different existing solutions, do not satisfy our needs. In my work, the
files are posted by different people, and each CV file is written in different way and by different
tools.
CONCLUSION
This chapter, describes the background and the aims of the work. More precisely, we
presented the host organisation, the study of the existing solution and the objectives of the project.
The application specification and needs are detailed in the next chapter.
Redevelopment of SIFAST website
15
Chapter II: Specification & Design
Chapter 2: Specification & Design Redevelopment of SIFAST website
16
INTRODUCTION
This chapter is devoted to analysis, specification and design. We will start by defining the
methodology of work, then the product backlog, and finally we will specify the functional and
non-functional requirements. The analysis of these specifications allows me to identify the
different functionalities and actors of the system. The UML diagrams resulting from this analysis
are produced in the last section of the chapter.
2.1 METHODOLOGY OF WORK
2.1.1 Scrum
Scrum [10] is an agile software development process, best suited for projects with rapidly
changing requirements. Figure 2 illustrates this methodology.
This section briefly covers the scrum theory and how it is used in the project.
Figure 2: Scrum description
Chapter 2: Specification & Design Redevelopment of SIFAST website
17
2.1.2 Theory
2.1.2.1 Scrum Roles
▪ Product Owner: Acts as a spokesman for the customer and defines features of the product
based on each Backlog item or each specific request of the customer. He should prioritize
these features according to the market value, decide on a release date for the product, and
it is responsible for the profitability of the product. The product owner should also adjust
the contents of the features and their priority after every Sprint and decide if what has been
produced is acceptable.
▪ Scrum Master: Responsible for making sure a Scrum team lives by the values and
practices of Scrum, and for removing any impediments to the progress of the team. As
such, he should shield the team from external interferences, and ensure that the Scrum
process is followed, including issuing invitations to the daily Scrum meetings, sprint
reviews and the sprint planning meetings.
▪ Scrum Team: The group of people developing the product. There is no personal
responsibility in Scrum, the whole team fails or succeeds as a single entity.
2.1.2.2 Sprint Planning Meeting
The sprint planning meeting is attended by the product owner, the Scrum master, the team and
any interested stakeholders. During the meeting, the product owner and the team will go through
the vision, the roadmap, the release plan, and the Product backlog to develop a detailed plan for
the upcoming sprint.
Together, the product owner and the team define a sprint goal, which is a short description of
what should be completed at the end of the sprint. The success of the sprint will later be assessed
during the sprint review meeting against the sprint goal, rather than against each specific item
selected from the product backlog.
Since the product owner decides the scope of a feature, the team usually requires the product
owner to answer all of their questions to estimate the time it will take to finish a backlog item.
The team needs to be well prepared for this meeting. It should dedicate some time during a
sprint to think ahead how the upcoming backlog items could be designed and implemented.
Chapter 2: Specification & Design Redevelopment of SIFAST website
18
Especially if the team is inexperienced and cannot produce a confident estimate of the effort
required to complete a backlog item on their own and needs some additional information.
The team members decide how much work they can successfully take into the sprint based on
the team size, available hours, and the estimated level of productivity. When the team has selected
and committed to deliver a specific set of features from the highest priority items in the backlog,
the Scrum master leads the team in a planning session to break these features down into tasks and
form the Sprint backlog.
2.1.2.3 Daily Scrum Meeting
The daily Scrum meeting is a short meeting where the team members inform each other of
what they have done, what they plan to do and if they have any impediments. This is to make sure
that the whole team knows what is happening and to make sure no one is stuck alone with a single
problem for several days. It is timeboxed to 15 minutes to ensure that the team spends more time
developing than talking about developing.
2.1.2.4 Sprint Review Meeting
At the end of each sprint, a sprint review meeting is held. The first half of the meeting is
set aside to demonstrate the potentially shippable prototype to the product owner that has been
developed during the sprint.
The product owner leads this part of the meeting and invites all interested stakeholders to
attend. The product owner determines which items on the product backlog have been completed
in the sprint. It is usually not allowed to use PowerPoint slides and spend more than two hours
preparing for the demonstration.
2.1.2.5 Retrospective
After the sprint review meeting the Scrum team goes through a retrospective of the sprint
with the Scrum master. The team members assess the way they worked together in the sprint and
identify things that went well and should be encouraged in the future, as well as things that could
be improved. The results of this should be visible to the team during the following sprints. It is
vital, therefore, that the feedback received at the retrospective be followed up on. Otherwise, the
team may quickly see it as a waste of time.
Chapter 2: Specification & Design Redevelopment of SIFAST website
19
2.1.3 Implementation of SCRUM
2.1.3.1 Scrum Roles
▪ Product Owner: My supervisor was the product owner for this project and acted as
spokesman for SIFAST and its needs.
▪ Scrum Master: My supervisor was also the Scrum Master, where he encouraged me to
bring new thoughts and improve the website.
▪ Scrum Team: There were no predefined roles we took on, we just made sure to finish
developing my tasks and they were reviewed by my supervisor.
2.1.3.2 Sprint Planning Meeting
Most of the time, the sprint planning meetings went as planned, though sometimes the
product owner was unavailable. In these cases, the meeting simply needed to be scheduled one or
two days later. These extra days would come in handy for cleaning up what we had produced the
earlier sprint.
2.1.3.3 Daily Scrum Meeting
Daily Scrums took place at 10AM. Employees could arrive as early as 8AM and work until
then, as long as they did arrive before the meeting started it. So, until the meeting took a place, we
had the enough time to recall what exactly we worked on the day before, as well as deciding which
task to work next.
2.1.3.4 Sprint Review Meeting
The review meetings were always held on Fridays. The product owner would invite me to
present my work in the meeting room along with any other interested parties. Then we demonstrate
the new features on a live system and answer any questions that might arise during the demo.
Usually we would spend one or two days before the demo checking if everything was working and
run test demonstrations internally.
2.1.3.5 Retrospective
During the work, we had several retrospectives. After each sprint we wrote what we thought
was good and what should be improved on post-its. Then we remote them to the Redmine and pass
to a new sprint.
Chapter 2: Specification & Design Redevelopment of SIFAST website
20
Figure 3 summaries the application of Scrum method in my project. Each release consists of
two sprints and each sprint lasted for four weeks.
Release1
Release 2
Website settings
Visitor messages
Availabilities management
Experiences management
Domains management
Regions managementSPRINT 1
User management
Job Offer management
Candidature management
Menu management
Dictionary management
SPRINT 0
Job Offer research
References management
Technical Expertise
management
Social share management
SPRINT 2
Candidature selection
Alerts management
Interviews management
Visualisation
SPRINT 3
Daily scrum
meeting
Sprint review
meeting
Sprint Increment
Delivered
Sprint Planning
meeting
Sprint
4 weeks
24h
Sprint
retrospective
Figure 3: Application of Scrum in my project
Chapter 2: Specification & Design Redevelopment of SIFAST website
21
2.2 BACKLOG
The backlog is simply a list of all things that needs to be done within the project. It consists
of a list of features and functionalities to be realized. These functionalities, expressed in the form
of needs, are prioritized by the Product Owner which makes it possible to establish an order to
respect during the realization of the application.
Table 1 presents the product backlog.
Table 1: Product Backlog
Feature
Id
Feature
US
Id
User Story
Estimation
(4H)
Priority
1
Users
Management
1.1
As an admin I want to login to the
back-office
2 must
1.2
As an admin I want to logout of
the back-office
2
1.3
As an admin I want to add an
admin
1
1.4
As an admin I want to edit an
admin
1
1.5
As an admin I want to delete an
admin
1
1.6
As an admin I want to change a
user role
1
1.7
As an admin I want to consult
users list
1
2
Offers
Management
2.1
As an admin I want to add a job
offer
1
2.2
As an admin I want to edit a job
offer
1
2.3
As an admin I want to delete a job
offer
1
2.4
As an admin I want to publish a
collection of job offers
simultaneously
1
2.5
As an admin I want to get all job
offers in the back office
2
2.6
As a visitor I want to get offers in
front office
2
2.7
As a visitor I want to get an offer
details in front office
1
Chapter 2: Specification & Design Redevelopment of SIFAST website
22
Feature
Id
Feature
US
Id
User Story
Estimation
(4H)
Priority
3
Candidature
Management
3.1
As a visitor I want to submit a
spontaneous candidature
4
3.2
As a visitor I want to submit a
candidature on a published offer
4
3.3
As an admin I want to get
candidatures by state (accepted/
rejected )
1
3.4
As an admin I want to get
candidatures by Type
1
3.5
As an admin I want to get
candidatures details
1
3.6
As an admin I want to delete a
candidature
1
3.7
As an admin I want to edit a
candidature state
1
4
Management
Menu
4.1
As an admin, I want to add a
Menu to the front-office
2
4.2
As an admin, I want to edit a
Menu
1
4.3
As an admin, I want to delete a
Menu
1
4.4
As an admin, I want to get the list
of Menu
1
5
Dictionary
Management
5.1
As an admin, I want to create a
dictionary
1
5.2
As an admin, I want to update a
dictionary
1
5.3
As an admin, I want to delete a
dictionary
1
5.4
As an admin, I want to get the list
of dictionaries
1
6
Front office
management
6.1
As a visitor I want to consult the
frontOffice
3
6.2
As an admin , I want to hide the
frontOffice visibility
4
6.3
As an admin , I want to set the
frontOffice as "under
construction"
1
7
Visitor messages
management
7.1
As a visitor I want to send a
message through the front-office
3
7.2
As an admin I want to receive sent
messages by email
3
Chapter 2: Specification & Design Redevelopment of SIFAST website
23
Feature
Id
Feature
US
Id
User Story
Estimation
(4H)
Priority
7.3
As an admin I want to get the list
of messages in the back-office
1
7.4
As an admin I want to get
message details
1
7.5
As an admin I want to delete a
message
1
8
Availabilities
management
8.1
As an admin, I want to add and
edit an availability
1
8.2
As an admin, I want to get the list
of availabilities
1
8.3
As an admin, I want to delete an
availability
1
9
Experiences
management
9.1
As an admin, I want to add and
edit an experience
1
9.2
As an admin, I want to get the list
of experiences
1
9.3
As an admin, I want to delete an
experience
1
10
Domains
management
10.1
As an admin, I want to add and
edit a domain
1
10.2
As an admin, I want to get the list
of domains
1
10.3
As an admin, I want to delete a
domain
1
11
Regions
management
11.1
As an admin, I want to add and
edit a region
1
11.2
As an admin, I want to get the list
of regions
1
11.3
As an admin, I want to delete a
region
1
12 Offer research 12.1
As a visitor I want to research
new job offers published in the
site
2
12.2
As a visitor, I want to filter job
offers published in the site
4
12.3
As a visitor, I want to get only 4
job offers by page
2
13
References
management
13.1
As a visitor, I want to get
references
1
13.2
As a visitor, I want to get
references by domain
1
Chapter 2: Specification & Design Redevelopment of SIFAST website
24
Feature
Id
Feature
US
Id
User Story
Estimation
(4H)
Priority
13.3
As a visitor, I want to get
references by country
1
13.4
As an admin, I want to add and
edit a reference
2
13.5
As an admin, I want to get the list
of references
1
13.6
As an admin, I want to delete a
reference
1
14
Expertise
technique
management
14.1
As a visitor, I want to get the list
of technical expertises
1
14.2
As an admin, I want to add a
technical expertise to the front-
office
2
14.3
As an admin, I want to edit a
technical expertise
1
14.4
As an admin, I want to delete a
technical expertise
1
15
Social share
management
15.1
As a visitor, I want to share a job
offer on social network
3 should
15.2
As an admin, I want to get a list of
shared job offers
3
15.3
As an admin, I want to delete a
link of sharing a job offer
3
15.4
As an admin, I want to get
informations about the most
preferred job offers
2
16
Intelligent
candidacies
management
16.1
As an admin I want to get a
resume content
6
16.2
As an admin I want to get
applications selected by relevance
3
17
Alerts
management
17.1
As a visitor, I want to create an
alert to get notified of new offers
1
17.2
As a visitor, I want to receive
mails every time a suitable offer
is available
2
17.3
As a visitor, I want to unsubscribe
of alert mailing list
2
17.4
As an alert subscriber, I want to
unsubscribe from received mails
2
Chapter 2: Specification & Design Redevelopment of SIFAST website
25
Feature
Id
Feature
US
Id
User Story
Estimation
(4H)
Priority
18
interviews
management
18.1
As an admin, I want to check
recruiters availability
18.2
As an admin, I want to check
meeting rooms availability
3
18.3
As an admin, I want send an email
an interviewer
3
18.4
As an admin, I want send an email
the applicant
2
18.5
As an admin, I want to update the
meeting room calendar
3
18.6
As an admin, I want to update an
interviewer calendar
2
18.7
As an admin, I want to add an
interview
3
18.8
As an admin, I want to edit an
interview
2
18.9
As an admin, I want to cancel an
interview
1
19 Visualisation 19.1
As an admin, I want to get the
clicks number of shared job offers
3
19.3
As an admin, I want to get
informations about the
candidature skills and
experiences
3
19.4
As an admin, I want to be notified
of new spontaneous application
3
19.5
As an admin, I want to be notified
of new applications of offer
3
19.6
As an admin, I want to be notified
of new mails
3
19.7
As an admin, I want to be notified
of new alert
3
19.8
As an admin, I want to get a list of
most shared offers
3
19.9
As an admin, I want to get number
of click for each link
3
Chapter 2: Specification & Design Redevelopment of SIFAST website
26
2.3 DESIGN DIAGRAMS
Conceptual modelling is an important step since it describes the process of software
methods, functions, objects, and the overall structure and interaction of the code so that the
resulting functionality will satisfy users requirements.
In this section we will present website design using two diagrams types (Use Case and
Classes diagrams).
2.3.1 Use case Diagrams
The Use Case Diagram identifies the users of the system (actors) and their interactions with
the system. Also, it allows to give a global vision of the functional behaviour of a software system.
2.3.1.1 General Use case
The general use case represents the big image of the interaction between actors and system.
The main actors are: visitor, employer, candidate and webmaster.
Figure 4 presents the general use case.
Chapter 2: Specification & Design Redevelopment of SIFAST website
27
Figure 4: General use case
The candidate inherits the visitor functionalities. And both of them do not need an
authentication. The webmaster inherits all the functionalities of the employer. And both of them
need to be authenticated
2.3.1.2 Refinement and textual description of priority use cases
A. Use case of website consultation
Figure 5 presents the use case Diagram of the Website consultation.
Chapter 2: Specification & Design Redevelopment of SIFAST website
28
Figure 5: Visitor consultation use case
The Visitor could consult the Website, send a message, activate or disactivate an alert after
having sent a valid email.
Table 2 presents the textual description of the use case related to the message sending.
Table 2: Textual description of message sending
Title Send message
Description Visitor sends message through the website
Primary Actor Visitor
Preconditions None
Postconditions Message sent
Main Success Scenario 1. Message postulation form page is displayed
2.Insert data to the required fields of the form
3.Click on the submit button
4.The system verifies that all required fields
are filled
Chapter 2: Specification & Design Redevelopment of SIFAST website
29
5.If the verification succeeds, the system saves
the message and returns a validated message
ALTERNATIVES 5.a. Verification failed
5.a.1. Error message will be displayed.
Table 3 presents the textual description of the use case related to activating alert
Table 3: Textual description of activating alert use case
Title Activate alert
Description Visitor activate alert
Primary Actor Visitor
Preconditions None
Postconditions Alert activated
Main Success Scenario 1. The alert form page is displayed
2.The visitor inserts data to the required fields
of form
3.He clicks on the submit button
4.The system verifies that all required fields
are filled
5.If the verification succeeds, the system saves
the alert and returns a message
6.The system sends a verification email to
the Visitor with a token.
Chapter 2: Specification & Design Redevelopment of SIFAST website
30
7.If the email is well received, the system saves
the alert
ALTERNATIVES 5.a. Verification failed
5.a1. An error message will be displayed.
7.a. Email not received
7.a1.The visitor repeats the process
Table 4 presents the textual description of the use case related to the disactivating alert.
Table 4: Textual description of disactivating alert
Title Disactivate alert
Description Visitor disactivate alert
Primary Actor Visitor
Preconditions Alert activated
Postconditions Alert disactivated
Main Success Scenario 1. If a visitor disactivates alerts by email, the
system deletes the saved alert mails and
displays the success message in the website on
the alert page.
ALTERNATIVES 1.a. The visitor displays the alert web page.
1.a1. He clicks on the disactivate button.
1.a2. The system displays a form
1.a3. The visitor inserts his mail
1.a4. He clicks on poste button
Chapter 2: Specification & Design Redevelopment of SIFAST website
31
1.a5.The system deletes the alert and returns
success message.
Figure 6 represents the use case of a job application or a candidature. The candidate inherits
the visitor functionalities, but he is also allowed to apply for an offer or submit a spontaneous
candidature.
Figure 6: Job application use case
Table 5 presents the textual description related to the use case “Job application”.
Table 5: Textual description of job application
Title Job application by offer
Description The candidate consults job offers. He selects a
job offer and submits his candidature.
Primary Actor Candidate
Chapter 2: Specification & Design Redevelopment of SIFAST website
32
Preconditions Selected offer
Postconditions Job application posted
Main Success Scenario 1.The candidate fills the form.
2.The candidate clicks on the submit button.
3.The system verifies the inputs.
4.If the verification succeeds, the system saves
the candidature.
5.The system returns a success message and
resets the form.
ALTERNATIVES 4.a. Verification failed.
4.a1. Error message is displayed by the system
Table 6 presents the textual description of the use case related to the spontaneous
application.
Table 6: Textual description of spontaneous application
Title Spontaneous application or candidature
Description The candidate submits his candidature.
Primary Actor Candidate
Preconditions None
Postconditions Candidature posted
Main Success Scenario 1.The candidate fills the form.
2.He clicks on the submit button.
3.The system verifies the inputs.
Chapter 2: Specification & Design Redevelopment of SIFAST website
33
4.If the verification succeeds, the system saves
the candidature.
5.Tthe system returns a success message and
resets the form.
ALTERNATIVES 4.a. Verification failed.
4.a.1.An error message is displayed by the
system
B. Use case of website management
Figure 7 presents the use case of the website management; the employer could manage
offers and publish them. The employer could also consult messages, manage candidature, and
manage interviews.
Figure 7: Website management use case
Chapter 2: Specification & Design Redevelopment of SIFAST website
34
Table 7 presents the textual description of the use case related to the job offer management.
Table 7 : Textual description of the job offer management
Title Offer management
Description The employer could create, update a job offer
or delete it.
Primary Actor Employer
Preconditions There is no job offer or there is a non-published
job offer
Postconditions Offer created, updated or deleted
Main Success Scenario 1.The employer creates a job offer.
2.The employer updates the state of the job
offer to published.
3.The employer could delete a job offer
ALTERNATIVES 2.a. The employer updates the offer details
Table 8 presents the textual description of the use case related to the candidature
management.
Table 8 : Textual description of the candidature management
Title Candidature management
Description The employer consults candidatures list, he
could change the state of candidature to
accepted. And he could also send email of
acceptation.
Chapter 2: Specification & Design Redevelopment of SIFAST website
35
Primary Actor Employer
Preconditions At least there is candidature in the list of
candidatures.
Postconditions Mail sent / none
Main Success Scenario 1.The employer consults accepted and rejected
candidatures.
2.He could update candidature or change the
status to accepted.
3.He could send acceptance mail.
ALTERNATIVES None
Table 9 presents the textual description of the use case related to the interview
management.
Table 9 : Textual description of interview management
Title Interview management
Description The employer selects the final candidates and
clicks on the button to create the interview.
Primary Actor Employer
Preconditions Selected candidate
Postconditions Mail sent
Main Success Scenario 1.The employer verifies when the candidate is
available through an email.
2.He clicks on create interview button.
Chapter 2: Specification & Design Redevelopment of SIFAST website
36
2.The system checks the available recruiters
and the meeting room.
3.The employer chooses the recruiter and the
convenient time.
4.The system reserves the meeting room, sends
an email to the recruiter and the candidate, to
inform them with the details.
ALTERNATIVES None
C. Use case of the website maintaining
Figure 8 presents the use case of the website maintaining. The webmaster inherits all the
functionalities of the employer. In addition, he could manage employers and settings after the
authentication.
Figure 8: Website maintaining use case
Table 10 presents the textual description of the use case related to the settings management.
Chapter 2: Specification & Design Redevelopment of SIFAST website
37
Table 10: Textual description of settings management
Title Settings management
Description The webmaster after the authentication, could
manage the front Office Menu, configure and
maintain the email service of the website.
Primary Actor Webmaster
Preconditions Have a registered account in the site
Postconditions None
Main Success Scenario 1.Create a front office menu.
2.Update Menu status to publish
3. Configure the email settings.
ALTERNATIVES 2.a.Update Menu status to unpublished
Table 11 presents the textual description of the use case related to the employers
management.
Table 11 : Textual description of employers management use case
Title Employers management
Description The webmaster manages the employers after
the authentication.
Primary Actor Webmaster
Preconditions Have a registered account in the site
Postconditions None
Main Success Scenario 1.The webmaster authenticate.
Chapter 2: Specification & Design Redevelopment of SIFAST website
38
2.He grants roles to employers
ALTERNATIVES None
2.3.2 Class Diagram
In this section, we will present the general class diagram. This latter is widely used in
modeling object oriented systems, because it is the only UML diagram mapped directly with
object-oriented languages. The general class diagram gives a vision about the different classes and
methods used in creating the website and includes the attributes and the operations of each class
and their relation mapping. Figure 9 presents the class diagram.
This diagram will be explained in details, how it was created and implemented in the next
chapter.
CONCLUSION
In this chapter, we have mentioned the methodology we used to create the project and justify
it. Moreover, we have represented the product backlog to explain the main work to do. And in the
final section, we have covered all the possible scenarios of use case diagrams to make the project
comprehensive.
Chapter 2: Specification & Design Redevelopment of SIFAST website
39
Figure 9: Class diagram
Redevelopment of SIFAST website
40
Chapter III: Implementation
Chapter 3: Implementation Redevelopment of SIFAST website
41
INTRODUCTION
This chapter is dedicated to present the application architecture, the work environments, the
different sprints and their planification. Each sprint contains the sprint backlog and the UML
design diagrams.
3.1 LOGICAL ARCHITECTURE OF THE SOLUTION
The definition of the logical application architecture is an important step in the design
process. In fact, the logical architecture depends on a number of factors such as requirements for
performance, perspectives, scalability, modularity and extensibility.
In my work, we propose an application architecture that promotes a clear separation of
responsibilities, reusability and scalability through the use of the Symfony Framework [5].
Figure 10 presents an overview of the logical architecture of the proposed solution
Figure 10: An overview of the logical architecture of the proposed application
Chapter 3: Implementation Redevelopment of SIFAST website
42
As illustrated in the figure, in my work we used the three-tier architecture. It is a software
design pattern and a well-established software architecture based on client-server architecture. In
fact, the functional logic, the data access, the computer data storage and the user interfaces are
developed and maintained as independent modules on separate platforms. In my work, the three
tiers are:
1. Presentation Tier: Occupies the top level and displays information related to services
available on a website. This tier communicates with other tiers by sending results to the
browser and other tiers in the network.
In my project, the presentation layer provides the logical navigation. It consists of a front
block contains pages written in HTML5, JavaScript for the visual presentation of
information and it also relates back-end part with front-end part in order to ensure the
exchange of data.
2. Business Tier: Also called the middle tier, application logic or logic tier. This tier is pulled
from the presentation tier. Application server controls application functionality by
performing detailed processing.
In my project, as illustrated in the figure above, the business logic includes controllers,
repositories and entities. They are all written in PHP. Repository represents the middle
communicator between the controller and the entities to provide another layer and restricts
direct interactions with the data.
3. Data Tier: Houses database servers where information is stored and retrieved. Data in this
tier is kept independent of the application servers or the business logic.
For my project, we have used MySQL host, an open source relational database
management system. It is built with the structure query language SQL. Moreover, Symfony
applications rely on the independent Doctrine project which is a set of PHP libraries
primarily focused on providing persistence services and related functionality, to define
their model using entities and repositories. In my project, the connection between the Data
layer and the business layer includes the Doctrine tool [11] which is a set of PHP libraries
providing persistence services. More precisely, we have used ORM (Object Relational
Mapping) [12] which is a mechanism making possible to address, access and manipulate
Chapter 3: Implementation Redevelopment of SIFAST website
43
objects without having to consider how those objects relate to their data source. The
doctrine project also includes DBAL (Data Base Abstraction Layer) packages to deliver an
access to databases by providing a single low-level programming interface to the
application developer. The Doctrine includes also PDO (PHP data objects) extension that
defines a lightweight and consistent interface for accessing databases in PHP [11]. Figure
11 illustrates the doctrine project architecture.
Figure 11: Architecture of the doctrine project
In addition, the framework Symfony4 also implements the design pattern Model View
Controller (MVC) explained as follows:
• Model: It directly manages the data, logic and rules of the application. In my work, the
model contains entities and repositories. It provides the view with necessary data using
controller as communicator.
• Controller: is the link between the model and the view. The controller receives inputs
and commands from user handed over by the view. In my work the controller is a set
of pages written in PHP.
Chapter 3: Implementation Redevelopment of SIFAST website
44
• View: is the friendly interfaces presented to the client. In my work, these interfaces are
realised with HTML, JavaScript, CSS and Twig.
3.2 WORK ENVIRONMENTS
In this part, we will present the material and technical environments related to the application
realisation.
3.2.1 Material environment
Table 12 presents the material characteristics of the computer used in the application
implementation.
Table 12: Computer characteristics
Characteristic Type
Processor 2,2 GHz Intel Core i7
RAM 8 Go
Operating system Ubuntu16.4
3.2.2 Software tools
▪ StarUML [13]: is an open source software modelling tool that supports UML (Unified
Modelling Language). It is based on UML version 1.4, provides eleven different types of
diagram and it accepts UML 2.0 notation. It actively supports the MDA (Model Driven
Architecture) approach by supporting the UML profile concept and allowing to generate
code for multiple languages.
▪ Visual studio code [14]: is a new type of tool that combines the simplicity of a code editor
with what developers need for their core edit-build-debug cycle. Code provides
comprehensive editing and debugging support, an extensibility model, and lightweight
integration with existing tools.
3.2.3 Development environment
The technical choices concerning the development languages were imposed by the Product
Owner from the beginning of the project.
Chapter 3: Implementation Redevelopment of SIFAST website
45
• Php [15]: is a script language and interpreter that is freely available and used primarily on
Linux Web servers. PHP, originally derived from Personal Home Page Tools, now stands
for PHP: Hypertext Preprocessor, which the PHP FAQ describes as a "recursive
acronym."
• HTML5 [16]: is a revision of the Hypertext Markup Language (HTML), the standard
programming language for describing the contents and appearance of Web pages.
• CSS3 [17]: Cascading Style Sheets is a style sheet language used for describing
the presentation of a document written in a markup language like HTML. CSS is a
cornerstone technology of the World Wide Web, alongside HTML and JavaScript.
• MySQL [18]: is an open-source relational database management system. Its name is a
combination of "My", the name of the co-founder Michael Widenius's daughter, and
"SQL", the abbreviation for Structured Query Language
• Apache server [19]: the Apache Software Foundation is a cornerstone of the modern Open
Source software ecosystem – supporting some of the most widely used and important
software solutions powering today's Internet economy.
3.3 RELEASE1: RENOVATE THE WEBSITE USING SYMFONY 4
The first release contains two sprints. Sprint 0 includes the initialisation of the work and
the candidature management, and Sprint 1 contains the realisation of the job offer management
and the related classes.
3.3.1 Backlog of Sprint 0
Table 13 presents the Backlog of sprint0.
Table 13: Sprint0 Backlog
US
Id
User Story Task Id Task Estimation(4H)
1.1
As an admin I want to
login to the back-office
1.1-1 install Fos user bundle 0.5
1.1-2 configure Fos user bundle 1
1.1-3 install sonata admin bundle 1
1.1-4 configure sonata admin 1
1.1-5 set up redirection paths 1
1.1-6 set up login rights 1
1.2 1.2-1 create Redirection Controller 1
Chapter 3: Implementation Redevelopment of SIFAST website
46
US
Id
User Story Task Id Task Estimation(4H)
As an admin I want to
logout of the back-office
1.2-2 add redirection action 0.25
1.3
As an admin I want to add
a user
1.3-1
Override user add action
function
1
1.4
As an admin I want to edit
a user
1.4-1
override user edit action
function
1
1.5
As an admin I want to
delete a user
1.5-1
override user delete action
function
1
1.6
As an admin I want to
grant roles to users
1.6-1 define and grant roles to users 1
1.7
As an admin I want to
consult users list
1.7-1
override user list action
function
0.5
2.1
As an admin I want to add
a job offer
2.1-1 create job offer entity
2.1-2 create job offer admin class 1
2.1-3
override job offer add action
function
2.2
As an admin I want to edit
a job offer
2.2-1
override job offer edit action
function
1
2.3
As an admin I want to
delete a job offer
2.3-1
override job offer delete
action function
1
2.4
As an admin I want to
publish a collection of job
offers simultaneously
2.4-1
create publish Batch action in
crud controller
2
2.5
As an admin I want to get
all job offers in the back
office
2.5-1 override list action of job offer 0.5
2.6
As visitor I want to get job
offers in front office
2.6-1 create a job offer controller
2.6-2 create job offers list action
2.6-3 create job offer form 4
2.6-4 create job offer view
2.7
As visitor I want to get a
job offer details in front
office
2.7-1 create job offer show action 1
2.7-2 create job offer show view 1
3.1
As visitor I want to submit
a spontaneous candidature
3.1-1 create candidature entity
3.1-2 create candidature controller
3.1-3
add spontaneous candidature
submit action to candidature
controller
4
3.1-4
create spontaneous
candidature submit view
Chapter 3: Implementation Redevelopment of SIFAST website
47
US
Id
User Story Task Id Task Estimation(4H)
3.2
As visitor I want to submit
an candidature on a
published job offer
3.2-1
add job offer candidature
submit action to candidature
controller
1
3.2-2
add job offer candidature
submit view
1
3.3
As an admin I want to get
candidature by state
(accepted/ rejected) and
type
3.3-1
accepted candidature by job
offer list
1
3.3-2
rejected candidature by job
offer list
1
3.3-3
accepted spontaneous
candidature list
1
3.3-4
rejected spontaneous
candidature list
1
3.4
As an admin I want to get
candidature details
3.4-1
override show action of
candidature
0.25
3.5
As an admin I want to
delete a candidature
3.5-1
Add delete action to
candidature controller
0.25
3.6
As an admin I want to edit
a candidature state
3.6-1
override edit action of
candidature
0.25
4.1
As an admin, I want to add
a menu to the front-office
4.1-1 create menu entity 0.25
4.1-2 create menu admin class 1
4.1-3
register menu admin as a
service
0.15
4.1-4
override add action in menu
admin
1
4.2
As an admin , I want to edit
a Menu
4.2-1 override edit action in menu
admin
1
4.3
As an admin , I want to
delete a Menu
4.3-1
override delete action in menu
admin
1
4.4
As an admin , I want to
apply an action on the list
of menus
4.4-1
override list action and
override butch action in menu
admin
2
5.1
As an admin , I want to
create dictionary
5.1-1 create dictionary entity 0.25
5.1-2 create dictionary admin class 0.25
5.1-3
register dictionary admin as a
service
1
5.2-3
override add action in
dictionary admin
1
Chapter 3: Implementation Redevelopment of SIFAST website
48
3.3.2 Design of Sprint 0
3.3.2.1 Class diagram
For Sprint0, we have started with the necessary classes, to release the first steps of creating
the website.
Figure 12 illustrates the class diagram of sprint0.
Figure 12: Class diagram of sprint0
Chapter 3: Implementation Redevelopment of SIFAST website
49
The main classes are:
▪ Person: is a class that includes the common data between the actors.
▪ Visitor: is the person who consults and posts messages to SIFAST
▪ Candidate: is the person who posts his candidature
▪ Employer: is the person who works in SIFAST
▪ DesiredJob: is the job title included in the candidature form. It is inserted by the employer.
▪ Group: is a group of employers who have the same role.
▪ UserGroupe: is the associated class between employer and Group.
▪ Menu: is a manual menu created by employers depending on their role
▪ JobOffer: is an offer that represents a specific job
▪ Dictionary: is a set of words representing keywords for CV selection process. It is used to
find specific words in CV such as XML,Symfony, etc.
3.3.2.2 Sequence diagram
A. Offer management
Figure 13 illustrates sequence diagram of offers management.
Chapter 3: Implementation Redevelopment of SIFAST website
50
Figure 13: Sequence diagram of offers management
B. Candidature management
Figure 14 shows the sequence diagram of a candidature created by a candidate. Figure 15
illustrates the candidature managment by an employer.
Chapter 3: Implementation Redevelopment of SIFAST website
51
Figure 14: Sequence diagram of candidature creation
Chapter 3: Implementation Redevelopment of SIFAST website
52
Figure 15: Sequence diagram of candidature management
C. Sharing a job offer
Figure 16 represents the sequence diagram of sharing a job offer on social network.
Chapter 3: Implementation Redevelopment of SIFAST website
53
Figure 16 : Sequence diagram of sharing a job offer
3.3.2.3 Activity diagram
Figure 17 represents the activity diagram of sharing a job offer in the social network.
Chapter 3: Implementation Redevelopment of SIFAST website
54
Figure 17: Activity diagram of sharing a job offer on social network
The process of sharing a job offer from the website to the social network is described as
follows. At the first time, the visitor clicks on the share button displayed in the job offer page in
SIFAST website. Consequently, a free API called bitly 5
(url shortener) is used to create a link to
access the job offer content. This API allows developers to easily shorten, share, manage, and
analys e their favourite links from around the web [20].
After that, the link is saved into the data base for next sharing. A sharing confirmation is
needed by the visitor.
3.3.3 Backlog of Sprint 1
Table 14 presents the Sprint1 Backlog.
5
https://bitly.com
Chapter 3: Implementation Redevelopment of SIFAST website
55
Table 14 Sprint1 Backlog
US
Id
User Story
Task
Id
Task Estimation(4H)
1.1
As an admin, I want to
update the dictionary
1.1-1
override EditAction in
DictionaryAdmin
1
1.2
As an admin, I want to
delete the dictionary
1.2-1
override deleteAction in
DictionaryAdmin
1
1.3
As an admin, I want to get
the list of dictionaries
1.3-1
override listAction in
DictionaryAdmin
1
2.1
As a visitor I want to
consult the front-office
2.1-1 create template pattern
1
2.1-2 create frontOffice Controller
2.1-3 create homePage view
2.1-4 create homePage action
2.2
As an admin, I want to
hide the front office
website visibility
2.2-1
create isVisibleAction in the
frontOffice controller 0.5
2.2-2 create visibility view
2.3
As an admin, I want to set
the front office website as
"under construction"
2.3-1
create underConstruction
action in the frontOffice
controller
1
2.3-2
create underConstruction
view
3.1
As a visitor I want to send
a message through the
front-office
3.1-1 create contact controller
3.1-2
create contact action in
contact controller
3
3.1-3 create contact form
3.1-4 create contact view
3.2
As an admin, I want to
receive sent messages by
email
3.2-1
install and configurate
swiftMailer bundle
3.2-2
set up sender email and
password in to environment
parameters
3.2-3
create sendMail action in the
contact controller
7
3.2-4 edit contact action
3.2-5 test if the email is sent
3.3
As an admin I want to get
the list of messages in the
back-office
3.3-1 create contact admin class
3.3-2
set contact admin class as a
service
0.25
3.3-3 override list action
Chapter 3: Implementation Redevelopment of SIFAST website
56
US
Id
User Story
Task
Id
Task Estimation(4H)
3.4
As an admin I want to get
message details
3.4-1 override show action 0.25
3.5
As an admin I want to
delete a message
3.5-1
add delete functionality to
list action
0.25
4.1
As an admin, I want to
add and edit an
availability
4.1-1
create availability admin
class
4.1-2
set availability admin class
as a service
2
4.1-3
override the default form
mapper
4.2
As an admin, I want to get
the list of availabilities
4.2-1
override the default list
mapper
0.25
4.3
As an admin, I want to
delete an availability
4.3-1
add delete functionality to
list action
0.25
5.1
As an admin, I want to
add and edit an
experience
5.1-1
create experience admin
class
0.25
5.1-2
set experience admin class as
a service
0.25
5.1-3
override the default form
mapper
0.25
5.2
As an admin, I want to get
the list of experiences
5.2-1
override the default list
mapper
0.5
5.3
As an admin, I want to
delete an experience
5.3-1
add delete functionality to
list action
0.25
6.1
As an admin, I want to
add and edit a domain
6.1-1 create domain admin class
6.1-2
set domain admin class as a
service
2
6.1-3
override the default form
mapper
6.2
As an admin, I want to get
the list of domains
6.2-1
override the default list
mapper
0.25
6.3
As an admin , I want to
delete a domain
6.3-1
add delete functionality to
list action
0.5
7.1
As an admin , I want to
add edit a region
7.1-1 create region admin class
7.1-2
set region admin class as a
service
1
7.1-3
override the default form
mapper
7.2
As an admin , I want to
get the list of regions
7.2-1
override the default list
mapper
0.5
7.3
As an admin , I want to
delete a region
7.3-1
add delete functionality to
list action
0.5
Chapter 3: Implementation Redevelopment of SIFAST website
57
US
Id
User Story
Task
Id
Task Estimation(4H)
8.1
As a visitor, I want to
research offers published
in the site
8.1-1
add filter action to the offer
controller
0.5
8.1-2
create
Javascriptfunctionality to
update the research without
reloading to page
6
8.1-3 create research view 1
8.2
As a visitor, I want to get
only 4 job offers by page
8.2-1
create a
Javascriptfunctionality to get
only 4 pages
2
8.2-2 update filter action 1
8.2-3 update research action 1
8.2-4
add pagination buttons to
offer list view
2
9.1
As an admin, I want to
add a submenu to the
front-office
9.1-1 create subMenuAdmin Class 0.25
9.1-2
register subMenuAdmin as a
service
1
9.1-3
override addAction in
subMenuAdmin
0.25
9.2
As an admin, I want to
edit a submenu
9.2-1
override EditAction in
subMenuAdmin
2
9.3
As an admin, I want to
delete a submenu
9.3-1
override deleteAction in
subMenuAdmin
1
9.4
As an admin, I want to get
the list of submenu and to
apply an action on the list
of menus
9.4-1
override listAction and
override butchAction in
subMenuAdmin
2
3.3.4 Design of Sprint 1
3.3.4.1 Class diagram
Figure 18 presents the class diagram of sprint 1.
Chapter 3: Implementation Redevelopment of SIFAST website
58
Figure 18: Class diagram of sprint1
For Sprint1, the main classes are:
• Messages: is the class of messages posted by visitors.
• Availability: is the class, that represents the different disponibilities of the candidate, it will
be displayed in the job application form.
• Degree: is the class containing the needed degrees by Company SIFAST.
• Experience: represents the different years of experience created by employer in BO and it
will be checked in the application form or candidature form by candidate.
• Domain: this class represents the different domains of technologies in SIFAST.
• Contract: this class represents the different types of contracts used by SIFAST company.
• Region: this class represents the different regions of the different countries.
• Country: is a class of countries related to a region.
Chapter 3: Implementation Redevelopment of SIFAST website
59
• References: is a class that demonstrates the set of clients, based on the region of each
country.
• Category: is a class represents the domain of each reference (marketing, …)
3.3.4.2 Sequence diagram of visitor messages management
Figure 20 illustrates the sequence diagram of visitor messages management.
Figure 19: The management of the visitor messages
Figure 20: Sequence diagram of visitor messages management
Chapter 3: Implementation Redevelopment of SIFAST website
60
3.4 RELEASE2: ADDING THE STATISTIC AND THE CV SELECTION MODULES
The second release contains two sprints. Sprint 2 includes the implementation of the alert
management and the installation of libraries related to the CV selection workflow. And Sprint3
contains the last steps of the alert management implementation, and the implementation of the
interview management.
3.4.1 Backlog of Sprint 2
Table 15 presents the backlog of sprint 2.
Table 15: Sprint 2 Backlog
US Id User Story Task Id Task Estimation(4H)
1.1
As a visitor, I want to get
references
1.1-1 create reference entity
1.1-2 create reference controller
1.1-3
create show action in the reference
controller
2
1.1-4 create reference view
1.2
As a visitor, I want to get
references by domain
1.2-1
update the view to be able to find
references by domain
0.5
1.3
As a visitor, I want to get
references by country
1.3-1 create fr action
1.3-2 create tn action
1.3-3 create fr view 2
1.3-4 create tn view
1.4
As an admin, I want to
add and edit a reference
1.4-1 create reference admin class
1.4-2
set reference admin class as a
service
2
1.4-3 override the default form mapper
1.5
As an admin, I want to
get the list of references
1.5-1 override the default list mapper 1
1.6
As an admin, I want to
delete a reference 1.6-1
add delete functionality to list
action
0.5
2.1
As a visitor, I want to get
the technical expertise
2.1-1 create technical expertise entity
2.1-2
create technical expertise
controller
2.1-3
create list action in the technical
expertise controller
2
Chapter 3: Implementation Redevelopment of SIFAST website
61
US Id User Story Task Id Task Estimation(4H)
2.1-4 create technical expertise view
2.2
As an admin, I want to
add and edit a technical
expertise
2.2-1
create technical expertise admin
class
2.2-2
set technical expertise admin class
as a service
1
2.2-3 override the default form mapper
2.3
As an admin, I want to
get the list of technical
expertises
2.3-1 override the default list mapper 0.25
2.4
As an admin, I want to
delete a technical
expertise
2.4-1
add delete functionality to list
action
0.25
3.1
As a visitor, I want to
share a job offer on
social networks
3.1-1 create link entity
3.1-2
create a web service with a shorten
application
3.1-3
create shorten action in offer
controller
1
3.1-4
create share action in offer
controller
3.1-5 add share button in offer view
3.2
As an admin, I want to
get a list of shared job
offers
3.2-1 override the default list mapper 0.25
3.3
as an admin, I want to
delete a link of share
3.3-1
add delete functionality to list
action
0.25
3.4
As an admin, I want to
get informations about
most preferred job offers
3.4-1 override the default show action 0.25
4.1
As an admin, I want to
get applications selected
by relevance
4.1-1 install library MLP 1
4.1-2 create a training action 4
4.1-3 create a testing action 4
4.1-4
add ranking as a field in
application entity
0.25
4.1-5
override the default research
action to set the default list sorted
by relevance
4
4.2
As an admin, I want to
get a resume content
4.2-1
install and configure a parser
bundle
1
4.2-2
add parsing action to the
candidature controller
2
Chapter 3: Implementation Redevelopment of SIFAST website
62
US Id User Story Task Id Task Estimation(4H)
4.2-3
install and configure an OCR
bundle
2
5.1
As a visitor, I want to
create an alert to get
notified of new job
offers
5.1-1 create alert entity
5.1-2 create alert controller
5.1-3 create subscription form 2
5.1-4
create subscribe action in alert
controller
5.2
As a visitor, I want to
receive mails every time
a suitable job offer is
available
5.2-1 create email template 2
5.2-2
create send email action in alert
controller
5.3
As a visitor, I want to
unsubscribe of alert
mailing list
5.3-1 create unsubscribe form
5.3-2 create unsubscribe view 2
5.3-3
create unsubscribe action in alert
controller
5.4
As an alert subscriber, I
want to unsubscribe
from received emails
5.4-1 edit alert email template
5.4-2
create unsubscribe by email action
in alert controller
1
3.4.2 Design of Sprint 2
3.4.2.1 Class Diagram
Figure 21 illustrates the class diagram of Sprint 2.
Chapter 3: Implementation Redevelopment of SIFAST website
63
Figure 21 : Class diagram of sprint2
The added classes are coloured in red in Figure 21, and they are as the follow:
• Link: this class contains the share link of a job offer.
• Link references: this class represents the different references related to a link (Facebook,..)
• Expertise: this class represents the main domains and tools used in SIFAST company.
• Settings: this class represents the main words and texts used in configuration, such as the
configuration of company email.
3.4.2.2 Sequence diagram of the Alert management
Figure 22 and Figure 23 present respectively the sequence diagrams of the alert subscribing
and the alert sending.
Chapter 3: Implementation Redevelopment of SIFAST website
64
Figure 22: Sequence diagram of the alert subscribing
Figure 23: The sequence diagram of the alert sending
Chapter 3: Implementation Redevelopment of SIFAST website
65
3.4.2.3 Activity diagram of the CV selection workflow
Figure 24 presents the activity diagram of the CV selection workflow.
Figure 24: Activity diagram of CV selection workflow
The process of the CV selection workflow is as follows. First of all, the system checks the
content type of the PDF file of the CV: if the content type is already text, it will be converted
directly to JSON format; else if the content type is a scanned image, it will be submitted to an OCR
Chapter 3: Implementation Redevelopment of SIFAST website
66
system to extract textual information and store them into a Json file. This process requires an OCR
library to be installed.
In my work, we have chosen to use the Tesseract tool [21], an open source Optical
Character Recognition Engine, available under the Apache 2.0 license. It is sponsored by Google
since 2006 and was considered one of the most accurate open-source OCR engines [22].
More precisely, to manage the Tesseract API with PHP, we used the most known cover of
Tesseract written by Thiagoalessio [23]. Tesseract OCR for PHP6
is beneficial, because it is easy
to use a wrapper of the command line instructions for Tesseract OCR inside PHP.
In the CV selection workflow, we propose to construct manually a model for Json file. This
model contains the most significant data for the CV selection such as the number of years of
expertise, the last obtained diploma, number of obtained certificates, skills, etc.
After that, extracted data of each CV is stored into a JSON file according to the constructed
manual model. Figure 25 shows an example of a Json file.
Figure 25: An example of a Json file
Each Json file contains a set of attributes/values. The values are obtained using dictionaries.
For example, “diplome:1” in Figure 25 means that this candidate has an engineering diploma and
“contract:1” means that the type of the desired contract is “CDI”.
Given a Job offer, to rank the different candidatures, the process needs to compare the json
file of the job offer to the Json files of candidatures. For thus, we propose to compute a score for
6
https://github.com/thiagoalessio/tesseract-ocr-for-php
Chapter 3: Implementation Redevelopment of SIFAST website
67
each candidature and make a decision (accepted/rejected). Consequently, we model the situation
as a classification problem with supervising learning: training data could be used to learn a model
, how to classify a new CV according to a set of attributes/values.
For this reason, we choose to use Machine Learning (ML) technique, and more precisely
we used the ML library [24] for PHP (PHP-ML - Machine Learning library for PHP).
3.4.2.4 Choice of a ML algorithm for CV selection workflow
There are several machine learning algorithms that could be used in the classification process.
The main known algorithms are :
• Support Vector Machine (SVM) [25]
is a discriminative classifier formally defined by a separating hyperplane. In other words, given
labelled training data (supervised learning), the algorithm outputs an optimal hyperplane which
categorizes new examples. In two-dimensional space this hyperplane is a line dividing a plane in
two parts where in each class lay in either side.
• K nearest neighbors(KNN) [26]
is a simple algorithm that stores all available cases and classifies new cases based on a similarity
measure (e.g., distance functions). KNN has been used in statistical estimation and pattern
recognition already in the beginning of 1970’s as a non-parametric technique
• Naive Bayes classifiers(NB) [27]
are a collection of classification algorithms based on Bayes’ Theorem. It is not a single algorithm
but a family of algorithms where all of them share a common principle, i.e. every pair of features
being classified is independent of each other.
In my work, we have tested the three algorithms offered by the library. The NB and KNN
algorithms give directly the decision without a score while the SVM algorithm provides the
decision with a probability score which allows to rank candidatures from the most relevant to the
least relevant.
Chapter 3: Implementation Redevelopment of SIFAST website
68
After all this research’s, we implemented the algorithm by training CVS file. The CVS file
contains the needed data. The algorithm parses the data into samples and labels, then it train the
system with different informations. The last step included the testing and the prediction of new
samples and inputs.
3.4.2.5 Application of the machine learning in the CV selection workflow
In the training phase we have used 20 CVs samples transformed to Json files. And in the
testing phase, we have tested 3 CVs.
Figure 26 presents an overview of the CV selection workflow.
Figure 26: An overview of the CV selection workflow
This figure illustrates on the top part, a job offer transformed into a Json file. And in the second
part, three CVs are transformed into json files using dictionaries, while CV1 and CV2 are training
data and CV3 is a testing data.
Chapter 3: Implementation Redevelopment of SIFAST website
69
3.4.3 Backlog of Sprint 3
Table 16 presents the backlog of Sprint 3.
Table 16: Sprint 3 Backlog
US
Id
User Story TAsk Id Task Estimation(4H)
1.1
As an admin, I
want to add an
interview
1.1-1 create interview entity 0.25
1.1-2 create interview admin class 0.5
1.1-3
create a web service to get an interviewer
calendar from Zimbra calendar
2
1.1-4
create a web service to get meeting rooms
availability
2
1.1-5 create interview crud controller 2
1.1-6 create add action 1
1.1-7 create send email action 1
1.1-8 create check availability action 1
1.1-9 override the default form mapper 0.5
1.1-10 create candidate email template 1
1.1-11 create interviewer email template 4
1.2
As an admin, I
want to edit an
interview
1.2-1 add update action 1
1.2-2 create candidate update email template 1
1.2-3 create interviewer update email template 1
1.3
As an admin, I
want to cancel an
interview
1.3-1 add cancel action 1
1.3-2 create candidate cancel email template 1
1.3-3 create interviewer cancel email template 1
1.4
as an admin, I want
to get the list of
interviews
1.4-1 override the default list mapper 1
2.1
As an admin, I
want to be notified
of new
spontaneous
application
2.1-1 create spontaneous application service 1
2.1-2
add notification of new spontaneous
application view
2
2.1-3
override default layout view to add
notification of spontaneous application
2
2.2
As an admin, I
want to be notified
of new
applications of
offer
2.2-1 create new service 1
2.2-2 add notification of application of offer view 1
2.2-3
override default layout view to add
notification of new applications of offer
2
2.2-4
override default layout view to add
notification of application of offer
2
2.3
2.3-1 create new service 0.5
2.3-2 add new mails view 1
Chapter 3: Implementation Redevelopment of SIFAST website
70
US
Id
User Story TAsk Id Task Estimation(4H)
As an admin, I
want to be notified
of new mails
2.3-3
override default layout view to add
notification of new mails
2
2.4
As an admin, I
want to be notified
of new alert
2.4-1 create new service 0.5
2.4-2 add new alert subscriber view 1
2.4-3
override default layout view to add
notification of new alert subscriber
1
2.4-4
override default layout view to add
notification of new alert subscriber
1
2.5
As an admin, I
want to get clicks
number of shared
job offer
2.5-1 create controller 1
2.5-2 create view 1
2.5-3
override link default dashboard to add the
new chart
1
2.6
As an admin, I
want to get
informations
about the
candidature skills
and experiences
2.6-1 create controller 1
2.6-2 create view 1
2.6-3
override link default dashboard to add the
new chart
1
2.7
As an admin, I
want to get a list of
most shared offers
2.7-1
override the default link list mapper to be
sorted by number of clicks
2
3.4.4 Design of Sprint 3
3.4.4.1 Class Diagram
Figure 27 illustrates the class diagram of sprint3.
Chapter 3: Implementation Redevelopment of SIFAST website
71
Figure 27: Class diagram of sprint3
The added classes for this sprint are coloured in red in the figure 27, and they are as the follow:
• Translation: represents the class of translation related to the classes of job offer.
• Interview: this class presents the interview, it is in relation with candidate, employer and
the meeting room.
• Technology: this class illustrates the technologies displayed in the offer description.
• Alert: this class presents the Alert and it is relation with the domain, the contract and the
Region.
• Meeting room: this class presents the meeting room and its availability.
3.4.4.2 Sequence diagram of the Interview management
Figure 28 presents the sequence diagram of the interview management.
Chapter 3: Implementation Redevelopment of SIFAST website
72
Figure 28: Sequence diagram of interview management
The process of the interview management is as fellow:
After the candidate selection by the appropriate employer, this latter verifies when the
candidate is available through an email. Later on, the system checks available recruiters and
available meeting room by Zimbra7
web service. Then, the employer chooses a recruiter and add
a convenient time. Finally, the system reserves the meeting room and sends an email to the recruiter
and the candidate, to inform them with the details.
CONCLUSION
In this chapter, we presented the implemented aspects of my application through the
description of the hardware and software work environment. And the representation of different
releases and sprints, where each one is explained and covered by UML diagrams.
7
https://webmail.sifast.tn
Redevelopment of SIFAST website
73
Chapter IV: Realisation
Chapter 4: Realisation Redevelopment of SIFAST website
74
INTRODUCTION
This chapter aims to present different figures that illustrate the application during the two
releases including the four sprints.
4.1 ILLUSTRATION OF RELEASE1
In this section, we will present the figures related to sprint0 and sprint1.
4.1.1 Sprint0
In the first sprint as mentioned before, a configurable menu for the website front office; is
developed. The employer configurates the main menu from the back office and completes the
needed details. Figure 29 and Figure 30 illustrate the list menu and the submenu of the front office.
Figure 29: Configuration of the main menu list of the front office website
The difference between the submenu and the menu, is that the menu could contains images.
Chapter 4: Realisation Redevelopment of SIFAST website
75
Figure 30: Configuration of the submenu list of the front office website
Figure 31 represents the candidature application according to a job offer. Here, the visitor
clicks on the apply button of the selected job offer. An application form page will be displayed.
Figure 31: Form of candidature application according to a job offer
Chapter 4: Realisation Redevelopment of SIFAST website
76
After filling the form, the candidate clicks on the post button to send it.
4.1.2 Sprint1
In the second sprint, we will present the realisation of the visitor message form and the job
offer management.
Figure 32 illustrates the visitor message form. The visitor fill the form and the message
will be sent to the webmaster or to the appropriate employers.
Figure 32: Interface of the messages form
In this form, some inputs are required and others are optional. In addition, a captcha technique is
used for security reasons.
Concerning the job offer management, figure 33 illustrates the list of displayed job offers.
The offer should contain specifications such as domain, contract, region and etc.
Chapter 4: Realisation Redevelopment of SIFAST website
77
Figure 33: The list of displayed job offers of SiFAST
First of all, the visitor clicks on the see offer button in the list of displayed job offers. Then
the selected job offer details will be displayed. Figure 34 illustrates a job offer web page,
containing details on the offer.
Figure 34: Interface of job offer details
Chapter 4: Realisation Redevelopment of SIFAST website
78
The visitor could use a filter to visualize the different job offers. For example, figure 35
illustrates the list of job offers filtered according to the domain features.
Figure 35 : List of job offers according to a domain filter
Figure 36 illustrates a job application using the job offer form. First, the visitor clicks on
the apply button in the job offer page Then, the job application form will be displayed. When the
visitor chooses an experience year, a modal will be displayed.
Chapter 4: Realisation Redevelopment of SIFAST website
79
Figure 36: Application by the job offer form
To provide the visitor experience details, the candidate should fill a form displayed into a
modal as illustrated in figure 37 .
Figure 37: A modal containing a form of candidate experience details
4.2 ILLUSTRATION OF RELEASE2
In this section, we are going to present the figures of my project realised in release 2.
Chapter 4: Realisation Redevelopment of SIFAST website
80
4.2.1 Sprint 2
In this Sprint, we are going to present the search page of the job offers, the list of expertises.
The internalisation, the references management and the alert email subscription.
Figure 38 presents the list of job offers after a search. The visitor clicks on the search button
displayed in any page of the website, then he inserts keywords and clicks on the submit button in
the search page.
Figure 38: List of offers after the search
Figure 39 presents an example of a list of expertise.
Chapter 4: Realisation Redevelopment of SIFAST website
81
Figure 39: An example of a list of expertise
Concerning the internationalisation, it is possible for example to create a job offer with
French and English languages using to different forms.
Figure 40 shows the offer creation interface using the French form.
Figure 40: Job offer creation interface in back office using the French form
Chapter 4: Realisation Redevelopment of SIFAST website
82
For the internationalisation, another example is illustrated in figure 41, that presents the
website introduction page displayed in French and English.
I will present now the referances management. Figure 42 illustrats some references
published in FO.
Figure 42: Front office references
The creation of a reffernce in the BO is illustrated in figure 43.
Figure 41: Introduction page displayed in French and English
Chapter 4: Realisation Redevelopment of SIFAST website
83
Figure 43: Reference creation in Back office
I pass now to detail the alert subscribing by email. The visitor creates an alert by filling the
form as illustrated in figure 44.
Figure 44: Alert subscribing form
Chapter 4: Realisation Redevelopment of SIFAST website
84
Once the form is filled and the visitor clicked on the send button, an email will be sent to
the visitor. Figure 45 illustrates an example of the confirmation mail received by the subscriber.
Figure 45: Alert email of confirmation
Figure 46 presents a job offer received by email.
Figure 46: Job offer received by email
Chapter 4: Realisation Redevelopment of SIFAST website
85
Figure 47 presents the deactivation page. The visitor could disactivate the alert reception
by inserting his email.
Figure 47: Alert deactivation form
4.2.2 Sprint3
In this sprint we are going to illustrate by some screenshots the employer dashboard, the
statistic of sharing an offer via social networks and the canidature selection process.
Figure 48 represents the employer dashboard. It displays the notification blocks and the 5
fisrt messages received by a visitor.
Chapter 4: Realisation Redevelopment of SIFAST website
86
Figure 48: Employer dashboard
Figure 49 presents some statistics of using social network. This page displays a chart of
clicks number of a shared job offer.
Figure 49: Statistic of using social networking
Figure 50 presents a chart displaying a number of admitted candidatures according to the
desired job and the number of years of experience .
Chapter 4: Realisation Redevelopment of SIFAST website
87
Figure 50: Interface of accepted candidatures by number of experience years
Figure 51 presents the creation form of an interview.
Figure 51: Interface of interview creation
Figure 52 illustrates unavailable times of a recruiter.
Chapter 4: Realisation Redevelopment of SIFAST website
88
Figure 52: Interface of available recruiters
Figure 53 represents the interview details created by Zimbra webmail.
Figure 53: Interview created in Zimbra
Figure 54 illustrates an email sent to the recruiter with interview details.
Chapter 4: Realisation Redevelopment of SIFAST website
89
Figure 54: An interview email received by recruiter
Figure 55 illustrates an email sent to the candidate with interview details.
Figure 55: Interview mail received by a candidate
Figure 56 illustrates the output of the training and testing command. The first part is the
training phase achieved, the second part is testing phase of 3 CVs. The results of the testing include
the file name, the values in the Json file, the result of the classification and the score of each CV.
Chapter 4: Realisation Redevelopment of SIFAST website
90
Figure 56: Output of training and testing command
Figure 57 presents a list of rejected candidatures. When receiving a candidature, the system
applies the CV selection workflow and assigns a score. This candidature selection process ranks
and puts the candidature either in the rejected list or in the accepted list based on the score.
Figure 57: An example of a list containing rejected candidatures
CONCLUSION
This chapter presented the realisation of my work by illustrating the application interfaces
and forms with some screenshots.
Redevelopment of SIFAST website
91
General Conclusion
Redevelopment of SIFAST website
92
In nowadays, every company should have a website containing information about its activities
and domain, its products, its contact details, etc.
In this context, we have realised during my final project of study a new version of SiFAST
company website. More precisely, we have renovated the website with the new version of the
Symfony Framework (Symfony 4). And we have added some new features such as the interview
management process, the CV selection workflow using machine leaning, and a module for
analyses and statistics of social networks related to SiFAST company.
In my work we have choose scrum methodology. So, first of all, we have defined the general
context of the project and the requirements of the features with the team. Then, we have started to
develop and implement the functional requirements. Consequently, we have accomplished some
of the main functionalities, but due to time constraints some of them still need improvements.
From a technical point of view, this project allowed me to implement the theoretical
achievements that we learned throughout my university curriculum. It also allowed me to enrich
and deepen my knowledge in the field of artificial intelligence and web technology.
Finally, my work does not stop at this level. In fact, several perspectives are offered to this
project.
The first perspective consists of Improving CV selection workflow by integrating it in the
interface designed to the candidature management by employers; and by improving the training
by adding more examples.
Another perspective of the application is to improve the spontaneous candidature ranking,
because actually, the spontaneous CV are ranked only according to skills. For example, it is
possible to give different weights to the candidate characteristics when computing a CV score.
Redevelopment of SIFAST website
93
References
[1] Available:
https://www.packtpub.com/mapt/book/application_development/9781783281794/1/ch01l
vl1sec08/what-is-gitlab. [Accessed 22 06 2018].
[2] Available: https://matthiasgeiger.wordpress.com/2014/02/19/sonarqube-what-is-it-how-
to-get-started-why-do-i-use-it/. [Accessed 22 06 2018].
[3] Available: https://www.docker.com/what-docker. [Accessed 22 06 2018].
[4] Available: https://blog.sonatype.com/2010/04/why-nexus-for-the-non-programmer/.
[Accessed 22 06 2018].
[5] Available: https://www.kelltontech.com/kellton-tech-blog/top-5-web-development-
frameworks-look-2018. [Accessed 22 06 2018].
[6] Available: http://gradzinski.com/php/symfony-directory-structure-comparison.html.
[Accessed 22 06 2018].
[7] Available: https://reviews.financesonline.com/p/cleverstaff/. [Accessed 22 06 2018].
[8] Available: https://www.livecareer.com/. [Accessed 22 06 2018].
[9] Available: https://www.capterra.com/p/105548/Rchilli-Resume-Parser-Web-API/.
[Accessed 22 06 2018].
[10] Available: https://www.cio.com/article/3156998/agile-development/agile-project-
management-a-beginners-guide.html. [Accessed 22 06 2018].
[11] Available: https://www.doctrine-project.org/. [Accessed 22 06 2018].
[12] Available: https://www.doctrine-project.org/projects/doctrine-
orm/en/latest/reference/architecture.html#architecture. [Accessed 22 06 2018].
Redevelopment of SIFAST website
94
[13] Available: http://www.methodsandtools.com/tools/staruml.php. [Accessed 22 06 2018].
[14] Available: https://github.com/Microsoft/vscode. [Accessed 22 06 2018].
[15] Available: https://whatis.techtarget.com/definition/PHP-Hypertext-Preprocessor.
[Accessed 22 06 2018].
[16] Available: https://en.wikipedia.org/wiki/HTML5. [Accessed 22 06 2018].
[17] Available: https://en.wikipedia.org/wiki/Cascading_Style_Sheets. [Accessed 22 06 2018].
[18] “https://en.wikipedia.org/wiki/MySQL,”
[19] Available: http://www.apache.org/. [Accessed 22 06 2018].
[20] Available: https://support.bitly.com/hc/en-us/articles/230895688-What-is-Bitly-.
[Accessed 22 06 2018].
[21] Available: https://github.com/tesseract-ocr/tesseract. [Accessed 22 06 2018].
[22] A. Kay, “Tesseract: an Open-Source Optical Character Recognition Engine,” Linux
Journal, 2007.
[23] Available: https://github.com/thiagoalessio. [Accessed 22 06 2018].
[24] Available: https://github.com/php-ai/php-ml. [Accessed 22 06 2018].
[25] Available: https://medium.com/machine-learning-101/chapter-2-svm-support-vector-
machine-theory-f0812effc72. [Accessed 22 06 2018].
[26] “http://www.saedsayad.com/k_nearest_neighbors.htm,” [Accessed 22 06 2018].
[27] Available: https://www.geeksforgeeks.org/naive-bayes-classifiers/. [Accessed 22 06
2018].
[28] Available: https://www.cloudbees.com/jenkins/about. [Accessed 22 06 2018].
Redevelopment of SIFAST website
95
[29] Available: https://towardsdatascience.com/types-of-machine-learning-algorithms-you-
should-know-953a08248861. [Accessed 22 06 2018].
[30] Available: https://github.com/thiagoalessio/tesseract-ocr-for-php. [Accessed 22 06 2018].
[31] Available: https://www.redmine.org/projects/redmine/wiki. [Accessed 22 06 2018].

Final Year Project Report

  • 1.
    Final Year Project Elaboratedin Prepared By Torjmen Mariem To Obtain National Diploma of ENGINEERS IN COMPUTER ENGINEERING Entitled: redevelopment of Sifast Website Presented on Jully 02 , 2018, in front of review committee : Mr. Hassen Mrabet Ms. Eya Mezghani President Reviewer Mr. Maher Ben Jemaa Academic supervisor Mr. Omar Elloumi Industrial supervisor University year 2017-2018 Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Institut International de Technologie à Sfax ‫العلمي‬ ‫والبحث‬ ‫العالي‬ ‫التعليم‬ ‫وزارة‬ ‫للتكنولوجيا‬ ‫الخاصة‬ ‫الدولية‬ ‫العليا‬ ‫المدرسة‬‫ق‬ ‫بصفا‬‫س‬
  • 2.
    Dedication To my wonderfulparents Najiba and Habib You have raised me to be the person who I am to today. Thank you for your unconditional love and support, you provided me with Thank you for everything. To the source of my success and achievements My brother Mourad and my sister Mouna. You have stood by my side in each step of my life. You have nurtured me with knowledge and wisdom Thank you for your guidance and enlightenment. To my teachers, to whom I express My deep sincerity For their assistance and support through my studies. To the reason of my happiness my friends I dedicate this work to you and I wish all the happiness. Mariem
  • 3.
    Acknowledgment I would liketo thank Mr.Maher Ben Jmaa My supervisor at International Institute of technology (IIT) For his supervision, his advice, his support and the friendly manner to fellow and accomplish this work Mr.Omar Ellomi My supervisor at SiFAST Company For his dynamism, his valuable idea and its generous cooperation in the development of this work. Mr.Mouhamed Trabelsi A software engineer in SiFAST Company For his encouragements, his tuition, and his guidance in developing the project. Mr.Anis Samet The director of SiFAST Company For sharing his direction, his instruction, and his wisdom. Mr.Fadhel Abid God Bless him, the founder and the manager of SiFAST Company For accepting me as interne in his enterprise. The committee members For sucreficing their time and attention to review and evaluate my work. Mariem
  • 4.
    Redevelopment of SIFASTwebsite Table of Contents List of Figures List of Tables Abbreviations General Introduction 1 Chapter I: Background and aims 4 Introduction 5 1.1 Presentation of the host COMPANY: SIFAST 5 1.1.1 Enterprise profile 5 1.1.2 Organizational structure of SIFAST 5 1.1.3 SIFAST solutions 6 1.1.4 System quality 6 1.1.5 Technical environment 7 1.2 The context of the project 9 1.3 Description of the current website 10 1.3.1 Criticism of the existing website 11 1.3.2 Differences between Symfony 2.8 and Symfony 4 11 1.4 Aims of the project 13 1.4.1 A new version of SIFAST website 13 1.4.2 A workflow solution for CV selection 13 Conclusion 14 Chapter II: Specification & Design 15 Introduction 16 2.1 Methodology of work 16 2.1.1 Scrum 16
  • 5.
    Redevelopment of SIFASTwebsite 2.1.2 Theory 17 2.1.3 Implementation of SCRUM 19 2.2 Backlog 21 2.3 Design Diagrams 26 2.3.1 Use case Diagrams 26 2.3.2 Class Diagram 38 Conclusion 38 Chapter III: Implementation 40 Introduction 41 3.1 Logical architecture of the solution 41 3.2 Work environments 44 3.2.1 Material environment 44 3.2.2 Software tools 44 3.2.3 Development environment 44 3.3 Release1: Renovate the website using Symfony 4 45 3.3.1 Backlog of Sprint 0 45 3.3.2 Design of Sprint 0 48 3.3.3 Backlog of Sprint 1 54 3.3.4 Design of Sprint 1 57 3.4 Release2: Adding the statistic and the cv selection modules 60 3.4.1 Backlog of Sprint 2 60 3.4.2 Design of Sprint 2 62 3.4.3 Backlog of Sprint 3 69 3.4.4 Design of Sprint 3 70 Conclusion 72
  • 6.
    Redevelopment of SIFASTwebsite Chapter IV: Realisation 73 Introduction 74 4.1 Illustration of release1 74 4.1.1 Sprint0 74 4.1.2 Sprint1 76 4.2 Illustration of release2 79 4.2.1 Sprint 2 80 4.2.2 Sprint3 85 Conclusion 90 General Conclusion 91 References 93
  • 7.
    Redevelopment of SIFASTwebsite List of Figures Figure 1: SIFAST organisation architecture 6 Figure 2: Scrum description 16 Figure 3: Application of Scrum in my project 20 Figure 4: General use case 27 Figure 5: Visitor consultation use case 28 Figure 6: Job application use case 31 Figure 7: Website management use case 33 Figure 8: Website maintaining use case 36 Figure 9: Class diagram 39 Figure 10: An overview of the logical architecture of the proposed application 41 Figure 11: Architecture of the doctrine project 43 Figure 12: Class diagram of sprint0 48 Figure 13: Sequence diagram of offers management 50 Figure 14: Sequence diagram of candidature creation 51 Figure 15: Sequence diagram of candidature management 52 Figure 16 : Sequence diagram of sharing a job offer 53 Figure 17: Activity diagram of sharing a job offer on social network 54 Figure 18: Class diagram of sprint1 58 Figure 19: The management of the visitor messages 59 Figure 20: Sequence diagram of visitor messages management 59 Figure 21 : Class diagram of sprint2 63 Figure 22: Sequence diagram of the alert subscribing 64 Figure 23: The sequence diagram of the alert sending 64 Figure 24: Activity diagram of CV selection workflow 65 Figure 25: An example of a Json file 66 Figure 26: An overview of the CV selection workflow 68 Figure 27: Class diagram of sprint3 71 Figure 28: Sequence diagram of interview management 72 Figure 29: Configuration of the main menu list of the front office website 74
  • 8.
    Redevelopment of SIFASTwebsite Figure 30: Configuration of the submenu list of the front office website 75 Figure 31: Form of candidature application according to a job offer 75 Figure 32: Interface of the messages form 76 Figure 33: The list of displayed job offers of SiFAST 77 Figure 34: Interface of job offer details 77 Figure 35 : List of job offers according to a domain filter 78 Figure 36: Application by the job offer form 79 Figure 37: A modal containing a form of candidate experience details 79 Figure 38: List of offers after the search 80 Figure 39: An example of a list of expertise 81 Figure 40: Job offer creation interface in back office using the French form 81 Figure 41: Introduction page displayed in French and English 82 Figure 42: Front office references 82 Figure 43: Reference creation in Back office 83 Figure 44: Alert subscribing form 83 Figure 45: Alert email of confirmation 84 Figure 46: Job offer received by email 84 Figure 47: Alert deactivation form 85 Figure 48: Employer dashboard 86 Figure 49: Statistic of using social networking 86 Figure 50: Interface of accepted candidatures by number of experience years 87 Figure 51: Interface of interview creation 87 Figure 52: Interface of available recruiters 88 Figure 53: Interview created in Zimbra 88 Figure 54: An interview email received by recruiter 89 Figure 55: Interview mail received by a candidate 89 Figure 56: Output of training and testing command 90 Figure 57: An example of a list containing rejected candidatures 90
  • 9.
    Redevelopment of SIFASTwebsite List of Tables Table 1: Product Backlog 21 Table 2: Textual description of message sending 28 Table 3: Textual description of activating alert use case 29 Table 4: Textual description of disactivating alert 30 Table 5: Textual description of job application 31 Table 6: Textual description of spontaneous application 32 Table 7 : Textual description of the job offer management 34 Table 8 : Textual description of the candidature management 34 Table 9 : Textual description of interview management 35 Table 10: Textual description of settings management 37 Table 11 : Textual description of employers management use case 37 Table 12: Computer characteristics 44 Table 13: Sprint0 Backlog 45 Table 14 Sprint1 Backlog 55 Table 15: Sprint 2 Backlog 60 Table 16: Sprint 3 Backlog 69
  • 10.
    Redevelopment of SIFASTwebsite Abbreviations Sf: Symfony CE:Community Edition EE:Enterprise Edition IT:Information technology CV: Curriculum vitae PHP: Hypertext Preprocessor MIT: Massachusetts Institute of Technology BO: Back office FO: Front office SQL: Structured Query Language. HTML: Hypertext Markup Language CSS: Cascading Style Sheets ML: Machine learning SVM: Support Vector Machines KNN: K nearest neighbour BN: Naive Bayes classifier UML: Unified Modelling Language OCR: Optical Character Recognition CSV: Comma-Separated Value JSON: JavaScript Object Notation JS: JavaScript
  • 11.
    Redevelopment of SIFASTwebsite 1 General Introduction
  • 12.
    General Introduction Redevelopmentof SIFAST website 2 The internship presented in this report was held in SIFAST company at Sfax and it took a duration of four months. SIFAST company, is well known in Tunisia for its mastery of new technologies and developing innovative solutions for its clients. SIFAST company always keeps an eye on the trended technologies and updates its website in order to stay modernised and improved in performance and deliver a best quality service to clients. In this context, my project titled “Redevelopment of SIFAST website” aims to improve the company existing website and add new functionalities, such as recruitment process and social networks statics. The website improvements concern the migration from Symfony 2.8 to Symfony 4, in order to guarantee better technical features such as speed and design. The basic idea of the recruitment process is to construct a CV selection workflow, which helps recruiters to release a first selection of candidatures either spontaneous or according to a job offer. The candidature selection workflow consists of selecting some specific informations of candidate resume and store them into structed documents to facilitate the comparison. A score will be computed and assigned automatically to the candidature. For the selection of candidature applied to a job offer, a comparison of candidate features could be released by machine learning algorithm. For the social media statics, the number of sharing a job offer of SiFAST company could be computed. Moreover, the recruitment process includes interview management, which helps the Resource Human agent to choose the best recruiters available for the interview according to their skills and expertise, taking into account the job offer requirements. This report presents the different stages of the project realisation and it is divided on four chapters. The first chapter "Background and Aims" is an introductory chapter in which we give a brief description of the company. Then we expose the general framework project and the proposed solution. The second chapter “Requirements Specification and Design” outlines the achievement of this work with the Scrum methodology. It also includes the functional needs of a product backlog and the defined sprint schedule. Afterwards, it presents the functional requirements illustrated by the use case diagrams with some scenarios.
  • 13.
    General Introduction Redevelopmentof SIFAST website 3 The third chapter “Implementation” covers the different implemented sprints and the different design diagrams needed in each sprint. The forth chapter “Realisation” contains the development environment, the application architecture as well as the environment hardware and software. Moreover, this chapter illustrates by some screenshots the releases of my project. Finally, this report finishes with a general conclusion aiming to evaluate the achieved work and to outline the potential prospective of this project.
  • 14.
    Redevelopment of SIFASTwebsite 4 Chapter I: Background and aims
  • 15.
    Chapter 1: Backgroundand aims Redevelopment of SIFAST website 5 INTRODUCTION This chapter aims to clarify the motivation of the work and gives an overview of the released application. More precisely, it presents the host organization in which the internship was conducted, as well as the study of the existing solution and the objectives of the presented project. 1.1 PRESENTATION OF THE HOST COMPANY: SIFAST 1.1.1 Enterprise profile SIFAST is a Digital Services Company (ESN) created in 2010 by service and IT professionals. It is based in Tunisia and located in France. SIFAST is one of Tunisia's Near Shore Francophone leaders. It delivers IT services that help its customers to improve their efficiency and profitability. Thanks to its mastery of new technologies, its outsourcing experience and its collaborative approach, it helps its clients to develop innovative solutions to meet their challenges. Its main values show the determinism of its teams. In fact, the strength keys for their success are the respect for others, the responsibility, the cultural diversity, the excellence and the innovation. 1.1.2 Organizational structure of SIFAST To ensure a good presentation and a good functioning of its services, SIFAST company is based on the interaction of several directions and complementary departments as illustrated in Figure 1.
  • 16.
    Chapter 1: Backgroundand aims Redevelopment of SIFAST website 6 1.1.3 SIFAST solutions SIFAST company offers several solutions and covers many activity domains such as: • WEB • E-COMMERCE • MOBILE • Systems and networks engineering. 1.1.4 System quality SIFAST was inspired by the different standards of the market and its Near Shore experience to define its quality system while maintaining flexibility and agility. By constantly taking into account the importance of projects and the criticality of information, SIFAST has put in place safeguards to collaborate with confidence and transparency: ➢ Software compliant with French and European rights. Drupal .Net/Open ERP Technical director JAVA EE Mobile/ UnityLAMP DB manager Assistante HR manager Financial Manager Site director System & network Methods & process Contract&sourcing manager WEB integrationSymfony Figure 1: SIFAST organisation architecture
  • 17.
    Chapter 1: Backgroundand aims Redevelopment of SIFAST website 7 ➢ Software compliant with market norms and standards. ➢ Software that meets the requirements and the needs of the customers. ➢ Confidentiality and guarantee of intellectual property. ➢ Security system: Access, backup, inverters. 1.1.5 Technical environment SiFAST uses several technical solutions as Gitlab, Jenkins, Redmine, etc. We will detail some of them in as the following: 1.1.5.1 Gitlab GitLab [1] is a system for managing Git repositories. It is written in Ruby and allows to easily deploy meaningful version control for the code. It was first published on GitHub in October 2011 and has grown into a powerful tool since then. GitLab is published under the MIT license1 , but it is mandatory to keep a mention of the author when redistributing the code. 1.1.5.2 JENKIS JENKIS [2] is an open source automation server. With Jenkins, organizations can accelerate the software development process through automation. Jenkins manages and controls development lifecycle processes of all kinds, including build, document, test, package, stage, deployment, static analysis and many more 1.1.5.3 Redmine Redmine [3] is a flexible project management web application, written in Ruby on Rails framework. It is cross-platform and cross-database system. Redmine is open source and released under the terms of the GNU General Public License v22 . 1 https://opensource.org/licenses/MIT 2 https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
  • 18.
    Chapter 1: Backgroundand aims Redevelopment of SIFAST website 8 1.1.5.4 SonarQube SonarQube (formerly known as Sonar) [2] is an open source tool suite aiming to measure and analyse the quality of the source code. It is written in Java but is able to analyse code written by 20 different programming languages. Code analysis may be started manually by executing a so-called sonar runner but SonarQube’s full is potential and especially revealed when used in combination with continuous integration such as a Jenkins server. 1.1.5.5 Docker The Docker [3]platform is the only container platform to build, secure and manage the widest array of applications from development to production both on premises and in the cloud. Docker Community Edition [CE] empowers developers with tools to build applications and Docker Enterprise Edition [EE] provides IT with multi-architecture operations at scale. Docker delivers both an engine for innovation that modernizes without disruption while reducing total costs by more than 50%. Unlike other solutions that specialize in a narrow slice of the enterprise IT portfolio, Docker delivers operations at scale by addressing a diverse set of applications and infrastructure for both developers and IT. 1.1.5.6 Nexus Nexus repository manager [4] is a free, open source repository for storing and managing code artifacts in various formats. It allows to proxy, collect, and manage the dependencies in a collection of JARs. It facilities the distribution of the software. 1.1.6 Software factory of SIFAST Software factory is a software product line that configures extensive tools, processes, and content using a template based on a schema to automate the development and the maintenance of variants of an archetypical product by adapting, assembling, and configuring framework-based components Developing applications using a software factory can provide many benefits such as: • Consistency: Software factories can be used to build multiple instances of a software product line (a set of applications sharing similar features and architecture), making it
  • 19.
    Chapter 1: Backgroundand aims Redevelopment of SIFAST website 9 easier to achieve consistency. This simplifies governance and also lowers training and maintenance costs. • Quality: Using a software factory makes developing easier for developers to learn and implement proven practices. Thanks to the integration of reusable code, developers are able to spend more time working on features that are unique to each application and reducing the likelihood of design flaws and code defects. Applications developed using a software factory can also be verified before deployment, ensuring that factory-specific best practices were followed during development. • Productivity: Many application development activities can be streamlined and automated, such as reusing software assets and generating code from abstractions of the application elements and mechanisms. For this purpose, SIFAST uses a particular architecture for its projects or each one of its projects, whatever the used technology (Java, .NET, Mobile, Unity, PHP, JS ...), So, at the start of any project, the developer should create 4 Jenkins jobs from the first line of code (integration, quality audit, delivery and deployment jobs should be operational and tested from the first commit / push). At each code change, the software brick will execute a set of tasks (compilation, tests, packaging, deployment). 1.2 THE CONTEXT OF THE PROJECT It is imperative for every company to have a website. The more professional the website is, the more advantages are gained such as the marketing of products, the communication with clients, etc. In this context, SIFAST company has its own website to present its products and facilitate the communication with its clients. The actual version of the SIFAST website contains the main functionalities, but it was released with an old version of web technologies which causes some problems related to the download the website pages from the webserver to the client navigator, etc. In addition, within its
  • 20.
    Chapter 1: Backgroundand aims Redevelopment of SIFAST website 10 evolution strategy, SIFAST aims to improve and add new features to the actual website version such as the automatic selection of candidatures according to a job offer and releasing some statics of social networks to help in making decisions. 1.3 DESCRIPTION OF THE CURRENT WEBSITE The existing SIFAST website3 was created using the old version of PHP (5.1) and the old version of Symfony framework [5] (2.8). To improve and add new features, we need to take the compatibility of the modern solutions and technologies into consideration . In fact, the existing solution allows citizens to consult, activate alerts using an email and sent notes in the Front Office. Even though the existing website seems to cover the main functionalities, it will be interesting to add new features such as an automatic management of recruitment applications. The existing solution processed as follows: The Human Resource manager indicates the information related to a job offer and decides to publish it or not. The user does a search on job offers already published in the Front Office. A user could apply for a job offer at SIFAST according to two methods: ▪ Application for a job offer: a list of job offers is displayed on the website or sent by email to the candidat. This latter applies to a specific job offer. ▪ Spontaneous application: the candidate submits his candidature without choosing a job offer. The actual recruitment process is described as follows: ▪ A first CV selection of all candidates (either by spontaneous application or by application for a job offer) is done manually. ▪ If an application is accepted, it is automatically moved to the second selection, otherwise it passes to the rejected list. ▪ If an application is accepted at the second selection, an interview date will be assigned to the appropriate candidate. 3 https://www.sifast.com/
  • 21.
    Chapter 1: Backgroundand aims Redevelopment of SIFAST website 11 ▪ After the interview, the recruiters who attended assign grades for this candidate according to three categories (HR, Technique, Language). 1.3.1 Criticism of the existing website The current SIFAST website suffers from a certain number of deficiencies that can only be definitively resolved through a redesign of the existing solution. In the following, we describe some of these deficiencies: ▪ The upgrade to new features using the technology Symfony2.8 is complicated and difficult. ▪ The Alert activation by email lacks security. ▪ The search of job offers by keywords in the Front Office, is not well represented. ▪ The Management and the selection of candidatures is not functional. ▪ The interview reservation and the email sending to confirm the date, is also not functional. 1.3.2 Differences between Symfony 2.8 and Symfony 4 As the first purpose of the project is to migrate SiFAST website from Sf4 2.8 to Sf 4 this section compares between both versions. Symfony is an open-source PHP web framework with an emphasis on less memory consumption and faster execution times, Symfony is apt for complex web applications with 300000 developers from more than 120 countries. It has won the reputation of the most mature and reliable PHP framework and is the number 1 choice for the enterprise web applications. The framework is presented in the form of a ‘bundle’ that the developer can use repeatedly in one or more projects. It simplifies and speeds up the development process and offers a functional and expandable environment with native security features. For several years, the framework Symfony has seen improvements and developments with different releases. The main important releases are: Sf 2.8, Sf 3.4 and currently Sf 4. In my project, we will migrate the existing website from Symfony 2.8 (Sf 2) to Symfony4 (Sf 4). Thought, there are some major differences between Sf2 and Sf4. In fact, the goal of Symfony 4 is to keep a light structure to reduce the complexity of applications. The code becomes 4 Sf :Symfony
  • 22.
    Chapter 1: Backgroundand aims Redevelopment of SIFAST website 12 "Bundleless", which means that there is no need to use "Bundles" anymore. In fact, developers are free to organize their code in the 'src /' folder the way they are pleased. But that does not mean that bundles are obsolete. The "bundles" developers usually use will be available to set up features in the application, but just that it doesn’t have to be created in the application. In addition, Sf4 is more powerful than the previous versions, because it is faster in the performance and more suited to the cloud infrastructure. Figure 2 illustrates the evolution of the Symfony Framework. Figure 2: Comparison between different versions of Symphony framework structure This figure, presented by Piotr Grabski-Gradziński, a member of Symfony community [6]demonstrates that the structure of directories was changed and improved.
  • 23.
    Chapter 1: Backgroundand aims Redevelopment of SIFAST website 13 1.4 AIMS OF THE PROJECT Two main aims of the project are identified as fellow: 1.4.1 A new version of SIFAST website After having cleared up the deficiency observed at the level of criticism of the existing solution, the solution proposed is to redevelop the website with a new technology and prospects to reach the next level of evolution. This solution consists of: 1. Renovate the website using Sf 4 and Php 7 2. Add the candidature management through an automatic selection of CV. 3. Improve the alerts security and management. 4. Add the interviews management. 5. Add statistics and analyses of social networks related to job offer shared by SiFAST company. 1.4.2 A workflow solution for CV selection There are several workflow solutions for CV selection, each one of them responds to a specific need. In general, there are many ways to construct a resume (CV). For example, it is possible to use an existing template to create a CV via online tools or to write a CV using a specific tool such as Illustrator tool, etc. However, in my work, the resume file does not matter in which tool it was written with, as long the extension of resume should be PDF. After a brief study, we cite the following solutions: • Cleverstaff, [7]: a comprehensive applicant tracking and recruitment automation software. It is a single platform for all the necessary tools recruiters requires in looking for qualified talents, keeping track of vacant positions, and organizing pertinent data.
  • 24.
    Chapter 1: Backgroundand aims Redevelopment of SIFAST website 14 • Livecareer [8]: the resume-Check has been designed by experts to identify 20 of the most common resume mistakes. Resume-Check instantly analyses your resume’s grammar, spelling, organization, length, writing style, and other key areas. • Rchill [9]: a Natural Language Processing (NLP) based technology which reads analyse any resume/CV and gives standard XML /HR XML structure. It provides resume/CV services to Job Sites, ATS / CRM Applications, Large Company IT Departments, Recruiters, ERP Systems like SAP, People-soft and many other Enterprise Solutions. The problems with these different solutions and APIS are: Cleverstaff tool only uses resume files that are provided by LinkedIn. Livecareer is intended for candidates more than recruiters. Rchill uses its own cloud which does not respect the data privacy. Moreover, these three solutions are not free and requires payment. Consequently, the different existing solutions, do not satisfy our needs. In my work, the files are posted by different people, and each CV file is written in different way and by different tools. CONCLUSION This chapter, describes the background and the aims of the work. More precisely, we presented the host organisation, the study of the existing solution and the objectives of the project. The application specification and needs are detailed in the next chapter.
  • 25.
    Redevelopment of SIFASTwebsite 15 Chapter II: Specification & Design
  • 26.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 16 INTRODUCTION This chapter is devoted to analysis, specification and design. We will start by defining the methodology of work, then the product backlog, and finally we will specify the functional and non-functional requirements. The analysis of these specifications allows me to identify the different functionalities and actors of the system. The UML diagrams resulting from this analysis are produced in the last section of the chapter. 2.1 METHODOLOGY OF WORK 2.1.1 Scrum Scrum [10] is an agile software development process, best suited for projects with rapidly changing requirements. Figure 2 illustrates this methodology. This section briefly covers the scrum theory and how it is used in the project. Figure 2: Scrum description
  • 27.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 17 2.1.2 Theory 2.1.2.1 Scrum Roles ▪ Product Owner: Acts as a spokesman for the customer and defines features of the product based on each Backlog item or each specific request of the customer. He should prioritize these features according to the market value, decide on a release date for the product, and it is responsible for the profitability of the product. The product owner should also adjust the contents of the features and their priority after every Sprint and decide if what has been produced is acceptable. ▪ Scrum Master: Responsible for making sure a Scrum team lives by the values and practices of Scrum, and for removing any impediments to the progress of the team. As such, he should shield the team from external interferences, and ensure that the Scrum process is followed, including issuing invitations to the daily Scrum meetings, sprint reviews and the sprint planning meetings. ▪ Scrum Team: The group of people developing the product. There is no personal responsibility in Scrum, the whole team fails or succeeds as a single entity. 2.1.2.2 Sprint Planning Meeting The sprint planning meeting is attended by the product owner, the Scrum master, the team and any interested stakeholders. During the meeting, the product owner and the team will go through the vision, the roadmap, the release plan, and the Product backlog to develop a detailed plan for the upcoming sprint. Together, the product owner and the team define a sprint goal, which is a short description of what should be completed at the end of the sprint. The success of the sprint will later be assessed during the sprint review meeting against the sprint goal, rather than against each specific item selected from the product backlog. Since the product owner decides the scope of a feature, the team usually requires the product owner to answer all of their questions to estimate the time it will take to finish a backlog item. The team needs to be well prepared for this meeting. It should dedicate some time during a sprint to think ahead how the upcoming backlog items could be designed and implemented.
  • 28.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 18 Especially if the team is inexperienced and cannot produce a confident estimate of the effort required to complete a backlog item on their own and needs some additional information. The team members decide how much work they can successfully take into the sprint based on the team size, available hours, and the estimated level of productivity. When the team has selected and committed to deliver a specific set of features from the highest priority items in the backlog, the Scrum master leads the team in a planning session to break these features down into tasks and form the Sprint backlog. 2.1.2.3 Daily Scrum Meeting The daily Scrum meeting is a short meeting where the team members inform each other of what they have done, what they plan to do and if they have any impediments. This is to make sure that the whole team knows what is happening and to make sure no one is stuck alone with a single problem for several days. It is timeboxed to 15 minutes to ensure that the team spends more time developing than talking about developing. 2.1.2.4 Sprint Review Meeting At the end of each sprint, a sprint review meeting is held. The first half of the meeting is set aside to demonstrate the potentially shippable prototype to the product owner that has been developed during the sprint. The product owner leads this part of the meeting and invites all interested stakeholders to attend. The product owner determines which items on the product backlog have been completed in the sprint. It is usually not allowed to use PowerPoint slides and spend more than two hours preparing for the demonstration. 2.1.2.5 Retrospective After the sprint review meeting the Scrum team goes through a retrospective of the sprint with the Scrum master. The team members assess the way they worked together in the sprint and identify things that went well and should be encouraged in the future, as well as things that could be improved. The results of this should be visible to the team during the following sprints. It is vital, therefore, that the feedback received at the retrospective be followed up on. Otherwise, the team may quickly see it as a waste of time.
  • 29.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 19 2.1.3 Implementation of SCRUM 2.1.3.1 Scrum Roles ▪ Product Owner: My supervisor was the product owner for this project and acted as spokesman for SIFAST and its needs. ▪ Scrum Master: My supervisor was also the Scrum Master, where he encouraged me to bring new thoughts and improve the website. ▪ Scrum Team: There were no predefined roles we took on, we just made sure to finish developing my tasks and they were reviewed by my supervisor. 2.1.3.2 Sprint Planning Meeting Most of the time, the sprint planning meetings went as planned, though sometimes the product owner was unavailable. In these cases, the meeting simply needed to be scheduled one or two days later. These extra days would come in handy for cleaning up what we had produced the earlier sprint. 2.1.3.3 Daily Scrum Meeting Daily Scrums took place at 10AM. Employees could arrive as early as 8AM and work until then, as long as they did arrive before the meeting started it. So, until the meeting took a place, we had the enough time to recall what exactly we worked on the day before, as well as deciding which task to work next. 2.1.3.4 Sprint Review Meeting The review meetings were always held on Fridays. The product owner would invite me to present my work in the meeting room along with any other interested parties. Then we demonstrate the new features on a live system and answer any questions that might arise during the demo. Usually we would spend one or two days before the demo checking if everything was working and run test demonstrations internally. 2.1.3.5 Retrospective During the work, we had several retrospectives. After each sprint we wrote what we thought was good and what should be improved on post-its. Then we remote them to the Redmine and pass to a new sprint.
  • 30.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 20 Figure 3 summaries the application of Scrum method in my project. Each release consists of two sprints and each sprint lasted for four weeks. Release1 Release 2 Website settings Visitor messages Availabilities management Experiences management Domains management Regions managementSPRINT 1 User management Job Offer management Candidature management Menu management Dictionary management SPRINT 0 Job Offer research References management Technical Expertise management Social share management SPRINT 2 Candidature selection Alerts management Interviews management Visualisation SPRINT 3 Daily scrum meeting Sprint review meeting Sprint Increment Delivered Sprint Planning meeting Sprint 4 weeks 24h Sprint retrospective Figure 3: Application of Scrum in my project
  • 31.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 21 2.2 BACKLOG The backlog is simply a list of all things that needs to be done within the project. It consists of a list of features and functionalities to be realized. These functionalities, expressed in the form of needs, are prioritized by the Product Owner which makes it possible to establish an order to respect during the realization of the application. Table 1 presents the product backlog. Table 1: Product Backlog Feature Id Feature US Id User Story Estimation (4H) Priority 1 Users Management 1.1 As an admin I want to login to the back-office 2 must 1.2 As an admin I want to logout of the back-office 2 1.3 As an admin I want to add an admin 1 1.4 As an admin I want to edit an admin 1 1.5 As an admin I want to delete an admin 1 1.6 As an admin I want to change a user role 1 1.7 As an admin I want to consult users list 1 2 Offers Management 2.1 As an admin I want to add a job offer 1 2.2 As an admin I want to edit a job offer 1 2.3 As an admin I want to delete a job offer 1 2.4 As an admin I want to publish a collection of job offers simultaneously 1 2.5 As an admin I want to get all job offers in the back office 2 2.6 As a visitor I want to get offers in front office 2 2.7 As a visitor I want to get an offer details in front office 1
  • 32.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 22 Feature Id Feature US Id User Story Estimation (4H) Priority 3 Candidature Management 3.1 As a visitor I want to submit a spontaneous candidature 4 3.2 As a visitor I want to submit a candidature on a published offer 4 3.3 As an admin I want to get candidatures by state (accepted/ rejected ) 1 3.4 As an admin I want to get candidatures by Type 1 3.5 As an admin I want to get candidatures details 1 3.6 As an admin I want to delete a candidature 1 3.7 As an admin I want to edit a candidature state 1 4 Management Menu 4.1 As an admin, I want to add a Menu to the front-office 2 4.2 As an admin, I want to edit a Menu 1 4.3 As an admin, I want to delete a Menu 1 4.4 As an admin, I want to get the list of Menu 1 5 Dictionary Management 5.1 As an admin, I want to create a dictionary 1 5.2 As an admin, I want to update a dictionary 1 5.3 As an admin, I want to delete a dictionary 1 5.4 As an admin, I want to get the list of dictionaries 1 6 Front office management 6.1 As a visitor I want to consult the frontOffice 3 6.2 As an admin , I want to hide the frontOffice visibility 4 6.3 As an admin , I want to set the frontOffice as "under construction" 1 7 Visitor messages management 7.1 As a visitor I want to send a message through the front-office 3 7.2 As an admin I want to receive sent messages by email 3
  • 33.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 23 Feature Id Feature US Id User Story Estimation (4H) Priority 7.3 As an admin I want to get the list of messages in the back-office 1 7.4 As an admin I want to get message details 1 7.5 As an admin I want to delete a message 1 8 Availabilities management 8.1 As an admin, I want to add and edit an availability 1 8.2 As an admin, I want to get the list of availabilities 1 8.3 As an admin, I want to delete an availability 1 9 Experiences management 9.1 As an admin, I want to add and edit an experience 1 9.2 As an admin, I want to get the list of experiences 1 9.3 As an admin, I want to delete an experience 1 10 Domains management 10.1 As an admin, I want to add and edit a domain 1 10.2 As an admin, I want to get the list of domains 1 10.3 As an admin, I want to delete a domain 1 11 Regions management 11.1 As an admin, I want to add and edit a region 1 11.2 As an admin, I want to get the list of regions 1 11.3 As an admin, I want to delete a region 1 12 Offer research 12.1 As a visitor I want to research new job offers published in the site 2 12.2 As a visitor, I want to filter job offers published in the site 4 12.3 As a visitor, I want to get only 4 job offers by page 2 13 References management 13.1 As a visitor, I want to get references 1 13.2 As a visitor, I want to get references by domain 1
  • 34.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 24 Feature Id Feature US Id User Story Estimation (4H) Priority 13.3 As a visitor, I want to get references by country 1 13.4 As an admin, I want to add and edit a reference 2 13.5 As an admin, I want to get the list of references 1 13.6 As an admin, I want to delete a reference 1 14 Expertise technique management 14.1 As a visitor, I want to get the list of technical expertises 1 14.2 As an admin, I want to add a technical expertise to the front- office 2 14.3 As an admin, I want to edit a technical expertise 1 14.4 As an admin, I want to delete a technical expertise 1 15 Social share management 15.1 As a visitor, I want to share a job offer on social network 3 should 15.2 As an admin, I want to get a list of shared job offers 3 15.3 As an admin, I want to delete a link of sharing a job offer 3 15.4 As an admin, I want to get informations about the most preferred job offers 2 16 Intelligent candidacies management 16.1 As an admin I want to get a resume content 6 16.2 As an admin I want to get applications selected by relevance 3 17 Alerts management 17.1 As a visitor, I want to create an alert to get notified of new offers 1 17.2 As a visitor, I want to receive mails every time a suitable offer is available 2 17.3 As a visitor, I want to unsubscribe of alert mailing list 2 17.4 As an alert subscriber, I want to unsubscribe from received mails 2
  • 35.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 25 Feature Id Feature US Id User Story Estimation (4H) Priority 18 interviews management 18.1 As an admin, I want to check recruiters availability 18.2 As an admin, I want to check meeting rooms availability 3 18.3 As an admin, I want send an email an interviewer 3 18.4 As an admin, I want send an email the applicant 2 18.5 As an admin, I want to update the meeting room calendar 3 18.6 As an admin, I want to update an interviewer calendar 2 18.7 As an admin, I want to add an interview 3 18.8 As an admin, I want to edit an interview 2 18.9 As an admin, I want to cancel an interview 1 19 Visualisation 19.1 As an admin, I want to get the clicks number of shared job offers 3 19.3 As an admin, I want to get informations about the candidature skills and experiences 3 19.4 As an admin, I want to be notified of new spontaneous application 3 19.5 As an admin, I want to be notified of new applications of offer 3 19.6 As an admin, I want to be notified of new mails 3 19.7 As an admin, I want to be notified of new alert 3 19.8 As an admin, I want to get a list of most shared offers 3 19.9 As an admin, I want to get number of click for each link 3
  • 36.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 26 2.3 DESIGN DIAGRAMS Conceptual modelling is an important step since it describes the process of software methods, functions, objects, and the overall structure and interaction of the code so that the resulting functionality will satisfy users requirements. In this section we will present website design using two diagrams types (Use Case and Classes diagrams). 2.3.1 Use case Diagrams The Use Case Diagram identifies the users of the system (actors) and their interactions with the system. Also, it allows to give a global vision of the functional behaviour of a software system. 2.3.1.1 General Use case The general use case represents the big image of the interaction between actors and system. The main actors are: visitor, employer, candidate and webmaster. Figure 4 presents the general use case.
  • 37.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 27 Figure 4: General use case The candidate inherits the visitor functionalities. And both of them do not need an authentication. The webmaster inherits all the functionalities of the employer. And both of them need to be authenticated 2.3.1.2 Refinement and textual description of priority use cases A. Use case of website consultation Figure 5 presents the use case Diagram of the Website consultation.
  • 38.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 28 Figure 5: Visitor consultation use case The Visitor could consult the Website, send a message, activate or disactivate an alert after having sent a valid email. Table 2 presents the textual description of the use case related to the message sending. Table 2: Textual description of message sending Title Send message Description Visitor sends message through the website Primary Actor Visitor Preconditions None Postconditions Message sent Main Success Scenario 1. Message postulation form page is displayed 2.Insert data to the required fields of the form 3.Click on the submit button 4.The system verifies that all required fields are filled
  • 39.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 29 5.If the verification succeeds, the system saves the message and returns a validated message ALTERNATIVES 5.a. Verification failed 5.a.1. Error message will be displayed. Table 3 presents the textual description of the use case related to activating alert Table 3: Textual description of activating alert use case Title Activate alert Description Visitor activate alert Primary Actor Visitor Preconditions None Postconditions Alert activated Main Success Scenario 1. The alert form page is displayed 2.The visitor inserts data to the required fields of form 3.He clicks on the submit button 4.The system verifies that all required fields are filled 5.If the verification succeeds, the system saves the alert and returns a message 6.The system sends a verification email to the Visitor with a token.
  • 40.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 30 7.If the email is well received, the system saves the alert ALTERNATIVES 5.a. Verification failed 5.a1. An error message will be displayed. 7.a. Email not received 7.a1.The visitor repeats the process Table 4 presents the textual description of the use case related to the disactivating alert. Table 4: Textual description of disactivating alert Title Disactivate alert Description Visitor disactivate alert Primary Actor Visitor Preconditions Alert activated Postconditions Alert disactivated Main Success Scenario 1. If a visitor disactivates alerts by email, the system deletes the saved alert mails and displays the success message in the website on the alert page. ALTERNATIVES 1.a. The visitor displays the alert web page. 1.a1. He clicks on the disactivate button. 1.a2. The system displays a form 1.a3. The visitor inserts his mail 1.a4. He clicks on poste button
  • 41.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 31 1.a5.The system deletes the alert and returns success message. Figure 6 represents the use case of a job application or a candidature. The candidate inherits the visitor functionalities, but he is also allowed to apply for an offer or submit a spontaneous candidature. Figure 6: Job application use case Table 5 presents the textual description related to the use case “Job application”. Table 5: Textual description of job application Title Job application by offer Description The candidate consults job offers. He selects a job offer and submits his candidature. Primary Actor Candidate
  • 42.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 32 Preconditions Selected offer Postconditions Job application posted Main Success Scenario 1.The candidate fills the form. 2.The candidate clicks on the submit button. 3.The system verifies the inputs. 4.If the verification succeeds, the system saves the candidature. 5.The system returns a success message and resets the form. ALTERNATIVES 4.a. Verification failed. 4.a1. Error message is displayed by the system Table 6 presents the textual description of the use case related to the spontaneous application. Table 6: Textual description of spontaneous application Title Spontaneous application or candidature Description The candidate submits his candidature. Primary Actor Candidate Preconditions None Postconditions Candidature posted Main Success Scenario 1.The candidate fills the form. 2.He clicks on the submit button. 3.The system verifies the inputs.
  • 43.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 33 4.If the verification succeeds, the system saves the candidature. 5.Tthe system returns a success message and resets the form. ALTERNATIVES 4.a. Verification failed. 4.a.1.An error message is displayed by the system B. Use case of website management Figure 7 presents the use case of the website management; the employer could manage offers and publish them. The employer could also consult messages, manage candidature, and manage interviews. Figure 7: Website management use case
  • 44.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 34 Table 7 presents the textual description of the use case related to the job offer management. Table 7 : Textual description of the job offer management Title Offer management Description The employer could create, update a job offer or delete it. Primary Actor Employer Preconditions There is no job offer or there is a non-published job offer Postconditions Offer created, updated or deleted Main Success Scenario 1.The employer creates a job offer. 2.The employer updates the state of the job offer to published. 3.The employer could delete a job offer ALTERNATIVES 2.a. The employer updates the offer details Table 8 presents the textual description of the use case related to the candidature management. Table 8 : Textual description of the candidature management Title Candidature management Description The employer consults candidatures list, he could change the state of candidature to accepted. And he could also send email of acceptation.
  • 45.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 35 Primary Actor Employer Preconditions At least there is candidature in the list of candidatures. Postconditions Mail sent / none Main Success Scenario 1.The employer consults accepted and rejected candidatures. 2.He could update candidature or change the status to accepted. 3.He could send acceptance mail. ALTERNATIVES None Table 9 presents the textual description of the use case related to the interview management. Table 9 : Textual description of interview management Title Interview management Description The employer selects the final candidates and clicks on the button to create the interview. Primary Actor Employer Preconditions Selected candidate Postconditions Mail sent Main Success Scenario 1.The employer verifies when the candidate is available through an email. 2.He clicks on create interview button.
  • 46.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 36 2.The system checks the available recruiters and the meeting room. 3.The employer chooses the recruiter and the convenient time. 4.The system reserves the meeting room, sends an email to the recruiter and the candidate, to inform them with the details. ALTERNATIVES None C. Use case of the website maintaining Figure 8 presents the use case of the website maintaining. The webmaster inherits all the functionalities of the employer. In addition, he could manage employers and settings after the authentication. Figure 8: Website maintaining use case Table 10 presents the textual description of the use case related to the settings management.
  • 47.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 37 Table 10: Textual description of settings management Title Settings management Description The webmaster after the authentication, could manage the front Office Menu, configure and maintain the email service of the website. Primary Actor Webmaster Preconditions Have a registered account in the site Postconditions None Main Success Scenario 1.Create a front office menu. 2.Update Menu status to publish 3. Configure the email settings. ALTERNATIVES 2.a.Update Menu status to unpublished Table 11 presents the textual description of the use case related to the employers management. Table 11 : Textual description of employers management use case Title Employers management Description The webmaster manages the employers after the authentication. Primary Actor Webmaster Preconditions Have a registered account in the site Postconditions None Main Success Scenario 1.The webmaster authenticate.
  • 48.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 38 2.He grants roles to employers ALTERNATIVES None 2.3.2 Class Diagram In this section, we will present the general class diagram. This latter is widely used in modeling object oriented systems, because it is the only UML diagram mapped directly with object-oriented languages. The general class diagram gives a vision about the different classes and methods used in creating the website and includes the attributes and the operations of each class and their relation mapping. Figure 9 presents the class diagram. This diagram will be explained in details, how it was created and implemented in the next chapter. CONCLUSION In this chapter, we have mentioned the methodology we used to create the project and justify it. Moreover, we have represented the product backlog to explain the main work to do. And in the final section, we have covered all the possible scenarios of use case diagrams to make the project comprehensive.
  • 49.
    Chapter 2: Specification& Design Redevelopment of SIFAST website 39 Figure 9: Class diagram
  • 50.
    Redevelopment of SIFASTwebsite 40 Chapter III: Implementation
  • 51.
    Chapter 3: ImplementationRedevelopment of SIFAST website 41 INTRODUCTION This chapter is dedicated to present the application architecture, the work environments, the different sprints and their planification. Each sprint contains the sprint backlog and the UML design diagrams. 3.1 LOGICAL ARCHITECTURE OF THE SOLUTION The definition of the logical application architecture is an important step in the design process. In fact, the logical architecture depends on a number of factors such as requirements for performance, perspectives, scalability, modularity and extensibility. In my work, we propose an application architecture that promotes a clear separation of responsibilities, reusability and scalability through the use of the Symfony Framework [5]. Figure 10 presents an overview of the logical architecture of the proposed solution Figure 10: An overview of the logical architecture of the proposed application
  • 52.
    Chapter 3: ImplementationRedevelopment of SIFAST website 42 As illustrated in the figure, in my work we used the three-tier architecture. It is a software design pattern and a well-established software architecture based on client-server architecture. In fact, the functional logic, the data access, the computer data storage and the user interfaces are developed and maintained as independent modules on separate platforms. In my work, the three tiers are: 1. Presentation Tier: Occupies the top level and displays information related to services available on a website. This tier communicates with other tiers by sending results to the browser and other tiers in the network. In my project, the presentation layer provides the logical navigation. It consists of a front block contains pages written in HTML5, JavaScript for the visual presentation of information and it also relates back-end part with front-end part in order to ensure the exchange of data. 2. Business Tier: Also called the middle tier, application logic or logic tier. This tier is pulled from the presentation tier. Application server controls application functionality by performing detailed processing. In my project, as illustrated in the figure above, the business logic includes controllers, repositories and entities. They are all written in PHP. Repository represents the middle communicator between the controller and the entities to provide another layer and restricts direct interactions with the data. 3. Data Tier: Houses database servers where information is stored and retrieved. Data in this tier is kept independent of the application servers or the business logic. For my project, we have used MySQL host, an open source relational database management system. It is built with the structure query language SQL. Moreover, Symfony applications rely on the independent Doctrine project which is a set of PHP libraries primarily focused on providing persistence services and related functionality, to define their model using entities and repositories. In my project, the connection between the Data layer and the business layer includes the Doctrine tool [11] which is a set of PHP libraries providing persistence services. More precisely, we have used ORM (Object Relational Mapping) [12] which is a mechanism making possible to address, access and manipulate
  • 53.
    Chapter 3: ImplementationRedevelopment of SIFAST website 43 objects without having to consider how those objects relate to their data source. The doctrine project also includes DBAL (Data Base Abstraction Layer) packages to deliver an access to databases by providing a single low-level programming interface to the application developer. The Doctrine includes also PDO (PHP data objects) extension that defines a lightweight and consistent interface for accessing databases in PHP [11]. Figure 11 illustrates the doctrine project architecture. Figure 11: Architecture of the doctrine project In addition, the framework Symfony4 also implements the design pattern Model View Controller (MVC) explained as follows: • Model: It directly manages the data, logic and rules of the application. In my work, the model contains entities and repositories. It provides the view with necessary data using controller as communicator. • Controller: is the link between the model and the view. The controller receives inputs and commands from user handed over by the view. In my work the controller is a set of pages written in PHP.
  • 54.
    Chapter 3: ImplementationRedevelopment of SIFAST website 44 • View: is the friendly interfaces presented to the client. In my work, these interfaces are realised with HTML, JavaScript, CSS and Twig. 3.2 WORK ENVIRONMENTS In this part, we will present the material and technical environments related to the application realisation. 3.2.1 Material environment Table 12 presents the material characteristics of the computer used in the application implementation. Table 12: Computer characteristics Characteristic Type Processor 2,2 GHz Intel Core i7 RAM 8 Go Operating system Ubuntu16.4 3.2.2 Software tools ▪ StarUML [13]: is an open source software modelling tool that supports UML (Unified Modelling Language). It is based on UML version 1.4, provides eleven different types of diagram and it accepts UML 2.0 notation. It actively supports the MDA (Model Driven Architecture) approach by supporting the UML profile concept and allowing to generate code for multiple languages. ▪ Visual studio code [14]: is a new type of tool that combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle. Code provides comprehensive editing and debugging support, an extensibility model, and lightweight integration with existing tools. 3.2.3 Development environment The technical choices concerning the development languages were imposed by the Product Owner from the beginning of the project.
  • 55.
    Chapter 3: ImplementationRedevelopment of SIFAST website 45 • Php [15]: is a script language and interpreter that is freely available and used primarily on Linux Web servers. PHP, originally derived from Personal Home Page Tools, now stands for PHP: Hypertext Preprocessor, which the PHP FAQ describes as a "recursive acronym." • HTML5 [16]: is a revision of the Hypertext Markup Language (HTML), the standard programming language for describing the contents and appearance of Web pages. • CSS3 [17]: Cascading Style Sheets is a style sheet language used for describing the presentation of a document written in a markup language like HTML. CSS is a cornerstone technology of the World Wide Web, alongside HTML and JavaScript. • MySQL [18]: is an open-source relational database management system. Its name is a combination of "My", the name of the co-founder Michael Widenius's daughter, and "SQL", the abbreviation for Structured Query Language • Apache server [19]: the Apache Software Foundation is a cornerstone of the modern Open Source software ecosystem – supporting some of the most widely used and important software solutions powering today's Internet economy. 3.3 RELEASE1: RENOVATE THE WEBSITE USING SYMFONY 4 The first release contains two sprints. Sprint 0 includes the initialisation of the work and the candidature management, and Sprint 1 contains the realisation of the job offer management and the related classes. 3.3.1 Backlog of Sprint 0 Table 13 presents the Backlog of sprint0. Table 13: Sprint0 Backlog US Id User Story Task Id Task Estimation(4H) 1.1 As an admin I want to login to the back-office 1.1-1 install Fos user bundle 0.5 1.1-2 configure Fos user bundle 1 1.1-3 install sonata admin bundle 1 1.1-4 configure sonata admin 1 1.1-5 set up redirection paths 1 1.1-6 set up login rights 1 1.2 1.2-1 create Redirection Controller 1
  • 56.
    Chapter 3: ImplementationRedevelopment of SIFAST website 46 US Id User Story Task Id Task Estimation(4H) As an admin I want to logout of the back-office 1.2-2 add redirection action 0.25 1.3 As an admin I want to add a user 1.3-1 Override user add action function 1 1.4 As an admin I want to edit a user 1.4-1 override user edit action function 1 1.5 As an admin I want to delete a user 1.5-1 override user delete action function 1 1.6 As an admin I want to grant roles to users 1.6-1 define and grant roles to users 1 1.7 As an admin I want to consult users list 1.7-1 override user list action function 0.5 2.1 As an admin I want to add a job offer 2.1-1 create job offer entity 2.1-2 create job offer admin class 1 2.1-3 override job offer add action function 2.2 As an admin I want to edit a job offer 2.2-1 override job offer edit action function 1 2.3 As an admin I want to delete a job offer 2.3-1 override job offer delete action function 1 2.4 As an admin I want to publish a collection of job offers simultaneously 2.4-1 create publish Batch action in crud controller 2 2.5 As an admin I want to get all job offers in the back office 2.5-1 override list action of job offer 0.5 2.6 As visitor I want to get job offers in front office 2.6-1 create a job offer controller 2.6-2 create job offers list action 2.6-3 create job offer form 4 2.6-4 create job offer view 2.7 As visitor I want to get a job offer details in front office 2.7-1 create job offer show action 1 2.7-2 create job offer show view 1 3.1 As visitor I want to submit a spontaneous candidature 3.1-1 create candidature entity 3.1-2 create candidature controller 3.1-3 add spontaneous candidature submit action to candidature controller 4 3.1-4 create spontaneous candidature submit view
  • 57.
    Chapter 3: ImplementationRedevelopment of SIFAST website 47 US Id User Story Task Id Task Estimation(4H) 3.2 As visitor I want to submit an candidature on a published job offer 3.2-1 add job offer candidature submit action to candidature controller 1 3.2-2 add job offer candidature submit view 1 3.3 As an admin I want to get candidature by state (accepted/ rejected) and type 3.3-1 accepted candidature by job offer list 1 3.3-2 rejected candidature by job offer list 1 3.3-3 accepted spontaneous candidature list 1 3.3-4 rejected spontaneous candidature list 1 3.4 As an admin I want to get candidature details 3.4-1 override show action of candidature 0.25 3.5 As an admin I want to delete a candidature 3.5-1 Add delete action to candidature controller 0.25 3.6 As an admin I want to edit a candidature state 3.6-1 override edit action of candidature 0.25 4.1 As an admin, I want to add a menu to the front-office 4.1-1 create menu entity 0.25 4.1-2 create menu admin class 1 4.1-3 register menu admin as a service 0.15 4.1-4 override add action in menu admin 1 4.2 As an admin , I want to edit a Menu 4.2-1 override edit action in menu admin 1 4.3 As an admin , I want to delete a Menu 4.3-1 override delete action in menu admin 1 4.4 As an admin , I want to apply an action on the list of menus 4.4-1 override list action and override butch action in menu admin 2 5.1 As an admin , I want to create dictionary 5.1-1 create dictionary entity 0.25 5.1-2 create dictionary admin class 0.25 5.1-3 register dictionary admin as a service 1 5.2-3 override add action in dictionary admin 1
  • 58.
    Chapter 3: ImplementationRedevelopment of SIFAST website 48 3.3.2 Design of Sprint 0 3.3.2.1 Class diagram For Sprint0, we have started with the necessary classes, to release the first steps of creating the website. Figure 12 illustrates the class diagram of sprint0. Figure 12: Class diagram of sprint0
  • 59.
    Chapter 3: ImplementationRedevelopment of SIFAST website 49 The main classes are: ▪ Person: is a class that includes the common data between the actors. ▪ Visitor: is the person who consults and posts messages to SIFAST ▪ Candidate: is the person who posts his candidature ▪ Employer: is the person who works in SIFAST ▪ DesiredJob: is the job title included in the candidature form. It is inserted by the employer. ▪ Group: is a group of employers who have the same role. ▪ UserGroupe: is the associated class between employer and Group. ▪ Menu: is a manual menu created by employers depending on their role ▪ JobOffer: is an offer that represents a specific job ▪ Dictionary: is a set of words representing keywords for CV selection process. It is used to find specific words in CV such as XML,Symfony, etc. 3.3.2.2 Sequence diagram A. Offer management Figure 13 illustrates sequence diagram of offers management.
  • 60.
    Chapter 3: ImplementationRedevelopment of SIFAST website 50 Figure 13: Sequence diagram of offers management B. Candidature management Figure 14 shows the sequence diagram of a candidature created by a candidate. Figure 15 illustrates the candidature managment by an employer.
  • 61.
    Chapter 3: ImplementationRedevelopment of SIFAST website 51 Figure 14: Sequence diagram of candidature creation
  • 62.
    Chapter 3: ImplementationRedevelopment of SIFAST website 52 Figure 15: Sequence diagram of candidature management C. Sharing a job offer Figure 16 represents the sequence diagram of sharing a job offer on social network.
  • 63.
    Chapter 3: ImplementationRedevelopment of SIFAST website 53 Figure 16 : Sequence diagram of sharing a job offer 3.3.2.3 Activity diagram Figure 17 represents the activity diagram of sharing a job offer in the social network.
  • 64.
    Chapter 3: ImplementationRedevelopment of SIFAST website 54 Figure 17: Activity diagram of sharing a job offer on social network The process of sharing a job offer from the website to the social network is described as follows. At the first time, the visitor clicks on the share button displayed in the job offer page in SIFAST website. Consequently, a free API called bitly 5 (url shortener) is used to create a link to access the job offer content. This API allows developers to easily shorten, share, manage, and analys e their favourite links from around the web [20]. After that, the link is saved into the data base for next sharing. A sharing confirmation is needed by the visitor. 3.3.3 Backlog of Sprint 1 Table 14 presents the Sprint1 Backlog. 5 https://bitly.com
  • 65.
    Chapter 3: ImplementationRedevelopment of SIFAST website 55 Table 14 Sprint1 Backlog US Id User Story Task Id Task Estimation(4H) 1.1 As an admin, I want to update the dictionary 1.1-1 override EditAction in DictionaryAdmin 1 1.2 As an admin, I want to delete the dictionary 1.2-1 override deleteAction in DictionaryAdmin 1 1.3 As an admin, I want to get the list of dictionaries 1.3-1 override listAction in DictionaryAdmin 1 2.1 As a visitor I want to consult the front-office 2.1-1 create template pattern 1 2.1-2 create frontOffice Controller 2.1-3 create homePage view 2.1-4 create homePage action 2.2 As an admin, I want to hide the front office website visibility 2.2-1 create isVisibleAction in the frontOffice controller 0.5 2.2-2 create visibility view 2.3 As an admin, I want to set the front office website as "under construction" 2.3-1 create underConstruction action in the frontOffice controller 1 2.3-2 create underConstruction view 3.1 As a visitor I want to send a message through the front-office 3.1-1 create contact controller 3.1-2 create contact action in contact controller 3 3.1-3 create contact form 3.1-4 create contact view 3.2 As an admin, I want to receive sent messages by email 3.2-1 install and configurate swiftMailer bundle 3.2-2 set up sender email and password in to environment parameters 3.2-3 create sendMail action in the contact controller 7 3.2-4 edit contact action 3.2-5 test if the email is sent 3.3 As an admin I want to get the list of messages in the back-office 3.3-1 create contact admin class 3.3-2 set contact admin class as a service 0.25 3.3-3 override list action
  • 66.
    Chapter 3: ImplementationRedevelopment of SIFAST website 56 US Id User Story Task Id Task Estimation(4H) 3.4 As an admin I want to get message details 3.4-1 override show action 0.25 3.5 As an admin I want to delete a message 3.5-1 add delete functionality to list action 0.25 4.1 As an admin, I want to add and edit an availability 4.1-1 create availability admin class 4.1-2 set availability admin class as a service 2 4.1-3 override the default form mapper 4.2 As an admin, I want to get the list of availabilities 4.2-1 override the default list mapper 0.25 4.3 As an admin, I want to delete an availability 4.3-1 add delete functionality to list action 0.25 5.1 As an admin, I want to add and edit an experience 5.1-1 create experience admin class 0.25 5.1-2 set experience admin class as a service 0.25 5.1-3 override the default form mapper 0.25 5.2 As an admin, I want to get the list of experiences 5.2-1 override the default list mapper 0.5 5.3 As an admin, I want to delete an experience 5.3-1 add delete functionality to list action 0.25 6.1 As an admin, I want to add and edit a domain 6.1-1 create domain admin class 6.1-2 set domain admin class as a service 2 6.1-3 override the default form mapper 6.2 As an admin, I want to get the list of domains 6.2-1 override the default list mapper 0.25 6.3 As an admin , I want to delete a domain 6.3-1 add delete functionality to list action 0.5 7.1 As an admin , I want to add edit a region 7.1-1 create region admin class 7.1-2 set region admin class as a service 1 7.1-3 override the default form mapper 7.2 As an admin , I want to get the list of regions 7.2-1 override the default list mapper 0.5 7.3 As an admin , I want to delete a region 7.3-1 add delete functionality to list action 0.5
  • 67.
    Chapter 3: ImplementationRedevelopment of SIFAST website 57 US Id User Story Task Id Task Estimation(4H) 8.1 As a visitor, I want to research offers published in the site 8.1-1 add filter action to the offer controller 0.5 8.1-2 create Javascriptfunctionality to update the research without reloading to page 6 8.1-3 create research view 1 8.2 As a visitor, I want to get only 4 job offers by page 8.2-1 create a Javascriptfunctionality to get only 4 pages 2 8.2-2 update filter action 1 8.2-3 update research action 1 8.2-4 add pagination buttons to offer list view 2 9.1 As an admin, I want to add a submenu to the front-office 9.1-1 create subMenuAdmin Class 0.25 9.1-2 register subMenuAdmin as a service 1 9.1-3 override addAction in subMenuAdmin 0.25 9.2 As an admin, I want to edit a submenu 9.2-1 override EditAction in subMenuAdmin 2 9.3 As an admin, I want to delete a submenu 9.3-1 override deleteAction in subMenuAdmin 1 9.4 As an admin, I want to get the list of submenu and to apply an action on the list of menus 9.4-1 override listAction and override butchAction in subMenuAdmin 2 3.3.4 Design of Sprint 1 3.3.4.1 Class diagram Figure 18 presents the class diagram of sprint 1.
  • 68.
    Chapter 3: ImplementationRedevelopment of SIFAST website 58 Figure 18: Class diagram of sprint1 For Sprint1, the main classes are: • Messages: is the class of messages posted by visitors. • Availability: is the class, that represents the different disponibilities of the candidate, it will be displayed in the job application form. • Degree: is the class containing the needed degrees by Company SIFAST. • Experience: represents the different years of experience created by employer in BO and it will be checked in the application form or candidature form by candidate. • Domain: this class represents the different domains of technologies in SIFAST. • Contract: this class represents the different types of contracts used by SIFAST company. • Region: this class represents the different regions of the different countries. • Country: is a class of countries related to a region.
  • 69.
    Chapter 3: ImplementationRedevelopment of SIFAST website 59 • References: is a class that demonstrates the set of clients, based on the region of each country. • Category: is a class represents the domain of each reference (marketing, …) 3.3.4.2 Sequence diagram of visitor messages management Figure 20 illustrates the sequence diagram of visitor messages management. Figure 19: The management of the visitor messages Figure 20: Sequence diagram of visitor messages management
  • 70.
    Chapter 3: ImplementationRedevelopment of SIFAST website 60 3.4 RELEASE2: ADDING THE STATISTIC AND THE CV SELECTION MODULES The second release contains two sprints. Sprint 2 includes the implementation of the alert management and the installation of libraries related to the CV selection workflow. And Sprint3 contains the last steps of the alert management implementation, and the implementation of the interview management. 3.4.1 Backlog of Sprint 2 Table 15 presents the backlog of sprint 2. Table 15: Sprint 2 Backlog US Id User Story Task Id Task Estimation(4H) 1.1 As a visitor, I want to get references 1.1-1 create reference entity 1.1-2 create reference controller 1.1-3 create show action in the reference controller 2 1.1-4 create reference view 1.2 As a visitor, I want to get references by domain 1.2-1 update the view to be able to find references by domain 0.5 1.3 As a visitor, I want to get references by country 1.3-1 create fr action 1.3-2 create tn action 1.3-3 create fr view 2 1.3-4 create tn view 1.4 As an admin, I want to add and edit a reference 1.4-1 create reference admin class 1.4-2 set reference admin class as a service 2 1.4-3 override the default form mapper 1.5 As an admin, I want to get the list of references 1.5-1 override the default list mapper 1 1.6 As an admin, I want to delete a reference 1.6-1 add delete functionality to list action 0.5 2.1 As a visitor, I want to get the technical expertise 2.1-1 create technical expertise entity 2.1-2 create technical expertise controller 2.1-3 create list action in the technical expertise controller 2
  • 71.
    Chapter 3: ImplementationRedevelopment of SIFAST website 61 US Id User Story Task Id Task Estimation(4H) 2.1-4 create technical expertise view 2.2 As an admin, I want to add and edit a technical expertise 2.2-1 create technical expertise admin class 2.2-2 set technical expertise admin class as a service 1 2.2-3 override the default form mapper 2.3 As an admin, I want to get the list of technical expertises 2.3-1 override the default list mapper 0.25 2.4 As an admin, I want to delete a technical expertise 2.4-1 add delete functionality to list action 0.25 3.1 As a visitor, I want to share a job offer on social networks 3.1-1 create link entity 3.1-2 create a web service with a shorten application 3.1-3 create shorten action in offer controller 1 3.1-4 create share action in offer controller 3.1-5 add share button in offer view 3.2 As an admin, I want to get a list of shared job offers 3.2-1 override the default list mapper 0.25 3.3 as an admin, I want to delete a link of share 3.3-1 add delete functionality to list action 0.25 3.4 As an admin, I want to get informations about most preferred job offers 3.4-1 override the default show action 0.25 4.1 As an admin, I want to get applications selected by relevance 4.1-1 install library MLP 1 4.1-2 create a training action 4 4.1-3 create a testing action 4 4.1-4 add ranking as a field in application entity 0.25 4.1-5 override the default research action to set the default list sorted by relevance 4 4.2 As an admin, I want to get a resume content 4.2-1 install and configure a parser bundle 1 4.2-2 add parsing action to the candidature controller 2
  • 72.
    Chapter 3: ImplementationRedevelopment of SIFAST website 62 US Id User Story Task Id Task Estimation(4H) 4.2-3 install and configure an OCR bundle 2 5.1 As a visitor, I want to create an alert to get notified of new job offers 5.1-1 create alert entity 5.1-2 create alert controller 5.1-3 create subscription form 2 5.1-4 create subscribe action in alert controller 5.2 As a visitor, I want to receive mails every time a suitable job offer is available 5.2-1 create email template 2 5.2-2 create send email action in alert controller 5.3 As a visitor, I want to unsubscribe of alert mailing list 5.3-1 create unsubscribe form 5.3-2 create unsubscribe view 2 5.3-3 create unsubscribe action in alert controller 5.4 As an alert subscriber, I want to unsubscribe from received emails 5.4-1 edit alert email template 5.4-2 create unsubscribe by email action in alert controller 1 3.4.2 Design of Sprint 2 3.4.2.1 Class Diagram Figure 21 illustrates the class diagram of Sprint 2.
  • 73.
    Chapter 3: ImplementationRedevelopment of SIFAST website 63 Figure 21 : Class diagram of sprint2 The added classes are coloured in red in Figure 21, and they are as the follow: • Link: this class contains the share link of a job offer. • Link references: this class represents the different references related to a link (Facebook,..) • Expertise: this class represents the main domains and tools used in SIFAST company. • Settings: this class represents the main words and texts used in configuration, such as the configuration of company email. 3.4.2.2 Sequence diagram of the Alert management Figure 22 and Figure 23 present respectively the sequence diagrams of the alert subscribing and the alert sending.
  • 74.
    Chapter 3: ImplementationRedevelopment of SIFAST website 64 Figure 22: Sequence diagram of the alert subscribing Figure 23: The sequence diagram of the alert sending
  • 75.
    Chapter 3: ImplementationRedevelopment of SIFAST website 65 3.4.2.3 Activity diagram of the CV selection workflow Figure 24 presents the activity diagram of the CV selection workflow. Figure 24: Activity diagram of CV selection workflow The process of the CV selection workflow is as follows. First of all, the system checks the content type of the PDF file of the CV: if the content type is already text, it will be converted directly to JSON format; else if the content type is a scanned image, it will be submitted to an OCR
  • 76.
    Chapter 3: ImplementationRedevelopment of SIFAST website 66 system to extract textual information and store them into a Json file. This process requires an OCR library to be installed. In my work, we have chosen to use the Tesseract tool [21], an open source Optical Character Recognition Engine, available under the Apache 2.0 license. It is sponsored by Google since 2006 and was considered one of the most accurate open-source OCR engines [22]. More precisely, to manage the Tesseract API with PHP, we used the most known cover of Tesseract written by Thiagoalessio [23]. Tesseract OCR for PHP6 is beneficial, because it is easy to use a wrapper of the command line instructions for Tesseract OCR inside PHP. In the CV selection workflow, we propose to construct manually a model for Json file. This model contains the most significant data for the CV selection such as the number of years of expertise, the last obtained diploma, number of obtained certificates, skills, etc. After that, extracted data of each CV is stored into a JSON file according to the constructed manual model. Figure 25 shows an example of a Json file. Figure 25: An example of a Json file Each Json file contains a set of attributes/values. The values are obtained using dictionaries. For example, “diplome:1” in Figure 25 means that this candidate has an engineering diploma and “contract:1” means that the type of the desired contract is “CDI”. Given a Job offer, to rank the different candidatures, the process needs to compare the json file of the job offer to the Json files of candidatures. For thus, we propose to compute a score for 6 https://github.com/thiagoalessio/tesseract-ocr-for-php
  • 77.
    Chapter 3: ImplementationRedevelopment of SIFAST website 67 each candidature and make a decision (accepted/rejected). Consequently, we model the situation as a classification problem with supervising learning: training data could be used to learn a model , how to classify a new CV according to a set of attributes/values. For this reason, we choose to use Machine Learning (ML) technique, and more precisely we used the ML library [24] for PHP (PHP-ML - Machine Learning library for PHP). 3.4.2.4 Choice of a ML algorithm for CV selection workflow There are several machine learning algorithms that could be used in the classification process. The main known algorithms are : • Support Vector Machine (SVM) [25] is a discriminative classifier formally defined by a separating hyperplane. In other words, given labelled training data (supervised learning), the algorithm outputs an optimal hyperplane which categorizes new examples. In two-dimensional space this hyperplane is a line dividing a plane in two parts where in each class lay in either side. • K nearest neighbors(KNN) [26] is a simple algorithm that stores all available cases and classifies new cases based on a similarity measure (e.g., distance functions). KNN has been used in statistical estimation and pattern recognition already in the beginning of 1970’s as a non-parametric technique • Naive Bayes classifiers(NB) [27] are a collection of classification algorithms based on Bayes’ Theorem. It is not a single algorithm but a family of algorithms where all of them share a common principle, i.e. every pair of features being classified is independent of each other. In my work, we have tested the three algorithms offered by the library. The NB and KNN algorithms give directly the decision without a score while the SVM algorithm provides the decision with a probability score which allows to rank candidatures from the most relevant to the least relevant.
  • 78.
    Chapter 3: ImplementationRedevelopment of SIFAST website 68 After all this research’s, we implemented the algorithm by training CVS file. The CVS file contains the needed data. The algorithm parses the data into samples and labels, then it train the system with different informations. The last step included the testing and the prediction of new samples and inputs. 3.4.2.5 Application of the machine learning in the CV selection workflow In the training phase we have used 20 CVs samples transformed to Json files. And in the testing phase, we have tested 3 CVs. Figure 26 presents an overview of the CV selection workflow. Figure 26: An overview of the CV selection workflow This figure illustrates on the top part, a job offer transformed into a Json file. And in the second part, three CVs are transformed into json files using dictionaries, while CV1 and CV2 are training data and CV3 is a testing data.
  • 79.
    Chapter 3: ImplementationRedevelopment of SIFAST website 69 3.4.3 Backlog of Sprint 3 Table 16 presents the backlog of Sprint 3. Table 16: Sprint 3 Backlog US Id User Story TAsk Id Task Estimation(4H) 1.1 As an admin, I want to add an interview 1.1-1 create interview entity 0.25 1.1-2 create interview admin class 0.5 1.1-3 create a web service to get an interviewer calendar from Zimbra calendar 2 1.1-4 create a web service to get meeting rooms availability 2 1.1-5 create interview crud controller 2 1.1-6 create add action 1 1.1-7 create send email action 1 1.1-8 create check availability action 1 1.1-9 override the default form mapper 0.5 1.1-10 create candidate email template 1 1.1-11 create interviewer email template 4 1.2 As an admin, I want to edit an interview 1.2-1 add update action 1 1.2-2 create candidate update email template 1 1.2-3 create interviewer update email template 1 1.3 As an admin, I want to cancel an interview 1.3-1 add cancel action 1 1.3-2 create candidate cancel email template 1 1.3-3 create interviewer cancel email template 1 1.4 as an admin, I want to get the list of interviews 1.4-1 override the default list mapper 1 2.1 As an admin, I want to be notified of new spontaneous application 2.1-1 create spontaneous application service 1 2.1-2 add notification of new spontaneous application view 2 2.1-3 override default layout view to add notification of spontaneous application 2 2.2 As an admin, I want to be notified of new applications of offer 2.2-1 create new service 1 2.2-2 add notification of application of offer view 1 2.2-3 override default layout view to add notification of new applications of offer 2 2.2-4 override default layout view to add notification of application of offer 2 2.3 2.3-1 create new service 0.5 2.3-2 add new mails view 1
  • 80.
    Chapter 3: ImplementationRedevelopment of SIFAST website 70 US Id User Story TAsk Id Task Estimation(4H) As an admin, I want to be notified of new mails 2.3-3 override default layout view to add notification of new mails 2 2.4 As an admin, I want to be notified of new alert 2.4-1 create new service 0.5 2.4-2 add new alert subscriber view 1 2.4-3 override default layout view to add notification of new alert subscriber 1 2.4-4 override default layout view to add notification of new alert subscriber 1 2.5 As an admin, I want to get clicks number of shared job offer 2.5-1 create controller 1 2.5-2 create view 1 2.5-3 override link default dashboard to add the new chart 1 2.6 As an admin, I want to get informations about the candidature skills and experiences 2.6-1 create controller 1 2.6-2 create view 1 2.6-3 override link default dashboard to add the new chart 1 2.7 As an admin, I want to get a list of most shared offers 2.7-1 override the default link list mapper to be sorted by number of clicks 2 3.4.4 Design of Sprint 3 3.4.4.1 Class Diagram Figure 27 illustrates the class diagram of sprint3.
  • 81.
    Chapter 3: ImplementationRedevelopment of SIFAST website 71 Figure 27: Class diagram of sprint3 The added classes for this sprint are coloured in red in the figure 27, and they are as the follow: • Translation: represents the class of translation related to the classes of job offer. • Interview: this class presents the interview, it is in relation with candidate, employer and the meeting room. • Technology: this class illustrates the technologies displayed in the offer description. • Alert: this class presents the Alert and it is relation with the domain, the contract and the Region. • Meeting room: this class presents the meeting room and its availability. 3.4.4.2 Sequence diagram of the Interview management Figure 28 presents the sequence diagram of the interview management.
  • 82.
    Chapter 3: ImplementationRedevelopment of SIFAST website 72 Figure 28: Sequence diagram of interview management The process of the interview management is as fellow: After the candidate selection by the appropriate employer, this latter verifies when the candidate is available through an email. Later on, the system checks available recruiters and available meeting room by Zimbra7 web service. Then, the employer chooses a recruiter and add a convenient time. Finally, the system reserves the meeting room and sends an email to the recruiter and the candidate, to inform them with the details. CONCLUSION In this chapter, we presented the implemented aspects of my application through the description of the hardware and software work environment. And the representation of different releases and sprints, where each one is explained and covered by UML diagrams. 7 https://webmail.sifast.tn
  • 83.
    Redevelopment of SIFASTwebsite 73 Chapter IV: Realisation
  • 84.
    Chapter 4: RealisationRedevelopment of SIFAST website 74 INTRODUCTION This chapter aims to present different figures that illustrate the application during the two releases including the four sprints. 4.1 ILLUSTRATION OF RELEASE1 In this section, we will present the figures related to sprint0 and sprint1. 4.1.1 Sprint0 In the first sprint as mentioned before, a configurable menu for the website front office; is developed. The employer configurates the main menu from the back office and completes the needed details. Figure 29 and Figure 30 illustrate the list menu and the submenu of the front office. Figure 29: Configuration of the main menu list of the front office website The difference between the submenu and the menu, is that the menu could contains images.
  • 85.
    Chapter 4: RealisationRedevelopment of SIFAST website 75 Figure 30: Configuration of the submenu list of the front office website Figure 31 represents the candidature application according to a job offer. Here, the visitor clicks on the apply button of the selected job offer. An application form page will be displayed. Figure 31: Form of candidature application according to a job offer
  • 86.
    Chapter 4: RealisationRedevelopment of SIFAST website 76 After filling the form, the candidate clicks on the post button to send it. 4.1.2 Sprint1 In the second sprint, we will present the realisation of the visitor message form and the job offer management. Figure 32 illustrates the visitor message form. The visitor fill the form and the message will be sent to the webmaster or to the appropriate employers. Figure 32: Interface of the messages form In this form, some inputs are required and others are optional. In addition, a captcha technique is used for security reasons. Concerning the job offer management, figure 33 illustrates the list of displayed job offers. The offer should contain specifications such as domain, contract, region and etc.
  • 87.
    Chapter 4: RealisationRedevelopment of SIFAST website 77 Figure 33: The list of displayed job offers of SiFAST First of all, the visitor clicks on the see offer button in the list of displayed job offers. Then the selected job offer details will be displayed. Figure 34 illustrates a job offer web page, containing details on the offer. Figure 34: Interface of job offer details
  • 88.
    Chapter 4: RealisationRedevelopment of SIFAST website 78 The visitor could use a filter to visualize the different job offers. For example, figure 35 illustrates the list of job offers filtered according to the domain features. Figure 35 : List of job offers according to a domain filter Figure 36 illustrates a job application using the job offer form. First, the visitor clicks on the apply button in the job offer page Then, the job application form will be displayed. When the visitor chooses an experience year, a modal will be displayed.
  • 89.
    Chapter 4: RealisationRedevelopment of SIFAST website 79 Figure 36: Application by the job offer form To provide the visitor experience details, the candidate should fill a form displayed into a modal as illustrated in figure 37 . Figure 37: A modal containing a form of candidate experience details 4.2 ILLUSTRATION OF RELEASE2 In this section, we are going to present the figures of my project realised in release 2.
  • 90.
    Chapter 4: RealisationRedevelopment of SIFAST website 80 4.2.1 Sprint 2 In this Sprint, we are going to present the search page of the job offers, the list of expertises. The internalisation, the references management and the alert email subscription. Figure 38 presents the list of job offers after a search. The visitor clicks on the search button displayed in any page of the website, then he inserts keywords and clicks on the submit button in the search page. Figure 38: List of offers after the search Figure 39 presents an example of a list of expertise.
  • 91.
    Chapter 4: RealisationRedevelopment of SIFAST website 81 Figure 39: An example of a list of expertise Concerning the internationalisation, it is possible for example to create a job offer with French and English languages using to different forms. Figure 40 shows the offer creation interface using the French form. Figure 40: Job offer creation interface in back office using the French form
  • 92.
    Chapter 4: RealisationRedevelopment of SIFAST website 82 For the internationalisation, another example is illustrated in figure 41, that presents the website introduction page displayed in French and English. I will present now the referances management. Figure 42 illustrats some references published in FO. Figure 42: Front office references The creation of a reffernce in the BO is illustrated in figure 43. Figure 41: Introduction page displayed in French and English
  • 93.
    Chapter 4: RealisationRedevelopment of SIFAST website 83 Figure 43: Reference creation in Back office I pass now to detail the alert subscribing by email. The visitor creates an alert by filling the form as illustrated in figure 44. Figure 44: Alert subscribing form
  • 94.
    Chapter 4: RealisationRedevelopment of SIFAST website 84 Once the form is filled and the visitor clicked on the send button, an email will be sent to the visitor. Figure 45 illustrates an example of the confirmation mail received by the subscriber. Figure 45: Alert email of confirmation Figure 46 presents a job offer received by email. Figure 46: Job offer received by email
  • 95.
    Chapter 4: RealisationRedevelopment of SIFAST website 85 Figure 47 presents the deactivation page. The visitor could disactivate the alert reception by inserting his email. Figure 47: Alert deactivation form 4.2.2 Sprint3 In this sprint we are going to illustrate by some screenshots the employer dashboard, the statistic of sharing an offer via social networks and the canidature selection process. Figure 48 represents the employer dashboard. It displays the notification blocks and the 5 fisrt messages received by a visitor.
  • 96.
    Chapter 4: RealisationRedevelopment of SIFAST website 86 Figure 48: Employer dashboard Figure 49 presents some statistics of using social network. This page displays a chart of clicks number of a shared job offer. Figure 49: Statistic of using social networking Figure 50 presents a chart displaying a number of admitted candidatures according to the desired job and the number of years of experience .
  • 97.
    Chapter 4: RealisationRedevelopment of SIFAST website 87 Figure 50: Interface of accepted candidatures by number of experience years Figure 51 presents the creation form of an interview. Figure 51: Interface of interview creation Figure 52 illustrates unavailable times of a recruiter.
  • 98.
    Chapter 4: RealisationRedevelopment of SIFAST website 88 Figure 52: Interface of available recruiters Figure 53 represents the interview details created by Zimbra webmail. Figure 53: Interview created in Zimbra Figure 54 illustrates an email sent to the recruiter with interview details.
  • 99.
    Chapter 4: RealisationRedevelopment of SIFAST website 89 Figure 54: An interview email received by recruiter Figure 55 illustrates an email sent to the candidate with interview details. Figure 55: Interview mail received by a candidate Figure 56 illustrates the output of the training and testing command. The first part is the training phase achieved, the second part is testing phase of 3 CVs. The results of the testing include the file name, the values in the Json file, the result of the classification and the score of each CV.
  • 100.
    Chapter 4: RealisationRedevelopment of SIFAST website 90 Figure 56: Output of training and testing command Figure 57 presents a list of rejected candidatures. When receiving a candidature, the system applies the CV selection workflow and assigns a score. This candidature selection process ranks and puts the candidature either in the rejected list or in the accepted list based on the score. Figure 57: An example of a list containing rejected candidatures CONCLUSION This chapter presented the realisation of my work by illustrating the application interfaces and forms with some screenshots.
  • 101.
    Redevelopment of SIFASTwebsite 91 General Conclusion
  • 102.
    Redevelopment of SIFASTwebsite 92 In nowadays, every company should have a website containing information about its activities and domain, its products, its contact details, etc. In this context, we have realised during my final project of study a new version of SiFAST company website. More precisely, we have renovated the website with the new version of the Symfony Framework (Symfony 4). And we have added some new features such as the interview management process, the CV selection workflow using machine leaning, and a module for analyses and statistics of social networks related to SiFAST company. In my work we have choose scrum methodology. So, first of all, we have defined the general context of the project and the requirements of the features with the team. Then, we have started to develop and implement the functional requirements. Consequently, we have accomplished some of the main functionalities, but due to time constraints some of them still need improvements. From a technical point of view, this project allowed me to implement the theoretical achievements that we learned throughout my university curriculum. It also allowed me to enrich and deepen my knowledge in the field of artificial intelligence and web technology. Finally, my work does not stop at this level. In fact, several perspectives are offered to this project. The first perspective consists of Improving CV selection workflow by integrating it in the interface designed to the candidature management by employers; and by improving the training by adding more examples. Another perspective of the application is to improve the spontaneous candidature ranking, because actually, the spontaneous CV are ranked only according to skills. For example, it is possible to give different weights to the candidate characteristics when computing a CV score.
  • 103.
    Redevelopment of SIFASTwebsite 93 References [1] Available: https://www.packtpub.com/mapt/book/application_development/9781783281794/1/ch01l vl1sec08/what-is-gitlab. [Accessed 22 06 2018]. [2] Available: https://matthiasgeiger.wordpress.com/2014/02/19/sonarqube-what-is-it-how- to-get-started-why-do-i-use-it/. [Accessed 22 06 2018]. [3] Available: https://www.docker.com/what-docker. [Accessed 22 06 2018]. [4] Available: https://blog.sonatype.com/2010/04/why-nexus-for-the-non-programmer/. [Accessed 22 06 2018]. [5] Available: https://www.kelltontech.com/kellton-tech-blog/top-5-web-development- frameworks-look-2018. [Accessed 22 06 2018]. [6] Available: http://gradzinski.com/php/symfony-directory-structure-comparison.html. [Accessed 22 06 2018]. [7] Available: https://reviews.financesonline.com/p/cleverstaff/. [Accessed 22 06 2018]. [8] Available: https://www.livecareer.com/. [Accessed 22 06 2018]. [9] Available: https://www.capterra.com/p/105548/Rchilli-Resume-Parser-Web-API/. [Accessed 22 06 2018]. [10] Available: https://www.cio.com/article/3156998/agile-development/agile-project- management-a-beginners-guide.html. [Accessed 22 06 2018]. [11] Available: https://www.doctrine-project.org/. [Accessed 22 06 2018]. [12] Available: https://www.doctrine-project.org/projects/doctrine- orm/en/latest/reference/architecture.html#architecture. [Accessed 22 06 2018].
  • 104.
    Redevelopment of SIFASTwebsite 94 [13] Available: http://www.methodsandtools.com/tools/staruml.php. [Accessed 22 06 2018]. [14] Available: https://github.com/Microsoft/vscode. [Accessed 22 06 2018]. [15] Available: https://whatis.techtarget.com/definition/PHP-Hypertext-Preprocessor. [Accessed 22 06 2018]. [16] Available: https://en.wikipedia.org/wiki/HTML5. [Accessed 22 06 2018]. [17] Available: https://en.wikipedia.org/wiki/Cascading_Style_Sheets. [Accessed 22 06 2018]. [18] “https://en.wikipedia.org/wiki/MySQL,” [19] Available: http://www.apache.org/. [Accessed 22 06 2018]. [20] Available: https://support.bitly.com/hc/en-us/articles/230895688-What-is-Bitly-. [Accessed 22 06 2018]. [21] Available: https://github.com/tesseract-ocr/tesseract. [Accessed 22 06 2018]. [22] A. Kay, “Tesseract: an Open-Source Optical Character Recognition Engine,” Linux Journal, 2007. [23] Available: https://github.com/thiagoalessio. [Accessed 22 06 2018]. [24] Available: https://github.com/php-ai/php-ml. [Accessed 22 06 2018]. [25] Available: https://medium.com/machine-learning-101/chapter-2-svm-support-vector- machine-theory-f0812effc72. [Accessed 22 06 2018]. [26] “http://www.saedsayad.com/k_nearest_neighbors.htm,” [Accessed 22 06 2018]. [27] Available: https://www.geeksforgeeks.org/naive-bayes-classifiers/. [Accessed 22 06 2018]. [28] Available: https://www.cloudbees.com/jenkins/about. [Accessed 22 06 2018].
  • 105.
    Redevelopment of SIFASTwebsite 95 [29] Available: https://towardsdatascience.com/types-of-machine-learning-algorithms-you- should-know-953a08248861. [Accessed 22 06 2018]. [30] Available: https://github.com/thiagoalessio/tesseract-ocr-for-php. [Accessed 22 06 2018]. [31] Available: https://www.redmine.org/projects/redmine/wiki. [Accessed 22 06 2018].