Les évolutions des méthodes de développement de logiciels Depuis Merise de l'eau est passée sous les ponts
Programmation Orientée Objets Encapsulation des données et des traitements Polymorphisme Modularité du code Héritage et composition Amélioration de la réutilisation Meilleure représentation du réel...
UML UML vs Merise C'est un langage de communication Comme tout langage UML est évolutif et adaptable Un ensemble de conventions de notations pour représenter les données les interactions entre acteurs la dynamique de l'application UML n'est pas dédié au monde du développement
2TUP Two Tracks Unified Process Une application est toujours développée dans un contexte technologique particulier. Utilise UML comme langage Méthode en Y : une branche fonctionnelle une branche technique une phase de réalisation
Les design patterns Issus du monde de l'architecture Description de pratiques éprouvées Des réponses standardisées à des problèmes récurrents Une présentation normalisée Des cas d'utilisation clairement expliqués
Le monde open source L'open source est-il réservé à des utopistes? Quel modèle économique derrière ce terme? Quelques exemples de réalisations et de collaborations.
La cathédrale et le bazar Les méthodes lourdes et contraignantes face aux méthodes pragmatiques et légères Un modèle de développement réparti et «démocratique» Un développement axé sur le client final Des releases rapides, même si elles ne sont pas parfaites Le modèle bazar est à la base de la plupart des projets open source
Les méthodes agiles Des itérations courtes Un contact fréquent avec l'utilisateur final Une ouverture d'esprit aux changements La documentation c'est le code Des principes simples : YAGNI DRY
Les outils collaboratifs Les gestionnaires de version Les «bug trackers» Les outils de tests automatiques Les outils de construction automatisés
Les anti patterns Utilisation de contre exemples Des situations courantes rencontrées au cours de projets de développement Une analyse des causes, des symptômes et des conséquences Une description aussi rigoureuse que celle des design patterns Un catalogue par niveau conceptuel
Le refactoring Réviser du code plutôt que le réécrire Des objectifs variés : lisibilité et maintenabilité du code modularisation et réutilisation amélioration des performances... Un coût qui n'est pas toujours compris par le client Des outils spécialisés
La pratique des tests Les tests sont un indicateur de la qualité du logiciel produit L'utilisation systématique des tests réduit à terme les coûts de production de logiciels Il existe différents types de tests Dans certains cas on peut aller jusqu'à la conception dirigée par les tests
L'approche clients légers Les clients légers sont une tendance lourde Ils minimisent les coûts : de déploiement de maintenance des postes de travail Ils rencontrent des problèmes d'ergonomie de performances d'acceptation par les utilisateurs
Les frameworks Ensemble de classes qui collaborent pour apporter une solution type à un problème standard L'usage de frameworks s'apparente plus à de l'assemblage de composants qu'à de la programmation de haut niveau La courbe d'apprentissage d'un framework est loin d'être négligeable
Les méta frameworks Un framework apporte une solution à un type de problème, un méta framework assure la collaboration de plusieurs frameworks pour réaliser une tâche plus complexe Certains méta frameworks permettent d'assembler de façon modulaire un ensemble de frameworks substituables les uns aux autres
Injection de dépendance (inversion de contrôle) Le principe Hollywood Accroître la modularité Le choix des composants est fait au moment de l'exécution Une adoption croissante
Programmation Orientée Aspects Ajouter des fonctionnalités transversales Simplification du modèle de développement Augmente la modularité des applications Agit sur des points de jonction bien définis
Les bases de données et l'objet Les modes d'accès et de représentation de l'information ne sont pas compatibles entre SGBD classiques et langages à objets Les bases de données purement objets rencontrent des problèmes de performance en environnement multi utilisateurs. On a besoin de ponts entre les deux mondes
MVC et MVC2 Architecture en 3 couches (tiers) Une séparation stricte des responsabilités La vue : ce qui est affiché Le contrôleur : coordination des actions Le modèle : persistance de l'information Pour MVC2, la vue est répartie entre le client et le serveur
Un modèle en 5 couches Client Application Métier Mapping Physique
L'arrivée d'ajax Asynchronous Javascript And XML Fait partie du Web 2.0 Accroît l'ergonomie des applications Un ensemble d'outils HTML css JavaScript XML, XSL/T
Faut-il faire table rase de l'ancien? L'existant pèse sur les choix d'avenir Certaines vieilles solutions sont parfois les plus efficaces Il n'est pas inutile de se pencher d'abord sur des technologies qui ont fait leurs preuves Très souvent la solution consiste à établir un pont entre ancienne et nouvelle technologie
Vers une industrialisation des processus d'informatisation? ITIL : Information Technology Infrastructure Library (IT Service Management inclus dans iso 20000) Comment organiser une production informatique? Comment améliorer l'efficacité du système d'information? Comment réduire les risques? Comment augmenter la qualité des services informatiques?
Norme ISO 20000 La fourniture des services : La gestion de niveaux de service (contrats type SLA) Le rapport de service (compte rendus d'activités, surveillance, utilisation des ressources...) La gestion de la continuité et de la disponibilité des services (plan de reprise) La budgétisation et la comptabilisation des services La gestion de la capacité La gestion de la sécurité
Norme ISO 20000 La gestion des relations : La gestion des relations commerciales (personne désignée, gestion des réclamations...) La gestion des fournisseurs. Les contrôles : La gestion des configurations (intégrité des systèmes...) la gestion des changements (validation d'un changement...) La mise en production