Vers la qualité logicielle Génie logiciel * Un logiciel est une structure complexe * De nombreux composants en interaction * Génie logiciel: "art" de concevoir un logiciel * Concepts * Règles * Méthodologies ==> Bonne qualité Qualités d'un logiciel * Côté utilisateur * Fiabilité * Exécution en accord avec le cahier des charges * Réaction appropriée à des conditions anormales * Efficacité * Capacité à utiliser le minimum de ressources * Côté développeur * Maintenabilité et extensibilité * Capacité du logiciel à être adapté aux changements * Nouvelles fonctionnalités ou correction de bugs * Homogénéité * Composants conçus sur un même modèle ==> règles d'écriture * Facilite la compréhension des composants * Simplifie la mise en oeuvre d'interactions Evolution des langages informatiques (1/2) * Introduction progressive de concepts pour améliorer la qualité * Années 50: Premiers langages évolués (e.g. Fortran) * Possibilité de ne plus écrire dans le langage de la machine * Compilation / interprétation * Années 60: Sous-programmes (e.g. COBOL) * Fonctions / procédures * Factorisation des tâches répétitives * Années 70: Modules (e.g. Pascal, C) * Découpage par fonctionnalité * Années 70-80: Types abstraits de données (e.g. Ada) * Regroupement des données avec leurs traitements * Notion de modèle de composants Evolution des langages informatiques (2/2) * Années 70-80: Objets (e.g. Simula, C++) * Renforcement de la notion de modèle (classe) * A partir d'un modèle, un composant (objet) peut être créé * Relations entre modèles * Héritage, agrégation / composition, association * Langages objets généralistes les plus utilisés * C++, par Bjarne Stroustrup (1983) * Java, par Sun Microsystems (1995) * C#, par Microsoft (2001) * Pour le Web, introduction progressive des objets * PHP 5, ECMAScript 4 (ActionScript 3, JavaScript 2) Programmation orientée objet * Programmation orientée objet = concepts visant à améliorer la qualité d'un logiciel * Principaux concepts * Objets et classes * Encapsulation * Héritage * Polymorphisme * Concept souvent associé aux objets: les "génériques" * Introduits par le langage Ada (dès 1983) * Célèbres sous le nom de "templates" avec C++ (vers 1990) * Intégrés plus récemment à Java (2004) et C# (2005) Paradigme objet * On parle plus généralement de "paradigme objet" * Concepts utilisés en programmation * Mais aussi en modélisation (e.g. phases d'analyse et de conception) * Modélisation = représentation simplifiée d'un système * Plusieurs modèles possibles pour un système * Ne sont représentés que les éléments pertinents pour l'étude * Types de systèmes * Organisationnels: entreprise, école... * Biologiques: organisme, écosystème... * Informatiques: réseau, logiciel, système d'information... * ... * Modélisation orientée objet * Modélisation reposant sur les concepts du paradigme objet * Un formalisme universel: UML |