Aller au contenu

Lemme.

Bâti sur la logique.

Démonstration.Des logiciels conçus, développés et testés par Abdeljalil Sennaoui. Chacun des quatre projets ci-dessous énonce un problème, propose une construction et montre les preuves qu'elle tient.Fin de la démonstration

Explorer les projetsVoir GitHub

Note: En mathématiques, un lemme est un résultat démontré qui sert d’étape vers un théorème plus vaste.

Les projets et les disciplines qu’ils ont mobilisées
Automatisation des testsBack-end et APIArchitecture logicielleCI/CDDonnéesInterfacesAndroid
L1Insurance QAouiouiouiouiouinonnon
L2CampusGuideouinonnonouinonouioui
L3SUMMSouiouiouiouiouiouinon
L4Study Assistantouiouiouiouiouinonnon
Les projets et les disciplines qu’ils ont mobilisées. Un carré plein signifie que le projet a fait le travail; la même relation se lit aussi comme un graphe.

1 Projets choisis

Quatre projets, chacun accompagné d'une étude de cas. Pour les projets d'équipe, on distingue ce que l'équipe a réalisé et ce que j'ai réalisé.

Lemme 1 (Insurance Billing QA Framework).

Automatisation de tests de bout en bout pour une plateforme simulée de facturation d'assurance : une application Spring Boot et les sept niveaux de tests qui la tiennent à ses règles.

Contexte
Projet individuel, septembre 2026
Technologies
Java 25, Spring Boot 3.5, Selenium 4, REST Assured, Cucumber 7, TestNG, Cypress 15, JMeter, GitHub Actions

Lire l'étude de cas: Insurance Billing QA FrameworkDépôt sur GitHub: Insurance Billing QA Framework (ouvre un nouvel onglet)

La console de facturation de l'application : un tableau de neuf factures indiquant le client, la police, le total, le solde dû et un statut (impayée, annulée, en retard, partiellement payée ou payée).
Figure 1. L'application testée. Cette capture est produite par la suite de tests d'interface elle-même, à l'aide des mêmes objets de page que les tests.

Lemme 2 (CampusGuide).

Une application Android pour s'orienter sur les deux campus de Concordia : itinéraires extérieurs et intérieurs, navette, et trajet vers le prochain cours.

Contexte
Équipe de 11, projet de cours universitaire, janvier – avril 2026
Technologies
Kotlin, Jetpack Compose, Google Maps SDK, Routes API, Robolectric, Espresso, GitHub Actions, SonarQube Cloud

Lire l'étude de cas: CampusGuideDépôt sur GitHub: CampusGuide (ouvre un nouvel onglet)

  1. Écrans

    • Map
    • Indoor map
    • Calendar
    • Points of interest
    • Accessibility
  2. État

    • ViewModels
  3. Domaine et données

    • Directions repositories
    • Indoor pathfinding
    • ShuttleTracker
    • GeoJSON parser
    • CalendarRepository
  4. Services externes

    • Google Maps SDK
    • Google Routes API
    • Concordia Open Data API
Figure 2. Les couches de l'application, d'après l'arborescence du code. Il s'agit d'un schéma, et non d'une capture d'écran.

Lemme 3 (SUMMS — Smart Urban Mobility Management System).

Une plateforme Web qui réunit vélopartage, autopartage, trottinettes, stationnement et information sur le transport en commun dans un seul parcours de réservation, où chaque requête suit la même chaîne MVC rigoureuse.

Contexte
Équipe de 6, projet de cours universitaire, février – avril 2026
Technologies
React, Node.js, Express, Firestore, Firebase Auth, Jest, Supertest, GitHub Actions

Lire l'étude de cas: SUMMS — Smart Urban Mobility Management SystemDépôt sur GitHub: SUMMS — Smart Urban Mobility Management System (ouvre un nouvel onglet)

  1. Vue

    • React
  2. Contrôleur

    • MobilityController
    • MobilityRequestHandler
    • Commands
  3. Modèle

    • MobilityService
    • BookingStateMachine
    • Pricing
    • EventBus
  4. Données et passerelles

    • MobilityDataGateway
    • Gateways
Figure 3. Le parcours d'une requête dans le serveur, d'après les documents d'architecture du dépôt.

Lemme 4 (Local AI Study Assistant).

Un outil d'étude qui transforme des PDF de cours en résumés, fiches, quiz et réponses appuyées sur leurs sources, grâce à un modèle de langage qui s'exécute entièrement sur l'ordinateur de l'étudiant.

Contexte
Projet individuel, août 2026
Technologies
Python, Streamlit, Ollama, scikit-learn, pypdf, pytest, GitHub Actions

Lire l'étude de cas: Local AI Study AssistantDépôt sur GitHub: Local AI Study Assistant (ouvre un nouvel onglet)

L'assistant d'étude dans un navigateur. Un panneau latéral indique « Connected to Ollama », le modèle choisi et les réglages de recherche. Le panneau principal montre un PDF de cours chargé, un avis signalant qu'environ 13 277 caractères de texte ont été extraits, quatre modes d'étude dont « Summary » est sélectionné, et le début d'un résumé généré.
Figure 4. Un PDF de cours chargé et résumé sur l'appareil. L'interface indique la quantité de texte extraite et prévient lorsqu'un long document est tronqué.

2 À propos

Définition (LEMMA by AJS). Un studio indépendant de génie logiciel, composé d'une seule personne : le nom sous lequel Abdeljalil Sennaoui publie les logiciels qu'il conçoit, développe et teste.

Je m'appelle Abdeljalil Sennaoui et j'étudie en génie logiciel à l'Université Concordia, à Montréal. J'aime les parties du logiciel qui ont de bonnes réponses : des règles qui doivent tenir, des tests qui le prouvent, et des systèmes qui continuent de fonctionner quand quelque chose flanche autour d'eux.

Je m'intéresse au développement back-end et full-stack, aux tests logiciels et à l'automatisation de l'assurance qualité, ainsi qu'à l'architecture logicielle. Presque tout ce que je construis finit entouré d'un pipeline, parce que je fais davantage confiance à un résultat une fois qu'une machine l'a vérifié.

Le nom vient des mathématiques discrètes. Un lemme est un résultat que l'on démontre en route vers quelque chose de plus grand, et c'est ainsi que je conçois chaque projet.

Remarque. LEMMA est une identité personnelle, pas une entreprise. Il n'y a ni employés ni clients, et chaque projet présenté ici en est un auquel j'ai moi-même travaillé. Lorsqu'un projet a été réalisé en équipe, son étude de cas le précise et distingue ma part du reste.

Abdeljalil Sennaoui
NomAbdeljalil Sennaoui
ÉtudesGénie logiciel, Université Concordia
Établi àMontréal (Québec), Canada
Liens

3 Ingénierie

Ma façon de travailler, et les outils que j'ai employés. Chaque compétence renvoie à un endroit où on peut la voir à l'œuvre.

Principes

  • Exactitude. Définir ce que « juste » veut dire avant d'écrire le code, puis rendre les états fautifs difficiles à atteindre. Une règle placée là où vivent les données ne peut pas être contournée.
  • Testabilité. Quand quelque chose est difficile à tester, c'est la conception qui me parle. Je préfère injecter une dépendance plutôt que de la contourner.
  • Architecture claire. Chaque partie doit avoir un seul rôle et une frontière que l'on peut montrer du doigt. Un patron mérite sa place lorsqu'il élimine un vrai problème.
  • Maintenabilité. Le code est lu bien plus souvent qu'il n'est écrit. Je consigne les raisons d'une décision, y compris ce qu'elle a coûté.
  • Mesure honnête. Un chiffre est soit mesuré, soit signalé comme non mesuré. Une exécution au vert ne veut dire quelque chose que si elle a testé ce qui a réellement été construit.
  • Amélioration continue. La première version d'une solution est souvent fausse de façon instructive. Je conserve les versions erronées au dossier, avec la raison de leur échec.

Compétences

DomaineCompétences et preuves
Langages
Cadriciels
Tests et assurance qualité
Back-end et API
Bases de données
DevOps et CI/CD
Outils et pratiques

Tableau 1. Les compétences, et l'endroit où chacune peut être vue à l'œuvre. L1 à L4 renvoient aux lemmes ci-dessus.

4 Contact

Je m'intéresse aux stages en génie logiciel, aux placements coopératifs et aux postes de niveau débutant, et je discute volontiers de n'importe quel projet présenté sur ce site. Le courriel reste le meilleur moyen de me joindre.