[1] A. Adya, J. Howell, M. Theimer, W. J. Bolosky, and J. R. Douceur. Cooperative Task Management without Manual Stack Management or, Event-Driven is Not the Opposite of Threaded Programming. In UATC [65], pages 289 - 302.
[ bib | .pdf ]

[2] A. W. Appel and J. Palsberg. Modern Compiler Implementation in Java. Cambridge University Press, Cambridge, United Kingdom, second edition, 2002.
[ bib ]
[3] P. Barford and M. Crovella. A Performance Evaluation of Hyper Text Transfer Protocols. In MMCS [57], pages 188 - 197.
[ bib | .ps ]

[4] B. Bérard, M. Bidoit, F. Laroussinie, A. Petit, and P. Schnoebelen. Vérification de Logiciels : Techniques et Outils du Model-Checking. Vuibert Informatique, Paris, France, 1999. With G. Cécé, C. Dufourd, A. Finkel, L. Petrucci and G. Sutre.
[ bib ]
[5] J. Berstel, S. C. Reghizzi, G. Roussel, and P. San Pietro. A Scalable Formal Method for Design and Automatic Checking of User Interfaces. In ICSE [53], pages 453 - 462.
[ bib | .pdf ]

Cet article s'intéresse à la spécification formelle, à la conception et à l'implantation des composants comportementaux des interfaces graphiques utilisateurs. Les séquences plus ou moins complexes des événements et des actions constituant le dialogue entre l'utilisateur et l'interface sont spécifiés sous forme de grammaires attribuées et plus précisemment de grammaires de communications VEG (Visual Event Grammar). La spécification en VEG est complètement indépendante de l'apparence de l'interface ce qui permet de l'intégrer avec différentes apparences (Gtk, Swing, AWT, ...) mais aussi du langage de programmation de l'application (C, C++, Java, ...). De plus cette spécification peut être vérifié avec le vérificateur de modèle SPIN afin de tester sa consistance mais aussi sa correction et ainsi de détecter les interblocages ou les états qui sont inatteignables, mais aussi pour générer des tests afin de valider certains comportements. En utilisant des analyseurs syntaxiques, du code efficace est généré et des applications de tailles importantes (application médicale, librairie de construction de graphe, ...) peuvent être développées et ne souffrent pas de la comparaison avec des applications développées à la main. A l'aide de l'ensemble de ces outils, des gains importants sont réalisés concernant la détection des erreurs et leur correction (fourniture de contre exemples par SPIN), généricité vis à vis de l'apparence de l'application, etc.
[6] E. Bruneton, R. Lenglet, and T. Coupaye. ASM : A Code Manipulation Tool for the Construction of Adaptable Systems. In ASF-SIGOPS [59]. Also available in French ASM : Un Outil de Manipulation de Code pour la R\'ealisation de Syst\`emes Adaptables.
[ bib | .pdf ]

Cet article présente un nouvel outil de manipulation de classes Java conçu pour la génération et la manipulation dynamiques du code. Ces deux techniques sont très utiles pour la réalisation de systèmes adaptables. Contrairement aux différentes approches existantes (SERP, BCEL, etc), ASM utilise une approche originale en exploitant le patron de conception Visiteur sans représenter explicitement l'arborescence visitée sous forme d'objets. Les performances obtenues grâce à cette technique sont bien supérieures à celles des outils existants. Néanmoins, l'idée principale d'ASM est d'optimiser au maximum les opérations les plus souvent effectuées, et de fait certaines opérations restent coûteuse en temps.
[7] A. Campi, E. Martinez, and P. San Pietro. Experiences with a Formal Method for Design and Automatic Checking of User Interfaces. In IUICADUI [55].
[ bib | .pdf ]

[8] A. Carzaniga, E. Di Nitto, D. S. Rosenblum, and A. L. Wolf. Issues in Supporting Event-Based Architectural Styles. In ISAW [52], pages 17 - 20.
[ bib | .ps.gz ]

De nombreux styles architecturaux ont été formalisés afin de répondre à des contraintes de stabilité et de coût de développement d'applications (notamment les applications réseaux). Certains définissent un ensemble de règles permettant de composer un système à partir de composants et de connecteurs. L'un des styles les plus courants pour des applications distribuées à monté en charge importante est l'approche dîte événementielle. Dans cette approche, les composants vont communiquer en publiant ou en réceptionnant de façon asynchrone des notifications d'événements. Une notification étant propagée à l'ensemble des composants déclarés intéressé par celle-ci. Cette approche est très intéressante car un composant peut opérer dans le système sans avoir de connaissance sur les autres composants, et il est très facile d'ajouter ou de supprimer un composant (il n'y a aucune conséquence pour les autres composants). Cet article identifie les variations au style événementiel introduit par différentes implantations et met en avant leurs avantages et leurs inconvénients.
[9] C. Castelluccia and P. Hoschka. A Compiler-Based Approach to Protocol Optimization. In HPCS [51], pages 73 - 78.
[ bib | .ps.Z ]

Il existe deux approches différentes pour arriver à implanter un protocole suffisament performant pour des réseaux haut débit. La première est l'optimisation manuelle du code (prédiction de branches, l'inline de fonctions, etc). La seconde est la configuration du protocole, c'est-à-dire l'implantation du protocole selon des paramètres dépendant de l'application, du matériel ou de la technologie du réseau sous-jacent. Il est intéressant de remarquer que les performances d'un protocole obtenu à partir d'une configuration peut être amélioré par les techniques manuelles (décrites auparavant), mais il est inutile de le faire du fait d'une variété importante des configurations possibles (multiplication du temps et de l'effort fourni). Il est donc intéressant de pouvoir automatiser l'application des optimisations sur le code obtenue par configuration du protocole.
[10] C. Castelluccia, W. Dabbous, and S. O'Malley. Generating Efficient Protocol Code from an Abstract Specification. In SIGCOMM [58], pages 60 - 72.
[ bib | .ps.Z ]

Un compilateur de protocole prend en entré une spécification abstraite et génére une implantation de celui-ci. Généralement le code ainsi produit est inefficace en terme de vitesse et de taille. Cet article présente la combinaison de deux techniques permettant de générer du code efficace. La première est la génération d'un automate unique au lieu de plusieurs automates indépendants, et la seconde applique des techniques d'optimisation sur cet automate (plus exactement sur les différentes branches le constituant).
[11] C. Castelluccia. Automating Header Prediction. In WCSSS [66], pages 44 - 53.
[ bib | .ps.Z ]

A l'heure actuelle, les implantations des différents protocoles sont des goulets d'étranglements pour les réseaux. Cet article présente une technique permettant d'améliorer leurs performances, il s'agit de la prédiction d'en-tête. Celle-ci correspond à l'optimisation du chemin commun en rajoutant une copie du code lui correspondant. Mais en réalisant cette optimisation manuellement des problèmes de coûts apparaissent (augmentation de la taille du code, difficulté de générer un code correct, ...). Cet article propose donc une approche automatique de la prédiction d'ent-tête en utilisant un compilateur de protocole. Le but étant de réorganiser le code généré afin d'obtenir les bénéfices de la prédiction sans augmentation des coûts.
[12] E. M. Clarke and J. M. Wing. Formal Methods : State of the Art and Future Directions. ACM Computing Surveys, 28(4):626 - 643, March 1996.
[ bib | .ps ]

Cet article réalise un résumé des techniques mathématiques utilisées pour la spécification et la vérification de systèmes complexes (matériels ou applications). L'un des problèmes majeurs auquel doit faire face ces techniques provient de la taille et de la complexité sans cesse croissantes des applications. De plus, il faut que les spécifications formelles, c'est-à-dire la description d'un système et de ces propriétés souhaitées, doivent être accessibles aux concepteurs d'applications (idéalement le plus proche possible du langage de développement). De plus, il faut que cette spécification reflète réellement le système, et pour se faire il faut utiliser des techniques automatiques permettant d'obtenir une spécification à partir d'une application (raffinage) ou une application à partir d'une spécification (génération). Une seconde étape est de vérifier les propriétés en utilisant deux techniques bien distinctes (que l'on peut combiner ?) : la vérification de modèles et la preuve de théorêmes. L'illustration des différentes techniques et des différents utilitaires existants est réalisée au travers quelques utilisations dans l'industrie. Enfin, cet article présente quelques voies possibles de recherches dans le domaine des méthodes formelles passant nécessairement par la définition de nouveaux langages de spécification et de nouvelles techniques de vérification.
[13] G. Cugola, E. Di Nitto, and A. Fuggetta. Exploiting an Event-Based Infrastructure to Develop Complex Distributed Systems. In ICSE [54], pages 261 - 270.
[ bib | .ps.gz ]

[14] F. Dabek, N. Zeldovich, F. Kaashoek, D. Mazieres, and R. Morris. Event-Driven Programming for Robust Software. In ASEW [49], pages 186 - 189.
[ bib | .pdf ]

Les événements sont meilleurs que les threads pour la gestion concurrente des différentes entrées / sorties, mais ils offrent aussi une plus grande stabilité de performance sous une forte charge. Néanmoins, ceux-ci présentent quelques désavantages dont notamment un nombre important d'allocation dynamique, une difficulté de programmation et une incapacité de tirer avantage des architectures multi-processeurs. Ce papier présente une librairie d'entrées / sorties non bloquantes permettant de faciliter la programmation d'applications événementielles, mais aussi de tirer avantage des architectures SMP. Ainsi les événements fournissent pratiquement tous les avantages proposés par les threads avec une plus grande robustesse (abscence entre autre des data races ou des interblocages).
[15] V. Danjean. Contribution à l'Elaboration d'Ordonnanceurs de Processus Légers Performants et Portables pour Architectures Multiprocesseurs. PhD thesis, Ecole Normale Supérieure de Lyon, France, December 2004.
[ bib | .ps.gz ]

[16] W.-P. de Roever, F. de Boer, U. Hannemann, J. Hooman, Y. Lakhnech, M. Poel, and J. Zwiers. Concurrency Verification : Introduction to Compositional and Noncompositional Methods, volume 54 of Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, Cambridge, United Kingdom, 2001.
[ bib ]
[17] P. Th. Eugster, P. A. Felber, R. Guerraoui, and A.-M. Kermarrec. The Many Faces of Publish / Subscribe. ACM Computing Surveys (CSUR), 35(2):114 - 131, June 2003.
[ bib | .pdf ]

[18] T. Fahringer and B. Scholz. Advanced Symbolic Analysis for Compilers : New Techniques and Algorithms for Symbolic Program Analysis and Optimization, volume 2628 of Lecture Notes in Computer Sciences. Springer-Verlag Heidelberg, Germany, 2003.
[ bib | http ]

[19] Pascal Fenkam. A Systematic Approach to the Development of Event-Based Applications. PhD thesis, Information Systems Institute of the Technical University of Vienna, Vienna, Austria, October 2003.
[ bib | .pdf ]

[20] L. Fiege, G. Mühl, and F. C. Gärtner. Modular Event-Based Systems. The Knowledge Engineering Review, 17(4):359 - 388, December 2002.
[ bib | .pdf ]

[21] L. Fiege, G. Mühl, and F. C. Gärtner. A Modular Approach to Build Structured Event-Based Systems. In SAC [60], pages 385 - 392.
[ bib | .pdf ]

[22] R. T. Fielding and R. N. Taylor. Principled Design of the Modern Web Architecture. ACM Transactions on Internet Technology, 2(2):115 - 150, May 2002.
[ bib | .pdf ]

[23] R. T. Fielding and R. N. Taylor. Principled Design of the Modern Web Architecture. In CROSSREF, 2002.
[ bib | .pdf ]

[24] E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns : Catalogue de modèles de conception réutilisables. Vuibert Informatique, Paris, France, 1999.
[ bib ]
[25] D. Garlan, S. Khersonsky, and J. S. Kim. Model Checking Publish-Subscribe Systems. In SPIN [62], pages 166 - 180.
[ bib | .pdf ]

[26] C. A. R. Hoare, I. J. Hayes, He Jifeng, C. C. Morgan, A. W. Roscoe, J. W. Sanders, I. H. Sorensen, J. M. Spivey, and B. A. Sufrin. Laws of Programming. Communications of the ACM, 30(8):672 - 686, 1987.
[ bib | .pdf ]

[27] G. J. Holzmann. The SPIN Model Checker : Primer and Reference Manual. Addison Wesley Professional, Boston, USA, September 2003.
[ bib ]

Ce livre constitue le principal manuel de référence de l'utilitaire SPIN. Il couvre notamment la spécification du langage Promela qui permet de décrire un modèle représentant une application concurrente et de vérifier des propriétés de vivacité, d'atteignabilité, ... (à l'aide entre autre de logiques temporelles linéaires). Il présente aussi les bases théoriques de la vérification de modèle (recherche en largeur et en profondeur, optimisation de la recherche, extraction d'un modèle à partir du code source, réduction de l'espace des états, ...) qui est l'une des techniques utilisables pour la vérification d'une application (les deux autres étant le test de l'application ou la preuve de théorèmes). La technique du « model checking » est complètement automatique (il faut tout de même élaborer un modèle représentant l'application ainsi que de formaliser les propriétés que l'on souhaite vérifier) tandis que la preuve de théorème nécessite la construction de la preuve et les tests interviennent après la phase de conception de l'application. Il faut tout de même noter que la construction d'un modèle est une étape difficile à formaliser et de plus le modèle obtenue n'est pas fortement lié à l'application qu'il doit représenter (ce n'est qu'une « interprétation » formelle d'une application).
[28] G. J. Holzmann. The Model Checker SPIN. IEEE Transactions on Software Engineering, 23(5):-, May 1997.
[ bib | .pdf ]

[29] J. E. Hopcroft, R. Motwani, and J. D. Ullman. Introduction to Automata Theory, Languages, and Computation. Addison Wesley Professional, Boston, USA, second edition, 2003.
[ bib ]
[30] O. G. Kakde. Algorithms for Compiler Design. Charles River Media, INC., Hingham, Massachusetts, USA, 2003.
[ bib ]
[31] J. R. Larus and M. Parkes. Using Cohort Scheduling to Enhance Server Performance. In UATC [65], pages -.
[ bib | .pdf ]

[32] H. C. Lauer and R. M. Needham. On the Duality of Operating System Structures. SIGOPS Operating Systems Review, 13(2):3 - 19, April 1979. Reprint of the original paper by H. C. Lauer and R. M. Needham in 'Proceedings of the Second Symposium on Operating Systems'.
[ bib | .pdf ]

Cet article émet comme postulat qu'il existe une dualité entre les deux structures (orienté procédures ou orienté messages) possibles des systèmes d'exploitation modernes. La première catégorie est caractérisée par un nombre important de petit processus qui varie très rapidemment dans le temps, accompagné d'un mécanisme de synchronisation basé sur des données partagées. La seconde quant à elle est caractérisée par un petit nombre statique de gros processus qui communiquent entre eux par des messages explicites. A partir de modèle abstrait tiré de chacune de ces catégories, il est montré qu'un programme respectant strictement l'une ou l'autre des deux catégories à une contrepartie directe dans l'autre. La transformation utilisée afin d'obtenir le dual d'un programme va conserver la structure et les performances du programme source. Il faut noter tout de même que pour conserver les performances, les opérations primitives d'une catégorie doivent être aussi efficaces que les primitives de l'autre (les auteurs considérent ainsi sans preuve qu'il est possible de développer les primitives des deux catégories de manière efficace).
[33] D. Lea. Scalable IO in Java. A set of slides on the Java nio package.
[ bib | .pdf ]

[34] J. Malenfant and S. Denier. ARM : Un Modèle Réflexif Asynchrone pour les Objets Répartis et Réactifs. In LMO [56], pages 91 - 103.
[ bib | .pdf ]

[35] S. Michiels, L. Desmet, N. Janssens, T. Mahieu, and P. Verbaeten. Self-Adapting Concurrency : The DMonA Architecture. In WOSS [68], pages 43 - 48.
[ bib | .pdf ]

A l'heure actuelle, les serveurs Internet doivent faire face à une extrème variabilité de la charge et notamment évaluer le pic de charge potentiellement atteignable. Les architectures doivent prendre en compte ce phénomène de variation et proposer un contrôle et donc une adaptation de la concurrence interne au serveur. Ainsi, il est nécessaire de développer des architectures à composant permettant de faciliter le développement de tels serveurs. Cet article propose DMonA, une architecture basée sur DiPS, qui sépare les fonctionnalités du serveur des autres aspects, tels que la concurrence, la communication inter-composant, etc. Elle propose ainsi un observateur et un gestionnaire permettant de détecter les goulets d'étranglements (plus particulièrement le plus gros goulets d'étranglements) propose des solutions à ce problème en fonction de stratégies définies et les déploient « à la volée ». Les résultats obtenus montrent que cette adaptation offre de meilleurs résultats que ceux d'une approche traditionnelle, c'est-à-dire sans adaptation.

Keywords: component architecture, concurrency, self-adaptation
[36] D. Mosberger and T. Jin. Httperf : A Tool for Measuring Web Server Performance. In WISP [67], pages 59 - 67.
[ bib | .ps ]

Cet article présente un utilitaire pour mesurer les performances de serveurs Web. Il présente une forte flexibilité dans la génération du traffic HTTP et dans les techniques utilisées pour mesurer les performances des serveurs. Ainsi, le but principal de cet utilitaire n'est pas d'implanter un utilitaire de « benchmark » particulier mais plutôt de fournir un outils robuste, performant facilitant la construction de « benchmarks » à différents niveaux. Httperf s'illustre notamment par sa robustesse (car il génére et soutient une charge importante), supporte le protocol HTTP/1.1 et enfin par son extensibilité (plus particulièrement, dans la génération du traffic Web et dans les techniques utilisées pour mesurer les performances du ou des serveurs). Cet outil est de plus très intéressant par son architecture événementielle entre ces différents composants (on citera pour exemple la partie traitant du protocol HTTP, celle générant le traffic et enfin la partie s'occupant de collecter et de traiter les différentes mesures).
[37] E.-R. Olderog and B. Steffen. Correct System Design : Recent Insights and Advances, volume 1710 of Lecture Notes in Computer Sciences. Springer-Verlag Heidelberg, Germany, 1999.
[ bib ]
[38] J. Ousterhout. Why Threads Are a Bad Idea (for most purposes). In UATC [63]. Invited talk.
[ bib | .pdf ]
[39] V. S. Pai, P. Druschel, and W. Zwaenepoel. Flash : An Efficient and Portable Web Server. In UATC [64], pages -.
[ bib | .pdf ]

Cet article présente une nouvelle architecture de serveur Web nommée Asymemetric Multi-Process Event-Driven ainsi que des architectures plus classiques utilisant plusieurs processus (Multi Process) ou plusieurs threads (Multi Threads) ou bien utilisant un seul processus de traitement événementiel (Single Process Event-Driven). Dans un second temps, différentes techniques d'optimisation sont présentées, plus spécifiquement différents caches pour la translation de chemin, les en-têtes des réponses et les fichiers mappés en mémoires. Dans ce dernier cas, les fichiers sont inclus dans des blocs de tailles fixes, il y a donc division en plusieurs blocs des fichiers trop gros. Enfin, une évaluation et une comparaison de cette nouvelles architecture est donnée, celle-ci montrant qu'il y a une amélioration des performances de 30% en comparaison avec Zeus et de 50% en comparaison avec Apache.
[40] M. Rajagopalan, S. K. Debray, M. A. Hiltunen, and R. D. Schlichting. Cassyopia : Compiler Assisted System Optimization. In HOTOS [50], pages 103 - 108.
[ bib | .ps ]

L'exécution d'un programme sur une ou plusieurs machines nécessitent des espaces d'adressage. En utilisant une technique par compilation, ce papier présente une approche permettant de réduire de tel coût. Plus particulièrement, en réduisant le nombre d'appels systèmes sur une unique machine, en introduisant la notion de multi appel. Les résultats obtenus montrent que cette approche permet d'améliorer les performances d'un programme.
[41] N. D. Ryan and A. L. Wolf. Using Event-Based Parsing to Support Dynamic Protocol Evolution. Technical Report CU-CS-947-03, Department of Computer Science, University of Colorado at Boulder, USA, Boulder, Colorado, USA, March 2003.
[ bib | .pdf ]

Le but de ce rapport technique est de contribuer aux techniques permettant de prendre en compte l'évolution des protocoles de communication au sein d'applications. C'est-à-dire, permettre aux applications de supporter des modifications apportées dynamiquement à un protocole. Pour se faire, il est nécessaire d'isoler les détails syntaxiques du protocole de ses concepts sémantiques, qui vont être manipulés à l'intérieur des différents composants. La syntaxe d'un protocole va être spécifiée formellement en 4 parties : les tokens, la structure des messages, le mode d'envoie des messages et la séquence des messages.
[42] A. Tanenbaum. Systèmes d'Exploitation. Pearson Education, Paris, France, fourth edition, 2003.
[ bib ]
[43] A. Tanenbaum. Réseaux. Pearson Education, Paris, France, fourth edition, 2003.
[ bib ]
[44] S. Thibault. Un Ordonnanceur Flexible pour Machines Multiprocesseurs Hiérarchisées. Diplôme d'Etude Approfondie, Ecole Normale Supérieure de Lyon, France, June 2004.
[ bib | www ]

[45] K. S. Trivedi. Probability and Statistics with Reliability, Queuing and Computer Science Applications. John Wiley and Sons Ltd. Chichester, UK, UK, second edition, 2002.
[ bib ]
[46] M. Welsh, S. D. Gribble, E. A. Brewer, and D. Culler. A Design Framework for Highly Concurrent Systems. Technical report, Department of Computer Science, University of California at Berkeley, USA, 2000.
[ bib | .pdf ]

Le but de rapport technique est de proposer un framework pour le développement de service Internet hautement concurrent. Ces services nécessitent de gérer des informations sur les flots d'informations mais aussi de maintenir un pic de bande passante même lorsque que les demandes excédent les possibilités des resources disponibles. Beaucoup d'approches pour le développement de tels systèmes ont été proposées et se divisent pour la plupart en deux catégories distinctes : les architectures événementielles et celles utilisant des processus légers. Dans ce rapport, il est considéré que ces deux catégories sont aux extrémités d'un large spectre et que la meilleure implantation se situe entre les deux. Pour faciliter le développement d'une telle architecture, trois composants (atomiques pour l'architecture) sont pris en considération : les tâches, les files et les pools de processus légers. De plus, afin de transformer une application en une implantation utilisant ces composants, un ensemble de patrons de conception est présenté. Enfin, une analyse de différents systèmes construits en utilisant ce framework est présenté et permet d'illustrer les bénéfices obtenus lors de l'élaboration d'une application concurrente.
[47] M. Welsh, D. E. Culler, and E. A. Brewer. SEDA : An Architecture for Well-Conditioned, Scalable Internet Services. In SOSP [61], pages 230 - 243.
[ bib | .pdf ]

Le but de cet article est de proposer une nouvelle architecture pour le développement de service Internet hautement concurrent, nommée Staged Event-Driven Architecture. Cette architecture peut supporter des demandes massivement concurrentes et simplifier le développement de services Internet. Ainsi, SEDA utilise l'approche événementielle qui permet de représenter une application comme étant un réseau d'états connectés explicitement par des files des événements en attentes. Du fait d'une variation importante de la charge (dépendant de différents paramètres), SEDA utilise des contrôleurs afin de gérer dynamiquement les resources et plus particulièrement les processus légers utilisés (adaptation du modèle de concurrence en fonction de la charge). Afin de montrer les avantages de SEDA, deux services Internent sont développés, le premier est un serveur HTTP tandis que le second est un servent Gnutella. Les résultats ainsi obtenus montrent que SEDA présente de meilleurs performances que les services plus traditionnels et supporte bien les variations de la charge.
[48] M. Welsh. An Architecture for Highly Concurrent, Well-Conditioned Internet Services. PhD thesis, Department of Computer Science, University of California at Berkeley, USA, August 2002.
[ bib | .pdf ]

[49] Tenth ACM SIGOPS European Workshop, ACM Special Interest Group on OPerating Systems Issue, Saint-Emilion, France, September 2002. ACM Press, New York, USA.
[ bib ]
[50] Ninth Workshop on Hot Topics in Operating Systems, Lihue, Hawaï, USA, May 2003. USENIX, The Advanced Computing Systems Association, USA.
[ bib ]
[51] Third IEEE Workshop on the Architecture and Implementation of High Performance Communication Subsystems, Mystic, Connecticut, USA, August 1995. IEEE Press, New Jersey, USA.
[ bib ]
[52] Proceedings of the Third International Software Architecture Workshop, Orlando, Florida, USA, November 1998. ACM Press, New York, USA.
[ bib ]
[53] Proceedings of the 23rd International Conference on Software Engineering, ACM Special Interest Group on SOFTware Engineering, Toronto, Ontario, Canada, May 2001. IEEE Computer Society, Washington, DC, USA.
[ bib ]
[54] Proceedings of the Twentieth International Conference on Software Engineering, ACM Special Interest Group on SOFTware Engineering, Kyoto, Japan, April 1998. IEEE Computer Society, Washington, DC, USA.
[ bib ]
[55] IUI/CADUI'2004 Workshop on Making Model-Based UI Design Practical: Usable and Open Methods and Tools, Island of Madeira, Portugal, January 2004. ACM Press, New York, USA.
[ bib ]
[56] Actes de la conférence Langages et Modèles à Objets (LMO'03), volume 9, Vannes, France, February 2003. L'Objet, éditions Hermès.
[ bib ]
[57] Proceedings of the International Conference on Measurement and Modeling of Computer Systems, ACM Special Interest Group for the Computer / Communication System Performance Community, Atlanta, Georgia, USA, May 1999. ACM Press, New York, USA.
[ bib ]
[58] Conference Proceedings on Applications, Technologies, Architectures, and Protocols for Computer Communications, ACM Special Interest Group on Data COMMunications Issue, Palo Alto, California, USA, October 1996. ACM Press, New York, USA.
[ bib ]
[59] Adaptable and Extensible Component Systems, ACM Special Interest Group on OPerating Systems Issue France, Grenoble, France, November 2002. ACM Press, New York, USA.
[ bib ]
[60] Proceedings of the 2002 ACM Symposium on Applied Computing, ACM Special Interest Group on Applied Computing, Madrid, Spain, March 2002. ACM Press, New York, USA.
[ bib ]
[61] Eighteenth Symposium on Operating Systems Principles, ACM Symposium on Operating Systems Principles, Chateau Lake Louise, Canada, October 2001. ACM Press, New York, USA.
[ bib ]
[62] Proceedings of the Tenth International SPIN Workshop on Model Checking of Software, Portland, Oregon, USA, May 2003. ACM Press, New York, USA.
[ bib ]
[63] Proceedings of the 1996 USENIX Annual Technical Conference, San Diego, California, USA, January 1996. USENIX, The Advanced Computing Systems Association, USA.
[ bib ]
[64] Proceedings of the 1999 USENIX Annual Technical Conference, USENIX Annual Technical Conference, Monterey, California, USA, June 1999. USENIX, The Advanced Computing Systems Association, USA.
[ bib ]
[65] Proceedings of the 2002 USENIX Annual Technical Conference, USENIX Annual Technical Conference, Monterey, California, USA, June 2002. USENIX, The Advanced Computing Systems Association, USA.
[ bib ]
[66] First Annual Workshop on Compiler Support for System Software, ACM Special Interest Group on Programming LANguages Notices, Tucson, Arizona, USA, February 1996. ACM Press, New York, USA.
[ bib ]
[67] First Workshop on Internet Server Performance, ACM Special Interest Group for the Computer / Communication System Performance Community, Madison, Wisconsin, USA, June 1998. ACM Press, New York, USA.
[ bib ]
[68] Proceedings of the First Workshop on Self-Healing Systems, ACM Special Interest Group on SOFTware Engineering, Charleston, South Carolina, USA, November 2002. ACM Press, New York, USA.
[ bib ]

This file has been generated by bibtex2html 1.71