Qu'est-ce que l'informatique (definition et explication)
Informatique - Définition
L'informatique désigne
l'automatisation du traitement de l'information par un système, concret
(machine) ou abstrait. Dans son acception courante, l'informatique désigne l'ensemble des sciences et techniques en
rapport avec le traitement de l'information. Dans le parler populaire,
l'informatique peut aussi désigner ce qui se rapporte au matériel informatique (l'électronique),
et la bureautique.
À ce sujet on
attribue une phrase à Edsger Dijkstra qui résume assez bien
cela :
" L'informatique
n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes.
(en anglais : Computer
science is no more about computers than astronomy is about telescopes.) "
Dans l'absolu, on
pourrait faire de l'informatique avec n'importe quel système se comportant
comme un circuit logique : machine mécanique (comme par exemple la pascaline ou les automates), machine pneumatique, système hydraulique… Les
premiers programmes datent même d'avant l'invention de l'ordinateur (voir Ada Lovelace).
Dans les faits, seule l'électronique numérique permet d'avoir une puissance de calcul accessible à un coût
raisonnable — coût financier, mais aussi place occupée par la machine,
ressources nécessaire à la fabrication et au fonctionnement, nuisances sonores,
durée de vie de la machine, rapidité du traitement
(coût en heures de travail, disponibilité),
souplesse (adaptabilité)… La séparation concept/support reste donc
très abstraite.
La traduction
anglaise 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.
Des professions
aussi diverses que concepteur, analyste, développeur, responsable d'exploitation, ingénieur système, technicien de
maintenance matérielle ou logicielle, chercheur en informatique ou directeur d'un centre de calcul, relèvent
du domaine de l'informatique. Néanmoins, le terme informaticien désigne
le plus souvent ceux qui conçoivent, déploient et mettent en œuvre des
solutions.
Histoire
Les
origines
Depuis des millénaires, l'Homme a
créé et utilisé des outils l'aidant à calculer (abaque, boulier, etc.). Parmi
les algorithmes les plus anciens, on compte des tables datant de l'époque
d'Hamurabi (env. -1750). Les premières machines mécaniques apparaissent entre
le XVIIe et le XVIIIe siècle.
La première machine à calculer mécanique réalisant les quatre opérations aurait
été celle de Wilhelm Schickard au XVIe siècle, mise au point notamment pour
aider Kepler à établir les tables rudolphines d'astronomie.
En 1642, Blaise Pascal réalisa
également une machine à calculer mécanique qui fut pour sa part commercialisée
et dont neuf exemplaires existent dans des musées comme celui des Arts et
métiers et dans des collections privées (IBM).
La découverte tardive de la machine
d'Anticythère montre que les Grecs de l'Antiquité eux-mêmes avaient commencé à
réaliser des mécanismes de calcul en dépit de leur réputation de mépris général
pour la technique (démentie d'ailleurs par les travaux d'Archimède).
Cependant, il faudra attendre la définition du concept de programmation (illustrée en
premier par Joseph Marie Jacquard avec ses métiers à tisser à cartes perforées,
suivi de Boole et Ada Lovelace pour ce qui est d'une théorie de la programmation
des opérations mathématiques) pour disposer d'une base permettant d'enchaîner
des opérations élémentaires de manière automatique.
La
mécanographie
Une autre phase importante fut celle
de la mécanographie, avec l'apparition des machines électromécaniques
alimentées par cartes perforées de l'Allemand Hollerith, à la fin du XIXe siècle. Elles furent utilisées à grande échelle pour
la première fois par les Américains lors du recensement de 1890 aux
États-Unis, suite à l'afflux des immigrants dans ce pays lors de la seconde moitié du XIXe
siècle. Les Allemands étaient probablement bien équipés en machines
mécanographiques avant la Seconde Guerre mondiale. Ces équipements, installés
par ateliers composés de trieuses, interclasseuses, perforatrices, tabulatrices
et calculatrices connectées à des perforateurs de cartes ont dû leur apporter
une certaine supériorité pour la construction des armements. Toutefois, ceci
n'a pas été examiné en profondeur par les historiens. Leur moindre mérite n'est
pas la réussite du programme. On ne pouvait pas encore parler d'informatique,
car les traitements étaient exécutés à partir de techniques électromécaniques
et basés sur l'usage de lampes radio ; anodes, cathodes, triodes etc. La chaleur dégagée par ces
lampes rendait ces ensembles peu fiables.
Science des nombres et Système de numération
Examen de quelques systèmes numériques de
jadis à nos jours.
- Du système binaire inventé
par G. Boole, 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 Sumériens utilisaient le système sexagésimal encore
utilisé de nos jours pour mesurer l’heure qui compte 60 minutes divisées
en 60 secondes. Il fut repris par les Grecs pour leurs calculs
astronomiques, dans le calcul des angles et du temps.
- Les Romains se servaient de leurs 10 doigts et pratiquaient le système décimal pour
constituer des centuries de légionnaires. Ils marquaient les milliers par
un cercle barré
verticalement. Déformé ce signe a donné le " M " pour
désigner 1 000 et la moitié de ce symbole pour le
" D " pour désigner 500. Le système décimal en
application chez les Romains sans la connaissance des chiffres arabes,
ne facilitait pas la tâche arithmétique des
intendants chargés de faire les comptes.
- 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.
- Lors d'un safari poils, plumes et aux phacochères au Sénégal, on
peut découvrir le système quincal utilisé par les Sérères. Pourquoi
émanant des Sérères ? Parce que les Sérères incarnent la tribu de
chasseurs au Sénégal. La population sénégalaise comprend quatre ethnies
principales. En plus des Sérères, on y rencontre des Wolofs l'ethnie
dominante, leur langue étant reconnue langue nationale et le français fait
office de langue officielle. Les Toucouleurs et les Peuls forment les deux
autres ethnies. Aux Sérères incombaient traditionnellement le rôle de
pourvoyeurs de gibier à l'égard des autres ethnies, elles de culture
agricole et pastorale. Par hordes, les Sérères effectuaient des
déplacements en chassant de village en
village armé de courts bâtons, d'arcs et de lances. Le gibier
abattu ; pintades, perdreaux et pigeons, l'étaient par ce bâton
qu'ils lançaient en virtuose dès que le gibier traqué prenait son envol
dans la savane. Phacochères et autres bêtes à sabots étaient chassés à
l'arc, à la lance et achevés à la sagaie ou à l'épieu par les porteurs et
les traqueurs. Le système numérique originel des Sérères est quincal. Il
est aisé de deviner le pourquoi de cette pratique. 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. Le produit de
la chasse était troqué contre des produits agricoles, textiles, en somme
contre des produits de première nécessité pour ces chasseurs ambulants qui
cultivaient le souci de se faire respecter. Les bijoux et la céramique occupaient
une place de choix dans le troc, ces dames occupent encore et toujours
lors de rencontres de tout genre
le premier rang pour
ne pas figurer parmi les laissés-pour-compte.
- 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.
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 jusqu'à la dernière pièce les mouvements à
enregistrer.
George Boole, mathématicien anglais
(1815-1864), fut l’inventeur du système binaire. Sans son système, il n'y
aurait pas d'ordinateurs transistorisés qui fonctionnent grâce à des 0 et des
1, qui permettent d'aller en calculs à l'infini.
L'informatique
moderne
L'ère des ordinateurs modernes commença
avec les développements de l'électronique pendant la Seconde Guerre mondiale,
ouvrant la porte à la réalisation concrète de
machines opérationnelles. Au même moment, le mathématicien Alan Turing théorise
le premier ce qu'est un ordinateur, avec son concept de machine universelle de
Turing.
L'informatique est donc un domaine
fraîchement développé, même s'il trouve ses origines dans l'antiquité (avec la
cryptographie) ou dans la machine à calculer de Blaise Pascal, au XVIIe siècle. Ce n'est qu'à la fin de la
Seconde Guerre mondiale qu'elle a été reconnue comme une discipline à part
entière et a développé des méthodes, puis une méthodologie qui lui étaient
propres.
Son image a été pendant quelque temps surfaite : parce que les premiers à programmer
des ordinateurs avaient été des ingénieurs rompus à la technique des équations
différentielles (les premiers ordinateurs, scientifiques, étaient beaucoup
utilisés à cette fin), des programmeurs sans formation particulière, parfois d'ailleurs
issus de la mécanographie, cherchaient volontiers à bénéficier eux aussi de ce
label de rocket scientist afin de
justifier des salaires rendus confortables par :
- le prix élevé des ordinateurs de l'époque (se chiffrant en ce qui
serait des dizaines de millions d'euros aujourd'hui compte-tenu de
l'inflation, il reléguait au second plan les considérations de parcimonie
sur les salaires) ;
- l'aspect présenté comme peu
accessible de leur discipline et un mythe de difficulté mathématique entretenu autour.
En fait, les premiers ordinateurs ne se programmaient pas de façon très différente de
celle des calculatrices programmables utilisées
aujourd'hui dans les lycées et collèges, et maîtrisées par des élèves de
quatorze ans mais le domaine était nouveau et l'algorithmique nécessite
un certain degré de concentration associé, peut-être à tort, à la
réflexion pure.
L'émergence d'un aspect réellement
scientifique dans la programmation elle-même (et non dans les seules applications
scientifiques que l'on programme) ne se manifeste qu'avec la série The Art of Computer Programming de Donald Knuth,
professeur à l'Université de
Stanford, à la fin des années 1960, travail monumental encore inachevé en 2004.
Les travaux d'Edsger Dijkstra, Niklaus Wirth et Christopher Strachey procèdent
d'une approche également très systématique et
elle aussi quantifiée.
On demandait à Donald Knuth dans les années
1980 s'il valait mieux selon lui rattacher l'informatique (computer science) au génie électrique — ce qui est souvent le cas
dans les universités américaines — ou à un département de mathématiques. Il
répondit : " Je la classerais
volontiers entre la plomberie et le dépannage automobile " pour
souligner le côté encore artisanal de cette jeune science.
Approche
organisationnelle
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 finaux initialement constatés.
Matériel
On utilise également le terme anglais hardware (littéralement
" quincaillerie ") pour désigner le matériel informatique.
Il s'agit de tous les composants que l'on peut trouver dans :
1. Les
ordinateurs et leurs périphériques : un ordinateur est un ensemble de circuits
électroniques permettant de manipuler des données sous forme binaire,
représentées par des variations de signal électrique.
Il existe différents types d'ordinateurs :
Un IBM PC 5150 datant de 1981,
Système d'exploitation IBM-DOS 2.0
- Les micro-ordinateurs.
De bureau ou portables. Ils sont composés
d'une unité centrale : un boîtier contenant la carte mère, l'alimentation, des
unités de stockage. On y ajoute une console : un écran et
un clavier. Divers périphériques peuvent leur être ajoutés, une souris, une imprimante, un scanner,
etc.
PC Portable
- Les stations de travail.
Des micro-ordinateurs particulièrement
puissants et chers, utilisés uniquement pour des besoins professionnels pointus
(conception assistée par ordinateur). Ce terme était particulièrement en vogue
dans les années 1980-1990. Depuis les années 2000, il n'est guère possible de
concevoir une station de travail plus puissante qu'un micro-ordinateur haut de
gamme ;
- Les mainframes.
Une armoire abrite l'unité centrale et
l'alimentation, une ou plusieurs autres les périphériques de stockage (disque
dur, sauvegarde) tandis que les moyens de communication et réseau (routeur, hubs,
modem) sont dans la même pièce, mais dans des racks séparés. Une console
d'administration (écran, clavier, imprimante) est généralement située dans ce
même local ;
- Les Serveurs.
Ce sont des ordinateurs qui proposent
souvent à des entreprise un endroit de stockage universel pour les utilisateurs
connectés aux serveurs. Les serveurs peuvent effectuer des tâches telles
que : servir de Pare-Feu, héberger un serveur web (page internet partagée
sur le World Wide Web) ou tout simplement pour partager un nombre important
d'imprimantes et de périphériques. Les prix des Serveurs sont élevés car le
Serveur a été conçu pour rester allumé en permanence, alors le matériel est
durable et performant. ;
- Les PDA (Personal Digital Assistant,
encore appelés organiseurs).
Ce sont des ordinateurs de poche proposant
des fonctionnalités liées à l'organisation personnelle (agenda, calendrier, carnet d'adresse, etc.). Ils peuvent être
reliés à Internet par différents moyens (réseau Wifi, Bluetooth,
etc.). ;
- Les Centre de Médias (Media Center).
Ce sont des ordinateurs qui réunissent tous
les périphériques et le matériel pour donner la tâche à l'ordinateur de capter
la télévision, écouter de la
musique et tout ca sur son écran de télévision, avec généralement une manette à
distance. Ce genre de PC est un divertissement familial et est très accessible,
bien que leurs prix ont eu tendance à être hauts ces derniers temps, ce type
d'ordinateur devient de plus en plus accessible à tous. ;
- Et bien d'autres appareils.
Dans le domaine de l'informatique
embarquée : téléphone, électroménager, automobile, armements
militaires, etc. Les cartes à puces, ou l'informatique industrielle.
Logiciel
Le logiciel désigne la partie à première vue immatérielle
de l'informatique, l'organisation et le traitement de l'information : les
programmes. 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 :
- systèmes d'exploitation ;
- bases de données, comme DB2,
Ingres ou Oracle ;
- programmes de communication, comme NCP ou
RSCS ;
- moniteurs de télétraitement ;
- systèmes transactionnels, comme CICS ou openUTM ;
- systèmes de temps partagé,
utilisés pour le calcul ou le développement ;
- compilateurs traduisant les langages en instructions machine et
appels système ;
- tout le reste entrait en
une catégorie nommée Logiciels applicatifs.
Plus simplement on distingue généralement
trois types de logiciels (par ordre de proximité du matériel) :
- le micrologiciel
- le système d'exploitation
- les logiciels et applications utilisateur (en anglais software)
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 comme
par exemple les jeux vidéo. Certains logiciels ont
acquis des noms connus de tous.
Le noyau du système d'exploitation crée le
lien entre le matériel et le logiciel. Un logiciel, quand il est fourni sous
sa forme binaire, serait utilisable uniquement avec un système d'exploitation
donné (car il en utilise les services), et ne fonctionnerait que sur un
matériel spécifique (car il en utilise le code d'instructions). 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.
À l'initiative de Richard Stallman et du GNU,
à partir de 1985, une mouvance de programmeurs refuse cette logique propriétaire
et ceux-ci se muent en concepteurs inventifs pour se lancer dans le
développement d'outils et de bibliothèques système libres et compatibles avec
le système UNIX. C'est pourtant le projet indépendant Linux, initié par Linus Torvalds,
basé sur les travaux et les outils du GNU, qui aboutira dans la création d'un
système d'exploitation complet et libre appelé GNU/Linux.
Une bonne partie des logiciels actuels
fonctionnent dans un environnement graphique pour
interagir avec l'utilisateur. 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 terme anglais est software, à l'origine un jeu de mot entre hardware (" quincaillerie ",
pour désigner le matériel) et l'opposition soft/hard (mou/dur), opposition entre le matériel
(le dur) et l'immatériel (le mou). Les traductions françaises matériel et logiciel rendent
parfaitement cette opposition et cette complémentarité.
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. Parfois même, certains
logiciels sont destinés à nuire, comme les virus informatiques,
nommés en anglais, par analogie avec software : malware (qu'on pourrait traduire par le
néologisme nuisiciel, ou logiciel malveillant).
La
création des logiciels
Un projet informatique s'inscrit dans un
cycle de développement qui définit les grandes étapes de la réalisation
(planification), de la manière dont on passe d'une étape à l'autre (modèle
incrémental, en V, en spirale,
méthode up, extreme programming,
etc.). Pour les petits projets (ou les petites équipes de développement), cette
réflexion est souvent négligée (on se répartit les modules et chacun développe
dans son coin). Ceci est une cause fréquente d'erreurs (bogues) et de
non-conformité (le produit final n'est pas conforme aux attentes de
l'utilisateur). Mais même les énormes projets, avec beaucoup de moyens, sont
victimes de cette négligence ; ainsi, l'échec du premier vol d'Ariane 5 fut
dû à un problème de logiciel, etc. Un projet peut alors intégrer une approche
de la qualité et de la sûreté de fonctionnement des
systèmes informatiques afin de contrôler autant que possible le produit final.
Un projet comprend les étapes suivantes
(selon le modèle incrémental) :
- l'établissement d'un cahier des charges qui
définit les spécifications auxquelles devra répondre le logiciel ;
- la définition de l'environnement d'exécution
(architecture informatique) :
- type(s) d'ordinateur sur lequel le logiciel doit fonctionner
(station de calcul, ordinateur de bureau, ordinateur portable, assistant personnel,
téléphone portable, guichet automatique de banque, ordinateur embarqué dans un
véhicule ;
- type et version du(des) système(s) d'exploitation
sous-jacent ;
- périphériques nécessaires à l'enregistrement des
données et à la restitution des résultats
(capacité de stockage, mémoire vive,
possibilités graphiques...) ;
- nature des connexions réseau entre les composants (niveau de
confidentialité et de fiabilité,
performances, protocoles de communication...) ;
- la conception de l'application et de ses constituants, et notamment
de l'interactivité entre
les modules développés : structure des données partagées, traitement
des erreurs générées par un autre module... : c'est le domaine du
génie logiciel ;
- la mise en place d'une stratégie de
développement :
- répartition des tâches entre les développeurs ou les équipes de
développement, qui vont assurer le codage et les tests ;
- le plan de test du logiciel, pour s'assurer qu'il remplit bien la
mission pour laquelle il a été écrit, dans toutes les conditions
d'utilisation qu'il pourra normalement rencontrer, mais aussi dans des cas
limites.
Après chacune de ces phases, on peut avoir
une étape de recette, où le client va valider les choix et les propositions du
maître d'œuvre.
La phase de programmation consiste à
décrire le comportement du logiciel à l'aide d'un langage de programmation.
Un compilateur sert
alors à transformer ce code écrit dans un langage informatique compréhensible
par un humain en un code compréhensible par la machine, le résultat est un
exécutable. On peut également, pour certains langages de programmation,
utiliser un interpréteur qui exécute un
code au fur et
à mesure de sa lecture, sans nécessairement créer d'exécutable. Enfin, un
intermédiaire consiste à compiler le code écrit vers du bytecode. Il s'agit également d'un format binaire,
compréhensible seulement par une machine, mais il est destiné à être exécuté
sur une machine virtuelle, un programme qui
émule les principales composantes d'une machine réelle. Le principal avantage
par rapport au code machine est une portabilité théoriquement
accrue (il " suffit " d'implanter la machine virtuelle pour
une architecture donnée pour
que tous les programmes en bytecode puissent y être exécutés), portabilité qui
a fait, après sa lenteur, la réputation de Java. Il convient de noter que ces
trois modes d'exécution ne sont nullement incompatibles. Par exemple, OCaml
dispose à la fois d'un interpréteur, d'un compilateur vers du bytecode, et d'un
compilateur vers du code natif pour une grande variété de processeurs. Une fois
écrit (et compilé si nécessaire), le code devient un logiciel.
Pour des projets de grande amplitude, nécessitant la
collaboration de beaucoup de programmeurs, voire de plusieurs équipes, on a
souvent recours à une méthodologie commune (par exemple MERISE) pour la
conception et à un atelier de génie logiciel (AGL)
pour la réalisation.
Au cours de la programmation et avant la
livraison du produit final, le programme est testé afin de vérifier qu'il
fonctionne bien (y compris dans des cas d'utilisation en mode dégradé) et qu'il
est conforme aux attentes de l'utilisateur final. Les tests intermédiaires
permettent de s'assurer que chaque module de code réalise correctement une
fonction : ce sont les tests unitaires.
Les tests finals qui vérifient le bon enchaînement des modules et des
traitements sont des tests d'intégration.
Pour certaines applications demandant un
haut niveau de sûreté de fonctionnement, les tests sont précédés d'une étape de vérification, où des logiciels spécialisés
effectuent (généralement sur le code source,
mais parfois aussi sur le code compilé) un certain nombre d'analyses pour
vérifier partiellement le bon fonctionnement du programme. Il n'est toutefois
pas possible (et des théorèmes mathématiques montrent pourquoi), de garantir la
parfaite correction de tout logiciel
par ce moyen et la phase de test reste donc nécessaire. Elle se complète aussi,
lorsqu'il s'agit d'une évolution d'une application existante, de nombreux tests
automatisés de non-régression. Les tests non plus ne pouvant pas garantir
totalement l'absence d'erreurs, il est bon de les compléter par des phases de
vérification par relecture : des techniques existent pour essayer de
rendre cette vérification exhaustive.
Statistiques : 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).
Toutefois avec l'utilisation de méthodes
comme la méthode UP ou l'extreme programming, ces statistiques ont tendance à
s'améliorer. Notamment, grâce à un développement par itérations successives où
les phases d'analyse, de conception, de réalisation et de test se répètent
plusieurs fois pendant la durée de vie du projet et produisent à chaque fois un
produit exécutable. Le client peut après chacune des itérations
"tester" le produit et donner son avis.
Ces méthodes permettent ainsi une meilleure gestions des coûts et surtout de la
qualité tout en réduisant fortement les risques de non conformité avec les
souhaits du client.
Traitement de l'information
L'information, pour être traitée, doit
être :
- représentée par un codage :
·
- on utilise un
système de numération binaire,
où l'élément unitaire informationnel est le bit (contraction
de l'anglais binary
digit : chiffre binaire).
Les bits sont généralement regroupés par huit, pour constituer des octets
(ou bytes). Un octet peut
être représenté par la séquence des bits qui le constituent (par
exemple : 00101110) ou par une paire de
valeurs hexadécimales (pour le même exemple : 2E), plus compact. Le choix du binaire ne
résulte pas de la mystique, mais tout simplement d'utiliser de simples
circuits de commutation, qui ont de très larges
tolérances et par conséquent de faibles coûts ;
- on représente la structuration de l'information pour permettre des
échanges entre composants logiciels et entre composants matériels. Pour
cela, on définit des langages et des formalismes de représentation.
- stockée dans des systèmes permanents (mémoires dites de masse) ou non (mémoires dites volatiles).
Échanges de données : protocoles et normes
Les protocoles définissent une manière de
procéder, notamment pour codifier la façon dont deux entités communiquent
(modules ou couches logicielles, périphériques, etc.). On parle notamment de protocole de communication lorsqu'on
veut définir des mécanismes de contrôle sur la manière
dont l'échange d'information est réalisé.
Un protocole peut ainsi définir :
- un langage de description d'instructions et de données graphiques
(exemple : AGP) ;
- un standard de commandes et de flux d'information
pour une mémoire de
masse (exemples : SCSI, FireWire,
IDE, Serial ATA) ;
- des échanges entre le processeur et
des cartes d'extension (exemples : PCI, PCI Express,
ISA) ;
- des modalités de transfert d'information entre périphériques
(exemple : USB) ou sur un réseau TCP/IP, Internet, ATM, X.25) ;
- 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 : Modèle OSI,
WiFi, Ethernet,
Token-Ring).
Stockage
des données
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
- Fichier de cartes perforées
- Bande magnétique
- Disque amovible magnétique (Disquette)
- Disque magnéto-optique
- Disque dur (disque magnétique embarquant le mécanisme, l'électronique et
les têtes de lecture)
- Disque optique amovible (CD-ROM, CD-R, CD-RW mais aussi DVD-ROM,
DVD-R, DVD-RW, DVD+R, DVD+R DL, DVD+RW, DVD-RAM, GD-ROM, HD-DVD, Blu-ray)
- Mémoire électronique non volatile (Mémoire flash utilisée notamment
dans les " clé USB ")
Mémoire volatile
- RAM, (Random Access Memory)
Organisation des données en vue du stockage
- Formats (extensions) de fichiers
- Système de fichiers
- Base de données
- Annuaire
La distribution de matériels et logiciels informatique
Historiquement l'informatique a été
distribuée (revendue) par les grands constructeurs qui traitaient en direct
avec leurs clients ; la plupart de ceux-ci étant des grands comptes ou des
organismes publics. Au fur et à mesure de la baisse des prix des systèmes, le
marché s'est élargi, obligeant les constructeurs à se structurer pour mieux
diffuser leur produit et à s'appuyer sur des partenaires. Ces partenaires étaient
au départ mono-marque et travaillaient souvent sous la forme d'agent
semi-exclusif puis ils se sont transformés au fil du temps en revendeurs
indépendants multi-marques.
Aujourd'hui la distribution des produits
informatiques est faite sous la forme de multiples canaux de distribution,
parmi lesquelles on compte la vente directe, le e-commerce, les chaînes de
revendeurs, les groupements de revendeurs, la vente par correspondance.
Les grossistes informatiques ont un rôle clef dans la distribution
informatique et sont un point de passage quasi obligé pour les sociétés qui ont
choisi la vente indirecte (par un réseau de revendeurs). Les grossistes, qu'ils
soient généralistes ou spécialisés, adressent la multitude de petits points de
vente ou les sociétés de service pour lesquelles l'activité de négoce
représente un volume d'activité
faible.
La France compte environ 40 000 sociétés
informatiques et télécoms dont près de 15 000 ont une activité de distribution.
Il faut noter que si le nombre de sociétés
distribuant des produits informatique ne cessent de s'étendre cela l'est
beaucoup plus au profit de la distribution structurée visant le grand public
que des revendeurs indépendants dont le nombre ne cesse de décroitre et dont
l'activité se tourne de plus en plus vers la notion de société de service informatique
comme les SSII.



Commentaires
Enregistrer un commentaire