Développer une application ou logiciel informatique ou une mise à jour

CODE CNAM : CRN07B30

Équipe autour d'un ordinateur portable, écrans de code en arrière-plan

Les informations principales de la formation

Développer une application ou logiciel informatique ou une mise à jour.

Lieu : À distance

Modalité : A distance/Partiellement à distance

Durée : 12 mois / 330 heures

Niveau d’entrée : Niveau 4 – Bac

Voir les prérequis

Diplôme obtenu : Sans niveau

Présentation

Organisation des cours

Organisation du cours
Durée 12 mois / 330 heures
Période de cours Octobre à Juin
Modalités A distance/Partiellement à distance
Rythme A votre rythme
Type de diplôme Je suis une description du terme
Niveau à la fin Sans niveau
Alternance Non éligible
Intitulé officiel Développer une application ou logiciel informatique ou une mise à jour.
Code Cursus CRN07B30
Crédit ECTS 312 ECTS

Public cible

> Toute personne souhaitant développer des compétences pour développer une application ou logiciel informatique

Prérequis

Niveau bac

Niveau bac

Programme

Contenu de la formation

 Dans un environnement de développement informatique lié au système d’exploitation (Linux, Windows) utilisé, choisir et utiliser un langage de programmation (C, Java, Html,PHP) adapté aux spécificités de l’application (web, gestion) afin de  coder les algorithmes identifiés lors de l’activité précédente en appliquant les pratiques de programmation telles que la modularité, la documentation du code..

 A partir des schémas relationnels établis lors de l’analyse fonctionnelle, créer les bases de données relationnelles en utilisant l’environnement de développement informatique (exemple Oracle, MySQL) et mettre en œuvre dans le code développé l’interface avec la base de données en utilisant un langage de requêtage adapté de type SQL.

 Concevoir en intégrant les principes de l’accessibilité universelle les interfaces web utilisateurs  à l’aide des langages de programmation web (HTML, Javascript et CSS) correspondant aux interfaces hommes-machine qui ont été définies, en mettant en œuvre des techniques full responsive afin que les interfaces définies s’adaptent également aux écrans des terminaux mobiles.

Définir des jeux de tests de l’application ou logiciel informatique ou de la mise à jour crées, jouer ces jeux de tests afin d’identifier les bugs éventuels, apporter les actions correctives aux bugs de développement constatés et garantir l’état fonctionnel du produit final pour le client

Réaliser des synthèses d’information relatives à l’avancement et à la validation des codages réalisés au chef de projet et à l’équipe projet en respectant les délais impartis, afin de permettre la recette de l’application et la livraison au client.

Effectuer une veille technologique régulière (sites web spécialisés, publications de l’observatoire des métiers du numérique, forums,.. ) en matière de méthodes, de normes, de procédures de sécurité et d’outils de développement existants afin d’adapter sa pratique professionnelle. 

Effectuer des tests en lien avec chef de projet et à l’équipe projet afin de vérifier que la solution présentée correspond aux choix de conception établis.

Rédiger les documents de développement de l’application ou de la mise à jour afin de documenter le fonctionnement de l’application, permettre sa compréhension et son éventuelle reprise.
 

 

Unité(s) d’enseignement(s) obligatoire(s)

Code Cours Détail
NFA031 Programmation Java : notions
NFA040 Architecture et langages Web
NFA008 Bases de données
NFA083 Réseaux et administration web
NFA042 Développement web côté serveur
NFA084 Graphisme et Web
NFA021 Développement web (3) : mise en pratique
NFA032 Programmation Java programmation objet
NFA035 Programmation Java : biblio. patterns
NFA007 Méthodes pour l’informatisation
NFA019 Projet systèmes d’information avec Java
NFA003 Principes et fonctionnement des systèmes
NFA022 Programmation smart-phones
NFA025 TP programmation smart-phones
NFA024 Projet application mobile

Programmation Java : notions

  • Introduction à la notion d’application et de programme informatique.
  • Structure d’un programme Java
  • Du fichier source à l’exécution : compilation, interprétation
  • Prise en main d’un environnement de développement (IDE)
  • Types de base et leurs valeurs, variables, affectation
  • Entrées-sorties écran/clavier. 
  • Structures de contrôle (conditionnelles et boucles). 
  • Tableaux
  • Notion de sous-programme abordées avec les méthodes statiques. 
  • Exceptions. 
  • Utilisation de String et d’ArrayList
  • Écriture de classes simples orientées données avec attributs privés, un constructeur, getters et setters et toString.

Acquérir à l’issue du cours les principaux concepts de base de la programmation ainsi qu’une connaissance pratique de la réalisation de petits programmes en JAVA.

Architecture et langages Web

  • Introduction générale.
  • Architecture du web. Internet, intranet.
  • Notion de client (navigateur) et de serveur.
  • L’hypertexte, lien et URL.
  • Notion de normes et problèmes de validation, le W3C.
  • Description et structuration des documents web: le langage HTML 5.
  • Gestion de la présentation des documents : langage CSS 1, 2 et 3.
  • Le protocole HTTP : requêtes GET, POST, HEAD. Codes réponses. 
  • Les formulaires côté client.
  • Les formats des fichiers images, son et video. Les types MIME.
  • Images vectorielles et bitmap. Langage SVG.
  • Les balises multimedia et les problèmes d’accessibilité des contenus non textuels.
  • L’importance de l’accessibilité, les techniques usuelles et la nécessité de réfléchir pour obtenir une accessibilité réelle des contenus.

Dresser un tableau complet de l’architecture du WEB et des technologies concernées dans la construction d’un site.  Apprendre les langages HTML et CSS mis en oeuvre coté client. Connaître les principes du protocole HTTP et les types de fichiers multimédias pouvant figurer dans une page web.
 

Bases de données

Conception et spécification de schémas relationnels
– Introduction aux bases de donnée relationnelles
– Le modèle entité/association : Présentation des concepts de base
– Le modèle relationnel : Présentation des concepts, Transformation d’un schéma entité/association en schéma relationnel, Normalisation de schémas relationnels
Langages de description et de manipulation de bases de données relationnelles 
– L’algèbre relationnelle
– Le langage SQL
Pratique d’un SGBD relationnel 
– L’environnement SQL2 (tables, vues, contraintes, utilisateurs, etc.)
– Programmation avec SQL2

Concevoir, mettre en oeuvre et utiliser les bases de données relationnelles, en particulier savoir définir un schéma relationnel à partir d’une modélisation conceptuelle des données et maîtriser le langage SQL.

Réseaux et administration web

  • Introduction aux Réseaux:
    • commutation de circuit/commutation de paquet
    • réseaux locaux, équipements réseaux
    • modèle OSI/TCP-IP, normes, protocoles de communication
    • adressage IPv4/IPv6, TCP/UDP, notions de port
    • routage, interconnexion de réseaux
  • Architecture, normes et outils Internet:
    • organismes de normalisation d’Internet
    • architecture du réseau Internet
    • navigateurs
    • connexion via un fournisseur d’accès à Internet (FAI)
  • Les principaux services Internet:
    • web (HTTP, HTTPS, …)
    • mail (POP, IMAP, SMTP, …)
    • DNS
  • Le protocole HTTP:
    • étude détaillée des principales commandes : POST, GET, …
    • les codes d’erreur (403, 404, …)
  • Administration d’un serveur Web:
    • installation et configuration d’un serveur Apache
    • activation des services HTTP et HTTPS
    • déploiement d’une application PHP
    • mise en place de contrôle d’accès
    • installation d’un SGBD: MySQL ou Postgres
    • utilisation de SSH

Acquérir les connaissances de base relatives à l’installation et l’administration d’un serveur HTTP.

Développement web côté serveur

  • Introduction à l’écriture de programmes exécutés sur un serveur web. 
  • Exploitation d’une base de données relationnelle. Production dynamique de documents.
  • Introspection et débogage, outils de développements du navigateur.
  • Architecture MVC.
  • Utilisation des cookies et des sessions. Gestion des connexions.
  • Programmation orientée objets.
  • Formats d’échanges de données sur le web : XML et JSON.
  • Ajax côté serveur.
  • Expressions régulières.
  • Notion d’API et API REST.
  • Test unitaires (par exemple PHPUnit).
  • Introduction aux frameworks et langages de templates.
  • Notions de sécurité.
     

Apprendre à réaliser les programmes qui s’exécutent sur les serveurs web, notamment pour calculer des pages web dynamiques en interaction avec une base de données.

Graphisme et Web

Concepts fondamentaux de l’infographie

  • couleur : notion et utilisation, limitations,
  • texte & Typographie orientée web,- images : mode point (bitmap) et vectorielles, concepts
  •  formats d’images (PNG, GIF, JPG), leurs avantages et inconvénients, optimisation,  lequel utiliser et dans quel cas
  • charte graphique, logo.Graphisme et Web
  •  modélisation, charte graphique, chaîne graphique de conception/réalisation,- navigation/ergonomie,- conception.

Production-

  • Notion de retouche photographique et création graphique.
  • Comment améliorer une photo, la traiter afin d’optimiser son exploitation dans une page web.
  • Création d’éléments d’interface (boutons, fond de page), composition d’images avec les calques.
  • Notions de dessin vectoriel et typographique.

Comprendre les bases de l’illustration vectorielle et savoir quand l’utiliser.
Comprendre les bases du dessin d’interface par une utilisation conjointe d’éléments bitmap (photos) et d’éléments vectoriels. Intégration et production de site.
Création de site d’après les éléments construits avec les applications précédentes. 
Photoshop, Illustrator, Fireworks, Dreamweaver ou logiciel libre comme Inkscape et Gimp;

Etude des concepts fondamentaux de l’infographie et apprentissage des logiciels de la chaîne graphique.

Développement web (3) : mise en pratique

Réalisation et implantation d’un site WEB complet :
– pages statiques, pages dynamiques,
– gestion de cookies, sessions
– exploitation de formulaires,
– configuration et exploitation d’une base de données,
– envoi de mail,
– configuration et déploiement d’un serveur web,
– déploiement du site  sur un serveur personnel.

Concrétiser dans un TP les connaissances et les technologies présentées dans les 2 UE de développement WEB.
Apporter une première compétence dans la conception de site WEB.

Programmation Java programmation objet

Utilisation d’objets par instanciation de classes existantes. Écriture de classes comportant des attributs, des méthodes, des constructeurs. Comprendre la notion de référence et ses conséquences, notamment la multiplicité des chemins d’accès à un objet. Utiliser à bon escient des variables et méthodes statiques. Utiliser l’héritage pour écrire des sous-classes et des programmes polymorphes. Étude comparative de la redéfinition de méthode et de la surcharge de méthode. Traitement d’erreurs au moyen d’exceptions. Utilisation d’interfaces Java pour créer des unions de types. Mettre en oeuvre l’encapsulation et gérer la cohérence de l’état des objets créés. Connaître la récursivité et commencer à appréhender les structures récursives.

Maîtriser les concepts fondamentaux de la programmation objet.

Programmation Java : biblio. patterns

Moyens 
Salles machines équipées d’un environnement de développement java.
Organisation
Cours 
Cours d’1h30 et séance d’1h30 en salle machines pendant tout le semestre avec encadrement. Un travail personnel sur machine en dehors des séances est vivement recommandés.
Structure 
Les sujets d’exercices sont disponibles au fur et à mesure sur le serveur Web de la valeur de cours Algorithmique programmation. 
Programme

  • notion de bibliothèque, API
  • les entrées/sorties ; flux textes, binaires; fichiers en accès direct et séquentiel.
  • les collections : listes, ensembles, tableaux associatifs
  • interfaces graphiques ; utilisation de composants, architecture MVC, initiation à la création de nouveaux composants.
  • conception des programmes; couches logicielles

 

  • Apprendre à structurer un programme et aborder l’utilisation de bibliothèques logicielles.
  • Aborder la notion de patrons de conception (design patterns) et l’utiliser pour comprendre les bibliothèques standards.
  • Compléter les connaissances de NFA031 et NFA032 en abordant un certain nombre de bibliothèques fondamentales : entrées/sorties, les collections, et les interfaces graphiques.
     

Méthodes pour l’informatisation

INTRODUCTION 
Définitions et concepts de base – Typologie des systèmes d’information –
Rôle de l’informatique dans l’entreprise
PROCESSUS D’INFORMATISATION 
Les méthodes d’informatisation – Le cycle de vie d’une application –
Les systèmes informatiques – Les architectures-types –
Démarches d’informatisation
ETUDE APPROFONDIE D’UNE METHODE SYSTEMIQUE : MERISE 2 
Démarche MERISE 2 – Règles de gestion, d’organisation et techniques -Modèles conceptuel, logique et physique des données et des traitements. Mise en pratique de la modélisation conceptuelle et logique des données et des traitements
INITIATION A UNE METHODE OBJET : UML
Concepts orientés objet – Les cas d’utilisation – Le modèle de classes –
Le diagramme de séquence – Le diagramme d’états – transitions
Remarque : .La mise en pratique de MERISE 2 constitue la plus grande part des travaux dirigés. UML est seulement abordé en complément.

Fournir les concepts et démarches relatives au processus d’informatisation d’une application. Les principales phases d’informatisation sont étudiées

Projet systèmes d’information avec Java

Cette formation est basée sur la réalisation d’un projet sur plusieurs étapes :

  • Rappel des notions de base de la POO.
  • Présentation du langage de conception UML (en particulier le diagramme de classes), utilisation de l’outil StarUML avec l’extension Java.
  • Rédaction d’un cahier de charges à partir d’un ensemble de spécifications.
  • Création des packages et implémentation des classes Java correspondants au cahier de charges, prise en compte de l’architecture MVC (Modèle-Vue-Contrôleur).
  • Test des fonctionnalités des classes Java avec les Test unitaires JUnit.
  • Export du projet sur un serveur de gestion de versions : outil GIT, plugin EGIT sur Eclipse.
  • Gestion des données avec l’API JDBC (Java Data Base Connectivity) et selon les modèles Singleton et DAO (Data Access Object). Utilisation du serveur XAMPP et MySQL.
  • Création d’interfaces graphiques avec Swing pour une application desktop.
  • Développement d’une application Web Java avec Servlets et JSP (introduction).
  • Finalisation du projet et démonstration de l’application réalisée.

 

Ce module permet d’acquérir, de consolider et de mettre en pratique un ensemble de compétences permettant de réaliser un système d’information : spécification d’un cahier des charges, conception UML de l’architecture d’une solution et de ses différents modules, mise en place d’une stratégie de test, utilisation des outils de gestion des versions, intégration de patrons de conception, gestion des données et de la persistance, conception des interfaces graphiques constituant l’IHM du système développé, notions de base pour le développement d’une application Web.

A l’issue de ce module, l’étudiant sera capable de réaliser une solution logicielle complète et fonctionnelle pour répondre à un besoin donné (cahier des charges). Le langage support de ce module est le langage Java. L’environnement de développement est Eclipse. La gestion des données s’appuiera sur MySQL (XAMPP). Les tests s’appuient sur l’environnement JUnit. Et enfin, la gestion des versions se fait avec GIT.

Principes et fonctionnement des systèmes

  • Rappels fondamentaux d’architecture des machines
  • Fonctions d’exécution :  processus, ordonnancement, illustration processus Linux
  • Pagination, mémoire virtuelle
  • Systèmes de gestion de fichiers : partitions, fichiers, répertoires, allocation du disque
  • Protection : sauvegardes, droits d’accès
  • Exemples des systèmes Linux et windows; introduction au langage de commandes qui peuvent donner lieu à des TP

Fournir des bases solides de compréhension des processus liés aux systèmes d’exploitation des machines informatiques multiprogrammées.

Programmation smart-phones

  1. Présentation de l’évolution de la téléphonie mobile, des systèmes d’exploitation et des des modèles de programmation : JME, iOS, Android …
  2. Étude plus approfondie des deux principales plateformes à ce jour :
    1. iPhone/iOS : les principaux concepts d’IHM, l’architecture logicielle, les principes de programmation en présentant rapidement Objective C/Swift et l’environnement de développement Xcode, le modèle de sécurité.
    2. Android : les apports caractéristiques de cette plate-forme Open Source, l’interopérabilité des applications dans Android, l’architecture logicielle, le modèle de composants applicatifs, les principes de programmation, le modèle de sécurité.
  3. Présentation des technologies Web utilisables dans le développement mobile : HTML5/JavaScript/CCS, mise en œuvre du Webkit, application hybrides (PhoneGap), ReactNative…
  4. Présentation des technologies autour de la carte SIM, et plus généralement des cartes à puce, des enjeux de sécurité en téléphonie mobile, le système NFC et ses applications dans la téléphonie mobile.
  5. Étude des enjeux d’IHM et des nouvelles possibilités d’interaction utilisateur. Mise en œuvre des capteurs communément embarqués dans les dispositifs mobiles. Présentation des différents systèmes, leurs usages, leur fonctionnement et les utilisations détournées de ces capteurs…

Appréhender les concepts système et réseau pour smart-phones et tablettes tactiles et la programmation d’applications tierces.
Comprendre les mécanismes de base des systèmes d’exploitation des smart-phones et leurs contraintes particulières sur le modèle de programmation.
Connaître les principales ressources matérielles disponibles sur téléphones mobiles et les mettre en œuvre pour enrichir l’interaction utilisateur (capteurs physiques, écran tactile multipoints, géolocalisation, APN…).
Découvrir les technologies Web pour l’embarqué mobile et en particulier les technologies hybrides comme PhoneGap/CORDOVA.
Connaître les enjeux de sécurité dans le monde mobile et des technologies sans contact (cartes SIM, NFC…)

TP programmation smart-phones

Programmation des smart-phones : étude du système Android et programmation en langage Java.

  1. Mise en place de l’environnement de développement et des principaux outils (déverminage, profileur, utilisation du Logcat, adb, simulation de capteur sur le simulateur …)
  2. Programmation des activités et de leur cycle de vie. Définition d’interfaces graphiques simples et avancées.
  3. Définition et mise en œuvre des Intents dans le système Android. Approche de l’interopérabilité des applications.
  4. Concepts de bases sur la programmation concurrente.
  5. Programmation d’un service simple (service orienté commandes) et des principales méthodes liées à son cycle de vie.
  6. Mise en œuvre de connexions réseau HTTP.
  7. Définition et mise en œuvre des BroadcastListener.
  8. Stockage des données sur le terminal. Mise en œuvre d’une base de données locale SQLite stockée sur le terminal mobile.
  9. Mise en œuvre des capteurs physiques du terminal, mécanisme de géolocalisation, mise en œuvre des APN…

Savoir programmer des applications pour smart-phone ou tablette tactile sur une plateforme particulière.

Projet application mobile

Enseignement de synthèse et mise en pratique des connaissances acquises par un projet de développement d’une application pour smart-phone et tablette tactile.
Apprentissage de la conduite d’un projet: de l’étude à la programmation d’application pour smart-phone et tablette tactile.
Réalisation d’un projet
   – Présentation et mise en oeuvre des mécanises de déploiement d’une application sur smartphone.
   – Conception et implantation d’une application complète.
Rendu d’un petit « mémoire » et soutenance individuelle du projet: démo, explication et modification de code pendant la soutenance.

Savoir réaliser et implanter une application Android complète et la déployer.

Carrière

Rythme des cours

> L’année est organisée en 2 semestres : semestre 1 (S1) d’octobre à février/mars et semestre 2 (S2) de février/mars à juin.

Compétences visées

Objectifs

> Dans un environnement de développement informatique lié au système d’exploitation (Linux, Windows) utilisé, choisir et utiliser un langage de programmation (C, Java, Html,PHP) adapté aux spécificités de l’application (web, gestion) afin de coder les algorithmes identifiés lors de l’activité précédente en appliquant les pratiques de programmation telles que la modularité, la documentation du code..

> A partir des schémas relationnels établis lors de l’analyse fonctionnelle, créer les bases de données relationnelles en utilisant l’environnement de développement informatique (exemple Oracle, MySQL) et mettre en oeuvre dans le code développé l’interface avec la base de données en utilisant un langage de requêtage adapté de type SQL.

> Concevoir en intégrant les principes de l’accessibilité universelle les interfaces web utilisateurs à l’aide des langages de programmation web (HTML, Javascript et CSS) correspondant aux interfaces hommes-machine qui ont été définies, en mettant en oeuvre des techniques full responsive afin que les interfaces définies s’adaptent également aux écrans des terminaux mobiles.

> Définir des jeux de tests de l’application ou logiciel informatique ou de la mise à jour crées, jouer ces jeux de tests afin d’identifier les bugs éventuels, apporter les actions correctives aux bugs de développement constatés et garantir l’état fonctionnel du produit final pour le client

> Réaliser des synthèses d’information relatives à l’avancement et à la validation des codages réalisés au chef de projet et à l’équipe projet en respectant les délais impartis, afin de permettre la recette de l’application et la livraison au client.

Effectuer une veille technologique régulière (sites web spécialisés, publications de l’observatoire des métiers du numérique, forums,.. ) en matière de méthodes, de normes, de procédures de sécurité et d’outils de développement existants afin d’adapter sa pratique professionnelle.

> Effectuer des tests en lien avec chef de projet et à l’équipe projet afin de vérifier que la solution présentée correspond aux choix de conception établis.

Rédiger les documents de développement de l’application ou de la mise à jour afin de documenter le fonctionnement de l’application, permettre sa compréhension et son éventuelle reprise.

Méthodes mobilisées

Méthodes mobilisées

> Pédagogie qui combine apports académiques, études de cas basées sur des pratiques professionnelles et expérience des apprenants avec une équipe pédagogique constituée pour partie de professionnels.

> Un espace numérique de formation (ENF) est à votre disposition tout au long de la formation : Utilisation de supports numériques (documents pdf, vidéos interactives, quiz d’autoévaluation…) et échanges réguliers en classes virtuelles par visioconférence (en direct ou en différé), messagerie, forums, chat…

Modalités d’évaluation

> Chaque unité (UE/US, UA) fait l’objet d’une évaluation organisée en accord avec l’Établissement public (certificateur) dans le cadre d’un règlement national des examens.

Modalités de validation

> Chaque enseignement fait l’objet d’une notation sur 20. Le bloc est obtenu à condition d’avoir validé chacune des UE le constituant.

Méthodes d’évaluation

Poursuivre ses études

> Concepteur développeur de solutions informatiques

Sur le marché du travail

Tarifs et financement

Chaque bloc suit le tarif de référence du Cnam Pays de la Loire en cas de prise en charge : 21 € de l’heure. Une unité d’enseignement de 50 heures revient par exemple à 1 050 €, finançable par le CPF, un OPCO ou votre plan de développement des compétences. Cette souplesse permet d’échelonner l’effort financier et de mobiliser un financement à chaque étape, sans engager le coût d’un cursus entier d’un seul coup.

Détail des tarifs
Élément Tarif Financement
Un bloc (ensemble d’UE) CPF, OPCO, plan de développement
Cursus complet Somme des blocs CPF, OPCO, plan de développement

Inscription

  1. Candidatez en ligne via notre formulaire de pré-inscription.
    Munissez vous de votre CV. Formats acceptés : pdf, doc, ppt

  2. Rencontrez votre conseiller formation en entretien individuel

Les autres formations en Technologies du Numérique

  • Concevoir et modéliser des applications informatiques

    Concevoir et modéliser des applications informatiques

    Code CNAM: DUS05B40
    A distance/Partiellement à distance
  • Expression et communication écrites et orales

    Résoudre des problèmes complexes en mobilisant les concepts fondamentaux de l’informatique

    Code CNAM: LG025B61
    A distance/Partiellement à distance
  • S’exprimer et communiquer dans une langue étrangère

    S’exprimer et communiquer à l’oral et l’écrit et dans au moins une langue étrangère

    Code CNAM: LG025B31
    A distance/Partiellement à distance
  • Fondements des systèmes informatiques et des réseaux

    Utiliser les outils numériques de référence

    Code CNAM: LG025B11
    A distance/Partiellement à distance
  • Développer, tester et intégrer un composant informatique dans l?infrastructure applicative, système, technique ou de sécurité d?un Système d?Information d?une entreprise

    Développer, tester et intégrer un composant informatique dans l’infrastructure applicative, système, technique ou de sécurité d’un Système d’Information d’une entreprise

    Code CNAM: CRN08B20
    A distance/Partiellement à distance
  • Mathématiques 1: mathématiques générales

    Mathématiques 1: mathématiques générales

    Code CNAM: UTC601

    Sessions choisies

    à distance

    Choisir mes sessions

    Mathématiques 1: mathématiques générales