CSC 4102 – Introduction au génie logiciel pour applications orientées objet

Portail informatique

Grilles d'auto-évaluation

Une grille d'évaluation se présente sous la forme d'un tableau ayant en ligne les notions / concepts et en colonne les niveaux d'acquisition estimés / évalués. Les niveaux d'acquisition sont gradués en 5 niveaux au dessus de 0 :

  • 0 : je n'ai pas de connaissance sur la notion ;
  • 1 : je suis capable de définir et énumérer les caractéristiques ou propriétés d'un concept ainsi que d'observer le concept pour décrire un logiciel existant ;
  • 2 : je suis capable d'expliquer et interpréter l'utilisation du concept dans un logiciel existant ;
  • 3 : je suis capable d'utiliser le concept pour construire un nouveau logiciel ;
  • 4 : je suis capable d'analyser ou choisir l'utilisation du concept (sous-entendu plutôt qu'un autre concept, qui peut être similaire) dans un logiciel existant ou pour construire un nouveau logiciel ;
  • 5 : je suis capable de défendre ou critiquer l'utilisation du concept dans un logiciel existant ou pour construire un nouveau logiciel.

Nous indiquons les séances auxquelles les compétences sont introduites, l'acquisition devant se poursuivre pendant le reste du module. Les niveaux sont donc ceux attendus à la fin du module.

Compétences introduites lors de la séance 1

Gestion de version avec Git
Notions / concept 1 2 3 4 5
Gestion de versions, forge logicielle X X X
Entrée sous suivi de version (tracked entry), instantané d'un dépôt (snapshot) X X X
Clonage d'un dépôt (git clone) X X X
États possibles d'une entrée (git status), zone de transit (staging area), validation (commit) X X X
Contenu du répertoire de travail, entrées ignorées (.gitignore) X X X
Branche, fusion de branches (git merge, git mergetool) X X X
Dépôt distant (git remote), tirer depuis un dépôt distant (git fetch, git pull), pousser vers un dépôt distant (git push) X X X
Étiquette (git tag), outils gitk --all, et git gui ou egit X X X
Processus de travail avec branches et étiquettes X X X

Compétences introduites lors de la séance 2

Spécification et tests de validation
Notions / concept / élément de modélisation 1 2 3 4 5
« 4 + 1 » vues de Kruchten, vue « cas d'utilisation » des « 4 + 1 » X X X
Rôle de la spécification, rôle de la préparation des tests de validation X X X
Diagramme de cas d'utilisation, acteur, généralisation spécialisation entre acteurs, cas d'utilisation, lien de communication X X X X X
Généralisation spécialisation entre cas d'utilisation X
Préparation des tests de validation, précondition et postcondition X X X X X
Relation entre les préconditions dans une généralisation spécialisation X
Test de validation d'un cas d'utilisation X X X X X
Table de décision X X X

Compétences introduites lors de la séance 3

Conception préliminaire
Notions / concept / élément de modélisation 1 2 3 4 5
Vue « logique » des « 4 + 1 » vues de Kruchten, aspects statiques Versus dynamiques X X
Rôle de la conception préliminaire X X X
Diagramme de classes, classe, association, multiplicité, attributs d'instance, de classe, dérivés, opérations d'instance et de classe, classe d'association, transformation en une classe et deux associations, agrégation X X X X X
Classe abstraite, opération abstraite, généralisation spécialisation, redéfinition (override), liaison dynamique, surcharge (overload) X X X X X
Principe de substitution de Liskov & Wing X
Façade X X X
Diagramme d'objets X X X X X
Diagramme de séquence, participant, message, barre d'activation, ligne de vie, fragments opt, ref, loop X X X X X
Appel synchrone Versus asynchrone X X X
Messages conditionnés, en séquence, imbriqués, recherche d'objet, création et suppression d'objet X X X X X

Compétences introduites lors de la séance 4

Conception détaillée et préparation des tests unitaires
Notions / concept / élément de modélisation 1 2 3 4 5
Dette technique X
Rôle de la conception détaillée X X X
Raffinement de diagramme de classes, navigabilité, composition versus agrégation X X X X X
Diagramme de machine à états, type d'état, état initial, état final, « en construction », « en destruction » X X X X X
Événement, transition, condition, action, transition implicite X X X X X
Actions « entry », « do », « exit », interne X X X X X
Fiche d'une classe, visibilité, encapsulation, « privé », « protégé », « public », opération accesseur X X X X X
Traduction des associations en attributs, référence, traduction des agrégations Versus compositions, traduction des attributs dérivées, traduction des classes d'association, traduction des diagrammes d'interaction en algorithmes, traduction des diagrammes de machine à états X X X X X
Rôle de la préparation des tests unitaires X X X
Invariant de classe X X X X
Programmation défensive avec vérification des préconditions, programmation par assertion avec l'opération « invariant » X X X X X
Table de décision des tests unitaires d'une opération, vérification de la postcondition et de la levée d'exception, expression de la postcondition avec les attributs « prime » X X X X

Compétences introduites lors de la séance 5

Programmation outillée
Notions / concept / élément de programmation 1 2 3 4 5
Attribut (déclaration, définition), d'instance Versus de classe, final, static, constructeur, this., this(), objet / instance, référence, passage d'arguments dans les méthodes, new, tableau ([], new), encapsulation, visibilité (public, private, protected, package friendly) X X X X X
Méthode (prototype, définition, paramètre, argument), void, main, package, chemin de recherche X X X X X
Surcharge (en anglais overloading) X X X X X
Héritage (classe de base, classe dérivée), extends, protected, méthode polymorphique, transtypage (en anglais cast), transtypage vers le haut (upcast), transtypage vers le bas (downcast)redéfinition (en anglais overriding), @Override, liaison dynamique / tardive X X X X X
Classe abstraite, méthode abstraite, classe concrète, interface, implements X X X X X
Classe paramétré (generics), paramètre de type X X X
Collection, bibliothèque, algorithmes, Collection, Iterable, List, ArrayList, Map, HashMap, clef, égalisté de référence, méthode equals, hashCode X X X X
Énumération X X X X
Annotations X X X
JUnit, classe de test, @BeforeClass, @Before, @Test, @After, @AfterClass, assert*, fail X X X
Maven, dépôt (repository), dépendance, greffon (plug-in), mvn clean install, numéro de version, version stable Versus snapshot, arborescences src/main et src/test X X X

Compétences introduites lors de la séance 6

Programmation, suite : exceptions
Notions / concept / élément de programmation 1 2 3 4 5
Exception X X X X X
Flot d'exécution normal Versus flot de gestion des erreurs X X X X X
Exception sous contrôle ou non RuntimeException X X X X X
Région gardée, bloc try X X X X X
Traitement des exceptions, blocs catch X X X X X
Levée d'exception, throws, throw new X X X X X
Exception dans les tests, @Test(expected=xxx.class) X X X X X

Compétences introduites lors de la séance 7

Qualité de la programmation et idiomes (Object, streams, Optional)
Notions / concept / élément de programmation 1 2 3 4 5
Analyse statique de code, SpotBugs, Checkstyle, Javadoc X X X
Analyse statique de code, SpotBugs, Checkstyle, Javadoc X X X
Idiome, patron d'implémentation X X X
Idiomes JAVA, méthodes communes à tous les objets, equalsavec hashCode X X X
Idiome JAVA, méthode commune à tous les objets, toString, avec association bidirectionnelle, avec énumération X X X
Lambda expression, abstraction pour les fonctions, programmation fonctionnelle X X X
Classe anonyme, lambda expression, fonction, objet, arguments explicites et arguments inférés, bloc retournant une valeur ou rien, contexte d'exécution X X X
Référence de méthode, raccourci d'écriture, pour méthode de classe (ReferenceType::Identifier), pour méthode d'instance (ObjectReference::Identifier), pour constructeur (ReferenceType::new) X X
Interfaces fonctionnelles standard, java.util.function X X X
Streams, paradigme map/reduce, pipeline, évaluation tardive, début/milieu/terminaison du pipeline X X X
Traitements intermédiaires d'un pipeline, transformation, filtrage, combinaison, tri, introspection X X X
Terminaison d'un pipeline, recherche, test de présence, réduction (calcul, collecte), application d'un effet de bord X X X
Problème des références null, idiome, « Null References: The Billion Dollar Mistake » X X
Optional, ofNullable, isPresent, get, map, flatMap, orElse X X X

Compétences introduites lors de la séance 8

Qualité du modèle et patrons de conception
Notions / concept / élément de programmation 1 2 3 4 5
Qualité d'un modèle (correction sémantique [en anglais, well-formedness], consistance [en anglais, consistency], complétude) X X X
Cohérence entre les diagrammes de classes et de séquence, cohérence des diagrammes de séquence avec les préconditions et les postconditions des cas d'utilisation, cohérence des préconditions, postconditions et invariants avec les tables de décision des tests unitaires et de validation, cohérence du modèle avec le code X X X
Critères de la méthodologie OOSDA concernant les classes (suffisante, complète, primitive, couplage faible entre classes reliées par une association et fort entre classes reliée par généralisation spécialisation, et cohésion fortuite et fonctionnelle) X X
Principales familles des patrons de conception : création, structure, et comportement
Définition des patrons de conception (nom, problème, solution, conséquences) présentés en cours (Singleton, Façade, Composite, Observateur—Observable, Stratégie) X
Intégration de patrons de conception donnés X X X