exigences de Qualitémodifier
quelle que soit l’approche de développement, le programme final doit satisfaire à certaines propriétés fondamentales. Les propriétés suivantes sont parmi les plus importantes:
- Fiabilité: comment souvent, les résultats d’un programme sont corrects. Cela dépend de l’exactitude conceptuelle des algorithmes et de la minimisation des erreurs de programmation, telles que les erreurs de gestion des ressources (par exemple, les débordements de tampon et les conditions de concurrence) et les erreurs logiques (telles que les erreurs de division par zéro ou off-by-one).,
- robustesse: dans quelle mesure un programme anticipe les problèmes dus aux erreurs (pas aux bogues). Cela inclut des situations telles que des données incorrectes, inappropriées ou corrompues, l’indisponibilité des ressources nécessaires telles que la mémoire, les services du système d’exploitation et les connexions réseau, une erreur Utilisateur et des pannes de courant inattendues.
- Ergonomie: l’ergonomie d’un programme: la facilité avec laquelle une personne peut utiliser le programme pour son usage prévu ou même dans certains cas imprévus fins. De telles questions peuvent faire ou briser son succès, même indépendamment d’autres questions., Cela implique un large éventail d’éléments textuels, graphiques et parfois matériels qui améliorent la clarté, l’intuitivité, la cohésion et l’exhaustivité de l’interface utilisateur d’un programme.
- portabilité: gamme de plates-formes de matériel informatique et de système d’exploitation sur lesquelles le code source d’un programme peut être compilé/interprété et exécuté., Cela dépend des différences dans les installations de programmation fournies par les différentes plates-formes, y compris les ressources matérielles et du système d’exploitation, le comportement attendu du matériel et du système d’exploitation, et la disponibilité de compilateurs spécifiques à la plate-forme (et parfois des bibliothèques) pour la langue du code source.
- maintenabilité: la facilité avec laquelle un programme peut être modifié par ses développeurs actuels ou futurs afin d’apporter des améliorations ou des personnalisations, corriger des bugs et des failles de sécurité, ou l’adapter à de nouveaux environnements., Les bonnes pratiques lors du développement initial font la différence à cet égard. Cette qualité peut ne pas être directement apparente pour l’utilisateur final, mais elle peut affecter de manière significative le sort d’un programme à long terme.
- efficacité / performance: mesure des ressources système consommées par un programme (Temps processeur, espace mémoire, périphériques lents tels que disques, bande passante réseau et dans une certaine mesure même interaction avec l’Utilisateur): moins il y en a, mieux c’est. Cela inclut également une gestion minutieuse des ressources, par exemple le nettoyage des fichiers temporaires et l’élimination des fuites de mémoire., Ceci est souvent discuté à l’ombre d’un langage de programmation choisi. Bien que le langage affecte certainement les performances, même les langages plus lents, tels que Python, peuvent exécuter des programmes instantanément d’un point de vue humain. La vitesse, l’utilisation des ressources et les performances sont importantes pour les programmes qui engorgent le système, mais l’utilisation efficace du temps de programmation est également importante et est liée au coût: plus de matériel peut être moins cher.,
lisibilité du code source edit
en programmation informatique, la lisibilité fait référence à la facilité avec laquelle un lecteur humain peut comprendre le but, le flux de contrôle et le fonctionnement du code source. Cela affecte les aspects de la qualité ci-dessus, y compris la portabilité, la convivialité et surtout la maintenabilité.
la lisibilité est importante car les programmeurs passent la majorité de leur temps à lire, à essayer de comprendre et de modifier le code source existant, plutôt qu’à écrire un nouveau code source. Le code illisible entraîne souvent des bogues, des inefficacités et du code dupliqué., Une étude a révélé que quelques transformations simples de lisibilité raccourcissaient le code et réduisaient considérablement le temps de le comprendre.
suivre un style de programmation cohérent aide souvent à la lisibilité. Cependant, la lisibilité est plus qu’un simple style de programmation. De nombreux facteurs, ayant peu ou rien à voir avec la capacité de l’ordinateur à compiler et exécuter efficacement le code, contribuent à la lisibilité. Certains de ces facteurs incluent:
- différents styles de retrait (espaces)
- décomposition
- conventions de nommage pour les objets (tels que les variables, les classes, les procédures, etc.,)
les aspects de présentation (tels que les retraits, les sauts de ligne, la mise en évidence des couleurs, etc.) sont souvent gérés par l’éditeur de code source, mais les aspects de contenu reflètent le talent et les compétences du programmeur.
divers langages de programmation visuels ont également été développés dans le but de résoudre les problèmes de lisibilité en adoptant des approches non traditionnelles de la structure et de l’affichage du code. Les environnements de développement intégrés (es) visent à intégrer toute cette aide. Des Techniques telles que le refactoring de Code peuvent améliorer la lisibilité.,
complexité Algorithmiquedit
le domaine académique et la pratique de l’ingénierie de la programmation informatique sont tous deux largement concernés par la découverte et la mise en œuvre des algorithmes les plus efficaces pour une classe de problème donnée. À cette fin, les algorithmes sont classés en ordres à l’aide de la notation Big O, qui exprime l’utilisation des ressources, telles que le temps d’exécution ou la consommation de mémoire, en termes de taille d’une entrée., Les programmeurs experts connaissent une variété d’algorithmes bien établis et leurs complexités respectives et utilisent ces connaissances pour choisir les algorithmes les mieux adaptés aux circonstances.
algorithmes D’échecs à titre d’exemplemodifier
« programmer un ordinateur pour jouer aux échecs » était un article de 1950 qui évaluait un algorithme « minimax » qui fait partie de l’histoire de la complexité algorithmique; un cours sur Deep Blue (ordinateur d’Échecs) D’IBM fait partie du programme d’informatique de L’Université de Stanford.,
Méthodologiesedit
la première étape dans la plupart des processus formels de développement de logiciels est l’analyse des exigences, suivie de tests pour déterminer la modélisation de la valeur, l’implémentation et l’élimination des échecs (débogage). Il existe beaucoup d’approches différentes pour chacune de ces tâches. Une approche populaire pour l’analyse des exigences est L’analyse de cas d’utilisation. De nombreux programmeurs utilisent des formes de développement logiciel Agile où les différentes étapes du développement logiciel formel sont plus intégrées dans des cycles courts qui prennent quelques semaines plutôt que des années., Il existe de nombreuses approches pour le processus de développement de Logiciel.
Les techniques de modélisation populaires incluent L’analyse et la conception orientées objet (OOAD) et L’Architecture pilotée par modèle (MDA). Le langage de modélisation unifié (UML) est une notation utilisée à la fois pour le OOAD et le MDA.
Une technique similaire utilisée pour la conception de base de données est la modélisation entité-relation (ER Modeling).
Les techniques d’implémentation comprennent les langages impératifs (orientés objet ou procéduraux), les langages fonctionnels et les langages logiques.,
Utilisation du langage de Mesuremodifier
Il est très difficile de déterminer quels sont les langages de programmation modernes les plus populaires., Les méthodes de mesure de la popularité des langages de programmation comprennent: le comptage du nombre d’offres d’emploi mentionnant la langue, le nombre de livres vendus et de cours d’enseignement de la langue (cela surestime l’importance des langues plus récentes) et les estimations du nombre de lignes de code existantes écrites dans la langue (cela sous-estime le nombre
Certaines langues sont très populaires pour certains types d’applications, alors que certaines langues sont régulièrement utilisés pour écrire de nombreux types d’applications., Par exemple, COBOL est encore fort dans les centres de données d’entreprise souvent sur de grands ordinateurs centraux, Fortran dans les applications d’ingénierie, les langages de script dans le développement Web et C dans les logiciels embarqués. De nombreuses applications utilisent un mélange de plusieurs langues dans leur construction et leur utilisation. Les nouveaux langages sont généralement conçus autour de la syntaxe d’un langage antérieur avec de nouvelles fonctionnalités ajoutées (par exemple, C++ ajoute l’orientation objet au C, et Java ajoute la gestion de la mémoire et le bytecode au C++, mais en conséquence, perd l’efficacité et la capacité de manipulation de bas niveau).,
DebuggingEdit
le premier bogue réel connu causant un problème dans un ordinateur était un papillon de nuit, piégé dans un ordinateur central de Harvard, enregistré dans un journal de bord daté du 9 septembre 1947. « Bogue » était déjà un terme courant pour un défaut logiciel lorsque ce bogue a été trouvé.
le débogage est une tâche très importante dans le processus de développement logiciel car avoir des défauts dans un programme peut avoir des conséquences importantes pour ses utilisateurs., Certaines langues sont plus sujettes à certains types de défauts car leur spécification ne nécessite pas que les compilateurs effectuent autant de vérifications que d’autres langues. L’utilisation d’un outil d’analyse de code statique peut aider à détecter certains problèmes possibles. Normalement, la première étape du débogage consiste à tenter de reproduire le problème. Cela peut être une tâche non triviale, par exemple avec des processus parallèles ou des bogues logiciels inhabituels. En outre, l’environnement utilisateur spécifique et l’historique d’utilisation peuvent rendre difficile la reproduction du problème.,
Après la reproduction du bogue, l’entrée du programme peut avoir besoin d’être simplifiée pour faciliter le débogage. Par exemple, lorsqu’un bug dans un compilateur peut faire planter lors de l’analyse d’un grand fichier source, une simplification des cas de test résultats en seulement quelques lignes du fichier source d’origine peut être suffisant pour reproduire le même incident. Essai et erreur / diviser pour régner est nécessaire: le programmeur va essayer de supprimer certaines parties du cas de test d’origine et vérifier si le problème existe toujours., Lors du débogage du problème dans une interface graphique, le programmeur peut essayer d’ignorer certaines interactions utilisateur de la description du problème d’origine et vérifier si les actions restantes sont suffisantes pour que des bogues apparaissent. Le script et le point d’arrêt font également partie de ce processus.
Le Débogage se fait souvent avec deses comme Eclipse, Visual Studio, Xcode, Kdevelop, NetBeans et Code::Blocks. Des débogueurs autonomes comme GDB sont également utilisés, et ceux-ci fournissent souvent moins d’un environnement visuel, généralement en utilisant une ligne de commande. Certains éditeurs de texte tels que Emacs permettent D’invoquer GDB à travers eux, pour fournir un environnement visuel.,