Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année



Documents pareils
Logiciel Libre Cours 3 Fondements: Génie Logiciel

Évaluation et implémentation des langages

Le génie logiciel. maintenance de logiciels.

UE Programmation Impérative Licence 2ème Année

Éléments de programmation et introduction à Java

Machines virtuelles Cours 1 : Introduction

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

M Études et développement informatique

M Études et développement informatique

Processus d Informatisation

Analyse,, Conception des Systèmes Informatiques

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Conduite de projets informatiques Développement, analyse et pilotage (2ième édition)

M Études et développement null informatique. R i. Appellations. Analyste cogniticien / cogniticienne informatique

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Préparation à l examen EFA en Macro

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.

analyse et pérennise votre patrimoine informationnel

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

Master CCI. Compétences Complémentaires en Informatique. Livret de l étudiant

DEVELOPPEMENT ET MAINTENANCE DE LOGICIEL: OUTIL DE PILOTAGE

1 Présentation de l Apur 2. 2 Contexte général du projet 3. 3 Prestation attendue 4

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Gé nié Logiciél Livré Blanc

LICENCE PROFESSIONNELLE

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Développement itératif, évolutif et agile

Progiciels pour TPE - PME - PMI

Introduction au génie logiciel

ALGORITHMIQUE ET PROGRAMMATION En C

Cahier des charges (CDC)

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

Brique BDL Gestion de Projet Logiciel

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

Le programme d examens du Bureau canadien des conditions d admission en génie d Ingénieurs Canada englobe 19 domaines du génie.

Quatrième partie IV. Test. Test 15 février / 71

Méthodologies de développement de logiciels de gestion

Gestion Projet. Cours 3. Le cycle de vie

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Introduction aux Bases de Données Relationnelles Conclusion - 1

Cours Gestion de projet

UNIVERSITÉ DE LORRAINE Master MIAGE (Méthodes Informatiques Appliquées à la Gestion des Entreprises)

Rappels sur les suites - Algorithme

Conférence sur les marchés publics informatiques

Cours d Algorithmique et de Langage C v 3.0

1 L évolution de l informatique

La Certification de la Sécurité des Automatismes de METEOR

Cours 1 : La compilation

Les Langages Informatiques

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Test et Validation du Logiciel

IT203 : Systèmes de gestion de bases de données. A. Zemmari zemmari@labri.fr

Bases de données Cours 1 : Généralités sur les bases de données

Bases de données et interfaces Génie logiciel

Retour d expérience RATP. Intégrer le test de performance au cœur du processus de développement agile. Challenges, techniques, résultats.

En face du commanditaire, on met un chef de projet qui connait le domaine (banque, administration, etc.)

Diagrammes de Package, de déploiement et de composants UML

programmation S initier à la la Avec des exemples en C, C++, C#, Java et PHP Avec des exemples en C, C++, C#, Java et PHP Claude Delannoy

UFR d Informatique. FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE

Qualité du logiciel: Méthodes de test

Introduction à l Informatique licence 1 ère année Notes de Cours

Catalogue des Formations Techniques

GOL-502 Industrie de services. Travaux Pratique / Devoir #7

Chapitre 1 : Introduction aux bases de données

Vérifier la qualité de vos applications logicielle de manière continue

Conversion d un entier. Méthode par soustraction

Vérifica(on et Valida(on de Business Process. Ang Chen et Levi Lúcio

Génie Logiciel. Notes de l an passé-k. Planning Projets. Evolution des approches (1/4) Evolution des approches (2/4) Evolution des approches (3/4)

RESUME DESCRIPTIF DE LA CERTIFICATION (FICHE OPERATIONNELLE METIERS)

Méthodologie de mise en place de

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Les projets d investissement en PME

Identification du module

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

Introduction à la modélisation

Technologie Web. Conception de sites Web. Alexandre Pauchet. INSA Rouen - Département ASI. INSA - ASI TechnoWeb : Rappels UML 1/21

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Introduction aux Bases de Données

Cours de Master Recherche

STAGE IREM 0- Premiers pas en Python

Introduction à la conception de systèmes d information

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Sujet de thèse CIFRE RESULIS / LGI2P

Informatique Machines à calculer en théorie et en pratique

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Ingénieur Développement Nouvelles Technologies

Parcours en deuxième année

REQUEA. v PD 20 mars Mouvements d arrivée / départ de personnels Description produit

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Introduction. Nicolas Phalippon IR3. Source: rapport commandé par le Congrès américain. Présentation du 24/10/02

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

ITIL V3. Objectifs et principes-clés de la conception des services

Ergonomie des Interfaces Homme-Machine

Master Informatique Aix-Marseille Université

Formateur.NET expérimenté Forte expertise dans la conception et le développement d applications.net, associée à une grande pédagogie

MÉTHODOLOGIE PROJET SYSTÈME D INFORMATION DÉCISIONNEL BI - BUSINESS INTELLIGENCE. En résumé :

Christian Soutou UML 2. pour les. bases de données. Avec 20 exercices corrigés. Groupe Eyrolles, 2007, ISBN :

Baccalauréat professionnel. Maintenance des Équipements Industriels

GESTION DE PROJET. - Tél : N enregistrement formation :

Expert technique J2EE

Transcription:

UFR Sciences et Techniques Licence S&T 1ère année Informatique UE 102 Architecture des ordinateurs et Algorithmique de base Jean-Yves Antoine http://www.intro.univ-tours.fr/~antoine/

UFR Sciences et Techniques Licence S&T 1ère année Informatique UE 102 Chap II Programmation impérative : introduction Où l on voit que programmer est plus affaire d analyse de problème que de codage

PROGRAMMATION ET GENIE LOGICIEL Luttons contre quelques idées reçues Avant d être une suite d instructions, un programme constitue une réponse à un problème donné La spécification algorithmique du programme et son codage proprement dit de ce programme ne constituent donc qu une petite partie du développement logiciel cycle de vie en génie logiciel Pourtant objectifs de ce cours Centré sur l algorithmique et l activité de programmation proprement dite bases avant de découvrir les problèmes réel du génie logiciel

PROGRAMMATION ET GENIE LOGICIEL En entreprise : «programming in-the-large» Problème du client pas toujours bien spécifié Client pas nécessairement informaticien: parler métier Plusieurs dizaines voire centaines de milliers de lignes de code Travail en équipe sur des projets longs et complexes : méthodologie Importance de la qualité du logiciel En licence 1 : «programming in-the-small» Problème spécifié précisément de manière formelle Au plus une centaine de ligne de code Travail seul ou en binôme La qualité du logiciel ne joue «que» sur votre note

PROCESSUS DE DEVELOPPEMENT LOGICIEL DES ETAPES MULTIPLES analyse des besoins spécifications analyse conception implémentation validation maintenance

PROCESSUS DE DEVELOPPEMENT LOGICIEL ANALYSE DES BESOINS Étape préalable si le client a une idée peu précise du système à réaliser Étude informelle des fonctionnalités (externes) du système sans considération technique : point de vue métier / utilisateur Dialogue fournisseur / client en termes intelligibles pour ce dernier : l aider à formaliser le problème à résoudre Conduit à la définition du cahier des charges Exemple : système d accès à l IUP Le bâtiment de l IUP se divise en 2 zones (enseignement, administration et enseignants) correspondant à des droits d accès différents. 150 personnes ont quotidiennement accès au site. En dehors des visiteurs, tous les autres catégories de personnes disposeront d une carte d accès : enseignants et administratifs (15) et étudiants (135). Les visiteurs n auront accès au bâtiment qu aux heures de libre ouverture (voir planning). En dehors de ce horaires, l autorisation d accès dans chaque zone sera limitée au porteurs de badge et dépendra de leur statut et de l horaire. Chaque zone est contrôlée par une porte d accès munie d un lecteur de badge spécifique. Les droits d accès ainsi que le planning des horaires d ouverture seront définis par un superviseur.

PROCESSUS DE DEVELOPPEMENT LOGICIEL SPECIFICATIONS Définit ce que doit faire le système (côté client) Document précis spécifiant les fonctionnalités attendues Base du contrat commercial avec le client Document facile à comprendre par le client / utilisateur Exemple Description des fonctionnalités du système avec scénarios, interactions : enchaînements d écrans Use case : Configuration système 1) identification a) saisie du code personnel b)vérification du code personnel c) autorisation 2) Modification de configuration a) choix d une zone

PROCESSUS DE DEVELOPPEMENT LOGICIEL ANALYSE «Quoi faire» : comprendre et modéliser le métier Premier modèle du système (niveau métier) Identifier les éléments intervenants hors (acteurs) et dans le système : fonctionnalités, structure et relations, états par lesquels ils passent suivant certains événements. Réflexion métier hors de toute considération technique Reste un support de discussion avec le client/utilisateur Exemple : diagrammes de classes, de collaborations... a) lire code code superviseur superviseur : personne b) vérification code

PROCESSUS DE DEVELOPPEMENT LOGICIEL CONCEPTION Comment faire le système : choix techniques Modèle de l architecture logicielle du système Décomposition en sous-systèmes : application (interfaces), domaine (métier) et infrastructure (implémentation). Choix de l architecture technique suivant certaines priorités (robustesse, efficacité, portabilité ) Expertise informatique : hors de la compréhension du client Exemple : modèle d architecture en couche applications applications objets du domaine objets techniques objets de l infrastructure interface homme-machine BD : tables personnes, salles composants utilitaires matériel, O.S

PROCESSUS DE DEVELOPPEMENT LOGICIEL IMPLEMENTATION Activité de programmation à proprement parler Souvent trop de temps consacré au codage au détriment des phases d analyse et de conception : mauvaise pratique très coûteuse Remarque L activité de développement sera de plus en plus tournée vers la réutilisation de composants existants VALIDATION Tests en interne Recette : validation client (pas seulement absence de bug mais surtout accord sur les besoins satisfaits : cahier de recette)

PROCESSUS DE DEVELOPPEMENT LOGICIEL MAINTENANCE correction des erreurs du système robustesse demande d évolution (modification de l environnement technique, nouvelle fonctionnalités) modifiabilité, portabilité Étape longue, critique et coûteuse ❶ Projet typique cité par [Mueller et Gaertner, 2000] ❷ Projet concernant 5 personnes, d une durée de 12 mois avec maintenance longue (plusieurs années) ❶ ❷ analyse des besoins et spécifications 15 % 6% analyse / conception 25% 5 % implémentation 30 % 7 % tests et validation 15% 15 % maintenance 15 % 67 %

CYCLE DE VIE DU LOGICIEL CYCLE EN «V» expression besoins spécifications analyse conception validé par valid. fonctionnelle valid. analyse validation besoins implémentation validation finale recette AUTRES METHODOLOGIES maintenance analyse en cascade cycle en spirale

PROGRAMMATION «IN-THE-SMALL» Spécifications données, complètes et précises analyse descendante décomposition du problème / algorithmes implémentation un seul langage de programmation validation jeux d essais spécifications analyse implémentation validation

DEVELOPPEMENT LOGICIEL ET METHODOLOGIE Le développement logiciel n est pas une affaire de bidouille réservée à des initiés maîtrisant des «super» astuces Il nécessite au contraire une méthodologie rigoureuse qui le rapproche avant tout des mathématiques génie logiciel LA «CRISE» DU LOGICIEL Démarche ingéniérique encore mal intégrée par les informaticiens Pannes logicielles avion F16 retourné au passage de l'équateur : non prise en compte du référentiel hémisphère sud échec sonde Venus : virgule remplacée par un point bogue de l an 2000... instabilité de Windows Coût global : 80 Mrd$ (1998) ; 175 Mrd$ (2000) Systèmes critiques : nucléaire, transport ( 10-10 pannes/h), système bancaire...

QUEL LANGAGE DE PROGRAMMATION? DIFFERENTS TYPES DE PROGRAMMATION Impérative Pascal, Fortran, Cobol, Basic, C, ADA Fonctionnelle Lisp, Scheme, CAML Logique Prolog Ada Lovelace : L informatique n est pas réservée qu aux hommes Distribuée (Objet) Smalltalk, C++, JAVA

DIFFERENTS TYPES DE PROGRAMMATION PROGRAMMATION IMPERATIVE Programmation proche du fonctionnement itératif de l ordinateur instructions qui manipulent à la suite des informations de la mémoire, avec branchements conditionnels dans le programme comme ceux gérés par le compteur ordinal le programme dit «comment faire» efficace en terme de rapidité de calcul éloignée de l analyse du problème («quoi faire») Exemple calcul de la factorielle d un entier n Mettre 1 dans la variable fact Lire la valeur n au clavier POUR toutes les valeurs d un compteur i variant de 1 jusqu à n FAIRE multiplier fact par i : nouvelle valeur de fact. Afficher la valeur finale fact

DIFFERENTS TYPES DE PROGRAMMATION PROGRAMMATION DECLARATIVE / SYMBOLIQUE Programmation fonctionnelle Programmation logique Programmation de plus haut niveau, proche du problème on dit «quoi faire» plutôt que «comment faire» Décomposition récursive du problème en sous-problèmes identiques mais plus simples Programmation facilitée mais fonctionnement moins efficace Exemple calcul de la factorielle d un entier n La factorielle de 0 est égale à 1 Pour tout n > 0, la factorielle de n est égale à la factorielle de (n-1) multipliée par n. Remarque Programmation récursive possible avec les langages impératifs

DIFFERENTS TYPES DE PROGRAMMATION PROGRAMMATION DISTRIBUEE (OBJET) Dimension transversale en terme de type de programmation (on peut faire de l impératif objet ou du logique objet) Chaque élément du programme correspond à une entité active et indépendante (objet ou composant) doté de ses propres ressources / propriétés. La résolution du problème passe par une communication entre les objets Méthodologie de modélisation essentielle (UML ) Intérêt : réutilisabilité des composants Exemple objets OLE

QUELQUES NOTIONS COMPLEMENTAIRES DECIDABILITE et CALCULABILITE [A. Church] Il existe des problèmes non implantables sous la forme d un programme (i.e problème non décidable) Problèmes de terminaison : lorsque vous réaliser un programme récursif, si celui-ci présente une boucle infinie à l exécution, la cause en sera certainement un codage erroné plutôt qu un problème de non décidabilité COMPLEXITE complexité linéaire, polynomiale, exponentielle (NP) CORRECTION DE PROGRAMMES En règle générale, il n existe pas de méthode exhaustive pour tester complétement la correction d un programme Langage B et consorts Méthodologie rigoureuse pour prévenir les erreurs et faire une validation aussi exhaustive que possible

Bibliographie Ouvrages généraux A faire Cours sur la Toile Supports du cours : www.sir.blois.univ-tours.fr/~antoine/enseignement/pascal