Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parHamon Teixeira Modifié depuis plus de 10 années
1
Patterns et maintenabilité dans lindustrie : un cas concret Christophe Saint-Marcel Silicomp Ingénierie
2
©Copyright Silicomp - 2 Plan de la présentation Contexte du projet Utilisation des patrons : objectifs Une solution Le cas concret Résultats
3
©Copyright Silicomp - 3 Contexte Pour le client Trois ans de développement pour le client Développement dun produit lié à plusieurs affaires Projet sous-traité à Silicomp Pour Silicomp 1 an de développement (plusieurs itérations) Une équipe de 5 personnes Processus de développement agile
4
©Copyright Silicomp - 4 Objectifs Améliorer la maintenabilité des applications dans lindustrie Capitaliser le savoir-faire acquis sur le projet Limiter les risques dérosion du logiciel Problème
5
©Copyright Silicomp - 5 Comprendre les problèmes avant de proposer des solutions : méthode problem-driven. Tracer les rapports de causalité problème / solutions. Apprendre à connaître lapplication par la description des activités de développement plutôt que par leur résultat. Comment ? Solution
6
©Copyright Silicomp - 6 Motivation Le cas concret Gérer les clients du client Limiter le couplage entre le produit et les affaires Normaliser les fonctions du produit Homogénéiser le traitement des données
7
©Copyright Silicomp - 7 Gérer les clients du client => Optimiser la réutilisation => Prendre en compte la sous-traitance Affaire n° 1 Affaire n° 2 Affaire n° i Organisation Problème : clients multiples Client n°1 Client n°2 Client n°i
8
©Copyright Silicomp - 8 Développer un produit basé sur des composants métier réutilisables par les différentes affaires Solution Client Silicomp Produit Affaire n° 1 Affaire n° 2 Affaire n° i Client n°1 Client n°2 Client n°i
9
©Copyright Silicomp - 9 Limiter le couplage entre le produit et les affaires Affaire n° 1 Affaire n° 2 Affaire n° i Produit Problème : réutiliser Architecture
10
©Copyright Silicomp - 10 Homogénéiser les interfaces en proposant une façade commune [Gamma95] A1 A2 An Produit A1 A2 An Produit Solution
11
©Copyright Silicomp - 11 Gestion des composants : librairies UNIX Solution : composants Business1 Business2 Product Product_Int
12
©Copyright Silicomp - 12 Assurer la communication bi-directionnelle entre laffaire et le produit Affaire n° 1 Produit Laffaire veut savoir quand le produit change détats. Problème : communication Architecture
13
©Copyright Silicomp - 13 Utiliser les mécanismes découte proposés par Gamma dans le patron Observer. 1 Product_Controller state : E_State = E_UNK Product_Listener_Int (from ProductInterface) > Product_Controller_Notify onOpeningSession() onClosingSession() onStartingSession() onPurgingData() TEVR_Product_Controller_Notify() isListener() 1 #notifier 1 +listener 1 Implémentation des machines à états [Idiome C++] Solution (1)
14
©Copyright Silicomp - 14 Gestion des composants : librairies UNIX Solution (2) Business1 Business2 Product Product_Int Product_List ener_Int > Le composant avec ses interfaces
15
©Copyright Silicomp - 15 Arrêt sur image : traçabilité des problèmes (1) Organisation Architecture produit Analyse domaine Design Implémentation
16
©Copyright Silicomp - 16 Design Organisation Design Architecture Arrêt sur image : traçabilité des problèmes (2)
17
©Copyright Silicomp - 17 Normaliser les fonctions du produit Solution Séparation en fonction du type de données (MetaData) Identity Potato_Xcg Donnée contextuelle Donnée déchange Potato Objet métier Méta-niveau Architecture Problème : normalisation
18
©Copyright Silicomp - 18 Homogénéiser le traitement des données Solution Gestionnaires de données, le pattern Container pour gérer les fonctions secondaires du produit Produit Créer un objet métier à partir dune donnée déchange Supprimer un objet métier (une donnée contextuelle) Modifier un objet métier (une donnée contextuelle) Affaire Obtenir toutes les données déchange correspondant à un objet métier (…) Problème : homogénéisation Conception
19
©Copyright Silicomp - 19 Anonymous : Container obj : Object modify(key : const T_Key&, exchangeData : const T_Data&, context : T_Context*) obj = getObject(key : T_Key) readData_Xcg(data : const T_Data&, key : const T_Key&) Modifier un objet métier (une donnée contextuelle) Anonymous : Container obj : Object getData_Xcg(key : T_Key) obj = objects_.find(key) data_Xcg data_Xcg = getData_Xcg() TEVR_ObjectNoExistException If obj != null Else End If Créer un objet métier à partir dune donné d échange - Instanciation générique du pattern en C++ - Génération et paramétrage à laide de scripts Rose Solution
20
©Copyright Silicomp - 20 Améliorer la maintenabilité des applications dans lindustrie grâce à un langage de patrons projet qui: Résultat Limite les risques dérosion lors de la venue de nouveaux membres dans léquipe. Complète les générations automatiques de modèles utilisées pour la correction des bugs. Permet de contrôler que lon reste dans le canevas (outils?).
21
©Copyright Silicomp - 21 Solution? : Approche par méta-modèle pour normaliser les solutions Variante 1 Variante 2 Pistes (1) Problème : Pas doutillage qui contrôle que lon reste dans le canevas.
22
©Copyright Silicomp - 22 Pistes (2) Approche descendante et remontante Notion de distance entre le problème et la solution Utiliser les anti-patterns pour décrire la démarche de développement (voir les mauvaises solutions)
23
©Copyright Silicomp - 23 Comprendre les problèmes avant de proposer des solutions : méthode problem-driven. Tracer les rapports de causalité problème / solutions. Apprendre à connaître lapplication par la description des activités de développement plutôt que par leur résultat. Fin Solution
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.