Importance du génie logiciel dans l'évolution du sciences infos

Fermé
innovateur509 Messages postés 1 Date d'inscription mardi 9 janvier 2018 Statut Membre Dernière intervention 11 janvier 2018 - 11 janv. 2018 à 18:43
piquesous Messages postés 15930 Date d'inscription mercredi 9 janvier 2013 Statut Contributeur Dernière intervention 13 août 2023 - 11 janv. 2018 à 18:48
Introduction
Selon l'arrêté ministériel du 30 décembre 1983 relatif à l'enrichissement du vocabulaire de l'informatique [Journal officiel du 19 février 1984], le génie logiciel est « l'ensemble des activités de conception et de mise en œuvre des produits et des procédures tendant à rationaliser la production du logiciel et son suivi ». Alors que le matériel informatique a fait, et continue de faire, des progrès très rapides, le logiciel, l'autre ingrédient de l'informatique, traverse une véritable crise. Cette crise a été décelée en 1969 déjà et elle a durée plusieurs années.

Histoire du Génie Logiciel
Le terme software engineering a été mentionné pour la première fois en 1967, ce terme est dû à l’informaticienne et mathématicienne Margaret Hamilton, la conceptrice du système embarqué du programme Apollo et a repris l'année suivante à une conférence concernant la crise du logiciel qui est une baisse significative de la qualité des logiciels. La venue de cette crise coïncide avec le début de l'utilisation des circuits intégrés dans les ordinateurs augmentant la puissance de calcul des ordinateurs qui a permis de réaliser des logiciels beaucoup plus complexes qu'auparavant.
Les premières tentatives de création de logiciels de grande ampleur ont vite montré les limites d'un travail informel d'ingénieurs logiciel : les produits réalisés ne sont pas terminés dans les temps, coûtent plus cher que prévu, ne sont pas fiables, sont peu performants et coûtent cher en entretien. La baisse du coût du matériel informatique s'accompagnait d'une augmentation du coût du logiciel. Des études se sont penchées sur la recherche de méthodes de travail adaptées à la complexité inhérente aux logiciels contemporains et ont donné naissance au génie logiciel.
En 2004, l'utilisation des méthodes de génie logiciel reste quelque chose de relativement peu répandu dans l'industrie du logiciel. Le programmeur travaille souvent comme un artisan, guidé par son talent, son expérience et ses connaissances théoriques et la crise du logiciel s'apparente à une maladie chronique de l'industrie du logiciel.
Complexité des logiciels ayant ouvert la voie à l'ingénierie logicielle
En 1970 parurent de nouvelles notions telles que le multi-utilisateur, les interfaces graphiques, la programmation concurrente, les bases de données et le temps-réel. Les logiciels sont devenus beaucoup plus sophistiqués qu'auparavant, du fait qu'ils mettent en œuvre et exploitent ces nouveautés. C'est à la même époque que sont apparus les premiers éditeurs de logiciels et que le logiciel est devenu un bien du marché.


Définition
Software engineering : le mot anglais engineering possède par ailleurs un sens plus restrictif traduit en français par ingénierie, dont c'est la seule acception. D'après le Petit Robert, l'ingénierie est l'étude globale d'un projet industriel sous tous ses aspects (techniques, économiques, financiers et sociaux) coordonnant les études particulières de plusieurs équipes de spécialistes.
Une première définition du génie logiciel consiste donc à dire qu'il s'agit de la science de l'ingénieur-informaticien spécialiste du logiciel. En explicitant cette définition, on peut encore affirmer que le génie logiciel est l'application des sciences et mathématiques par laquelle les possibilités d'un équipement informatique sont rendues utiles à l'homme à l'aide de programmes, de procédures, de règles et de la documentation associée.
Une deuxième définition possible, complémentaire de la première, du génie logiciel est donc la suivante : Le génie logiciel (software engineering) cherche donc à établir et à utiliser des principes sains d'ingénierie dans le but de développer économiquement du logiciel qui est fiable et qui fonctionne efficacement sur des machines réelles (d'après Fritz Bauer, 1969).
L'une et l'autre des définitions que nous venons de voir montrent que l'objectif premier du génie logiciel, comme d'ailleurs de toutes les sciences de l'ingénieur, n'est pas l'acquisition de nouvelles connaissances, mais plutôt leur mise en application, donc l'accumulation de savoir-faire. Il en résulte que le génie logiciel ne constitue qu'une petite partie de l'informatique, mot intraduisible en anglais si ce n'est par informatics, puisqu'il inclut à la fois la science et la technique du traitement de l'information, alors que l'anglais utilise des termes spécifiques: computer science, d'une part, computer engineering et software engineering, d'autre part.
Le génie logiciel désigne l'ensemble des méthodes, des techniques et des outils concourant à la production d'un logiciel, au-delà de la seule activité de programmation.


Différence entre Génie Informatique et Génie Logiciel
L'ingénieur informatique et l’ingénieur logiciel possèdent tous deux une formation de base commune en analyse et conception de logiciels. Toutefois, l’ingénieur informatique a une formation beaucoup plus spécialisée au niveau matériel, plus spécifiquement sur les systèmes embarqués et l'électronique numérique. De son côté, l’ingénieur logiciel reçoit une formation plus étendue sur le cycle de développement d’un logiciel, en particulier sur la validation, la vérification, les exigences et les spécifications de logiciels.

Génie Informatique
Le génie informatique est une discipline qui s’intéresse à la conception et l’implantation de systèmes, constitués de matériel et de logiciel, ayant pour fonction de capter, stocker, traiter, transmettre, contrôler, présenter et, ultimement, utiliser l’information, le tout dans un contexte pragmatique d’application à des problèmes du monde réel.
À la différence de l'informaticien, qui travaille principalement à concevoir des programmes afin que la machine et l'humain se comprennent, l'ingénieur informaticien crée l'appareil, l'intelligence et les installations informatiques, et peut également les programmer. Il possède des connaissances approfondies de la structure des ordinateurs, de leurs interfaces et des réseaux. Certains ingénieurs informaticiens s'attaqueront plus spécifiquement à des applications agissant sur l'optimisation du rendement des chaînes de productions automatisées, la faculté intellectuelle accrue des robots, etc. Les domaines de spécialisation du génie informatique incluent :
• l'architecture de l'ordinateur et les semi-conducteurs;
• l'informatique industrielle et la commande numérique;
• la réseautique et la télématique;
• le génie logiciel;
• l'intelligence artificielle.

Génie Logiciel
Le terme génie logiciel désigne l'ensemble des méthodes, des techniques et outils permettant la production d'un logiciel, au-delà de la seule activité de programmation.
L'appellation génie logiciel concerne l'ingénierie appliquée au logiciel informatique. Cette branche de l'informatique s'intéresse plus particulièrement à la manière dont le code source d'un logiciel est spécifié puis produit. Le génie logiciel touche au cycle de vie des logiciels. Toutes les phases de la création d'un logiciel informatique y sont abordées: l'analyse du besoin, l'élaboration des spécifications, la conceptualisation du mécanisme interne au logiciel ainsi que des techniques de programmation, le développement, la phase de test et finalement à la maintenance.

Quelque normes en génie logiciel
Le génie logiciel repose sur un ensemble de normes de niveau international permettant de définir le champ de connaissance et d'application.
• IEEE Standard for Software Quality Assurance Plans - IEEE Std. 730
• IEEE Standard for Software Configuration Plans - IEEE Std. 828
• IEEE Standard for Software Test Documentation - IEEE Std. 829
• IEEE Recommended Practice for Software Requirements Specifications - IEEE Std. 830.
• IEEE Recommended Practice for Software Design Descriptions - IEEE Std. 1016
• IEEE Standard for Software User Documentation - IEEE Std. 1063
• Guide SWEBOK - Software Engineering Book of Knowledge
• Software engineering for small organizations - ISO 29110
• Software life cycle - ISO 12207

Domaine de Connaissance du génie logiciel
Le domaine de connaissances du génie logiciel couvre en particulier le cycle de vie d'un logiciel, les activités clés du cycle de vie — depuis la demande d'un maître d'ouvrage jusqu'à la mise hors service définitive du produit — et l'ordre dans lequel ces activités sont effectuées. Il couvre également les différentes personnes impliquées: technico-commercial, les ingénieurs, les acheteurs, les utilisateurs, et le directeur des systèmes d'information.
Selon le SWEBOK les activités clés du cycle de vie d'un logiciel sont : l'analyse fonctionnelle, l'architecture, la programmation, les tests, la validation, la maintenance et la gestion de projet.
Analyse des besoins
Consiste à récolter des informations détaillées concernant l'éventail de fonctions que devra offrir le logiciel, ainsi que les résultats qu'il devra donner. Des connaissances du domaine d'activité du logiciel (exemple: banque, industrie, administration) facilitent le travail de l'ingénieur.
Conception
Consiste à déterminer et schématiser les grandes lignes des mécanismes qui devront être programmés en vue d'obtenir chacune des fonctions que devra offrir le logiciel.
Des plans conceptuels du logiciel selon les formalismes de modélisation (UML par exemple) seront alors réalisé. C'est également à cette étape que l'utilisation de patrons de conception logiciel sont appliqués afin de résoudre certains problèmes de conceptions communs. Le recours à l'architecture logicielle pourra également être effectué.
Construction
Consiste à la rédaction du code source, des instructions de programme qui offriront les fonctions attendues, et qui sont le corps du logiciel. La programmation est alors effectuée en suivant les plans initialement établis lors de la conception. Selon la méthodologie choisie (ex: itératif), les ingénieurs pourront retourner sur les planches à dessin afin d'ajuster la conception avec la réalité de la construction.
Tests
Une suite de vérifications faites par les ingénieurs qui servent à déceler un maximum de bugs, des défauts de programmation qui provoquent des pannes ou des résultats incorrects. La validation est un examen réalisé par le client durant lequel il vérifie que les fonctions offertes par le logiciel correspondent à ses attentes et à ses besoins.
Maintenance
Des opérations d'analyse, de programmation et de test réalisés après coup, une fois que le logiciel a été mis à disposition des utilisateurs et durant lesquelles le logiciel subit des transformations, des corrections ou des améliorations. La facilité de cette maintenance dépendra de l'importance qui lui a été accordé durant la phase de conception.

Gestion de projets
Une activité réalisée tout au long des travaux sur le logiciel, qui consiste à organiser une équipe d'ingénieurs, répartir les tâches et veiller à l'avancée des travaux en vue de finir dans les délais prévus. C'est une activité de management également exercée dans d'autres domaines d'ingénierie.
Les outils et méthodes
Les thématiques du génie logiciel recouvrent notamment les outils et méthodes de spécification de fonctionnalités d'un logiciel, les méthodes formelles (Méthode B par exemple), les outils et les méthodes de conception de logiciel, les outils de conception, atelier logiciel, Ingénierie des modèles Kermeta par exemple, l'automatisation de l'optimisation du code.
D'autres domaines sont connexes au génie logiciel dans la mesure où ils partagent des outils communs : description formelle du code, grammaires des langages manipulés. Ces domaines sont par exemple :
• la compilation ;
• l'interprétation de code ;
• la traduction de code d'un langage de programmation vers un autre.
• un éditeur dédié au langage de programmation
• les bibliothèques de composants
• les outils de planification
• un outil de gestion des exigences pour développer et gérer les exigences relatives au code produit
• un outil de gestion de configuration pour contrôler les évolutions du code produit
• des moyens de tester pour vérifier la conformité du code produit
• des outils de génération de métriques pour caractériser la conformité du code produit
La Gestion de la Qualité
Bien que l'on passe du génie de la production à celui de la décision, ces domaines ont un impact tellement important sur l'activité de génie logiciel qu'ils doivent être mentionnés
• La gestion de la qualité permet de contrôler l'organisation de la production du code.
• La qualité repose sur des méthodes.
• Le management est un modèle et un moyen humain qui a pour but d'améliorer la production.
La gestion de la configuration
Permet de contrôler les évolutions du code produit et les différentes versions du produit.

En conclusion
Le génie logiciel concerne en particulier aux procédures systématiques qui permettent d'arriver à ce que des logiciels de grande taille correspondent aux attentes du client, soient fiables, aient un coût d'entretien réduit et de bonnes performances tout en respectant les délais et les coûts de construction.
A voir également:

1 réponse

piquesous Messages postés 15930 Date d'inscription mercredi 9 janvier 2013 Statut Contributeur Dernière intervention 13 août 2023 6 045
11 janv. 2018 à 18:48
Bonjour,

Et c’est quoi la question ?

A plus.
0