---
# System prepended metadata

title: Présentation 04-03
tags: [présentation]

---

# Présentation 04-03
###### tags: `présentation`
[TOC]

// algorithme qui calcul le nombre de chemin de taille n grace a une matrice d'incidence
// Connexite des graphes


## Algorithme de gestion de flots(Hugo)

## Exigences non fonctionnelles:
### Exigences Interface utilisateur( Alexandre)
En terme d'interface, nous devons faire la distinction entre l'interface entre l'application et l'utilisateur et l'interface de la bibliothèque.  
En effet l'interface entre l'application et l'utilisateur sera une interface graphique permettant à une personne sans connaissance en informatique de modéliser un graphe orienter et appliquer des algorithmes sur ce graphe.  

Grâce à l'interface graphique l'utilisateur pourra naviguer dans son système de fichier pour séléctionner un fichier sauvegardé.

Par contre l'interface de programmation de la bilbiothèque vise un public de programmeurs et permettra donc a des développeurs tiers d'utiliser la bilibothèque pour créer son application.  


### Exigences de performances ( Camille )
L'application devra pouvoir gérer des graphes possédants un grand nombre de sommets (Maximum de Force Atlas 2 = 1 Million) ainsi que plusieurs graphes à la fois.

Nous exigerons également un temps de réponse équivalent à la complexité de l'algorithme.

Notre application devra être fluide quand nous effectuons des actions au sein de celle-ci. Cette fluidité ne devra pas être impactée par le nombre de sommets ou le nombre d'arcs du graphe. Les fichiers seront composés majoritairement de la matrice ce qui signifie que la taille de nos fichiers seront plus ou moins equivalent à la taille de la matrice contenue dans le fichiers, le reste sera consacré à d'autres données.


### Adéquation du produit avec son environnement (Sébastien)
La bibliothèque devra nous permettre d'appliquer des algorithmes sur des graphes.
La modification de graphes sera égalemment possible.
L'utilisateur devra avoir accès a internet afin de pouvoir telecharger la bibliothèque pour l'utiliser, ainsi que de telecharger l'application si il veut avoir accès a l'interface graphique.

### Exigences de maintenabilté et de support (Guillaume)
Etant donné que ce projet est dans le cadre universitaire, nous n'allons pas maintenir l'application, à part pour des résolutions de bug mineurs. 
Les différentes améliorations seront apportées par l'utilisateur si il veut réaliser des modifications afin de pouvoir faire ce qu'il désir.

### Exigences de sécurité
Notre application n'aura accès qu'aux fichiers désignés par l'utilisateurs et ne procède à aucune récolte de données.

### Exigences culturelles, politiques et légales (Vincent)
Les fichiers gérés par l'application n'étant pas des données sensibles et comme notre application ne récolte aucune information, les exigences légales ne sont pas pertinentes.  

La documentation de la bibliothèque et de l'application seront écrites en français car l'application vise essentielement des français.


## Tableau des couts: nombre de ligne, ressources humaines (Salsa)

| Module                         |Ressources Humaines                                 | Nombre de lignes              |
| --------                       | --------                                           | --------                      |
| Gestion de fichiers            |       OILLO Sébastien, TEDESCHI Hugo                              |      1000                     |
| Interface Graphique            |       DAFRANE Salsabil, DE FREITAS Alexandre, NARDIN Theo,           |      5000                     |
| Gestion de graphes             |       GODINEAU Camille, MALO Amandine              |      1500                     |
| Opérations sur les graphes     |       AIRIAU Vincent, PEUGNET Guillaume            |      2000                     |

## Langage de programmation + Explications(Theo et Amandine)

Pour notre projet nous allons avoir besoin d'un langage multi-paradigme. En effet, les algorithmes sont écrit de façon procédurale et pour les graphes, les sommets et les arcs nous auront besoin d'objets. Le **C++** ou le python semble être donc tout indiqué pour cela.  

**Multi-paradigme :** Ce dit d'un langage pouvant utiliser plusieurs type de paradigme. Un paradigme est une façon de classifier les langages de programmation en fonction de leur fonctionnalités.

Le C++ semble néanmoins plus indiqué que le python pour des raisons de performance en effet d'après le projet *"The Computer Language Benchmarks Game"* le C++ met 1.51 secondes à exécuter le programme *mandelbrot* contre 259.50 secondes pour le python de la même façon le programme *n-body* met 7.70 secondes à être exécuter en C++ contre 865.18 secondes en python.
De manière générale le C++ est plus rapide que les autres langages en effet si on consulte les autres benchmark présent sur le site nous pouvons observer que le C++ est parfois plus rapide que le **C** ou que le **Rust** et est nettement plus rapide que le **java** et le **Python**.

-> **mandelbrot** : Programme permettant de dessiner un ensemble de mandelbrot qui sont des fractales.

-> **n-body :** Le problème à N corps consiste à résoudre les équations du mouvement de Newton de N corps interagissant gravitationnellement, connaissant leurs masses ainsi que leurs positions et vitesses initiales. Par extension cette appellation a été conservée dans le cas où l'on s'intéresse à un ensemble de particules liées par un potentiel quelconque. 

Les performances sont importantes pour notre programme, en effet l'utilisateur peut être amené a exécuter des algorithmes sur des graphes comptant un nombre important de sommets et d'arc nous indiquant donc le C++.














