Utilisateur:Silex6/Recyclage informatique

Cette page contient toutes les informations qui ont été cachées de la page Informatique et dont les informations n'ont pas été reprises dans le nouveau texte.

La création des logiciels modifier

Le génie logiciel est l'activité qui consiste en la création de logiciels.

L'étape centrale de la création d'un logiciel consiste en la rédaction des algorithmes de ce logiciel dans un langage de programmation donné. Les textes rédigés sont appelés code source. Diverses étapes préliminaires permettent de déterminer les algorithmes qui doivent être rédigés. Diverses étapes subséquentes permettent de contrôler la qualité de la rédaction et du choix des algorithmes.

Un langage de programmation est un code de communication, comparable à une langue, qui permet d'exprimer des algorithmes en utilisant des mots du dictionnaire (ces mots sont généralement en anglais) et des symboles. Un logiciel appelé compilateur effectue la transformation du code source en instructions, le résultat est appelé code binaire. Pour pouvoir être transformé en instructions, un code source doit être absolument conforme au langage de programmation (0 faute de grammaire et « d'orthographe »).

La création d'un logiciel demande très peu de moyens techniques et beaucoup de temps et de soin. Le temps de travail est la principale source du coût de construction d'un logiciel. Il s'agit d'un coût unique, qui ne dépend pas du nombre d'unités vendues du logiciel.

Les trois étapes clés de la création d'un logiciel sont l'analyse, la programmation et la validation. Selon les statistiques environ 40 % du temps de construction est utilisé pour l'étape préliminaire de spécification, 30 % est utilisé pour la programmation, et 30 % est utilisé pour la validation.[1]

Étape d'analyse modifier

 
diagramme d'architecture
  • l'étape d´analyse consiste en une enquête pour déterminer avec précision les opérations qui devront être exécutées automatiquement par le logiciel.

Lors de la création d'un logiciel applicatif, cette enquête consiste pour un analyste à récolter le maximum d'informations concernant l'activité dans laquelle le logiciel va intervenir. L'analyste enquête directement auprès des personnes impliquées dans cette activité. L'analyste choisit alors les parties de l'activité qui vont être automatisées, et décrit avec précision les automatismes, et l'interface homme-machine, dans une suite de documents appelés une spécification ou cahier des charges.

Un architecte des systèmes d'information analyse alors les manières de subdiviser le logiciel en modules, et les effets que la subdivision apporte en termes de vitesse et de facilité de transformer le logiciel. L'architecte effectue également une enquête pour déterminer les caractéristiques techniques du système informatique dans lequel le logiciel devra être implanté et les communications qui seront effectuées entre le logiciel et ce système informatique. L'architecte rédige alors une cartographie du logiciel sous la forme de divers diagrammes d'architecture. Des diagrammes qui seront ajoutés à la spécification.

La programmation modifier

Codage: Le programmeur décrit point par point les algorithmes à automatiser, dans un ensemble de fichiers appelés code source, en suivant les règles de syntaxe du langage de programmation. Le non-respect d'une règle de syntaxe entraine l'échec de la transformation du code source en code binaire. Le programmeur utilise régulièrement le compilateur pour transformer le code source en code binaire, et confirmer l'absence d'erreurs de syntaxe.

 
atelier de génie logiciel

Tests: Le programmeur fait ensuite fonctionner un par un tous les automatismes, dans diverses conditions, pour vérifier que le code source rédigé est conforme à l'algorithme - c'est-à-dire qu'il donne le résultat prévu. Un bug est une non-conformité. celle-ci peut entrainer l'arrêt prématuré (crash) du logiciel en question voire de l'ensemble des logiciels présent sur la machine. Si le logiciel pilote une machine, cela peut entraîner la destruction de la machine, comme ça a été le cas lors du Vol 501 d'Ariane 5.

Plus le temps consacré aux tests est long, et plus le programmeur aura la possibilité de faire fonctionner les automatismes dans de nombreuses conditions, et plus le nombre de bugs décelés pourra être grand.

Un atelier de génie logiciel est un ensemble de logiciels destinés à la création de logiciels. Il comporte des logiciels de rédaction du code source, un compilateur, et divers logiciels permettant d'examiner le logiciel en cours de construction. Il peut aussi comporter des logiciels pour la rédaction de diagrammes, ainsi que des logiciels pour collecter les bugs et organiser le planning des travaux.

Le pilotage modifier

Dans une équipe de génie logiciel, le chef de projet est la personne qui s'occupe de diriger les travaux. Il répartit les travaux entre les membres de l'équipe, établit les priorités, et contrôle régulièrement l'avancée des travaux par rapport au planning qu'il a préalablement fixé. Une bonne avancée des travaux permet de garantir que la création du logiciel sera terminée à temps, avec un nombre minimum de bugs.

Étape de validation modifier

  • Lors de l'étape de validation le logiciel est mis à l'examen auprès du destinataire final, ou d'un représentant. Le logiciel est alors utilisé dans les moindre détails.

Cette étape permet de confirmer que les automatismes du logiciel sont en adéquation avec l'activité concernée. Un planning d'examen - basé sur la spécification - permet de garantir que la totalité des automatismes ont été contrôlés, et ce dans toutes les conditions possibles d'utilisation.

Lorsqu'il s'agit d'examiner un logiciel qui a déjà été examiné auparavant, et qui vient de subir des transformations, des tests de non-régression permettent de s'assurer que les automatismes qui avaient été examinés auparavant n'ont pas été endommagés par les transformations.

Cette étape peut être suivie d'une étape de garantie. Durant cette étape, le créateur se tient à la disposition du destinataire final pour effectuer toute correction nécessaire sur le logiciel.

Méthodes de génie logiciel modifier

La création d'un logiciel est une tâche ardue : environ 31 % des projets informatiques sont abandonnés avant d'être terminés, plus de 50 % des projets coûtent le double du coût initialement estimé et seulement 15 % des projets finissent dans les temps et selon le budget défini. Les besoins de seule maintenance de l'existant peuvent prendre jusqu'à 50 % des effectifs d'une équipe chargée d'un logiciel (or, c'est là une fonction pénible, ingrate, peu valorisante et qui rebute et démotive souvent les bons programmeurs).[réf. nécessaire]

 
cycle de construction

Les sociétés de génie logiciel font souvent usage de méthodes de travail industrielles telles que Merise, agile, Extreme Programming ou les méthodes incluses dans le modèle CMMI. Ces méthodes disciplinaires ont été créées dans le but d'améliorer la qualité des logiciels et le respect des délais (et donc des coûts de fabrication).

Le logiciel est typiquement créé par étapes successives, selon un cycle ou les étapes de spécification, de programmation et de validation sont répétées plusieurs fois.

Le temps consacré à la construction de chaque algorithme dépend autant de la complexité de l'algorithme que du nombre d'étapes qu'il contient, et souvent 80 % du temps est consacré à 20% des algorithmes, alors que le 20 % du temps restant est consacré pour le 80 % du travail restant.

Informatique théorique modifier

On peut trouver des racines à la science informatique dans de nombreux domaines anciens des mathématiques (systèmes de numération, division euclidienne, construction à la règle et au compas, etc). Cependant, la discipline n'a émergé qu'à partir des années 1930 à travers une série de travaux fondateurs[2][3][4] (Church, Gödel, Herbrand, Kleene, Alan Turing) qui ont abouti à la première formalisation générale de ce qu'est le calcul. La force de cette formalisation est de faire converger plusieurs points de vue vers une même et unique notion :

Ces trois points de vue donnent un sens très général à la notion de calcul et la thèse aujourd'hui largement acceptée est qu'elle capture tout traitement réalisable mécaniquement.

Terminologie anglo-saxonne modifier

La traduction anglaise de informatique est computer science, littéralement « science du calculateur ». En français, l'expression science du calcul (computing science) fait plutôt penser à informatique scientifique.

En anglais les termes distincts suivants sont utilisés :

  • Informatics (science de l'information) : Ce qui ressort de l'étude des systèmes, biologiques ou artificiels, qui enregistrent, traitent et communiquent l'information. Ceci comprend l'étude des systèmes neuraux, aussi bien que les systèmes informatiques.
  • Computer science (l'Informatique théorique) : Ce qui ressort de l'épistémologie procédurale, soit notamment de l'étude des algorithmes, et donc indirectement des logiciels et des ordinateurs.
  • Computer engineering (Génie informatique) : ce qui ressort de la fabrication et de l'utilisation du matériel informatique.
  • Software engineering (Génie logiciel) : Ce qui ressort de la modélisation et du développement des logiciels ; ceci comprend deux aspects : les données et les traitements ; les deux aspects sont liés dans la mise en pratique des traitements de données (Data Processing). En France, en pratique, l'expression ingénierie informatique correspond plutôt à software engineering, soit l'ingénierie logiciel.
  • Information technology engineering (Génie des technologies de l'information) : ce qui ressort de l'intégration des techniques et des technologies relatif à l'information et reliées à l'informatique ainsi qu'à l'internet (par exemple : le e-business)
  • Information Technology (Technologies de l'information) : Représente l'évolution des techniques et des technologies reliées à l'informatique.

Il existe plusieurs termes anglais pour désigner le concept d'« informatique ». Certains comme automatic data processing ou electronic data processing et leur abréviation reflètent une vision plus ancienne et ne sont plus guère utilisés. Même data processing est parfois considéré par certains informaticiens professionnels comme propre à la langue des administrateurs et des non-informaticiens (dans le jargon du métier, costards ou, en anglais, suits). Quant à informatics, il est davantage employé en Europe, selon certaines sources.[5]

On trouve d'autres variantes peu attestées; c'est le cas de computing science, electronical data processing, ordinatique, technologie des ordinateurs ou science de l'informatique.

Il faut dire que les concepts et la terminologie ont suivi l'évolution de la réalité. Ainsi, les ordinateurs, qui effectuaient autrefois des opérations relativement simples de calcul sur des données, traitent de façon de plus en plus complexe, aujourd'hui, de l'information autrement plus significative (connaissances et savoir-faire). De la désignation informatique, on est passé peu à peu à celle de technologies de l'information. On voit poindre, dans certains milieux, des appellations comme technologies ou nouvelles technologies de l'information et de la communication qui cèderont peut-être leur place à une autre dénomination qui reflètera le traitement des connaissances, des savoir-faire et même de « l'intelligence ». Progressivement le terme informatique glisse vers un sens plus restreint relié aux aspects techniques.

Approche fonctionnelle modifier

Comme énoncé ci-dessus, l'informatique est le traitement automatisé de données par un appareil électronique : l'ordinateur ; les germanophones parlent de elektronische Datenverarbeitung / EDV (« traitement électronique de données »), les anglophones d'information technology / IT (« technologies de l'information »), c'est-à-dire :

  • données ou informations : in fine, l'ordinateur manipule des suites ou des paquets de 0 et de 1 qui servent à représenter toutes sortes d'informations :
    • des... nombres bien évidemment, dans le cas de calculs scientifiques (flottants) ou comptables (décimal, ou binaire entier)... ;

ou de la parole ;

traitement automatique des langues (TAL) ;

      • sons : analyse spectrale, reconnaissance vocale.
    • modifiées :
      • nombres : calculs ;
      • sons : application d'effets (réverbération, distorsion, ajustement de la hauteur) ;
        comme il existe, selon les programmes et les besoins, une grande variété de codages possibles pour représenter chaque type d'information, beaucoup de traitements consistent à convertir les données d'un format vers un autre...
    • archivées puis restituées :
      • les moyens et techniques d'archivage varient en fonction de la durée de conservation souhaitée et des quantités de données en jeu : mémoires électroniques, bandes magnétiques, disques magnétiques ou optiques ;
      • les moyens de restitution dépendent de la nature des données : écrans ou imprimantes pour le texte et les images, haut-parleurs ou instruments MIDI pour les sons...

Approche organisationnelle modifier

L'informatique pour l'organisation est un élément d'un système de traitement d'information (les entrées peuvent être des formulaires papier par exemple) et d'automatisation. Depuis Henry Ford, l'automatisation des tâches ayant été identifiée comme un avantage concurrentiel, la question est : que peut-on automatiser ?

Autant il est relativement facile d'automatiser des tâches manuelles, autant il est difficile d'automatiser le travail intellectuel et parfois créatif. L'approche de l'informatique dans une organisation commence donc par l'élucidation des processus, c'est-à-dire la modélisation du métier. Après validation, la MOA (Maîtrise d'Ouvrage) fournit les spécifications fonctionnelles de (l'ouvrage) qui vont servir de référence dans la conception pour la MOE (Maîtrise d'œuvre).

Cette conception sera alors effectuée dans le respect d'un Cycle de développement qui définit les rôles et responsabilités de chaque acteur. Ainsi, les échanges entre MOA et MOE ne se résument pas à la maîtrise des chantiers (tenue des délais et des coûts, et validation des livrables), la MOA et la MOE sont garantes (éventuellement responsables sur un plan juridique) de la cohérence des systèmes d'information, et de l'adéquation des solutions informatiques avec les problèmes utilisateurs finals initialement constatés.

Logiciel modifier

On s'est en effet vite rendu compte que des machines techniquement très avancées pour leur époque, comme la Bull Gamma 60, restaient invendables tant qu'on n'avait pas de programmes à livrer pour les rendre immédiatement opérationnelles. IBM lança entre 1968 et 1973 une sorte d'ancêtre du logiciel libre avec son ordinateur 1130, politique qui assura à celui-ci par effet boule de neige un succès immédiat et planétaire, mais les conclusions d'un procès antitrust lui interdirent de distribuer bénévolement du logiciel.

Le monde des mainframes classe les logiciels en catégories suivantes : données)|Oracle]] ;

On classe aussi les logiciels en libre et propriétaire, bien que les deux soient parfois panachés à des degrés divers. Certains ont une fonction bureautique ou multimédia . Certains logiciels ont acquis des noms connus de tous.

Une conception plus récente, depuis le milieu de années 1980, consiste à distribuer les logiciels tous binaires confondus, et à les munir d'un système de licences par jetons ou tokens permettant l'usage de N copies simultanées du logiciel sur le réseau, tous matériels confondus. Cette approche est majoritaire dans le monde UNIX.

La diversité des systèmes informatiques a fait apparaître une technique visant à combiner le meilleur de chacun de ces univers : l'émulateur. Il s'agit d'un logiciel permettant de simuler le comportement d'un autre système dans celui que l'on utilise,

  • soit pour qu'une machine semble être une autre (voir IBM 1130),
  • soit pour simuler le comportement d'un système d'exploitation (par exemple DOS ou Windows sous GNU/Linux).

Le logiciel réalise normalement une fonction attendue de ses utilisateurs. Néanmoins, des effets secondaires (parfois nommés par contresens de traduction effets de bord) existent.

Stockage des données modifier

En matière de stockage d'information, on distingue le dispositif permettant de l'enregistrer physiquement (périphériques et composants) de la manière dont on structure et représente l'information pour faciliter son traitement.

Mémoire de masse
Organisation des données en vue du stockage

Échanges de données : protocoles et normes modifier

  • un langage de description d'instructions et de données graphiques (exemple : AGP) ;
  • des commandes entre un client et un serveur (exemples : POP3, IMAP, HTTP, FTP …) ;
  • des échanges de données informatisés spécifiques (exemples : EDI, EAI, X.400, X.500).

Certains protocoles sont définis par des normes pour permettre l'interopérabilité des matériels ou de logiciels les mettant en œuvre. D'autres normes définissent, toujours dans le domaine de l'échanges de données :

  • des langages de représentation d'information sans pour autant définir la manière dont cette information peut être échangée (exemples : ASN.1, XML) ;
  • des architectures de réseaux (exemples : ... Token-Ring).

Science des nombres et Système de numération modifier

Examen de quelques systèmes numériques de jadis à nos jours.

  • Du système binaire inventé par G. Boole, mais déjà connu formellement par Francis Bacon, utilisé par les ordinateurs au dénombrement restreint du 1-2-3 pour dire beaucoup à partir de 4 en usage chez les primitifs, les hommes ont utilisé des systèmes numériques qui indiquent le degré de culture ou de vigilance des peuples auprès desquels ils étaient en application.
  • Les Celtes pour leur part allaient jusqu'à utiliser en plus les dix doigts de pieds, ce qui élargissait leur système numérique à 20. Les derniers Celtes sur le continent, de nos jours, utilisent encore ce système pour apprécier toutes les valeurs quantitatives de la vie courante.
  • Le système numérique originel des Sérères - une tribu de chasseurs du Sénégal - est quincal: Dans l'exécution de leur activité, l'une des mains seulement était disponible pour des occupations annexes. L'autre restait à serrer toujours une arme, le bâton, la sagaie, la lance... pour compter. Den - niet - nient - njar - gurun ; a cinq se fait le report : gurun-den etc.
  • Les Juifs pratiquaient le système numéral le plus élaboré. En exploitant les 12 phalanges des huit doigts décomptés à l'aide des pouces. Ils ont institué la grosse, une unité de mesure encore en vigueur pour certaines marchandises. On y arrive en se servant par exemple du pouce de la main gauche pour décompter les phalanges. Arrivé à la dernière phalange du petit doigt, 4 × 3, permettent d'enregistrer la première douzaine à l'aide du pouce de la main droite qui pointe sur la première phalange de l'index de la main droite. Ce système permet ainsi de compter jusqu'à 144.
  • On trouve des traces de ces système de numération dans le fait qu'une heure se décompose en 60mn ou qu'on vend encore les oeufs par douzaine (ou demi-douzaine, soit 6).

Des tablettes d'argile servaient de document aux scribes, assis sur les quais de débarquements pour les prises en charge des arrivages ou dans les entrepôts lors de la sortie ou de l'entrée des marchandises. Le Romain marquait d'un trait à 10, le Celte à 20 et le juif à 144 arrivé à chaque fin de son système numéral pour enregistrer

  1. « Le génie logiciel »
  2. A. M. Turing, On computable numbers, with an application to the Entscheidungsproblem (Proceedings of the London Mathematical Society, ser. 2, vol. 42, pp. 230-265, 1936)
  3. A. Church, A note on the Entscheidungsproblem (The journal of symbolic logic, vol. 1, 1936)
  4. S. C. Kleene, General recursive functions of natural numbers (Matematische Annalen, vol. 112, pp. 727-742, 1936)
  5. Dictionnaire encyclopédique anglais vers français d'informatique, de Frédéric de SOLLIERS. Lire la définition de "Information technology"