Rapport PiDev V1
Rapport PiDev V1
Project
Specialization: Software Engineering"
Prepared by :
Hela Nefla
Rahma Jebali
Eya Maamouri
Zayneb Akermi
Youssef Oueslati
Dawsser Ghzel
Mentored by:
Mohammed ali bellili
Table of Contents
• General Introduction ……………………………………………………………………..…………… 3
Chapter 1: General Framework of the Project ………………………………………………………….…… 5
1
General Introduction
In the construction sector, project management holds paramount importance in ensuring
the smooth execution of operations, adherence to deadlines, budgets, and quality
standards. These projects, often characterized by their complexity and the involvement of
numerous stakeholder project managers, engineers, architects, suppliers, and workers
require meticulous coordination and structured organization. However, traditional
management methods, which rely on static or centralized tools, quickly reach their limits
in the face of the growing challenges within this sector.
The adoption of microservices not only ensures enhanced modularity but also provides
greater scalability. Each service can be improved or replaced without impacting the rest
of the system, allowing for rapid adaptation to the evolving needs of users and projects.
Moreover, this architecture promotes efficient task distribution within development teams,
where each member can focus on a specific part of the system while working
autonomously.
The present report, which describes the project's progression in detail, is structured into
two main chapters:
• The first chapter provides a brief overview of the general framework of the project.
It concludes with the project management methodology applied to ensure the
efficient execution of our work.
2
• The second chapter outlines our initial sprint. It begins with a detailed analysis of
the application's overall functional and non-functional requirements, followed by the
general use case and the specification of various sprints. The chapter also delves
into the application's architecture detailing both its physical and logical design.
Finally, it specifies the design patterns used and the working environment, along
with the technological choices enabling the realization of our solution.
The report concludes with a general summary of the work completed and offers some
perspectives on future developments.
3
Chapter 1
Plan
4
Introduction
In the following, we will introduce the host organization that proposed the topic, its
services, and its products. Then, we will present an alternative solution. Finally, we will
conclude this chapter with a presentation of the adapted project management
methodology.
The main objective of this project is to provide a centralized and modular solution capable
of addressing these needs while ensuring greater flexibility and scalability.
• High Cost: Most solutions are paid and require costly subscriptions.
• Limited Customization: Some solutions do not allow adapting workflows to
specific business needs.
• Security & Digital Signatures: Few tools offer advanced digital signature
management for reports.
• Limited Modular Management: Few platforms use a microservices architecture,
which allows better flexibility and scalability.
5
A company operating in the construction project management sector must focus on
improving its processes to ensure deadlines, budgets, and quality standards are met. It is
essential to have modern and efficient tools to coordinate teams, track task progress, and
ensure effective communication between stakeholders. After a thorough analysis of the
limitations of current solutions, particularly monolithic tools, and in order to address the
growing needs for flexibility, scalability, and performance, the development team has
decided to migrate the application to microservice architecture.
This choice will enhance the application's performance, modularity, and maintainability,
while ensuring better collaboration among teams. By separating key functionalities such
as user management, deliverable tracking, schedule management, dashboards, and
timesheet recording, we will be able to ensure more efficient management and more
accurate project tracking. Each service will be designed to operate independently, allowing
for easier updates, version management, and continuous deployment.
6
Differentiation and Added value of our Project :
The methodology we chose for this project is the Agile SCRUM method. SCRUM is the
most widely used of all agile methodologies. It has proven to be highly effective in project
development environments characterized by rapid changes and evolving requirements.
• Product Owner:
In most projects, the Product Owner is the project client representative. They
define and prioritize the product's feature list and determine the date and content
of each sprint based on the workload values communicated by the team.
This role is typically held by a domain expert who specifies functional
requirements and establishes the priority of features to be developed.
• Scrum Master:
The Scrum Master acts as a project facilitator, ensuring that everyone works at
their full potential by removing obstacles and shielding the team from external
disturbances.
The Scrum Master ensures adherence to SCRUM principles, facilitates
communication within the team, and aims to improve productivity and the team's
skills.
• Development Team:
This is composed of professionals responsible for incrementally building the
product over a series of short time periods called sprints.
In this methodology, the project begins with Sprint 0, dedicated to all preparatory tasks
such as design and architecture, development environments, and tracking and integration
tools.
The requested features are listed and described as "User Stories" and added to the
Product Backlog.
• Sprint Planning:
This meeting marks the start of each sprint. The team gathers to determine which
user stories will be developed. These selected user stories form the Sprint
Backlog, and the sprint's objectives are set.
8
• Daily Scrum:
Throughout the sprint, daily meetings (or Daily Scrums) are held, usually in the
morning, involving the whole team. These meetings last approximately 15
minutes to synchronize the team, ensuring everyone has the same level of
information.
At the end of the meeting, the team, along with the Scrum Master, confirms the
feasibility of meeting deadlines and completing the entire Sprint Backlog.
• Sprint Demonstration:
At the end of the sprint, the current state of the application is demonstrated to the
client. The client can interact with the application and ensure the developments
meet expectations. Comments and requests for modifications can be made,
which may or may not be included in the next sprint.
• Sprint Review:
On the last day of the sprint, a Sprint Review meeting is held. The team recalls
the objectives set, reviews the functionalities developed and delivered, and
discusses the sprint outcomes.
• Sprint Retrospective:
Finally, the project team meets for a Sprint Retrospective, where they list what
went well during the sprint and identify areas for improvement. An improvement
plan is established, and the next sprint begins immediately after.
10
Introduction
This chapter represents our initial sprint, during which we will specify the requirements of
the various users. A study of both functional and non-functional requirements is necessary.
Next, we will present our product backlog and the planning of our sprints. Finally, we will
explain the proposed microservices architecture and the working environment.
1. End Users: These are the primary users who will interact with the application, such
as project managers, team members, and clients.
2. Admin Users: Individuals responsible for managing the system, such as system
administrators or technical support teams.
3. External Systems: Systems that will interact with the application, like databases,
third-party APIs, or other enterprise software.
4. Project Managers: Those responsible for overseeing the project and ensuring that
timelines, budgets, and quality standards are met.
1. User Management
4. Logistics Management
o Manage supplier orders, inventory, and procurement.
11
o Track goods receipt and set stock alerts.
5. Inspection Management
o Use visual tools (Gantt charts, Kanban boards) for task management.
o Track time, allocate resources, and manage dependencies.
1. Performance: The system should handle a large number of concurrent users and
process high volumes of data without performance degradation.
2. Scalability: The system should be able to scale up or down based on user load,
ensuring that additional resources can be allocated as needed.
Use case diagrams are used to provide an overall view of the functional behavior
of a software system. They help collect, analyze, and organize requirements, as well as
identify the major functionalities of a system. This is the first UML step in system analysis.
It represents the interaction between a user (actor) and the system (use case) without
detailing how the system will execute the described functionalities. The global use case
diagram, shown in Figure 2.1, models the overall features provided by our application. We
will detail the implemented use cases in the following chapters.
12
Figure 2.1: Overall use case diagram
The “Product Backlog” is the central point of any Scrum project. It is an ordered
list of everything that could be required in the product and is the single source of
requirements for all changes to be made to the product.
In this section, we describe the product backlog of our project, illustrated by Table
2.1 below
13
14
2.3 Architectural Specification
The main motivation for adopting microservices is to enhance scalability, flexibility, and
maintainability of the system. Each service can be independently scaled and updated,
improving development speed and reducing the risk of system-wide failures. Additionally,
microservices allow teams to work independently on different services, enabling faster
development cycles.
The software architecture is designed using the microservices pattern, where each
business function is a separate service. These services interact via RESTful APIs or
message queues for asynchronous communication. This allows for easy updates and
modifications to individual services.
16
2.3.3 Physical Architecture
The physical architecture follows a 3-tier design, focusing on scalability and resilience.
The services are deployed in containers, which are managed using orchestration tools
like Kubernetes. The system is deployed on a cloud infrastructure, ensuring high
availability, fault tolerance, and separation of concerns across the presentation, business
logic, and data layers.
The Data Access Object pattern is used to separate the data access logic from the
business logic. It provides a clear interface for interacting with the database, improving
maintainability and flexibility.
The Data Transfer Object pattern is used to transfer data between layers or systems.
DTOs are simple objects without business logic, designed to transport data efficiently.
Inversion of Control (IoC) is used to decouple the service layer from its dependencies,
making it easier to manage and test the system. IoC allows services to be injected with
their dependencies instead of creating them internally.
17
2.5 Work Environment
Throughout the development of our project, we have used specific hardware and
software, which we will present in the following sections.
18
MySQL: MySQL is an open-source relational database management system (RDBMS)
based on Structured Query Language (SQL). It is widely used for storing, managing, and
retrieving structured data in various applications, ranging from small-scale projects to
large enterprise systems.
Git: Git is a distributed version control system that allows developers to track changes in
their codebase and collaborate efficiently. It helps manage multiple versions of a project,
enabling teams to work on different branches, merge changes, and revert to previous
versions when necessary. Git is widely used in software development to maintain code
integrity and enable seamless collaboration.
GitHub: GitHub is a web-based platform for version control and collaborative software
development. It uses Git, a distributed version control system, to track changes in code
and enables multiple developers to work together on a project. GitHub allows users to
store repositories, which can contain all the project files and history, collaborate via pull
requests, manage issues, and create branches for experimentation without affecting the
main codebase. It is widely used for open-source projects and personal software
development due to its powerful tools for collaboration, project management, and
integration with other development tools.
19
useful for creating microservices-based architectures, as it simplifies the process of
deploying and managing these services independently in isolated environments.
3. Conclusion
20
General Conclusion
In conclusion, this report has outlined the development process of a construction project
management application based on microservices architecture. By addressing the
growing complexity and demands of the construction sector, our approach focuses on
providing a modular and flexible solution that enhances collaboration, improves task
management, and ensures effective tracking of project progress. The application
leverages microservices to break down key functionalities into independent, scalable
services that can be easily updated or replaced without affecting the entire system.
The methodology adopted, particularly the Agile SCRUM process, facilitated an iterative
development approach that allowed for continuous improvements and real-time
stakeholder feedback. The implementation of both functional and non-functional
requirements ensured that the system can handle the challenges posed by large-scale
construction projects, such as data management, task scheduling, and team
coordination.
21