Réponses:
Tout d'abord, toutes les exigences ne sont pas des exigences strictes, mais plutôt le matériel minimum pris en charge. Si quelqu'un a moins que le minimum, il peut fonctionner - mais pas de manière optimale, ou il peut ne pas fonctionner du tout. Dans les deux cas, ce n'est pas un système pris en charge et les problèmes que vous rencontrez sont les vôtres.
Le moyen le plus simple d'obtenir les exigences matérielles est de deviner. Le développeur regarde leur machine et dit "Oui, ça fonctionne sur la mienne, c'est ça les exigences".
Dans un environnement plus rigoureux, la société de développement dispose d'une suite de systèmes de test. Il peut ne pas être en interne (les développeurs de pommes non internes utilisent parfois le laboratoire de compatibilité Apple ). Dans le cadre du processus de test, un teste sur tout le matériel disponible et détermine les exigences minimales pour son exécution.
Un autre facteur de configuration matérielle est la configuration de base du système d'exploitation. En théorie, Windows 7 nécessite un minimum de 1 Go de RAM pour fonctionner. Il est donc absurde de tester avec un système de 512 Mo exécutant Windows 7.
Testez le système en cours d'exécution avec 1 Go de RAM. Est-ce que ça marche? Non ... améliorez le bélier. Répétez le test et les mises à niveau jusqu'à ce que l'application fonctionne de manière compatible et répertoriez-les comme exigences minimales.
Lorsque les performances deviennent partie intégrante de la promesse du logiciel, le «supportable» inclut qu'en plus de son exécution effective, l'opération répond aux attentes de performances minimales.
o
prenne <temps t
pour se terminer, alors la combinaison matérielle qui satisfait à cet objectif devient la spécification min.
Les exigences matérielles se répartissent en plusieurs compartiments différents. Souvent, vous incluez les exigences de quelques-uns de ces compartiments lors de la détermination des exigences matérielles spécifiques pour tout système logiciel que vous construisez.
Contraintes techniques dans l'architecture
Ce sont les types d'exigences qui doivent absolument être satisfaites par le système construit et qui sont spécifiquement conçues dans le système dès le départ. Par exemple, «un processeur x86 est requis».
Un exemple simple qui me vient à l'esprit est Microsoft Office pour Mac. À l'origine, les Mac utilisaient des processeurs Power PC tandis que Microsoft Windows était strictement destiné aux machines "compatibles IBM" (utilisant principalement des processeurs x86). Parce que Windows et donc Office ne fonctionnaient que sur x86, un tout nouvel ensemble de code (avec différentes contraintes techniques) a été écrit pour prendre en charge Office sur Power PC pour Mac OS. Une fois que Mac est passé aux processeurs Intel x86, l'ancien Office Power PC optimisé pour Mac ne fonctionnait plus - et les contraintes techniques ont de nouveau changé pour une nouvelle version d'Office pour Mac sur Intel. Les applications optimisées pour 32 contre 64 bits sont un autre exemple simple.
Configuration matérielle implicite
Parfois, vous ne choisissez pas activement de vous contraindre, mais d'autres décisions que vous prenez vous obligent implicitement. Un scénario courant repose sur tout type de cadre.
Par exemple, si vous créez une application .Net 4.0, .Net 4.0 a des exigences matérielles vérifiées par les laboratoires de matériel de Microsoft. Maintenant, votre application requiert au moins les mêmes exigences matérielles que le framework .Net 4.0.
Configuration matérielle contextuelle
La plupart du temps, lorsque vous parlez d'exigences matérielles, vous parlez de la façon dont vous prenez en charge des scénarios d'attributs de qualité spécifiques. Des choses comme les performances, la fiabilité, la disponibilité et d'autres fonctionnalités.
C'est quelque chose que je traite souvent en faisant des recommandations matérielles pour les clients qui créent des applications sur IBM InfoSphere Data Explorer (essentiellement une plate-forme de moteur de recherche Big Data). Les exigences de base de Data Explorer sont minimales (vous pouvez l'exécuter sur un ordinateur portable), mais les recommandations matérielles pour toute application Big Data spécifique (lire: exigences) se résument à des scénarios d'attributs de qualité spécifiques pour cette application. À quelle vitesse les données doivent-elles être indexées? Combien de requêtes par seconde doivent être traitées? Combien de temps d'arrêt est acceptable?
L'identification de scénarios d'attributs de qualité spécifiques trace une ligne dans le sable et me permet de faire une recommandation pour les exigences matérielles minimales en fonction de ces scénarios - X nombre de processeurs avec Y quantité de RAM, Z gigaoctets de disques durs, N systèmes redondants. Dans notre cas, nous avons des formules de base (déterminées par des tests approfondis dans nos laboratoires de matériel) qui utilisent des hypothèses des scénarios d'attributs de qualité pour aider à déterminer un point de départ pour une recommandation de matériel. Cette recommandation devient la condition requise pour cette application Big Data spécifique.
Dans cet exemple, pour tout système de production, un ordinateur portable ne fera vraiment pas l'affaire même s'il répond techniquement aux exigences "minimales". Le contexte de cette implémentation - les scénarios et données spécifiques, qu'ils s'exécutent en production ou non, etc., dictent les exigences matérielles.
Si les hypothèses des scénarios changent, les exigences matérielles le seront également. Ainsi, la phrase «Y Go de RAM est nécessaire pour exécuter correctement le logiciel» signifie vraiment «Y Go de RAM est nécessaire pour analyser X millions de documents en Z heures ou un taux de documents ABC / min».
Configuration matérielle minimale prise en charge
C'est-à-dire que les spécifications matérielles devraient fonctionner correctement et que votre groupe d'assistance est prêt à vous aider à résoudre les problèmes. Il s'agit généralement de l'ensemble du matériel auquel vous avez directement accès, soit votre machine de développement, soit par le biais d'un laboratoire de test quelconque.
Un exemple de cela est à peu près n'importe quelle application Android qui a été publiée. En tant que développeur Android, vous testez votre application via des simulateurs de logiciels, probablement sur au moins quelques appareils physiques. Mais il existe des milliers d'appareils différents fonctionnant sous Android, dont beaucoup avec peu ... de bizarreries ... qui pourraient causer des problèmes à votre application. Dans la plupart des cas, vous offrirez toujours une assistance si un utilisateur rencontre des problèmes. Et dans la plupart des cas, les utilisateurs ne rencontreront pas de problèmes même si vous n'avez pas spécifiquement testé cette variation matérielle. Microsoft a également ce problème avec Windows - combien de combinaisons de cartes vidéo, de cartes mères, de processeurs, de mémoire différentes?
Fondamentalement, identifier le matériel minimum pris en charge revient à dire "ce logiciel fonctionne sur ma machine, je m'attends à ce qu'il fonctionne sur des machines similaires à la mienne, beaucoup de gens ont utilisé ce logiciel sur de nombreuses machines différentes sans problème, votre kilométrage peut varier, et si vous avez un problème, je ferai de mon mieux pour aider / corriger mais je ne peux donner aucune garantie. "
Pour certaines applications, les exigences peuvent en fait être des exigences strictes, par exemple lorsque le développeur a analysé ou profilé son application et sait exactement combien de mégaflops, MIPS, polygones par seconde, tailles de jeu de tableaux, etc. sont nécessaires pour répondre à certains critères de performance spécifiés .
Pour les petits développeurs, le coût peut être le problème. Ils n'ont qu'un seul système disponible, et ils déclarent donc les spécifications de ce système comme minimum, car ils n'ont pas pu tester l'application sur quoi que ce soit d'autre (plus lent, plus petit, etc.) et ont peu d'indices sur la façon dont l'application ferait avec moins de ressources.