© Petko ValtchevUniversité de Montréal Janvier IFT 2251 Génie Logiciel Introduction Hiver 2002 Petko Valtchev
© Petko ValtchevUniversité de Montréal Janvier Intro Sommaire l Logiciel, tentative de définition l Génie logiciel, aspects historiques l La qualité des logiciels l Le processus de production
© Petko ValtchevUniversité de Montréal Janvier Intro Les Questions l Qu’est-ce que le logiciel? l Pourquoi le génie logiciel? l Quelle portée de la discipline? l Quelles sont les activités-clés? l Qu’est-ce qu’on entend par qualité?
© Petko ValtchevUniversité de Montréal Janvier Intro Le logiciel comme produit Rôle du logiciel : exploiter le potentiel de calcul offert par le matériel informatique Ex. plate-formes de calcul scientifique (MathLab, Maple), produire, manipuler et transformer tout une gamme d’informations (audio, graphique, etc.) Ex. système d’édition de documents multimédia, contrôler l’ordinateur effectuant les calculs Ex. systèmes d’exploitation (Linux, XP), contrôler la communication entre entités de traitement d’informations Ex. logiciels d’exploitation des réseaux développer des nouveaux systèmes logiciels Ex. outils de développement (Jbuilder, Rational Rose)
© Petko ValtchevUniversité de Montréal Janvier Intro Une définition… Un logiciel est un ensemble d’entités qui forme une “configuration” incluant: des programmes des données des documents Un système logiciel est en général intégré au sein d’un système plus grand qui comporte également des composantes matérielles et peut inclure d’autres logiciels ainsi que des composantes humaines.
© Petko ValtchevUniversité de Montréal Janvier Intro L’essence du logiciel Par rapport aux produits traditionnels, le logiciel possède des caractéristiques particulières qui le rendent unique: N’est pas manufacturé Ne s’use pas… mais peut devenir obsolète. Trop souvent (encore) construit sur mesure, avec peu de soucis de réutilisation.
© Petko ValtchevUniversité de Montréal Janvier Intro Le grand essor du logiciel Depuis les années 80, on assiste à un formidable essor de l’industrie du logiciel et de l’informatique en général. Quels facteurs: Amélioration exceptionnelle des performances du matériel informatique. Accroissement de la mémoire et des capacités de stockage. Changements importants au niveau de l’architecture des systèmes. Diversification des types d’entrées/sorties accessibles. Et on n’est pas prêt de s’arrêter …
© Petko ValtchevUniversité de Montréal Janvier Intro Classifier de l’existant Les systèmes logicielles peuvent être classifiés selon différents critères dont : Le type des informations traitées (sémantique et structure des éléments d'information) Ex. Image, son, texte …. Dans quel format? La prévisibilité des informations et de leur traitement dans le temps Quand les données arrivent-elles? Dans quel ordre? Quand doivent-elles être traitées? L'ordonnancement des opérations est-il prévisible?
© Petko ValtchevUniversité de Montréal Janvier Intro Quelques grandes classes Logiciels système Logiciels temps-réel Logiciels d’affaires Logiciels scientifiques et logiciels d’ingénierie Logiciels embarqués Logiciels pour ordinateur personnel Logiciels d’intelligence artificielle Logiciels d’applications Web
© Petko ValtchevUniversité de Montréal Janvier Intro Les classes de près Logiciels systèmes Logiciel au service d’autres applications l Interactions avec les composants matériels informatiques l Ordonnancement des opérations concurrentes l Partage des ressources l Gestion d'interface avec périphérique externe, l etc. l Ex.: systèmes d'exploitation, pilotes de périphériques, etc.
© Petko ValtchevUniversité de Montréal Janvier Intro Les classes (2) Logiciels temps réel l Logiciel qui surveille, contrôle, analyse et traite les événements au moment où ils surviennent (i.e. temps de réaction entre 1ms et 1s). l Evénement: clic de souris, arrivée d'une donnée, levée d'un signal, etc. l Traitement: transmission de données, calcul, activation de processus, etc. l Ex.: Logiciels utilisés pour le pilotage des avions, des trains. Systèmes d'analyse de données en temps réel. Systèmes de décompression de données en temps réel. Systèmes d'échographie en temps réel, etc.
© Petko ValtchevUniversité de Montréal Janvier Intro Les classes (3) Logiciels d’affaires l Logiciel qui réalise les opérations courantes de gestion dans une entreprise (inventaire, liste des paies, gestion des comptes, historique des transactions, etc.). l Facilite les opérations d'affaires et peuvent servir d'outil d'aide à la décision (analyse des données, gestion de placements) l Gestion interactive possible grâce aux logiciels de transaction directement installés aux points de vente. l Ex.: Logiciels utilisés dans les banques, les super-marchés, les pharmacies, etc.
© Petko ValtchevUniversité de Montréal Janvier Intro Les classes (4) Logiciels scientifiques et logiciels d’ingénierie l Logiciel développé pour résoudre des problèmes de nature scientifique ou des problèmes de conception technique à partir d'algorithmes et de modèle mathématiques. l Ex.: l Logiciels de simulation (pour réseaux de Petri, systèmes de transition, etc) l Logiciels de calcul, d'analyse et de modélisation mathématique (ex. Maple, Mathematica, MathLab) l Ateliers de génie logiciel (Rational Rose, TogetherJ, etc.)
© Petko ValtchevUniversité de Montréal Janvier Intro Les classes (5) Logiciels embarqués l Logiciel "intelligent" qui est intégré à un dispositif, une machine ou un autre système (ex. : appareils ménagers, machines industrielles, avions, automobiles, missiles, montres, gicleurs, caméscopes, stimulateurs cardiaques, etc.) et qui sert à le piloter. l Ex. le clavier d'un four à micro-onde, le système de freinage d'une automobile.
© Petko ValtchevUniversité de Montréal Janvier Intro Sommaire l Logiciel, tentative de définition l Génie logiciel, aspects historiques l La qualité des logiciels l Le processus de production
© Petko ValtchevUniversité de Montréal Janvier Intro Les ratés célèbres l Durant la courte histoire de l’informatique, les constructeurs de logiciel ont eu à rougir plus qu’une fois :-( l La sonde Mariner vers Vénus s’est perdue dans l’espace à cause d’une erreur dans un programme FORTRAN. l En 1981, le premier lancement de la navette spatiale a été retardé de deux jours à cause d'un problème logiciel. l L'explosion d'Ariane 5, le 4 juin 1996, qui a coûté un demi milliard de dollars (non assuré !), est due à une faute logicielle d'une composante dont le fonctionnement n'était pas indispensable durant le vol. l Et on se souvient certainement du bug de l’an 2000 (Y2K).
© Petko ValtchevUniversité de Montréal Janvier Intro Le début… l Aspects historiques l 1968 Conference d’ OTAN, Garmisch (DE) l But: résoudre la “Software Crisis” l Le logiciel avait tendance d’être délivré: l En retard l A des coûts exorbitants l Avec des erreurs l Quant il était délivré…
© Petko ValtchevUniversité de Montréal Janvier Intro Les pièges du logiciel l Pourquoi est-ce que les systèmes d’exploitation ne peuvent-ils être construits comme on construit les ponts? l Tendance à s’effondrer (“crash”) l Ingénierie imparfaite l Complexité l Difficultés de maintenance l Le Génie Logiciel n’est donc pas un Génie ordinaire!
© Petko ValtchevUniversité de Montréal Janvier Intro Définitions l Mais qu’est-ce que c’est alors? « Ensemble des connaissances, des procédés et des acquis scientifiques et techniques mis en application pour la conception, le développement, la vérification et la documentation de logiciels, dans le but d'en optimaliser la production, le support et la qualité. » Office de la langue française, 2000 « (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is the application of engineering to software. (2) The study of approaches as in (1). » IEEE Standards Collection: Software Engineering
© Petko ValtchevUniversité de Montréal Janvier Intro Terminologie l Qualité l Méthodologie, paradigme, processus l Méthode, technique l Programme, système, produit l Client, développeur, usager
© Petko ValtchevUniversité de Montréal Janvier Intro Software Engineering Technologie par couches Génie Logiciel orienté-“qualité” processus (modèle) méthodes outils [Pressman 2001]
© Petko ValtchevUniversité de Montréal Janvier Intro Aspects Économiques l Portée du produit: l Types de logiciel: l système, l temps-réel, l embarqué, l etc. l Temps de production l Qualité du logiciel l Effort investi Variables dans le développement
© Petko ValtchevUniversité de Montréal Janvier Intro Les défis du GL l Minimiser les coûts de développement tout en répondant aux exigences croissantes l Réduire les temps de développement. l Assurer la qualité des logiciels produits. l Instituer l’usage des nouvelles technologies (méthodes et outils) du génie logiciel. l Assurer la maintenance du nombre croissant de logiciels (vieillissants!!)? l Conserver un rythme de production logicielle qui puisse réponde à la demande