Méthodes de conception de logiciels et choix d'architecture. Architectures logicielles : multi-niveaux, clients-serveurs, extensibles et dynamiques. Bibliothèques et chargement de composantes dynamiques. Cadres de référence et plugiciels. Applets et programmation du côté client. Composition et architecture par composantes. Patrons de conception pour les systèmes distribués : accès aux services et configuration, traitement d'événements, synchronisation et accès simultanés. Approches émergentes de conception : conception orientée aspect.