Objectifs
L'Ingénierie du Logiciel se définit comme l'ensemble des prestations permettant d'intégrer dans un projet global différents composants logiciels et produits applicatifs spécialisés. Il s’agit de construire les Systèmes d'Information correspondant aux besoins stratégiques des entreprises ou encore les applications destinées au « grand public » telles que les sites ou portails Web, le commerce électronique, la télévision interactive, la formation à distance, etc. Pour être plus réactives, les entreprises, les administrations et les organisations font évoluer leurs structures et deviennent plus communicantes, en partageant leurs ressources via différents types de réseaux. Dans les années à venir, les systèmes informatiques permettront des échanges d'informations de multiples natures (données, voix, images, vidéo…) entre utilisateurs pouvant se déplacer. La tendance est à « unifier » l'accès aux informations par l'intermédiaire de services personnalisables, accessibles depuis des terminaux mobiles.
Contenu
Système Unix, langages de programmation C et Java (60
heures)
L’objectif de cet enseignement d’harmonisation est de
présenter l'essentiel des principes, techniques et outils de
programmation en langage C et en langage JAVA, pour
développer en environnement Unix et sous un IDE (Eclipse).
Cet enseignement introduit la programmation objet. Il est
dispensé pour moitié en travaux pratiques encadrés.
Paradigmes de programmation (30 heures)
Cet enseignement présente les principales approches de
programmation (programmation structurée, orientée objet,
fonctionnelle, etc.) et les langages qui les implémentent. Il
propose également une mise en pratique de plusieurs
principes de programmation importants via une
présentation comparative du langage C++ au langage Java
et une introduction à la programmation événementielle.
Bases de données (30 heures)
Ce cours de base traite de la gestion des données
structurées et semi-structurées. On y étudie l'essentiel des
technologies actuelles et émergentes du domaine. La
première partie du cours traite du modèle relationnel
(concepts descriptifs, cohérence et intégrité, outils de
manipulation, confidentialité et vues, etc.) , du langage SQL
et des outils conceptuels et formels permettant une bonne
structuration des données et des schémas. La seconde
partie traite des bases de données XML. On y étudie le
modèle de données XML et le langage de requête XQuery
développé pour la manipulation de données XML.
Introduction aux Réseaux (30 heures)
L’objectif est de donner une vision globale du monde des
réseaux afin d’en acquérir les principes fondamentaux. On y
présente les caractéristiques des réseaux locaux (Ethernet
et ses évolutions), les réseaux IP (architecture TCP/IP,
protocole IP, protocoles de transport, applications), les
réseaux d'opérateurs (réseaux de données, réseaux
commutés, technologie ATM). Enfin, cette unité donne un
aperçu sur les technologies de réseaux mobiles (GSM,
UMTS) et des réseaux sans fil (WiFi, Wimax).
Base de la sécurité (30 heures)
L'objectif est de présenter les concepts fondamentaux, à la
fois théoriques et pratiques, de la sécurité des systèmes
d’information et des réseaux, ainsi qu'un panorama des
différentes approches, mécanismes et menaces de la
sécurité. On introduit la cryptographie symétrique et
asymétrique, et les protocoles cryptographiques. La
problématique de la sûreté de fonctionnement est
notamment abordée selon les aspects de fiabilité et
d'innocuité.
Modèles et vérification (30 heures)
L’objectif est de former aux concepts, techniques et outils
de modélisation et de fournir une introduction à la
vérification de propriétés de modèles. Cet enseignement
utilisera plusieurs cas d'étude pour illustrer l'apport de la
modélisation pour le développement d'applications.
Partant des concepts d'UML2, on présentera dans un
premier temps comment concevoir un système statique,
puis comment modéliser son comportement à l'aide du
formalisme des "statecharts". L'étude des langages
synchrones illustrera la vérification formelle des propriétés
d'un système synchrone. On utilisera Esterel, langage
impératif basé sur les automates.
Spécifications, modélisation et conception de systèmes
logiciels (60 heures)
Cet enseignement fournit les connaissances conceptuelles,
méthodologiques et techniques indispensables aux
activités d'un architecte logiciel :
Spécifier formellement les besoins des utilisateurs et
valider un système par rapport aux spécifications ;
Modéliser divers types de systèmes et raffiner cette
modélisation jusqu'à proposer une architecture logicielle
(UML2, MDA) ;
Construire les solutions techniques par assemblage de
composants logiciels standards (J2EE, dotNet, tissage par
aspects).
Concevoir de grands systèmes logiciels: serveurs
d'applications, EAI, SOA.
Des intervenants industriels interviennent dans cet
enseignement.
Bases de données avancées (60 heures)
L’objectif de cet enseignement est de proposer un
approfondissement des systèmes de gestion de bases de
données, de leur architecture, des modèles de données et
des langages de requêtes sur lesquels s'appuient ces
systèmes. On étudie également les verrous technologiques
que ces systèmes sont en train de résoudre pour répondre
aux besoins d'applications de plus en plus complexes.
Ingénierie des services WEB et cartographie (60 heures)
Cet enseignement permet d’acquérir la maîtrise des outils
de développement d'applications interactives sur Internet.
Dans ce contexte, l'accent est mis sur les espaces
collaboratifs. Ceci est complété par une ouverture sur la
cartographie dynamique en ligne. Les principaux thèmes
abordés sont : les méthodes et les langages pour la mise
en oeuvre (Php), Midlet, les serveurs d'applications, le lien
avec les bases de données (MySQL), les espaces
collaboratifs, le SVG, la géomatique, l’accès aux bases de
données géographiques, SIG, le géoréférencement, le
paiement en ligne, les notions de design et d’accessibilité
numérique.