S'inscrire Se connecter

Projet PreIng 2 S1

C-WildWater

Présentation du projet : C-WildWater

Présentation générale
C-WildWater est un projet d'ingénierie logicielle réalisé à CY TECH. Il consiste en la création d'un système complet de synthèse et d'analyse de données pour un réseau de distribution d'eau à l'échelle nationale. L'application traite un jeu de données massif (plus de 8 millions de lignes et 500 Mo) pour extraire des indicateurs de performance et de rendement.

Objectifs du projet
• Développer un script Shell performant comme point d'entrée de l'application
• Implémenter un moteur de traitement en langage C pour optimiser les calculs complexes
• Manipuler des structures de données avancées pour la gestion de graphes et d'arbres
• Générer des visualisations graphiques (histogrammes) automatisées via GnuPlot

Technologies utilisées
• Langages : Shell (Bash) et C
• Structures de données : Arbres équilibrés (AVL) et listes chaînées
• Outils de build : Makefile (compilation modulaire)
• Analyse de données : Fichiers CSV volumineux
• Visualisation : GnuPlot pour la génération d'images PNG

Contributions personnelles
• Conception et implémentation de la structure AVL pour garantir une recherche en complexité logarithmique
• Développement de la logique de calcul des fuites cumulées sur l'ensemble du réseau ava
• Gestion robuste de la mémoire vive avec libération explicite des allocations dynamiques
• Création ldu script de séquençage et de vérification des arguments utilisateurs

Aspects techniques
• Analyse de la topologie du réseau : de la source de captation jusqu'aux usagers finaux
• Traitement de données hétérogènes : capacités d'usines, volumes captés et pourcentages de fuites
• Utilisation de tris alphabétiques inverses et filtrage de données par le script Shell
• Interface en ligne de commande (CLI) avec gestion d'erreurs et codes de retour strictement positifs
- Mesure précise du temps d'exécution total du traitement - Respect des contraintes d'empreinte mémoire minimale

Difficultés rencontrées
• Optimisation de la recherche de nœuds parents dans un arbre à n-enfants sans dégradation de performance
• Synchronisation des échanges de données entre les sorties du programme C et le script Shell
• Gestion du volume massif de données interdisant tout traitement manuel ou via tableur classique

Lien GitHub

github
Lien github du projet, code source. Voir branche master pour la totalité du projet (C + Shell)