|
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid, suscipit, rerum quos facilis repellat architecto commodi officia atque nemo facere eum non illo voluptatem quae delectus odit vel itaque amet. |
Vous aimez l’innovation, l’agilité et le développement de logiciels libres. Vous maîtrisez l’ensemble de la chaine de production, de la programmation au déploiement, et vous avez une préférence pour l’automatisation et pour les architectures bien pensées qui facilitent l’exploitation. Vous appréciez le travail en équipe et êtes toujours prêt à aider vos collègues à améliorer leurs pratiques DevOps. Vous avez à cœur de maintenir les infrastructures en fonctionnement et de partager ce que vous avez fait avec des contributions aux logiciels libres, de la documentation et des présentations (internes ou publiques lors de conférences et évènements).
Depuis plus de 20 ans, nous développons des outils logiciels pour la gestion de connaissances et le traitement de données dans les domaines culturel ou scientifique. Nous nous appuyons exclusivement sur des logiciels libres, contribuons à leur développement, soutenons les communautés, et publions nos propres logiciels sous licence libre, comme par exemple le cadriciel CubicWeb. Acteur majeur du Web Sémantique en France, nous organisons chaque année la conférence SemWeb.Pro.
Mission
Au sein de notre équipe de développement, vous mettrez votre casquette de spécialiste du système et ferez appel à vos connaissances en matière de conception logicielle et d'architecture de systèmes d'information, pour contribuer à des outils comme data BnF, France Archives, datapoc MNHN, et bien d’autres (toutes nos réalisations ne sont pas accessibles publiquement sur le Web). Vous accompagnerez les développements pour garantir le bon fonctionnement des logiciels créés, des infrastructures utilisées et de notre cadriciel, CubicWeb.
Compétences attendues
- Environnement Unix/Linux (Debian si possible) ;
- Déploiement : Kubernetes, Docker ; kvm, virsh ; SaltStack ou Ansible ;
- Services divers : DNS, mail, backup, firewall, Postgresql, Rancher, Prometheus, GitLab, etc. ;
- Utilisation d'un gestionnaire de version distribué, par exemple Mercurial ou à défaut Git ;
- Utilisation d’une forge logicielle, par exemple Heptapod ou à défaut GitLab ;
- Goût pour l’automatisation, la reproductibilité et l’efficacité ;
- Bienveillance dans la communication et les relations inter-personnelles.
Compétences appréciées
- Python ; API REST ; HTML5 ; variété appréciée (will perl go and rust in peace?) ;
- Méthodes agiles, autonomie et capacité à travailler en équipe ;
- Esprit de synthèse et compétences rédactionnelles ;
- Anglais dans un contexte informatique et technique ;
- Pédagogie et capacité à expliquer simplement des concepts complexes
- Goût pour l'enseignement ou la formation.
Profil
Ingénieure / Ingénieur ou équivalent. Expérience souhaitée : 2 ans. Intérêt pour les contributions aux logiciels libres.
Poste
CDI Ingénieur Cadre au forfait – Rémunération selon profil (entre 35 et 45 k€ bruts annuels) – Basé à Paris de préférence, mais Toulouse possible – Déplacements nationaux à prévoir – Convention « Syntec ».
Postulez !
Envoyez votre candidature (CV + lettre de motivation, format PDF ou HTML) à personnel@logilab.fr
Les lettres de motivation, même courtes, écrites spécifiquement pour nous sont toujours très appréciées. |
Vous détestez la programmation logicielle ? Cette annonce n’est pas pour vous ! Vous ne comprenez pas l’intérêt de publier des logiciels sous licence libre et ouverte ? Cette annonce n’est pas pour vous ! Vous voulez un travail dans lequel vous appliquerez toujours les mêmes recettes pour obtenir les résultats qui vous sont demandés ? Cette annonce n’est pas pour vous ! Vous appréciez la concurrence entre collègues et le travail en solitaire ? Cette annonce n’est pas pour vous ! Vous aimez manipuler les gens et vous attribuer leurs réussites ? Cette annonce n’est pas pour vous !
Si vous êtes arrivé jusqu’à ce paragraphe, nous pouvons commencer à parler sérieusement... Développement informatique, logiciel libre, données ouvertes, méthodes agiles, partage de connaissances, acquisition de compétences depuis la base de données jusqu’au navigateur Web, programmation en groupe, soutien par les pairs, environnement bienveillant, notre équipe a besoin de vous !
Depuis plus de 20 ans, nous développons des outils logiciels pour la gestion de connaissances et le traitement de données dans les domaines culturel ou scientifique. Nous nous appuyons exclusivement sur des logiciels libres, contribuons à leur développement, soutenons les communautés, et publions nos propres logiciels sous licence libre, comme par exemple le cadriciel CubicWeb. Acteur majeur du Web Sémantique en France, nous organisons chaque année la conférence SemWeb.Pro.
Mission
Au sein de notre équipe de développement, vous ferez appel à vos connaissances en matière de conception logicielle et d'architecture de systèmes d'information, en utilisant Linux, Python et TypeScript, pour créer des outils comme data BnF, France Archives, datapoc MNHN, et bien d’autres non accessibles sur le Web.
Compétences souhaitées
- Programmation avec TypeScript ou des langages fonctionnels à typage fort (e.g. Haskell), React, et des bibliothèques de visualisation graphique dans le navigateur ;
- Programmation avec Python en environnement Unix / Linux, utilisation du typage progressif et des coroutines asynchrones ;
- Publication Web : HTML5 / CSS3, REST / HATEOAS ;
- Utilisation d'un gestionnaire de version distribué, par exemple Mercurial ;
- Utilisation d’une forge logicielle, par exemple heptapod ;
- Méthodes agiles, autonomie et capacité à travailler en équipe ;
- Esprit de synthèse et compétences rédactionnelles ;
- Anglais.
Connaissances appréciées
- Web sémantique : RDF, OWL, SPARQL, JSON-LD, API hypermédia ;
- Stockage de données : PostgreSQL, Fuseki, Virtuoso ;
- Déploiement : Docker, Kubernetes ;
- Administration système Linux (Debian si possible).
- Pédagogie et capacité à expliquer simplement des concepts complexes
- Goût pour l'enseignement ou la formation
Profil
Ingénieure / Ingénieur ou équivalent. Expérience souhaitée : 2 ans. Intérêt pour les logiciels libres.
Poste
CDI Ingénieur Cadre au forfait – Rémunération selon profil (entre 34 et 44 k€ bruts annuels) – Basé en
région parisienne ou toulousaine – Déplacements nationaux à prévoir – Convention « Syntec ».
Postulez !
Envoyez votre candidature (CV + lettre de motivation, format PDF ou HTML) à personnel@logilab.fr
Les lettres de motivation, même courtes, écrites spécifiquement pour nous sont toujours très appréciées. |
Retrouvez Logilab dans une conférence, un salon, ou plus simplement un de nos articles.
Les premières journées professionnelles du Web Sémantique auront lieu les 17 et 18 janvier 2011 à Paris. Une journée de conférence et une journée de tutoriels pour faire se rencontrer les professionnels du Web Sémantique, à savoir les membres de la communauté scientifique et les industriels désireux de mettre en oeuvre ces nouvelles techniques. Inscription sur SemWeb.Pro.
Ci-dessous, une liste d'articles publiés par des membres de Logilab dans des revues ou lors de conférences :
|
Nos domaines d'expertise
Gestion des connaissances
La gestion des connaissances recouvre ce qui concerne la création,
l'acquisition, la manipulation, le traitement, la transformation et la visualisation des connaissances. En particulier, on peut citer la veille technologique, l'automatisation des processus de travail, la capitalisation et l'interrogation des connaissances, etc.
La plupart des problèmes de rédaction et de travail collaboratifs peuvent être abordés et résolus dans le cadre plus général de la gestion des connaissances. En savoir plus.
Web sémantique
Le web sémantique, aussi nommé web des données,
prolonge le web des documents en identifiant les données unitaires par des URL et en les échangeant via le protocole HTTP en respectant des vocabulaires standardisés. Il en résulte une forme de base de données mondiale, au sein de laquelle l'effet de réseau joue à plein, de telle sorte que la valeur des données dépend des liens qui les associent aux autres données disponibles. Depuis sa création, Logilab a oeuvré pour l'avènement du Web sémantique avec le développement d'outils (CubicWeb), la réalisation de projets phares (data.bnf.fr ou encore France Archives) et la diffusion des connaissances.
Tous les ans, Logilab organise semweb.pro, rendez-vous devenu incontournable des membres de la communauté, des sociétés innovantes et des industriels désireux de mettre en œuvre les nouvelles techniques du Web Sémantique.
Vous pouvez retrouver les archives des éditions précédentes sur le site dédié.
Informatique avancée et scientifique
Les ingénieurs de Logilab ont la culture scientifique nécessaire pour collaborer efficacement avec les ingénieurs des bureaux d'études et des laboratoires de recherche qui souhaitent déléguer la réalisation des tâches informatiques pour se concentrer sur la modélisation et la simulation des phénomènes.
Nos outils
Logilab a fait le choix d'un nombre limité d'outils et de techniques afin de pouvoir développer et maintenir une expertise forte. Ces outils et techniques sont complémentaires et couvrent le spectre fonctionnel du domaine logiciel :
- langage de programmation Python et ses bibliothèques,
- langage de programmation TypeScript et cadriciel React (pour les applications client dans le navigateur),
- base de données PostgreSQL,
- bases de graphes Virtuoso ou Fuseki,
- cadriciel applicatif CubicWeb,
- système d'exploitation Debian GNU / Linux,
- conteneurs Docker,
- orchestrateur Kubernetes,
- gestionnaire de versions Mercurial
- outil de gestion et d'orchestration de serveurs SaltStack.
Logiciel Libre
Dans la mesure du possible, Logilab développe, utilise, adapte et contribue aux Logiciels Libres. Logilab et ses experts participent au large mouvement du Logiciel Libre depuis la généralisation d'Internet au milieu des années 90.
Offre libre
L'AFUL, qui a pour principal objectif de
promouvoir les logiciels libres ainsi que l'utilisation des standards ouverts, a attribué à Logilab la note "A" - la plus élevée - pour l'offre CubicWeb.
Techniques
Génie Logiciel
Le génie logiciel est le métier principal des experts de Logilab.
Ils en ont une connaissance étendue et savent faire les bons choix lors des phases de conception, en amont de la programmation, en s'appuyant sur des aspects théoriques et sur l'expérience acquise au cours de plusieurs années consacrées à la production logicielle. Unified Modeling Language et méthodes
agiles comptent parmi les techniques
utilisées.
Intelligence artificielle - Mathématiques
Les experts de Logilab ont tous une formation d'ingénieur qui leur permet d'aborder les problèmes concrets que posent les différents domaines d'application, avec le recul qu'apportent de solides bases théoriques. Logique, réseaux de neurones, statistiques, agents intelligents, reconnaissance des formes, apprentissage, traitement d'images, théorie des langages, réseaux sémantiques, traitement du signal, etc. sont autant d'outils à leur disposition pour construire la solution la plus adaptée à un problème. |
Nos coordonnées
Logilab développe des solutions logicielles, et propose des services et des formations de haut niveau dans les domaines de l'informatique scientifique et de la gestion de connaissances, en utilisant des logiciels libres et méthodes agiles.
- Téléphone : (+33) 1 45 32 03 12 / (+33) 6 73 88 04 56
- Courriel : contact@logilab.fr / formation@logilab.fr
Nos bureaux
Paris
104 boulevard Louis-Auguste Blanqui
75013 Paris
France
Métro : Glacière (ligne 6)
Toulouse
25 allée Jean Jaurès
31000 Toulouse
France
Métro : Jean-Jaurès (lignes A, B)
Téléphone : (+33) 5 62 17 16 42

|
Logilab gère les données de la Bibliothèque Nationale de france Logilab a développé sur la base de CubicWeb le site data.bnf.fr, pour la Bibliothèque
nationale de France, mettant à disposition tout un ensemble d'informations fusionnées et cohérentes sur les
œuvres et les auteurs, et ce, aux standards du Web et du Web sémantique.
Ces informations sont issues de
différentes bases internes à la BnF et ont été liées à des sources de données externes, comme DBpedia ou
Geonames, afin d'insérer les données du site au cœur du Web sémantique et d'enrichir contextuellement les
éléments présentés. Le serveur applicatif est centré sur le modèle des informations manipulées et contient
de nombreuses fonctionnalités pour importer des jeux de données issus de différentes sources (catalogues
internes), de tisser des liens entre les éléments issus de ces sources ainsi qu'entre ces éléments et des bases
publiques externes telles que DBpedia, Geonames ou MusicBrainz.
Ces fonctionnalités s'appuient sur des
algorithmes d'alignement, de calcul de distance intertextuelle, ou de classification, choisis et validés par
Logilab dans le cadre du projet.
Les informations fusionnées ainsi obtenues sont ensuite publiées dans un format permettant leur exploration avec un navigateur (HTML ou vues spécialisées comme des frises chronologiques ou des cartes) et
dans des formats permettant la réutilisation des données (notamment RDF et JSON).
Une des étapes les plus importantes de cette prestation a été la conception d'un modèle de données
(une ontologie) permettant de décrire l'ensemble des informations à réunir dans l'application, en fonction
des besoins actuels, des besoins imaginés pour le futur et des fonctionnalités souhaitées. La plateforme
CubicWeb présente ici l'énorme avantage de mettre le modèle de données au cœur de la solution et d'offrir
tout un ensemble d'outils permettant de le faire évoluer de manière sécurisée. |
Article publié en 2001 Se libérer de la dépendance envers éditeurs et prestataires
Le système informatique est aujourd'hui un élément indispensable au fonctionnement de la grande majorité des entreprises, organisations et administrations. Or les éditeurs et prestataires informatiques sont en fait les véritables maîtres de ces infrastructures car ils maintiennent leurs clients dans une dépendance excessive que ces derniers ne peuvent briser qu'au prix d'efforts et de dépenses importantes. Les éditeurs et prestataires tirent parti de cette dépendance. Ils imposent à leurs clients des tarifs élevés et limitent leurs dépenses liées à l'innovation et à la qualité, qui ne sont plus des facteurs déterminants dans la course à l'obtention de nouveaux clients ou à la satisfaction des clients existants.
Le Logiciel Libre (en anglais free software) est une nouvelle approche de la réalisation et de la distribution de logiciels. En redonnant aux utilisateurs le plein contrôle de leur système d'information et leur pleine capacité à choisir parmi l'éventail des prestataires et des éditeurs, le Logiciel Libre promet d'avoir un impact important sur l'industrie informatique en général et la production de logiciel en particulier.
Nous étudions ici, en tant qu'un acteur industriel, à la fois prestataire et éditeur, ce qu'est le Logiciel Libre et comment en faire un axe majeur de sa stratégie d'entreprise.
Qu'est-ce que le Logiciel Libre ?
Libre s'oppose à propriétaire
Un logiciel libre s'acquiert comme tout autre bien. La seule différence est que les conditions d'acquisition sont inhabituelles et peuvent prêter à confusion, souvent par méconnaissance du sujet.
Les conditions liées à l'acquisition d'un logiciel concernent son obtention, son utilisation, l'accès à son code source, sa modification, sa copie et sa redistribution.
En général, les logiciels propriétaires doivent être achetés et sont d'utilisation restreinte (nombre d'utilisateurs simultanés, nombre de poste, durée, etc.). Il est interdit d'accéder à leur code source, interdit de tenter de les modifier et interdit de les copier ou de les redistribuer sous quelque forme que ce soit.
Les Logiciels Libres en revanche, ne s'obtiennent pas nécessairement par un achat et sont d'utilisation illimitée. Il est possible d'accéder à leur code source, de les modifier, de les copier et de les redistribuer.
En d'autres termes, rien ne garantit dans le cas des logiciels propriétaires qu'on pourra continuer à en faire l'usage à l'avenir. On pourrait résumer en disant que les logiciels classiques sont loués à leurs propriétaires (lesquels en restent propriétaires, bien qu'ont ait l'habitude de parler d'achat de logiciel et non de location), alors que les logiciels libres sont acquis une fois pour toute par ceux qui choisissent de les installer et pourront évoluer et être adaptés sans restriction à condition d'en conserver le code source.
Une licence d'utilisation particulière
Que tout cela soit possible dans le cas des Logiciels Libres n'implique cependant pas que cela puisse être fait dans n'importe quelles conditions. Les conditions exactes d'exercice de ces libertés sont régies par la licence associée au logiciel, comme dans le cas des logiciels propriétaires. Il existe des licences variées pour lesquelles les conditions précises d'utilisation, modification, copie et redistribution peuvent différer.
Ainsi, l'accès à un Logiciel Libre peut être payant, mais pour peu que quelqu'un d'autre vous propose le même logiciel gratuitement, ce qui est courant sans être systématique, le "prix de marché" tend rapidement vers zéro. Une distribution telle que Red Hat Linux (compilation de logiciels adaptés pour être facilement utilisables ensembles) est un exemple de produit payant constitué de Logiciels Libres qui sont disponibles séparément et gratuitement.
Toutes les licences de Logiciel Libre autorisent l'accès au code source. Il est cependant important de remarquer que le terme open source ne concerne que l'accès au code et n'est donc pas équivalent à Logiciel Libre. En particulier, certaines sociétés proposent aujourd'hui d'accéder à tout ou partie du code source de leur produit, mais sans accorder aucune des autres libertés mentionnées ci-dessus et parfois même en imposant des contraintes de confidentialité.
La grande majorité des licences de Logiciel Libre autorisent la modification du code, la différence se faisant ensuite dans les conditions associées à la redistribution.
La licence GPL
Dans le cas de la licence GPL, très répandue, la redistribution doit se faire dans les mêmes termes que l'acquisition y compris pour les travaux dérivés. Quelqu'un qui télécharge gratuitement un Logiciel Libre sous GPL peut parfaitement le revendre, mais ne peut pas lui appliquer une autre licence et l'acheteur pourra donc bénéficier des mêmes avantages que son fournisseur. En particulier, les modifications apportées à un Logiciel Libre sous GPL doivent obligatoirement être sous GPL si et seulement si elles sont redistribuées.
GPL est donc une licence, acceptée par le "client" au moment de l'acquisition, dont le but est de garantir que personne ne puisse s'approprier et "enfermer" le logiciel.
Il est donc aisé de comprendre que les Logiciels Libres et la licence GPL ont de multiples avantages. Ils permettent aux utilisateurs de ne plus dépendre d'un éditeur pour faire évoluer un logiciel, le corriger ou assurer une compatibilité ascendante et la pérennité des données. La compétition entre éditeurs et entre prestataires est replacée sur le terrain de la compétence et de la qualité de service puisqu'aucune restriction intrinsèque au logiciel utilisé ne rend l'utilisateur dépendant d'un fournisseur particulier.
Dans le cas de Logiciels Libres gratuits, la part du budget consacrée à l'achat de licence peut être reportée, pour partie au moins, sur l'adaptation et la formation, qui permettent au final de disposer d'une solution mieux intégrée au reste du système d'information et mieux maîtrisée par les utilisateurs. Ces avantages ne sont pas à négliger quant on voit la proportion de projets informatiques qui n'atteignent pas leur objectifs faute d'avoir suffisamment accordé d'attention à ces deux aspects.
Quel modèle économique stable pour le Logiciel Libre ?
Partager et réutiliser pour assurer la qualité au moindre coût
La première question que posent ceux qui découvrent le principe du Logiciel Libre concerne sa pérennité. En effet, la gratuité de nombreux Logiciels Libres peut paraître aller à l'encontre de la capacité de leurs éditeurs à développer de nouveaux logiciels.
Une première remarque importante est que pour un usage donné la plupart des logiciels propriétaires en concurrence offrent des fonctionnalités presque identiques et ne diffèrent véritablement que par leurs lacunes, leurs défauts et leurs trous de sécurité. La cause de cet état de fait est le coût très élévé de la production de logiciel associé à un prix de marché faussé à la baisse par l'acceptation quasi-générale d'une qualité extrêmement faible.
Le Logiciel Libre, en favorisant la réutilisation et le partage des composants et logiciels d'infrastructure, permet au contraire la réduction des investissements de développement, l'accroissement de la qualité et la richesse fonctionnelle. Les Logiciels Libres qui répondent à un véritable besoin réunissent souvent des dizaines, voire des centaines de développeurs, concepteurs, testeurs et intégrateurs, pour des périodes qui s'étendent parfois sur plusieurs années. Peu d'éditeurs peuvent se permettre de maintenir des équipes d'une telle taille pour développer, tester et adapter leurs logiciels.
Les SSLL moteurs du Logiciel Libre
Une fois acquis le bien-fondé des bienfaits du modèle de développement du Logiciel Libre, il convient de s'interroger sur la structuration à grande échelle de cette nouvelle approche. En effet, pour qu'elle soit viable il est évident que même s'ils ne sont pas directement rétribués pour la vente du logiciel, ceux qui participent à ces projets doivent en tirer profit. Les utilisateurs qui bénéficient des avantages du Logiciel Libre et ont intérêt à le voir se développer recherchent donc rapidement leur place dans l'écosystème.
De nombreux rôles sont endossables si l'on souhaite apporter une contribution technique : du développement à la rédaction de documentation en passant par les tests et la maintenance de site web et d'outils facilitant la collaboration et la coordination.
Pour un utilisateur classique, n'ayant pas vocation à développer ou maintenir des compétences de ce type au sein de son organisation, la situation est différente. Une solution est alors de considérer les sociétés de services qui participent au logiciel libre comme des bureaux de change ou des intermédiaires entre les utilisateurs et les communautés de développement. L'argent investi dans le développement via ces SSLL est souvent converti pour partie en temps consacré à des projets de Logiciel Libre. Il est à souligner la différence importante entre une société qui utilise du logiciel libre pour répondre aux besoins de ses clients mais ne contribue pas en retour au monde du Logiciel Libre et celles qui en sont de véritables acteurs. Ces dernières sont conscientes du fait que sans contribution, les sources de Logiciel Libre ne peuvent pas perdurer éternellement. Les utilisateurs qui souhaitent bénéficier des avantages du Logiciel Libre, doivent donc choisir entre tirer un profit à court terme du phénomène et contribuer à asseoir un modèle qui leur rend leur prérogatives en faisant perdurer des sociétés véritablement engagées.
Le plus probable est bien évidemment qu'un certain noyau dur continue d'exister alors que d'autres sociétés plus grosses jouent le rôle de prédateurs et utilisent les logiciels produits sans participer elles-mêmes à des projets du même type. Cette organisation contribuera à ralentir les développements et à freiner l'abord des problèmes beaucoup plus complexes qui demandent des équipes importantes pour des durées longues.
La formation de communautés d'intérêt
Un client et des besoins
Un frein potentiel au développement à façon de Logiciels Libres est la crainte pour le commanditaire de voir ses concurrents s'approprier le résultat final à moindre coût. De même, certaines sociétés peuvent hésiter à se lancer dans le développement de logiciels si elles savent que leurs clients n'accepteront de les acquérir que sous une licence libre. La formation de communautés d'intérêt telle que décrite ci-après est une organisation des relations client-prestataire qui permet à tous de profiter des avantages du logiciel libre sans laisser l'occasion à ces craintes de devenir justifiées.
Un client qui souhaite réaliser un logiciel contacte son fournisseur pour lui demander de développer les fonctionnalités A,B,C dans les limites d'un budget fixe. Le fournisseur lui répond qu'il ne peut réaliser que A et B dans les limites de ce budget et en atteignant les standards de qualité du logiciel libre. Au terme du développement, le client obtient le résultat sous une licence de logiciel libre.
On pourrait en arriver au même point si un fournisseur décide d'investir dans le développement d'un logiciel qu'il propose ensuite à ses clients sous une licence de logiciel libre. Plutôt que de commander le développement, le client intéressé achète le logiciel déjà réalisé et la situation est similaire à celle du cas précédent.
A ce moment, le client peut s'il le souhaite s'adresser à un autre fournisseur ou poursuivre le développement en interne. Il peut aussi mettre le logiciel à disposition du public, mais s'il en a payé le développement, il est probable qu'il ne souhaite pas le faire. On remarque au passage qu'un établissement public pourrait faire le choix opposé.
De son côté, le fournisseur peut s'il le souhaite publier le logiciel, mais il ne souhaitera pas mécontenter son client ni faciliter le travail de ses concurrents.
Le plus probable est donc que le logiciel reste confidentiel, bien qu'il soit libre et ceci sans accord ou convention particulière entre les parties, mais du simple fait de leur propre intérêt.
Un deuxième client et des besoins similaires
Par la suite, admettons qu'un nouveau client demande au même fournisseur un logiciel ayant les fonctionnalités A,B,C,D. Ce dernier pourra le mettre en relation avec son premier client puisqu'ils semblent avoir des besoins communs. Après entente, le fournisseur réutilisera ce qui a déjà été développé et y ajoutera les fonctionnalités C et D avant de faire parvenir le résultat aux deux clients.
Le premier client aura donc obtenu toutes les fonctionnalités de A à D pour le seul coût de A et B. Le deuxième client aura lui aussi obtenu toutes les fonctionnalités de A à D pour le seul coût de C et D. Le fournisseur quant à lui aura été payé convenablement pour faire un travail de qualité.
Le principe est donc de former des communautés de clients ayant des intérêts communs de manière à ce qu'ils puissent partager la charge d'un développement logiciel.
Une communauté d'intérêt en évolution
L'évolution naturelle de ce genre de communautés est ensuite d'introduire de nouveaux fournisseurs capables d'apporter leur expertise pour résoudre des problèmes que les fournisseurs déjà membres ne savent pas traiter.
Après un certain temps d'évolution, les composants de bases de la solution logicielle développée ont été suffisamment réutilisés et n'offrent plus d'avantage concurentiel particulier aux clients membres. Il devient alors intéressant de les partager avec un plus grand nombre et de les publier hors de la communauté.
De même si la taille de la communauté dépasse un certain seuil, les intérêts viennent à diverger et des sous-communautés se forment. Cette scission indique qu'il est probablement temps de mettre à disposition du public le logiciel d'origine autour duquel la communauté s'était formée. D'autant que si la communauté grandit, comme tous les membres acquièrent le logiciel sous une licence libre, tous ont le droit de le redistribuer et les chances pour qu'un concurrent ou un "extérieur" se procure le logiciel croissent elles aussi. Plutôt que de voir un projet et des développements reprendre sur la base d'une version "échappée de l'enclos" il est préférable d'éviter une scission de la base de code et de constituer une communauté ouverte au public autour de ce logiciel.
Lexique
Open Source : licence autorisant la consultation du code source, sans nécessairement imposer les droits de copie et de redistribution. Le Logiciel Libre garantit donc plus de droits aux utilisateurs.
Freeware : logiciel gratuit. Ne garantit pas les droits d'accès au code source, de copie et de redistribution. Ne pas confondre avec Logiciel Libre.
Free Software : Dans Free Software, free doit s'entendre au sens de libre et non de gratuit. Le terme portant à confusion, on a cherché à utiliser Open Source, qui ne désigne malheureusement qu'une fraction des libertés garanties par le Logiciel Libre.
Shared Source : Terme issu de la tentative d'un grand éditeur de contrer le développement du Logiciel Libre en accordant un accès au code source de ses logiciels moyennant la signature d'un accord de confidentialité. On peut imaginer que les participants feront par la suite l'objet de poursuites au nom des brevets logiciels s'ils contribuent à des projets de Logiciel Libre.
Logiciel Libre ou Propriétaire : Libre ne s'oppose pas à commercial, mais à propriétaire. Un logiciel libre peut être vendu comme peut l'être un logiciel propriétaire. Seules les conditions associées sont différentes.
SSLL : Société de Service spécialisée en Logiciel Libre.
En savoir plus...
APRIL : Association pour la Promotion et la Recherche en Informatique Libre.
FSF Europe : Free Software Foundation Europe, pour en savoir plus sur le Logiciel Libre.
AFUL : Association Francophone des Utilisateurs de Logiciels Libres, pour en savoir plus sur les brevets logiciels.
Modèles économiques : Les entreprises membres de l'APRIL ont publié un livre blanc des modèles économiques du logiciel libre.
FFII : Association pour une Infrastructure Informatique Libre qui a pour objet de promouvoir les savoirs dans le domaine du traitement des données et lutte contre une mise en œuvre aveugle des brevets en Europe, en particulier dans le domaine du logiciel. |
Nos compétences
Logilab développe des logiciels, et propose du conseil et des formations de haut niveau dans les domaines de l'informatique scientifique et du web sémantique, en utilisant des outils et méthodes agiles.
Logilab s'est spécialisée dans l'utilisation de certains outils (Python, CubicWeb, Debian, etc.) et techniques (génie logiciel, programmation multi-paradigmes, statistiques, logique, etc.) pour les appliquer aux domaines de l'informatique scientifique (simulation numérique, calcul hautes performances, analyse de données, etc.) et du web sémantique (gestion de connaissances, agrégation de bases de données, outils de recherche et de veille, etc.).
Nos formations
Les formations de Logilab s'adressent en priorité aux ingénieurs, chercheurs et techniciens désireux d’accroitre leur culture informatique. Elles couvrent des sujets variés (Python, conception orientée objet, administrations système, etc)…
Nos formations sont systématiquement adaptées aux besoins des participants, qu'il s'agisse de sessions intra-entreprises ou inter-entreprises.
Logiciel Libre
Logilab, membre de l’april, est un acteur du Logiciel Libre et met à disposition certains de ses développements sur sa forge logicielle. Elle soutient régulièrement des événements et des conférences permettant aux communautés de se réunir.
Innovation
Logilab est une entreprise innovante, membre des pôles de compétitivité Systematic Paris Région et Aerospace Valley.
Logilab participe à plusieurs projets collaboratifs co-financés par l'ANR comme Les registres de la comédie française. |
Bonjour, ceci est une fiche !

|
Assister à une formation Logilab, c'est :
- apprendre avec des professionnels compétents maîtrisant parfaitement
le sujet qu'ils enseignent,
- bénéficier des conseils et des avis d'experts travaillant depuis
longtemps dans le domaine,
- trouver des interlocuteurs attentifs et disponibles, cherchant à
apporter à chacun les informations dont il a besoin.
Les experts du centre de compétences Logilab participent au
développement de solutions logicielles complexes, mettant en œuvre des
fonctionnalités et des algorithmes avancés. Pour ce faire, ils utilisent
des langages tels que Python et JavaScript, et des méthodes agiles de
développement industriel . Confrontés quotidiennement à ces domaines de
connaissance, ils ont acquis une réelle expertise sur ces sujets, ce qui
leur offre la possibilité de les enseigner dans un esprit pragmatique.
Les experts choisis pour animer une formation ont tous, outre leur
excellence technique, une expérience notable dans le domaine de la
formation professionnelle.
Référencement officiel
Logilab est déclaré comme organisme de formation auprès de la
DRIEETS sous le numéro 117.534.173.75 et
référencé dans Data-Dock avec
l'identifiant 0017742.
Certification
Logilab a obtenu la certification qualité Qualiopi en décembre 2021 au titre de la catégorie actions de formation. Vous pouvez consulter le certificat correspondant.
Catalogue
Toutes nos formations sont disponibles soit en langue française soit en
langue anglaise. Elles peuvent toutes avoir lieu en intra-entreprise au
lieu de votre convenance en France ou en Europe ; des sessions en
inter-entreprises sont organisées par Logilab pour certaines
formations en région Île-de-France ou en région Midi-Pyrénées.
Logilab a choisi de systématiquement adapter ses formations au plus
près des besoins de chacun de ses clients. Ainsi, vous pouvez soit
choisir une de nos formations standards décrites ci-après, soit
contacter notre service commercial pour
composer une formation sur-mesure. Nous disposons d'une importante
bibliothèque de modules pédagogiques pour vous aider dans cette
opération et fabriquer la formation répondant exactement à vos besoins.
Notre catalogue est disponible au format
PDF.
Formations standards
Les bases de la programmation avec Python
Programmation avancée avec Python
Python scientifique
Création d'interfaces utilisateur
Web des données
Administration système
Formation à la carte
À partir de 4 personnes, Logilab peut animer des formations
spécifiques en intra-entreprise, n'importe où en France ou en Europe.
Vous pouvez alors composer la formation répondant exactement à vos
besoins. Notre service commercial est à
votre disposition pour vous conseiller et vous aider dans vos choix, en
s'appuyant sur l'importante bibliothèque de modules pédagogiques dont
nous disposons.
Commercialisation
L'équipe commerciale de Logilab est à votre disposition pour vous
apporter toute précision supplémentaire, vous aider à formaliser vos
besoins et vous proposer une prestation adaptée à vos besoins. |
Formations à venir:
an error occurred while interpreting this rql directive: BadRQLQuery('Any I,T,E,EL,ED,ES ORDERBY ED,EL WHERE E concerns T, E location EL, E diem ED, E end_date ES, E diem >= TODAY, E description I\n** unknown relation `concerns`\n** unknown relation `location`\n** unknown relation `diem`\n** unknown relation `end_date`\n** unknown relation `diem`')
ajouter une formation |
Nous inventons l'approche Test-Driven Infrastructure en nous appuyant sur notre maîtrise de Debian, OpenStack, Salt et du développement piloté par les tests (TDD). Nous innovons avec une forge logicielle qui soutient les processus agiles et qui fluidifie le développement collaboratif. Pour cela, nous avons étendu les capacités de Mercurial avec Evolve avant de les intégrer à CubicWeb pour faciliter la revue de code. L'amélioration continue de nos outils traduit notre souci constant de la qualité. Logilab développe des logiciels, et propose du conseil et des formations de haut
niveau dans les domaines de l’informatique scientifique et du web sémantique, en
utilisant des outils et et méthode agiles. |
Depuis de nombreuses années, Logilab développe des applications publiant,
partageant et fusionnant des informations sur le Web. Avec l’avénement des
standards du Web Sémantique et la publication de la plate-forme CubicWeb, les
ingénieurs de Logilab disposent aujourd’hui d’outils leur permettant de mettre
en place pour leurs clients des applications innovantes les propulsant
directement au cœur du Web 3.0. |
Les experts du centre de compétences Logilab participent au développement de
solutions logicielles complexes, mettant en œuvre des fonctionnalités et des
algorithmes avancés. Pour ce faire, ils utilisent des langages tels que Python
et JavaScript, et des méthodes agiles de développement industriel . Confrontés
quotidiennement à ces domaines de connaissance, ils ont acquis une réelle
expertise sur ces sujets, ce qui leur offre la possibilité de les enseigner dans
un esprit pragmatique. Les experts choisis pour animer une formation ont tous,
outre leur excellence technique, une expérience notable dans le domaine de la
formation professionnelle. |
Logilab est un acteur du Logiciel Libre. Elle dispose d'une expertise dans ce domaine et publie certains de ses développements sous licence libre. Logilab est un acteur du Logiciel Libre. Elle dispose d'une expertise dans ce domaine et publie certains de ses développements sous licence libre.
Le système informatique est aujourd'hui un élément indispensable au
fonctionnement de la grande majorité des entreprises, organisations et administrations. Or les éditeurs et prestataires informatiques sont en fait les véritables maîtres de ces infrastructures car ils maintiennent leurs clients dans une dépendance excessive que ces derniers ne peuvent briser qu'au prix d'efforts et de dépenses importantes.
Les éditeurs et prestataires tirent parti de cette dépendance. D'une part en imposant à leurs clients des tarifs élevés et d'autre part en limitant leurs dépenses liées à l'innovation et à la qualité, qui ne sont plus des facteurs déterminants dans la course à l'obtention de nouveaux clients ou à la satisfaction des clients existants.
Le Logiciel Libre (en anglais free software) est une nouvelle approche
de la réalisation et de la distribution de logiciels. En redonnant aux
utilisateurs le plein contrôle de leur système d'information et leur
pleine capacité à choisir parmi l'éventail des prestataires et des
éditeurs, le Logiciel Libre promet d'avoir un impact important sur
l'industrie informatique en général et la production de logiciel en
particulier.
Logilab, membre de l’april, est un acteur du Logiciel Libre et met à disposition
certains de ses développements sur
notre forge et
cubicweb.org ou encore sa propre forge logicielle. Dans la mesure du possible,
Logilab développe, utilise, adapte et contribue aux Logiciels
Libres.
Logilab fournit pour tous les Logiciels Libres qu'elle développe des
paquets permettant de les installer aisément sur une distribution
Debian GNU/Linux. Cette distribution est
utilisée sur tout le parc informatique de Logilab. Elle a la
particulatité d'être non commerciale et constituée exclusivement de
Logiciels Libres, contrairement à d'autres distributions du système
d'exploitation Linux.
Pour en savoir plus sur le Logiciel Libre, reportez-vous à notre article
intitulé De l'impact du Logiciel Libre sur l'industrie
informatique. Pour en savoir plus sur Debian,
reportez-vous à notre article intitulé Pourquoi choisir Debian pour
déployer Linux dans son entreprise ?.
Offre libre
L'AFUL, qui a pour principal objectif de
promouvoir les logiciels libres ainsi que l'utilisation des standards
ouverts, a attribué à Logilab la note "A" - la plus élevée - pour
l'offre CubicWeb. |
Logilab travaille principalement pour des grands comptes.
CEA, Ministère de l'Intérieur, Préfecture de Picardie, Préfecture de Corrèze, Préfecture d'Indre-et-Loire, Préfecture de Champagne-Ardenne, Préfecture de la Marne, Ministère de l'Agriculture, École Centrale Paris, etc.
Ministère de l'Éducation Nationale, Reuters, Ministère de la Défense, Bruker, Bouygues Télécom, ESRF, etc.
www.logilab.fr, Debian, PyPy, pylint, Narval®, Zope/Plone/CPS, etc.
|
Logilab contribue au projet Debian et propose des formations et de l'assistance pour le déploiement de cette distribution. Logilab fournit pour tous les Logiciels Libres qu'elle développe des paquets permettant de les installer aisément sur une distribution Debian GNU/Linux. Cette distribution est utilisée sur tout le parc informatique de Logilab. Elle a la particulatité d'être non commerciale et constituée exclusivement de Logiciels Libres, contrairement à d'autres distributions du système d'exploitation Linux.
Pour en savoir plus sur Debian, reportez-vous à notre article intitulé Pourquoi choisir Debian pour déployer Linux dans son entreprise ?.

|
Logilab contribue à Salt et propose des formations et de l'assistance pour gérer des infrastructures avec cet outil
selon l'approche Test-Driven Infrastructure. Salt est un environnement libre d'exécution distribué et asynchrone, qui permet de gérer la configuration et l'administration des nuages et d'automatiser les tâches des équipes DevOps.
Qu'il s'agisse d'exécuter une commande sur plusieurs machines, d'appliquer une configuration système, de récolter les mesures faites par des sondes, de lancer des machines virtuelles ou de gérer un "cloud", Salt a une solution.
Utilisé par des réseaux sociaux tels que Dailymotion et LinkedIn, ainsi que par les acteurs majeurs du cloud, Salt fournit un bus de communication et un client d'empreinte mémoire réduite, qui fonctionnent sur toutes les plateformes (Unix, MacOS, Windows, embarqué, etc.). Il permet de décrire complètement la configuration de machines et d'applications avec un ensemble de fichiers yaml et de scripts Python qui deviennent le "code source" du système d'information.
Grâce à Salt, le système d'information peut être développé et maintenu comme n'importe quelle application logicielle (réutilisation de composants, code source contrôlé, travail collaboratif, accès à des données ou services partagés) et il devient plus simple d'appliquer les principes des méthodes agiles (Test Driven Development/Infrastructure, développement itératif, intégration continue, etc).
Nous disposons d'une équipe certifiée SaltStack pour assurer le support technique, la formation, ainsi que la certification au logiciel Salt.
Pour en apprendre plus, rejoignez la communauté salt-fr ou inscrivez-vous à la prochaine session de notre formation salt. |
Depuis sa création, Logilab utilise XML et les standards dérivés pour représenter et manipuler des données. Elle est à l'origine de nombreux outils en Python pour XML et a participé au développement du module XML de la bibliothèque standard de ce langage.
Aujourd'hui, Logilab continue à suivre de près ces standards, en particulier dans les domaines de la gestion documentaire, la gestion de connaissances et le Web sémantique. |
Logilab a développé des systèmes de gestion de contenu construits sur Zope, Plone et CPS, et continue aujourd'hui à les maintenir. Zope / Plone / CPS sont des systèmes de gestion de contenu couramment utilisés il y a quelques années pour construire des plates-formes Web. Logilab s'est appuyée sur ces systèmes pour développer différentes applications Web, différents intranets et différents portails collaboratifs de gestion de contenu. Elle a également participé activement à la communauté Logiciel Libre autour de ces outils.
Logilab travaillait sur ces projets en partenariat avec des agences graphiques et se chargeait de tous les aspects techniques, depuis le conseil quant au choix du système de gestion de contenu jusqu'à la mise en œuvre de la charte graphique, en passant par la sélection des composants sous licence libre et le développement des extensions manquantes.
Aujourd'hui, Logilab continue à maintenir des applications développés avec ces outils mais privilégie l'utilisation d'outils plus récents et plus puissants pour développer de nouvelles applications (en savoir plus). |
Les ingénieurs de Logilab ont la culture scientifique nécessaire pour collaborer efficacement avec les ingénieurs des bureaux d'études et des laboratoires de recherche qui souhaitent déléguer la réalisation des tâches informatiques pour se concentrer sur la modélisation et la simulation des phénomènes. L'expertise de Logilab
Logilab intervient généralement soit pour industrialiser des codes issus d'activités de recherche soit pour imaginer des solutions innovantes.
Ainsi, nous travaillons pour de grands comptes scientifiques afin de développer des applications comme :
- un outil utilisant l'apprentissage automatique pour la conduite prédictive des réseaux urbains de chaleur et de climatisation, et ayant permis de substantielles économies tant monétaires qu'en émissions de CO2 ;
- un outil de description et de pilotage distribué de processus de calculs aérothermiques pour la conception de turbines de réacteurs d'avions ;
- une boite à outils d'analyse statistique pour l'étude de l'opportunité de l'implantation d'éoliennes en haute mer.
Les ingénieurs de Logilab ont la culture scientifique nécessaire pour collaborer efficacement avec les ingénieurs des bureaux d'études et des laboratoires de recherche qui souhaitent déléguer la réalisation des tâches informatiques pour se concentrer sur la modélisation et la simulation des phénomènes.
Python pour les applications scientifiques
Python est un langage qui convient idéalement aux applications scientifiques. Grâce à son écosystème très riche (Numpy, Scipy, Pandas ou encore Scikit-Learn) il permet d'écrire des codes de calcul très rapidement. Il est également possible d'intégrer des codes existants écrits en Fortran, C/C++ à du code Python ce qui permet de bénéficier de la rapidité d'exécution des langages compilés et de la souplesse de Python.
Par ailleurs, Cython offre la possibilité de migrer aisément en C les fonctions Python gourmandes en ressources.
Jupyter est un écosystème qui permet l'édition de documents qui mélangent du texte et du code (appelés calepin ou notebook). Python est le langage principal de cet environnement. Il est notamment possible de concevoir simplement des interfaces utilisateurs permettant l'exécution ou la manipulation du code de calcul.
Logilab utilise Python et anime des formations sur ce langage et ses bibliothèques depuis sa création en 2000. C'est le partenaire privilégié pour vous accompagner et vous aider dans vos projets scientifiques. |
Logilab propose des systèmes de gestion de connaissances construits sur la base de CubicWeb, son moteur applicatif aux standards du Web Sémantique publié sous license libre LGPL. CubicWeb permet de déployer rapidement des applications Web de gestion de connaissances, à partir du schéma des données manipulées.
L'interface utilisateur de CubicWeb a été spécialement conçue pour laisser à l'utilisateur final toute latitude pour sélectionner puis présenter les données. Elle permet d'explorer aisément la base de connaissances et d'afficher les résultats avec la présentation la mieux adaptée à la tâche en cours. La flexibilité de cette interface redonne à l'utilisateur le contrôle de paramètres d'affichage et de présentation qui sont habituellement réservés aux développeurs.
Parmi les applications déjà réalisées, on dénombre la fusion et la publication de plusieurs catalogues de la Bibliothèque nationale de France (voir http://data.bnf.fr/), un système de gestion d'études numériques et de simulations pour un bureau d'études, la mise en ligne des collections des musées de Haute-Normandie, la gestion des compétences du personnel et de l'historique des projets d'une entreprise d'ingénierie, la gestion du développement de projets logiciels d'un éditeur, la gestion de la scolarité d'un institut de formation, un intranet de travail collaboratif, la gestion de la relation client, etc.
http://www.cubicweb.org/ |
Les informations et les éléments graphiques des sites Logilab sont disponibles dans un but d'information uniquement et pour un usage personnel. Logilab décline toute responsabilité quant au contenu des présentes pages et à l'utilisation qui pourrait en être faite par quiconque. Les informations des sites Logilab sont fournies telles quelles sans garanties d'aucune sorte, ni explicites ni tacites. En particulier, aucune information apparaissant sur le présent site ne saurait être considérée comme une offre de services ou de produits engageant Logilab de quelque manière que ce soit. Toute personne désireuse de se procurer un des services ou produits présentés ici est priée de contacter Logilab afin de s'informer de la disponibilité du dit produit ou service et des conditions contractuelles qui lui sont applicables.
Tous les produits cités sur ce site sont des marques déposées de leur société respective.
- Copyright 2001-2012 par Logilab S.A.
LOGILAB - S.A. au capital de 100 000 Euros - APE: 6062A - SIREN: 432 746 196 - RCS de Paris - Siège social: 104, boulevard Louis-Auguste Blanqui 75013 PARIS
LOGILAB - S.A. au capital de 100 000 Euros - APE: 6062A - SIREN: 432 746 196 - RCS de Paris - Siège social: 104, boulevard Louis-Auguste Blanqui 75013 PARIS
|
Président - Directeur Général Blogs (RSS)

Il est possible de recevoir des mises à jours de nos publications en utilisant notre flux RSS :
Microblog (Twitter et Mastodon)
Il est possible de nous suivre sur Twitter :

Mais aussi sur Mastodon :

Réseaux sociaux

Matrix

Nous sommes joignables sur notre serveur Matrix dans le salon #public |
Nos spécialités et notre organisation vous intéressent ? N'hésitez pas à nous envoyer vos candidatures !
CDI
Nous sommes actuellement à la recherche d'ingénieures ou ingénieurs pour renforcer nos équipes de production et de R\&D.
Stages
Nous proposons également des stages longs, pour des étudiantes ou des étudiants en Master, Cycle ingénieur ou équivalent.
Envoyer une candidature
Envoyez votre candidature (CV + lettre de motivation, format PDF ou HTML) par courrier électronique à personnel@logilab.fr. Veuillez noter que nous n'acceptons que les documents dans les formats ouverts suivants : pdf, odt, html, texte, ps. |
Vous pouvez me contacter par :
Vous pouvez également consulter mon profil professionnel sur :
Prochainement, vous pourrez télécharger mes coordonnées au format VCard. |
Logilab a fondé son organisation sur les principes des méthodes agiles et s'est doté d'outils adéquats. Dès sa création, début 2000, Logilab s'est organisée sur les principes des méthodes agiles et s'est dotée des outils nécessaires pour conduire efficacement ses projets de développement logiciel.
Qu'il s'agisse d'améliorer le pilotage par des prévisions plus justes et des réactions plus rapides aux changements, ou bien d’accroitre la vitesse de développement d'une équipe tout en réduisant la fréquence d'apparition des défauts, les méthodes agiles font partie des outils incontournables.
Au fil des retours d'expériences Logilab a fait évoluer des méthodes génériques comme Scrum ou eXtreme Programming afin de construire son propre processus de développement correspondant au besoin de ses clients et à ses contraintes. |
Logilab conclue des partenariats avec des sociétés aux activités connexes à la sienne, afin de pouvoir proposer à leurs clients respectifs des solutions logicielles intégrées de qualité répondant au mieux à leurs besoins. Fidèle à sa philosophie de l'excellence, Logilab ne se rapproche que d'entreprises à la compétence éprouvée dans leur domaine. À ce jour, Logilab a noué les partenariats suivants :
- Systematic Paris Région est le pôle de compétitivité de la région Ile-de-France, dédié aux logiciels et systèmes complexes.
- APRIL est l'Association pour la Promotion et la Recherche en Informatique Libre. Depuis 1996 c'est un acteur majeur de la démocratisation et de la diffusion du logiciel libre et des standards ouverts auprès du grand public, des professionnels et des institutions dans l'espace francophone. Elle veille aussi, dans l'ère numérique, à sensibiliser l'opinion sur les dangers d'une appropriation exclusive de l'information et du savoir par des intérêts privés.
- EuroPython Conference est la conférence européenne dédiée au langage Python et à ses applications. Logilab a participé à l'organisation de cet événement annuel, et en particulier de la session "Python et les applications scientifiques".
- Kiddanet est un projet européen qui visait à déployer un portail permettant aux parents et aux éducateurs de laisser les enfants de naviguer sur Internet sous le contrôle d'un système de filtrage multi-agents. Logilab fut l'un des sept membres du consortium auquel avait été confiée la réalisation de ce projet.
- ASWAD est un projet européen qui visait à déployer un environnement de travail collaboratif intégrant des agents intelligents pour faciliter le traitement et l'automatisation de certaines tâches. Ce projet reposait sur Plone et Narval, l'environnement de déploiement d'assistants développé par Logilab. Logilab fut membre du consortium auquel avait été confiée la réalisation de ce projet.
- PyPy a pour objectif de réécrire l'interpréteur Python en Python afin d'obtenir un langage plus souple pouvant bénéficier des avancées techniques disponibles dans certains projets connexes. Il permettra également de fabriquer des interpréteurs Python minimaux personnalisables pouvant être aisément embarqués. Logilab fut membre du consortium auquel avait été confiée la réalisation du projet de recherche européen qui a abouti à la première version de PyPy.
|
Article publié en 2005 Debian GNU/Linux
Qu'est-ce que Debian ?
Debian est l'une des quatre principales distributions de Linux. A l'opposé de ses concurrentes que sont RedHat, Mandrake et Suse, elle n'est pas le produit d'une entreprise privée et n'a pas pour unique cible les architectures Intel et le noyau Linux. Debian est le fruit du travail d'une association internationale structurée et bien organisée ayant pour objectif et slogan "Debian : un système d'exploitation universel".
A tout seigneur, tout honneur, commençons par l'introduction que le projet Debian propose sur son site et en particulier par les bonnes raisons de choisir Debian, ainsi que quelques questions fréquemment posées. Cette présentation est bien complétée par un document clair et concis, écrit par un développeur Debian français, intitulé Debian en milieu professionnel.
Reprenons quelques chiffres. Plus de mille développeurs officiels, aidés de milliers de contributeurs, ont empaqueté plus de six mille logiciels qui sont distribués par plus d'une centaine de serveurs miroirs, ce qui représente plus de 80 Go de logiciels compilés pour onze architectures différentes, le tout disponible en près de vingt-huit langues.
Il est important de préciser que la distribution Debian comporte trois branches : stable, testing et unstable. La nouvelle version d'un paquet est ajoutée à unstable et n'est transférée dans testing qu'après une dizaine de jours, si aucun problème n'a été signalé. Après plusieurs mois de développements et de tests, la branche testing deviendra la nouvelle version stable de la distribution. L'objectif de la distribution stable n'est pas donc pas d'avoir des logiciels récents mais d'avoir des systèmes sûrs et extrêmement stables qui ne demandent presqu'aucune maintenance, ce qui convient parfaitement pour des serveurs et des équipements réseau. La branche testing est quant à elle suffisamment stable pour être utilisée au quotidien sans problème et peut donc servir pour des postes de travail ou des serveurs de développement. La branche unstable en revanche n'est recommandée que pour les personnes capables de maintenir elles-mêmes leur machine.
Debian a longtemps eu la réputation d'être difficile à installer et à configurer par un non initié. Cette réputation n'est plus aujourd'hui méritée puisque les nouvelles versions du programme d'installation détectent automatiquement le matériel présent sur la machine et ne demandent plus à l'utilisateur d'identifier les pilotes de périphériques nécessaires à son fonctionnement. Au-delà de cette installation initiale, les utilitaires d'installation de logiciels et la qualité de l'intégration des logiciels entre eux donnent toute leur mesure. Ceci a longtemps permis aux utilisateurs de Debian de prétendre en souriant que la mauvaise qualité du programme d'installation n'était pas un problème puisqu'on n'avait à l'utiliser qu'une seule fois dans sa vie et que contrairement à d'autres distributions, toutes les mises à jour, y compris les mises à jour d'une version majeure à la suivante, pouvait se faire en tapant une seule commande : apt-get.
Quelles entreprises utilisent Debian ?
Le projet Debian maintient une liste des entités qui utilisent la distribution et souhaitent le faire savoir. Il est difficile d'estimer avec précision quels sont les grands comptes qui ont fait le choix de Debian, puisqu'ils sont peut nombreux à donner des détails de ce type et se limitent le plus souvent à signaler qu'ils utilisent Linux. Nous avons cependant connaissance de quelques exemples : Hewlett Packard, France Telecom (voila.fr), Free Telecom (free.fr), EDF R&D, Selftrade (bourse en ligne), NASA, National Security Agency of USA (Secure Linux), Europcar.
Suite au changement de tarification de RedHat, Europcar a décidé de remplacer RedHat par Debian sur l'ensemble de ses postes de travail. Hewlett Packard a standardisé son environnement de recherche et développement Linux sur la base de Debian. 01 Informatique a publié en mars 2004 un article intitulé Le PC Linux fait une percée dans l'entreprise qui cite comme distribution principale RedHat, Debian et Suse et comme utilisateurs, Total, le Ministère de l'Intérieur et un éditeur belge.
Popularité
Le site DistroWatch, consacré aux distributions de Linux, donne Debian quatrième dans son classement de popularité de mai 2004, derrière Mandrake, Fedora/RedHat et Knoppix. Knoppix étant une variante de Debian, on peut donc considérer que Debian occupe deux des quatre premières places :-).
Le magazine allemand Linux Enterprise nomme Debian meilleure distribution pour l'entreprise devant Suse et RedHat. Un autre magazine allemand, Linux Magazin, nomme Debian devant Knoppix (!) et Suse.
D'après un sondage Netcraft, les gens qui, depuis son changement de tarification, abandonnent RedHat passent à Debian, ce qui en fait la deuxième distribution la plus utilisée au monde, derrière RedHat.
Le Monde Informatique quant à lui, en 2003, dit de Debian qu'elle est la distribution la plus complète et la plus stable.
Support commercial
Le site de Debian propose une liste, nécessairement incomplète, de personnes et sociétés qui offrent un support commercial. La société Logilab, auteur de cet article, offre une aide au déploiement, à l'administration et des formations spécifiques à Debian.
Parmi les grands de l'informatique, Hewlett Packard s'est fait remarquer par son offre de support commercial de Debian. HP propose à ses clients de livrer ses machines avec RedHat, Suse ou Debian installé et annonce avoir renforcé son support pour Debian à la demande de ses clients, qui sont de plus en plus nombreux à souhaiter disposer de Debian sur leurs postes de travail et serveurs.
Déployer Debian
Debian offre des avantages pour un déploiement à grande échelle. En particulier, l'outil de gestion des paquets dpkg permet d'obtenir la liste des paquets installés (dpkg --get-selections), mais aussi de fixer la liste des paquets à installer (dpkg --set-selections). Là où d'autres systèmes d'exploitation mettent en place des mécanismes compliqués pour répliquer une machine maître sur des machines esclaves, il suffit à un administrateur Debian de fixer la liste des paquets et de décompresser une archive de /etc pour qu'une machine soit identique à une autre. La qualité des paquets Debian assure au passage que tous les fichiers de configuration des logiciels installés sont bien dans /etc, contrairement à d'autres distributions qui n'ont pas toujours le même souci du détail.
Une autre solution pour un déploiement à grande échelle consiste à utiliser des clients légers, qui démarrent par le réseau grâce au protocoles PXE et DHCP et ne nécessitent pas de disques durs. Les données et les sauvegardes sont ainsi centralisées sur des serveurs et mieux protégées. De plus, les installations sont simplifiées puisqu'il suffit d'ajouter un logiciel sur le serveur pour qu'il soit immédiatement disponible sur tous les clients. Les postes clients sont plus faciles à maintenir et moins coûteux car ils ne comportent pas de logiciel spécifique ni de disque dur. Si un poste client a un problème matériel, il peut être remplacé immédiatement sans que cela ait la moindre conséquence pour l'utilisateur. Logilab a écrit en juin 2000 l'un des premiers guide décrivant l'installation d'un parc de ce type et utilise cette solution en interne depuis cette date. D'autres sociétés ont adopté cette approche et en font la publicité.
On a vu ci-dessus que Debian avait pour avantage de proposer trois branches, qui couvraient des besoins différents. Il est évident que cette possibilité de maintenir plusieurs branches en parallèle est une qualité de la distribution, qu'une entreprise peut exploiter à son avantage. Lors d'un déploiement industriel, on a toujours à faire face à des conflits de versions entre les dépendances des outils développés en interne ou par des prestataires et les éléments de la plate-forme choisie. Pour prendre un exemple concret, on peut citer le cas d'un client de Logilab qui souhaitait distribuer un logiciel pour RedHat 7, 8 et 9 et qui s'est vu contraint d'en modifier les sources et de le compiler plusieurs fois car RedHat 7.2 inclut la version 2.95 de gcc, mais RedHat 8 inclut gcc 3. De même tel logiciel fonctionnera avec Debian testing qui inclut Gnome 2 mais pas avec Debian stable qui n'inclut que Gnome 1. Ces problèmes sont courants et ont motivé le créateur du projet Debian à créer une société, Progeny, dont le métier est de proposer à ses clients de maintenir des plate-forme Linux sur la base de la distribution Debian.
Logilab, au fait de la nécessité d'introduire une part de sur-mesure dans le déploiement d'une distribution Debian, propose à ses clients de les aider à adapter et maintenir leur propre variante de Debian. Ceci n'est viable que parce que cette distribution est suffisamment modulaire pour le permettre, mais aussi parce que plusieurs sociétés dans le monde ont ouvert la voie et travaillent à modulariser Debian.
Des distributions Debian sur mesure !
Componentized Linux est un projet visant à bâtir, sur la base de Debian, des modules interdépendants et versionnés séparément. Cette modularisation réduit l'influence des interdépendances entre paquets en les synthétisant par des dépendances entre modules. Mettre au point une plate-forme Linux revient alors à faire un choix de versions de modules et y rajouter les paquets manquants. Une telle adaptation est beaucoup plus difficile à faire avec une distribution classique.
Custom Debian Distribution est un outil développé par le projet Debian pour faciliter la création de méta-paquets et donc de distributions spécialisées telles que Debian Junior (pour les moins de 14 ans), Debian Med (pour les professions médicales), Demudi (pour les professionnels du son et du multimédia) ou encore SkoleLinux et Debian-Edu (pour les écoles et universités).
Morphix est une distribution modulaire fondée sur Debian, qui ne nécessite aucune installation sur disque dur et démarre à partir d'un simple cédérom. Knoppix est aussi une distribution "LiveCD" fondée sur Debian, qui connaît depuis plusieurs mois une croissance fulgurante, car elle présente l'avantage de pouvoir être essayée sur tout ordinateur, sans installation et sans remise en cause du système déjà installé. |
Logilab mène tous ses projets dans l'idée que la machine doit
décharger l'utilisateur des tâches les plus simples ou les plus
répétitives pour lui permettre de se concentrer sur ce qui demande
réflexion.
Entre autres, sont disponibles :
- CubicWeb - application générique de
gestion des connaissances, pensée pour faciliter la gestion mais
surtout la recherche et la navigation au travers d'une base de
connaissances,
- pylint - outil d'analyse statique de code
qui permet de vérifier la viabilité du code Python produit et le
respect des standards de codage,
- hgview - application de visualisation de
code source stocké dans un dépot de gestion de source mercurial.
Enfin, certains logiciels sont disponibles sous licence GPL sur les
sites Webs des projets Logiciel Libre de Logilab.
L'équipe commerciale de Logilab est à votre disposition pour vous
apporter toute précision supplémentaire ou pour envisager avec vous des
adaptations ou développements spécifiques. |
Cet article écrit par Nicolas Chauvat est paru dans le numéro
v2.03 du 9 novembre 2001 de "Développeur Référence". Tous droits
réservés.
Récemment, l'un des piliers de l'industrie informatique annonçait la mise sur le marché, d'ici quelques années, d'ensembles de machines capables de s'administrer et de réparer certains de leurs problèmes matériels de manière autonome. Ceci illustre bien la croissance continue de la complexité des systèmes informatiques, qui est depuis toujours soutenue par l'évolution parallèle de la puissance des machines et de l'abstraction des langages et les méthodes de développements. Avec la croissance de la complexité, ce sont les occasions de faire des erreurs qui deviennent plus fréquentes. Pour garantir la qualité et le succès de ces systèmes complexes, on se doit de maîtriser leur complexité en employant des outils et des méthodes adaptées.
Dans le domaine logiciel, les contrats sont l'un des moyens disponibles pour maîtriser cette complexité, garantir la qualité et faciliter la réutilisation des composants. Introduits à la fin des années quatre-vingt par Bertrand Meyer avec son langage Eiffel
, les contrats vont bien au-delà du mécanisme d'assertions et de typage fort disponibles auparavant, sans pour autant atteindre le niveau d'abstraction des langages de spécification et de preuve formelle. Leur intégration parfaite avec le modèle objet et les méthodes de développement associées en fait un outil de choix pour qui désire garantir la qualité et faciliter la réutilisation de composants.
En ingénierie informatique comme dans d'autre domaines, on a coutume de dire "la qualité est tout et tout est qualité". En effet, la qualité du produit est un facteur essentiel de son succès et qu'il faut donc employer tous les moyens disponibles pour l'accroître et la garantir. De plus, la qualité du tout découle de la qualité des différents composants, mais aussi des différentes étapes de la réalisation et les défauts de chacun auront une répercussion sur le produit final.
Bien que tout soit qualité, tout n'a pas la même influence sur la qualité et tout le monde n'aura pas la même perception de la qualité. Définir la qualité comme une combinaison de différents facteurs permet donc de comparer de manière objective l'influence des méthodes ou des composants sur chacun de ces facteurs, mais aussi d'étudier l'influence de ces facteurs sur la perception de la qualité qu'auront les différents acteurs.
Meyer propose de décomposer la qualité en l'ensemble des facteurs suivants: correction, robustesse, efficacité, facilité d'utilisation, richesse fonctionnelle, délais, coût, adaptabilité et extensibilité, compatibilité, portabilité, réutilisation, compréhensibilité, facilité de test. Vous pouvez vous reporter à et pour une définition plus précise de chacun de ces termes.
On voit bien que certains de ces facteurs ne vont pas avoir le même poids et que les personnes chargées des spécifications, de la programmation, des tests, de la maintenance ou de la vente, pour ne citer que celles-là, auront chacune des priorités qui leurs sont propres dans leur approche de la qualité.
A cette première définition de la qualité, il convient d'ajouter celle de son opposé, le défaut. Cette fois encore, c'est une formulation générale qui semble la plus satisfaisante, car elle permet d'intégrer les défauts non pas seulement du code, mais aussi des spécifications, de la documentation et du reste.
Un défaut est une propriété d'un logiciel qui peut et doit être améliorée. Accroître et garantir la qualité, c'est donc employer tous les moyens disponibles pour éviter d'introduire des défauts et détecter puis éliminer les défauts que l'on a pu introduire par mégarde.
L'utilisation de méthodes de conception et d'analyse, les formalismes de descriptions, les conventions de documentation, l'identification de bonnes pratiques sont autant d'outils et de guides pour éviter d'introduire des défauts.
Pour détecter et supprimer les défauts, on peut utiliser la revue(*) lors de la plupart des étapes, mais aussi des outils et techniques particuliers lorsqu'il s'agit du code source : analyse statique (compilateur, lint, métriques), test (unitaires, intégration, validation), outils CASE(*), langages de preuve formelle, etc.
Les défauts, qui découlent des erreurs que font les personnes, peuvent être introduits à toutes les étapes du développement, que ce soit lors de l'analyse, des spécifications, de la réalisation, de la documentation, de la validation ou même par la suite lors de la réutilisation si l'on adopte une approche composants.
La qualité doit donc être un souci de tous les instants et nous allons maintenant essayer de montrer en quoi la programmation par contrat se révèle une aide à la fois pratique et efficace tout au long de la vie du logiciel, de sa conception à sa réutilisation en passant par sa réalisation et sa validation.
Les contrats vont au-delà des mécanismes d'assertions et de typage fort, sans pour autant atteindre le niveau d'abstraction des langages de preuve formelle. Les contrats sont un moyen de répondre à deux questions essentielles : "que doit faire le logiciel ?" et "le logiciel fait-il ce qu'il est sensé faire ?".
Dans la vie courante, les contrats sont des accords qui lient des parties en décrivant de manière précise les obligations et les bénéfices de chacun. Les contrats transposés au domaine du logiciel vont s'appliquer aux classes et aux appels de méthodes pour lesquelles ils vont jouer un rôle identique et décrire de manière précise plusieurs aspects de leur interactions. Le contrat s'applique à la relation entre l'appelant et l'appelé, grâce aux pré-conditions, aux post-conditions et aux invariants, mais il a aussi des conséquences sur l'héritage et la gestion des exceptions et des cas anormaux, sans compter qu'il facilite la documentation.
Les invariants, qui sont définis pour chaque classe, sont les propriétés qui doivent être vérifiées à tout instant et qui seront vérifiées avant et après l'exécution de chaque méthode. Les invariants permettent donc de capturer le sens et les caractéristiques de validité de certaines propriétés des objets.
Les pré-conditions sont des conditions portant sur les arguments en entrée que le client (appelant) a pour devoir de respecter. Si ces conditions ne sont pas respectées, le fournisseur (appelé) n'a pas à s'engager à exécuter correctement la méthode appelée. Les pré-conditions doivent être transparentes, c'est à dire qu'elles doivent être nécessaires et suffisantes pour que l'appelant puisse être servi et obtienne les garanties associées aux post-conditions.
Les post-conditions sont des garanties sur les sorties que le fournisseur (appelé) s'engage à respecter si la méthode s'exécute normalement. Si, lors de l'exécution de la méthode, le fournisseur rencontre une erreur impossible à gérer, il doit alors lancer une exception et peut ne pas respecter les post-conditions. En revanche, il lui est interdit, même s'il rencontre une erreur, de terminer l'exécution et de rendre le contrôle normalement au client, sans respecter ses garanties sur les sorties.
Le mot-clef "old" peut être utilisé dans les post-conditions ou lors du traitement des exceptions pour faire référence à l'état dans lequel était l'objet juste avant l'exécution de la méthode. Ceci permet de paramétrer les garanties sur les sorties ou de tenter un nouvel essai d'exécution après une exception.
Les assertions classiques se retrouvent sous leur forme habituelle pour vérifier une condition dans le corps d'une méthode ou pour faciliter le traitement des boucles, auquel cas on peut définir des invariants de boucles et des conditions pour les variables utilisées dans les boucles. L'idée est donc toujours de faire apparaître au mieux ce qui relève de l'implémentation et ce qui relève de la spécification.
Les exceptions lancées lors de l'exécution de la méthode peuvent être attrapées pour tenter de résoudre le problème localement, sans passer directement le contrôle à l'appelant. Le traitement de ces exceptions peut choisir de modifier l'état de l'objet pour corriger les erreurs et reprendre l'exécution, ou bien restaurer l'état d'origine grâce à "old" et faire un nouvel essai, ou encore agir pour que l'objet soit dans un état cohérent avant de rendre contrôle à l'appelant en lançant une exception.
Lorsqu'une classe hérite d'une autre, elle hérite des contrats associés aux méthodes, mais peut choisir de relâcher les contraintes portant sur le client et de renforcer ses propres garanties. De cette façon, on peut se reposer sur le contrat d'un parent pour appeler la méthode d'un enfant, car les obligations de l'appelant ne peuvent qu'être identiques ou moindres (or qui peut le plus peut le moins) et les garanties de l'appelé ne peuvent qu'être identiques ou supérieures (et abondance de bien ne nuit pas).
Le contrat est une documentation naturelle, car il répond à la question "qu'est-ce que cette classe est supposée faire ?". Plutôt que de se contenter de l'interface, on peut donc utiliser l'interface et le contrat (invariants et pre/post-conditions) comme élement de base de la documentation d'une classe. Ceci est utile lors des spécifications, mais aussi lors de la génération automatique de la documentation à partir du code et de ses commentaires, comme le permettent des outils disponibles dans de nombreux langages.
Suite à cette description, il est important de faire remarquer ce que ne sont pas les contrats.
Les contrats ne sont pas une méthode de programmation défensive. Au contraire, ils servent à se prémunir de ce genre d'attitude qui consiste à toujours vérifier en début de méthode la validité des arguments reçus, puisqu'il est recommandé qu'une méthode ne cherche pas à vérifier dans son corps ce qui a été garanti par les pré-conditions du contrat.
Enfin, les contrats vont bien plus loin que les assertions, qui ne sont en comparaison qu'un mécanisme de base, lequel n'a que peu en commun avec les aspects méthodologiques et l'intégration au modèle objet et à l'héritage qu'offrent les contrats. Il est cependant intéressant de noter que plusieurs langages qui ne proposent pas de programmation par contrats dans leur version de base, utilisent le mécanisme d'assertion, lorsqu'il est disponible, pour mettre en oeuvre les contrats avec des bibliothèques, des préprocesseurs ou d'autres moyens spécialisés.
A l'origine, Bertrand Meyer a appliqué ses idées sur les contrats à son langage Eiffel, qui reste le seul à proposer un mécanisme de contrats faisant partie intégrante du langage. Cependant, de nombreux langages modernes offrent une mise en oeuvre plus ou moins exhaustive des contrats, rajoutée par le biais de pré-processeurs, de méta-programmation, ou d'autres techniques, faisant usage par exemple de la réflexivité lorsqu'elle est disponible. Parmi ces langages, on compte Java, C++, Python, Perl ou d'autres langages spécialisés et moins connus, comme Narval, qui est dédié à la mise en oeuvre d'assistants personnels intelligents.
Nous allons maintenant voir ce que chacun propose et comparer le code obtenu en deux langages, Python et Eiffel, pour un même exemple : le modèle d'un réservoir. Sa capacité est mesurée en litres et on le considère plein lorsqu'il est plein à 97% et vide lorsqu'il est plein à moins de 3%. Les actions possibles sont vider le réservoir, le remplir, ajouter un volume précis ou retirer un volume précis.
Eiffel, en tant que langage d'origine, propose une mise en oeuvre assez exhaustive avec les invariants, les pre et post-conditions, l'utilisation de "old", les formes abrégées de classes utilisées comme documentation et l'intégration avec le mécanisme d'héritage. Eiffel ne propose cependant pas de traitement générique des exceptions et se contente d'un do/rescue/retry : si la méthode décrite par do produit une exception, le contrôle passe à rescue, dans lequel on peut tenter un retry qui reprend l'exécution au début du do. Voir
.
Notre exemple du réservoir peut être implémenté comme suit en Eiffel :
class RESERVOIR
* RESERVOIR modélise un réservoir dont la capacité est déterminée
* à la création et que l'on peut remplir et vider
creation creer feature
capacite: INTEGER
remplissage: INTEGER
capacite_maximale: INTEGER is 2000
invariant
remplissage >= 0
remplissage = 0
capacite 97*capacite
end
ajouter(volume:INTEGER) is
-- Ajouter le volume donné au réservoir
require
remplissage + volume = 0
do
-- code qui contrôle le vidage du réservoir
ensure
remplissage = old remplissage - volume
end
contient(NONE):INTEGER is
-- Renvoie le volume contenu dans le réservoir
do
Result:= remplissage
end
estVide(NONE):BOOLEAN is
-- Teste si le réservoir est vide
do
Result:= (remplissage*100 97*capacite)
end
end -- class RESERVOIR
Une seule mise en oeuvre des contrats est disponible pour python, mais elle utilise au mieux le caractère dynamique du langage grâce à une approche de méta-programmation. Le constructeur des objets que l'on désire voir respecter les contrats renvoie un proxy (au sens des Design Patterns
), qui à chaque appel de méthode prendra soin de conserver une copie de l'objet à laquelle faire référence par la suite avec "old" et extraira de la chaîne de documentation associée à la méthode et à la classe les conditions nécessaires qui seront vérifiées en utilisant le mécanisme d'assertion natif.
Ceci permet, sans modifier l'interpréteur, et en choisissant classe par classe, de faire respecter des invariants, des pre et post-conditions, d'utiliser "old", mais aussi de rajouter un typage fort des arguments des méthodes et cela en conservant les avantages qu'apportent les contrats en matière de documentation puisque les conditions sont conservées dans les commentaires associés aux méthodes et aux classes. Cette mise en oeuvre ne prévoit en l'état rien de particulier concernant les exceptions, mais l'approche de méta-programmation choisie permet d'y porter remède très rapidement en modifiant la classe proxy. Voir .
Notre exemple du réservoir peut être implémenté comme suit en Python :
Java ne propose dans sa version de base ni contrats ni même assertions. Malgré cela, deux mises en oeuvre des contrats sont disponibles pour Java.
jContractor utilise le mécanisme de réflexivité de Java et la possibilité de remplacer le ClassLoader de la machine virtuelle pour remplacer un appel à une méthode par une suite d'appels à la méthode des invariants de classe, sa méthode pré-condition, elle-même, sa méthode post-condition et à nouveau la méthode des invariants, pour peu que ces méthodes aient été correctement nommmées. En cas d'exception, le contrôle est transmis à la méthode de gestion appropriée. jContractor gère donc les invariants, les pre et post-conditions, l'utilisation de "old" et les exceptions génériques, mais l'utilisation des contrats pour la documentation se révèle difficile puisque leur expression est contenue dans des méthodes et n'apparaît donc pas avec les outils classiques comme javadoc. Voir .
iContract est un pré-processeur qui extrait les directives inscrites dans les commentaires précédents les méthodes pour générer le code nécessaire, lequel sera ensuite compilé comme à l'habitude. iContract traite les invariants et les pre et post-conditions. Les directives étant écrites dans les commentaires, le contrats apparaissent naturellement dans la documentation des classes en utilisant les outils habituels. Voir .
Deux mises en oeuvre des contrats sont disponibles pour le C et le C++.
La première est Assertions.h, qui définit tout sous forme de macros qui peuvent être activées au moment de la compilation et transforment les différentes conditions en des assertion de base du langage C. Cette mise en oeuvre est assez exhaustive et comprend les invariants, les pre/post-conditions, les assertions classiques, l'utilisation de old, mais aussi des connecteurs logiques (et, ou, implication, etc.), l'appartenance à un ensemble, la validité de bornes et les comparaisons avec zéro. Le défaut d'Assertions.h est ne ne pas fournir de solution d'intégration avec le mécanisme d'héritage ni avec les outils de génération de documentation. Voir .
La seconde est GNU Nana, qui définit tout sous forme de macros C/C++ sur la base des assertions du langage C et offre, en plus de la possibilité de les désactiver à la compilation, d'autres macros pour faciliter le déboguage avec gdb. Cette mise en oeuvre est très complète et propose, en plus des contrats tels que définis dans Eiffel, des fonctions destinées à faciliter le déboguage et la mesure de certains paramètres, tels que le nombre de cycles consommés par le processeur pour exécuter une fonction, le temps d'exécution, etc. Comme Assertions.h, GNU Nana ne permet pas d'intégrer les contrats avec le mécanisme d'héritage de C++, en revanche, cette solution fournit un générateur de documentation. Voir .
Le langage Narval, développé par Logilab
Logilab est la société pour laquelle travaille l'auteur de cet article
, est dédié à la création d'assistants personnels intelligents. Avec Narval, plutôt que des programmes, on écrit des recettes qui décrivent des comportements que pourra avoir l'assistant. Les recettes sont des enchaînements d'étapes liées par des transitions. Les étapes sont des actions ou des transformations qui acceptent des fragments de XML en entrée et produisent des fragments de XML en sortie. La caractéristique intéressante est que le prototype de ces étapes est constitué de conditions sur le entrées et les sorties exprimées en XPath. Ceci permet à la fois d'expliciter le type des arguments et d'imposer des pre/post conditions. On a cherché à unifier ainsi la signature d'une fonction et la notion de pre/post-condition en les formulant comme une extension du typage. Ces prototypes servent de documentation pour les étapes, mais sont aussi employés pour la plannification automatique, auquel cas leur utilisation se rapproche des prédicats en logique. Dans ce langage, il n'y a cependant pas d'héritage des actions, car il est mis en oeuvre à un niveau inférieur dans l'écriture des bibliothèques. De plus, la spécialisation des conditions sur les entrées et les sorties ne se fait que par ajout et renforcement. Voir .
Des mises en oeuvre des contrats existent aussi dans d'autres langages, n'hésitez donc pas à partir à leur recherche sur internet. Les amateurs de perl sont les plus chanceux puisqu'un module ad-hoc est disponible sur CPAN .
La programmation par contrat, de même que l'approche orientée-objet qu'elle vient renforcer, est une méthode qui permet de formaliser les problèmes et leur solution à un niveau d'abstraction où ils trouvent une expression claire. C'est en l'occurence une avancée nette par rapport aux mécanismes d'assertion ou de typage fort disponibles dans plusieurs langages.
Bien que les contrats apportent un niveau de formalisme et d'abstraction supérieur, ils ne constituent pas pour autant une marche difficile à franchir. Etant parfaitement intégré au modèle objet, ils sont facilement abordables et compréhensibles, ce qui les rend rapidement utilisables et permet d'en retirer un bénéfice direct.
De plus comme il font partie du programme, ils évitent de creuser l'habituel fossé qui sépare langage de spécification ou de preuve formelle et langage de réalisation.
Les contrats facilitent toutes les étapes du développement, des spécifications aux tests et au déboguage en passant par la documentation, car ils permettent de comparer ce que le programme est supposé faire avec ce qu'il fait réellement.
On ne peut même pas reprocher aux contrats d'imposer un compromis gênant qui contraindrait à échanger cette sécurité supplémentaire contre une dégradation des performances puisque la plupart des mises en oeuvre permettent de supprimer la vérification des contrats. Le même code source peut donc être utilisé avec les contrats activés lors du développement et des tests, puis sans les contrats lorsqu'il est déployé et que l'on souhaite améliorer les temps d'exécution.
Lorsqu'on souhaite réutiliser un composant logiciel, les contrats servent à la fois de documentation et de garantie que le comportement attendu sera obtenu. Leur avantage par rapport à des spécifications est d'être indissociables du code source et facilement activables pour vérifier qu'ils sont correctement utilisés. On pourra se reporter à ce sujet aux mésaventures du lanceur européen Ariane 5
.
Comparativement aux autres méthodes disponibles dans la panoplie de l'ingénieur logiciel pour éviter d'introduire des défauts ou pour détecter et supprimer ceux que l'on aurait introduits, les contrats sont particulièrement rentables et offrent un rapport élévé entre le bénéfice pour qualité et l'effort consenti tout au long du développement.
Cet article a cherché à montrer ce que peuvent apporter les contrats au développement logiciel, qu'il s'agisse de l'analyse et des spécifications, de la documentation, des tests et du déboguage, de la robustesse, ou de la réutilisation de composants. Ces avantages des contrats sont autant de facteurs pour améliorer la qualité, qui doit être présente dès l'origine et non simplement vérifiée à la fin du développement.
Si les contrats sont si avantageux, pourquoi ne sont-ils pas plus largement répandus ? Probablement par manque d'éducation et de publicité, mais aussi parce qu'ils ne font pas partie des versions de base de la plupart des langages modernes. Cet article aura tenté de vous faire connaître les différentes mises en oeuvre disponibles et d'apporter ainsi sa modeste pierre à l'édifice...
- Défaut
- Propriété d'un logiciel qui doit et peut être améliorée.
- CASE
- Computer Assisted Software Engineering.
- Revue
- Une personne qui n'a pas participé à la réalisation commente et critique les choix et les résultats.
|
Séduite par la compacité, l’expressivité et la richesse de ce langage, Logilab a fait le choix de Python dès sa création en 2000. Elle a participé à la diffusion de ce langage en France au travers de nombreuses présentations et formations auprès de grands comptes privés et publics.
Spécialiste de Python en France, Logilab réalise la plupart de ses développements avec ce langage et participe à ses développements futurs, comme ce fut le cas en 2004 pour le démarrage du projet PyPy financé en partie par le programme de recherche commun de l'Union Européenne.
Au fil des années, Python est devenu le langage de prédilection pour les applications scientifiques, d'analyse de données, et d'apprentissage automatique. Depuis sa création, Logilab participe à cette évolution et continue à partager ses connaissances dans ce domaine au travers de nombreuses formations. |
Recourir aux services Logilab, c'est faire appel à une équipe d'experts à votre écoute capables de concevoir pour vous la meilleure solution à partir de vos besoins et des techniques innovantes qui seront le quotidien de demain, dans le souci permanent de la qualité. Dès sa création, Logilab a eu pour politique d'utiliser la
technologie non pas comme une fin en soi mais comme un matériau
permettant de répondre à des besoins. C'est pourquoi a été créé très
rapidement le centre de compétences Logilab
regroupant des experts venus d'horizons différents, à même de réaliser
des solutions répondant à des problèmes ardus ou inhabituels.
S'il agit comme un véritable pont entre le monde de la recherche et ses
dernières innovations techniques et le monde de l'industrie, le centre
de compétences Logilab n'en garde pas moins une approche
industrielle garantissant le respect des coûts et des délais lors de la
conception et la réalisation d'un logiciel ou lors de prestations de
service.
En s'adossant à ce centre de compétences, Logilab est donc à même de
proposer à ses clients des services de grande qualité.
Formation
Les formations sont animées par des experts du sujet et adaptées aux
besoins des participants, sur la base du catalogue.
Conseil
Les experts de Logilab peuvent vous accompagner durant toutes les
étapes de vos projets.
Développement
Les équipes de Logilab peuvent être mises à votre disposition pour
réaliser la conception, le développement ou la maintenance de vos
logiciels (y compris Logiciels Libres).
Intégration
Les experts de Logilab sont idéalement placés pour vous aider à
intégrer à votre système d'information les produits de Logilab et
les Logiciels Libres qui relèvent de ses domaines de compétences.
L'équipe commerciale de Logilab est à votre disposition
pour vous apporter toute précision supplémentaire sur les services
exposés sur cette page. En particulier,elle pourra vous aider à
formaliser vos besoins et vous proposer une prestation adaptée à
ceux-ci. |
|