Semaine 1 Flashcards

1
Q

Qu’est-ce que le double rôle du logiciel?

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quelles sont les questions menant à l’adoption de la pratique du génie logiciel?

A

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?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Qu’est-ce qu’un logiciel?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Donnes des exemples d’applications logicielles.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Pourquoi les anciens logiciels doivent être changés?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quels sont les défis du génie logiciel?

A
  1. 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.
  2. 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)
  3. Développer des systèmes à usage multiculturel
  4. Développer des systèmes pouvant être adaptés rapidement aux nouveaux besoins de l’entreprise
  5. Concevoir des systèmes pour un développement externalisé
  6. Développer des systèmes résistants aux attaques
  7. Développer des systèmes pouvant être adaptés et configurés par les utilisateurs finaux
  8. Trouver des moyens de tester, valider et maintenir les systèmes développés par l’utilisateur final
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Quelles sont les nouvelles catégories de logiciel?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Quel est l’objectif de l’ingénierie logicielle?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Quelles sont les lois d’évolution du logiciel?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Quels sont les mythes logiciels?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

À quoi correspond la montée de l’orienté objet?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Qu’est-ce qu’un objet?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Qu’est-ce qu’un message?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Qu’est-ce qu’un message vs méthode?

A

Messages : instructions

Méthodes : implémentation

Par exemple, le message : Avion.dessiner()

Méthode :
class Avion {
Dessiner() {….}
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Qu’est-ce que l’abstraction?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Qu’est-ce que la généralisation?

A

Généraliser, c’est conclure que les caractéristiques d’une entité particulière s’appliquent à un éventail plus larges d’entités.

17
Q

Qu’est-ce que les classes?

A

Ensemble d’objets qui partagent une structure et un comportement communs.

Instance : objet

Définir les propriétés, les procédures applicables aux instances

18
Q

Qu’est-ce que les superclasses et les sous-classes?

A

Une superclasse résulte de la généralisation d’un ensemble de classes.

Une sousclasse résulte de la spécialisation d’une superclasse.

La relation entre les superclasses et les sousclasses est appelée hiérarchie de classes.

19
Q

Quels sont les deux types de classes?

A

Classes ‘‘métiers’’ : Les classes ‘‘métiers’’ sont celles qui ont un équivalent dans le monde réel. La découverte de ce type de classes et de leurs relations est la tâche principale de l’analyse.

Classes utilitaires : Les classes d’utilité sont celles qui n’ont pas d’équivalent direct dans le monde réel et sont utilisées pour créer des objets qui gèrent les responsabilités du système d’information. La découverte et la définition des classes d’utilité et de leurs relations est la tâche de la conception (design).

20
Q

Qu’est-ce que l’encapsulation?

A

L’encapsulation est le conditionnement des données et des processus au sein d’une seule unité.

Le masquage d’informations cache et protège ce qui se passe à l’intérieur d’un objet du monde extérieur.

Lorsque vous utilisez un ATM, l’encapsulation et le masquage des informations garantissent que :
- vous n’êtes pas accablé par la complexité du fonctionnement de la machine
- ne peut pas effectuer des opérations auxquelles vous n’êtes pas autorisé
- ne peut pas changer le fonctionnement de la machine

21
Q

Qu’est-ce que l’aggrégation et la composition?

A

Dans la terminologie orientée objet, la relation d’un objet avec ses objets composants est appelée aggrégation

Une forme forte d’agrégation dans laquelle la vie des composants dépend de la vie de l’ensemble est appelée composition.

22
Q

Qu’est-ce que les classes abstraites?

A

Les classes abstraites sont comme les classes ordinaires.

Une classe qui contient des méthodes abstraites doit être définie comme abstraite. Cependant, il est possible de définir une classe abstraite qui ne contient aucune méthode abstraite. Dans ce cas, nous ne pouvons pas créer d’instances de la classe à l’aide de l’opérateur new. Cette classe est utilisée comme superclasse pour définir une nouvelle sous-classe.

Une méthode abstraite est définie sans implémentation.

Son implémentation est assurée par des sous-classes.

Une sous-classe peut être abstraite même si sa superclasse est concrète. Par exemple, la classe Objet est concrète, mais ses sous-classes telles que Shapes peuvent être abstraites.

Nous ne pouvons pas créer d’instances de classes abstraites à l’aide de l’opérateur new, mais une classe abstraite peut être utilisée comme type de données.

Le constructeur de la classe abstraite est définie comme ‘‘Protected’’, car il n’est utilisé que par des sous-classe

Lorsque nou créons une instance d’une sous-classe concrète, le constructeur de sa superclasse est invoqué pour initialiser les champs de données (attributs) définis dans la superclasse

Exemple : La classe abstraite Shape définit les caractéristiques communes (données et méthodes) des objets formes et fournit les constructeurs appropriés. Parce qu’on ne sait pas comment calculer les surfaces et les périmètres des objets formes, getArea() et getPerimeter() sont définis comme des méthodes abstraites.

23
Q

Qu’est-ce que l’héritage?

A

L’héritage est un mécanisme par lequel une sous-classe incorpore la structure et le comportment d’une superclasse.

24
Q

Qu’est-ce que le polymorphisme?

A

Une classe définit un type. Un type défini par une sousclasse est appelé un sous-type et un type défini par sa superclasse est appelé un super-type.

Le polymorphisme aide à éviter la logique du switch.

Donc, nous pouvons dire que Cercle est un sous-type de Shape et Shape est un super-type de Cercle.

La relation d’héritage permet à une sous-classe d’hériter des fonctionnalités de sa super-classe avec de nouvelles fonctionnalités supplémentaires.

Une sous-classe est une spécialisation de sa superclasse. Chaque instance d’une sous-classe est également une instance de sa super-classe mais pas l’inverse. Par exemple, chaque cercle est un objet de forme, mais tous les objets de forme ne sont par un cercle. Par conséquent, nous pouvons toujours passer une instance d’une sous-classe à un paramètre de son type de superclasse.

25
Q

Qu’est-que la technologie et la modélisation orientée objet?

A

Technologie orientée objet :
- La technologie orientée objet est une réponse à la demande toujours croissante de systèmes informatiques complexes
- Elle est devenue possible grâce aux immenses progrès réalisés par la technologie de l’information

Modélisation orientée objet :
- L’analyse et la conception orientées objet utilisent une approche orientée objet pour construire des modèles conceptuels et logiques du système.

26
Q

Qu’est-ce que le développement des systèmes orientés objet vs systèmes traditionnels?

A

Développement des systèmes traditionnels :
- Les données
- Les fonctions

Approche orientée objet :
- Autonome
- Tout est un objet
- Autonomie des objets

27
Q

Pourquoi l’orienté objet?

A

Ingénierie des autres artéfacts :
- Modularité
- Isolement des modules
- Utilisation générique

Niveau d’abstraction plus élevé

Transition transparente entre les différentes phases du développement du système

Encouragement d’une bonne programmation : intervace vs. implémentation

Réutilisabilité (facilité d’utilisation)

28
Q

Un peu d’histoire

A

SIMULA I (1962-65); SIMULA II (1967) d’Ole-Johan Dahl et Kristen Nygaard

DELTA 1973-75 : Langage de description non compilable

Langages basés sur Smalltalk et Lisp : À partir du milieu des années 1970 par Alan Kay

C++ (Bjarne Stroustrup, 1984), Eiffel (par Meyer) : À partir des années 1980

Java : 1995 (Gosling)

29
Q

Quelle est l’essence du développement des systèmes orientés objet?

A

Les systèmes comme collection d’objets en intéraction

Analyse orientée objet (AOO)
- Quels objets?
- Comment interagissent-ils?

Design orienté objet (DOO) :
- Définir et affiner des objets

Programmation orientée objet (POO) :
- Implémentation d’objets

30
Q

Qu’est-ce qu’un système d’information orienté objet?

A

Une collection d’objets distribués qui collaborent pour fournir les fonctionnalités nécessaires à la satisfaction des exigences métiers

Exigences métiers :
- Modèle métier, cas d’utilisation

Objets :
- Diagramme de classes / d’objets

Les interactions :
- Diagrammes de séquence et de collaboration

Les technologies :
- Diagrammes de composant, de déploiement