POURQUOI Ada? CYCLE DE VIE D'UN LOGICIEL · n Ada permet explicitement des constructions de tâches...

6
1 Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-1--2007-01-31-09:31 chap1.ppt CHAPITRE 1 INTRODUCTION À Ada Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-2--2007-01-31-09:31 chap1.ppt OBJECTIFS OBJECTIFS n Antécédents d'Ada Pourquoi Ada ? Évolution des langages de programmation Particularités d'Ada Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-3--2007-01-31-09:31 chap1.ppt POURQUOI Ada? POURQUOI Ada? n Pour comprendre Ada, il est utile de survoler le rôle des langages de programmation dans l'ingénierie du logiciel les prédécesseurs d'Ada n Les coûts du logiciel grimpent continuellement! Comment limiter ces augmentations? Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-4--2007-01-31-09:31 chap1.ppt CYCLE DE VIE D'UN LOGICIEL CYCLE DE VIE D'UN LOGICIEL Le cycle de vie d'un logiciel passe par les étapes suivantes: n Besoins Identifier les besoins ( ou ce qu'il faut développer) n Spécifications Établir les spécifications (analyse fonctionnelle) n Conception Analyse détaillée (analyse organique) n Codage Développer les programmes n Tests Période de test (implantation) n Maintenance & évolution Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-5--2007-01-31-09:31 chap1.ppt CRISE DU LOGICIEL CRISE DU LOGICIEL n ne rencontrent les besoins n ne sont pas fiables n sont difficiles à maintenir, ou à adapter à de nouveaux environnements n sont livrés en retard n sont très chers vs matériel Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-6--2007-01-31-09:31 chap1.ppt GÉNIE LOGICIEL GÉNIE LOGICIEL n Le génie logiciel est un domaine de l'informatique qui concerne la réalisation de systèmes logiciels qui sont suffisamment grands et complexes pour être réalisés par des équipes d'ingénieurs et informaticiens.

Transcript of POURQUOI Ada? CYCLE DE VIE D'UN LOGICIEL · n Ada permet explicitement des constructions de tâches...

Page 1: POURQUOI Ada? CYCLE DE VIE D'UN LOGICIEL · n Ada permet explicitement des constructions de tâches (task) pour la programmation concurrente et permet l’exclusion mutuelle grâce

1

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-1--2007-01-31-09:31 chap1.ppt

CHAPITRE 1

INTRODUCTION À Ada

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-2--2007-01-31-09:31 chap1.ppt

OBJECTIFSOBJECTIFS

n Antécédents d'Ada– Pourquoi Ada ?– Évolution des langages de programmation– Particularités d'Ada

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-3--2007-01-31-09:31 chap1.ppt

POURQUOI Ada?POURQUOI Ada?

n Pour comprendre Ada, il est utile de survoler– le rôle des langages de programmation dans

l'ingénierie du logiciel– les prédécesseurs d'Ada

n Les coûts du logiciel grimpent continuellement!– Comment limiter ces augmentations?

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-4--2007-01-31-09:31 chap1.ppt

CYCLE DE VIE D'UN LOGICIELCYCLE DE VIE D'UN LOGICIEL

Le cycle de vie d'un logiciel passe par les étapes suivantes:

n Besoins– Identifier les besoins ( ou ce qu'il faut développer)

n Spécifications– Établir les spécifications (analyse fonctionnelle)

n Conception– Analyse détaillée (analyse organique)

n Codage– Développer les programmes

n Tests– Période de test (implantation)

n Maintenance & évolution

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-5--2007-01-31-09:31 chap1.ppt

CRISE DU LOGICIELCRISE DU LOGICIEL

n ne rencontrent les besoinsn ne sont pas fiablesn sont difficiles à maintenir, ou à adapter à de

nouveaux environnementsn sont livrés en retardn sont très chers vs matériel

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-6--2007-01-31-09:31 chap1.ppt

GÉNIE LOGICIELGÉNIE LOGICIEL

n Le génie logiciel est un domaine de l'informatique qui concerne la réalisation de systèmes logiciels qui sont suffisamment grands et complexes pour être réalisés par des équipes d'ingénieurs et informaticiens.

Page 2: POURQUOI Ada? CYCLE DE VIE D'UN LOGICIEL · n Ada permet explicitement des constructions de tâches (task) pour la programmation concurrente et permet l’exclusion mutuelle grâce

2

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-7--2007-01-31-09:31 chap1.ppt

RÔLE DE L'INGÉNIEUR LOGICIELRÔLE DE L'INGÉNIEUR LOGICIEL

n ProgrammationMéthodes et langages

n AlgorithmiqueStructures de données

n Méthodes de conception (désign)n Traduire des spécificationsn Comprendre l'usagern Membre d'une équipen Communicationsn Planification

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-8--2007-01-31-09:31 chap1.ppt

ATTÉNUATION DE LA CRISE DU LOGICIELATTÉNUATION DE LA CRISE DU LOGICIEL

Le génie logiciel aide à atténuer la crise logiciel en:n fournissant des outils pour s'adapter au cycle de

vie du logiciel et pour améliorer la productivité,

n en entraînant le personnel avec une méthodologie commune,

n développant de meilleures architectures et de meilleurs langages.

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-9--2007-01-31-09:31 chap1.ppt

IMPORTANCE DE L'ENVIRONNEMENTIMPORTANCE DE L'ENVIRONNEMENT

n Un langage est utile et puissant en autant qu'il est supporté par un environnement approprié(compilateurs, éditeurs, aide à l'épuration, ...)

n La norme d'Ada inclut un environnement (APSE) "Ada Program Support Environment" qui permet d'améliorer la productivité des informaticiens.

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-10--2007-01-31-09:31 chap1.ppt

IMPACT DES LANGAGES DE PROGRAMMATIONIMPACT DES LANGAGES DE PROGRAMMATION

n Les normes pour les – langages– outils logicielspeuvent réduire les coûts de– conception– codage– test– maintenance

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-11--2007-01-31-09:31 chap1.ppt

PROGRAMMATION EMBARQUÉE (EMBEDDED SYSTEM)PROGRAMMATION EMBARQUÉE (EMBEDDED SYSTEM)

n Les sous-systèmes embarqués sont des composantes de système qui doivent souvent satisfaire des contraintes– sévères de temps réel– de fiabilité.

n Les logiciels systèmes (embarqués) sont habituellement– gros– ont une grande longévité– habituellement en ASM

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-12--2007-01-31-09:31 chap1.ppt

ANCÊTRES D'AdaANCÊTRES D'Ada

n Ada se veut un langage évolué de haut niveau rassemblant les concepts et les constructions de ses prédécesseurs.

n La plupart des constructions d'Ada sont des constructions qui ont été éprouvées dans de nombreux langages qui ont précédé Ada.

Page 3: POURQUOI Ada? CYCLE DE VIE D'UN LOGICIEL · n Ada permet explicitement des constructions de tâches (task) pour la programmation concurrente et permet l’exclusion mutuelle grâce

3

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-13--2007-01-31-09:31 chap1.ppt

HISTORIQUEHISTORIQUE

n En 1973, déjà plus de 500 langages étaient utilisés par le Ministère de la Défense Américaine (DoD)

n Plusieurs langages étaient mal utilisés et vieux

n Cette diversité était un des facteurs importants de la montée des coûts du logiciel

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-14--2007-01-31-09:31 chap1.ppt

ÉVOLUTION DES LANGAGESÉVOLUTION DES LANGAGES

1960

1970

1980

FORTRANALGOL

COBOL

PL/1

SIMULA ALGOL68

HAL/S PASCAL

EUCLID CLU

Ada

B

C

C++

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-15--2007-01-31-09:31 chap1.ppt

ÉVOLUTION DES LANGAGESÉVOLUTION DES LANGAGES

1970

1980

HAL/S PASCAL

EUCLID CLU

Ada83

B

C

C++1990

2000

Ada95Java

C#

Ada 2005

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-16--2007-01-31-09:31 chap1.ppt

Buts d'AdaButs d'Ada

n Contrairement aux autres langages, Ada a été développé avec des buts précis et des besoins explicites

n Les besoins sont apparentés et quelques fois en conflits! e.g. les unités de compilation séparées et la programmation concurrente entrent en conflit avec la simplicité visée du langage

n Les buts principaux sont:– fiabilité– simplicité– modularité– efficacité

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-17--2007-01-31-09:31 chap1.ppt

BUTS -- FIABILITÉ ET FACILITÉ DE MAINTENANCEBUTS -- FIABILITÉ ET FACILITÉ DE MAINTENANCE

n Accent sur la lisibilité plutôt que sur la facilitéd'écriture

n Notations favorisant les erreurs ont été évitées

n Constructions doivent avoir une sémantique simple et non ambiguë

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-18--2007-01-31-09:31 chap1.ppt

BUTS -- SIMPLICITÉBUTS -- SIMPLICITÉ

n Le langage a été gardé aussi petit que possible

n Les écueils d'une complication excessive ont étéévités.

n Les constructions du langage sont intuitives pour l'utilisateur.

Page 4: POURQUOI Ada? CYCLE DE VIE D'UN LOGICIEL · n Ada permet explicitement des constructions de tâches (task) pour la programmation concurrente et permet l’exclusion mutuelle grâce

4

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-19--2007-01-31-09:31 chap1.ppt

BUTS -- MODULARITÉBUTS -- MODULARITÉ

n Le langage doit supporter et favoriser

– les logiciels modulaires et réutilisables,– les unités de compilation séparées.

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-20--2007-01-31-09:31 chap1.ppt

BUTS -- EFFICACITÉBUTS -- EFFICACITÉ

n Ada a évité des constructions qui nécessitent

– des compilateurs trop élaborés,– une utilisation inefficace de la mémoire, ou du temps

d'exécution,– du matériel spécialisé.

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-21--2007-01-31-09:31 chap1.ppt

PRINCIPES D'INGÉNIERIE DU LOGICIEL POUR LES LANGAGESPRINCIPES D'INGÉNIERIE DU LOGICIEL POUR LES LANGAGES

n Les buts d'Ada de simplicité, de fiabilité, de maintenance, et d'efficacité peuvent être atteints en utilisant les principes du génie logiciel:

– abstraction,– dissimulation d'information,– modularité,– programmation embarquée,– uniformité,– complétude,– confirmabilité.

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-22--2007-01-31-09:31 chap1.ppt

LANGAGES STRUCTURÉSLANGAGES STRUCTURÉS

n Les premiers langages, comme FORTRAN et COBOL, permettaient et favorisant au début l'écriture de "programmes spaghetti" qui étaient difficiles à mettre au point et à maintenir.

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-23--2007-01-31-09:31 chap1.ppt

PROGRAMMATION STRUCTURÉE?PROGRAMMATION STRUCTURÉE?

n La programmation structurée utilise des blocs avec une seule entrée, des structures de contrôle avec une seule sortie. (introduit par ALGOL)

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-24--2007-01-31-09:31 chap1.ppt

STRUCTURES DE CONTRÔLESTRUCTURES DE CONTRÔLE

n Ada supporte les énoncés structurés:– énoncés conditionnels ( if et case)– boucle ( for et while)

n Ada fournit des sorties (exit) à différents niveaux afin d'éliminer les besoins des "goto"

Page 5: POURQUOI Ada? CYCLE DE VIE D'UN LOGICIEL · n Ada permet explicitement des constructions de tâches (task) pour la programmation concurrente et permet l’exclusion mutuelle grâce

5

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-25--2007-01-31-09:31 chap1.ppt

PROTECTION ET TYPE DE DONNÉESPROTECTION ET TYPE DE DONNÉES

n Ada exige que chaque variable ou expression ait un type explicite, à la compilation

n La protection des données est mise en force par la possibilité d'interdire certaines opérations sur certaines données.

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-26--2007-01-31-09:31 chap1.ppt

BESOINS DE DONNÉES STRUCTURÉESBESOINS DE DONNÉES STRUCTURÉES

n Les premiers langages, e.g. permettaient des constructions de contrôle structurées, mais ne permettaient pas la structuration des données

n PASCAL a introduit des types structurés de données– enregistrement– tableau– pointeur

n Ada possède des types structurés de données, des types étiquetés (tagged) dont on peut hériter, en plus des types privés (private) qui permettent de protéger les données.

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-27--2007-01-31-09:31 chap1.ppt

NOMS ASSOCIÉS À DES ENTITÉSNOMS ASSOCIÉS À DES ENTITÉS

n Ada associe des noms à des entités, e.g. variable, constante, exception, type, paquetage, tâche, etc....

n Cette nomenclature améliore– la vérification des types,– la lisibilité du programme,– la modularité,– les abstractions.

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-28--2007-01-31-09:31 chap1.ppt

PROGRAMMATION CONCURRENTEPROGRAMMATION CONCURRENTE

n Les premiers langages ne supportaient pas la programmation concurrente.

n Avec ces langages, les logiciels embarqués ("embeddedsystem") étaient une collection de programmes s'exécutant en parallèle.

n Ada permet explicitement des constructions de tâches (task) pour la programmation concurrente et permet l’exclusion mutuelle grâce aux objets protégés (protected type).

n Les tâches peuvent être créées dynamiquement, et sont logiquement exécutées en parallèle.

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-29--2007-01-31-09:31 chap1.ppt

MULTI-TÂCHES -- MULTI-PROCESSEURSMULTI-TÂCHES -- MULTI-PROCESSEURS

n Un multi-processeur est un ordinateur muni de plusieurs processeurs qui s’exécutent physiquement en parallèle.

n Les tâches d'Ada permettent le développement de logiciels contrôlant plusieurs processeurs.

n Les tâches permettent l'implémentation d'applications synchronisées et communiquant entre elles.

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-30--2007-01-31-09:31 chap1.ppt

MINIMISER L'UTILISATION D'ASMMINIMISER L'UTILISATION D'ASM

n ASM a toujours été fortement utilisé pour les logiciels systèmes (embarqués),

n Ada fournit des outils évolués pour accéder au matériel et le contrôler,

n Les constructions d'Ada– minimisent les besoins d'ASM,– permettent d'isoler les dépendances de la machine,– simplifient l'entretien du logiciel.

Page 6: POURQUOI Ada? CYCLE DE VIE D'UN LOGICIEL · n Ada permet explicitement des constructions de tâches (task) pour la programmation concurrente et permet l’exclusion mutuelle grâce

6

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-31--2007-01-31-09:31 chap1.ppt

LIBRAIRIES (BIBLIOTHÈQUES) DE MODULESLIBRAIRIES (BIBLIOTHÈQUES) DE MODULES

n Les bibliothèques de logiciels sont des ensembles de modules partagés ou utilisés par des projets logiciels

n Les bibliothèques de logiciel sont un facteur majeur dans la réduction des coûts du logiciel

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-32--2007-01-31-09:31 chap1.ppt

RARETÉ DE LIBRAIRIESRARETÉ DE LIBRAIRIES

n Les bibliothèques de logiciels réutilisables ne sont pas très importantes, sauf pour FORTRAN et maintenant C, C++ et STL.

n Les bibliothèques de logiciels sont utiles en pratique, si le langage est– bien normé,– utilisé abondamment,– et s'il existe des outils, lors des compilations séparées et

de l'édition des liens, permettant de vérifier la consistance et l'intégrité des modules.

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-33--2007-01-31-09:31 chap1.ppt

Ada FAVORISE LA RÉUTILISATION DES LOGICIELSAda FAVORISE LA RÉUTILISATION DES LOGICIELS

n Les paquetages (package) d'Ada permettent de regrouper les déclarations apparentées et de les encapsuler.

n Les paquetages peuvent être compilés séparément et favorisent la vérification ("checking")

n Les paquetages génériques permettent de définir des squelettes de programmes (sous-programmes) semblables.

Ingénierie du Logiciel avec Ada -- L.Granger-Ada10-34--2007-01-31-09:31 chap1.ppt

NORMALISATION DE LA MAINTENANCE ET PORTABILITÉNORMALISATION DE LA MAINTENANCE ET PORTABILITÉ

n Une grande partie des langages ne sont pas normés, (e.g. LISP, PROLOG)

n ou deviennent standards après plusieurs années (e.g. PASCAL)

n ou possèdent plusieurs standards ou sous-ensembles (e.g. FORTRAN & COBOL)