Implémentation logicielle

Dans ce chapitre, nous étudierons les méthodes de programmation, la documentation et les défis de la mise en œuvre logicielle.

Programmation structurée

Dans le processus de codage, les lignes de code continuent à se multiplier, ainsi, la taille du logiciel augmente. Peu à peu, il devient pratiquement impossible de se souvenir du déroulement du programme. Si l'on oublie comment le logiciel et ses programmes, fichiers, procédures sous-jacents sont construits, il devient alors très difficile de partager, déboguer et modifier le programme. La solution à cela est la programmation structurée. Il encourage le développeur à utiliser des sous-programmes et des boucles au lieu d'utiliser de simples sauts dans le code, apportant ainsi de la clarté dans le code et améliorant son efficacité La programmation structurée aide également le programmeur à réduire le temps de codage et à organiser le code correctement.

La programmation structurée indique comment le programme doit être codé. La programmation structurée utilise trois concepts principaux:

  • Top-down analysis- Un logiciel est toujours fait pour effectuer un travail rationnel. Ce travail rationnel est connu sous le nom de problème dans le langage logiciel. Il est donc très important que nous comprenions comment résoudre le problème. Dans le cadre d'une analyse descendante, le problème est décomposé en petits morceaux où chacun a une certaine importance. Chaque problème est résolu individuellement et les étapes sont clairement énoncées sur la façon de résoudre le problème.

  • Modular Programming- Lors de la programmation, le code est décomposé en un plus petit groupe d'instructions. Ces groupes sont appelés modules, sous-programmes ou sous-programmes. Programmation modulaire basée sur la compréhension de l'analyse descendante. Il décourage les sauts en utilisant des instructions «goto» dans le programme, ce qui rend souvent le déroulement du programme non traçable. Les sauts sont interdits et le format modulaire est encouragé dans la programmation structurée.

  • Structured Coding - En référence à une analyse descendante, le codage structuré subdivise les modules en unités de code plus petites dans l'ordre de leur exécution. La programmation structurée utilise une structure de contrôle, qui contrôle le flux du programme, tandis que le codage structuré utilise une structure de contrôle pour organiser ses instructions dans des modèles définissables.

Programmation fonctionnelle

La programmation fonctionnelle est un style de langage de programmation qui utilise les concepts de fonctions mathématiques. Une fonction en mathématiques doit toujours produire le même résultat en recevant le même argument. Dans les langages procéduraux, le flux du programme passe par des procédures, c'est-à-dire que le contrôle du programme est transféré à la procédure appelée. Pendant que le flux de contrôle passe d'une procédure à une autre, le programme change d'état.

Dans la programmation procédurale, il est possible pour une procédure de produire des résultats différents lorsqu'elle est appelée avec le même argument, car le programme lui-même peut être dans un état différent lors de son appel. C'est une propriété ainsi qu'un inconvénient de la programmation procédurale, dans laquelle la séquence ou le moment de l'exécution de la procédure devient important.

La programmation fonctionnelle fournit des moyens de calcul sous forme de fonctions mathématiques, qui produisent des résultats indépendamment de l'état du programme. Cela permet de prédire le comportement du programme.

La programmation fonctionnelle utilise les concepts suivants:

  • First class and High-order functions - Ces fonctions ont la capacité d'accepter une autre fonction comme argument ou elles renvoient d'autres fonctions comme résultats.

  • Pure functions - Ces fonctions n'incluent pas les mises à jour destructives, c'est-à-dire qu'elles n'affectent aucune E / S ou mémoire et si elles ne sont pas utilisées, elles peuvent être facilement supprimées sans gêner le reste du programme.

  • Recursion- La récursivité est une technique de programmation où une fonction s'appelle elle-même et répète le code du programme à moins qu'une condition prédéfinie ne corresponde. La récursivité est le moyen de créer des boucles dans la programmation fonctionnelle.

  • Strict evaluation- C'est une méthode d'évaluation de l'expression passée à une fonction en tant qu'argument. La programmation fonctionnelle a deux types de méthodes d'évaluation, stricte (impatiente) ou non stricte (paresseuse). Une évaluation stricte évalue toujours l'expression avant d'appeler la fonction. Une évaluation non stricte n'évalue pas l'expression à moins qu'elle ne soit nécessaire.

  • λ-calculus- La plupart des langages de programmation fonctionnels utilisent le λ-calcul comme systèmes de types. Les expressions λ sont exécutées en les évaluant au fur et à mesure qu'elles se produisent.

Common Lisp, Scala, Haskell, Erlang et F # sont quelques exemples de langages de programmation fonctionnels.

Style de programmation

Le style de programmation est un ensemble de règles de codage suivies par tous les programmeurs pour écrire le code. Lorsque plusieurs programmeurs travaillent sur le même projet logiciel, ils doivent fréquemment travailler avec le code du programme écrit par un autre développeur. Cela devient fastidieux ou parfois impossible, si tous les développeurs ne suivent pas un style de programmation standard pour coder le programme.

Un style de programmation approprié comprend l'utilisation de noms de fonctions et de variables pertinents pour la tâche prévue, l'utilisation d'une indentation bien placée, le code de commentaire pour la commodité du lecteur et la présentation générale du code. Cela rend le code du programme lisible et compréhensible par tous, ce qui facilite le débogage et la résolution des erreurs. En outre, un style de codage approprié facilite la documentation et la mise à jour.

Directives de codage

La pratique du style de codage varie selon les organisations, les systèmes d'exploitation et la langue de codage elle-même.

Les éléments de codage suivants peuvent être définis selon les directives de codage d'une organisation:

  • Naming conventions - Cette section définit comment nommer les fonctions, les variables, les constantes et les variables globales.

  • Indenting - Il s'agit de l'espace laissé au début de la ligne, généralement de 2 à 8 espaces ou une seule tabulation.

  • Whitespace - Il est généralement omis en fin de ligne.

  • Operators- Définit les règles d'écriture des opérateurs mathématiques, d'assignation et logiques. Par exemple, l'opérateur d'affectation '=' doit avoir un espace avant et après lui, comme dans «x = 2».

  • Control Structures - Les règles d'écriture if-then-else, case-switch, while-Until et pour les instructions de flux de contrôle uniquement et de manière imbriquée.

  • Line length and wrapping- Définit le nombre de caractères qui doivent être présents sur une ligne, la plupart du temps une ligne est de 80 caractères. L'emballage définit comment une ligne doit être enveloppée, si elle est trop longue.

  • Functions - Ceci définit comment les fonctions doivent être déclarées et appelées, avec et sans paramètres.

  • Variables - Ceci mentionne comment les variables de différents types de données sont déclarées et définies.

  • Comments- C'est l'un des composants de codage importants, car les commentaires inclus dans le code décrivent ce que fait réellement le code et toutes les autres descriptions associées. Cette section permet également de créer des documentations d'aide pour d'autres développeurs.

Documentation du logiciel

La documentation du logiciel est une partie importante du processus logiciel. Un document bien écrit fournit un excellent outil et un moyen de référentiel d'informations nécessaires pour connaître les processus logiciels. La documentation du logiciel fournit également des informations sur l'utilisation du produit.

Une documentation bien tenue doit comprendre les documents suivants:

  • Requirement documentation - Cette documentation fonctionne comme un outil clé pour le concepteur de logiciel, le développeur et l'équipe de test pour mener à bien leurs tâches respectives. Ce document contient toute la description fonctionnelle, non fonctionnelle et comportementale du logiciel prévu.

    La source de ce document peut être des données préalablement stockées sur le logiciel, le logiciel déjà en cours d'exécution chez le client, l'entretien avec le client, les questionnaires et la recherche. Généralement, il est stocké sous forme de feuille de calcul ou de document de traitement de texte avec l'équipe de gestion de logiciels haut de gamme.

    Cette documentation sert de base au logiciel à développer et est principalement utilisée dans les phases de vérification et de validation. La plupart des cas de test sont construits directement à partir de la documentation des exigences.

  • Software Design documentation - Ces documentations contiennent toutes les informations nécessaires, qui sont nécessaires pour construire le logiciel. Il contient:(a) Architecture logicielle de haut niveau, (b) Détails de conception du logiciel, (c) Diagrammes de flux de données, (d) Conception de base de données

    Ces documents fonctionnent comme un référentiel pour que les développeurs implémentent le logiciel. Bien que ces documents ne donnent pas de détails sur la façon de coder le programme, ils donnent toutes les informations nécessaires pour le codage et la mise en œuvre.

  • Technical documentation- Ces documentations sont maintenues par les développeurs et les codeurs actuels. Ces documents, dans leur ensemble, représentent des informations sur le code. Lors de l'écriture du code, les programmeurs mentionnent également l'objectif du code, qui l'a écrit, où sera-t-il requis, ce qu'il fait et comment il le fait, quelles autres ressources le code utilise, etc.

    La documentation technique augmente la compréhension entre les différents programmeurs travaillant sur le même code. Il améliore la capacité de réutilisation du code. Cela rend le débogage facile et traçable.

    Il existe divers outils automatisés disponibles et certains sont livrés avec le langage de programmation lui-même. Par exemple, java est un outil JavaDoc pour générer la documentation technique du code.

  • User documentation- Cette documentation est différente de toutes les explications ci-dessus. Toutes les documentations précédentes sont maintenues pour fournir des informations sur le logiciel et son processus de développement. Mais la documentation utilisateur explique comment le produit logiciel doit fonctionner et comment il doit être utilisé pour obtenir les résultats souhaités.

    Ces documentations peuvent inclure des procédures d'installation de logiciels, des guides pratiques, des guides de l'utilisateur, une méthode de désinstallation et des références spéciales pour obtenir plus d'informations comme la mise à jour de la licence, etc.

Défis de mise en œuvre logicielle

L'équipe de développement doit faire face à certains défis lors de la mise en œuvre du logiciel. Certains d'entre eux sont mentionnés ci-dessous:

  • Code-reuse- Les interfaces de programmation des langages actuels sont très sophistiquées et sont équipées d'énormes fonctions de bibliothèque. Pourtant, pour réduire le coût du produit final, la direction de l'organisation préfère réutiliser le code, qui a été créé plus tôt pour certains autres logiciels. Les programmeurs rencontrent d'énormes problèmes pour vérifier la compatibilité et décider de la quantité de code à réutiliser.

  • Version Management- Chaque fois qu'un nouveau logiciel est fourni au client, les développeurs doivent maintenir la documentation relative à la version et à la configuration. Cette documentation doit être très précise et disponible à temps.

  • Target-Host- Le logiciel, qui est en cours de développement dans l'organisation, doit être conçu pour les machines hôtes chez les clients. Mais parfois, il est impossible de concevoir un logiciel qui fonctionne sur les machines cibles.