web-dev-qa-db-fra.com

Quelles sont les caractéristiques ou les caractéristiques du code de qualité de la production?

C'est la première fois que je fournirai du code pour un projet Freelance (application Web) et, étant donné que je n'ai pas beaucoup d'expérience de code d'expédition, j'ai du mal à décider si mon programme est prêt pour le déploiement ou non.

Je crois comprendre qu'un code de niveau de production doit avoir les caractéristiques suivantes:

  • Tolérance de défaut: Capacité de survivre des exceptions non capturées
  • redondance de données: Ne perdez jamais les données utilisateur
  • évolutivité: Manipulation de la charge supplémentaire ne doit pas nécessiter de réécriture de l'application
  • Couverture de test: une quantité "décente" de code testé

Certaines de ces caractéristiques sont spécifiques au programme lui-même, tandis que d'autres sont plus liées à l'environnement (en utilisant plusieurs clusters). Cependant, même les caractéristiques dépendantes de l'environnement affectent la manière dont le programme est conçu.

Ma question est alors: Quelles sont les autres caractéristiques qui rendent le code de production si différent du code non destiné à la production?

Juste pour réduire la portée de la question, veuillez vous concentrer uniquement sur applications Web.

Edit: Je vais essayer de réduire la portée en demandant des caractéristiques spécifiques à ma situation. En tant que pigiste, j'étais responsable de tout d'acheter un VPS, de la configurer pour écrire le code, pour le déployer. Bien que le projet et sa configuration soient bien documentés, le client ne sera pas en mesure de le maintenir. L'application n'est pas complexe, mais dépend de nombreux composants externes, ce qui le rend vraiment sujet à la rupture si ces composants changent/disparaissent. L'objectif est de mettre en place un service qui serait capable de durer aussi longtemps que possible sans l'intervention du client.

8
verybadalloc

" Code-qualité de la production " est tout autre utilisateur, qui ne vous est ...

  1. capable d'utiliser ou sans un minimum de soutien. Si chaque action a rencontré un bug, votre logiciel sera dans la poubelle
  2. capable de comprendre comment utiliser avec un minimum de soutien ou de la documentation. Si votre utilisateur ne peut pas comprendre comment utiliser votre logiciel, il ira dans la poubelle.
  3. prêt à utiliser car il ajoute de la valeur. Si votre logiciel ajoute suffisamment de valeur, peut-être qu'ils vont même vous donner de l'argent pour cela. Si elle n'ajoute pas suffisamment de valeur pour vous le donner gratuitement, votre logiciel sera dans la poubelle.

QUE IS IT.

Certaines personnes ont besoin de la tolérance absolue faute. D'autres ne me dérange pas autant si certaines données sont perdues quand il y a un accident ... en supposant qu'ils voient des accidents très rarement. Il n'y a pas de qualités durcissants ou exigences. Et aucun soucis des clients au sujet de la couverture des tests, ce qu'ils se soucient est à peu près les trois points ci-dessus. la couverture de test est un outil (un des nombreux), vous pouvez utiliser pour y arriver, mais beaucoup de logiciels, certains encore bon, a été construit avec rien d'autre que des tests manuels.

Quel que soit le logiciel que vous construisez, les exigences sont entre vous et votre client et si vous construisez des logiciels pour la consommation générale, puis choisir un ou quelques groupes cibles et ne pas essayer d'être tout à tout le monde. Essayer de trouver une sorte de moule générique me semble assez stupide.

Au lieu de cela, d'essayer de prédire ou deviner quand votre logiciel sera prêt pour la production, pourquoi travaillez-vous pas avec votre client? Donnez-leur un aperçu, mais explique qu'il ne soit pas prêt pour la production. Publier sur votre propre serveur et demandez-leur de l'utiliser, fouiner et vous donner des commentaires. Continuer à travailler avec eux jusqu'à ce qu'ils soient satisfaits de ce que vous leur avez donné. En d'autres termes, ils vous diront quand il est prêt pour la production.

14
DXM