984 resultados para Open-source code
Resumo:
Currency is something people deal with every day in their lives. The contemporary society is very much revolving around currencies. Even though technological development has been rapid, the principle of currency has stayed relatively unchanged for a long time. Bitcoin is a digital currency that introduced an alternative to other digital currencies, and to the traditional physical currencies. Bitcoin is peer-to-peer, open source, and it erases the need of a third party in transactions. Bitcoin has since inception gained certain fame, but it has not established itself as a common currency in the world. The purpose of this study was to analyse what kind of potential does Bitcoin have to become a widely accepted currency in day-to-day transactions. The main research question was divided into three sub questions: • What kind of a process is the diffusion of new innovations? • What kinds of factors speak for the wider adoption of Bitcoin? • What kinds of factors speak against the wider adoption of Bitcoin? The purpose of the study was approached by having diffusion of innovations as the theoretical framework. The four elements in diffusion of innovations are, innovation, communication, time, and social system. The theoretical framework is applied to Bitcoin, and the research questions answered by analysing Bitcoin’s potential diffusion prospects. The body of research data consisted of media texts and statistics. In this study, content analysis was the research method. The main findings of the study are that Bitcoin has clear strengths, but it faces a large amount of uncertainty. Bitcoin’s strong areas are the transactions. They are fast, easy, and cheap. From the innovation diffusion perspective Bitcoin is still relatively unknown, and the general public’s attitudes towards it are sceptical. The research findings purport that Bitcoin has potential demand especially when the financial system of a region is dysfunctional, or when there is a financial crisis. Bitcoin is not very trusted, and the majority of people do not see a reason to start using Bitcoin in the future. A large number of people associate it with illegal activities. In general people are largely unaware of what Bitcoin is or what are the strengths and weaknesses. Bitcoin is an innovative alternative currency. However, unless people see a major need for Bitcoin due to a financial crisis, or dysfunctionality in the financial system, Bitcoin will not become much more widespread as it is today. Bitcoin’s underlying technology can be harnessed to multiple uses. Developments in that field in the future are something that future researchers could look into.
Resumo:
Vakaviin reaktorionnettomuuksiin liittyviä ilmiöitä on tutkittu jo 1980-luvulta lähtien ja tutkitaan edelleen. Ilmiöt liittyvät reaktorisydämen ja muiden paineastian sisäisten materi-aalien sulamiseen sekä reagointiin veden ja höyryn kanssa. Ilmiöt on myös tärkeää tuntea ja niiden esiintymistä mallintaa käytössä olevilla laitoksilla, jotta voidaan varmistua turval-lisuusjärjestelmien riittävyydestä. Olkiluoto 1 ja 2 laitosten käyttölupa uusitaan vuoteen 2018 mennessä. Lupaprosessiin liit-tyy analyysejä, joissa mallinnetaan laitosten toimintaa vakavassa reaktorionnettomuudessa. Näiden analyysien tekoon Teollisuuden Voima Oyj on käyttänyt ohjelmaa nimeltä MEL-COR jo vuodesta 1994 lähtien. Käytössä on ollut useita eri ohjelmaversioita ja viimeisin niistä on 1.8.6, joka riittää vielä tulevan käyttöluvan uusintaprojektiin liittyvien analyysien tekoon. MELCOR:n vanhaa 1.8.6 ohjelmaversioita ei kuitenkaan enää päivitetä, joten siirtyminen uudempaan 2.1 versioon on tulevaisuudessa välttämätöntä. Uusimman versiopäivityksen yhteydessä on kuitenkin muuttunut koko ohjelman lähdekoodi ja vanhojen laitosmallien käyttö uudessa ohjelmaversiossa vaatii tiedostojen konvertoinnin. Tässä työssä esitellään MELCOR-version 2.1 ominaisuuksia ja selvitetään, mitä 1.8.6 versioon luotujen laitosmal-lien käyttöönotto versiossa 2.1 vaatii. Vaatimusten määrittelemiseksi laitosmalleilla tehdään ajoja molemmilla ohjelmaversioilla ja erilaisilla onnettomuuden alkutapahtuman määrittelyillä. Tulosten perusteella arvioidaan ohjelmaversioiden eroja ja pohditaan mitä puutteita laitosmalleihin konversion jälkeen jää. Näiden perusteella arvioidaan mitä jatkotoimenpiteitä konversio vaatii.
Resumo:
Internet of Things or IoT is revolutionizing the world we are living in, similarly the way Internet and the web did few decades ago. It is changing how we interact with the things surrounding us. Electronic health and remote patient monitoring are the ways of utilizing these technological improvements towards the healthcare. There are many applications of IoT in eHealth such as, it will open the gate to provide healthcare to the remote areas of the world, where healthcare through traditional hospital systems cannot be provided. To connect these new eHealth IoT systems with the existing healthcare information systems, we can use the existing interoperability standards commonly used in healthcare information systems. In this thesis we implemented an eHealth IoT system based on Health Level 7 interoperability standard for continuous data transmission. There is not much previous work done in implementing the HL7 for continuous sensor data transmission. Some of the previous work was limited to sensors which are not continuous in nature and some of it is only theatrical architecture. This thesis aims to prove that it is possible to implement an eHealth IoT system by using sensors which require continues data transmission, such as respiratory sensors, and to connect it with the existing eHealth information system semantically by using HL7 interoperability standard. This system will be beneficial in implementing eHealth IoT systems for those patients, who requires continuous healthcare personal monitoring. This includes elderly people and patients, whose health need to be monitored constantly. To implement the architecture, HL7 v2.5 is selected due to its ease of implementation and low size. We selected some open source technologies because of their open licenses and large developer community. We will also review the most efficient technology available in every layer of eHealth IoT system and will propose an efficient system.
Resumo:
The goal of most clustering algorithms is to find the optimal number of clusters (i.e. fewest number of clusters). However, analysis of molecular conformations of biological macromolecules obtained from computer simulations may benefit from a larger array of clusters. The Self-Organizing Map (SOM) clustering method has the advantage of generating large numbers of clusters, but often gives ambiguous results. In this work, SOMs have been shown to be reproducible when the same conformational dataset is independently clustered multiple times (~100), with the help of the Cramérs V-index (C_v). The ability of C_v to determine which SOMs are reproduced is generalizable across different SOM source codes. The conformational ensembles produced from MD (molecular dynamics) and REMD (replica exchange molecular dynamics) simulations of the penta peptide Met-enkephalin (MET) and the 34 amino acid protein human Parathyroid Hormone (hPTH) were used to evaluate SOM reproducibility. The training length for the SOM has a huge impact on the reproducibility. Analysis of MET conformational data definitively determined that toroidal SOMs cluster data better than bordered maps due to the fact that toroidal maps do not have an edge effect. For the source code from MATLAB, it was determined that the learning rate function should be LINEAR with an initial learning rate factor of 0.05 and the SOM should be trained by a sequential algorithm. The trained SOMs can be used as a supervised classification for another dataset. The toroidal 10×10 hexagonal SOMs produced from the MATLAB program for hPTH conformational data produced three sets of reproducible clusters (27%, 15%, and 13% of 100 independent runs) which find similar partitionings to those of smaller 6×6 SOMs. The χ^2 values produced as part of the C_v calculation were used to locate clusters with identical conformational memberships on independently trained SOMs, even those with different dimensions. The χ^2 values could relate the different SOM partitionings to each other.
Resumo:
Distribués sous des licences permissives qui assurent des droits d'utilisation, de modification et de redistribution aux licenciés, l'élaboration des logiciels libres est fondée sur un modèle de développement décentralisé. Ces caractéristiques posent de nombreux défis au milieu juridique, particulièrement en ce qui a trait à la responsabilité civile. Ainsi, les développeurs se demandent dans quelles circonstances leur responsabilité civile peut être engagée suite à la défaillance de leur logiciel libre. De la même façon, ils questionnent la possibilité d'appliquer cette responsabilité à un nombre important de développeurs dispersés aux quatre coins du globe. L'analyse présentée montre que le droit, tel qu'il existe actuellement, est en mesure de résoudre la majorité des problèmes relatifs à la détermination et l'application de la responsabilité civile en matière de logiciels libres. Les règles de la responsabilité civile représentent donc un risque potentiel pour les développeurs de logiciels libres, même s'ils sont relativement bien protégés par les contextes juridiques et factuels.
Resumo:
"Mémoire présenté à la Faculté des études supérieures en vue de l'obtention du grade de LL.M. en droit option droit des technologies de l'information"
Resumo:
L'utilisation des méthodes formelles est de plus en plus courante dans le développement logiciel, et les systèmes de types sont la méthode formelle qui a le plus de succès. L'avancement des méthodes formelles présente de nouveaux défis, ainsi que de nouvelles opportunités. L'un des défis est d'assurer qu'un compilateur préserve la sémantique des programmes, de sorte que les propriétés que l'on garantit à propos de son code source s'appliquent également au code exécutable. Cette thèse présente un compilateur qui traduit un langage fonctionnel d'ordre supérieur avec polymorphisme vers un langage assembleur typé, dont la propriété principale est que la préservation des types est vérifiée de manière automatisée, à l'aide d'annotations de types sur le code du compilateur. Notre compilateur implante les transformations de code essentielles pour un langage fonctionnel d'ordre supérieur, nommément une conversion CPS, une conversion des fermetures et une génération de code. Nous présentons les détails des représentation fortement typées des langages intermédiaires, et les contraintes qu'elles imposent sur l'implantation des transformations de code. Notre objectif est de garantir la préservation des types avec un minimum d'annotations, et sans compromettre les qualités générales de modularité et de lisibilité du code du compilateur. Cet objectif est atteint en grande partie dans le traitement des fonctionnalités de base du langage (les «types simples»), contrairement au traitement du polymorphisme qui demande encore un travail substantiel pour satisfaire la vérification de type.
Resumo:
La recherche en génie logiciel a depuis longtemps tenté de mieux comprendre le processus de développement logiciel, minimalement, pour en reproduire les bonnes pratiques, et idéalement, pour pouvoir le mécaniser. On peut identifier deux approches majeures pour caractériser le processus. La première approche, dite transformationnelle, perçoit le processus comme une séquence de transformations préservant certaines propriétés des données à l’entrée. Cette idée a été récemment reprise par l’architecture dirigée par les modèles de l’OMG. La deuxième approche consiste à répertorier et à codifier des solutions éprouvées à des problèmes récurrents. Les recherches sur les styles architecturaux, les patrons de conception, ou les cadres d’applications s’inscrivent dans cette approche. Notre travail de recherche reconnaît la complémentarité des deux approches, notamment pour l’étape de conception: dans le cadre du développement dirigé par les modèles, nous percevons l’étape de conception comme l’application de patrons de solutions aux modèles reçus en entrée. Il est coutume de définir l’étape de conception en termes de conception architecturale, et conception détaillée. La conception architecturale se préoccupe d’organiser un logiciel en composants répondant à un ensemble d’exigences non-fonctionnelles, alors que la conception détaillée se préoccupe, en quelque sorte, du contenu de ces composants. La conception architecturale s’appuie sur des styles architecturaux qui sont des principes d’organisation permettant d’optimiser certaines qualités, alors que la conception détaillée s’appuie sur des patrons de conception pour attribuer les responsabilités aux classes. Les styles architecturaux et les patrons de conception sont des artefacts qui codifient des solutions éprouvées à des problèmes récurrents de conception. Alors que ces artefacts sont bien documentés, la décision de les appliquer reste essentiellement manuelle. De plus, les outils proposés n’offrent pas un support adéquat pour les appliquer à des modèles existants. Dans cette thèse, nous nous attaquons à la conception détaillée, et plus particulièrement, à la transformation de modèles par application de patrons de conception, en partie parce que les patrons de conception sont moins complexes, et en partie parce que l’implémentation des styles architecturaux passe souvent par les patrons de conception. Ainsi, nous proposons une approche pour représenter et appliquer les patrons de conception. Notre approche se base sur la représentation explicite des problèmes résolus par ces patrons. En effet, la représentation explicite du problème résolu par un patron permet : (1) de mieux comprendre le patron, (2) de reconnaître l’opportunité d’appliquer le patron en détectant une instance de la représentation du problème dans les modèles du système considéré, et (3) d’automatiser l’application du patron en la représentant, de façon déclarative, par une transformation d’une instance du problème en une instance de la solution. Pour vérifier et valider notre approche, nous l’avons utilisée pour représenter et appliquer différents patrons de conception et nous avons effectué des tests pratiques sur des modèles générés à partir de logiciels libres.
Resumo:
Dans le développement logiciel en industrie, les documents de spécification jouent un rôle important pour la communication entre les analystes et les développeurs. Cependant, avec le temps, les changements de personel et les échéances toujours plus courtes, ces documents sont souvent obsolètes ou incohérents avec l'état effectif du système, i.e., son code source. Pourtant, il est nécessaire que les composants du système logiciel soient conservés à jour et cohérents avec leurs documents de spécifications pour faciliter leur développement et maintenance et, ainsi, pour en réduire les coûts. Maintenir la cohérence entre spécification et code source nécessite de pouvoir représenter les changements sur les uns et les autres et de pouvoir appliquer ces changements de manière cohérente et automatique. Nous proposons une solution permettant de décrire une représentation d'un logiciel ainsi qu'un formalisme mathématique permettant de décrire et de manipuler l'évolution des composants de ces représentations. Le formalisme est basé sur les triplets de Hoare pour représenter les transformations et sur la théorie des groupes et des homomorphismes de groupes pour manipuler ces transformations et permettrent leur application sur les différentes représentations du système. Nous illustrons notre formalisme sur deux représentations d'un système logiciel : PADL, une représentation architecturale de haut niveau (semblable à UML), et JCT, un arbre de syntaxe abstrait basé sur Java. Nous définissons également des transformations représentant l'évolution de ces représentations et la transposition permettant de reporter les transformations d'une représentation sur l'autre. Enfin, nous avons développé et décrivons brièvement une implémentation de notre illustration, un plugiciel pour l'IDE Eclipse détectant les transformations effectuées sur le code par les développeurs et un générateur de code pour l'intégration de nouvelles représentations dans l'implémentation.
Resumo:
Lors de ces dix dernières années, le coût de la maintenance des systèmes orientés objets s'est accru jusqu' à compter pour plus de 70% du coût total des systèmes. Cette situation est due à plusieurs facteurs, parmi lesquels les plus importants sont: l'imprécision des spécifications des utilisateurs, l'environnement d'exécution changeant rapidement et la mauvaise qualité interne des systèmes. Parmi tous ces facteurs, le seul sur lequel nous ayons un réel contrôle est la qualité interne des systèmes. De nombreux modèles de qualité ont été proposés dans la littérature pour contribuer à contrôler la qualité. Cependant, la plupart de ces modèles utilisent des métriques de classes (nombre de méthodes d'une classe par exemple) ou des métriques de relations entre classes (couplage entre deux classes par exemple) pour mesurer les attributs internes des systèmes. Pourtant, la qualité des systèmes par objets ne dépend pas uniquement de la structure de leurs classes et que mesurent les métriques, mais aussi de la façon dont celles-ci sont organisées, c'est-à-dire de leur conception, qui se manifeste généralement à travers les patrons de conception et les anti-patrons. Dans cette thèse nous proposons la méthode DEQUALITE, qui permet de construire systématiquement des modèles de qualité prenant en compte non seulement les attributs internes des systèmes (grâce aux métriques), mais aussi leur conception (grâce aux patrons de conception et anti-patrons). Cette méthode utilise une approche par apprentissage basée sur les réseaux bayésiens et s'appuie sur les résultats d'une série d'expériences portant sur l'évaluation de l'impact des patrons de conception et des anti-patrons sur la qualité des systèmes. Ces expériences réalisées sur 9 grands systèmes libres orientés objet nous permettent de formuler les conclusions suivantes: • Contre l'intuition, les patrons de conception n'améliorent pas toujours la qualité des systèmes; les implantations très couplées de patrons de conception par exemple affectent la structure des classes et ont un impact négatif sur leur propension aux changements et aux fautes. • Les classes participantes dans des anti-atrons sont beaucoup plus susceptibles de changer et d'être impliquées dans des corrections de fautes que les autres classes d'un système. • Un pourcentage non négligeable de classes sont impliquées simultanément dans des patrons de conception et dans des anti-patrons. Les patrons de conception ont un effet positif en ce sens qu'ils atténuent les anti-patrons. Nous appliquons et validons notre méthode sur trois systèmes libres orientés objet afin de démontrer l'apport de la conception des systèmes dans l'évaluation de la qualité.
Resumo:
Les sociétés modernes dépendent de plus en plus sur les systèmes informatiques et ainsi, il y a de plus en plus de pression sur les équipes de développement pour produire des logiciels de bonne qualité. Plusieurs compagnies utilisent des modèles de qualité, des suites de programmes qui analysent et évaluent la qualité d'autres programmes, mais la construction de modèles de qualité est difficile parce qu'il existe plusieurs questions qui n'ont pas été répondues dans la littérature. Nous avons étudié les pratiques de modélisation de la qualité auprès d'une grande entreprise et avons identifié les trois dimensions où une recherche additionnelle est désirable : Le support de la subjectivité de la qualité, les techniques pour faire le suivi de la qualité lors de l'évolution des logiciels, et la composition de la qualité entre différents niveaux d'abstraction. Concernant la subjectivité, nous avons proposé l'utilisation de modèles bayésiens parce qu'ils sont capables de traiter des données ambiguës. Nous avons appliqué nos modèles au problème de la détection des défauts de conception. Dans une étude de deux logiciels libres, nous avons trouvé que notre approche est supérieure aux techniques décrites dans l'état de l'art, qui sont basées sur des règles. Pour supporter l'évolution des logiciels, nous avons considéré que les scores produits par un modèle de qualité sont des signaux qui peuvent être analysés en utilisant des techniques d'exploration de données pour identifier des patrons d'évolution de la qualité. Nous avons étudié comment les défauts de conception apparaissent et disparaissent des logiciels. Un logiciel est typiquement conçu comme une hiérarchie de composants, mais les modèles de qualité ne tiennent pas compte de cette organisation. Dans la dernière partie de la dissertation, nous présentons un modèle de qualité à deux niveaux. Ces modèles ont trois parties: un modèle au niveau du composant, un modèle qui évalue l'importance de chacun des composants, et un autre qui évalue la qualité d'un composé en combinant la qualité de ses composants. L'approche a été testée sur la prédiction de classes à fort changement à partir de la qualité des méthodes. Nous avons trouvé que nos modèles à deux niveaux permettent une meilleure identification des classes à fort changement. Pour terminer, nous avons appliqué nos modèles à deux niveaux pour l'évaluation de la navigabilité des sites web à partir de la qualité des pages. Nos modèles étaient capables de distinguer entre des sites de très bonne qualité et des sites choisis aléatoirement. Au cours de la dissertation, nous présentons non seulement des problèmes théoriques et leurs solutions, mais nous avons également mené des expériences pour démontrer les avantages et les limitations de nos solutions. Nos résultats indiquent qu'on peut espérer améliorer l'état de l'art dans les trois dimensions présentées. En particulier, notre travail sur la composition de la qualité et la modélisation de l'importance est le premier à cibler ce problème. Nous croyons que nos modèles à deux niveaux sont un point de départ intéressant pour des travaux de recherche plus approfondis.
Resumo:
L'ensemble de mon travail a été réalisé grâce a l'utilisation de logiciel libre.
Resumo:
Les changements sont faits de façon continue dans le code source des logiciels pour prendre en compte les besoins des clients et corriger les fautes. Les changements continus peuvent conduire aux défauts de code et de conception. Les défauts de conception sont des mauvaises solutions à des problèmes récurrents de conception ou d’implémentation, généralement dans le développement orienté objet. Au cours des activités de compréhension et de changement et en raison du temps d’accès au marché, du manque de compréhension, et de leur expérience, les développeurs ne peuvent pas toujours suivre les normes de conception et les techniques de codage comme les patrons de conception. Par conséquent, ils introduisent des défauts de conception dans leurs systèmes. Dans la littérature, plusieurs auteurs ont fait valoir que les défauts de conception rendent les systèmes orientés objet plus difficile à comprendre, plus sujets aux fautes, et plus difficiles à changer que les systèmes sans les défauts de conception. Pourtant, seulement quelques-uns de ces auteurs ont fait une étude empirique sur l’impact des défauts de conception sur la compréhension et aucun d’entre eux n’a étudié l’impact des défauts de conception sur l’effort des développeurs pour corriger les fautes. Dans cette thèse, nous proposons trois principales contributions. La première contribution est une étude empirique pour apporter des preuves de l’impact des défauts de conception sur la compréhension et le changement. Nous concevons et effectuons deux expériences avec 59 sujets, afin d’évaluer l’impact de la composition de deux occurrences de Blob ou deux occurrences de spaghetti code sur la performance des développeurs effectuant des tâches de compréhension et de changement. Nous mesurons la performance des développeurs en utilisant: (1) l’indice de charge de travail de la NASA pour leurs efforts, (2) le temps qu’ils ont passé dans l’accomplissement de leurs tâches, et (3) les pourcentages de bonnes réponses. Les résultats des deux expériences ont montré que deux occurrences de Blob ou de spaghetti code sont un obstacle significatif pour la performance des développeurs lors de tâches de compréhension et de changement. Les résultats obtenus justifient les recherches antérieures sur la spécification et la détection des défauts de conception. Les équipes de développement de logiciels doivent mettre en garde les développeurs contre le nombre élevé d’occurrences de défauts de conception et recommander des refactorisations à chaque étape du processus de développement pour supprimer ces défauts de conception quand c’est possible. Dans la deuxième contribution, nous étudions la relation entre les défauts de conception et les fautes. Nous étudions l’impact de la présence des défauts de conception sur l’effort nécessaire pour corriger les fautes. Nous mesurons l’effort pour corriger les fautes à l’aide de trois indicateurs: (1) la durée de la période de correction, (2) le nombre de champs et méthodes touchés par la correction des fautes et (3) l’entropie des corrections de fautes dans le code-source. Nous menons une étude empirique avec 12 défauts de conception détectés dans 54 versions de quatre systèmes: ArgoUML, Eclipse, Mylyn, et Rhino. Nos résultats ont montré que la durée de la période de correction est plus longue pour les fautes impliquant des classes avec des défauts de conception. En outre, la correction des fautes dans les classes avec des défauts de conception fait changer plus de fichiers, plus les champs et des méthodes. Nous avons également observé que, après la correction d’une faute, le nombre d’occurrences de défauts de conception dans les classes impliquées dans la correction de la faute diminue. Comprendre l’impact des défauts de conception sur l’effort des développeurs pour corriger les fautes est important afin d’aider les équipes de développement pour mieux évaluer et prévoir l’impact de leurs décisions de conception et donc canaliser leurs efforts pour améliorer la qualité de leurs systèmes. Les équipes de développement doivent contrôler et supprimer les défauts de conception de leurs systèmes car ils sont susceptibles d’augmenter les efforts de changement. La troisième contribution concerne la détection des défauts de conception. Pendant les activités de maintenance, il est important de disposer d’un outil capable de détecter les défauts de conception de façon incrémentale et itérative. Ce processus de détection incrémentale et itérative pourrait réduire les coûts, les efforts et les ressources en permettant aux praticiens d’identifier et de prendre en compte les occurrences de défauts de conception comme ils les trouvent lors de la compréhension et des changements. Les chercheurs ont proposé des approches pour détecter les occurrences de défauts de conception, mais ces approches ont actuellement quatre limites: (1) elles nécessitent une connaissance approfondie des défauts de conception, (2) elles ont une précision et un rappel limités, (3) elles ne sont pas itératives et incrémentales et (4) elles ne peuvent pas être appliquées sur des sous-ensembles de systèmes. Pour surmonter ces limitations, nous introduisons SMURF, une nouvelle approche pour détecter les défauts de conception, basé sur une technique d’apprentissage automatique — machines à vecteur de support — et prenant en compte les retours des praticiens. Grâce à une étude empirique portant sur trois systèmes et quatre défauts de conception, nous avons montré que la précision et le rappel de SMURF sont supérieurs à ceux de DETEX et BDTEX lors de la détection des occurrences de défauts de conception. Nous avons également montré que SMURF peut être appliqué à la fois dans les configurations intra-système et inter-système. Enfin, nous avons montré que la précision et le rappel de SMURF sont améliorés quand on prend en compte les retours des praticiens.
Resumo:
"L’auteure Lucie Guibault aborde la question des ""logiciels libres"" dans le cadre des droits d’auteurs et des brevets. Ces logiciels sont des programmes informatiques qui sont gratuitement distribués au public, dont la modification et la redistribution sont fortement encouragées, mais dont la vente ou la commercialisation est découragée ou même carrément prohibée. Ces caractéristiques particulières distinguent les logiciels libres des ""programmes propriétés"" traditionnels, qui se basent sur le principe que le créateur d’un programme en possède les droits de propriété et qu’il est le seul autorisé à le modifier ou le vendre, sous réserve de sa capacité à faire cession de ces droits. Les logiciels libres sont fondés sur une idéologie de coopération, qui promeut la propagation des idées et des connaissances et qui favorise ainsi la création de meilleurs logiciels. L’auteure présente les grandes caractéristiques des trois principales licences de logiciels libres, soit la ""General Public License"", la licence ""Berkeley Software Distribution"" et la ""Mozilla Public License"". Elle soutient que ces logiciels libres et les régimes normatifs qui les encadrent sont à l’origine d’un changement de paradigme au sein des régimes européens et hollandais de protection des droits d’auteurs et des brevets. La première partie de l’article analyse les régimes des droits d’auteur des trois licences de logiciels libres. L’auteure souligne que ces régimes ont été établis en se basant sur la prémisse qu’il n’y a pas de distinction significative entre les créateurs et les utilisateurs de logiciels libres. Les régimes normatifs reflètent cette situation en prévoyant un ensemble de droits et d’obligations pour les utilisateurs dans le cadre de l’utilisation, de la reproduction, de la modification et de la redistribution gratuite des logiciels libres. L’auteur explique comment ces régimes normatifs s’intègrent au sein de la législation européenne et hollandaise, entre autre au niveau du droit de propriété, du droit commercial, du droit des communications et du droit des obligations. L’auteur démontre que, de façon générale, ces régimes normatifs législatifs semblent s’être adéquatement adaptés aux nouvelles réalités posées par les règles de droits d’auteurs des logiciels libres. La seconde partie aborde la problématique du droit des brevets, tel que défini par la législation européenne et hollandaise. La plupart des utilisateurs et créateurs de logiciels libres s’opposent aux régimes de brevets traditionnels, qui limitent l’innovation et les possibilités de développement techniques. L’auteur décrit les différents régimes alternatifs de brevets offerts par les trois licences de logiciels libres. De plus, l’auteur présente l’encadrement légal pour ces nouveaux brevets, tel que défini par les législations européennes et hollandaises. Elle soutient que cet encadrement légal est inadéquat et qu’il n’est pas adapté aux besoins des utilisateurs de logiciels libres."
Resumo:
La compréhension des objets dans les programmes orientés objet est une tâche impor- tante à la compréhension du code. JavaScript (JS) est un langage orienté-objet dyna- mique, et son dynamisme rend la compréhension du code source très difficile. Dans ce mémoire, nous nous intéressons à l’analyse des objets pour les programmes JS. Notre approche construit de façon automatique un graphe d’objets inspiré du diagramme de classes d’UML à partir d’une exécution concrète d’un programme JS. Le graphe résul- tant montre la structure des objets ainsi que les interactions entre eux. Notre approche utilise une transformation du code source afin de produire cette in- formation au cours de l’exécution. Cette transformation permet de recueillir de l’infor- mation complète au sujet des objets crées ainsi que d’intercepter toutes les modifications de ces objets. À partir de cette information, nous appliquons plusieurs abstractions qui visent à produire une représentation des objets plus compacte et intuitive. Cette approche est implémentée dans l’outil JSTI. Afin d’évaluer l’utilité de l’approche, nous avons mesuré sa performance ainsi que le degré de réduction dû aux abstractions. Nous avons utilisé les dix programmes de réfé- rence de V8 pour cette comparaison. Les résultats montrent que JSTI est assez efficace pour être utilisé en pratique, avec un ralentissement moyen de 14x. De plus, pour 9 des 10 programmes, les graphes sont suffisamment compacts pour être visualisés. Nous avons aussi validé l’approche de façon qualitative en inspectant manuellement les graphes gé- nérés. Ces graphes correspondent généralement très bien au résultat attendu. Mots clés: Analyse de programmes, analyse dynamique, JavaScript, profilage.