les différents paradigmes de programmation · cours de génie logiciel david janiszek un peu...

22
Cours de Génie Logiciel David Janiszek Un peu d’histoire... Les problèmes posés par les logiciels La program- mation Un peu d’histoire ... Les difficultés du développement logiciel Comment surmonter ces difficultés ? En résumé Les différents paradigmes de programmation La programmation procédurale (ou impérative) La programmation objets La programmation fonctionnelle La programmation déclarative La programmation concurrente

Upload: buikhanh

Post on 12-Sep-2018

242 views

Category:

Documents


0 download

TRANSCRIPT

Cours deGénie Logiciel

DavidJaniszek

Un peud’histoire...

Lesproblèmesposés par leslogiciels

La program-mationUn peu d’histoire ...

Les difficultés dudéveloppementlogiciel

Comment surmonterces difficultés ?

En résumé

Les différents paradigmes de programmation

La programmation procédurale (ou impérative)La programmation objetsLa programmation fonctionnelleLa programmation déclarativeLa programmation concurrente

Cours deGénie Logiciel

DavidJaniszek

Un peud’histoire...

Lesproblèmesposés par leslogiciels

La program-mationUn peu d’histoire ...

Les difficultés dudéveloppementlogiciel

Comment surmonterces difficultés ?

En résumé

Chronologie d’apparition des principauxlangages de programmation (1)

Cours deGénie Logiciel

DavidJaniszek

Un peud’histoire...

Lesproblèmesposés par leslogiciels

La program-mationUn peu d’histoire ...

Les difficultés dudéveloppementlogiciel

Comment surmonterces difficultés ?

En résumé

Chronologie d’apparition des principauxlangages de programmation (2)

Cours deGénie Logiciel

DavidJaniszek

Un peud’histoire...

Lesproblèmesposés par leslogiciels

La program-mationUn peu d’histoire ...

Les difficultés dudéveloppementlogiciel

Comment surmonterces difficultés ?

En résumé

Les difficultés du développement (1)

La flexibilitéAbsence de contrainte physique( 6= aéronautique, architecture, automobile, ...)Absence de limite à la complexité (a priori)Possibilité de modifier le programme a posterioriPossibilité de commencer le programme a priori(avant d’avoir défini précisément la tâche à réaliser)Un succès local n’implique la réussite du projet global

L’absence de références standardsChaque logiciel est un prototypeUne application est souvent une innovation

Cours deGénie Logiciel

DavidJaniszek

Un peud’histoire...

Lesproblèmesposés par leslogiciels

La program-mationUn peu d’histoire ...

Les difficultés dudéveloppementlogiciel

Comment surmonterces difficultés ?

En résumé

Les difficultés du développement (2)

La complexitéLa complexité croît avec le nombre d’interactions

Au sein de l’applicationEntre l’application et son environnement

La complexité émerge lorsque ces interactions empêchentleur propre

planificationcompréhensionanticipationlimitation

Cours deGénie Logiciel

DavidJaniszek

Un peud’histoire...

Lesproblèmesposés par leslogiciels

La program-mationUn peu d’histoire ...

Les difficultés dudéveloppementlogiciel

Comment surmonterces difficultés ?

En résumé

Les difficultés du développement (3)

L’intangibilité

Interfaces abstraitesDifficile à tester et à gérerDépendance au matériel sous-jacentDifficile de diagnostiquer un éventuel problème

Le nombre d’états possiblesEspace discret (explosition combinatoire)Absence de structure répétitiveImpossible de tester de manière exhaustive

Cours deGénie Logiciel

DavidJaniszek

Un peud’histoire...

Lesproblèmesposés par leslogiciels

La program-mationUn peu d’histoire ...

Les difficultés dudéveloppementlogiciel

Comment surmonterces difficultés ?

En résumé

Comment surmonter ces difficultés ? (1)

Pour surmonter les difficultés du développementApproche cartésienne : réduction analytique du problème

Décomposer le problème en sous-problèmes moinscomplexesExaminer chaque partie séparément

Hypothèses sous-jacentes :

La décomposition du problème ne fausse pas sonétudeLe comportement de chaque sous-problème resteconstant qu’il soit étudié seul ou au sein du problèmeauquel il appartientLa solution du problème s’obtient aisément à partir dessolutions de chaque sous-problème.

Cours deGénie Logiciel

DavidJaniszek

Un peud’histoire...

Lesproblèmesposés par leslogiciels

La program-mationUn peu d’histoire ...

Les difficultés dudéveloppementlogiciel

Comment surmonterces difficultés ?

En résumé

Comment surmonter ces difficultés ? (2)

Démarche scientifiqueL’approche cartésienne conduit à ...

RationnaliserFormaliserModéliserEtudierEvaluer

... le processus de développement

Cette démarche rend nécessaire la prise en comptel’ensemble des activités allant du recueil des besoins dufutur utilisateur (client) à la mise en service de logicielsrépondant aux besoins énoncés.

Cours deGénie Logiciel

DavidJaniszek

Un peud’histoire...

Lesproblèmesposés par leslogiciels

La program-mationUn peu d’histoire ...

Les difficultés dudéveloppementlogiciel

Comment surmonterces difficultés ?

En résumé

Comment surmonter ces difficultés ? (3)

ConstatEcrire un programme est insuffisant : il faut répondre auxbesoins de l’utilisateur

Evolution du rôle de l’informaticienOn passe de l’écriture d’un programme à la conceptiond’application

Cours deGénie Logiciel

DavidJaniszek

Un peud’histoire...

Lesproblèmesposés par leslogiciels

La program-mation

En résumé

En résumé

Le développement d’application pose des difficultésL’échec (partiel ou total) est extrêmement coûteuxLa solution : une approche rigoureuse de la conceptiond’application

Cours deGénie Logiciel

DavidJaniszek

Le génielogiciel

En résumé Deuxième partie II

Génie Logiciel

Cours deGénie Logiciel

DavidJaniszek

Le génielogicielDéfinition

La notion de qualité

En résumé

Le génie logiciel

Définition [Arrêté Ministériel du 30.12.1983]Le génie logiciel est l’ensemble des activités de conceptionet de mise en oeuvre des produits et des procédurestendant à rationaliser la production du logiciel et son suivi.

Autre définitionLe génie logiciel vise à définir et à résoudre les problèmesposés par le développement d’applications de grandeampleur, c’est à dire, nécessitant des moyens humainsimportants et dont le déroulement est relativement long

Cours deGénie Logiciel

DavidJaniszek

Le génielogicielDéfinition

La notion de qualité

En résumé

La génèse du génie logiciel

Point de départLe comité scientifique de l’OTAN organise du 7 au 11octobre 1968 la première conférence à propos du génielogiciel

L’apparition du génie logiciel accompagne l’industrialisationet l’ingéniérisation du processus de développementd’application.

Industrie Période

Textile début du 18ème siècle

Machines début du 19ème siècle

Chimie début du 19ème siècle

Alimentaire moitié du 19ème siècle

Automobile début du 20ème siècle

TAB.: Quelques dates d’industrialisations

Cours deGénie Logiciel

DavidJaniszek

Le génielogicielDéfinition

La notion de qualité

En résumé

La notion de qualité

Définition : la norme ISO 8402-94La qualité est l’ensemble des caractéristiques d’une entitéqui lui confèrent l’aptitude à satisfaire des besoins expriméset implicites

Définition : la norme ISO 9000 :2000La qualité est l’aptitude d’un ensemble de caractéristiquesintrinsèques à satisfaire des exigences

Cours deGénie Logiciel

DavidJaniszek

Le génielogicielDéfinition

La notion de qualité

En résumé

Les qualités d’un logiciel (1)

1 FiabilitéValidité : le logiciel réalise bien ce que l’on attendRobustesse : le logiciel fonctionne même dans desconditions non prévues au départ

2 ErgonomieAptitude à communiquer de façon efficace avecl’utilisateur

3 ExtensibilitéAptitude d’un logiciel à être enrichi

4 RéutilisabilitéAptitude d’un logiciel (ou de certaines de ses parties) àêtre utilisé plusieurs fois dans des contextes différents

5 Compatibilité / interopérabilitéAptitude d’un programme à fonctionner correctement encollaboration avec d’autres logiciels

Cours deGénie Logiciel

DavidJaniszek

Le génielogicielDéfinition

La notion de qualité

En résumé

Les qualités d’un logiciel (2)

6 PortabilitéAptitude d’un logiciel à être adapté à desenvironnements informatiques variés

7 CoûtCoût monétaire occasionné par le développement et lamaintenance d’un logiciel lors de son cycle de vieCoût monétaire indirect lié à la possession et àl’utilisation d’un logiciel lors de son cycle de vie

8 PerformancesEn terme de vitesse d’exécutionEn terme d’occupation mémoire

9 MesurabilitéAptitude d’un logiciel à être évalué

Cours deGénie Logiciel

DavidJaniszek

Le génielogicielDéfinition

La notion de qualité

En résumé

Quelques organismes de normalisation

AFNOR (Association Française de Normalisation)ANSI (American National Standard Institute)DIN (Deutschen Institut für Norming)DOD (Department of Defense)IEEE (Institute of Electrical and Electronic Engineers)ISO (International System Organization)

Cours deGénie Logiciel

DavidJaniszek

Le génielogicielDéfinition

La notion de qualité

En résumé

Les normes de qualité (1)

Exemple : la qualité des logiciels

La norme française NF ISO/CEI 9126 (octobre 1992)concerne les technologies de l’information(Évaluation des produits logiciels)

Reprise de la norme ISO 9126 + un glossaireEncadre la définition et l’évaluation de la qualité deslogiciels

Cours deGénie Logiciel

DavidJaniszek

Le génielogicielDéfinition

La notion de qualité

En résumé

Les normes de qualité (2)

Dénomination Contenu

ISO 9000, EN 29000 Gestion et assurance de la qualité. Lignes directrices pour la

sélection et l’utilisation

ISO 9004, EN 29004 Recommandation pour un système de gestion de la qualité à l’usage

des entreprises

ISO 9004-2 Lignes directrices pour les services

ISO DIS 9004-2 Gestion de la qualité et éléments de système qualité

TAB.: Gestion de la qualité dans l’entreprise

Dénomination Contenu

ISO 10013 Lignes directrices pour l’élaboration des manuels qualité

NF S50-113/16 Guide pour l’établissement d’un manuel qualité

TAB.: Référentiels qualité

Cours deGénie Logiciel

DavidJaniszek

Le génielogicielDéfinition

La notion de qualité

En résumé

Les normes de qualité (3)

Dénomination Contenu

ISO 9001, EN 29001 Modèle pour l’assurance qualité en conception/développement

ISO 9002, EN 29002 Modèle pour l’assurance qualité en production/installation

et soutien après vente

ISO 9003, EN 29003 Modèle pour l’assurance qualité en contôle et essais finaux

TAB.: Relation client/fournisseur

Dénomination Contenu

NE 270-001 Système de traitement de l’information

AFNOR 267-101 Recommandations pour la conduite de projets informatiques

IEEE P1074 Standard for software quality program requirements

NF ISO 12207 Traitement de l’information. Processus du cycle de vie du logiciel

TAB.: Qualité d’un projet

Cours deGénie Logiciel

DavidJaniszek

Le génielogicielDéfinition

La notion de qualité

En résumé

Les normes de qualité (4)

Et bien d’autres encore :La documentation du logicielLa gestion des configurations et des modificationsL’évaluation d’un projetLe cahier des chargesLes spécificationsLa conceptionLe codageLes tests et les essaisLa validationLa maintenanceLa qualité du produitLes logiciels spécifiques (militaires)

Cours deGénie Logiciel

DavidJaniszek

Le génielogiciel

En résumé

En résumé

Nécessité : mettre en place une approche rigoureusede la conception d’applicationLe développement n’est qu’une petite partie d’un projetinformatiqueObjectif : satisfaire aux critères de qualité