Chapitre 1
VERS LA QUALITE LOGICIELLE
 
 
Précédent Suivant
 

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