AL5L Architecture logicielle. Séance 1 Introduction



Documents pareils
Analyse,, Conception des Systèmes Informatiques

Indicateur et tableau de bord

sshgate Patrick Guiran Chef de projet support

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Comment gérer toutes mes tâches logicielles d automatisation dans un seul environnement?

Séance 1 Introduction aux bases de données

Cours en ligne Développement Java pour le web

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Introduction au génie logiciel

Projet Active Object

Les méthodes Agiles Introduction. Intervenant : Tremeur Balbous tremeur@agilegardener.com 04/09/2008

Attaques applicatives

Cours Gestion de projet

UML est-il soluble dans les méthodes agiles?

Plan. 1 Cycles de développement. 2 Méthodes agiles, principes généraux. 3 Comment se passe un Sprint?

DEVELOPPEMENT ET MAINTENANCE DE LOGICIEL: OUTIL DE PILOTAGE

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

LA PROTECTION DES DONNÉES

Kerberos en environnement ISP UNIX/Win2K/Cisco

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

Méthodes agiles. CONSEIL & DÉVELOPPEMENT DE SOLUTIONS E-BUSINESS. Jean-Louis Bénard jlb@businessinteractif.

Proposition de sujet de thèse CIFRE EUROCOPTER / LGI2P

UE Programmation Impérative Licence 2ème Année

PASS v2.0 : solution d authentification unique basée sur les composants Shibboleth Service Provider v2.5.1 et Identity Provider v2.3.

Modelio by Modeliosoft

FORMATION PROFESSIONNELLE AU HACKING

Introduction au Génie Logiciel

IT203 : Systèmes de gestion de bases de données. A. Zemmari zemmari@labri.fr

Gestion de projets logiciels. Xavier Dubuc

IFT785 Approches Orientées Objets. FINAL Été Remise : Jeudi 19 août 2002 à 9h00 am

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Sécurité des applications Retour d'expérience

MATRICE DES FONCTIONNALITES

Statistiques réseau et système avec CACTI

Le Processus RUP. H. Kadima. Tester. Analyst. Performance Engineer. Database Administrator. Release Engineer. Project Leader. Designer / Developer

Transférer des dossiers sur un disque amovible Votre support de formation

Patrons de Conception (Design Patterns)

Evaluation et mise en place d un serveur de messages pour Chamilo 2.0

Processus d Informatisation

Le génie logiciel. maintenance de logiciels.

Les Méthodes Agiles. description et rapport à la Qualité. Benjamin Joguet Rémi Perrot Guillaume Tourgis

Développement guidé par les tests d acceptation (ATDD/BDD) au Ministère de la défense nationale

Atelier Pivoting KHOULOUD GATTOUSSI (RT3) ASMA LAHBIB (RT3) KHAOULA BLEL (RT3) KARIMA MAALAOUI (RT3)

Squale Le portail qualimétrie open-source

Marché à Procédure adaptée. Tierce maintenance applicative pour le portail web

Logiciel Libre Cours 3 Fondements: Génie Logiciel

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Instructions Mozilla Thunderbird Page 1

HySIO : l infogérance hybride avec le cloud sécurisé

Développement ebusiness

Stratégie d externalisation des services pour les établissements

1 Introduction à l infrastructure Active Directory et réseau

SECTION 5 BANQUE DE PROJETS

et Active Directory Ajout, modification et suppression de comptes, extraction d adresses pour les listes de diffusion

Gestion Projet. Cours 3. Le cycle de vie

Valoriser vos bases de connaissances avec AMI Help Desk. AMI Enterprise Discovery version 3.9

Simplicity is the ultimate sophistication. Leonardo Da Vinci

Module pour la solution e-commerce Magento

Analyses. qlikview.com. facile à utiliser. Les utilisateurs aiment QlikView pour : la recherche associative ;

VTP. LAN Switching and Wireless Chapitre 4

Chapitre I : le langage UML et le processus unifié

Programmation de services en téléphonie sur IP

Vulnérabilités engendrées par la virtualisation. Jean-Marie Petry / jean-marie.petry@rbs.fr Chef de Projet / Ingénieur ISIAL

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

Introduction à. Oracle Application Express

INF4420: Éléments de Sécurité Informatique

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Mise en place du médiateur pour. Application Server avec le logiciel ALERT.

Générer du code à partir d une description de haut niveau

Gé nié Logiciél Livré Blanc

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Forthcoming Database

Software and Hardware Datasheet / Fiche technique du logiciel et du matériel

Conception, architecture et urbanisation des systèmes d information

Webinar Quatre étapes clés pour créer une politique Open Source efficace

Vulnérabilités et sécurisation des applications Web

Sécurité de la ToIP Mercredi 16 Décembre CONIX Telecom

XP DAY mai. Erwan Alliaume Nicolas Le Coz

Le passé composé. C'est le passé! Tout ça c'est du passé! That's the past! All that's in the past!

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

Environnements et Outils de Développement Cours 1 Introduction

Introduction à l extreme Programming et au développement agile

L Intégration Continue & Agilité

Bonnes pratiques de développement JavaScript

Protocoles d authentification

Classification : Non sensible public 2 / 22

Cours 1 : La compilation

EP60.92 Projet d application pluridisciplinaire La chasse aux trésors

Sécurité logicielle. École de technologie supérieure (ÉTS) MGR850 Automne 2012 Automne Yosr Jarraya. Chamseddine Talhi.

Les Bonnes PRATIQUES DU TEST LOGICIEL

Sécurité des réseaux Les attaques

Modernisation et gestion de portefeuilles d applications bancaires

Campus Numérique. Université du Travail. Systèmes de communication, sécurité, d un Campus Numérique Académique. 24 mai Guy Leroy - Vincent Dewez

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.

FOURNIR UN SERVICE DE BASE DE DONNÉES FLEXIBLE. Database as a Service (DBaaS)

Transcription:

AL5L Architecture logicielle Séance 1 Introduction Sébastien Combéfis lundi 10 novembre 2014

Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution Pas d Utilisation Commerciale Pas de Modification 4.0 International.

Informations générales AL5L Architecture logicielle 30h de labo Documents utilisés sur Eole Slides, énoncés des labos et ressources complémentaires Dr Ir. Sébastien Combéfis <s.combefis@ecam.be> 3

Objectifs Passer en revue plusieurs éléments d architecture logicielle Focus sur le code source et son architecture Trois aspects couverts Motifs de conception Aspects de sécurité Qualité et «beauté» du code 4

Architecture logicielle Définition Description symbolique et schématique des différents composants d un ou de plusieurs programmes informatiques, leurs interrelations et leurs interactions Focus au niveau du programme 5

Composants Une architecture logicielle est une représentation abstraite d un système composants logiciels en interaction avec des connecteurs Chaque composant représente une unité fonctionnelle Les connecteurs assurent les interactions entre composants 6

Modèles d architecture Diagramme de classe Diagramme d objets Vue logique Vue implémentation Diagramme de composants Diagramme d états Diagramme d activités Diagramme de séquence Diagramme de collaboration Vue comportement Vue utilisateur Diagramme de cas Diagramme de déploiement Vue déploiement 7

Critères de qualité logicielle Autonomie Compatibilité Composabilité Efficacité Extensibilité Fiabilité Intégrité Interopérabilité Maintenabilité Portabilité Réutilisabilité Simplicité Transparence Validité Vérifiabilité 8

Première partie I Motif de conception

Motif de conception Modèle réutilisable pour générer des choses Design pattern en anglais Quatre éléments essentiels Le nom du pattern Une description du problème pour lequel le pattern s applique La solution comme description de l application du pattern Les conséquences de l application du pattern 10

Catégorisation des design patterns Création Automatisation de la création d éléments Factory, Singleton... Structurel Organisation de la structure du code Decorator, Adapter... Comportemental Gestion d un comportement particulier Observer, Visitor... 11

Exemple : Le pattern Singleton I Concevoir une classe avec une seule instance au plus Rendre accessible cette unique instance S assurer que de nouvelles instances ne soient pas créées Solution Tous les constructeurs privés La classe crée elle-même sa propre instance unique Offrir une méthode permettant de récupérer l instance 12

Exemple : Le pattern Singleton II 1 p u b l i c f i n a l c l a s s S i n g l e t o n 2 { 3 // V a r i a b l e de c l a s s e pour s t o c k e r l i n s t a n c e 4 p r i v a t e s t a t i c S i n g l e t o n i n s t a n c e ; 5 6 // C o n s t r u c t e u r p r i v é 7 p r i v a t e S i n g l e t o n ( ) { } 8 9 // Méthode de c l a s s e pour r é c u p é r e r l i n s t a n c e 10 p u b l i c s y n c h r o n i z e d s t a t i c S i n g l e t o n g e t I n s t a n c e ( ) 11 { 12 i f ( i n s t a n c e == n u l l ) 13 { 14 i n s t a n c e = new S i n g l e t o n ( ) ; 15 } 16 r e t u r n i n s t a n c e ; 17 } 18 } 13

Deuxième partie II Sécurité

Aspects de sécurité Cycle de vulnérabilité du développement d un logiciel Découverte d une vulnérabilité Installation du patch Développement d un patch 15

Attaque Acte intentionné et malicieux contre un système Différents buts Tester un système Voler Embarrasser Trois niveaux d attaque Architecture/Design Implémentation Opération 16

Attaque au niveau de l architecture Faille due à un choix de conception Telnet transfère les informations en clair Plusieurs types d attaque Man-in-the-middle, Race condition Replay, Sniffer Session hijacking, Session killing 17

Attaque au niveau de l implémentation Liées au langage de programmation utilisé Failles liées à la technologie utilisée Plusieurs types d attaque Buffer overflow Back door Parsing error 18

Attaque au niveau opérationnel Se produisent lors de l exécution de l application Mettent en défaut le service rendu par le programme Plusieurs types d attaque Denial-of-service Default accounts Password cracking 19

Exemple : Buffer overflow 1 i n t main ( ) 2 { 3 char b u f f e r [ 1 5 ] ; 4 i n t p a s s = 0 ; 5 6 p r i n t f ( " E n t r e z v o t r e mot de p a s s e : \ n " ) ; 7 g e t s ( b u f f e r ) ; 8 9 i f ( strcmp ( b u f f e r, " s u p e r p a s s w o r d " ) ) 10 { 11 p r i n t f ( " Mauvais mot de passe, bye bye. \ n " ) ; 12 } 13 e l s e 14 { 15 p r i n t f ( "Mot de p a s s e c o r r e c t! \ n " ) ; 16 p a s s = 1 ; 17 } 18 19 i f ( p a s s ) 20 { 21 p r i n t f ( " Vous avez t o u s l e s a c c è s maintenant! \ n " ) ; 22 } 23 24 r e t u r n 0 ; 25 } 20

Troisième partie III Qualité et «beauté» du code

KISS Keep it Simple, Stupid Il faut éviter de rendre les problèmes plus compliqués Principe phare en ingénierie logicielle Many great problem solvers were not great coders, but yet they produced great code! [Source : http://people.apache.org/~fhanik/kiss.html] 22

Quelques citations Simplicity is the ultimate sophistication Leonardo Da Vinci Everything should be made as simple as possible, but no simpler Albert Einstein Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away Antoine de Saint Exupéry 23

Machine de Rube Goldberg 24

DRY vs WET Write Everything Twice Duplication de code Don t Repeat Yourself Il faut réfactorer son code et factoriser les parties communes 25

Bad smell Bad smell (ou code smell) popularisé par Kent Beck Il ne s agit pas de bugs, mais de faiblesses de design Réfactoring nécessaire pour améliorer son code Quelques exemples Code dupliqué Longue méthode, longue classe Trop de paramètres Complexité cyclomatique 26

Exemple : The Blob Une classe monopolise tout le système (God Class) Tout le traitement est fait par une seule classe Les autres classes stockent les données Casse le concept «une classe = une fonctionnalité» 27

Exemple : Code dupliqué 1 d e f p r i n t V e r d i c t ( s c o r e ) : 2 i f s c o r e > 1 0 : 3 p r i n t ( " Vous avez obtenu %d p o i n t s e t vous avez r é u s s i! " % ( s c o r e ) ) 4 e l s e : 5 p r i n t ( " Vous avez obtenu %d p o i n t s e t vous avez r a t é! " % ( s c o r e ) ) 6 7 i f name == " main " : 8 t r y : 9 p o i n t s = i n t ( i n p u t ( " E n t r e z vos p o i n t s : " ) ) 10 i f 0 <= p o i n t s <= 2 0 : 11 p r i n t V e r d i c t ( p o i n t s ) 12 e l s e : 13 r a i s e V a l u e E r r o r 14 except ValueError : 15 p r i n t ( " V e u i l l e z e n t r e r un nombre e n t i e r c o m p r i s e n t r e 0 e t 20 " ) 28

À vous de jouer Préparer une présentation en binôme Présentation d un exemple de programme Centré sur un design pattern Prenant en compte des aspects de sécurité Contenant des bonnes pratiques de qualité de code Projet 1 (15 décembre 2014) Code commenté Rapport succinct décrivant le programme et argumenté Présentation de 20 minutes 29

Livres de référence I ISBN ISBN ISBN ISBN 0-201-63361-2 978-0-321-41309-3 978-0-596-80675-0 978-0-201-61622-4 30

Livres de référence II ISBN 0-596-00242-4 ISBN 978-0-321-21335-8 ISBN 0-471-74487-5 31

Livres de référence III ISBN 978-0-13-235088-4 ISBN 978-0-7356-1967-8 ISBN 978-0-596-51004-6 32

Crédits http://fr.wikipedia.org/wiki/machine_de_rube_goldberg#mediaviewer/file:professor_lucifer_butts.gif http://sourcemaking.com/antipatterns/the-blob Photos des livres depuis Amazon 33