DEVASC Module 3
DEVASC Module 3
DEVASC Module 3
Développement et
conception de logiciels
Contenu Pédagogique d l'instructeur
Fonctionnalité Description
Travaux Pratiques Travaux Pratiques conçus pour travailler avec des équipements physiques.
Questionnaires sur le Des évaluations automatiques qui intègrent les concepts et les compétences
module acquises tout au long de la série de rubriques présentées dans le module.
• Les activités Vérifiez votre compréhension sont conçues pour permettre aux élèves de
déterminer rapidement s'ils comprennent le contenu et s'ils peuvent poursuivre ou s'ils ont
besoin de revoir.
• Les exercices du module Vérifiez votre compréhension ne sont pas comptés dans la note
finale des candidats.
• Il n'existe aucune diapositive distincte pour ces exercices dans le fichier PPT. Ils sont
répertoriés dans les notes de la diapositive qui apparaissent avant ces exercices.
Rubrique 3.1
• Demandez aux apprenants ce qu'ils comprennent du terme Développement logiciel.
• Spérez si les apprenants ont entendu parler du cycle de vie du développement logiciel. Demandez-leur de
partager leur compréhension avec la classe.
• Discutez des différentes méthodologies de développement de logiciels. Divisez la classe en groupes et
discutiez de quelle méthodologie est la meilleure dans le scénario de développement logiciel
d'aujourd'hui.
Rubrique 3.3
• Sondez si les apprenants ont entendu parler des systèmes de contrôle de version. Discutez le sujet en détail.
• Discutez Git et GitHub.
Rubrique 3.4
• Demandez aux apprenants de partager leur compréhension des méthodes, des fonctions, des modules et des classes.
• Demandez aux apprenants ce qu'ils comprennent du terme « Clean Code » ? Invite les apprenants à discuter et à trouver
des raisons pour lesquelles les développeurs devraient écrire du code propre.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 7
Module 3 : Meilleures pratiques (suite)
Rubrique 3.5
• Discutez l'importance de revoir le code.
• Discutez en détail des différents types de tests.
• Expliquez ce qu'est le développement axé sur les tests
Rubrique 3.6
• Discuter le formatage des données.
• Demandez aux apprenants s'ils ont entendu parler de XML, JSON et YAML. Demandez-leur de partager
leurs connaissances sur le sujet.
Examen et essai du code Utiliser le test unitaire Python pour évaluer le code.
Comprendre les formats de Utiliser Python pour analyser les différents formats de données et de
données messages. © 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 10
3.1 Développement de
logiciels
• SDLC est plus qu'un simple codage et inclut également des exigences de collecte, de
création d'une preuve de concept, de test et de correction de bugs.
• Est-il possible de développer le logiciel en fonction de ces exigences, et peut-il être fait dans les
limites du budget ?
• Le calendrier de développement comporte-t-il des risques et, si oui, lesquels ?
• Comment le logiciel sera-t-il testé ?
• Quand et comment le logiciel sera-t-il livré ?
À l'issue de cette phase, la méthode classique de la cascade suggère de créer un document de
spécification des exigences logicielles (SRS), qui énonce les exigences et la portée du logiciel, et le
confirme méticuleusement auprès des intervenants (stakeholders).
• Un sprint est une période de temps spécifique, généralement entre 2 et 4 semaines, au cours de
laquelle chaque équipe assume autant de tâches (aussi appelées histoires d'utilisateurs) qu'elle estime
pouvoir accomplir. Lorsque le sprint est terminé, le logiciel doit être opérationnel et livrable.
• La durée du sprint est déterminée avant le début du processus et devrait rarement changer.
• Backlog
• Le carnet de commandes (Backlog) se compose de toutes les fonctionnalités du logiciel, dans une liste
hiérarchisée.
• Histoires d'utilisateurs
• Une histoire d'utilisateur est une déclaration simple de ce dont un utilisateur (ou un rôle) a besoin, et
pourquoi.Chaque histoire d'utilisateur doit être assez petite pour qu'une seule équipe puisse le terminer
en un seul sprint.
• Le modèle suggéré pour une histoire d'utilisateur est le suivant :
En tant que <utilisateur|role >, je voudrais <action>, afin que <valeur|avantage>
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 21
Développement et conception de logiciels
Méthodes agiles (suite)
Équipes Scrum
Renforcer l'intégrité
• L'intégrité du logiciel est lorsque le logiciel répond aux besoins du client tout en conservant l'utilité pour
le client.
Optimiser l'ensemble (Optimize the whole)
• Le logiciel doit être construit de manière cohérente.La valeur du logiciel en souffrira si chaque expert se
concentre uniquement sur son expertise et ne tient pas compte des ramifications de ses décisions sur le
reste du logiciel.
• En 1994, Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides (connu sous le nom de Gang of
Four (GoF)) ont publié un livre intitulé Design Patterns - Elements of Reusable Object-Oriented
Software. Les modèles identifiés sont les suivants :
• Créatif (Creational)
• Structurelle (Structural)
• Comportemental (Behavioral)
• Ils ont énuméré 23 modèles de design.
• Si le fichier ne change pas, Git utilise un lien de référence vers le dernier instantané du système au lieu
de prendre un instantané nouveau et identique.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 38
Systèmes de contrôle de version
Git (suite)
• Git est organisé par 3s- trois
étapes et trois états.
• Impliqués
• Modifié
• Mis en scène
• Git fournit une commande git status pour obtenir une liste de fichiers qui ont des
différences entre le répertoire de travail et la branche parent.
• Command: git status
La commande git rm ne fonctionnera pas si le fichier est déjà dans la zone de transit avec des
modifications.
• Option 2 :Cette option est un processus en deux étapes. Utilisez d'abord la commande standard du
système de fichiers pour supprimer le ou les fichiers, puis ajoutez le fichier à la scène à l'aide de la
commande Git.
$ rm <gile path 1>...
<gile path n>$ git add <gile path 1>... <file path n>
Ce processus en deux étapes équivaut à l'utilisation dugit rm <gile path 1>... <gile path n>commande.
L'utilisation de cette option ne permet pas de conserver le fichier dans le répertoire de travail.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 48
Systèmes de contrôle de version
Mise à jour des référentiels
Mise à jour du référentiel local avec les
modifications apportées à la zone de transit
Command: git commit
• Cette commande combine toutes les
modifications de contenu dans la zone de
transit en un seul commit et met à jour le dépôt
Git local.
Option 1 : commande git branch pour lister, créer ou supprimer une branche.
• Pour fusionner une branche dans une branche qui n'est pas la branche/référentiel actuelle du client,
utilisez la commande suivante :
$ git checkout <target branch name>
$ git fusion <source branch name>
• Pour fusionner plus d'une branche dans la branche/référentiel actuelle du client, utilisez la commande
ci-dessous :
$ git merge <branch name 1>...<branch name n>
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 56
Systèmes de contrôle de version
Fichiers .diff
Qu'est-ce qu'un fichier .diff ?
• Un fichier .diff est utilisé pour montrer comment deux versions différentes d'un fichier ont
changé.
• En utilisant des symboles spécifiques, ce fichier peut être lu par d'autres systèmes pour
interpréter la manière dont les fichiers peuvent être mis à jour.
• Les symboles et les significations d'un fichier diff unifié sont les suivants :
Symbol Signification
+ Indique que la ligne a été ajoutée.
- Indique que la ligne a été supprimée.
/dev/null Indique qu'un fichier a été ajouté ou supprimé.
ou « vierge » Donne des lignes de contexte autour des lignes modifiées.
@@ Indicateur visuel que le prochain bloc d'informations commence. Dans les modifications
d'un fichier, il peut y avoir plusieurs.
Index Affiche les validations comparées. © 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 57
Systèmes de contrôle de version
Travaux pratiques - Contrôle de version des logiciels avec Git
• Au cours de ces travaux pratiques, vous aborderez les points suivants :
Méthodes Fonctions
Les méthodes sont des blocs de code Les fonctions sont des blocs de code
associés à un objet, généralement pour la autonomes.
programmation orientée objet.
• Les classes peuvent avoir des variables de classe et des variables d'objet.
• De nouvelles classes peuvent être définies, en fonction des classes existantes précédemment définies,
de sorte qu'elles héritent des propriétés, des membres de données et des fonctionnalités (méthodes).
• Une classe peut être instanciée (créée) plusieurs fois, et chacune avec ses propres valeurs d'attribut de
données spécifiques à l'objet.
Note : Contrairement aux autres langages POO, en Python, il n'y a aucun moyen de créer des variables
de classe « privées » ou des méthodes internes. Cependant, par convention, les méthodes et les
variables avec un seul trait de soulignement précédent (_) sont considérées comme privées et ne
doivent pas être utilisées ou référencées en dehors de la classe.
© 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
confidentielles de Cisco 67
Notions de codage
Travaux pratiques - Revue des classes Python
Au cours de ces travaux pratiques, vous aborderez les points suivants :
• Partie 1: Lancer la DEVASC VM
• Partie 2: Revue des fonctions, des méthodes et des classes
• Partie 3: Définir une fonction
• Partie 4: Définir une classe avec des méthodes
• Partie 5: Révision du script de circleClass.py
• PyTest est pratique. Il exécute automatiquement • Le framework unittest exige une syntaxe différente
tous les scripts qui commencent par test_ ou se de PyTest.
terminent par _test.py et dans ces scripts, exécute • Pour unittest, vous devez sous-classer la classe
automatiquement toutes les fonctions TestCase intégrée et tester en remplaçant ses
commençant par 'test_' ou 'tests_'. méthodes intégrées ou en ajoutant de nouvelles
• Nous pouvons tester unitaire un morceau de code méthodes dont les noms commencent par 'test_'.
en le copiant dans un fichier, en important pytest,
en ajoutant des fonctions de test nommées, en
enregistrant le fichier sous un nom de fichier qui
commence également par 'tests_ », et en © 2020 Cisco et/ou ses filiales. Tous droits réservés. Informations
l'exécutant avec PyTest. confidentielles de Cisco 73
Revue et test du code
Test d'intégration
• Les tests d'intégration
garantissent que toutes les
unités individuelles s'intègrent
correctement pour faire une
application complète.
• Les espaces de noms sont définis par l'IETF et d'autres autorités Internet, organisations et autres
entités, et leurs schémas sont généralement hébergés en tant que documents publics sur le Web.
• Les espaces de noms sont identifiés par des URI (Uniform Resource Names) pour rendre les
documents persistants accessibles sans que le demandeur ait à se préoccuper de leur
emplacement.
• L'exemple de code ci-dessous montre l'utilisation d'un espace de noms, défini comme la valeur d'un
attribut xmlns, pour affirmer que le contenu d'un appel de procédure distante XML doit être
interprété conformément à la norme NETCONF 1.0 héritée.
• Une structure de données Python sémantique équivalente peut être déclarée comme indiqué ci-
dessous :
• Types de données YAML : Les types de données de base YAML incluent des nombres, des chaînes,
des booléens ou des nulls.
• Objets de base : Dans YAML, les types de données de base sont assimilés aux clés.
• Cartes et listes : YAML représente facilement des types de données plus complexes, tels que des
cartes contenant plusieurs paires clé/valeur et des listes ordonnées.
• Les cartes sont généralement exprimées sur plusieurs lignes, en commençant par une clé
d'étiquette et un deux-points, suivis par des membres, en retrait sur les lignes suivantes :
• Les cartes et les listes peuvent également être représentées dans une soi-disant
« syntaxe de flux », qui ressemble beaucoup à JavaScript ou Python :
• Le modèle de conception MVC simplifie le développement d'applications qui dépendent des interfaces utilisateur graphiques.
• Le contrôle de version conserve l'historique des modifications apportées à un fichier. Types de systèmes de contrôle de
version : Local, Centralisé et Distribué.
• Git est une implémentation open source d'un système de contrôle de version distribué et dispose de deux types de
référentiels : local et distant.
• Le code propre est le résultat de développeurs essayant de rendre leur code facile à lire et à comprendre pour les autres
développeurs.
• La révision du code implique l'examen d'une base de code, d'un sous-ensemble de code ou d'un changement de code
spécifique pour fournir des commentaires.
• Trois formats standard les plus populaires pour l'échange d'informations avec des API distantes : XML, JSON et YAML.
• L'analyse nécessite d'analyser un message, de le diviser en parties constitutives et de comprendre leurs objectifs en
contexte. La sérialisation est à peu près le contraire.
.
Développement et conception de logiciels
Nouveaux termes et commandes
• Software Development Life • Centralized Version Control • Test-Driven Development
Cycle (SDLC) Systems (CVCS) (TDD)
• User experience (UX) • Distributed Version Control • Unit Testing
• Software Requirement System (DVCS) • Software Development Kits
Specification (SRS) • Git (SDKs)
• Agile Scrum • Branching • XML
• Lean • GitHub • JSON
• Extreme Programming (XP) • Arguments • YAML
• Feature-Driven Development • Parameters • Application Programming
(FDD) • Object-Orient Programming Interfaces (APIs)
• Sprints (OOP) • REpresentational State
• Backlog • Formal Code Review Transfer (REST)
• User stories • Change-Based Code Review • Long Strings
• Scrum Teams • Over-the-Shoulder Code • Parsing
• Model-View-Controller (MVC) Review • Serializing