]> 1.0 alpha Ce document a pour objectif de décrire les différents concepts relatifs au domaine de l'ingénierie logiciel. Q: Domaine? R: Ingénierie logicielle Q: Pour quoi? R: Enseignement de l'ingénierie logicielle au niveau universitaire. Q: Pour répondre à quel genre de question? R: Qu'est-ce que l'ingénierie logicielle? Quelles sont les phases d'ingénierie? Qui participe au développement? Q: Qui utilise et maintient cette ressource? R: Les étudiants et enseignant. Débuté le 10 juin 2009. Français Tom Rochette <tom.rochette@polymtl.ca> Acceptance testing Test de validation Test permettant de déterminer si toutes les exigences client décrites dans le document de spécification du logiciel sont respectées. Amdahl's law Loi de Amdahl Loi permettant de prédire les effets d'une amélioration unitaire. AccélérationTotal = 1 / [(1 - f) + f/AccUnitaire] ex. Accélérer 5x une unité qui prend 20% du temps: AccTotal = 1 / [(1 - 0,2) + 0,2/5] = 1,19 Analysis document Document d'analyse Document décrivant diverses informations à propos d'un logiciel à concevoir. Analysis process Processus d'analyse Le processus d'analyser les demandes du clients en vue de produire un document de spécifications qui explicitera les dites demandes. Analysis tool Outil d'analyse Outil permettant de découvrir et obtenir l'ensemble des spécifications du logiciel. Architecture conception Conception de l'architecture Activité durant laquelle on définie les structures essentielles au fonctionnement du logiciel. C'est durant cette étape qu'on décide des divers moyen de communication entre les objets ainsi que les protocoles à utiliser. Artifact Artéfact Élément tangible créé par l'homme. Black box testing Test en boîte noire Test permettant de vérifier les fonctionnalitées du logiciel via entrées/sorties. Bug Bogue Erreur dans le logiciel prévenant le comportement désirée de celui-ci. Bug tracker Logiciel de suivi des bogues Outil permettant de suivre le progrès effectué vers la correction d'un bogue. Build tool Outil de construction Outil permettant l'installation d'un logiciel dans un nouvel environnement de travail. Buyer Acheteur Ce groupe comprend tous les individus qui ont commissionné le logiciel ou ceux qui représentent le marché cible du logiciel. CMM Capability maturity model Modèle de maturité des aptitudes Collection structurée d'éléments décrivant certains aspects de la maturité d'une organisation, permettant la définition et la compréhension des processus de cette organisation. Centralised revision control system Système de gestion de révision centralisé Outil de gestion de révision se trouvant sur un unique serveur. Class diagram Diagramme de classes Outil permettant de représenter l'ensembles des classes composant un logiciel ainsi que les relations entre chacunes de ces classes. Client Client Ce groupe comprend l'ensemble des individus qui partipent à l'achat (paiement) du logiciel. Code coverage Couverture de code Décrit le degré de couverture d'un code testé (généralement en pourcentage, lignes de code testés/lignes de code total). Coding Codage Activité durant laquelle le code du logiciel est réalisé. Compiler Compilateur Outil permettant de lire les symboles générés par un interpréteur pour convertir le tout en format binaire. Comprehension tool Outil de compréhension Outil assistant dans la compréhension humaine des programmes. Conception document Document de conception Document décrivant les éléments permettant de concevoir un logiciel précédemment spécifié. Conception process Processus de conception Le processus de définir l'architecture, les composantes, les interfaces et autres caractéristiques d'un système ou d'une composante et le résultat de ce processus. Conception tool Outil de conception Outil permettant de communiquer et d'établir l'architecture logiciel. Configuration language Langage de configuration Langage employant des mots clés dans le but d'exécuter certains logiciels (tel que compilateurs) dans le but de configurer un logiciel. Configuration management tool Outil de gestion de configuration Outil permettant de gérer l'ensemble des artefacts de configuration logicielle. Coverage analyzer Analyseur de couverture Outil permettant de déterminer la couverture de code d'un logiciel. Cyclomatic complexity Complexité cyclomatique Mesure définissant le degré de difficulté afin de tester une fonction. Cyclomatic complexity analyzer Analyseur de complexité cyclomatique Outil permettant l'analyse d'un fichier source afin d'en déterminer la complexité cyclomatique. Data flow diagram Diagramme de flux de données Outil permettant de représenter les déplacements des données à l'intérieur du logiciel. Debugger Débogueur Outil permettant de déterminer les endroits causant des problèmes dans le code d'un logiciel. Defect Défaut Imperfection d'une entité. Dependency tree Arbre de dépendances Arbre présentant l'ensemble des dépendances entre différentes entités. Design pattern Patron de conception Outil permettant de concevoir une architecture logicielle à l'aide de patrons de conception ayant été employés et décris par d'autres. Design quality analysis Analyse de la qualité du design Activité durant laquelle on remet en jeu la qualité de l'architecture définie jusqu'à présent en vue de s'assurer d'avoir une structure solide. Developer Programmeur Ce groupe comprend tous les individus qui travaillent à la réalisation du logiciel par l'intermédiaire de l'écriture de code. Diagram Diagramme Outil permettant de décrire une idée sous format visuel à l'aide de symboles et de relations. Distributed revision control system Système de gestion de révision distribué Outil de gestion de révision se trouvant sur divers ordinateurs. Document Document Support physique d'information. Documentation writing Écriture de documentation Activité durant laquelle les fonctionnalités du logiciel sont explicités et expliqués dans des documents dans le but d'être partagé avec les utilisateurs du logiciel. Engineer Ingénieur Ce groupe comprend tous les individus ayant reçu une formation scientifique leur permettant de résoudre des problèmes de nature technologique et concret. Evolutive model Modèle évolutif Modèle basé sur les itérations ou les exigences ne sont pas encore toutes connues. Une planification différente est donc effectuée à chaque itération. Extreme programming XP Programmation extrême Extreme Programming (XP) is a software engineering methodology which is intended to improve software quality and responsiveness to changing customer requirements. Formal programming language Langage de programmation formel Langage faisant l'emploi d'une grammaire spécifique avec laquelle il est possible d'employer des règles d'inférences ainsi que des axiomes. Framework Cadriciel Structure définie afin de résoudre ou adresser un domaine spécifique. Grey box testing Test en boîte grise IEEE Analysis document standard Standard IEEE des documents d'analyse Standard IEEE définissant la structure et le contenu d'un document d'analyse. IEEE Conception document standard Standard IEEE des documents de conception Standard IEEE définissant la structure et le contenu d'un document de conception. IEEE Maintenance document standard Standard IEEE des documents de maintenance Standard IEEE définissant la structure et le contenu d'un document de maintenance. IEEE Standard Standard IEEE Standard établi par l'Institute of Electric and Electronics Engineers. IEEE Test document standard Standard IEEE des documents de test Standard IEEE définissant la structure et le contenu d'un document de test. ISO Implementation document standard Standard ISO des documents d'implémentation Standard ISO définissant la structure et le contenu d'un document d'implémentation. ISO Standard Standard ISO Standard établi par l'Organisation International de normalisation. Impact analysis Analyse d'impact Activité durant laquelle on analyse quel serait les impacts de l'ajout de nouvelles fonctionnalités, de la modification de certaines méthodes, ou tout autre modification à apporter au code. Implementation document Document d'implémentation Document décrivant le logiciel lui-même, sous format compilable. Implementation process Processus d'implémentation Le processus d'écriture du logiciel en vue de produire du code exécutable. Implementation tool Outil d'implémentation Outil permettant de produire ou d'accélérer la production de produits logiciels. Incremental model Modèle incrémental Modèle dans lequel l'objectif est de passer à travers l'ensemble des processus afin de réaliser une partie du logiciel. À la prochaine itération, on défini les prochains requis pour une nouvelle partie du logiciel. Integrated development environment Environnement de développement intégré Ensemble d'outils permettant d'écrire du code, de le compiler et de le tester. Integration testing Test d'intégration Activité durant laquelle on s'assure que le nouveau code s'intègre correctement avec le code actuel. Interpreter Interpréteur Outil permettant de convertir le code sous format texte en un format symbolique. Interview Entrevue Outil permettant d'acquérir des informations sur les spécifications par l'entremise de questions posées directement au client. Issue tracker Logiciel de suivi de problèmes Outil permettant de suivre le progrès d'un problème. Iterative model Modèle itératif Modèle par lequel on passe successivement à travers l'ensemble des processus de développement, puis on recommence. Chaque cycle est nommé itération. Language Langage Forme de communication symbolique entre deux entités. Linguistic programming language Langage de programmation linguistique Langage employant une syntaxe textuelle spécifique décrivant l'ordre des appels à des fonctions pré-existantes. Linker Éditeur de liens Outil permettant d'assembler des fichiers objets afin de créer un exécutable. Maintainer Mainteneur Ce groupe comprend tous les individus qui s'occupent de la maintenance du logiciel. Maintenance document Document de maintenance Maintenance process Processus de maintenance Le processus d'assurer l'ajout de fonctionnalités et le fonctionnement d'un logiciel après sa sortie. Maintenance tool Outil de maintenance Outil permettant la gestion et maintenance du produit logiciel après avoir été livré au client. Management tool Outil de gestion Outil permettant de gérer les différents aspects d'un projet d'ingénerie logicielle. Measurement tool Outil de mesure Outil permettant d'évaluer les performances des individus et des équipes afin d'être en mesure d'effectuer des planifications. Metrics Métriques Mesure quantitative d'un élément spécifique. Modeling language Language de modélisation Langage permettant de communiquer un modèle à l'aide d'un ensemble de symboles. Mutation testing Test de mutation Activité durant laquelle une partie du code est modifié dans le but d'altéré le fonctionnement correct du logiciel. Observation Observation Outil permettant d'acquérir des informations sur les spécifications par l'entremise de l'observation d'utilisateurs dans leur environnement de travail. Participant Participant Être humain considéré en tant qu’individu. Performance analysis tool Analyseur de performances Outil permettant d'analyser les performances d'un logiciel, autant en utilisation de ressources qu'en utilisation temporelle. Process Processus Structure imposée au développement d'un produit logiciel. Process framework Cadriciel de processus Structure définie afin de résoudre ou adresser un domaine spécifique du domaine des processus. Profiler Profileur Outil permettant de déceler les parties du code qui sont les plus fréquemment solicitées. Programming language Langage de programmation Langage permettant la communication d'idées et de concepts de provenance humaine vers une machine. Project planning tool Outil de planification de projets Outil utilisé pour effectuer l'estimation des coûts et de planifier le projet en détails. Prototype Prototype Outil permettant d'acquérir des informations sur les spécifications par l'entremise de logiciels incomplets démontrant les options désirées. Questionnaire Questionnaire Outil permettant d'acquérir des informations sur les spécifications par l'entremise de questions posées sous forme de questionnaire, sans interaction direct avec le répondant. Rapid Application Development Développement rapide d'applications Modèle utilisant le minimum de planification en échange de prototypage rapide. Cela permet décrire le logiciel plus rapidement et de s'adapter plus facilement aux changement de requis. Reengineering Réingénierie Activité durant laquelle on remodèle l'architecture d'une application en vue d'y ajouter de nouvelles fonctionnalités. Reengineering tool Outil de réingénierie Outil permettant examination et l'altération d'un logiciel spécifique dans le but de le reconstituer d'une nouvelle manière. Refactoring Réusinage Activité durant laquelle l'objectif est de réécrire une partie du code en vue d'améliorer sa lisibilité, sa compréhensibilité, son efficacité et son fonctionnement. Regression testing Test de régression Activité durant laquelle le nouveau code est testé contre des tests ayant déjà été passés. Permet de déterminer que le logiciel est toujours en mesure d'effectuer les opérations précédemment testées. Reliability measurement Mesure de fiabilité Mesure permettant de déterminer la période de temps durant laquelle un système sera en mesure de fonctionner. On appel cette période le Mean time between failure (temps moyen entre les échecs). La formule employé est MTBF = MTTF + MTTR où MTTF = mean time to failure (temps moyen avant l'échec) et MTTR = mean time to repair (temps moyen pour réparer) Requirements analysis Analyse des requis Activité durant laquel l'ingénieur analyse les requis afin d'en déterminer les objectifs, dépendances de chaque requis afin de comprendre le mieux possible le domaine étudié. Requirements elicitation Collecte des spécifications Activité durant laquelle le client fait par de ses besoins à l'entreprise contractée. Requirements modeling tool Outil de modélisation des requis Outil permettant de suivre les modifications apportés aux documents des requis logiciel. Requirements negotiation Négociation des requis Activité durant laquelle le client et l'entreprise contracté discutent des risques liés à développement du logiciel dans le but de diminuer ceux-ci (et les coûts qui leurs sont reliés). Requirements review Revue des requis Activité durant laquelle les requis sont revus dans le but de vérifier que les ingénieurs et les clients sont sur la même longueur d'onde. Requirements specification Spécification des requis Activité durant laquelle l'ingénieur détaille les spécifications dans ses mots afin que le client soit en accord avec la définition de l'ingénieur. De plus, le document de spécifications sert aussi de référence aux autres ingénieurs et développeurs. Requirements traceability tool Outil de traçabilité des requis Outil employé pour éliciter, analyser, spécifier et valider les requis logiciel. Requirements validation Validation des requis Activité durant laquelle le document de requis est validé par le client afin que l'entreprise contracté puisse travailler sur un travail sur lequel les deux partis se sont entendus. Revision control system Système de gestion de révision Outil faisant la gestion des diverses révisions de fichiers spécifiques. Risk management tool Outil de gestion des risques Outil permettant d'identifier, estimer et suivre les risques. Seller-installer Vendeur-installateur Ce groupe comprend tous les individus qui s'occupent de vendre et d'installer le logiciel. Sequence diagram Diagramme de séquence Outil permettant de représenter les séquences d'appels employés afin d'effectuer certaines actions spécifiques à l'intérieur du logiciel. Sequential model Modèle séquentiel Modèle dans lesquel les étapes se suivent une à la suite de l'autre, sans entrelacement. Software Logiciel Ensemble de procédures performant une tâche spécifique sur un système informatique. Software life cycle model Modèle de cycle de vie logiciel Un modèle de cycle de vie logiciel décrit comment approcher la variété de tâches et activités qui prennent place durant chaque processus. Software product Produit logiciel Élément généré à travers l'ensemble des processus. Source code Code source Document contenant de l'information pouvant être exécutée par un ordinateur. Source lines of code Lignes de code source Nombre de lignes de code Métrique permettant de déterminer la taille d'un logiciel à l'aide du nombre de lignes qui le compose. Source lines of code counter Compteur de lignes de code source Outil permettant d'obtenir le nombre de lignes de codes, de commentaires et de lignes vides pour un ou plusieurs fichiers. Spiral model Modèle en spirale Modèle de développement logiciel qui reprend les différentes étapes du modèle en V, en employant des itérations successives afin de produire un logiciel de plus en plus complet. Stakeholder Partie prenante Ce groupe comprend tous les individus qui possèdent une intérêt dans le succès de l'entreprise contractante. Standard Standard Ensemble de paramètres définis acceptés et employés par un ensemble d'individus. Test case generation Génération de cas de tests Activité durant laquelle des cas de tests sont générés, soit automatiquement par des logiciels, soit manuellement par des développeurs. Test document Document de tests Document spécifiant la manière de tester un logiciel. Test evaluation tool Outil d'évaluation des tests Outil permettant de déterminer si les résultats des tests sont conformes aux résultats attendus. Test execution Exécution des tests Activité durant laquelle les tests sont effectués afin de vérifier le code. Test generator Générateur de tests Outil permettant de générer des tests. Test logger Archiveur de tests Outil permettant de capturer et sauvegarder les résultats de tests. Test logging Archivage des tests Activité durant laquelle les résultats des tests sont enregistrés dans une base de donnée. Test manager Gestionnaire de tests Outil permettant de gérer l'ensembles des tests effectués sur le logiciel. Test planning Planification des tests Activité durant laquelle on planifie les activités de tests futurs. Test process Processus de tests Le processus de tester le logiciel en vue de découvrir et d'éliminer tout bogue éventuel avant la sortie officielle du logiciel. Test results evaluation Évaluation des résultats de tests Activité durant laquelle les résultat des tests sont analysés afin de déterminer les actions à entreprendre par la suite. Test tool Outil de tests Outil permettant de tester les produits logiciels en vue de découvrir et de régler d'éventuels bogues. Text editor Éditeur de texte Outil permettant d'écrire et de modifier du texte. Tool Outil Entité employée pour interfacer deux domaines ou plus afin de faciliter l'action de l'un des domaines sur l'autre. Toolkit language Langage pour toolkit Langage permettant l'écriture de logiciel à interfaces graphiques (GUI). UML Diagram Diagramme UML 1 Outil permettant de décrire une idée sous format visuel à l'aide de symboles et de relations à l'aide du langage UML. UP Unified process Processus unifié Cadriciel itératif et incrémental. À chaque itération, un ensemble de cas d'utilisations sont sélectionné des requis afin d'être développés, testés et déployés. De plus, le processus unifié insiste sur le fait que l'architecture doit être au centre de l'effort du travail d'équipe. Unit testing Test unitaire Activité consistant à vérifier que la plus petite unité de code (fonction ou méthode) fonctionne correctement. User Utilisateur Ce groupe comprend tous les individus qui utilisent le logiciel. V-model Modèle en V Modèle utilisant la relation entre chaque étape de développement et sa contrepartie en test. Visual programming language Langage de programmation visuel Langage permettant de créer des logiciels à l'aide de symboles graphiques organisés de manière logique et systématique. Waterfall model Modèle en cascade Modèle séquentielle à travers lequel on passe successivement à travers les étapes d'analyse, de conception, d'implémentation, de test et de maintenance. White box testing Test en boîte blanche Test permettant d'évaluer un logiciel à l'aide de son code source. Thing Chose Élément de base, indéfini. Bugzilla Bugzilla Application PHP/MySQL regroupant un ensemble de fonctionnalités permettant d'effectuer le suivi de bogues. Concurrent Versions System Concurrent Versions System Gestionnaire de révision non-atomique développé par l'équipe CVS. Eclipse Eclipse Environnement de développement intégré spécialisé dans le développement Java et supportant divers autres langages de programmation. G++ G++ Compilateur du langage C++. GCC GCC Compilateur du langage C. Git Git Gestionnaire de révision distribué développé par Linus Torvalds. Gcov Gcov Application permettant de déterminer la couverture d'exécution d'une seconde application. Gdb Gdb Déboggeur permettant d'analyser une application en un point précis dans le code. Gprof Gprof Application permettant d'établir le profil de performance d'une seconde application. IEEE-1008 IEEE-1008 IEEE-1016 IEEE-1016 IEEE-1058 IEEE-1058 IEEE-1219 IEEE-1219 IEEE-1233 IEEE-1233 IEEE-829 IEEE-829 IEEE-830 IEEE-830 ISO-9126 ISO-9126 Lines of code Lignes de code Lignes de code source, excluant les commentaires. Makefile Makefile Fichier de configuration permettant à l'outil make d'effectuer un ensemble de commandes spécifié dans le document Makefile. Microsoft Visual Studio Microsoft Visual Studio Environnement de développement intégré développé par Microsoft. Spécialisé dans le développement d'applications C++/C#. NetBeans NetBeans Environnement de développement intégré développé par NetBeans, spécifiquement pour le développement Java. Supporte toutefois d'autres langages de programmation. Notepad Bloc notes Application permettant l'écriture de document sous format texte, sans formattage. Observer pattern Patron observateur Patron de conception dont l'intention est d'établir une relation un à plusieurs entre des objets de manière à ce que lorsque l'objet observé change, toutes ses dépendances en sont informées. Proxy pattern Patron proxy Patron de conception dont l'intention est de fournir un remplaçant pour un autre objet afin d'en contrôler l'accès. Singleton pattern Patron singleton Patron de conception dont l'intention est de contrôler le nombre d'instance d'un objet et de fournir un accès global à celui-ci. Source lines of code Lignes de code source Lignes de code source, incluant les commentaires. Subversion Subversion Gestionnaire de révision atomique développé par Tigris. Unified modeling language Langage de modelage unifié Langage permettant aux divers intervenants de communiquer avec les mêmes symboles. ppmcabe pmmcabe Application permettant de déterminer la complexité cyclomatique d'un code source.