Développement et Architectures
d’Applications en 2018

De l’objet aux frameworks, Java xE, .NET, les langages, les architectures urbanisées, mobilité, sécurité, etc.
Sommaire

LE MOT DE L’INTERVENANT

Il y a manifestement deux mondes dans le développement des...

Il y a manifestement deux mondes dans le développement des applications modernes. Le premier est très technique, qui met en œuvre des concepts, langages et frameworks sophistiqués, celui de Java et de .NET. Le second, l’est moins, qui s’intéresse essentiellement à la partie cliente des applications et pratique les langages script. Le séminaire auquel vous allez participer couvre ces deux aspects du développement pour lequel je vous donnerai les clés de la réussite : passer moins de temps sur le code et plus sur la réflexion et la modélisation. Avec un intérêt particulier pour les contextes nouveaux, sécurité, mobiles, etc. Avec plus de 30 ans d’expérience, je devrais pouvoir vous faire partager les bonnes pratiques de développement et vous alerter sur les autres.

Claude Marson
Claude Marson a fondé CMC, société spécialisée dans les architectures informatiques modernes et MECI à Montréal, dédiée au consulting auprès des grands comptes. Il est à l’origine du site et du livre LeMarson, premier réseau social dédié aux tendances technologiques informatiques.
Lire la suite Cacher le texte

Ce séminaire aborde les aspects techniques auxquels sont confrontés aujourd’hui chefs de projet et développeurs : l’adaptation à de nouveaux environnements et langages, le changement de repères, le recours aux frameworks. Il fait le point sur l’évolution des fournisseurs de services applicatifs, serveurs, Clouds, serverless et sur les changements d’architectures centrales et clients.

En trois journées denses et concrètes, tout ce que doivent savoir les DSI, chefs de projet et développeurs : une synthèse des outils, méthodes, langages, middlewares et environnements de développement.

  • Les évolutions clés du développement d’applications : abstraction de la conception, modélisation, urbanisme des solutions.
  • Les nouvelles architectures fondées sur la réutilisation et la distribution des composants.
  • Les conteneurs d’applications, nouvelles boîtes à outils des développeurs et les frameworks de référence.
  • Le rôle central de XML et Rest/Json, l’architecture SOA, les MSA et confirmation des Web Services.
  • Le panorama des solutions du marché, avantages et inconvénients, exemples concrets de mise en œuvre.
  • Les paradigmes nouveaux du développement : Cloud, langages scripts et dynamiques, fonctionnel, JavaScript à tous les étages.
  • Les plates-formes de développement.
  • Les problématiques nouvelles : «parallélisation», mobiles, sécurité, économie d’énergie.
  • La mutation du métier de développeur.


Évolution des fondements : plates-formes, 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, Cobol/TDS/IDSII 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 plates-formes 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.

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 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 : RedHat, WebSphere, Oracle WebLogic, TomEE, Microsoft Windows.

Les frameworks Java xE

  • Les frameworks fondamentaux : Java EE et Java SE..
  • Le modèle EJB vers plus de simplicité.
  • Java SE 8 et SE 9 : la machine virtuelle.
  • L’ouverture de la JVM (JSR 223) : un échec.
  • Java EE 8 et la reprise par Eclipse.
  • Le modèle Pojo et le conteneur léger (Spring).
  • Les concepts avancés : IoC, Injection de dépendances, Programmation par Aspects.
  • Comparaison de Java EE et Spring. : le plus simple ? le moins contraignant ?•
  • .NET de Microsoft
  • Le modèle fonctionnel : diversité des langages, compilation Just In Time, Assemblage.
  • Les langages compatibles et leur modèle 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 1.0.

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 langages modernes : Java, C#, VB.NET, Ceylon, Scala, etc.


Java et la maturité

  • Des concepts nouveaux : inférence de type, « duck typing », etc.
  • Les avancées d’écriture : annotations, assertions, 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 ?.
  • La programmation fonctionnelle. L’exemple de Scala.

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 montée en puissance du Web Assembly.
  • PHP et Ruby, des solutions crédibles et les frameworks associés.
  • Dart, un successeur pour Javascript ?
  • Le langage Go de Google.
  • Les autres langages : Groovy, Python, R, etc.

Les architectures éclatées SOA, MSA 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 œuvre 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.
  • L’authentification des services Web.

Les architectures « clientes »


Les nouveaux modèles d’architectures

  • Éclatement du modèle 3-tiers en n-tiers.
  • Nouvelles architectures applicatives en 2018.
  • 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 est-il encore une opportunité ?

Les applications en mode Web

  • L’arrivée de HTML 5 et la remise en cause partielle des clients riches.
  • Mise en page côté client : JavaScript, Ajax.
  • Les SPA (Single Page Application).
  • L’urbanisme des « Web Components ».

Les plates-formes de développement


Le problème des IDE 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, Visual Studio 2017.
  • Avantages et inconvénients, conditions de mise en œuvre.
  • 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és-valeurs, documents, hiérarchiques.
  • Les grosses bases de données, Oracle et IBM, orientées performances.
  • 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 plates-formes mobiles : Android (Google), Apple iOS, Microsoft Windows 10.
  • Les 4 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.
  • Exemples concrets PHP et Java.

La parallèlisation des applications

  • Faire coïncider les avantages des architectures multi cœurs 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 ».
  • La programmation statistique avec le langage R.

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.