Université Badji Mokhtar-Annaba Master 2 (option: ILC)

Slides:



Advertisements
Présentations similaires
Developpement Process « Coding party !! » Tony Carnal Altran.
Advertisements

UML EPITECH 2009 UML1 - Introduction UML – Définition – Historique – UML en entreprise – Couverture Concepts – Objet – Classe –
1 Bienvenue! INF3723: Systèmes d’exploitation Luigi Logrippo
Logiciel Assistant Gestion d’Événement Rémi Papillié (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
Système de gestion d'entrées pour un cinéma Scanvion Michel – Etudiant 4.
Les systèmes d'information 1- Une pratique quotidienne 2- Les données 3- Approche conceptuelle 4- Notion de serveur 5- Conception d'un système d'information.
Étude de cas: Implantation de Zimbra chez Remax Québec Hugues Clouâtre Gestion-Ressources Inc.
Comment ça marche ? Les sciences pour répondre aux questions de notre société Santé Alimentation Énergie Habitat Sciences de l'Ingénieur.
1 UML: applications, études de cas ● Processus (Extreme Programming, Unified Process) ● Architectures ● Expression du besoin technique Conception Préliminaire.
Insertion professionnelle Secteurs d’activité Formation d’ingénieurs spécialité Informatique – Microélectronique - Automatique.
Un système autonomique basé sur des bases de connaissances pour améliorer les performances d’un entrepôt de données Réalisé par : OUSSAFI MOHAMMED HOURRI.
ANNEE ACADEMIQUE Institut Supérieur Emmanuelle D’Alzon de Butembo COURS: THEORIE DE BASE DE DONNEES : 45H PROMOTION: G2 Gestion Informatique.
Système d’annotation et de détection de modèle de véhicule Université de Sfax *** Institut Supérieur d’Informatique et de Multimédia de Sfax Réalisé par.
Présenté par : ANDRIAMANALINA Favennec Costant CREATION D’UN SITE POUR L’APPRENTISSAGE DU CODE DE LA ROUTE CAS DU CLIENT DE LA SOCIETE ASA.
MRP Étapes 1/12 Introduction Définitions JP Rennard Objectifs Toute entreprise appelée à fournir des biens et services est amenée à gérer la double contrainte.
Méthode « traditionnelle » : le cycle en V
LE DEVELOPPEMENT AUTREMENT
Communication client-serveur
Mise en place d’un système de partage de fichiers
Missions maîtrise de la langue et maternelle Année scolaire
Evaluer par compétences
BTS Enveloppe des Bâtiments: Conception et Réalisation
Les P G I Les Progiciels de Gestion Intégrés
de la productivité individuelle au travail collaboratif
Cours MGL 847 Amélioration des processus
Les axes directeurs de la rénovation
SOMMAIRE 1: ORALE 2: Les 3 systèmes de gestion de base de donnés 3:ORACLE DATA BASE 4:MY SQL 5:Oppen Office.org Base 6:Concurrence Conclusion.
Méthode « traditionnelle » : le cycle en V
Cahier des charges Hôpital Avicenne.
PORTEFEUILLE DE COMPETENCES
Chiffrement de bout en bout
Informatique et Sciences du Numérique
Les bases de données et le modèle relationnel
Maîtriser la qualité en conception
Amélioration de la qualité des forfaits
Génie–logiciel 3. Modèles du cycle de vie du logiciel Azeddine Chikh
Les processus métiers : concepts, modèles et systèmes Claude Godart Université de lorraine. Esstin
Réalisation d’une application web sous le thème: «Mon vétérinaire » par : Benzineb Asmaa et Meftahi Oualid Présentation à Université Saad Dahlab Blida.
Programmation système
Développement d’un réseau social de collaboration destiné aux médecins radiologues Soutenance de projet de fin d’étude En vue de l’obtention du diplôme.
Août 2009.
HTTP DNS NTP FTP R231 RJ45 definition HTTP DNS NTP FTP R231 RJ45.
1 La gestion par activités (ABM) pour mieux gérer les coûts et les processus dans l’organisation. S o l u t i o n s `
Modélisation avec UML 2.0 Partie II Diagramme de classes.
S.T.S. S.I.O. 1ère année La gestion de projets
Conception des SIG Entre construction théorique et mise en œuvre opérationnelle.
Plan d'urbanisation Version / 02 / Nov Mai 2013 Passation des marchés Sommaire Une vision unifiée de l'urbanisation et de l'approche.
Outils et principes de base. Exemple d’application  Gestion de données d’enquête : Interface de saisie en ligne  insère directement les données dans.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
Mise en place d'un Serveur Radius pour la sécurité d'un réseau Wireless sous Windows Serveur Présenter par le Stagiaire : Etienne Mamadou Guilavogui.
Amélioration de la qualité des forfaits Vers la démarche CMM.
Benali Fellague Mouhamed
Analyse Fonctionnelle Structurelle Comportement des systèmes Mécanique
Le département QIF Qualité, Innovation, Fiabilité
Etienne Vandeput Namur CeFIS 2001
Introdution  Le test appartient à l'activité de Vérification et de Validation d'une application, qui consiste à déterminer si cette dernière a été développée.
DESIGN PATTERN BUILDER KADRI LOUBNA CHARMATI SEWSEN.
La collecte d’informations Présenté par: Boudries. S.
Roowth 1 Université d'Adrar Faculté des Sciences et de la Technologie Département des Mathématiques et Informatique 1 er Année master : Informatique Option:
Initiation à la conception des systèmes d'informations. Cours N°1 : introduction. Souheib Baarir Université Paris Ouest Nanterre.
Notions d'architecture client-serveur. Présentation de l'architecture d'un système client/serveur Des machines clientes contactent un serveur qui leur.
Tableau de bord d’un système de recommandation
Test de performances. Test de performances:  Un test de performance est un test dont l'objectif est de déterminer la performance d'un système informatique.
PAF Guillaume Martin - Fabrice Cizeron - Xavier Roulot
Qu’est ce qu’une page web? Comment fonctionne un site web?
UX DESIGN User exprérience en anglais Expérience Utilisateur en français Concevoir, Créer, dessiner UX DESIGN, consiste à penser et concevoir un site web.
Transcription de la présentation:

Université Badji Mokhtar-Annaba Master 2 (option: ILC) Modèles et Architectures Logicielles Modèles et Architectures Logicielles Présenté par Dr F. ATIL

Présenter la notion d’architecture logicielle objectifs Présenter la notion d’architecture logicielle Donner un aperçu des principaux styles architecturaux Présenter les langages de description d’architectures (Acme avec son environnement AcmeStudio) Découvrir le lien entre l’architecture et le déploiement physique à travers le diagramme de déploiement Modèles et Architectures Logicielles Modèles et Architectures Logicielles

Modèles et Architectures Logicielles Contrôle des études • Un cours de 3h par semaine - Nombre d’heure prévu : 40h • Éventuellement un exposé ou TP par binôme • Un contrôle écrit obligatoire • Note finale - Moyenne arithmétique des deux notes ou bien par pondération de la note du contrôle • Nombre de crédits : 4 Modèles et Architectures Logicielles

ILC Introduction aux Architectures logicielles Master 2 ILC Cours 1 ILC Introduction aux Architectures logicielles Introduction aux architectures logicielles

Les connecteurs La configuration Un petit historique Plan dU cours Un petit historique Architecture logicielle Les composants Les connecteurs La configuration

Contexte général Le génie logiciel (anglais software engineering) est une science de génie industriel qui étudie les méthodes de travail et les bonnes pratiques des ingénieurs qui développent des logiciels. Le génie logiciel s'intéresse en particulier aux procédures systématiques qui permettent d'arriver à ce que des logiciels de grande taille correspondent aux attentes du client, soient fiables, aient un coût d'entretien réduit et de bonnes performances tout en respectant les délais et les coûts de construction

Evolution du génie logiciel Un petit historique Commençons par exposer brièvement l’origine et l’évolution du domaine de génie logiciel. Naissance du Génie logiciel 1946 1968 Evolution du génie logiciel Crise du logiciel

1946 2014 Un petit historique 68 ans Années Création du premier ordinateur entièrement électronique ENIAC Il pesait 30 tonnes et occupait une surface de 72 m2

1946 1968 Un petit historique Crise du logiciel 22 ans Années De 1946 à 1968: Il n’y avait aucune approche méthodique de développement. Le développement des logiciels consistait à programmer et à corriger les bogues. Les logiciels évoluaient et les besoins également. Les logicielles devenaient de plus en plus complexes et de moins en moins fiables. Il était très difficile de réaliser les logiciels satisfaisant les cahiers de charge dans les délais prévus parce que le développement ne se faisait pas par étapes. Le gestionnaire ne pouvait pas se baser sur des jalons (repères) pour planifier et suivre adéquatement la progression du développement. Deux exemples d’échecs importants de cette période : le développement du compilateur PL1 de Control Data n’a pas pu être complété. le système d’exploitation OS-360, conçu pour gérer l’ensemble des programmes exécutés par les ordinateurs de la série IBM-360, a été livré très en retard et comportait beaucoup d’anomalies. Crise du logiciel

De la crise du logiciel au GL Un petit historique De la crise du logiciel au GL Problématique: A la fin des années 60, avec l’avènement des machines de 3ième génération est apparu la crise du logiciel. Ces machines rendaient possible des applications jusqu’alors jamais réalisées Les mécanismes utilisés pour les petits systèmes voyaient leur limite sur ces grosses applications. Les systèmes étaient peu fiable, difficiles à maintenir et avec de faible performance

De la crise du logiciel au GL Un petit historique De la crise du logiciel au GL Besoins: De nouvelles techniques et méthodes pour concevoir et maîtriser ces nouveau logiciels devenaient indispensable Nécessité de passer d’une démarche artisanale à une discipline d’ingénieur

1968 Un petit historique Années Pour sortir de la crise, en 1968 sous le parrainage de l’OTAN, un groupe de chercheurs et de praticiens crée le génie logiciel (anglais, software engineering) Le génie logiciel est défini comme un domaine qui couvre les méthodes, la modélisation, les techniques, les outils, les activités, les biens livrables et la gestion de projets relatifs au développement et à la maintenance du logiciel. En s’appuyant sur une approche méthodique, l’équipe de développement accroit sa productivité et réalise des logiciels de qualité. De plus, il devient plus facile aux gestionnaires de « prédire » l’échéancier puisque les étapes sont connues.

1968 2014 Un petit historique 46 ans Années Depuis 1968, on assiste à une prolifération et à une évolution continue : des méthodes d’analyse et des notations pour spécifier les fonctionnalités d’un logiciel; des techniques de conception et des notations pour exprimer la solution; des techniques et des langages de programmation; des procédures de validation et de vérification pour assurer la qualité du logiciel; des procédures de maintenance.

Nouveaux thèmes de recherche Un petit historique Nouveaux thèmes de recherche De nombreux thèmes de recherche se sont alors développés et ont contribués à l’élaboration de ce nouveaux domaine : La spécification et analyse des besoins La conception et la modélisation Les langages de programmation et les environnements de développement La validation et le test L’ingénierie inverse et la maintenance La gestion de projets Etc

Un petit historique Les recherche en GL étaient donc toujours d’actualité et de nouvelles approches sont apparues dans les années 90: Les systèmes distribués Les modèles de composants La création d’un standard de modélisation à travers UML L’architecture logicielle Etc. Aujourd’hui, les gros logiciels représentent des millions de lignes de code Réaliser et faire évoluer de tels logiciels reste encore un défi

Architecture logicielle L’architecture logicielle est un domaine du GL qui a reçu une attention particulière ces dernières années. C’est au cours de la décennie 1970–80 que les grands principes architecturaux furent élaborés. Les éditeurs de logiciels ont pris conscience qu’une architecture est un facteur critique dans la réussite du développement et facilite la maintenance et l’évolution du logiciel Une architecture contribue à la maîtrise des grands logiciels

Architecture Logicielle La conception d’une bonne architecture logicielle peut amener à un produit: Qui répond aux besoins des clients Qui peut être modifiés facilement pour rajouter de nouvelles fonctionnalités Une architecture inappropriée peut avoir des conséquences désastreuses jusqu’à l’arrêt du projet

Architecture logicielle L’architecture d’un programme ou d’un système informatique est la structure (ou les structures) du système qui comprend les éléments logiciels, leurs propriétés visibles et leur relations L’architecture d’un système est sa conception de haut niveau N’importe quel système complexe est composé de sous-systèmes qui interagissent entre eux La conception de haut niveau est le processus qui consiste à identifier ces sous-systèmes ainsi que les relations qu’ils entretiennent entre eux L’architecture d’un système est le résultat de ce processus

Architecture Logicielle L’architecture implique plusieurs choix dont les technologies, les produits et les serveurs à utiliser Il n’y a pas une architecture unique permettant de réaliser le système, il y en a plusieurs. Le concepteur ou l’architecte tâchera de choisir la meilleure architecture possible selon plusieurs critères dont la nature du projet, les compétences de l’équipe, les budgets et outils disponibles, …etc.

Architecture logicielle Définition j IEEE 1471 standard (2000) « The fundamental organization of a system embodied in its components, their relationships to each other and to the environment, and the principles guiding its design and evolution » L’architecture logicielle fournit une description de haut niveau de la structure d’un système. Elle est définie par des composants, des connecteurs et des configurations. Composant Connecteur

Architecture logicielle Définition k Bass (1998) « The architecture of a computing system is a set of structures which comprise software components, the externally visible properties of these components and the relationships among them » Autrement dit : Plusieurs points de vue sur une architecture Un point de vue : une structure, sa représentation pour une finalité donnée Propriétés d’un composant : description du comportement attendu Services fournis ou requis Performance Protocole de communication

Architecture logicielle Motivations: Maîtriser la complexité du système ➔ Vision globale, modèle structuré, hiérarchique Servir de racine commune pour : ➔ Conception détaillée et implantation ➔ Estimation des coûts et gestion de projet ➔ Analyses et validation ➔ Évolutions Support pour la réutilisabilité des systèmes logiciels ➔ Des composants, des sous-systèmes, des «principes » de conception, etc.

Architecture logicielle Exemple (simpliste) : décrire l'architecture logicielle d'un système constitué de deux clients et un serveur. Le service est acquitté, sans connexion

Architecture logicielle Structure explicite Notion de composant, dotés d'interface, interconnectés Compréhension intuitive Avec des boites et des flèches Client Serveur Mais : Serveur mono ou multi-thread ? Activation des composants ? Nécessité de langage de description d’architecture

Architecture logicielle Représentations des architectures Il existe plusieurs représentations graphiques des architectures. Une des représentations les plus utilisées est la représentation C&C : Composants et Connecteurs La représentation C&C est un graphe contenant des composants et des connecteurs

Les composants Un composant est un module logiciel répondant à un besoin fonctionnel / applicatif (application, bibliothèque, module, …etc.) ou un entrepôt de données Un composant est identifié par son nom qui indique son rôle dans le système Les composants communique entre eux en utilisant des ports (ou interfaces) Les architectures utilisent des composants standards : serveurs, bases de données, application, clients, …etc.

Serveurs et clients Un serveur est un module logiciel qui répond aux requêtes d’autres modules appelés clients Généralement, les services et les clients sont hébergés dans des machines différentes et communiquent via le réseau (intranet / internet) Par exemple, le service http répond aux requêtes des clients qui sont les navigateurs web

Par exemple, une application d’envoi de mails Une application est un module logiciel qui a un rôle défini dans le système logiciel Par exemple, une application d’envoi de mails

Base de données Une base de données est un entrepôt stockant les données sous un format normalisé L’interrogation et la modification des données se fait en utilisant un langage spécial appelé SQL La plupart des bases de données obéissent au modèle relationnel Un SGBD (Système de Gestion de Base de Données) est une base de données puissante et accessible sur le réseau conçue généralement pour les gros systèmes SQL Server, Oracle, MySQL sont des exemples de SGBD connus sur le marché

Vue C&c Client Serveur Base de données Application

Connecteur de composant Le connecteur modélise une interaction entre deux composants. C’est, donc un composant spécialisé dans l'interaction, ne répondant pas directement à un besoin fonctionnel / applicatif Un connecteur peut modéliser une interaction simple (appel de procédure) ou une interaction complexe (par exemple utilisation d’un protocole comme http) Un connecteur propose des rôles aux composants (ex : producteur, consommateur, etc.) C’est une entité de même rang que les composants applicatifs

JDBC SGBD MySQL Serveur web http Navigateur Exemple de JSP JSP: JavaServer Pages JDBC: Java DataBase Connectivity) HTTP: HyperText Transfer Protocol

Vues d’une architecture La vue logique d’une architecture logicielle définit les principaux composants d’une architecture sans se soucier des détails physiques (équipements, machines, …etc.) La vue physique s’intéresse au déploiement physique des différents services La vue physique est peu précise lors de la conception. Elle devient concrète lors de la phase de déploiement.

Services déployés dans le même serveur Exemple 1 Services déployés dans le même serveur Serveur 1 Serveur web JDBC SGBD MySQL http Navigateur

Services déployés dans des serveurs différents Exemple 2 Services déployés dans des serveurs différents Serveur 1 Serveur 2 Serveur web JDBC SGBD MySQL http Navigateur

Configuration de composant Graphe de composants et de connecteurs spécifiant tout ou partie d'une architecture selon un certain point de vue ➔ Doit respecter des contraintes syntaxiques, sémantiques, spécifiques ➔ Encapsulable dans un composant (non atomique) et réutilisable

Architecture logicielle Finalité d’une architecture communication (précision et non ambiguïté de la description) rétro-conception d’un système existant évaluation (selon des critères qualité)

Architecture logicielle Avantages d’une architecture L’architecture logicielle offre de nombreux avantages tout au long du cycle de vie du logiciel. La présence d’une représentation de l’architecture logicielle du système étudié favorise le passage de l’étape de conception à l’étape d’implémentation. De même lors de l’étape de maintenance corrective, elle facilite la localisation des erreurs résiduelles. Egalement, elle favorise l’extensibilité du logiciel lors de l’étape de maintenance évolutive.

Architecture Logicielle Les travaux effectués dans le domaine des architectures logicielles ont permis de réaliser trois avancées majeures: Le développement de langages de description d’architecture (ADL) et d’outils associés La formalisation d’architectures logicielles standard et la définition d’un vocabulaire commun La promulgation de ce domaine à travers des livres et des cours dans les universités