Introduction générale
NOTA : Faire le génie logiciel, c’est : identifier, organiser et spécifier c’est-à-dire, les
trois étapes ou phases ci-haut.
4.
1. Idée du projet
L’idée est le premier stade d’un projet informatique. Elle consiste à imaginer une
nouvelle idée qui peut être :
- Une Nouvelle fonctionnalité
- Une Restructuration
- Une Simplification
- Une Automatisation
- Une Intégration
- Une Analogie (Comparaison)
- Une Globalisation.
2. Elaboration d’un concept
La plupart des systèmes commencent par des idées vagues nécessitant d’être étoffées.
Pour cela, on répond aux question suivantes :
- A qui l’application est elle destinée (destinataire)
- L’application résoudra quel problème (champ d’application)
- Les conditions d’utilisation de l’application (comment l’application complète
celles existantes)
- Quand l’application est elle attendue (donne les aspects temporels)
- Pourquoi l’application est elle attendue (business plan, …)
- Comment l’application fonctionnera-t-elle (étude de faisabilité du problème).
Ce modèle exige que les différents entrant dans la réalisation d’un logiciel
Ce modèle est simple.
Il présente comme inconvénients le fait que les erreurs ne sont découverts qu’à la fin
du processus
* Validation limitée à un pas d’itération
* augmentation des risques : erreur d’analyse ou de conception très coûteuse si
détectée trop tard !
* Difficile d’effectuer des modifications en cours de route
* Solution limitée aux petits projets
* Bien adapté lorsque les besoins sont clairement identifiés et stables
* les risques sont bien délimités dès le début du projet - projet court avec peu de
participants
* Souvent abandonné au profit du modèle en « V », plus récent, qui présente une
articulation plus réaliste entre l’activité de réalisation et celle de validation-vérification
2. LE MODELE EN V
4. METHODOLOGIE (prototypage)
le prototypage rapide permet de développer rapidement une portion de logiciel, de
l’utiliser et de l’évaluer. Vous incorporez ensuite le résultat de votre travail et
recommencez ce cycle. Enfin, vous livrer le prototype final comme s’il s’agissait de
l’application finie ou alors, après quelques prototypes, vous optez pour une autre
approche.
Avantages :
- avantages similaires au développement itératif, mais lui, élimine
fréquemment du code
alors que le développement itératif cherche à l’accumuler,
- lorsqu’il est rapide, il met en avant la communication avec le client et lui
permet
d’exprimer ses exigences,
- il est exploitable pour démontrer la faisabilité technique en cas de
technologie complète
- il offre comme le développement itératif, des points de contrôle fréquents
permettant de
garantir aux clients une bonne avancée du développement
- ils offrent, également aux développeurs un moyen de résoudre des
problèmes ennuyeux
dès le début du développement
Inconvénients :
- il est difficile par un prototype rapide de se débarrasser des codes.
METHODES AGILES
Définition : une méthode agile est une approche itérative et incrémentale, qui est
menée dans l’esprit collaboratif, avec juste ce qu’il faut de formalisme. C’est une
méthode qui génère un produit de haute qualité tout en prenant en compte
l’évolution des besoins des clients.
Le terme agile fait référence à la capacité d’adaptation aux changement de contexte
et aux modifications intervenant pendant le processus de développement
Buts : - visent à réduire le cycle de vie du logiciel (donc à accélérer son
développement) en
intégrant des évaluations des utilisateurs durant le processus de
développement.
- développer une version minimale, puis y intégrer chaque fonctionnalité grâce
à un
processus itératif basé sur une écoute client et des tests
Origines : - instabilité de l’environnement technologique
- le client est souvent dans l’incapacité de définir ses besoins de manière
exhaustive dès
le début du projet
- en 1990, mise à jour de ces méthodes. Deux lignées s’affirment :
* la première dite « unifiée » (UP, RUP, XUP, AUP, EUP, 2TUP, EssUP,
etc)
* le deuxième dite « agile » (XP, Crystal, ASD, Scrum, etc)
(les deux lignées présentent comme principes fondamentaux à la base,
les
éléments de la méthode RAD (Rapid application Development)
- en 2001, 17 personnes ont mis au point le manifeste agile dont la
traduction est :
* les individus et les interactions avant les processus et les outils
* le développement logiciel plutôt avant la documentation
* collaboration avec les clients plutôt que négociation contractuelles
* acceptation du changement plutôt que conformité aux plans.
Avantages : - le client pilote à part entière son projet, d’où, il obtient vite une
première mise en
production de son logiciel
- les utilisateurs sont associés dès le début du projet afin de maximiser
leurs
appropriation
Classification des méthodes agiles :
il existe plusieurs méthodes dites agiles, mais elles ont un tronc commun de pratique,
ne se différencie que par leurs degrés de formalisme, le poids de la méthodologie
dans la documentation produite, les étapes formelles, les revues, le rythme du projet
et la longueur des itérations.
a) Méthodes unifiées
Le processus unifié (PU ou UP en anglais pour Unified Process) est une méthode de
développement logiciel qui nécessite d’être adaptée à chaque projet qui y a recours.
Elles sont génériques, itératives et incrémentales contrairement aux méthodes
séquentielles comme Merise (ou SADT)
UP est le fruit de la collaboration entre Ivar Jacobson, Grady Booch et James
Rumbaugh, tous trois à l’origine des travaux sur le développement orienté objet et
les techniques de modélisation.
Comme UML, le processus unifié ambitionnait de standardiser des bonnes pratiques
expérimentées ici et là dans l’ingénierie logicielle.
Il faut reconnaitre à Philippe Kruchten d’avoir considérablement enrichi le Processus
Unifié.
Pour certains auteurs, UP n’est pas une méthode « agile », car trop lourde
(modélisation à outrance, nombreuses procédures) et peu flexible.
1) Caractéristiques
huit caractéristiques (dont trois préconisées par UML) essentielles composent le
modèle :
- pilotage par les cas d’utilisation : visant les besoins et exigences de l’utilisateur
- centré sur l’architecture : décomposable en parties modulaires et modélisable
avec UML
- itératif et incrémental : projet découpé en itérations durant environs un mois
- gestion des besoin et des exigences : intégrer en priorité les besoins
supplémentaires du MOA
- production des composants : définir l’architecture à base de composants
- modélisation virtuelle : simplifie la réalité et donne une compréhension du
nouveau système
- qualité : contrôler la fiabilité pour éviter l’augmentation exponentielle des coûts
- piloté par les risques : les mesures à prendre pour lever risques du projet sont à
identifier tôt.
2) Organisation
UP est organisé autour de quatre activités principales :
- initialisation (ou spécification) : définit la vision du projet, sa faisabilité
technico-financière
pour décider au mieux de sa poursuite ou pas
- analyse : construit une représentation idéale de la solution sans se fonder sur
les exigences et
les contraintes de conception
- conception : concevoir et mettre en application l’ensemble des éléments
opérationnels ; elle
permet de lever tous les risques identifiés
- implémentation : s’accompagne des tests et constitue la partie la plus
importante car donnant
solution aux utilisateurs
3) Variantes UP
Up prévoit globalement un cycle de vie où les itérations (spécifications, analyse,
conception, implémentation et tests) sont regroupées en catégories d’activités. Ces
activités sont soit initiales (création), soit intermédiaires (élaboration, construction)
soit finales (transition vers l’utilisateur ou mise en production)
- AUP : (Agile modeling PU) partie des préceptes UP permettant l’agilité du
développement, instanciation partielle de la méthode mettant l’accent sur
l’optimisation et l’efficacité sur terrain plus que sur le modèle théorique
- EUP : (Entreprise UP) est une instantiation intégrant les phases de post-
implantation et décrivant le cycle de vie du logiciel
- EssUP (Essential UP) de Ivar Jacobson, l’initiateur d’UML et RUP au travers sa
société Ivar Jacobson Consulting. EssUP est une extension de la méthode RUP qui
ajoute deux phases : production et retrait.
- Open UP insiste moins que RUP sur l’utilisation de la modélisation UML pour
les livrables du projet
- RUP (Rationnal UP) processus de développement « clé en main » proposé et
commercialisé par Rational Software en 1998 pour compléter sa suite logicielle. Il est
modélisé et documenté avec UML
- XUP (eXtrême UP) est une instantiation hybride intégrant UP avec XP
(eXtreme Programming)
- 2TUP (Two Tracks Unified Process) qui est le plus récent, il a été proposé par
la société Valtech. C’est un processus unifié répondant aux contraintes de
changement continuel imposés par les systèmes d’informations. Partant du constat à
partir du quel 2TUP a été élaboré, toute évolution imposée au système d’information
peut se décomposer et se traiter parallèlement en suivant un axe fonctionnel et un
axe technique qui se fusionnent en un seul axe de réalisation.
5. METHODOLOGIE (2 TUP)
Méthodes Agiles
DSDM (Dynamic Software Development Method) crée en 1994, elle est le fruit du
travail d’un consortium de société désirant utiliser RAD de façon structurée et
indépendante en Grande-Bretagne.
Le principe de fonctionnement est basé sur une étroite collaboration entre les
utilisateurs et les équipes de développement. Les équipes doivent disposer d’un
pouvoir de décision de façon à pouvoir s’adapter aux besoins et aux délais, ce qui
permet de réaliser la livraison rapide des fonctionnalités demandées.
Le cycle de vie permet une gestion de projet très efficace et rapide.
La méthode DSDM ne préconise pas de règles de conduite strictes, mais doit être
adapté à chaque nouveau projet
CHAP II UP et UML
Suite à la complexité croissante des systèmes informatiques, les développeurs ont été
conduits à s’intéresser aux méthodes de modélisation, quoique ce phénomène ait plus
de 30 ans.
En 1994, il existait plus de 50 méthodes objets différentes, chacune ayant une notation
et un processus différents, mais convergents, en ce qui concerne la sémantique de leur
notation.
UML a ouvert un terrain d’unification en fusionnant les notations et en apportant la
précision et la rigueur nécessaires à la définition des concepts introduits.
L’introduction d’UML a apporté l’élan sans précédent à la technologie objet par la
proposition d’un standard de niveau industriel.
Cependant, il reste à définir le processus pour capitaliser les règles dans le domaine de
développement logiciel.
UML découle de la fusion au sein de la société Rational Software des idées de James
Rumbaugh et Grady Booch auxquels s’est joint Ivar Jacobson.
UML s’est imposé comme le standard à utiliser en tant que langage de modélisation
objet.
Aujourd’hui, UML est appliqué depuis plus de quinze ans en enseignement et en
entreprise. Il est un langage visuel pour la modélisation :
* permettant la spécification, la visualisation, la construction et
la documentation des logiciels
* facilitant la communication et le travail en équipe
* ayant différents modèles pour différents points de vue
* utilisant une approche orienté objet
Ses objectifs sont la modélisation des systèmes par usage des techniques orientées
objets depuis l’analyse jusqu’à la maintenance et la création d’un langage abstrait
compréhensible par l’homme et interprétable par les machines
UML permet de construire plusieurs modèles d’un système. Certains du point de vue
de l’utilisateur, d’autres montrant la structure interne et d’autres donnant une vision
globale ou détaillée.
UML, dans sa phase 2, propose treize diagrammes dont 4 nouveaux introduits par
UML 2.0 qui peuvent être utilisés dans la description d’un système.
UML modélise le système suivant deux modes de représentation l’un concerne la
structure du système pris « au repos » (statique ou structurel), l’autre concerne sa
dynamique de fonctionnement.
Les deux sont nécessaires et complémentaires pour schématiser la façon dont est
composé le système et comment ses composants fonctionnent entre eux.
La modélisation se construit par étapes successives de plus en plus détaillées (il est
impossible de produire un modèle représentant plusieurs milliers des lignes de code
sans passer par les étapes d’avancement qui permettent d’organiser le volume
d’information collectées).
Tout processus construit sur un modèle doit se doter d’une tactique d’avancement par
consolidation de chaque étape de construction du modèle.
Un tel avancement est itératif car il définit des objectifs à atteindre suivant un
découpage en niveaux de détail allant croissant par rapport au modèle de
développement.