Projet - MelvinCou/cash-manager GitHub Wiki

Terminal

Application mobile

Intéractions avec le serveur

  • Ajout d'articles dans un panier
  • Configurer l'accès au serveur (IP, utilisateur, mdp)
  • Payer par carte de crédit ou chèque

Écrans

4 écrans :

  • Paramètres, pour la connexion au serveur
  • "Cash register", écran d'ajout des articles avec leurs prix
  • Panier, avec le coût total, permet de procéder au payement.
  • Méthode de payement avec le status du paiement (en attente, validé, refusé)
    • carte de crédit (NFC)
    • chèque (QR code)

Serveur bancaire

[!Note] Le serveur est considéré comme une banque à part entière.

Intéractions avec le terminal

  • Recevoir des requêtes
  • Accepter ou refuser l'authentification
  • Récupérer les données du compte bancaire (BDD)
  • Accepter ou refuser le paiement sur la base des informations de carte de crédit/chèque + fonds
  • Notifier le mobile en retour (accepté, refusé)
  • Mettre à jour l'utilisateur en fonction du résultat de la transaction

Configuration du serveur sous forme de fichier de conf :

  • Nombre d'échecs successif toléré
  • coût maximal d'une transaction
  • nombre de transactions acceptées sur une durée
  • ...

[!Warning] Interface admin non obligatoire.

Livraison

Environnement de production

Environnement docker.

Fichier docker-compose.yml doit faire :

  • compilation
  • test
  • emballage (packaging)
  • déploiement

Ces étapes seront réalisées grâce à des Dockerfiles.

Il doit proposer 2 services :

  • Le serveur utilisant le port 8080
  • Un builder pour l'apk mobile

[!Note] Le serveur et le builder doivent se partager un volume pour se transmettre l'apk.

Le serveur doit exposer l'apk à l'adresse http://localhost:8080/client.apk.

Documents

Le projet doit être très bien documenté.

Deux documents doivent être fournis :

  • Spécification de l'architecture logicielle

Diagrammes UML qui décrivent le fonctionnement de l'appli (diagramme de séquence, modèle de données...).

Au moins faire un diagramme de classes.

  • Qualification du logiciel

Décrire toutes les possibilités étudiées (erreurs...) sous forme de tests fonctionnels (en plus de test unitaires).

Outils et technique

Recommandations

  • Modélisation de projet
  • Utiliser des patrons de conception (singleton...)
  • Maven
  • Tests unitaires
  • Documentation technique et fonctionnelle

Bonus

  • Protocol d'authentification avec des contrôles de sécurité (autorisation).
  • Interface admin.
  • Faire les tests fonctionnels sur une plateforme externe.
  • Documentation technique formelle, avec différents types de diagrammes UML.