Architecture matériel et logiciel 2 Bibliothèques et chargement de composantes dynamiques Venera Arnaoudova 1/27/10 1
Réécrire versus réualiser Critères La taille du logiciel La foncaonnalité L experase L échéancier Performance Prototypage Autres? 1/27/10 2
Bibliothèques et cadriciels DéfiniAons: «Bibliothèque [library] logicielle est un ensemble de fonc4ons u4litaires, regroupées et mises à disposi4on afin de pouvoir être u4lisées sans avoir à les réécrire» [Wikipedia] Exemples: java.ual STL en C++ 1/27/10 3
Bibliothèques et cadriciels DéfiniAons: «Un cadriciel [framework] est un espace de travail modulaire. C'est un ensemble de bibliothèques, d'ou4ls et de conven4ons permegant le développement de programmes.» [Wikipedia] Exemples: Rails Spring Zend Junit Eclipse Equinox OSGI 1/27/10 4
Bibliothèques et cadriciels Deux façons de réualisaaon Boite blanche réualiser des paraes dans leur version originale ou modifiée Boite noire réualiser enaèrement, aucune modificaaon Types d interconnexions Problèmes techniques Problèmes légaux 1/27/10 5
Types d interconnexions Chaînage des liens (linking) DuplicaAon de processus (fork) Protocole de communicaaon (IPC) Sous classage Chargement dynamique 1/27/10 6
Chaînage des liens Comment : appeler des foncaon/méthodes Chainage des liens staaque Avant que le programme soit exécuté Fichiers exécutables sont produits Chainage des liens dynamique Après que le système a été chargé pour exécuaon en mémoire. 1/27/10 7
DuplicaAon de processus CréaAon de processus fork() Java.lang.ProcessBuilder ExécuAon autonome CommunicaAon via des Canaux de communicaaons (pipes) Sockets Fichiers 1/27/10 8
Protocole de communicaaon (IPC) RPC (Remote Procedure Call) procédures distantes RMI (Remote Method InvocaAon) pour les systèmes orientés objets (Java) CORBA (Common Object Request Broker Architecture) DCOM (Distributed Component Data Object) 1/27/10 9
Sous classage Crochets (hooks) et gabarits (templates) Points chauds (hot spots) = crochets Points gelés (frozenspots) = gabarits Crochets sont des méthodes abstraites ou qui peuvent/doivent être spécialisés par le client Gabarits sont des méthodes qui appellent des crochets et qui décrivent le «quoi» 1/27/10 10
Chargement dynamique En deux mots Dans différents langage de programmaaon (Lisp, C ++, Java, Smalltalk ), c est la possibilité de lier un «bout de code» au programme pendant l exécuaon du programme En Java, c est la possibilité de lier une classe, créer une instance de cepe classe et exécuter une de ces méthodes pendant l exécuaon du programme 1/27/10 11
Chargement dynamique En deux mots Exemple, classe enveloppante (wrapper) public final class WrapperMain { public static void main(string[] args) { try { Class toberun = Class.forName(args[0]); Method mainmethod = toberun.getmethod("main", new Class[] { String[].class }); final long starttime = System.currentTimeMillis(); mainmethod.invoke(null, new Object[] { new String[0] }); final long endtime = System.currentTimeMillis(); System.out.println(); System.out.println(endTime - starttime); } catch (final Exception e) { e.printstacktrace(output.getinstance().erroroutput()); } } } 1/27/10 12
Chargement dynamique En deux mots IntrospecAon Capacité d un programme à s observer Intercession Capacité d un programme à se modifier 1/27/10 13
Chargement dynamique Meta classes La classe «Class» est la classe dont les instances sont des classes La classe «Class» est en fait un méta classe Une méta classes est une classe qui décrit les classes, comme une classe décrit des instances 1/27/10 14
Chargement dynamique Meta classes Une méta méta classes est une classe qui Une méta méta méta classes est une classe qui [hpp://www.developper.com] 1/27/10 15
Problèmes techniques Chainage des liens Dynamique versus staaque Performance Maintenabilité Sécurité 1/27/10 16
Problèmes légaux Une licence est un ensemble de droits Chaque droit est un ensemble de conjoncaons Deux licences ne sont compaables que si leurs droits sont compaables 1/27/10 17
FSF versus OSI Free Sotware FoundaAon (FSF) Free Sotware DefiniAon (FSD) Open Source IniAaAve (OSI) Open Source DefiniAon (OSD) Aspect praaque, plutôt que éthique Critères différents 1/27/10 18
Open Source DefiniAon (OSD) Libre redistribuaon Pas de restricaons de redistribuaons et de vente Ne doit pas exiger des redevances Code source Disponible et distribuable Interdit de l obscurcir Dérivées Doit permepre de modifier/dériver et de distribuer les dérivées sous la même licence 1/27/10 19
Open Source DefiniAon (OSD) Intégrité du code de l auteur InterdicAon de modifier le code source est permise si les fichiers de correcaons sont permis AutorisaAon explicite de distribuer un logiciel basé sur le code source modifié Peut exiger que les dérivées portent un nom et/ou version différentes de la licence d origine Pas de discriminaaon de personnes/groupes Pas de restricaon de domaine d ualisaaon 1/27/10 20
Open Source DefiniAon (OSD) DistribuAon de licence Les droits apachés au logiciel s appliques à tous ceux, à qui le logiciel a été distribué Pas de spécificité relaave à un produit Pas de restricaon d autres logiciels Indépendante de la technologie 1/27/10 21
Exemple de Licences Héréditaire (Hereditary) GNU GPL (General Public License) GNU LGPL (Lesser General Public License) MPL (Mozilla Public License) CDDL (Common Development and DistribuAon License) Liberal (Permissive) BSD (Berkeley Sotware DistribuAon) MIT (Massachuseps InsAtute of Technology) Apache 1/27/10 22
GPL Copier à volonté a condiaon que la licence et les droits d auteur sont préservés. Pas d engagement formel sauf si un tel engagement est offert par le distributeur Interdit d imposer plus de restricaons Autorisé de modifier et redistribué à condiaon de donner les mêmes droits ExecuAon versus modificaaon (dérivée) 1/27/10 23
LGPL Autorisé d ualiser des paraes du programme d origine non modifiées ModificaAon: LGPL => LGPL Chainage des liens versus modificaaon ApplicaAon relié à une librairie LGPL doit permepre de remplacer cepe dernière. Chainage des liens dynamique versus staaque 1/27/10 24
BSD Versions différentes Version 4 clauses (iniaale) Version 3 clauses (nouvelle) RedistribuAon source/binaire modifié ou pas est autorisé à condiaon de: Garder la noace des droits de l auteur RedistribuAon du code binaire doit reproduire la noace dans la documentaaon 1/27/10 25
MIT «Permission is hereby granted, free of charge, to any person obtaining a copy of this sotware and associated documentaaon files (the "Sotware"), to deal in the Sotware without restricaon, including without limitaaon the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Sotware, and to permit persons to whom the Sotware is furnished to do so, subject to the following condiaons: The above copyright noace and this permission noace shall be included in all copies or substanaal poraons of the Sotware.» 1/27/10 26
Apache Version 1.0 Abandonné pour la clause de publicité Version 1.1 Version 2.0 Plus formelle «template license» 1/27/10 27
Autres # The Beer Ware License (Revision 42) # < tobez@tobez.org > wrote this file. As long as you retain this noace you # can do whatever you want with this stuff. If we meet some day, and you think # this stuff is worth it, you can buy me a beer in return. Anton Berezin 1/27/10 28
Problèmes légaux Exemple S est MPL 1.1 et C1 et C2 sont GPL 2 GPL s4pule que «Tous produits dérivés de C 1 (C 2 ) doit être sous licence GPL 2» S est MPL 1.1 => L intégra4on de C1 et C1 dans S est impossible 1/27/10 29
Exemple Bugzilla Système de suivi des bogues. UAlise 82 paquetages 10 licences différentes BSD (plusieurs versions) ArAsAc v1 GNU GPL (plusieurs versions) MIT Apache v2 IBM Public License v1.0 1/27/10 30
IncompaAbilité de licences Chaque licence a ses droits et ses restricaons Abandonner la réualisaaon? Choisir des composants avec la même licence toujours? Essayer de résoudre l incompaabilité? Comment? license mismatch problem [German et al.] 1/27/10 31
SoluAons? Koders.com par Black Duck Sotware Chercher des composantes en spécifiant le type de licence FOSSology par HP IdenAfier les licences à parar du code source 1/27/10 32
Patron d intégraaon de licences [German et al.] Analyse manuelle de plus de composants (Bugzilla, MySQL, GCC, etc.) UAlisaAon de graph de dépendances pour les modèles IdenAficaAon des licences IdenAficaAon d incompaabilités entre les licences 1/27/10 33
Patron d intégraaon de licences [German et al.] Concédant de licence ou autorisant (Licensor) ExcepAon Autoriser une ualisaaon spécifique en étendant la licence sans modifier le texte Example: Qt (GNU LGPL, GNU GPL with Qt special excepaon) DisjuncAve Plusieurs licences à la fois Exemples: Mozilla Core, Qt 1/27/10 34
Patron d intégraaon de licences [German et al.] Concédant de licence ou autorisant (Licensor) ClarificaAon Donner une interprétaaon pour les paraes ambigües de la licence Permit Relicensing Une licence différente pour le travail dérivé que la licence d origine Add on CommunicaAon de composants incompaables en étendant la foncaonnalité d un autre composant via une API. 1/27/10 35
Patron d intégraaon de licences [German et al.] Concédant de licence ou autorisant (Licensor) Indirect License Un composant définit sa licence en étant pareille qu une autre. Different part, different licenses Donner des licences différentes aux différentes paraes du système 1/27/10 36
Patron d intégraaon de licences [German et al.] Déteneur de permis (Licensee) Patch Pour autoriser de modifier sans créer un travail dérivé. Component with compaable license Trouver un composant compaable Create collecave Ask for excepaon Demande d excepaon Ask for clarificaaon Demande de clarificaaon 1/27/10 37
Références Transparents empruntés à Dr. Yann Gaël Guéhéneuc Daniel M. German and Ahmed E. Hassan ; License Integra4on PaGern: Dealing with Licenses Mismatches in Component based Development; ICSE, May 2009, ACM Press. Karim Yaghmour, Jon Masters, Gilad Ben Yossef, and Philippe Gerum (2008). Building embedded Linux Systems. O Reilly Media, Inc. 1/27/10 38
Références Open Source IniAaAve hpp://opensource.org/ Heather J. Meeker (2008). The Open Source AlternaAve: Understanding Risks and Leveraging OpportuniAes. John Wiley & Sons, Inc. 1/27/10 39