III. Définir le processus unifié

Le processus unifié répond aux exigences fondamentales suivantes :
Р̻tre guid̩e par les besoins des utilisateurs
– être centrée sur l’architecture logicielle
Р̻tre it̩rative et incr̩mentale

Il ne s’agit pas d’un cycle en cascade séquentiel. Le cycle de développement se compose de nombreuses itérations.

Les phases :

Les phases d’un processus de développement sont des états de celui­-ci à un instant t. Le cycle de développement du Processus Unifié organise les tâches et les itérations en quatre phases :
-­ Inception : spécification des besoins et aussi une sorte d’étude faisabilité où on effectue les recherches nécessaires pour décider si on poursuit ou non le projet.
­ – Élaboration : on développe de façon incrémentale l’architecture du noyau, les risques et la plupart des besoins sont identifiés.
-­ Construction : on construit des sous­-ensembles exécutables et stables du produit final­ .
– Transition : le produit final est livré en version bêta à la disposition des utilisateurs.

Les activités :

Les activités représentent les actions à effectuer au cours d’une phase : une phase passe par l’ensemble des activités. Le temps passé par activité est fonction des phases.

Les activités de développement sont définies par des disciplines ou workflows fondamentales suivantes : Modélisation métiers, Exigences, Conception, Implémentation, Tests, Déploiement, Gestion de la configuration, Gestion de projet, Environnement.

La répartition de l’effort change avec le temps. Les première itérations ont tendance à mettre l’accent sur certaines activités (analyse et conception), les autres itérations moins. Les efforts seront ensuite portés sur l’implémentation, les tests et le déploiement.

Modélisation de métier Concepts importants Modèle, diagramme …
Exigences Compréhension et expression des besoins et des exigences du client. Modèle d’analyse, diagramme des cas d’utilisation, spécifications supplémentaires, glossaire, scénarios, prototypage de l’IHM, plan de tests de validation
Conception Décrit les différentes vues (fonctionnelles, dynamique et statique) d’une architecture. diagramme de classes de conception, diagramme d’interaction (séquence), diagramme d’activités et/ou d’états, diagramme de déploiement, plan de tests d’intégration
Implémentation C’est le résultat de la conception pour implémenter le système sous formes de composants. On planifie les intégrations des composants pour chaque itération, On produit les classes et les sous­systèmes sous formes de codes sources. code source, scripts, binaires, exécutables et autres éléments du même type (tables du base de données). Respect des standards de codage, diagramme de composant, diagramme de déploiement, plan de tests unitaires
Test Les tests permettent de vérifier des résultats de l’implémentation en testant la construction. Pour mener à bien ces tests, il faut les planifier pour chaque itération, les implémenter en créant des cas de tests, effectuer ces tests et prendre en compte le résultat de chacun. rapport des tests unitaires, d’intégration et de validation
Déploiement Couvre la configuration du système à livrer. manuels d’installation et d’utilisation
Gestion de la configuration Contrôle les modifications du système. système de gestion de version (subversion)
Gestion de projet Décrit différentes stratégies de travail avec un processus itératif. diagramme de gantt, répartition des tâches
Environnement Couvre l’infrastructure nécessaire demandée pour développer. ressources opératives, logicielles, matérielles et de documentation

Définir un processus itératif et adaptatif

Historique :

Historiquement, il y a deux approches pour la réalisation d’un processus de développement :­
– cycle de vie séquentiel en cascade (le cycle en V) où le logiciel est pleinement spécifié par l’analyse, puis pleinement conçu et enfin pleinement implémenté.
­ – prototypage rapide : une portion du logiciel est initialement développé et évalué. Le logiciel évolue ensuite grâce
à des améliorations (répétitions des étapes d’analyse, conception et implémentation).

Développement Itératif et Incrémental :

Le développement itératif s’organise en une série de développement très courts de durée fixe nommée itérations. Le résultat de chaque itération est un système partiel exécutable, testé et intégré (mais incomplet). Chaque itération
comprend ses propres activités : analyse des besoins, conception, implémentation et tests. Le résultat d’une itération n’est pas un prototype expérimental ou « jetable ». Comme le système croît avec le temps de façon incrémentale, cette méthode de développement est nommée développement itératif et incrémental.

Définir l’analyse et la conception orientées objet

Définition :

Analyse : Construire le bon système.
Conception : bien construire le système souhaité.

L’analyse :

L’analyse met l’accent sur une investigation du problème et des besoins plutôt que sur la recherche d’une solution.

On distinguera :
­ l’analyse des besoins : l’investigation des besoins
­ l’analyse orientée objet : l’investigation des objets du domaine

L’analyse orientée objet est davantage tournée vers la recherche et la description des objets (ou concepts) du domaine du problème.

La conception :

La conception sous­entend l’élaboration d’une solution répondant aux besoins plutôt que la mise en oeuvre de cette solution.

L’implémentation :

Les classes d’objets et leurs relations de la phase de conception sont traduites en une implémentation dans un langage de programmation. On peut aussi parler de fabrication ou de construction concrète du système. Les décisions difficiles devront avoir été prises pendant la phase de conception.

L’approche :

Le terme « orienté objet » signifie que l’on organise le logiciel comme une collection d’objets dissociés.
Ces objets comprennent à la fois : une structure de données (attributs) et un comportement (opérations). Les quatre aspects à retenir qui caractérisent une approche orientée objet sont :
­ – L’identité : les objets
­ – La classification : les objets qui ont les mêmes structure de données (attributs) et le même comportement (opérations) sont regroupées en une classe. Une classe est une abstraction qui décrit des propriétés pertinentes dans le contexte d’une application et ignore les autres.
­ – Le polymorphisme : la même opération peut se comporter différemment suivant les classes.
­ – L’héritage : le partage des attributs et des opérations entre classes. La possibilité de factoriser des propriétés communes à plusieurs classes est l’un des principaux avantages d’un système orienté objet.

Développement :

Quelques règles essentielles :
­ – Se concentrer sur les aspects essentiels sur ce qu’est un objet et sur ce qu’il fait avant de décider comment il doit être implémenté.
­ – Spécifier ce qu’est un objet plutôt que sur la façon dont il est utilisé.
­ – L’utilisation d’un objet est souvent modifiée pendant le développement.
­ – Les autres concepts (fonctions, relations, évènements) seront organisés autour des objets.

Démarche de modélisation

Premièrement : Ne pas vouloir faire tous les diagrammes qu’il existe.

Quatre grandes parties :

1) Partie modélisation des exigences :
- Exprimer le besoin (fichier texte),
– Diagramme de Cas d’utilisation,
– Maquette (brouillon, papier, …)

2) Analyse :
- Diagramme d’Activité,
– Diagramme de Classe d’analyse (complet avec le peu d’élément que vous avez),
– Diagramme de séquence (partiel, les différentes boucles et interactions entre classes …).

3) Conception :
- Diagramme de Classe de conception (complet et le plus finalisé possible),
– Diagramme de séquence de conception complet (Noms des fonctions, valeurs des variables …).

4) Implémentation :
- Codage.