Semaine 1 Flashcards
Qu’est-ce que le double rôle du logiciel?
Le logiciel est un produit :
- Offre un potentiel informatique
- Produit, gère, acquiert, modifie, affiche ou transmet des informations
Le logiciel est un véhicule pour livrer un produit :
- Prend en charge ou fournit directement les fonctionnalités du système
- Contrôle d’autres programmes (par exemple, un système d’exploitation
- Communications d’effets (par exemple, logiciel de réseau)
- Aide à créer d’autres logiciels (par exemple, des outils logiciels)
Quelles sont les questions menant à l’adoption de la pratique du génie logiciel?
Pourquoi faut-il autant de temps pour terminer un logiciel?
Pourquoi les coûts de développement sont-ils si élevés?
Pourquoi ne pouvons-nous par trouver toutes les erreurs avant de livrer le logiciel au client?
Pourquoi passons-nous autant de temps et d’efforts à maintenir les programmes existants?
Pourquoi avons-nous du mal à mesurer les progrès alors que le logiciel est développé et maintenu?
Qu’est-ce qu’un logiciel?
Le logiciel est un ensemble d’éléments ou d’objets qui forment une ‘‘configuration’’ :
- Programmes
- Documents
- Les données
Le logiciel est un élément système logique plutôt que physique
Le logiciel est conçu
Le logiciel ne s’use pas, mais se détériore
L’industrie du logiciel s’oriente vers la construction basée sur les composants, la plupart des logiciels continuent toujours d’être construits sur mesure
Donnes des exemples d’applications logicielles.
Logiciel système
Logiciel d’application
Logiciel d’ingénierie / scientifique
Logiciel embarqué
Logiciel de ligne de produits
WebApps (applications Web)
Logiciel d’intelligence artificielle
Pourquoi les anciens logiciels doivent être changés?
Les anciens logiciels ont été développés il y a des décennies et ont été continuellement modifiés pour répondre aux changements des exigences d’affaire et des plates-formes informatiques.
Ils causent des maux de tête aux grandes organisations qui les trouvent coûteux à entretenir et risqués d’évoluer.
Beaucoup restent favorables aux fonctions métiers de base et sont indispensables à l’entreprise.
Caractérisés par la longévité et la criticité industrielles.
Mauvaise qualité
Les logiciels doivent être adaptés pour répondre aux besoins des nouveaux environnements ou technologies informatiques.
Le logiciel doit être amélioré pour implémenter de nouvelles exigences d’affaires.
Le logiciel doit être étendu pour le rendre interopérable avec d’autres systèmes ou bases de données plus modernes.
Le logiciel doit être ré-architecturé pour le rendre viable dans un environnement réseau.
Quels sont les défis du génie logiciel?
- Développer des systèmes économes en énergie. Cela les rend plus utilisables sur les appareils mobiles à faible consommation d’énergie et contribue à réduire l’empreinte carbone globale des équipements informatiques.
- Développer des techniques de validation pour les systèmes de simulation (qui seront essentielles pour prédire l’étendue de la planification du changement climatique)
- Développer des systèmes à usage multiculturel
- Développer des systèmes pouvant être adaptés rapidement aux nouveaux besoins de l’entreprise
- Concevoir des systèmes pour un développement externalisé
- Développer des systèmes résistants aux attaques
- Développer des systèmes pouvant être adaptés et configurés par les utilisateurs finaux
- Trouver des moyens de tester, valider et maintenir les systèmes développés par l’utilisateur final
Quelles sont les nouvelles catégories de logiciel?
Informatique omniprésente - réseaux sans fil
Netsourcing - le Web comme moteur informatique
Open source - code source ‘‘gratuit’’ ouvert à la communauté informatique (une bénédiction, mais aussi une malédiction potentielle)
Exploration de données (data mining)
Calcul en grille (grid computing)
Machines cognitives
Logiciel pour les nanotechnologies
Quel est l’objectif de l’ingénierie logicielle?
Concevoir des méthodologies fondées sur la notion d’évolution c’est-à-dire que les systèmes logiciels changent continuellement, les nouveaux systèmes logiciels sont construits à partir des anciens, et tous doivent interagir et coopérer les uns avec les autres.
Le changement (maintenance logicielle) entraîne l’évolution du logiciel et se produit lorsque :
- Les erreurs sont corrigées
- Le logiciel adapté aux nouveaux environnements
- Le client demande de nouvelles fonctionnalités
- L’application est repensée pour offrir des avantages dans un contexte moderne
Quelles sont les lois d’évolution du logiciel?
La loi du changement continu (1974) : les systèmes de type E doivent être continuellement adaptés sinon ils deviennent progressivement moins satisfaisants.
La loi de l’augmentation de la complexité (1974) : à mesure qu’un système de type E évolue, sa complexité augmente à moins qu’un travail ne soit fait pour le maintenir ou le réduire.
La loi de l’autorégulation (1974) : le processus d’évolution du système de type E est autorégulé avec une distribution du produit et des mesures de processus proches de la normale.
La loi de conservation de la stabilité organisationnelle (1980) : le taux d’activité mondial effectif moyen dans un système de type E en évolution est invariant sur la durée de vie du produit.
La loi de conservation de la familiarité (1980) : à mesure qu’un système de type E évolue, tous associés à celui-ci, les développeurs, le personnel de vente, les utilisateurs, par exemple, doivent maintenir la maîtrise de son contenu et de son comportement pour parvenir à une évolution satisfaisante.
La loi de la croissance continue (1980) : le contenu fonctionnel des systèmes de type E doit être continuellement augmenté pour maintenir la satisfaction des utilisateurs tout au long de leur vie.
La loi du déclin de la qualité (1996) : la qualité des systèmes de type E semblera décliner à moins qu’ils ne soient rigoureusement entretenus et adaptés aux changements de l’environnement opérationnel.
La loi sur le système de rétroaction (1996) : les processus d’évolution de type E constituent des systèmes de rétroaction multi-niveaux, multi-boucles et multi-agents et doivent être traités comme tels pour obtenir une amélioration significative par rapport à toute base raisonnable.
Quels sont les mythes logiciels?
Affectent les gestionnaires, les clients (et autres parties prenantes non techniques) et les praticiens.
Sont crédibles parce qu’ils contiennent souvent des éléments de vérités, mais conduisent invariablement à de mauvaises décisions.
Les mythes de gestion :
- Nous avons déjà un livre plein de normes pour construire un logiciel. Cela ne fournira-t-il par aux gens tous ce qu’ils doivent savoir?
- Si nous prenons du retard, nous pouvons ajouter plus de programmeurs et rattraper.
- Si nous décidons d’externaliser le projet logiciel à un tiers, nous pouvons simplement nous détendre et laisser l’autre entreprise le construire.
Les mythes client :
- Un énoncé général des objectifs est suffisant pour commencer à rédiger des programmes; nous pouvons compléter les détails plus tard.
- Les explications du projet changent continuellement, mais le changement peut être facilement pris en compte car le logiciel est flexible.
Les mythes du praticien ou d’expert :
- Une fois que nous écrivions le programme et le faisions fonctionner, notre travail est terminé
- Jusqu’à ce que je lance le programme, je n’ai aucun moyen d’évaluer sa qualité
- Le seul produit livrable pour un projet réussi est le programme
- Le génie logiciel nous fera créer une documentation volumineuse et inutile et nous ralentira invariablement
À quoi correspond la montée de l’orienté objet?
Augmente l’abstraction (langages de programmation)
Programmation événementielle
Interface utilisateur graphique
Modularité
Problèmes de cycle de vie
Transitions de modèle
Logiciels réutilisables
Qu’est-ce qu’un objet?
Objet = État (propriétés, attributs et leur valeurs) + Comportement (opérations, méthodes)
Les objets sont des modèles d’entités du monde réel
Objets en tant que cellules : indépendant, indivisibles, en intéraction
S’adaptent bien :
- Complexité : responsabilité répartie
- Robustesse : indépendance
- Soutenir la croissance : le même mécanisme partout
- Réutilisation : fournir des services, comme dans le monde réel
Qu’est-ce qu’un message?
Les objets communiquent via des messages
Dans le passé : modélisation séparée des données et des processus
OO : processus liés avec des données
Protocoles de message : signatures (interface)
Le même message peut être envoyé à différents objets
Les messages sont des appels de fonctions non spécifiques
Isoler et protéger les données internes des objets. Les objets répondent aux messages.
Qu’est-ce qu’un message vs méthode?
Messages : instructions
Méthodes : implémentation
Par exemple, le message : Avion.dessiner()
Méthode :
class Avion {
Dessiner() {….}
}
Qu’est-ce que l’abstraction?
L’abstraction consiste à identifier les caractéristiques d’une entité qui la distinguent d’autres types d’entités.
Le processus de sélection qui sépare certains attributs et opérations d’un objet concret est appelé abstraction.
L’abstraction est le mot avec une signification assez générale et nous aide à gérer la complexité.
L’abstraction est utile pour décrire un langage de programmation, en termes généraux, sans détails de chaque construction.
Pour l’abstraction comme terme technique :
- Procédures
- Les fonctions
- Types de données
- Des classes
- Méthodes