Course objectives
Objectif opérationnel
Dialoguer avec tout acteur d’un projet de développement logiciel
Objectifs pédagogiques
Concrètement à l’issue de cette foramtion vous serez en mesure de:
- Décoder le vocabulaire informatique au niveau du développement logiciel
- Classifier les technologies par famille (Langages, IDE, framework, bibliothèques, etc.)
- Décrire le vocabulaire et les concepts d’une base de données
- Connaître les briques de l’architecture d’une application
- Comprendre le développement Agile et l’intégration continue
Who is this course for?
Ce séminaire développement logiciel s’adresse aux collaborateurs de la Direction des Systèmes d’Informations (Chef de projet, Administrateur, Responsable d’activité, Informaticien, Personnel de la DSI, etc.) et plus généralement à toute personne recherchant une solide culture générale sur les technologies informatiques et le vocabulaire associé.
Prerequisites
Evoluer dans un environnement informatique
Programme
Développement : Framework et langages
- Développement : Framework et langages: Particularités du développement objet Le concept de design pattern Exemple d’un programme objet « d’école » Développeur Front / Back / Fullstack Les langages des devellopeurs Front (HTML, CSS, Javascript, WebAssmebly, etc.) Les langages des devellopeurs Back (C++, Java, C#, PHP, NodeJS, Go, …) Différences entre langage compilé et langage dynamique Quel langage pour quel type d’application (gestion, industriel, embarqué, etc.) ? Différences entre framework et librairies Les IDE (Integrated Development Environment) standards (Visual Studio, Eclipse, etc.) Les tests : typologie et automatisation La problématique de la gestion des sources et des versions (git, gitlab) Exemple de compilation d’un programme
Les bases de données
- Les apports d’une base de données par rapport au système d’exploitation « seul » Les acteurs du marché : Oracle, DB2, SQL Server, MySQL, PostgreSQL, etc. L’omniprésence du SQL La journée type de l’administrateur (DBA) Limites des SGBDR et enjeux des bases de données NoSQL (Not Only SQL) Un peu de vocabulaire NoSQL (documents, collections, liens) Quelques acteurs (MongoDB, CouchDB, Cassandra, BigTable, etc.) Bases de données et applications/progiciels Quelques définitions : Big data, Data lake, Data hub, … Le décisionnel (Classique et temps réel)
Architecture des applications
- Acteurs de base et vocabulaire (client lourd/riche, naviGustur, serveur Web, serveur d’application, base de données, etc.) Penser le système d’information d’une façon globale et pour communiquer (urbanisation des SI) Qu’est-ce qu’un composant par rapport à un objet ? Faciliter le travail entre les équipes et la maintenance avec le modèle MVC (modèle, vue, contrôleur) Qu’est-ce qu’un document XML ? La notion d’espace de nom Les domaines de prédilection de XML : la publication et l’échange des données Apports et limites du format JSON Qu’est-ce qu’un Web Service ? Décrire un Web service avec WSDL (Web Services Description Language) Principes d’une architecture SOA Authentification unique (SSO) L’approche REST Philosophie des architectures Microservices Intégration d’application via un ESB Les architectures n-tiers, évolutivité et scalabilité de ces architectures, fermes de serveurs La place du Cloud dans les architectures Vue d’ensemble de problématiques liées aux choix techniques
Développement Agile et Intégration continue
- Concepts : Agile, Approche Scrum, DevOps, … Évolutions des spécifications, du planning Organisation de l’équipe de développement Agile : Pair-programming, Daily-review, Standard de développement, Refactoring et communication interne L’importance des tests : Approche XP, typologie des tests, apports du test, automatisation des tests, estimation de la couverture des tests Tests fonctionnels et critères d’acceptance, Approche BDD, Les User stories Le processus de build et déploiement : Comprendre le build, les critères de qualité d’un build, les outils de versionning, les outils Ant et Maven, les artefacts et leurs repository L’intégration ou le déploiement continu : principes, environnement et infrastructure, l’outil Jenkins, la notion de Jobs, mise en place de pipeline de déploiement
Description de la formation Développement Logiciel
Après des années d’évolution le développement logiciel s’est progressivement industrialisé au point de présenter bien des points communs avec les secteurs traditionnels de l’industrie (différentes technologies pour construire un produit, différentes normes et standards liés à la multiplicité des acteurs, intégration de mise à jour, test, livraison, etc.).
Cette formation présente progressivement « l’envers du décor » par rapport à la vue qu’a un utilisateur d’une application en présentant les différents outils proposés aux développeurs pour construire les briques d’une application (IDE, langages, frameworks, etc.) et comment elles communiquent entre elles (XML, Web services, API, accès aux bases de données, etc.) afin que vous disposiez d’une vue technique et globale sur le vocabulaire des développeurs que l’on retrouve dans les projets (Agile, build, test, recette, intégration continue, etc.)
Travaux Pratiques
Démonstrations vivantes

