GEL−1001 Design I
(méthodologie)
Technique 1 –
Quelques éléments
de conception logicielle
Hiver 2023
Département de génie électrique
et de génie informatique
Plan
< Conception logicielle – architecture
< Décomposition de système
< Aspects de sécurité
< Base de données
Hiver 2023 2
Conception logicielle
< Bien structurer notre code afin :
a D’offrir
les fonctionnalités aux usagers
a D’assurer la qualité du logiciel
Hiver 2023 3
Conception logicielle
< Repose sur un bon choix d’architecture
< Architecture = composants + connecteurs
Hiver 2023 4
Vue globale du système
Environnement
Intrants Extrants
Capteurs Effecteurs
Système
Sense-Compute-Control
Hiver 2023 5
Vue globale du système
Environnement
Intrants Extrants
Capteurs Effecteurs
Système
Hiver 2023 6
Un exemple
Environnement
Intrants Extrants
Modules de traitement:
Fusion, monitoring, détection aux angles morts, détection de
collision, freinage d’urgence, conduite, changement de voie…
Hiver 2023 7
Quoi faire avec...
Environnement
Intrants Extrants
Capteurs Effecteurs
Système
Usager(s) ? Données ?
Hiver 2023 8
Presentation-Logic-Data
< Modèle à 3 couches
< Utile pour les systèmes d’information
• Saisir les inputs des usagers
Presentation (UI) • Présenter les informations
• Capter les événements de l’interface
• Gérer les commandes de l’usager
Application Logic • Analyser les données (ex. filtrer, classifier…)
• Exécuter les fonctions principales du système
• Déterminer quoi présenter à l’usager
Data
• Assurer la persistance des données
• Faciliter la recherche et la manipulation
Hiver 2023 9
On fusionne le tout
Environnement
Intrants Extrants
Capteurs Effecteurs
Couche de présentation (UI)
Couche logique de l’application
Hiver 2023 10
Oui... mais combien ça coûte?
Presentation (UI)
< Complexité vs. coût Application Logic
a Très simple Data
= Conversion oC en oF
a Relativement simple
= Alarme, formulaire de saisie de données, BD simple
a Plus complexe
= Planification de trajectoire, affichage 2D/3D, crypto,
authentification, BD de la structure d’un pont
a Encore plus complexe
= Apprentissageautomatique, réalité augmentée,
reconnaissance de la parole, biométrie, intégration de
systèmes
Hiver 2023 11
D’accord... sauf que...
Environnement
Intrants Extrants
Capteurs Effecteurs
Couche de présentation (UI)
Couche logique de l’application
Hiver 2023 12
Modèle client-serveur
< Principal modèle pour les systèmes
distribués
Requête
Serveur
+service1()
Client +service2()
Réponse …
+serviceN()
Hiver 2023 13
On fusionne encore le tout...
Environnement
Intrants Extrants
Capteurs Effecteurs
Couche de présentation (UI)
Couche logique de l’application
Hiver 2023 14
Différents clients
< Client léger et client lourd (thin vs. fat)
Client léger (thin) Serveur
UI Logic Data
Client lourd (fat) Serveur
UI Logic Logic Data
Hiver 2023 15
Client léger
< Modèle client-serveur sur le Web
a Affichage avec un navigateur
Client Requête (HTTP)
HTML J2EE
JavaScript Serveur PHP
.NET
Ajax Réponse (HTML) Web Python
AngularJS
React Ruby
… …
Spring, Flask,
Django, Rails, Rest…
Hiver 2023 16
Client lourd
< Plus de traitements du côté client
Hiver 2023 17
Que désigne les flèches?
< Ce sont des connecteurs
Serveur
Client +service1()
+service2()
…
+serviceN()
a Format des échanges
= HTML, XML, Json…
a Protocoles d’échange
= Ex. Http, ftp…
a Niveau physique
= Câble ou ondes radio
Hiver 2023 18
Échanges client-serveur
< Sockets
a Protocole de bas niveau pour l’échange d’information.
a Similaire à l’écriture à distance dans un fichier.
< Remote Procedure Calls (RPC)
a Exécution de fonctions à distance.
a Génération automatique des fonctions client et serveur.
< Http
a Transfert de fichiers hypertextes (ressources).
a Principales commandes: GET, POST, HEAD, PUT.
< Rest
a Extension de Http pour les services Web.
a Axé sur l’exécution de services à distance.
Hiver 2023 19
HyperText Markup Language (HTML)
< Langage avec marqueurs
< Structure un document avec des balises
donnant des indications de présentation
<!DOCTYPE html>
<html>
<head>
<title>Hello HTML</title>
</head>
<body>
<h1>The Title</h1>
<p>Hello, World!</p>
</body>
</html>
Hiver 2023 20
XML
En-tête standard
<?xml version="1.0" ?>
<customer_list>
<customer number="050"> Balise racine
<name>Stephen Harper</name>
<customer_since year="2006"/>
</customer>
<customer number="041"> Balise avec
<name>George W. Bush</name> élément texte
<customer_since year="2001"/>
</customer>
Balise sans élément
</customer_list> avec attribut
Fermeture de la
balise racine
Hiver 2023 21
JSON
< Devient le standard pour l’échange d’infos
< Plus simple que XML à décortiquer
< Ressemble à un dictionnaire Python
Hiver 2023 22
Wi-Fi (Wireless Fidelity)
< Norme IEEE 802.11 réseaux locaux sans fil (WLAN)
< Couches : physique et liaison
< Débit : 11 Mbit/s (802.11b), 54 Mbit/s (802.11g) et 150
Mbit/s (802.11n)
< Portée : 30 à 50 m (jusqu’à 10 fois plus à l’extérieur)
< Sécurité : 802.11i (gestion des clés, chiffrement et
authentification)
< Fréquences : 2.4 GHz et 5 GHz
< Réseaux : infrastructure (points d’accès) et ad hoc
< Protocole : sans connexion
Hiver 2023 23
Bluetooth
< Connexion radio courte distance entre ordinateurs et
périphériques (réseaux personnels)
< Portée : 1, 10, 100 mètres (3 puissances)
< Débit : 1 Mbit/s (v1) à 3 Mbit/s (v2)
Hiver 2023 24
Le système doit être sécuritaire
Authentification
Environnement
Couche de présentation (UI)
Contrôle
d’accès
Couche logique de l’application
Encryption
Hiver 2023 25
Sécurité
<Authentification
a Vérifier l’identité d’une personne pour autoriser
l’accès à des ressources.
<Contrôle d’accès
a Limite l’utilisation de ressources en fonction de
l’usager.
<Chiffrement («encryption»)
a Utilisation de clés pour chiffrer et déchiffrer les
informations transmises.
Hiver 2023 26
Authentification
< Valider l’identité d’un usager à partir
d’informations personnelles.
a Disponible dans plusieurs environnements
a Utilitaires disponibles (ex. LDAP, ASP.NET)
a Important – Chiffrement des mots de passe
Hiver 2023 27
Contrôle d’accès
< Habituellement basé sur des rôles
a Role-based access control
a Le rôle détermine les permissions.
< Nécessite l’authentification des usagers
Hiver 2023 28
Chiffrement (« encryption »)
< Chiffrement symétrique
a Une même clé pour chiffrer et déchiffrer
< Chiffrement asymétrique
a Paire composée d'une clé publique et
d'une clé privée
a Données chiffrées avec une clé doivent être
déchiffrées avec l’autre
Hiver 2023 29
Chiffrement symétrique
Hiver 2023 30
Chiffrement asymétrique
Hiver 2023 31
Génération des clés
< Chiffrement symétrique
a 128 bits, donc 2128 façons de chiffrer
a Certains disponibles pour 256 bits
< Chiffrement asymétrique
a Algorithme RSA : basé sur la factorisation
en nombres premiers
a 1024 bits ou plus car la clé doit respecter
une structure particulière
Hiver 2023 32
Confidentialité
Hiver 2023 33
Authentification par chiffrement
Hiver 2023 34
Base de données
< Outil pour assurer la persistance des données
a Stockage et utilisation
< Les informations sont structurées.
a Nombre, symbole, date, chaîne de caractères.
< Système de gestion de base de données (SGBD)
a Un serveur qui manipule et dirige l’accès au contenu
< 4 opérateurs CRUD de manipulation de données
a Create (création)
a Read (lecture)
a Update (mise à jour)
a Delete (retrait)
Hiver 2023 35
Base de données relationnelles
< Enregistrement
a Tuple de données
a Plusieurs champs
< Table
a Ensemble d’enregistrements
< Clé primaire
a Désigne un enregistrement
a Différent pour chaque enregistrement
< Clé étrangère
a Référence à une donnée connexe
Hiver 2023 36
Base de données
relationnelles
< Langage de requête SQL
a SQL – Structured query language
a Standard de l’industrie
Informations recherchées
< Exemple
SELECT Nom, Prénom, SalaireFROM Table sur laquelle
on effectue la recherche
PERSONNELWHERE Salaire * 12 > 50000 order by
Salaire DESC;
Condition
Tri sur les données
Hiver 2023 37
Espace de stockage requis?
< Pour chaque table:
a # d’enregistrements
a Pour chacun des champs:
= Estimer l’espace requis…
< Avec quelques additions et
multiplications, vous y arriverez
Hiver 2023 38
Cours pertinents
< Cours liés à la conception logicielle
a GLO-2004 Génie logiciel orienté objet
a IFT-2004 Modèles et langages des bases de données
a GLO-2003 Introduction aux processus du génie logiciel
a GLO-2005 Modèles et langages des bases de données
a GLO-3004 Spécification formelle et vérification de logiciels
a GLO-3102 Développement d’applications Web
a GLO-3112 Développement avancé d’applications Web
a GLO-4000 Interface personne-machine
a GLO-4002 Qualité et métriques du logiciel
a GLO-3013 Projet de conception multidisciplinaire (= Design III)
a GLO-4003 Architecture logicielle
a GLO-4008 Applications infonuagiques natives et DevOps
a GLO-4035 Base de données avancées
a GLO-3002 Projet en génie logiciel (= Design IV)
Hiver 2023 39
Cours pertinents
< Cours liés aux télécommunications et à la sécurité
a GLO-2000 Réseaux pour ingénieurs
a GEL-3006 Systèmes de télécommunications
a GIF-3001 Réseaux de transmission de données
a GEL-4200 Communications numériques
a IFT-2102 Introduction à la sécurité informatique
a IFT-3002 Informatique d’enquête
a GLO-3100 Cryptographie et sécurité informatique
a IFT-3201 Cyberattaques et tests d’intrusions dans les
systèmes d’information
a GLO-3202 Sécurité des applications Web
a IFT-7016 Sécurité basée sur les langages: confidentialité et
intégrité
Hiver 2023 40
Des questions ?
Hiver 2023 41