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.