Niveau 1
- Aucun paramètre important ne doit être hardcodé, ils doivent se retrouver dans un fichier de config ou dans la base de registre (emplacement des fichiers, login, psw, connection string, url..)
- Logging d’erreurs doit être présent, en cas de crash, on doit avoir des try catch aux bons endroits
- Ça doit être en service, ou webservice on doit pouvoir redémarrer le serveur sans que ça n’interrompe définitivement le bon fonctionnement de l’application
Niveau 2
- Multi users :
- Securité via ldap et sso
- ou locale
- Logging centralisé
- l’application doit être hautement disponible
- Load balance
- Windows cluster
Niveau 3
- Test unitaire
- Test de charge
- Multithread
- Get configuration via un webservice
- Si l’application se connecte à internet, permettre de se connecter à internet via un proxy
Niveau 4
- Logging :
- Différents niveaux : permettre de mettre un mode debug avec plus de détails ou simple
- Dfférentes destinations
- Event viewer
- Fichiers plats
- syslog
- Graylog
Accès à une DB
- Réinclure les méthodes pour permettre une mise à jour facile (penser à Mysql qui a changé en Mysqli)
- multi DB (MsSql, Mysql, Oracle..)
- Syncho DB locale : permettre à l’application d’avoir une copie local d’une partie de la DB pour mode offline
- Toutes les requêtes SQL doivent être optimisée (moins d’une seconde), vérifier nhibernate
- l’archivage des données moins utiles
Niveau 5
- Audit de code pour performance
- Audit de code pour sécurité
- Https avec certificate pinin
- Multi langue : Traduction facile / changer de langue / ajouter une langue
Comment gérer les licenses
Code unique à taper et validation locale
Code unique à taper et activation en ligne et blocage si > X et lier au matériel
Code unique à taper et activation en ligne et blocage si date > X et lier au matériel
Par user avec un portail
Utilisateurs concurrents (dès que l’application se lance, elle va se connecter à un serveur de licence et bloquer une licence pendant X heures
- Multi interface / design
- Webservice attaqués via
- Page web (ergonomique, réactives)
- Interface lourde
- Appx ou apk (s’adapte et testé par device client)
Contraintes d’intégrités et workflow
Déploiement:
- Pouvoir déployer facilement et recréer des environnements à la demande (Cloud, Infrastructure as code,
Swagger et health