Professional Documents
Culture Documents
Software Engineering
1. INTRODUCTION
1) GENERALITES
Historique
Réunion du comité scientifique de l'Organisation du Traité de l'Atlantique Nord (à Garmich, RF A 1968)
avec quelques-uns des plus grands spécialistes mondiaux de la programmation. L'objectif est d'étudier
les causes de ce que l'on commençait à appeler la crise du logiciel.
Les symptômes de la crise
- Problème d'Adéquation: les systèmes informatisés ne correspondent pas souvent aux besoins des
utilisateurs.
- Problème de Fiabilité : les systèmes tombent souvent en panne.
- Problème de Modifiabilité : la maintenance est souvent complexe et coûteuse. Il était difficile d'adapter
les logiciels pour prendre en considération l'évolution des environnements et des besoins des utilisateurs.
-Coût et délai : budgets dépassés, projets en retard. Le coût du logiciel est devenu supérieur à celui du
matériel: 500/0-50% en 1965, 700/0-30% en 1975, 800/0-20% en 1985. Les coûts résultent généralement des
frais de maintenance qui découlent de la qualité déficiente du logiciel au moment de sa livraison ou après
son évolution.
- Interface utilisateur inappropriée.
Enfin les causes sont nombreuses et parmi les plus importantes: le caractère rudimentaire des méthodes et
outils utilisés dans le développement de logiciels.
Moralité
Faire de la production de logiciel une discipline d'ingénieur à part entière, avec une solide base
scientifique ( comme dans les autres disciplines telles que le génie civil ou le génie chimique etc ...). D'où
le titre : génie logiciel.
Défmition du Génie logiciel
Ensemble de méthodes, techniques et outils nécessaires à la production de logiciels de qualité.
=:}Plus précisément, le génie logiciel vise à satisfaire:
- Les utilisateurs : en produisant des logiciels adaptés aux besoins.
- Les gestionnaires : en réduisant le coût de production et de maintenance.
- Les chefs de projet : en rendant les logiciels productifs dans un délai
raisonnable.
Comment y parvenir
~ Améliorer la démarche de développement: Appliquer et faites appliquer les méthodes d'analyse,
de conception (SADT, JACKSON, RaaD, MERlSE, ...), dans le développement de logiciels.
~ Améliorer les langages : On peut programmer mal dans un bon langage , et assez bien dans un
mauvais, Mais il est plus facile de bien programmer avec un bon langage. Il est important de
connaître les nouveaux concepts des langages modernes (modularité, abstraction, généricité,
héritage ..) même si l'on ne peut pas toujours les employer en pratique.
~ Utiliser des outils d'aide au développement:
Les environnements de programmation: éditeur syntaxique, outils de tests, ...
BESOINS
REELS
\
\ \ / /
SPECIFICATION •• • VALIDATION
G \\ \ CONCEPTION
GENERALE •• •
IIITESTS
D'INTEGRATION
G \\\ / 1/
CONCEPTION TESTS
G
DETAILLEE •• • UNITAIRES
\R~:/
\'----------'/
1. L'ETUDE PREALABLE
1.1 Définition
BUTS:
- Préciser l'objet du système: Comprendre les besoins et les enjeux,
- Dialoguer avec les différents types d'utilisateurs
- Esquisser des solutions
- Estimer les coûts et délais
- Préparer un dossier en vue de décision
Peut se faire avec l'assistance d'une société de conseil ou d'ingénierie
RESULTATS:
- Décision de développement.
- 1ère version du contrat de développement, 1ère estimation du coût de développement.
- Cahier des charges, Mode de fonctionnement grossier du système.
- Plan général du projet.
MOYENS:
- Plan d'entretien avec le client (techniques d'entretien).
- Certaines méthodes MERISE, AXIAL ....
- Revue pour valider et approuver les propositions exhibées.
- Pour le Produit logiciel, définir: les performarces requises, les fonctions du logiciel, les objets du
monde réel manipulés, les interfaces du logiciel avec son environnement, lesentrées et sorties.
- Pour le Projet, définir: les ressources, les contraintes de réalisation.
RESULTATS:
Manuel d'utilisation, Document de spécification (spécification détaillée des besoins).
Plan détaillé du reste du projet, Raffmage de l'estimation des coûts.
MOYENS:
Méthodes, outils, langages de spécification Exemple: SADr, SREM, OOA..
Revues de spécification. Techniques de planification.
5. LE CODAGE
BUTS:
Obtenir les programmes : traduire la conception détaillée dans un langage de programmation
en respectant les standards définis.
RESULTATS:
Programmes.
Documentation technique.
MOYENS:
Langages de programmation. Editeur s syntaxiques, ....
Revues de codes ("inspections").
BUTS:
Tester chaque module séparément: exécuter le corps du module et comparer son
comportement à un comportement de référence. Il faut élaborer un jeu de données de tests
pour chaque module.
(attention le test n'est pas une preuve).
RESULTATS:
Résultats des tests (+ rapport d'erreur).
MOYENS: Analyseurs statiques, tests dynamiques, outils de test.
MOYENS:
8. VALIDATION
BUT:
Tester le logiciel dans des conditions représentatives de son utilisation opérationnelle. Valider le
logiciel par rapport à la spécification des besoins
RESULTATS:
Documents de validation. PV de qualification, rapport qualité- fiabilité
Programme certifié et installé.
MOYENS:
Utilisation de jeux de tests. Contrôle qualité
9. EXPLOITATION ET MAINTENANCE
Cette phase ne fait pas partie du projet proprement dit, mais à l'issue d'un développement, il
s'avère toujours que des modifications doivent être apportées au produit:
o Principe:
o Objectifs :
Aider le client et les utilisateurs à définir de manière claire et precise les besoins en
expérimentant le prototype : Cas des systèmes complexes, nouveaux
o Approches:
- Prototype évolutif: Le prototype est conçu pour évoluer vers le système final.
• 1
o Etapes:
o Avantages
o Quelques difficultés
- Manque d'expérience en matière de planification et d'estimation de coût d'un projet
de prototypage.
- Le coût du prototypage peut représenter une fraction importante du coût total du
système! (c'est ce qu'on dit !)
2. Modèle transformationnel
Partant d'une spécification formelle (exprimée dans un langage fondée sur une théorie bien
définie), il s'agit d'appliquer un certain nombre de règles de transformation correcte pour dériver un
programme exécutable. Le programme est donc conforme à la spécification initiale. Ce modèle
reste encore très peu utilisé car il nécessite des connaissances sur les langages formels et pose aussi
le problème de l'élaboration de règles de transformation correctes.
3. Modèle de la spirale
Il s'agit d'une approche hautement itérative du développement. Au lieu de représenter les phases
du cycle chronologique séquentiellement, ce modèle représente le cycle de vie comme une spirale.
On commence par une phase de planification (au centre de la figure) pour recueillir assez
ème
Construction 3 prototype
Planifier la
1ère itération
Méthodologie: fournit des lignes directrices pour la réalisation de chacune des activités du cycle
de vie, dont des modèles, outils et techniques spécifiques.
Modèle: est une représentation d'un aspect quelconque de la réalité ou d'un système. Il s'agit
d'une représentation abstraite pouvant être utilisée pour étudier un aspect d'un système donné. Par
exemple, un modèle de donnée d'un système représente uniquement les données du systèmes et
leurs relations. Il ne représente pas le comportement du système ni les traitements qu'il réalise. Ces
deux aspects peuvent être représentés par d'autres modèles.
Outils: support logiciel permettant d'aider à créer et exploiter les modèles et composantes
nécessaires au développement de logiciels. Par exemple, les éditeurs graphiques permettant de
créer des modèles objets, des modèles de traitement, ou des générateurs de codes.
ANALYSE ET SPECIFICATION
DES BESOINS
1ère Etape du cycle de vie
1. DEFINITION
C'est le processus visant à établir quelles fonctionnalités le système doit fournir et les contraintes
auxquelles il sera soumis. Repondre au quoi et non au comment?
2. OBJECTIFS
1 Comprendre la nature exacte du problème. Par l'analyste et par le client
1 Fournir un document compréhensible par le client et les concepteurs du système: Le fondement du
contrat
! Définir la base pour la validation des étapes ultérieures. La validation utilise la spécification comme
base pour répondre à la question principale suivante: A t'on conçu ce qui a été demandé?
1 Préciser les contraintes de réalisation.
1 Prendre des décision: Développer? Acheter? Louer? Sous -traiter?
1 Réduire les coûts de développement du système.
Une spécification rigoureuse des besoins permet d'éviter les oublis pouvant apparaître tardivement
dans le cycle de vie. En effet de tels oublis nécessitent des retours en arrière, ce qui augmente les coûts
de développement: Eviter l'oubli, les allers retours dans le cycle de vie
3. LES ETAPES
1 Analyse des besoins (Requirement Analysis) : Rassembler toutes les informations nécessaires à
la compréhension du problème
1 Spécification des besoins (Requirement Specification) : Spécifier de manière claire et précise le
Les éléments clés de l'analyse est de la spécification sont donc les besoins que l'on peut classer en
deux catégories :
» Besoins fonctionnels (exigences fonctionnelles): les services que l'utilisateur attend du
système. Il s'agit des activités que le système doit exécuter. Dans premier temps, ces besoins
peuvent être exprimés en langage naturel accompagné éventuellement de diagrammes
graphiques.
Exemple: le système de distribution automatique de billets de banque (DAB).
1 Le système doit vérifier la validité de la carte.
1 Le système doit mettre à jour le compte du client après un retrait ou un dépôt.
» Besoins non fonctionnels (spécifications techniques)
Les contraintes sous lesquelles le système doit rester opérationnel et les standards auxquels il
doit se conformer. Par exemple:
1 Les besoins en performance
h
A. koukam, Professeur des Universités à l'UTBM
Eléments de solution:
1 Utiliser les méthodes d'analyse: SA, SADT, Merise, OOA (UML) ...
1 Qualités de l'analyste en matière de communication
1 Appliquer les trois principes suivants :
2
A. koukam, Professeur des Universités à ]'UfBM
L'expression des besoins fonctionnels peut prendre plusieurs formes selon la méthode et le langage de
spécification choisis et le niveau de détail à atteindre. Nous allons explorer les différentes formes
d'expression possibles tout en soulignant leurs avantages et leurs inconvénients. Il s'agit ici d'une
présentation synthétique: nous consacrerons une bonne partie des cours suivants à l'étude détaillée des
deux dernières méthodes et langages de spécification (méthodes semi-formels très utilisées: UML,
SA, SADI et méthodes formelles: spécifications algébriques, langage Z et B). Les deux premiers
langages que nous présentons ci-dessous (langage naturel, langage structuré) sont simples à
comprendre et constituent deux moyens d'expressions pouvant être utilisés pour documenter les
spécifications construite à l'aide de méthodes formelle ou semi- formelles.
3
A. koukam, Professeur des Universités à l'umM
- les besoins ne sont pas cloisonnés : les conséquences d'un changement ne peuvent être évaluées
qu'après un examen de chaque besoin, et non d'un groupe de besoins voisins.
Exemple:
Fonction: Vérifier validité carte
Description: Cette fonction vérifie que la carte introduite par un utilisateur
provient d'une banque reconnue, qu'elle est à jour, et qu'elle contient des informations appropriées
ainsi que des détails sur les dates et les montants des précédents retraits.
Entrées: identification de la banque, numéro de compte, date d'expiration, date et nature de la
dernière transaction.
Sorties: Etat de la carte = (OK, invalide)
Besoins: Liste des banques, format du compte, date du jour
Pré-condition: carte introduite et bande magnétique lue
Post-condition: Identification de la banque dans la liste des banques et Numéro de compte au bon
format et date d'expiration >= date d'aujourd'hui et Etat de la carte = OK
ou (si l'un de ces tests est raux) Etat de la carte = invalide
Cette spécification utilise les pré et post conditions pour décrire le rôle de la fonction. Les objets
utilisés (Liste des banques, ....) doivent être définis dans un dictionnaire de données. Notons que cette
spécification n'introduit pas d'information sur le séquencement dans la définition des pré et post
conditions.
1 Avantages de ce mode d'expression:
Cod
Mettre àjour
le compte
Montant
4
A. koukam, Professeur des Universités à l'umM
SADT est une méthode qui analyse un systèmes en mettant l'accent sur les fonctions qu'il doit réaliser.
Chaque fonction peut être décomposée en plusieurs autres fonctions (décomposition fonctionnelle d'un
système). Un rectangle (appelé actigramme) représente une fonction du système. Les flèches entrantes
(respectivement sortantes) représentent les données (respectivement les résultats). La flèche en
dessous de la fonctiormalité «Lire carte» précise le support physique nécessaire à l'exécution de cette
fonction.
Avantages:
- spécification précise et sans ambiguïté
- possibilité de faire des preuves de complétude et de consistance
- peut être traitée de manière automatique grâce à des outils
- possibilité d'avoir des spécifications exécutables
Inconvénients :
- nécessite un grand effort de formation
- non compréhensible généralement par les clients
5
A. koukam, Professeur des Universités à l'UTBM
Voici un tableau de métrique qui résume et donne d'autres éléments liés aux performances.
Propriété Métrique
Vitesse Nombre de transactions par seconde
Temps de réponse à l'utilisateur/à un événement
Temps de rafraîchissement de l'écran
Taille K octets, nombre de puces de RAM
Facilité d'utilisation Durée de formation, nombre d'écran d'aides
Fiabilité Temps moyen entre deux pannes, probabilité de non disponibilité,
Taux d'apparition des pannes
Robustesse Temps de redémarrage après une panne,
Pourcentage d'événements causant des pannes,
Probabilité de corruption de données sur une faute
Portabilité Pourcentage d'instructions dépendant de la cible
6
A. koukam, Professeur des Universités à l'UTBM
7
A. koukam, Professeur des Universités à !'UTBM
7. Bibliographie
-1. Sommerville. "Software Engineering", 3rd edn. Wokingham : Addison-Wesley, 1989
.j Satzinger, R.B. Jackson, S. Burd. "Analyse et conception des systèmes d'information", Editions
Rynold Goulet, 2002.
-1. Jacobson, G. Booch, J. Rumbaugh, "The Unified Software DevelopementProcess", Addison-
Wesley, 1999.
-A. Koukam. "Software Engineering", Course Introduction to Software Engineering, University of
Qatar, Doha, 2002.
r:
8