Utilisateur:Silex6/Bac à sable - archive 1 - 2010

base de données objet modifier

En informatique, une base de données à objets (anglais object database) est une base de données dans laquelle les informations sont stockées sous formes d'objets persistants.

Une base de données est un ensemble d'informations connexes stockées dans un dispositif informatique. Dans une base de données à objets les informations sont regroupées sous forme d'objets: un conteneur logique qui englobe des informations et des traitements relatifs à une chose du monde réel.

Les bases de données à objets sont mises en oeuvre par un système de gestion de base de données objet - logiciel qui manipule le contenu de la base de données - et un programme écrit dans un langage de programmation orientée objet.

Les premiers systèmes de gestion de base de donnée à objets sont apparus dans les années 1990, en même temps que ce sont répandus les langages de programmation orientés objet.

Histoire modifier

Les langages de programmation orientés objet sont apparus dans les années 1960 et sont devenu populaires dans les années 1980.

Les premiers systèmes de gestion de base de donnée objets sont apparus dans les années 1990, en même temps que ce sont répandus les langages de programmation orientés objet.

Le consortium OMG a été fondé en 1989, dans le but de soutenir et uniformiser les nouvelles technologies basées sur les objets. Les bases de données objet sont une des technologies soutenues et standardisées par ce consortium.

A cette époque, les systèmes de gestion de base de données (SGBD) relationnels étaient déjà bien implantés sur le marché. L'arrivée des SGBD à objets a poussé plusieurs éditeurs de SGBD relationnels a modifier leur produits en vue de leur permettre de stocker des objets.

En 1997 les parts de marché des SGBD à objets sont d'environ 3%, le marché est largement dominé par les SGBD relationnels. Depuis l'arrivée cette année de SGBD qui manipulent à la fois des bases de données à objets et relationnelles, il est très peu probable que les SGBD à objets remplacent un jour les SGBD relationnels.[1]

Objets persistants modifier

Un objet est un conteneur logique qui englobe des informations et des traitements relatifs à une chose du monde réel. Les objets sont créés et manipulés par des langages de programmation orientée objet.

Les objets sont créés lors de l'exécution de programmes écrits en langage de programmation orienté objet dans lesquels ils disparaissent au plus tard à la fin de l'exécution du programme en question. Les bases de données objet permettent de prolonger la durée de vie des objets au-dela de la durée de l'exécution du programme. Phénomène appelé la persistance.

Chaque objet est créé à partir d'une classe, qui sert de modèle. Il hérite des caractéristiques de la classe. Une classe peut être dérivée d'une autre classe, dans quel cas elle héritera des caractéristiques de la classe source.

Chaque attribut d'un objet contient une information. Ce peut être un chiffre, un nom, ou une référence à un autre objet. Les objets comportent des méthodes - des traitements propres à cet objet, qui manipulent les valeurs des attribut.

Les logiciels de manipulation des base de données objet (SGBDO) permettent de stocker dans les bases de données objet les valeurs des attributs, les relations d'héritage entre les objets, les références d'un objet sur un autre objet. Certains SGBDO permettent également d'exécuter les méthodes des objets dans le cadre des manipulation du contenu de la base de données.

Les SGBDO sont équipés d'interfaces de programmation qui permettent de manipuler les objets dans des programmes écrits en langage de programmation orientée objet en utilisant les mécanismes ordinaires de ce type de langage.

En pratique modifier

Un système de gestion de base de données est un ensemble de logiciels qui manipule le contenu des bases de données. Il effectue, sur demande, des opérations élémentaires telles que la recherche, l'ajout ou la modification du contenu.

selon l'architecture Ansi/Sparc, la manière dont les informations sont organisées dans un logiciel qui utilise le SGBD peut différer de la manière dont le SGBD présente les informations par l'intermédiaire de l'interface de programmation. Cette organisation peut différer de celle qui est utilisée par le SGBD pour stocker les informations sur un support informatique.

un SGBD est dit objet lorsque les informations sont présentées sous forme d'objets. Un SGBD relationnel présente les informations sous formes de matrices appellées relations, et un SBGD objet-relationnel peut présenter les informations alternativement sous formes de relations ou d'objets.

Les bases de données à objet sont mises en oeuvre avec un SGBD objet ou objet-relationnel, qui est directement exploité par un programme écrit en langage de programmation orientée objet. Une alternative est l'utilisation d'un composant logiciel de mapping objet-relationnel avec un SGBD relationnel.

Le consortium ODMG (pour Object Data Management Group), créé en 1991, publie divers standards relatifs aux bases de données à objets, notamment une hiérarchie d'objets standard, et le langage informatique OQL. Ce consortium a été dissous en 2001.

Le marché modifier

Les bases de données à objet peuvent être manipulées avec des SGBD objet ou des SGBD relationnel-objet.

Les SGBD objet sont destinés à étendre les possibilités d'un langage de programmation orientée objet et permettre de créer des objets persistants. Tandis que les SGBD relationnel-objet sont destinés à permettre la manipulation d'objets persistants avec les techniques déjà utilisées pour les bases de données relationnelles, telles que le langage de requêtes SQL.

En 2003 il y a 25 logiciels SGBD objet disponibles sur le marché. De plus, les éditeurs de SGBD pour les bases de données relationnelles les plus courants sur le marché, que sont Oracle Corporation, Microsoft, Informix et IBM ont adapté leurs produits et en ont fait des SGBD relationnel-objet.

Dix ans après leur apparition, certains SGBD objet n'offrent pas toutes les possibilités offertes par les SGBD relationnel et objet-relationnel, ce qui explique en partie la faible percée commerciale de ces produits.

Les objets sont une notion qui permet de représenter des entités complexes, composites et polymorphes. Les bases de données à objet sont utilisées dans des applications qui manipulent des données complexes telles que la conception assistée par ordinateur, la fabrication assistée par ordinateur, la gestion de la connaissance, le génie logiciel, les systèmes d'informations géographiques ou les annuaires.[2]

Exemples de bases de données orientées objets modifier

Un des meilleurs exemples de SGBD orienté objet est le système O2

Il a été réalisé par le Groupement d'Intérêt Public ALTAIR, regroupant IN2, l'INRIA et le Laboratoire de Recherche en Informatique de l'Université d'Orsay. Il a d'abord été commercialisé par la société O2 Technology, puis par la société Ardent Software et enfin par la société Informix.

O2 dispose d'un langage de description de schéma et d'un langage de programmation baptisé O2C et qui est une extension du langage C. Une application écrite en C ou C++ peut utiliser les services de O2 pour assurer la persistance de ses données. Un langage de requête de type SQL appelé OQL pouvait être utilisé de manière interactive ou à l'intérieur d'un programme C++ ou O2C.

Depuis 1999 cependant, O2 n'est plus commercialisé.

Dans un cas plus concret, il existe un serveur d'applications Web du nom de Zope, qui utilise une base de données à objets hiérarchique couplée à un environnement de développement.

Les exemples les plus connus à l'heure actuelle de base de données orientées objets sont les annuaires, qui sont capables de stocker une multitude d'informations. Ils stockent l'information dans des "objets", très souvent une fiche individuelle, une machine, une ressource... à laquelle on associe des valeurs, ses attributs.

Les annuaires sont utilisés partout à l'heure actuelle ; ceci plus particulièrement dans le monde de l'entreprise, pour stocker les informations propres à chaque personne (nom, prénom, fonction, adresse, numéros, droits, comptes, etc.)

Il existe une multitude de protocole d'annuaires, dont les plus connus sont LDAP, et son ancêtre, X.500.

Une autre base de données intéressante est NeoDatis ODB http://www.neodatis.org. NeoDatis ODB est open source LGPL et fonctionne avec Java et .Net.

Un dernier OODBMS (Object Oriented Database Management System) Open Source semble fournir des fonctionnalités et une maturité intéressantes, notamment des bindings pour C++ et Java : EyeDB, visible à l'adresse suivante http://www.eyedb.org/

session (informatique) modifier

En informatique et plus particulièrement en sécurité informatique, une session est une période délimitée pendant laquelle un appareil informatique est en communication et réalise des opérations au service d'un client - un usager, un logiciel ou un autre appareil.[3]

intégrité référentielle modifier

en informatique et plus particulièrement dans les bases de données relationnellesintégrité référentielle est une situation dans laquelle pour chaque information d'une table A qui fait référence à une information d'une table B, l'information référencée existe dans B.

Les système de gestion de base de données (SGBD) permettent de déclarer des règles de maintien de l'intégrité référencielle (contrainte). Une fois la contrainte déclarée, le SGBD refusera toute modification du contenu de la base de données qui violerait la règle en question et casserait l'intégrité référentielle.

Base de données relationnelle modifier

En informatique, une base de données relationnelle est une base de données dans laquelle les informations sont décomposées et organisées dans des matrices appellées relations ou tables conformément au modèle de données relationnel. Leur contenu peut ainsi être synthétisé par des opérations d'algèbre relationnelle telles que l'intersection, la jointure et le produit cartésien.

Une base de données est un ensemble d'information connexes enregistrées dans un dispositif informatique. Dans une base de données relationnelle les informations sont stockées sous forme de groupe de valeurs : les enregistrements. Un ensemble d'enregistrements relatif à un sujet forme une relation et est stocké dans une table. La base de données comporte une ou plusieurs tables et les sujets sont connexes.

Le modèle de données relationnel permet d'utiliser les opérateurs de l'algèbre relationnelle pour retrouver une information quelconque stockée dans la base de données, ainsi que les informations connexes.

Le modèle de données relationnel a été inventé en 1970 par Edgar F. Codd. En 2010 le modèle de données relationnel est utilisé dans la grande majorité des bases de données.

Histoire modifier

Le modèle de données relationnel a été inventé en 1970 par l'informaticien britannique Edgar F. Codd, et publié dans sa thèse A Relational Model of Data for Large Shared Data Banks.

Modèle relationnel modifier

Le modèle de données relationnel est basé sur la notion de relation : une matrice qui contient un ensemble de groupes de valeurs (les n-uplet) stockés dans les enregistrements d'une base de données. Une relation est stockée dans une table de la base de données.

Selon le modèle relationnel, il peut y avoir plusieurs relations connexes. Dans une base de données relationnelle chaque enregistrement d'une table contient un groupe d'informations relatives à un sujet et les différents sujets sont connexes. les liens existants entre les informations sont stockés dans les champs des enregistrements (composants des nuplets) sous forme de clé primaire et clé étrangère.

Les opérations d'algèbre relationnelle telles que l'intersection, la jointure ou le produit cartésien sont utilisées pour faire des rapprochements entre les enregistrements et créer de nouvelles relations à partir des relations enregistrées dans la base de données.

Une composante N d'un n-uplet est une clé primaire lorsque par nature la valeur de cette composante est différente pour chaque nuplet d'une relation, et que - pour une valeur donnée - il n'existe qu'un seul nuplet dans toute la relation dont la composante a cette valeur (absence de redondance).

Une composante N d'un n-uplet est une clé étrangère lorsque les valeurs de cette composante sont des références à une clé primaire. Il y a une situation d'intégrité référentielle lorsque toutes les valeurs d'une clé étrangère A correspondent à une valeur de la clé primaire référencée B.

Le schéma, c'est-à-dire le plan des relations, des clés et des références est créé par un ingénieur. Il vise à minimiser la redondance, et maximiser la cohérence. Les formes normales sont des modèles d'organisation du contenu des bases de données relationnelles.

Algèbre relationnelle modifier

algèbre relationnelle est une théorie de mathématiques et d'informatique proche de la théorie des ensembles.

Selon cette théorie, les informations sont classées dans des relations: des matrices content un ensemble de nuplets (un nuplet est un groupe de N valeurs). Des opérations permettent à partir d'une relation d'obtenir une autre relation ainsi que de combiner deux relations et obtenir une troisième relation.

Il existe huit opérateurs d'algèbre relationnelle.

  • Sélection: à partir d'un ensemble A, obtenir un ensemble B dont les valeurs des nuplets correspondent à des critères donnés.
  • Projection: à partir d'un ensemble A, obtenir un ensemble B dont les nuplets contiennent certaines composantes des nuplets de A.
  • Intersection: à partir des ensembles A et B, obtenir un ensemble C qui contient les nuplets présents à la fois dans A et dans B. voir aussi intersection (mathématiques)
  • Union: à partir des ensembles A et B, obtenir un ensemble C qui contient les nuplets présents dans A ou dans B. voir aussi union (mathématiques).
  • Différence: à partir des ensembles A et B, obtenir un ensemble C qui contient les nuplets présents dans A mais pas dans B. voir aussi différence.
  • Produit Cartésien: à partir des ensembles A et B, obtenir un ensemble C qui contient des nuplets qui sont la combinaison de tout les nuplets de A avec tout les nuplets de B. voir aussi produit cartésien.
  • Jointure: à partir des ensembles A et B, obtenir un ensemble C qui est le produit cartésien de chaque nuplet de A pour lesquel il existe des nuplets de B où la valeur de la composante M de A est identique à la valeur de la composante N de B.
  • Division cartésienne: à partir des ensembles A et B, obtenir un ensemble C, où la combinaison de chaque nuplet de B avec chaque nuplet de C (produit cartésien de B et C) existe dans A.

En pratique modifier

Un système de gestion de base de données (SGBD) relationnel et un logiciel qui permet de manipuler le contenu des bases de données relationnelles. Il permet en particulier de synthétiser n'importe quel lot d'informations contenues dans les différentes tables de la base de données en créant des matrices par application des opérations de l'algèbre relationnelle telles que la jointure, la sélection et la projection.

Ces SGBD résolvent sur demande (anglais query) des calculs utilisant des opérateurs d'algèbre relationnelle. SQL (sigle de Structured Query Language) est le langage informatique le plus couramment utilisé pour formuler des calculs d'algèbre relationnelle.

Les SGBD relationnels sont exploités à partir de d'autres logiciels par l'intermédiaire d'interface de programmation telles que ODBC ou JDBC. Ces interfaces permettent d'envoyer des requêtes sous forme de phrases en langage SQL et récupérer le résultat.

Les SGBD relationnels sont également utilisés pour ajouter ou supprimer du contenu dans la base de données, et vérifier que le nouveau contenu ne casse pas l'intégrité référentielle entre les clés, ou crée de la redondance.

selon l'architecture Ansi/Sparc, la manière dont les informations sont organisées dans un logiciel qui utilise le SGBD peut différer de la manière dont le SGBD présente les informations par l'intermédiaire de l'interface de programmation. Cette organisation peut différer de celle qui est utilisée par le SGBD pour stocker les informations sur un support informatique.

un SGBD est dit relationnel lorsque les informations sont présentées selon le modèle relationnel. Un SGBD orienté objet présente les informations sous formes d'objets, et un SBGD objet-relationnel peut présenter les informations alternativement sous formes de relations ou d'objets.

Les logiciels écrits en langage de programmation orientée objet utilisent parfois des composants logiciels de mapping objet-relationnel pour présenter le contenu d'une base de données relationnelles sous forme d'objets.

Vérifier qu'un produit est bien un SGBD relationnel modifier

Dans les années 1980, excédés par les dérives de certains éditeurs proposant des pseudo-systèmes de gestion de bases de données relationnelles, Edgar Frank Codd, auteur de la théorie des bases de données relationnelles, écrivit deux articles de vulgarisation dictant 13 règles permettant de vérifier si un SGBDR en est bien un. Elle est connue sous le nom de « 12 règles de Codd » (elles sont numérotées de 0 à 12, et c'est également un clin d'œil envers la douzaine de boulanger).

écriture latine en informatique modifier

L'alphabet latin a été le premier alphabet reconnu par les appareils informatiques. Dans les appareils informatique à chaque lettre corresponds un chiffre, et ce chiffre est manipulé par l'appareil. La transformation d'un chiffre en lettre et inversément se fait selon les tables de correspondance normalisées.

La norme ASCII, créée en 1961 définit les correspondances entre 96 caractères d'imprimerie et leur chiffre respectif. Parmi les caractères définis dans la norme, il y a les 26 lettres de l'écriture latine, en majuscule et minuscule, les chiffres de 0 à 9, et les divers signes de ponctuation qui permettent d'écrire des textes en anglais. Cette norme ne définit pas de correspondance pour les lettres avec diacritiques (accents).

La table de correspondance ISO 8859-1, aussi appellée ISO Latin est une des tables de correspondance définies par la norme ISO 8859. Créée en 1991 sur la base de la norme ASCII, Cette norme définit la correspondance entre 191 caractères d'imprimerie et leur chiffre respectif. Parmi les caractères il y a les 26 lettres de l'écriture latine, en majuscule et minuscule. La norme définit les chiffres correspondant aux lettres sans diacritiques ainsi que aux lettres avec diacritiques utilisées dans différentes langues de l'Europe de l'ouest tels que le français, l'allemand, l'espagnol, le danois ou l'islandais.

Les 16 tables de la norme ISO 8859 définissent la correspondance entre les lettres avec et sans diacritiques de différentes langues qui utilisent l'alphabet latin, ainsi que des langues utilisant les alphabets cyrillique, grec, arabe, hebreu et thaï. Ces normes font partie de la famille de norme Unicode qui définit les correspondances pour toutes les lettres dans quasiment tout les alphabets utilisés dans le monde.

Transaction (informatique), Transaction informatique modifier

en informatique, et particulier en technologie des base de données, une transaction est une interraction qui fait passer une base de données d'un état A à un état B à la suite d'une multitude d'opérations. L'interraction peut être pas exemple une réservation, un achat ou un paiement.

Les technologies des transactions permettent d'obtenir une suite d'opération qui soit à la fois atomique, cohérente, isolée et durable (ACID).

  • atomique: la suite d'opération est indivisible, en cas d'échec en cours d'opérations, la suite d'opération sera complétement annulée (rollback) quel que soit le nombre d'opérations déja réalisées.
  • isolée: lorsque deux transactions A et B sont exécutées en même temps, les modifications effectuées par A ne sont pas visibles par B tant que la transaction A n'est pas terminée (commit).
  • cohérente: le résultat de l'exécution d'une transaction doit être cohérent, même si chaque opération de la transaction exécuté séparément ne donne pas un résultat cohérent. Un résultat incohérent entraînera l'échec et l'annulation des opérations de la transaction.
  • durable: une transaction terminée ne peut pas être annulée.

La majorité des système de gestion de base de données du marché permettent de réaliser des transactions atomiques, cohérentes, isolées et durables.

Structured Query Language modifier

SQL (sigle de Structured Query Language) est un langage informatique normalisé qui sert à demander des opérations sur des bases de données. La partie langage de manipulation de données de SQL permet de rechercher, d'ajouter, de modifier ou de supprimer des données dans les bases de données.

En plus du langage de manipulation de données, la partie langage de définition de données permet de créer, et de modifier l'organisation des données dans la base de données, la partie langage de contrôle de transaction permet de commencer et de terminer des transactions, et la partie langage de contrôle de données permet d'autoriser ou d'interdire l'accès à certaines données à certaines personnes.

Créé en 1974, normalisé depuis 1986, le langage est reconnu par la grande majorité des systèmes de gestion de bases de données du marché.

Utilisation modifier

Le langage SQL s'utilise principalement de trois manières:

  • un programme écrit dans un langage de programmation donné utilise l'interface de programmation du SGBD pour lui transmettre des instructions en langage SQL. Ces programmes utilisent des composants logiciels tels que ODBC ou JDBC.
  • technique dite embedded SQL: des instructions en langage SQL sont incorporées dans le code source d'un programme écrit dans un autre langage.
  • technique des procédures stockées: des fonctions écrites en langage SQL sont enregistrées dans la base de données en vue d'être exécutées par le SGBD. Cette technique est utilisée pour les trigger - procédures déclenchées automatiquement sur modification du contenu de la base de données.

Syntaxe modifier

Les instruction SQL s'écrivent d'une manière qui ressemble à celle de phrases ordinaires en anglais. Cette ressemblance voulue vise à faciliter l'apprentissage et la lecture.[4]

Les instructions de manipulation du contenu de la base de données commencent par les mots clés SELECT, UPDATE, INSERT ou DELETE qui correspondent respectivement aux opérations de recherche de contenu, modification, ajout et suppression. Divers mots clés tels que FROM, JOIN et GROUP permettent d'indiquer les opérations d'algèbre relationnelle à effectuer en vue d'obtenir le contenu à manipuler.

Les instructions de manipulation des métadonnées - description de la structure, l'organisation et les caractéristiques de la base de données - commencent avec les mots clés CREATE, ALTER ou DROP qui correspondent aux opérations d'ajouter, modifier ou supprimer une métadonnée. Ces mots clés sont immédiatement suivies du type de métadonnée à manipuler - TABLE, VIEW, INDEX, ...

Les mots clés GRANT et REVOKE permettent d'autoriser des opérations à certaines personnes, d'ajouter ou de supprimer des autorisations. Tandis que les mots clés COMMIT et ROLLBACK permettent de confirmer ou annuler l'exécution de transactions.

La syntaxe de SQL fait l'objet de la norme ISO 9075. Cette norme laisse la possibilité aux producteurs de SGBD d'y ajouter des instructions spécifiques et non normalisées. Cette possibilité, ainsi que le niveau variable de respect des normes entraine des différences de dialectes entre les systèmes de gestion de base de données.[5]Ces différences font qu'un code source écrit pour un SGBD donné ne fonctionnera pas forcément avec un autre SGBD.

Langages apparentés modifier

Open Database Connectivity modifier

ODBC (sigle de Open Database Connectivity) est un logiciel middleware lancé en 1992. Il permet, par un procédé unique, qu'une application informatique manipule des bases de données qui sont mises à disposition par des systèmes de gestion de bases de données (SGBD) ayant des procédés différents.

Le logiciel Microsoft ODBC édité par Microsoft fonctionne sur les systèmes d'exploitation Windows. Des produits similaires édités par d'autres société existent pour d'autres systèmes d'exploitation tels que Unix et la plateforme Java.

Fonctionnalités modifier

ODBC comporte un registre des bases de données (source de données) disponibles depuis l'ordinateur de l'usager.

Une interface utilisateur permet à l'usager d'ajouter des bases de données au registre.

Une interface de programmation permet aux applications informatiques de l'usager de manipuler les différentes bases de données inscrites dans le registre. L'utilisation de l'interface de programmation permet automatiquement à une application de manipuler les bases de données mises à disposition par l'intermédiaire de la plupart des système de gestion de base de données (SGBD) du marché.

Pour chaque SGBD, un pilote informatique permet de manipuler les bases de données en utilisant l'interface de programmation propre au SGBD. Lorsqu'une demande de manipulation est faite par une application informatique, cette demande est transmise au pilote informatique correspondant. Le nom du pilote informatique ainsi que d'autres informations se trouvent dans le registre des sources de données.

Les pilotes pour les SGBD Access, FoxPro et SQL Server de Microsoft sont fournis avec ODBC. De nombreux éditeurs de SGBD fournissent les pilotes pour leurs produits.

Histoire modifier

En 1992, peu après la publication de la norme ANSI SQL-92, un consortium d'éditeurs de logiciels de base de données lance le projet d'une interface de programmation unique pour permettre d'exploiter les différents SGBD du marché en utilisant le langage SQL. Quelques mois plus tard, Microsoft, un des membres du consortium, met sur le marché un logiciel qui concrétise ce projet Open Database Connectivity.

A la même période, un autre consortium d'éditeurs de logiciels de base de données, le SQL Access Group édite un standard industriel relatif à la Call Level Interface (CLI). Le standard normalise l'interface de programmation de logiciels qui manipulent les bases de données.[6]

Le consortium X/Open, nouveau propriétaire, travaille activement à enrichir le standard CLI, tandis que Microsoft travaille à aligner son produit ODBC avec le standard. En 1999 Microsoft met sur le marché ODBC 3.0, un logiciel entièrement conforme au dernier standard CLI.

Produits apparentés modifier

Structured Query Language modifier

SQL (sigle de Structured Query Language) est un langage informatique qui fait l'objet d'une norme industrielle. Il sert à formuler des demandes d'opérations sur les bases de données. Utilisé avec ODBC, les demandes de manipulation sont alors formulées en langage SQL par une application informatique, puis transmises au SGBD à l'aide de ODBC.

Call Level Interface modifier

Call Level Interface (abr. CLI) est l'interface de programmation qui permet à une application informatique de manipuler les bases de données mises à disposition par un SGBD. Cette interface fait l'objet d'une norme industrielle. la norme est un condensé des fonctions minimales qu'une application informatique a besoin pour pouvoir manipuler une base de données. Depuis 1999 cette norme a été fusionnée avec la norme ISO/IEC 9075 relative au langage SQL.

L'interface est procédurale et peut être utilisée avec de nombreux langages de programmation de ce style. La norme mentionne les langages Ada, C, COBOL, Fortran, Pascal, PL/1 et MUMPS.[7]

Depuis 1999 (date de la mise sur le marché de ODBC 3.0), le logiciel édité par Microsoft ainsi les pilotes édités les d'autres sociétés pour leurs SGBD sont conformes à la norme ISO/IEC 9075.[8]

JDBC modifier

JDBC (sigle de Java Database Connectivity) est un logiciel édité par Sun Microsystems, qui permet à des applications informatiques écrites pour la machine virtuelle Java de manipuler des bases de données. C'est un produit concurrent et similaire à ODBC. Il permet également de manipuler des bases de données par l'intermédiaire de ODBC.

unixODBC et iODBC modifier

unixODBC et iODBC sont deux logiciels Open Database Connectivity, conformes à la norme ISO/IEC 9075, pour les systèmes d'exploitation Unix.

Références modifier

  1. (en)« Woodget Computing Inc. Object Capabilities in Databases »
  2. (en)« Achievement and weakness of object-oriented databases »
  3. « Grand dictionnaire terminologique - session »
  4. S. Sumathi et S. Esakkirajan, Fundamentals of Relational Database Management Systems, Volume 47 de Studies in computational intelligence, Springer, 2007, (ISBN 9783540483977)
  5. (en)« Comparison of the different SQL implementations »
  6. (en)SQL:1999: understanding relational language components, Jim Melton et Alan R. Simon, 2002, (ISBN 9781558604568)
  7. (en)« Open Group - Technical Standard - CLI »
  8. (en)« Microsoft - ODBC and the Standard CLI »

Cybercommunication - Communication médiée par ordinateur modifier

La cybercommunication, aussi appelée communication virtuelle, ou communication médiée par ordinateur, sont un ensemble d'activités de communication utilisant des dispositifs informatique.

La cybercommunication peut être visuelle, orale, ou écrite. Elle peut être de personne-à-personne, ou de masse, utilisée à des fin personnelles, professionnelles, commerciales, politiques, médiatiques ou éducatives.

Histoire modifier

Techniques modifier

La langue modifier

le oral-écrit, le bilinguisme, les smiley et les expressions

Cyberespace modifier

Cyberidentité modifier

Cyberculture modifier

e-commerce e-learning jeux en ligne chat courrier électronique voice-chat vidéo-conférence voice-mail forums

relations personnelles et de couple médias enseignement politique commerce jeux de société

cybercommunautés anonymat et cyber-identité

Architecture (informatique) - architecture informatique modifier

En informatiquearchitecture est la structure générale inhérente à un système informatique, l'organisation des différents éléments du système (logiciels et/ou matériels et/ou humains et/ou informations) et des relations entre les éléments. Cette structure fait suite à un ensemble de décisions stratégiques prises durant la conception de tout ou partie du système informatique, par l'exercice d'une discipline technique et industrielle du secteur de l'informatique appelée elle aussi l´architecture.

La structure d'un système informatique est représentée sous forme de graphiques tels que des organigrammes, des diagrammes de workflow ou des diagrammes entité-relation. Le diagramme peut concerner un logiciel, une pièce de matériel, un réseau informatique, un groupe de machines, un sous-système, voire un même la totalité du système informatique d'une organisation.

La structure représentée est une perspective, et dépends du point de vue adopté par son auteur en fonction des éléments qu'il recherche à mettre en évidence dans le graphique. Il peut par conséquent y avoir plusieurs diagrammes d'architecture pour un même système, tels que: architecture des informations, architecture métier, architecture applicative et architecture technique.[1]

Architecture is the fundamental organisation of a system embodied its components, their relationships to each other and to the environment, and the principles guiding its design and evolution.[1]

Etymologie modifier

Architecture est un mot très populaire en informatique. Il a connu un effet de mode dans les années 1980-1990 ou il était alors considéré comme un buzzword. Martin Fowler dans son livre Patterns of enterprise application architecture dit ceci:

« L'industrie du logiciel brille dans la déformation des mots, les étirant dans toutes les directions jusqu'à leur donner une myriade de sens subtilements contradictoires. Le mot architecture est un de ceux qui a le plus souffert de ce phénomène. Je suis tenté de dire que architecture est un de ces mots ronflants utilisé avant tout pour indiquer qu'on est en train de parler de quelque chose d'important.[2] »


"Architecture" is a popular term, yet different people use it for different things and different meanings. In the 1980's to 1990's it was close to become a buzzword.

The software industry delights in taking words and stretching them into a myriad of subtly contradictory meanings. One of the biggest suffered is "architecture". I tend to look at "architecture" as one of those impressive-sounding words, used to primary to indicate that we're talking about something that's important.

[2]

Histoire modifier

In 1946, when the EDVAC project was in progress, a spin-off resulted on a serie of machines introduced at Harvard, and baed on the Harvard architecture. [3]

Software architecture is much less mature than its sibling, computer hardware architecture. The common excuse for software architecture immaturity is its youth and uniqueness (in 2000). [4]

The study of software architecture emerged in the late 1980's. Since that time intensive research in the field has made software architecture an essential part of system design and construction.

Perry and Wolf published on software architecture as early as 1989. the publication on Shaw and Garlan'book Software architecture: Perspective of an emerging discipline on 1996 could be considered to mark the starting point of software architecture as a discipline within the broader field of software development.

La discipline modifier

L'architecture est une discipline de conception et de résolution théorique d'un problème informatique. Le travail de l'architecte - la personne chargée de créer une architecture - consiste à explorer l'éventail des besoins d'un client ainsi que l'éventail des moyens technologiques à disposition. D'identifier les points clés parmi les besoins du clients et d'y apporter une solution théorique. c'est-à-dire une description schématique (sous forme de diagrammes) d'une des solutions possibles pour répondre aux besoins du client.

Pour un problème donné il existe toujours plusieurs solutions. Une des activités de l'architecte est d'anticiper les qualités et les défauts des différentes solutions envisageables, et de proposer celle qui est le mieux adaptée aux besoins du client en fonction des points clés que celui-ci a relevé. Pour ceci l'architecte se base sur le savoir-faire, son expérience et les recommandations en rapport avec les différentes solutions envisageables.

L'architecture demande un important travail de communication avec les clients, les ingénieurs, les fournisseurs et les directeurs. Le principal travail de communication est l'écoute des besoins des clients et des recommandations des ingénieurs. Le résultat du travail de l'architecte sont des diagrammes, des plannings, des recommandations et des exemples qui expliquent le quoi, le pourquoi et le comment de la solution[3].

Information architecture is a foundation discipline describing the theory, principles, guidelines, standards, conventions and factors for managing information as a resource. It produce drawing, charts, plans, documents, designs, blueprints and templates, helping everyone make efficient, effective, productive and innovative use of all types of information.

[5]

system architecture can best be thought of as both a process and a discipline to produce efficient and effective information systems. it a process because a set of steps is followed to produce or change the architecture of a system. It is a discipline because a body of knowledge informs the people as of the most effective way to design.

a system is an interconnected set of machines, applications and network resources. System architecture unifies this set by imposing structure on the system and this structure align the functionality of the system with goals of the business.

[6]

non-functional requirements (performance), complexity (space for bugs), possible gap between proposed system and effective system, most of the above issue can be address very effectively by having a proper blueprint of the proposed software before it is actually built. This blueprint give us guidance, set up right right goals, tell us if we are going wrong somewhere, remind us priority, manage complexity of the system and most important serve as a communication tool. This blueprint is the software architecture.

Creating architecture involves a proper understanding of the problem and creation of an appropriate solution. that is meet the problem space as well as the solution space. The problem space include understanding customer needs as well as the domain, and the solution space include know-how related to the solution and technologies to make it possible to build a solution. The role of an architect is to do justice to all the stakeholders, while working independently and to come with an effective solution.

Understanding why, describing what and guiding how.

An architect is involved in a lot of communication activities, listening to the various stakeholders. An architect is expected to help the project manager with work breakdown, analysis, scheduling and risk analysis. An architect invest lot of time talking to customers, partners and vendors.

In fact, in the process of designing software architecture, identifying architectural drivers (key points) is the most critical step. After exploring the problem space, the architect identifies functional, non-functional and quality attributes of the system, based on his experience, making use of known guidelines and principles. [7]

[8]

[9]

Les vues modifier

La structure d'un système informatique - représentée sous forme de graphiques - est une perspective, et dépends du point de vue adopté et des éléments que le graphique met en évidence. Il peut par conséquent y avoir plusieurs diagrammes d'architecture pour un même système.[4]

un système est une collection de pièces et un ensemble de principes qui une fois mis ensemble forme une unité. unité qui peut être à son tour un élément d'une collection.

architecture d'entreprise est un point de vue tourné sur les politiques, les stratégies et les procédures opérationnelles propres à une organisation.

architecture des informations est un point de vue tourné sur l'organisation, le classement et la présentation des informations propres à une organisation en accord avec la manière dont les gens vont interpréter, retrouver ou modifier ces informations.

architecture applicative est une vue tournée sur l'organisation interne et le découpage en couches et modules du ou des logiciels du système informatique.[5]

architecture technique est une vue tournée vers les différents éléments matériels et l'infrastructure dans laquelle le système informatique s'inscrit, les liaisons physiques et logiques entre ces éléments et les informations qui y circulent.

architecture d'ordinateur est une vue tournée sur l'organisation des différents composants électroniques d'un appareil informatique.

  1. enterprise view point: which examines the system, and its environment in the context of the business requirement on the system, its purpose, scope and policies. It deal with aspects of the enterprise such as its organisational structure, that affect the system.
  2. the information view point. which focus on the informations on the system, how the information is structured, how it changes, information flow and the logical divisions between independant functions within the system are all dealt with the information view point.
  3. the computational view point. which focus on functional decomposition of the system into objects that interact at interfaces.
  4. the engineering view point. which focus on how distributed interactions between system objects is supported.
  5. technology view point, which concentrate on individual hardware and software components that make up the system.

Architecture des informations modifier

L'architecture des informations concerne la manière dont les informations sont organisées et aggrégées: ordre alphabétique, chronologique, taxinomie. Les manières d'accéder à ces informations, la compréhension qu'ont les lecteurs et comment ils manipulent et s'échangent les informations ainsi que l'organisation de la base de données qui contiendra les informations. L'architecture repose sur trois axes clés:

  1. le contexte: commercial, politique, et culturel qui entoure ces informations.
  2. le type d'informations: le format de données, la quantité, et les éventuelles structures existantes.
  3. les personnes : l'audience, les tâches des lecteurs / rédacteurs. leurs habitudes et leur expérience.[6][7]

Les sites web contenant de nombreuses informations, tels que les sites de e-commerce, les médias, ou les bases de connaissances ou les encyclopédies en ligne sont les premiers concernés par l'architecture des informations.

Architecture métier modifier

 
Architecture métier

L'architecture métier décrit les applications informatiques, les principales base de données du système informatique d'une institution ou d'une entreprise, les utilisations faites de ces éléments dans le cadre de l'activité de l'institution et leur alignement à l'organisation générale de l'institution. La vue fait ressortir les éléments historiques et en fin de vie, les interfaces avec des éléments appartenant à des tiers, ainsi que les possibilités d'ajouter des nouveaux éléments.[8]

Le diagramme d'architecture métier servira à guider la direction de l'organisation dans le choix de création de nouveaux éléments, et aidera les ingénieurs à créer des produits informatiques en ligne avec les activités et l'organisation générale de l'institution. Il permettra également d'informer les collaborateurs de l'institution sur son organisation générale, ses buts, sa stratégie, et les flux d'informations au sein de l'institution.[9]

a coherent whole of principles, methods and models that are used in the design and realisation of an enterprise's organisational structure, business processes, information systems and infrastructure.

Architecture is a process as well as a product. the product serve to guide managers in designing business processes and system developers in building applications in a way that is in line with business objectives and policies of the enterprise. The effect of the process reach further than the mere creation of the architecture product - the awareness of the stakeholders with respect to business objectives and information flow will be raised. [10]

business systems architecture describes the business systems, and principal information stores required to support the enterprise IT. It provides an initial prediction of the reuse or enhancement of current ("legacy") systems and informations and the development of new business systems. The BSA is used to guide the assignment of business activities, business systems, and macro views of interface to current systems and data. New systems intitatives are considered in the context of the BSA to ensure correct placement.

[11]

Architecture technique modifier

 
architecture technique

L'architecture technique est une vue tournée sur l'organisation logique de la plateforme informatique, c'est-à-dire les moyens techniques clés qui seront utilisés par tout les logiciels applicatifs. La vue contient le matériel informatique, les logiciels systèmes, les middlewares, ainsi que les réseaux de télécommunication et les relations entre ces différents éléments.[10]

Pour une entreprise ou une institution, le choix de l'architecture technique vise à maximiser les possibilités d'implantation de logiciel du commerce ainsi que de réalisation de logiciels sur mesure. Il vise également à rentabiliser l'utilisation du matériel et des logiciels déja acquis par l'institution.

Le plan d'architecture technique est souvent accompagné d'un planning et d'un budget des acquisitions, des ventes et des opérations de migration nécessaires pour aligner le système informatique avec le plan.[11]

Technical architecture describe and maintains the integrity of the hardware, software and infrastructure environment required to support the IT system - the platform.

The platform are all key services defined in IT architecture, that are available in the infrastructure for use by individual business systems.

The delivery of IT solutions, the planning and management of the technical environment, and the reaction to a changing IT landscape depend greatly on the definition of the technical architecture. Its responsibility is to ensure that the environment not only function correctly but to define how the structure functions.

Firms have made major investments in their IT resources in recent years. Optimizing the IT assets that a firm has deployed to run its business is accomplished by properly architecting the IT environment. namely by developing an enterprise architecture for all relevant assets, and then by implementing a roadmap for the proper realization of the architecture blueprint.

[12]

A technical architecture is a conceptual or logical design of the future computing environment required to support the business. It contains a graphical representation of computing hardware, system software, and communication networks and the relationships between these components. The goal of a technical architecture view is for a particular company to support a plug-and-play integration environment, one that flexibly allow for wrapping of commercial off-the-shelf software, existing legacy applications as well as custom developped software.


[13]

Architecture logicielle modifier

 
architecture logicielle

Les logiciels sont des systèmes, c'est-à-dire des collections de composants ou modules qu'un ensemble de principes et de caractéristiques réunit pour former un tout ayant une utilité précise. l'architecture logicielle est une vue tournée sur l'organisation interne et le découpage du logiciel en modules.

Dans les logiciels les caractéristiques communes concernent les interfaces, c'est-à-dire la connectique qui permet la communication entre les modules, les caractéristiques du matériel informatique et du système d'exploitation sur lequel le logiciel s'exécutera, ainsi que les caractéristiques du réseau informatique qui sera utilisé.[12]

Le diagramme d'architecture logicielle décrit quelle est la nature des différents modules du logiciel, quelles sont les responsabilités et les fonctionalités de chaque module, quelle machine va les exécuter, et quand. Il décrit également la nature des relations entre les modules, est-ce qu'il vont s'échanger des informations, est-ce qu'un module pilote l'autre, lui envoie des informations, ou lui fait des demandes[13]. En ingénierie informatique le diagramme d'architecture donne une première série de réponses sur comment sera le futur logiciel, avant le début du travail de programmation.

the software architecture of a program or computing system is the structures of the system, which comprise list of components, the externaly visible properties of those components and the relatinships among them.

application software are systems, this mean a collection of parts and a set of unifying principles and purposes that together makes the collection of parts form an unified whole with a single purpose. the system can itself form a part of another larger system.

A software systems is a system in which the parts and the realization of the unifying principles (as communication between the parts) are mostly of software elements. There are other elements that come into play, such as the hardware and operating system on top of which the software runs, and the network hardware that various elements on the system will use to communicate. Still, a software system is primarly concerned with elements that are constructed by writing source code.

the form and structure of the system is critical to the success of the organization developing the system.

in software development the architecture is a first set of responses to customer needs.

  1. what is the nature of the elements ? what is the significance of the separation ? do they run on separate processors ? do they run at separate times ?
  2. what are the responsibilities of the elements ? what is they do ? what is their function on the system ?
  3. what is the significance of the relations ? does it mean they communicate with each other, control each other, send data to each other, use each other

[14]

Architecture matérielle modifier

 
architecture matérielle

Le mot architecture matérielle est parfois utilisé pour désigner l'architecture du jeu d'instructions d'un processeur. L'architecture matérielle comprends toutes les caractéristiques générales, la conception, le choix et l'organisation des différents dispositifs électroniques des appareils informatiques (ordinateurs personnels, serveurs, assistant personnels, téléphones portables, consoles de jeu,...). L'architecture est fonction du type d'appareil, du client cible, de l'espace d'adressage - qui est fonction du nombre de bits utilisées pour les adresses mémoire, du système d'exploitation et du langage de programmation cible.

L'architecture matérielle est un premier élément de réponse sur comment obtenir le futur ordinateur, recherchant la performance tout en respectant les contraintes de coût, de consommation électrique et de fiabilité. Le choix de l'architecture est inspiré par le marché, en particulier par les logiciels applicatifs existants et pour lesquels l'appareil est destiné. La conception d'une architecture matérielle requiert la connaissance d'une large gamme de technologies concernant les compilateurs, les systèmes d'exploitation, les circuits logiques et l'isolation.

L'architecture du jeu d'instruction est le point de rencontre entre le matériel et le logiciel informatique. Selon son architecture, le jeu d'instruction peut être de type register-memory - chaque instruction peut être effectuée sur le contenu d'une adresse mémoire ou d'un registre - ou du type load-store - toutes les instructions sont effectuées sur des registres sauf les instructions load et store qui copient des informations de et vers une certaine adresse mémoire.[14]

Determinate what attributes are important for a new computer, then design a computer to maximize performance while staying within cost, power and availability constraints. This task has many aspects, including instruction set design, functional organization, logic design and implementation. The implementation may emcompass integrated circuit design, packaging, power and cooling. Optimizing the design require familiarity with a very wide range of technologies, from compilers and operating systems to logic design and packaging.

in the past the term computer architecture often refered only to instruction set design.

the instruction set architecture refer to the actual programmer visible instruction set, it serve as a boundary between the software and hardware. the three dimensions of instruction set architecture are:

  1. nearly all instruction sets are classified as general-purpose register architecture, where the operands are either registers or memory locations. The two popular versions are register-memory instruction set where memory address is part of many instructions. And load-store instruction set where only load and store instructions can access memory. All recent instruction set architectures are load-store.
  1. memory addressing
  2. addressing modes

The implementation of a computer has two components: organisation and hardware. the term organization include the high-level aspects of computer's design, such as memory system, the memory interconnect and the design of the internal processor (CPU, where arithmetic, logic, branching and data transfer instructions are implemented) .

requirement to consider to design a new computer are: target usage (as desktop, server, embedded), binary compatibility (mean using an existing instruction set), size of the address space, paged or protected memory. floating point processor, devices (as ATA, SCSI, PCI), target operating system, network support, and target programming languages.

functional requirements are inspired by the market. Application software often drive the choice of the requirement by determining how the computer will be used. [15]

les styles et patrons modifier

Les patrons d'architecture (anglais pattern) sont des modèles de référence de résolution des problèmes courants d'architecture. Ils sont utilisés comme source d'inspiration dans de nombreux produits informatique. L'héritage d'un patron se reconnait pas le style caractéristique du diagramme d'architecture du produit.

Dans le style à filtres et tubes une série de programmes sont reliés entre eux par des tubes. Le résultat de l'exécution d'un programme est transmit par le tube au programme suivant. Un programme donné n'a pas besoin d'attendre que le précédent à terminé le travail, et commence dès lors que des informations lui sont envoyés par le tube. Ce style est utilisé dans l'architecture de nombreuses applications de manipulation du son et de la vidéo[15].

Dans l'architecture de style client-serveur, l'application informatique est décomposée en deux sous-systèmes différents qui résident sur des ordinateurs différents. Les deux sous-systèmes communiquent selon des protocoles réseau normalisés[15].

Le patron modèle-vue-contrôleur est un modèle souvent utilisé dans l'architecture de l'interface graphique des logiciels. Il est fait de trois composants: le modèle, la vue et le contrôleur. Le contrôleur prends en charge les opérations effectuées par l'utilisateur à la souris et au clavier, les transforme en messages destinés au modèle et à la vue. Le modèle stocke les informations à traiter et envoye des messages à la vue lors de modifications. La vue réceptionne alors les messages et effectue les modifications nécessaires de l'interface graphique[15].

Dans une architecture en couches, les composants sont regroupés en sous-systèmes placés les uns au dessus des autres. Chaque composant d'un sous-système donné est en relation uniquement avec des composants des sous-systèmes placés immédiatement en dessus ou en dessous[15].

Dans le style dit architecture trois tiers, les composants sont regroupés en trois couches qui concernent respectivement l'affichage sur l'interface graphique, la logique et le stockage en base de données. Chaque couche peut résider sur un ordinateur différent[16].

architecture orientée services est souvent considérée comme un patron. Il est basé sur le concept du Enterprise Service Bus (abrégé ESB), une ligne de communication publique à laquelle se connectent à la demande différents logiciels fournisseurs et consommateurs de services.[17]

  • service oriented architecture
    • software as a service
    • mashup


  • plat de spaghettis

[16]

Frequently used architecture solutions are identified in litterature as architectural patterns. A pattern describe a higher-level of abstraction design artifact by describing a specific type of collaboration between a set of prototyical components playing well-defined roles, and helps our undestanding of complex systems.

[17]

Architectural patterns pertains to a well-established solutions to architectural problems in software engineering. An architectural pattern describes the elements and their constraints, and how elements are used together in order to solve the problem. The pattern is a structural organisation scheme for a system solving the problem

Pipes and filters pattern: a serie of processes connected by pipes. The output of a process serves as input for the next one. A process do not need to wait the previous process finishes, but can start processing input as soon as something's available. It is the model for many audio and video processing application, and is used for Unix commands.

Client-Server: show a clear demarcation between client and server, which reside in different nodes on the network. components interact through basic network protocols.

Model-View-Controler. is a popular way to organise GUI programs that need to display several different views of data. A controller take care of translating user input such as mouse movement and keystrokes into appropriate messages for the view, and changes to apply to the model. The model stores data and notifies the view when dats has changed.

Layered style: components are grouped into layers, and the components communicate only with other components on layers immediately below and above their layer.

[18]

A design pattern is a documented best-practice or core of a solution that has been applied successfully in multiple environments to solve a problem that recurs. [19]

Three-tier architecture is a common pattern which separate system into three distinct areas of behaviour found in almost every system. Presentation to user, business logic and data storage. each tier can reside on a different computer. [20]

Service oriented architecture if often seen as a design pattern. Its value lies in the fact it can abstract enterprise architecture using the concept of so-called enterprise service bus, a shared communication medium on which services may connect to and use in a plug-and-play manner.

[21]

Framework modifier

En programmation informatique, un framework est un ensemble de composants logiciels structurels, qui définissent les fondations ainsi que les grandes lignes de l'organisation de tout ou partie d'un logiciel (architecture). En programmation orientée objet un framework est typiquement composé de classes mères qui seront dérivées et étendues par héritage en fonction des besoins spécifiques à chaque logiciel qui utilise le framework.[18]

A framework is a partially complete software subsystem that is intended to be instantiated. It define architecture for a family of sub-systems and provide the basic building blocks to create them. It also define the places where adaptation for specific functionality should be made.

In an object-oriented environment a framework consist of abstract and concrete classes. The instanciation of a framework involves composing and subclassing the existing classes.

[22]

Description modifier

Un framework est un ensemble d'outils et de composants logiciels organisés conformément à un plan d'architecture et des design patterns. L'ensemble forme un squelette de programme. Il est souvent fourni sous la forme d'une bibliothèque logicielle, et accompagné du plan de l'architecture cible du framework[19].

Avec un framework orienté objets, le programmeur qui utilise le framework pourra personaliser les éléments principaux du programme par extension, en utilisant le mécanisme d'héritage: créer des nouvelles classes qui contiennent toutes les fonctionalités que met en place le framework, et en plus ses fonctionalités propres, créées par le programmeur en fonction des besoins spécifiques à son programme. Le mécanisme d'héritage permet également de transformer des fonctionalités existant dans les classes du framework.[20]

Un framework est concu en vue d'aider les programmeurs dans leur travail. L'organisation du framework vise la productivité maximale du programmeur qui va l'utiliser. Le contenu exact du framework est dicté par le type de programme et l'architecture cible pour lequel il est concu[19].

Inversion de contrôle modifier

Alors que les bibliothèques de classes sont typiquement passives: les opérations des classes sont exécutées sur demande du programme qui les utilise, les framework sont typiquement actifs: le déroulement des opérations dans un programme est dirigé par le framework qu'il utilise, par des mécanismes tels que les fonctions de rappel et les événements, selon le principe "ne m'appellez pas, je vous appellerais". L'inversion de contrôle fait partie de l'architecture typique d'un framework.[21]

Framework are active and exhibits "inversion of control" at run-time. Class libraries are typicaly passive. that is they are directed to perform work by other applications objects, in the same thread of control as those objects. In contrast, framework are active; that is, they direct the flow of control within an application via event dispatching patterns such as reactor and observer. The inversion of control in the runtime architecture of a framework if often refered to "don't call us, we'll call you"


[23]


A class library is a collection of programming tools (components) a developer may use when building an application.

The framework developer define the relationships between components, following a plan called framework architecture. which is often formalized in an architecture document. A framework developer typically organise basic framework functionalities into a class library, but this is not required. The type of application the framework supports dictate the components the framework contains and how they are integrated. For example the requirement and structure of an Internet web application are completely different from a traditional fat client application.

a framework contains a variety of tools, services and modules. the tools ans services provided by each framework will vary depending upon the goal of the framework and target type of application to be developed.

typical elements of a framework are: prototype classes and procedures, messaging, event logging tools, forms and data management, business objects, interface controls, menus, toolbar, buttons, security and error handling.

When you are creating a framework, you are creating a product that other developer will use to help them build an application. Your job as a framework developer is to make the application developer as productive as possible. [24]

A framework is a semi-complete application (skeleton), that programmers can customize to form complete application by inheriting from and instanciating classes of the framework. Inheritance enable the features of framework base classes to be shared selectively by subclasses. If a base class provides default implementation of its methods, application developers need only override those virtual methods whose behaviour does not meet their needs. Since a framework is a skeleton, it enable large scale reuse of software than can be achieved by reusing individual classes or stand-alone functions

[25]

  • inversion de contrôle




Un framework fournit un ensemble de fonctions facilitant la création de tout ou d'une partie d'un système logiciel, ainsi qu'un guide architectural en divisant le domaine visé en modules. Un framework est habituellement implémenté à l'aide d'un langage à objets, bien que cela ne soit pas strictement nécessaire : un framework objet fournit ainsi un guide architectural en divisant le domaine visé en classes et en définissant les responsabilités de chacune ainsi que les collaborations entre classes. Ces classes peuvent être subdivisées en classes abstraites.

Le déploiement à grande échelle de bibliothèques d'objets exige un framework ; celui-ci fournit un contexte où les composants sont ré-utilisés.

Si l'utilisation du terme bibliothèque est limitée à l'ensemble des fonctions du système, le terme de framework peut être employé par extension pour inclure également l'architecture logicielle préconisée pour cette bibliothèque (organisation en couches, utilisation du modèle MVC, etc), voire l'environnement de développement bâti autour (Microsoft .NET + Visual Studio, etc) même si celui-ci est capable de gérer différents frameworks.

On trouve différents types de frameworks :

  1. Framework d'infrastructure système : pour développer des systèmes d'exploitation, des interfaces graphiques, des outils de communication. (exemple : Framework .Net, Eclipse, NetBeans, Struts)
  2. Framework d'intégration intergicielle (middleware) : pour fédérer des applications hétérogènes. Pour mettre à dispositions différentes technologies sous la forme d'une interface unique. (exemple : Ampoliros avec ses interfaces RPC, SOAP, XML)
  3. Frameworks d'entreprise : pour développer des applications spécifiques au secteur d'activité de l'entreprise.
  4. Frameworks orientés Système de gestion de contenu

Les principaux avantages de ces frameworks sont la réutilisation de leur code, la standardisation du cycle de vie du logiciel (Spécification, développement, maintenance, évolution), ils permettent de formaliser une architecture adaptée au besoin de l'entreprise. Ils tirent parti de l'expérience des développements antérieurs.

Ces frameworks sont en quelque sorte des progiciels extrêmement souples et évolutifs.

Exemples modifier

Quelques exemples
Nom Usage Architecture cible Langage Auteur
.Net logiciel applicatif, application web, composant logiciel ASP.NET C#, Visual Basic .NET Microsoft
ActionScript Foundry application web Adobe Flex ActionScript et Java ServeBox
Apache Cocoon application web - servlet ? Java, XML Apache Software
Apache Struts application web Modèle-Vue-Contrôleur Java Apache Software
Catalyst logiciel applicatif Modèle-Vue-Contrôleur Perl ?
Cocoa logiciel applicatif Cocoa Objective C Apple
Django application web Modèle-Vue-Contrôleur Python ?
Dojo applet AJAX Javascript Fondation Dojo
FxEngine Framework traitement numérique du signal, plugin FxEngine C++ SMProcess
Grails application web Modèle-Vue-Contrôleur Groovy Graeme Rocher, Guillaume Laforge, Marc Palmer, Dierk Koenig et Steven Devijver
Hibernate persistance Java Persistance API Java (langage) JBoss
Jelix application web Modèle-Vue-Contrôleur PHP (communautaire)
MARF traitement du signal et des langues MARF - plugins Java Serguei Mokhov, Stephen Sinclair
Microsoft Foundation Class logiciel applicatif Modèle-Vue-Contrôleur C++ Microsoft
Ruby on Rails application web Modèle-Vue-Contrôleur Ruby David Heinemeier Hansson et
Rialto applet AJAX Javascript Cyril Balit, François Lion
Symfony application web Modèle-Vue-Contrôleur PHP Sensio Labs
TopLink persistance Java Persistance API Java Oracle Corporation
Zend application web Modèle-Vue-Contrôleur PHP Zend Technologies
Zope application web Zope Python ?

Les frameworks peuvent être classés selon le langage ou leur utilisation (OS, web, multimédia)


Syndrome du plat de spaghettis modifier

 
plat de spaghetti

En informatique, le syndrome du plat de spaghettis est une dégradation qui touche les systèmes informatiques trop fortement couplés, dans lesquels chaque composant est dépendant de nombreux autres composants, selon une organisation désordonnée et fortement entremêlée.[22]

L'origine de l'expression provient de l'analogie suivante: Un système informatique désordonné c'est comme une assiette de spaghettis: il suffit de tirer sur un fil d'un coté de l'assiette pour que l'enchevêtrement des fils provoque des mouvements jusqu'au coté opposé.[23]

Les origines modifier

Les origines de ce syndrome sur un logiciel sont: Une suite de modifications consécutives dans le même logiciel qui ont entraîné un acroissement du couplage et de la complexité. Le logiciel devient de plus en plus difficile, voire même impossible à comprendre. Les modifications sur le logiciel deviennent alors de plus en plus coûteuses en temps et en argent, et s'accompagnent d'une baisse de la qualité logicielle.[23] La programmation spaghetti est un style de programmation qui encourage et accélère l'apparition de ce syndrome dans les logiciels.

sur un système d'information d'une entreprise: Au cours de son existance, plusieurs composant ont été remplacés et le système d'information a évolué de manière désordonnée. Le divers composants (serveurs, logiciels) sont souvent dédoublés (plusieurs composant font le même travail selon des technologies différentes), et le fort couplage entraîne une baisse des performances et des pannes dues à des problèmes récurrents de communication, et rends risquées et coûteuses les opérations de migration.[24]

Les contre-mesures modifier

la réalisation d'un schéma d'architecture du système informatique permet de rendre visible l'important réseau de dépendance entre les composants.

Des opérations de refactoring, c'est-à-dire des modifications du code source d'un logiciel sans apporter de corrections ni de nouveautés sont effectuées en vue de restructurer le code source et ainsi prévenir ou guérir du syndrome du plat de spaghetti dans le logiciel.

la réalisation d'un schéma directeur du système d'information, une feuille de route des futures modifications du système assure l'organisation à long terme et évite l'apparition du syndrome.[24]

Par analogie au métier du génie civil, l'urbanisation d'un système d'information est l'étude des voies d'échange entre les différents composants d'un système d'informations. L'étude vise à améliorer l'organisation d'un système existant et permet de prévenir ou de guérir du syndrome du plat de spaghetti.[25]

l'utilisation d'un progiciel de gestion intégré, un logiciel unifié et modulaire qui traite de l'ensemble des processus opérationnels d'une entreprise (commandes, achats, facturation, salaire, planification,...) en lieu et place d'un réseau de logiciels disparates permet également de prévenir ou de guérir du syndrome.[26]

Notes et références modifier

  1. (en)Karl Eugen Kurbel, The Making of Information Systems: Software Engineering and Management in a Globalized World, Springer - 2008, (ISBN 9783540792604)
  2. (en)Martin Fowler,Patterns of enterprise application architecture, Addison-Wesley - 2003. (ISBN 9780321127426)
  3. (en)Varma Vasudeva,Software Architecture,Pearson Education India, (ISBN 9788131707494)
  4. (en)Karl Eugen Kurbel, The Making of Information Systems: Software Engineering and Management in a Globalized World, Springer - 2008, (ISBN 9783540792604)
  5. Col Perks, Tony Beveridge, Guide to enterprise IT architecture,Springer - 2003, (ISBN 9780387951324)
  6. Wei Ding et Xia Lin, Information Architecture, Morgan & Claypool Publishers - 2009, (ISBN 9781598299595)
  7. Louis Rosenfeld et Peter Morville,Information architecture for the World Wide Web,O'Reilly Media Inc. - 2002, (ISBN 9780596000356)
  8. (en)Col Perks et Tony Beveridge, Guide to enterprise IT architecture, Springer - 2003, (ISBN 9780387951324)
  9. (en)Marc Lankhorst,Enterprise Architecture at Work: Modelling, Communication and Analysis , Springer - 2009, (ISBN 9783642013096)
  10. (en)Andy Carmichael, Developing business objects, CUP Archive - 1998, (ISBN 9780521648257)
  11. Daniel Minoli,Enterprise architecture A to Z,CRC Press - 2008, (ISBN 9780849385179)
  12. (en)H. J. Reekie et R. J. McAdam, A Software Architecture Primer, Software Architecture Primer - 2006, (ISBN 9780646458410)
  13. Len Bass, Paul Clements, Rick Kazman, Software architecture in practice, Addison-Wesley - 2003, (ISBN 9780321154958)
  14. (en)John L. Hennessy - David A. Patterson et Andrea C. Arpaci-Dusseau, Computer architecture: a quantitative approach, Morgan Kaufmann - 2007, (ISBN 9780123704900)
  15. a b c et d (en)Frank F. Tsui et Orlando Karam, Essentials of software engineering,Jones & Bartlett Publishers - 2006, (ISBN 9780763735371)
  16. (en)Michael Jesse Chonoles et James A. Schardt,UML 2 for dummies,For Dummies - 2003, (ISBN 9780764526145)
  17. (en)Zoran Stojanovic et Ajantha Dahanayake,Service-oriented software system engineering: challenges and practices,Idea Group Inc (IGI) - 2005, (ISBN 9781591404279)
  18. (en)Nicolas Guelfi, Egidio Astesiano et Gianna Reggio, Scientific engineering for distributed Java applications, Springer - 2003, (ISBN 9783540006794)
  19. a et b Ken Chazotte,Build Your Own Framework with Visual FoxPro,Hentzenwerke - 2004, (ISBN 9781930919532)
  20. Douglas C. Schmidt et Stephen D. Huston,C++ Network Programming: Systematic reuse with ACE and frameworks,Addison-Wesley - 2003, (ISBN 9780201795257)
  21. Stephen D. Huston, James C. E. Johnson, Umar Syyid,The ACE programmer's guide: practical design patterns for network and systems programming, Addison-Wesley - 2004, (ISBN 9780201699715)
  22. « Les applications "spaghetti" »
  23. a et b (en)Penny Grubb et Armstrong A. Takang, Software maintenance: concepts and practice , World Scientific - 2003, (ISBN 9789812384263)
  24. a et b Nicolas Humeau, L'abécédaire des managers et consultants, Ed Liaisons Sociales - 2006, (ISBN 9782878806717)
  25. Club Urba SI,Pratiques de l'urbanisme des systèmes d'information en entreprise, Editions Publibook - 2003, (ISBN 9782748329421)
  26. Jagan Nathan Vaman,Pratiques de l'urbanisme des systèmes d'information en entreprise,Tata McGraw-Hill - 2007, (ISBN 9780070621077)

Composant logiciel modifier

En informatique, un composant logiciel est un logiciel destiné à être incorporé dans des applications, et qui est distribué dans le commerce séparément de celles-ci.

Clemens Szyperski définit un composant logiciel comme étant: une pièce de composition dont les interfaces et les dépendances au contexte sont contractuelles, définies et spécifiées. Un composant logiciel peut être distribué indépendamment et composé de composants tiers.[1]

Introduction modifier

L'idée de réutiliser dans un programme des morceaux de code source provenant d'un autre programme existe depuis les débuts de l'informatique en 1950.

Des études ont montré que 40% à 60% du code source d'un programme est réutilisable dans d'autres programmes, que 75% des fonctionalités d'un programme existent dans d'autres programmes et que seulement 15% du code source est unique et novateur. Le pourcentage de code source effectivement et potentiellement réutilisé va de 15% à 85%.[2]

La réutilisation de code source diminue les coûts de fabrication, la durée des travaux et accroit la qualité des logiciels. L'inadéquation des composants au besoin et l'absence de garanties de qualité sur le code source sont les principales barrières à la réutilisation.[2]

Typologie modifier

Une bibliothèque logicielle est un ensemble de fonctions ou d'objets en rapport avec un sujet particulier et réunis dans le même logiciel. exemple: calcul mathématique, manipulation de fichiers, compression de données.

Un widget est un composant logiciel qui anime un certain type d'élément visuel des interface graphique. exemple: bouton, zone de texte, barre de défilement.

Un pilote (anglais driver) est un composant logiciel qui assure l'utilisation d'une pièce de matériel informatique.

Un moteur de calcul est un composant logiciel qui effectue un travail de manière automatique. exemples: moteur de recherche, moteur de jeu, moteur de rendu, moteur de base de données.

Un plugin ou plugiciel est un composant logiciel destiné à apporter des nouvelles fonctionalités à un logiciel applicatif.

Un codec est un composant logiciel destiné à transformer une information numérique de et vers un certain format de données en applicant un procédé, par exemple de compression de données.

Un framework est un ensemble de composants logiciels destinés à donner à un logiciel une architecture. Le logiciel est alors construit par extension de l'architecture créée par le framework.

Histoire modifier

Le concept de composant logiciel est apparu en 1968. L'idée a commencé à prendre de l'ampleur dans l'industrie du logiciel à la fin des années 1980.[1]

Michel Ezran, dans son livre explique ce retard comme ceci: Le faible pourcentage de code source réutilisé provient d'un coté du fait que la technologie offre la possibilité de créer un logiciel à partir d'une feuille blanche. D'un autre coté, un aspect culturel fait que certains programmeurs ont tendance à voir leur travail comme une activité artistique et donc considérer que le fait de réutiliser du code source revient à créer un film de série B. Le syndrome du not invented here (pas créé par nous) est florissant dans l'industrie du logiciel, et soutenue le haut degré de liberté offert par la technologie.[3]

Selon une étude de l'université de Berkeley, la taille des systèmes d'exploitation (le type de logiciel le plus grand et le plus complexe du marché) est passé de 9Ko en 1972 à 1-30 Mo en 2000.

Les bibliothèques logicielles sont la plus ancienne forme de composant logiciel. Tout d'abord incorporées dans les langages de programmation comme PL/1 (1960). Elles ont été plus tard fournies en complément de ceux-ci dans les langages de programmation comme C (1970) et Modula-2 (1977), puis Java (1995). [2]

Technologie modifier

Une interface de programmation (abrégé API), est un point d'échange d'informations entre deux logiciels. Vu qu'ils sont destinés à être utilisés par d'autres logiciels, les composants ont tous une interface de programmation.

L'édition de liens est l'opération informatique qui consiste à relier entre eux les différents composants d'une application informatique en vue de leur utilisation.

  • L'édition de lien est dite statique quand celle-ci est réalisée au moment de la construction de l'application informatique, typiquement suite à la compilation. L'application est alors mise sur le marché avec tout ses composants incorporés. Les Bibliothèque standard de C sont utilisées en liaison statique.
  • L'édition de lien est dite dynamique quand celle-ci est réalisée au moment de l'exécution de l'application. Le moteur d'exécution (anglais runtime) recherche alors tout les composants nécessaires au fonctionnement de l'application. Comme leur nom l'indique, les Dynamic Link Library du système d'exploitation Windows sont utilisées en liaison dynamique.
  • L'édition de lien est dite tardive (late binding) quand celle-ci est réalisée après le démarrage de l'application, au moment ou le composant en question est effectivement utilisé, par exemple lorsque l'usager lance une opération qui nécessite le composant en question. Ce type de liaison est utilisé par les langages de programmation orientés objets.

DCOM, de Microsoft, JavaBeans de Sun Microsystems et CORBA de OMG sont des architectures relative à des composants logiciels destinés à créer des middleware à manipulation d'objets.

Bibliographie modifier

(en) Component software: beyond object-oriented programming

  1. a et b (en)Jerry Gao, H.-S. J. Tsao et Ye Wu, Testing and quality assurance for component-based software, Artech House - 2003, (ISBN 9781580534802)
  2. a b et c Johannes Sametinger,Software engineering with reusable components,Springer - 1997, (ISBN 9783540626954)
  3. Michel Ezran, Maurizio Morisio, Colin J. Tully, Practical software reuse, Springer - 2002, (ISBN 9781852335021)

Objet (informatique) modifier

En informatique, un objet est une unité logique, qui possède sa propre existance, encapsule ses caractéristiques, états et comportements[1] et qui, par métaphore, représente quelque chose de tangible du monde réel manipulé par informatique[2][3]. C'est le concept central de la programmation orientée objet.

En programmation orientée objet, un objet est créé à partir d'un modèle appelé classe ou prototype, duquel il hérite les comportements et les caractéristiques. Les comportements et les caractéristiques sont typiquement basées sur celles propres aux choses qui ont inspiré l'objet: une personne, un dossier, un produit.

homonymie modifier

  • En informatique un objet est un conteneur symbolique, qui représente un objet tangible, dont tout ou partie des caractéristiques, des comportements, du status d'existance sont reproduits par informatique.
  • Ce qui nous amène aux objets des langages de programmation. La corporéité des objets en informatique n'est ni bien établie ni bien comprise. Ce sont bien des objets concrets, manipulables et exécutables par une machine. Ils ont des effets dans le monde réel. Le virtuel ne doit donc être compris ni comme non concret, ni comme non réel. Les objets, en informatique ont un statut d'existence similaire aux objets qui impliquent une action déterminée non seulement quant au but, mais aussi quant aux procédures, méthodes et modes d'action: un plan d'action, par exemple ou une stratégie, etc... Ainsi, une rencontre sur l'Internet, pour être virtuelle, n'est pour autant démunie ni d'objectivité ni de réalité.

Histoire modifier

La notion d'objet a été introduite avec le langage de programmation Simula, créé à Oslo entre 1962 et 1967 dans le but de faciliter la programmation de logiciels de simulation. Avec ce langage de programmation, les caractéristiques et les comportements des objets à simuler sont décrits dans le code source.

Le langage de programmation orienté objet Smalltalk a été créé en 1972.

La programmation orientée objet est devenue populaire en 1983 avec la sortie du langage de programmation C++, un langage orienté objet, dont l'utilisation ressemble volontairement au populaire langage C.

Les premières bases de données orientées objet ont été commercialisées en 1993, et leur technologie n'est pas arrivée à maturité avant la fin du 20ème siècle.[4]

Le langage de programmation orienté objet Java a été créé par Sun Microsystems en 1995, et était avant tout destiné à la programmation des applications web, dont la technologie était en pleine évolution durant les années 1990.

Utilisation modifier

Parmi les diverses technologies qui gravitent autour des objets, il y a les langages de programmation orientés objet et les bases de données orientées objet. Outre en programmation, la notion d'objet est également utilisée en conception de logiciel.

Une base de données orientée objet permet le stockage permanent d'objets, à l'aide d'un système de gestion de base de données et un langage de programmation adaptés.

Le Object Management Group est un consortium international de normalisation et de soutien des technologies basées sur les objets.

Créée par le Object Management Group, CORBA est une norme relative à l'architecture de logiciels qui s'échangent des objets.

Créée par le consortium W3C, le Document Object Model est une norme relative à la manipulation des éléments d'une page web par un langage de programmation orienté objet comme par exemple Javascript.

La programmation orientée objet modifier

La programmation orientée objet est un style d'écriture du code source, propres à certains langages de programmation. Dans ce style le code source est une suite de descriptions de classes ou de prototypes, avec la description de leurs caractéristiques (propriétés) et de leur comportements (méthodes). Smalltalk, Java et C++ sont des langages de programmation orientés objet.

Terminologie modifier

Une classe est une description des caractéristiques d'une catégorie d'objets. Chaque objet créé à partir de cette classe est une instance de la classe en question.

Une méthode est une suite d'instructions qui manipule les caractéristiques et l'état d'un objet. Une propriété est une caractéristique propre à un objet.

Les méthodes, les propriétés et l'état d'un objet sont manipulables à partir d'autres objet uniquement si ceux-ci sont explicitement déclarés comme publics. c'est le mécanisme d´encapsulation.

héritage et polymorphisme: Une classe B peut être basée sur une classe A, et peut être la base d'une classe C, selon une relation parent-enfant.

  • Un objet créé à partir de la classe B aura toutes les caractéristiques (propriétés et méthodes) de la classe B ainsi que celles de la classe parent A, et un objet de la classe C aura toutes les caractéristiques de C, de B ainsi que celles de A. Ce mécanisme est appelé héritage.
  • Une caractéristique (méthode ou propriété) de la classe B peut faire doublon avec une caractéristique de la classe A. Dans un objet de la classe B cette caractéristique remplacera celle de A obtenue par héritage. Ce mécanisme est appelé polymorphisme.

Le reste modifier

Par exemple, on n'utilisera qu'un objet pour toutes les voitures d'un programme. Car les voitures ont toutes des caractéristiques communes : elles peuvent démarrer, avancer, reculer, etc.

Dans les langages objets ou orientés objets, (ex : Python, Java, C++...), un objet est créé avec le constructeur d'une classe (ex : l'instruction new). L'objet rassemble les champs et les méthodes qui sont ses membres.

Le langage est objet pur s'il permet de créer ses propres classes (ex : Java, Ruby), il est seulement orienté objet s'il ne permet que de manipuler des objets dont les classes existent déjà.

Par exemple, on peut utiliser les objets du tableur Excel avec Visual Basic for Applications, mais il faut en connaître l'existence et la syntaxe qui peut être complexe, par exemple :

  • sélection d'une feuille de calcul : sheets("Ma feuille").select
  • ajout de la valeur 10 à la cellule A4 : cells("A4")=10
  • ajout d'un champ à un tableau croisé dynamique en position ligne : PivotTables("Mon TCD").PivotFields("Mon champs").orientation=xlRowFields
  • ...

Voir aussi modifier

Programme (informatique) modifier

En informatique, un programme est une suite d'opérations pré-déterminées destinées à être exécutées de manière automatique par un appareil informatique en vue d'effectuer des travaux, des calculs arithmétiques ou logiques ou simuler un déroulement.

Un programme source (ou code source) est la forme sous laquelle un programme est créé par un programmeur: Un ensemble de textes décrivant formellement les opérations à effectuer; rédigés conformément aux règles d'un langage de programmation.

Le programme source est tranformé automatiquement en programme exécutable: une suite d'instructions machine qui peuvent être exécutées de manière automatique par un processeur - composant électronique moteur des appareils informatiques.

Des programmes sont présents dans tout les appareils informatiques: ordinateur, console de jeu, guichet automatique bancaire. Des programmes sont également présent dans des pièces de matériel informatique ainsi que de nombreux dispositifs électroniques: imprimante, modem, GPS, téléphone mobile, machine à laver, appareil photo numérique, décodeur TV numérique, injection électronique ou pilote automatique.

Introduction modifier

Un appareil informatique est une machine qui effectue des opérations sur des informations. Les opérations sont exécutées en suivant les instructions de programmes informatique, selon le modèle du calculateur universel imaginé par Alan Mathison Turing en 1936.

Un processeur est un composant électronique qui effectue des opérations en suivant des instructions. En 2009 les processeurs peuvent exécuter plusieurs centaines de millions d'instructions par seconde.

Un programme est typiquement composé d'un ensemble de procédures et de fonctions. Une procédure est une suite d'instructions destinées à réaliser une opération - par exemple trier une liste. Une fonction est une suite d'instructions destinées à produire un résultat - par exemple un calcul.

En mathématiques et en informatique, un algorithme est une suite d'opérations de calcul qui, réalisées de facon systématique, permettent d'obtenir un résultat. La suite d'opération peut être exécutée par un humain ou par un appareil informatique. Les programmes informatiques contiennent de nombreux algorithmes.

Un compilateur est un programme qui crée un programme exécutable en tranformant les instructions d'un programme source écrit dans un langage de programmation donné en les instructions machines équivalentes d'un processeur donné.

Un assembleur est un compilateur simplifié à l'extrême, qui traduit 1-1 des instructions machines écrites sous forme de mots clés en une suites de bits. Instructions écrites en langage d'assemblage, un langage dans lequel chaque instruction du code source corresponds à une et une seule instruction machine.

Un interprète est un programme qui exécute les instructions machines équivalentes aux instructions d'un programme source formulées dans un langage de programmation donné.

Un langage de programmation est un ensemble de règles d'écriture de programmes source - vocabulaire et règles de ponctuation - qui permettent d'exprimer des programmes qui pourront être tranformés en instruction machines à l'aide des algorithmes contenus dans un compilateur ou un interprète. Les instructions qu'un processeur exécute sont des suites de bits difficiles à comprendre et à manipuler par un humain, mais faciles à automatiser par des circuits électroniques. L'écriture du programme dans un langage de programmation donné est destinée à faciliter le travail du programmeur.

un logiciel est un bien composé d'un ou de plusieurs programmes, associés à un contrat de licence par lequel l'auteur octroie au détenteur le droit d'utiliser le programme.

Un bug est un défaut de construction dans un programme. Les instructions que l'appareil informatique exécutent ne correspondent pas à ce qui est attendu, ce qui provoque des dysfonctionnements et des pannes.

Terminologie modifier

  • Un microprogramme est un programme incorporé dans un appareil informatique. Il est souvent gravé sur une puce soudée dans l'appareil. Il s'agit souvent d'un programme de diagnostic pour vérifier le bon fonctionnement de l'appareil, ou un programme qui prend en charge les technologies en rapport avec cet appareil (exemple: protocoles réseau dans un routeur, interface IDE dans un disque dur...).
  • Un programme embarqué est le programme qui fait fonctionner de façon autonome un appareil électronique, ou comportant une partie électronique de contrôle (machine à laver, automobile). Il est également généralement gravé sur une puce.
  • Un programme applicatif — une application — est un programme pour assister une / plusieurs personnes — les utilisateurs — dans une de leurs activités. exemple: un programme applicatif de traitement de texte assiste le(s) utilisateur(s) dans la rédaction de documents.
  • Un programme système est un programme pour assister, coordonner, unifier des opérations routinières des programmes applicatifs tels que afficher une image, ou lire un fichier.
    • Le système d'exploitation est l'ensemble des programmes système central qui assure la coordination des différentes applications présentes sur l'ordinateur, ainsi la co-utilisation des ressources de l'ordinateur : mémoire, processeur, disque dur...
  • Une librairie, ou bibliothèque est un programme informatique qui regroupe un ensemble de fonctions utilitaires. Chaque fonction peut être exécutée à la demande et de manière isolée, par exemple par un programme applicatif.
  • Un composant est un logiciel qui concrétise un objet au sens de la programmation orientée objet, et qui est distribué en tant que pièce détachée.
  • hello world: (familier). Anglicisme qui signifie bonjour tout le monde et désignant un programme informatique trivial qui ne contient qu'une seule instruction : dire bonjour à l'utilisateur. Le code source de ce programme est souvent utilisé dans l'apprentissage de la programmation.

Histoire modifier

  • En 1842 la comtesse Ada Lovelace crée des diagrammes pour la machine analytique de Babbage, diagrammes qui sont considérés aujourd'hui comme étant les premiers programmes informatiques au monde.
  • En 1936, la publication de l'article fondateur de la science informatique On Computable Numbers with an Application to the Entscheidungsproblem[5] par Alan Mathison Turing allait donner le coup d'envoi à la création de l'ordinateur programmable. Il y présente sa machine de Turing, le premier calculateur universel programmable, et invente les concepts de programmation et de programme.
  • Le Harvard Mark I construit en 1944 est le premier appareil construit selon le principe du calculateur universel machine de Turing.
  • Dans les années 1950 les programmes informatiques étaient des inscriptions sur des cartes en carton perforé. La programmation consistait à percer des trous dans le carton. Ce travail fastidieux était souvent effectué par des femmes. Exécuter un programme consistait à soumettre une pile de cartes — préalablement triées — à un lecteur de carte. un appareil dont la mécanique est semblable à celle des piano mécaniques. Cette technique a subsisté jusqu'en 1980.
  • L'avènement de la programmation structurée en 1970 a grandement simplifié le travail des programmeurs et permis la création de programmes traitant des tâches plus nombreuses et plus complexes. Il en va de même avec l'avènement de la programmation orientée objet entre 1980 et 1990, Conformément à la phrase d'Edsger Dijkstra : « Les progrès ne seront possibles que si nous pouvons réfléchir sur les programmes sans les imaginer comme des morceaux de code exécutable ».
  • Le premier système d'exploitation a été créé en 1954. La même année sont apparus les premiers assembleurs, et le premier compilateur pour le langage FORTRAN.
  • C'est l'invention des mémoires à tore de ferrite en 1950 qui a marqué le début des programmes enregistrés, programmes qui sont chargés dans la mémoire avant d'être exécutés et qui utilisent la mémoire pour stocker des informations temporaires dans des variables comme cela se fait encore aujourd'hui.
  • De 1980 à 1990 la généralisation des programmes avec interfaces homme-machine graphique ont permis l'utilisation des programmes moyennant avec très peu de formation et contribué à la démocratisation de l'utilisation de l'ordinateur. Auparavant les programmes étaient utilisés par des professionnels.

Langage de programmation modifier

Un langage de programmation est un ensemble de règles qui permettent la rédaction de programmes sous une forme - le code source - qui pourra être transformé en suite d'instructions machine par un programme. Les instruction machines d'un processeur sont difficiles à comprendre et à manipuler.

La programmation consiste à créer des programmes, en parcourant le chemin qui va d'une idée - souvent vague - jusqu'à une suite d'instructions précises exécutées par une machine. L'obtention d'un processus métier, d'un algorithme, puis d'un code source sont trois jalons de ce chemin.[6] Les langages de programmation ont été créés dans l'optique de faciliter le travail du programmeur en raccourcissant le chemin qui va de l'idée au code source.[7]

Entre 1950 et 2000, plus de 50 langages de programmation sont apparus. chacun apportait un lot de nouveaux concepts, de rafinements et d'innovations. Jusque dans les années 1950 l'utilisation des langages de programmation était semblabe à l'écriture d'instructions machines. L'innovation des années 1960 à été de permettre une notation proche des mathématiques pour écrire des instructions de calcul. Les innovations des années 1970 ont permis l'organisation et l'agrégation des informations manipulées par les programmes - voir structure de données et structure de contrôle. Puis l'arrivée de la notion d'objet a influencé l'évolution des langages de programmation postérieurs à 1980. [8]

Cycle de vie modifier

Un programme est rédigé par un programmeur, sous forme de code source, puis transformé en instructions machines par un programme particuler - compilateur ou assembleur. Le programme exécutable - instructions machines - est destiné à une gamme de machines en particulier.

Le programme est ensuite distribué dans le commerce sous forme de logiciel. L'installation est la procédure qui permettra à l'acheteur du logiciel de mettre en place dans les emplacements prévus de son ou ses ordinateurs en vue de permettre son exécution.

Construction modifier

La création d'un programme - programmation - consiste à rédiger des algorithmes dans un certains langage de programmation. Les algorithmes permettront de faire réaliser des opérations de manière automatique et systématique par un appareil informatique. Un programmeur est par définition une personne qui rédige des programmes.

La programmation est un processus de résolution de problèmes, qui vise à obtenir une opération ou un résultat de manière automatique. Il existe presque toujours plusieurs solutions pour le même problème.[9]

En génie logiciel des études préliminaires permettent de préparer et simplifier le travail de programmation. Les résultat que doit donner le programme ainsi que sa construction générale sont préalablement analysés et inscrit dans des documents de spécification fonctionnelle et d'architecture. Après l'écriture du programme, celui-ci subit une série de tests en vue déceler et éliminer les bugs et vérifier que les automatismes créés par le programme sont conformes à ce qui est attendu.

Distribution modifier

Les programmes sont distribués dans le commerce sous forme de logiciel: un ensemble qui comprends outre le programmes les divers fichiers nécessaires à son fonctionnement, et le mode d'emploi. Il est vendu sous un contrat de licence qui précise quels sont les droits de l'auteur et de l'acheteur: qui peut utiliser le programme, qui peut le copier, et qui peut modifier le code source.

Les programmes sont obtenus par l'acheteur dans le commerce, enregistrés sur des mémoires de masse tels que CD-ROM ou DVD, ou alors par téléchargement (anglais download): récupération d'un programme enregistré sur un autre ordinateur par l'intermédiaire d'un réseau informatique.

Le programme exécutable est ensuite placé dans la machine pour laquelle il est prévu, qui l'exécutera sur demande autant de fois que nécessaire. L'installation est la procédure qui permettra à l'acheteur du logiciel de mettre en place dans les emplacements prévus de son ou ses ordinateurs en vue de permettre son exécution.

Les entreprises font souvent usage de programme pour réaliser de manière automatique l'installation de leurs programmes sur les différents ordinateurs de l'entreprise.

Utilisation modifier

Après avoir été installé, une simple opération (clic de souris, frappe au clavier) permet de lancer l'exécution des instructions du programme. Le programme est alors copié dans la mémoire de l'ordinateur, puis le processeur se mettra à exécuter les instructions. La première instruction s'appelle le point d'entrée.

L'exécution se termine une fois qu'une des conditions suivantes sont remplies:

  • Toutes les instructions ont été exécutées.
  • L'utilisateur a demandé d'arrêter le processus. Souvent quelques instructions de nettoyage sont exécutées avant l'arrêt du processus (exemple: suppression de données temporaires).
  • L'utilisateur a demandé de tuer le processus, c'est-à-dire de provoquer son arrêt immédiat.
  • crash, plantage (familier) : suite à une instruction A erronée (bug), l'instruction B est impossible à exécuter, cette situation provoque l'arrêt immédiat du processus.

Durée de vie modifier

Un programme dépends souvent d'autres programmes pour fonctionner, c'est un produit qui par nature ne s'use pas, n'évolue pas et ne se déteriore pas avec le temps. L'évolution rapide du marché informatique amène une évolution de modes, des standards et des besoins des usagers. Un programme cesse d'être utilisé par l'acheteur le jour ou il ne corresponds plus à ses attentes ou à son appareil informatique. Ceci amène les auteurs de programmes à adapter leur produits à l'évolution constante du marché, ce qui amène les auteurs de programmes qui dépendent de celui-ci à eux-aussi adapter leurs produits.

Les auteurs de programmes prolongent la durée de vie de leur produits en distribuant régulièrement des versions de leurs programmes adaptées aux nouvelles attentes et aux nouveaux produits informatique. Une version de programme est le programme tel qu'il était à un moment déterminé de son histoire, y compris toutes les adaptations et les améliorations qu'il a subi jusqu'à ce moment.

Notes et références modifier

  1. Bhuvan Unhelkar, Practical Object Oriented Analysis, Thomson Learning Nelson - 2005, (ISBN 9780170122986)
  2. David Parsons,Object Oriented Programming with C++ , Cengage Learning EMEA - 2002, (ISBN 9780826454287)
  3. Saba Zamir,Handbook of object technology,CRC Press - 1999, (ISBN 9780849331350)
  4. Stanley Benjamin Zdonik et David Maier, Readings in object-oriented database systems,Morgan Kaufmann - 1990, (ISBN 9781558600003)
  5. (en)On Computable Numbers with an Application to the Entscheidungsproblem
  6. Christian Piguet - Heinz Hügli, Du zéro à l'ordinateur: Une brève histoire du calcul, PPUR presses polytechniques - 2004, (ISBN 9782880744694)
  7. National Research Council (U.S.). Committee on the Fundamentals of Computer Science: Challenges and Opportunities, Computer science: reflections on the field - reflections from the field, National Academies Press - 2004, (ISBN 9780309093019)
  8. John C. Mitchell, Concepts in programming languages, Cambridge University Press - 2003, (ISBN 9780521780988)
  9. D. S. Malik, C++ Programming: From Problem Analysis to Program Design,Cengage Learning, 2008, (ISBN 9781423902096)

Voir aussi modifier

 

Liens internes modifier

Middleware modifier

En architecture informatique, un middleware (anglicisme) est une couche de logiciels qui crée un réseau d'échange d'informations entre différentes applications informatique. Le réseau est mis en oeuvre par l'utilisation d'une même technique d'échange d'information dans toutes les applications impliqués[1], souvent à l'aide de composants logiciels.

Les composants logiciels d'échange d'information assurent la communication entre les applications quels que soient les ordinateurs impliqués et quels que soient les caractéristiques matérielles et logicielles des réseaux informatique, des protocoles réseau, des systèmes d'exploitation impliqués.

Les techniques les plus courantes d'échange d'informations sont l'échange de message, l'appel de procédure distant et la manipulation d'objets distants.

Les middleware sont typiquement utilisés comme ciment pour relier des applications informatique disparates des système d'information des entreprises et des institutions.

Traduction modifier

Le terme middleware vient de l'anglais middle (du milieu) et software (logiciel). Diverses francisations ont été proposées :

Fonctions modifier

Les composants logiciels des middleware assurent les échanges d'informations entre différentes applications informatiques quels que soient les ordinateurs impliqués - les différentes applications sont typiquement exécutées par différents ordinateurs. Le middleware assure également les échanges quels que soient les caractéristiques logicielles et matérielles des réseaux informatiques impliqués. Les fonctions typiques des middleware sont:

  • localiser automatiquement l'origine et les/les destinataires. Le middleware utilisera des services de résolution de noms ou d'annuaire.
  • établir les communications entre les applications, en particulier ouvrir des sessions et effectuer automatiquement les procédures d'authentification.
  • Transmettre les information de l'expéditeur vers le ou les destinataires conformément aux protocoles et recevoir les informations transmises - sous réserve que le protocole soit respecté par l'expéditeur.
  • Et puis finalement terminer les communications, fermer les sessions et remettre le système informatique dans son état initial.[2]

Techniques modifier

L'échange de messages, l'appel de procédure et la manipulation d'objets tiers sont trois techniques prises en charge par le middleware, qui permettent à des applications informatique d'interragir, de coopérer et de se transmettre des informations.

échange de messages modifier

dans un middleware orienté message (message-oriented middleware). Les applications informatique communiquent par échanges de messages d'une manière similaire au courrier électronique: Une application informatique émet un message. Le message est alors transmis à l'application destinataire par les composants logiciels du middleware pendant que l'application émetteur effectue d'autres traitements (asynchronisme).

Le contenu du message est formaté par l'émetteur selon une convention pré-établie, ce de manière à pouvoir être traité automatiquement par l'application destinataire. le format de données XML est souvent utilisé pour les messages.[3]

Le message peut être transmis à une application choisie par l'expéditeur, une liste d'applications abonnées ou toutes les applications qui exploitent le middleware. Les messages sont triés par priorités et placés dans des file d'attente (queue) par les composants logiciels du middleware.[4]

WebSphere MQ de IBM, est un composant logiciel pour middleware orienté messages.

JMS est une interface de programmation pour les middleware orientés messages. OW2 JORAM est un des logiciels qui met en oeuvre cette interface.

appel de procédure distant modifier

Avec un middleware basé sur les appels de procédure distant (remote procedure call) des fonctions existantes dans une application informatique donnée peuvent être exécutées sur demande par d'autres applications.

L'appel de procédure à l'intérieur d'une application est un mécanisme logiciel ordinaire, qui peut être réalisé avec n'importe quel langages de programmation procédural. Il en va autrement quand cet appel est réalisé entre deux applications qui peuvent résider sur des ordinateurs différents.

Dans le mécanisme d'appels de procédure distant, les composants logiciels du middleware créent dans l'application appelante un composant logiciel souche (stub) dont les fonctions sont identiques à celles de l'application informatique appelée. Puis les appels de procédure effectués par l'application appelante sur la souche sont déviés par les composants logiciel du middleware vers l'application appelée dans laquelle les composants du middleware ont créé une autre souche semblable à l'appelant.

Le résultat de l'exécution de la fonction est ensuite transmis de l'appelé vers l'appelant par les mêmes mécanismes. Les composants du middleware utilisent le procédé de sérialisation (marshalling).[5]

le protocole réseau RPC de Sun Microsystems sert à effectuer des appels distants.

SOAP est une technique standardisée d'appels distants sur des serveurs web basée sur le format de données XML et le protocole réseau HTTP - protocole des serveurs web.

technique intermédiaire entre les appels de procédure distant et la manipulation d'objets, RMI est un composant logiciel pour effectuer des appels de procédure distant sur des objets en langage de programmation Java.

manipulation d'objets modifier

Avec un middleware à objets, une application informatique donnée peut manipuler les objets - de programmation orientée objet - d'une autre application. Ces manipulations induisent des traitements et des modifications d'informations dans l'application qui est propriétaire de l'objet en question.

La manipulation par une application d'objets lui appartenant est une opération ordinaire de programmation orientée objet. Les mécanismes nécessaires existent dans la totalité des langage de programmation orientés objet. Il en va autrement de la manipulation d'un objet appartenant à une autre application.

Le mécanisme est similaire à celui des composants de middleware à appel de procédure distant: les composants du middleware créent dans l'application informatique qui exploite l'objet (client) une souche (stub) de celui-ci. Puis les manipulations effectuées sur la souche sont déviées par les composants du middleware vers l'application à laquelle appartient l'objet (fournisseur). Les composants du middleware créent dans l'application fournisseur un objet qui contient l'objet manipulé ainsi que les instructions nécessaire pour recevoir les manipulations - le squelette (skeleton).

Le squelette est réalisé en utilisant les mécanismes d'héritage de la programmation orientée objet.[6]

DCOM de Microsoft est une technique de manipulation d'objets distants basée sur le protocole réseau RPC.

DCE est un middleware à manipulation d'objet du Object Management Group basé sur CORBA est une technique standardisée du même auteur.

Transactions modifier

En informatique une transaction est une suite d'opérations indissociables - qui doivent être réalisées entièrement ou pas du tout. Divers composants de middleware permettent la réalisation de transactions. Ils permettent en particulier l'annulation totale de la transaction en cas d'échec.[7]

CICS de IBM et DTC de Microsoft sont des middleware qui permettent la réalisation de transactions.

Utilisations modifier

dans l'architecture à Enterprise Service Bus, l'ensemble des applications informatique d'une entreprise sont reliés à un réseau réalisé à l'aide d'un middleware. Réseau appelé bus logiciel ou Enterprise Service Bus.[8]

ODBC est un ensemble de composants de middleware qui permettent à une application informatique de communiquer avec la plupart des systèmes de gestion de bases de données du marché. JDBC est un composant qui permet aux logiciels écrit en langage de programmation Java d'utiliser ODBC.

  • Enterprise Service Bus
  • Service Oriented Architecture
  • Cloud Computing
  • Sun NFS

Voir aussi modifier

introduction modifier

Un middleware, (anglicisme), aussi appelé logiciel médiateur ou intergiciel, est un logiciel servant d'intermédiaire de communication entre plusieurs applications, généralement complexes ou distribuées sur un réseau informatique. L'intergiciel offre des services de haut niveau liés aux besoins de communication des applications.

Des exemples d'intergiciels sont IAEETL, CORBA, HLA, file d'attente de message, ODBC, NEXUS ...

Les intergiciels sont des éléments essentiels dans les architectures multi-tier. On peut distinguer plusieurs catégories d'intergiciels :

Une tendance se dégage également vers l'intégration des intergiciels "objets distribués" avec les "moniteurs transactionnels" et former ainsi un ensemble rebaptisé pour l'occasion : serveur d'application. Ce cas se présente dans l'Intégration d'applications d'entreprise.

Vocabulaire modifier

Le terme middleware vient de l'anglais middle (du milieu) et software (logiciel). Diverses francisations ont été proposées et intergiciel semble le terme le plus répandu :

Description modifier

La double mission d’interfaçage de l'intergiciel est :

  • Le processus client ou serveur : la gestion des appels de fonctions de l’application ou la gestion du renvoi des résultats.
  • La mise en forme des données en vue de leur prise en charge par la couche transport.

Les deux missions sont assurées par deux composants distincts :

  • Le Protocole d'accès formaté (Format And Protocol, FAP) met en forme les différentes données au niveau du réseau.
  • L'interface de programmation (Application Programming Interface, API) se charge :
    • des connexions et déconnexions avec le serveur;
    • de la définition de l’environnement de la connexion (variables de contexte, zones tampon); et
    • du transfert des requêtes et de la réception des résultats (n-uplet par n-uplet ou de façon globale).

L’interface de programmation transmet au FAP les requêtes destinées au serveur qui va se charger de conditionner les données au transport par le réseau. Le FAP est propre à chaque protocole réseau. Le FAP du client reçoit la requête et la plie dans une trame destinée au transport sur le réseau. La FAP du serveur reçoit la trame, la déplie et transmet la requête à l’interface. Après traitement, le serveur renvoie le résultat de la requête à l’interface qui transmettra au client via les FAP du serveur, puis du client, soit par n-uplet de résultat, soit en entier.

Sources modifier

Anglophones modifier

Francophones modifier

Notes et références modifier

  1. (en)John Footen et Joey Faust, The Service-Oriented Media Enterprise: SOA, BPM, and Web Services in Professional Media Systems, Focal Press, 2008, (ISBN 9780240809779), chapitre 4 definition of a middleware
  2. (en) Amjad Umar, E-Business and Distributed Systems Handbook: Middleware Module, nge solutions inc - 2003, (ISBN 9780972741484)
  3. Daniel Serain et Iain Craig, Middleware and enterprise application integration: the architecture of e-business solutions, Springer - 2002, (ISBN 9781852335700), page 154
  4. (en)Gunjan Samtani et Marcus Healey,B2B integration: a practical guide to collaborative e-commerce, Imperial College Press - 2002, (ISBN 9781860943263)
  5. (en) Bill Blunden, Message passing server internals, McGraw-Hill Professional - 2003, (ISBN 9780071416382)
  6. (en) Gustavo Alonso, Web services: concepts, architectures and applications, Springer - 2004, (ISBN 9783540440086), page 55
  7. (en) Qusay H. Mahmoud, Middleware for communications, John Wiley and Sons - 2004, (ISBN 9780470862063), page 54
  8. InfoWorld, 16 juin 2003, Vol. 25, (ISSN 0199-6649), page 55

Informatique - activités en informatique modifier

L'informaticien est d'une manière générale une personne qui travaille dans le secteur de l'informatique. Il existe dans ce secteur diverses activités qui sont orientées vers la création de logiciels ou la maintenance d'un système informatique - matériel et logiciels.

Le secteur dépend également des activités des fabricants de semiconducteurs et de pièces détachées, des assembleurs, ainsi que des fournisseurs de télécommunication et des services d'assistance.

maintenance d'un système informatique modifier

La maintenance d'un système informatique consiste à la préparation d'ordinateurs tels que serveurs, ordinateur personnels ainsi que la pose d'imprimantes, de routeurs ou d'autres appareils. L'activité consiste également au dépannage des machines, à l'adaptation de leur configuration, l'installation de logiciels tels que système d'exploitation, système de gestion de base de données ou logiciels applicatifs, ainsi que divers travaux de prévention des pannes, des pertes ou des fuites d'informations telles que l'attribution de droits d'accès ou les sauvegardes régulières.

Le directeur informatique décide des évolutions du système informatique dans les grandes lignes, conformément à la politique d'évolution de la société qui l'emploie. Il sert d'intermédiaire entre les fournisseurs et les clients (employés de l'entreprise) ainsi que la direction générale. Il propose des budgets, des évolution, puis mandate des fournisseurs pour des travaux.

L'ingénieur système travaille à la mise en place et l'entretien du système informatique: La pose de matériel informatique, l'installation de logiciels tels que systèmes d'exploitation, système de gestion de base de données ou logiciels applicatifs et le réglage des paramètres de configuration des logiciels.

L'administrateur de bases de données est chargé de la disponibilité des informations contenues dans des base de données et la bonne utilisation des système de gestion de base de données - le logiciel qui met à disposition les informations et qui occupe une place stratégique dans de nombreuses entreprises. Il s'occupe des travaux de construction, d'organisation et de transformation des bases de données, ainsi que le réglage des paramètres de configuration du système de gestion de base de données et l'attribution de droit d'accès sur le contenu des bases de données.

Le responsable d'exploitation veille à la disponibilité constante du système informatique. Il effectue des tâches de sauvegarde régulière en vue de prévenir des pertes d'information, organise les travaux de transformation du système informatique en vue limiter la durée des mises hors service et attribue des droit d'accès en vue de limiter les possibilités de manipulation du système informatique au strict nécessaire pour chaque usager - ceci en vue de prévenir des pertes ou des fuites d'information.

création de logiciels modifier

le génie logiciel consiste à la création de nouveaux logiciels ainsi que la transformation et la correction de logiciels existants. En font partie la définition d'un cahier des charges pour le futur logiciel, l'écriture du logiciel dans un ou l'autre langage de programmation, le contrôle du logiciel créé, la planification et l'estimation du budget des travaux.

Dans une équipe d'ingénieurs, le chef de projet est chargé d'estimer la durée des travaux, d'établir un planning, de distribuer les tâches entre les différents membres de l'équipe, puis de veiller à l'avancée des travaux, au respect du planning et du cahier des charges. Le chef de projet participe également à la mise en place du logiciel chez le client et récolte les avis des usagers.

L'analyste-programmeur est chargé d'examiner le cahier des charges du futur logiciel, de déterminer la liste de les toutes les tâches de programmation nécessaire pour mettre en oeuvre le logiciel. Il est chargé de déterminer les automatismes les mieux appropriés en fonction du cahier des charges et des possibilités existantes sur le système informatique. L'analyste-programmeur est ensuite chargé d'effectuer les modifications nécessaires dans le logiciel, de rédiger ou de modifier le code source du logiciel et de vérifier son bon fonctionnement.

L'architecte des système d'informations est chargé de l'organisation et la cartographie des grandes lignes de systèmes informatiques ou de logiciels. Il réalise des plans d'ensemble, détermine les composants (logiciel et matériel) principaux de l'ensemble ainsi que les flux d'informations entre ces composants. Lors de la création de nouveaux logiciels il est chargé de découper le futur logiciel en composants, puis d'organiser et de cartographier le logiciel et les produits connexes.

Sous-traitance et infogérance modifier

Les entreprises et les institutions qui ont un système informatique de grande ampleur ont souvent une équipe d'informaticiens qui travaillent à la maintenance du système ainsi qu'à la création de logiciels pour le compte de l'entreprise. Cette équipe, dirigée par le directeur informatique peut faire appel à des éditeurs de logiciel ou des société de services et d'ingénierie informatique (abr. SSII) pour certains travaux. Par exemple lorsque l'équipe interne est trop peu nombreuse ou ne possède pas les connaissances nécessaires. Les entreprises peuvent également faire appel à des consultants - des employés d'une société tierce - pour prêter main forte ou conseiller leur équipe sur un sujet précis.

L'infogérance consiste à déléguer toute la maintenance du système d'information à une société de services. Ces services sont parfois réalisés offshore: des équipes délocalisées dans un pays lointain pilotent les ordinateurs à travers les réseaux informatique (télémaintenance).

  • assistance
    • helpdesk
  • les entreprises et leur activités.
  • le constructeur
  • éditeur de logiciel
  • SSII
    • l'ingénieur commercial
  • la revente
    • l'assembleur
  • le offshore
    • outsourcing
    • infogérance
    • le monitoring
    • la retro-ingénierie
  • la cybercriminalité
    • le pirate
    • le hacker
  • les domaines d'application
  • l'informatique appliquée
    • l'informatique de gestion
    • sciences, médical, banques, industrie, ...

Qualité logicielle modifier

En informatique et en particulier en génie logiciel, la qualité logicielle est une appréciation globale d'un logiciel, basée sur de nombreux indicateurs.

La complétude des fonctionalités, la précision des résultats, la fiabilité, la tolérance de pannes, la facilité et la flexibilité de son utilisation, la modularité, la simplicité, l'extensibilité, la compatibilité et le portabilité, la facilité de correction et de transformation, la performance, la consistance et l'intégrité des informations qu'il contient sont tous des facteurs de qualité.[1]

Un logiciel est un produit qui ne se déteriore pas. La qualité d'un logiciel dépends entièrement de sa construction, la qualité logicielle est par conséquence un sujet central en génie logiciel.

Indicateurs de qualité modifier

La complétude est la qualité d'un logiciel de répondre entièrement aux besoin des utilisateurs, les besoins explicitement demandés aussi bien que les besoin non exprimés (implicites). La tolérance de panne c'est la capacité d'un logiciel de fonctionner même en étant handicapé par la panne d'un des composants.

L'extensibilité c'est la qualité d'un logiciel qui peut être étendu moyennant peu de travail d'ingénierie. La compatibilité c'est la capacité d'un logiciel de fonctionner sur de nombreux environnements logiciels et matériels. La portabilité c'est la capacité d'un logiciel de pouvoir être modifié à moindre coût en vue de le faire fonctionner sur un environnement logiciel nouveau. La performance c'est la qualité d'un logiciel de délivrer des résultats rapidement et en utilisant peu de moyens matériels. La robustesse c'est la capacité d'un logiciel de continuer à fonctionner même en cas d'utilisation erronée.

La norme ISO 9126 définit 6 groupes d'indicateurs de qualité des logiciels:[2]

  • la capacité fonctionnelle. c'est-à-dire la capacité qu'ont les fonctionalités d'un logiciel à répondre aux besoins explicites ou implicites des usagers. En font partie la précision, l'interopérabilité, la conformité aux normes et la sécurité.
  • la facilité d'utilisation. Qui porte sur l'effort (le peu d') nécessaire pour apprendre à manipuler le logiciel. En font partie la facilité de compréhension, d'apprentissage et d'exploitation.
  • la fiabilité, c'est-à-dire la capacité d'un logiciel de rendre des résultats corrects quels que soient des conditions d'exploitation. En font partie la tolérance de pannes.
  • le rendement, c'est-à-dire le rapport entre la quantité de ressources utilisées (moyens matériels, temps, personnel), et la quantité de résultats délivrés. En font partie le temps de réponse et le débit.
  • la maintenabilité. Qui porte sur l'effort (le peu d') nécessaire en vue de corriger ou de transformer le logiciel.
  • la portabilité, c'est-à-dire l'aptitude d'un logiciel de fonctionner dans un environnement matériel ou logiciel différent de son environnement initial. En font partie la facilité d'installation et de configuration pour le nouvel environnement.


La complétude des fonctionalités, la précision des résultats, la fiabilité, la tolérance de pannes, la facilité et la flexibilité de son utilisation, la modularité, la simplicité, l'extensibilité, la compatibilité et le portabilité, la facilité de correction et de transformation, la performance, la consistance et l'intégrité des informations

La crise du logiciel modifier

Un phénomène de baisse des prix du matériel informatique et d'augmentation des prix du logiciel, accompagné d'une baisse de la qualité des logiciels a été identifié à la fin des années 1960 et nommé la "crise du logiciel". Cette crise s'apparente aujourd'hui à une maladie chronique de l'industrie du logiciel, dont les symptômes sont les suivants:

  • Les délais de livraison des logiciels sont rarement tenus, le dépassement de délai et de coût moyen est compris entre 50 et 70%.
  • La qualité du logiciel corresponds rarement aux attente des acheteurs, le logiciel ne corresponds pas aux besoins, il consomme plus de moyens informatiques que prévu, et tombe en panne.
  • Les modifications après coup des logiciels coûtent cher, et sont à l'origine de nouveaux défauts. Les adaptations sont bien souvent une nécessité du fait de l'évolution des produits et des attentes des utilisateurs.
  • Il est rarement possible de réutiliser un logiciel existant pour en faire un nouveau produit de remplacement, l'amortissement du coût de développement initial est ainsi rendu impossible.[3]

Auparavant minoritaire, le coût du logiciel en 1965 représentait 50% du coût total d'un système informatique. En 1985 la part du logiciel est de 80% et les coûts dus à la correction des défauts dans les logiciels (maintenance) représente jusqu'à 3 quarts du coût total d'acquisition, un excédent dû uniquement à la mauvaise qualité du logiciel lors de sa livraison.

L'influence des langages de programmation modifier

Certains indicateurs tels que la modularité sont soutenus par de nombreux langages de programmation. En effet un langage de programmation modulaire ou orienté objets poussera, voire même imposera aux ingénieurs une construction modulaire des logiciels. Une construction que tends à améliorer la maintenabilité et l'extensibilité des logiciels (évolutivité).

Raisons de la non-qualité des logiciels modifier

Un logiciel étant un bien immatériel, les seules représentations observables du logiciel sont le code source, l'interface utilisateur et la documentation (spécification). La quantité de code source (nombre de lignes) est rarement connu, ce qui entraîne souvent une sous-estimation de la complexité du logiciel.

Pour chaque module d'un logiciel il existe de nombreuses conditions d'utilisation. La combinaison des différentes conditions d'utilisation des différents modules d'un logiciel amène une explosion combinatoire, et lors de sa construction un logiciel n'est jamais contrôlé dans la totalité des conditions d'utilisation qu'il rencontrera durant son exploitation; ceci pour des raisons pratiques (coût et durée des travaux).

Une autre raison est qu'il n'y a pas de séparation claire entre un défaut mineur et majeur, et modification mineure ou majeure. Et l'effort de déterioration d'un logiciel n'est pas proportionnel à l'effort de construction. Un défaut mineur peut entrainer un incident majeur, et nécessiter une correction mineure. Dans l'incident du vol 501 d'Ariane 5, une correction mineure a suffi à éviter la destruction de la fusée. De même une modification mineure d'un logiciel peut le mettre hors d'usage; un phénomène largement exploité par les virus informatique. [4]

Pour être considéré comme produit de qualité par l'usager, un logiciel doit répondre aux besoins exprimés explicitement par l'usager aussi bien qu'aux besoins implicites (non exprimés). Or il arrive bien souvent que des besoins implicites des usagers ne sont pas connus des ingénieurs logiciels.[5]

Amélioration de la qualité modifier

En génie logiciel, l'abstraction, la dissimulation, la modularité, la structuration, l'uniformité, la complétude et la confirmabilité sont des principes destinés à améliorer la qualité du logiciel.

La modularité, c'est-à-dire la qualité d'un logiciel d'être découpé en de nombreux modules, permet l'abstraction et la dissimulation. Associée avec un couplage faible, elle vise à augmenter la maintenabilité du logiciel en diminuant le nombre de modules touchés par des éventuelles modifications, ainsi que la fiabilité en diminuant les dépendances entre les modules.

en jargon de programmation, un plat de spaghetti est un terme péjoratif pour désigner un logiciel au couplage trop fort et au code source difficile à lire, dans lequel toute modification même mineure demande un intense travail de programmation.

L'abstraction vise à diminuer la complexité globale du logiciel en diminuant le nombre de modules et en assurant l'essentiel. Elle peut également apporter une uniformité du logiciel qui augmente son utilisabilité en facilitant son apprentissage et son utilisation.

La dissimulation vise à séparer complètement les détails techniques du logiciel de ses fonctionalités selon le principe de la boîte noire, en vue d'améliorer sa maintenabilité, sa portabilité et son interopérabilité.

La structuration des instructions et des données rends clairement visible dans le code source les grandes lignes de l'organisation des instructions et des informations manipulées, ce qui améliore sa maintenabilité et laisse moins de place aux bugs.[6]

De nombreux langages de programmation soutiennent, voire même imposent un code source fait de structuration, de modularité et de dissimulation. C'est le cas des langages de programmation structurée et de programmation orientée objet.

Voir aussi modifier

  1. Carl-August Zehnder, Développement de projet en informatique, PPUR presses polytechniques - 1990, (ISBN 9782880741723), page 174
  2. Jean Menthonnex - CERSSI, Sécurité et qualité informatiques: nouvelles orientations, PPUR presses polytechniques - 1995, (ISBN 9782880742881), page 77
  3. « Cycle de vie du logiciel »
  4. Jacques Perrin, Conception entre science et art: regards multiples sur la conception, PPUR presses polytechniques - 2001, (ISBN 9782880744809), page 62
  5. Philippe Dugerdil, Impact des décisions informatiques: Introduction à l'informatique pour décideur non informaticien, PPUR presses polytechniques - 2005, (ISBN 9782880746100), page 201
  6. « Introduction au génie logiciel »