Évolution des fondements : Plateformes, méthodologies, XML :
Changements de repères :
- De l’impératif à l’objet, du spécifique au standard, du jetable au réutilisable.
- Du modèle propriétaire synchrone : Cobol / CICS / DB2, aux conteneurs d’applications et à la désynchronisation des applications.
- Distribution et Urbanisation des applications : SOA et services Web, MSA.
Le Back-Office et les projets de migration lourde :
- La réalité du marché : Vraies questions et fausses idées.
- Les applications de Back-Office, le rôle des développeurs traditionnels et des langages impératifs.
- Les problèmes concrets de cartographie et de recours aux compétences spécialisées.
- La réalité de Cobol et le portage de ses applications.
Le nouveau périmètre méthodologique :
- Les trois niveaux de la modélisation : Données, processus et orchestration.
- Méthodologies, langages de modélisation et modeleurs graphiques.
- UML, BPMN.
- Les plateformes de modélisation.
- Les modèles de données et la forte présence de Merise.
L’évolution de la gestion de projet :
- Le mouvement des méthodes agiles : Du prédictif à l’adaptable.
- Les méthodes et bonnes pratiques les plus courantes : Lean Software Management, eXtreme Programming et Scrum.
- La conduite des projets par les tests.
- Qualité et mesure de la complexité du code.
- Exemples concrets.
De l’objet aux composants :
Les principes de base :
- La réutilisation des composants.
- Les principes fondamentaux de l’objet : Classes, packages et espaces de noms, héritage, interface et polymorphisme, encapsulage, surcharge de méthodes, transtypage, gestion des exceptions, agrégation, composition.
- Les bonnes pratiques de l’objet : La gestion par références, l’esthétisme.
La distribution des composants :
- La nécessité d’un middleware de communication.
- Les référentiels de composants.
- Les problématiques d’authentification et de sécurité liées à la distribution des composants : Vers une véritable gestion des identités.
Les frameworks techniques et frameworks d’architecture :
L’importance des frameworks :
- Les langages objet indissociables de leur environnement.
- Liberté d’écriture ou modèle contraint.
- Un choix Java xE vs .NET qui se pose rarement.
Les frameworks Java xE :
- Les frameworks fondamentaux : Java EE et Java SE.
- Le modèle EJB vers plus de simplicité.
- Java SE 8 : Evolution de la machine virtuelle.
- L’ouverture de la JVM (JSR 223) : Un échec.
- Java EE 8 et sa prise en charge par Eclipse.
- Les concepts avancés : IoC, Injection de dépendances, Programmation par Aspects, annotations, assertions.
.NET de Microsoft :
- Diversité des langages, compilation Just In Time, Assemblage.
- L’architecture de référence CLI.
- L’espace d’exécution CLR (Common Language Runtime).
- Les espaces de noms de .NET.
- .NET 4.X : Distinction entre l’OS et le serveur d’applications.
- La poussée de .NET vers l’Open Source : .NET Core.
Les frameworks d’architecture :
- Le recours aux motifs de conception (Design Patterns).
- Le motif MVC (SmallTalk) et ses déclinaisons JSF, RoR et Struts.
- Le motif Hibernate pour le Mapping et la Persistance.
- Linq, le requêtage universel de Microsoft.
- Les frameworks d’intégration (ESB).
Les serveurs d’applications :
- Le rôle d’un serveur d’applications.
- La distinction entre container servlet/JSP et container d’EJB.
- La concentration des serveurs d’applications Java : Sprint, RedHat, WebSphere, Oracle WebLogic, TomEE, Microsoft Windows.
Les langages modernes : Java, C#, VB.NET, etc :
Java et la maturité :
- Des concepts nouveaux : Inférence de type, « duck typing », etc.
- JDK 8, arrivée du JDK 9 et de la modularité dans le langage.
- Un rapprochement architectural de plus en plus net avec C#.
- La synthèse recherchée par Google.
- Montée en puissance de Ceylon… pour remplacer Java ?
- Les nouveaux langages : Clojure, Kotlin, Julia, Go, etc.
- La programmation fonctionnelle. L’exemple de Scala.
- La programmation statistique avec le langage R.
Les principaux langages de la galaxie .NET :
- C#.
- Visual C++.
- ASP.NET.
- Visual Basic .NET.
Les langages script et dynamiques :
- Typage statique et dynamique.
- La montée en puissance de Javascript : Serveurs et clients.
- Les frameworks Javascript : jQuery, Node.js, Angular.js, etc.
- Les « compilateurs » Javacript : Coffeescript, Typescript (le transpiling).
- ASM.js et Web Assembly.
- PHP et Ruby, des solutions crédibles et les frameworks associés.
- Dart, un successeur pour Javascript ?
- Les autres langages : Groovy, Python, etc.
Les architectures éclatées SOA et Web Services :
Vers un modèle générique d’applications composites à composants métiers distribués : Les SOA :
- Principes de l’architecture SOA.
- Services orchestrés ou chorégraphiés : Le piège.
- Les briques de conception d’une architecture SOA.
- Les écueils de la granularité et de la généricité.
- Les SOA et les mainframes.
- Les bonnes pratiques des SOA.
- MSA : L’Urbanisme poussé aux limites et ses liens avec les containers.
La distribution des applications : Les services Web :
- Organisation et mise en oeuvre d’une architecture de services Web distribués.
- Les standards SOAP, WSDL et UDDI, fondés sur XML, REST et JSON fondés sur HTTP.
Les architectures «clientes» :
Les nouveaux modèles d’architectures :
- Éclatement du modèle 3-tiers en n-tiers.
- Nouvelles architectures applicatives.
- Allégement du poste client : Vers un client léger HTML.
Les clients riches :
- Principe du client riche.
- Du pur XML au client riche : Java FX ou Google Native.
- Dans quels contextes le client riche présente-t-il un intérêt ?
Les applications en mode Web :
- L’arrivée de HTML 5 et la remise en cause des clients riches.
- Mise en page côté client : JavaScript et programmation Ajax.
- Les SPA (Single Page Application).
- L’Urbanisme des « Web Components ».
Les plateformes de développement :
Le problème des forges modernes : AGL (Atelier de Génie Logiciel) :
- Les constituants d’un AGL moderne.
- Les nouvelles usines à logiciels : Jazz (IBM Rational), Team System (Microsoft).
- Les concepts d’accompagnement au développement : Refactoring, gestion des sources et exécutables, profilage, documentation automatique, analyse de la qualité, génération du code, sécurisation du code.
- La collaboration dans le développement : L’apport de l’Open Source.
Les communautés de développement :
- L’essor d’Eclipse et de son « business model ».
- Un monde de plug-ins pour Eclipse.
- Visual Studio en Open Source.
- Avantages et inconvénients, conditions de mise en oeuvre.
- Les IDE dédiés : JavaScript, Python, Ruby, JavaScript.
Le développement dans le Cloud :
- Principe de développement dans le Cloud.
- Les solutions concrètes : Azure de Microsoft, Google App Engine, Cloud Foundry VMWare, Heroku, etc.
- Avantages et inconvénients.
- Les limitations actuelles : Manque de diversité des langages et des Bases de Données.
Les Bases de Données revisitées :
- L’émergence des bases NoSQL : Colonnes, clésvaleurs, graphe, documents, hiérarchiques.
- Les grosses Bases de Données, Oracle et IBM, orientées performances.
- Les Bases de Données dans le Cloud.
- Les mouvements autour de MySQL : Les offres « concurrentes » Drizzle et Maria DB.
- Vers une écriture « élégante » de l’accès aux données, sans SQL.
- La gestion de fichiers HDFS et ses implications dans le Big Data.
- La galaxie Hadoop.
Les spécificités du développement :
Open Source.
Le cadre général :
- Les modes de fonctionnement.
- La problématique des licences.
- Les précautions à prendre.
Les aspects concrets d’un développement Open Source :
- L’intégration (parfois difficile) dans un projet Open Source existant : Les règles à respecter.
- La réutilisation contrôlée de composants soumis à licence.
- Le fonctionnement au quotidien d’un projet Open Source.
Les problématiques applicatives nouvelles :
Les applications pour terminaux mobiles :
- Les contraintes : Taille des scripts, particularismes de l’affichage, consommation de la batterie.
- Les plateformes mobiles : Android (Google), Apple iOS, Microsoft Windows 10.
- Les huit formes de développement mobile : Native, HTML5, hybride, cross-platform.
L’écriture du code sécurisé :
- Anatomie d’une faille et exemples.
- Les règles fondamentales de sécurisation du code.
La parallélisation des applications :
- Faire coïncider les avantages des architectures multicoeurs et multiprocesseurs avec les programmes.
- Les principes délicats de conception d’une application parallélisée.
- API spécialisées et outils d’aide à la parallélisation.
Les nouveaux challenges :
- Programmation des interfaces tactiles.
- Les «Responsive Design» et « Adaptive Design » pour les terminaux mobiles.
- Le «Material Design » et le « Flat Design ».
L’évolution des métiers du développement :
Un monde en profonde mutation :
- La migration vers les compétences «nouvelles» (frameworks, objet, etc).
- Le problème de la formation aux concepts objet, en préliminaire à celle des langages.
- L’importance cruciale de la modélisation : Une manière difficile mais prometteuse d’aborder la conception des applications.
- Comment les DSI voient-ils leurs besoins à court et moyen terme ?
- Les pièges à éviter.
L’évolution prévisible des métiers :
- Chef de projet applicatif.
- Architecte de développement
- Les développeurs dans le monde agile.