Your SlideShare is downloading. ×

Genie logiciel eseo-v1.1-1spp

1,339

Published on

Conférence ESEO Février 2013

Conférence ESEO Février 2013

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,339
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
120
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Génie Logiciel, ALM et outillageE S E O - AngersMardi 19 février 2013Laurent Guérin laurent.guerin@sogeti.com @ltguerin
  • 2. 1- Génie logiciel – Introduction2- ALM (Application Lifecycle Management)3- SCM (Source Code Management)4- Maven5- Intégration continue et qualité logicielle6- Génération de code Génie Logiciel ( Laurent Guérin - Février 2013 ) | 2
  • 3. Notion de Génie Logiciel• « Génie Logiciel » = « Software Engineering » ?• « Génie Industriel » appliqué au domaine du logiciel – méthodes de travail – bonnes pratiques – outils – etc..• Approche industrielle du développement de logiciels – procédures – recherche de fiabilité, productivité, qualité – respect des délais et des coûts – performances – etc.. Génie Logiciel ( Laurent Guérin - Février 2013 ) | 3
  • 4. Notion de Génie Logiciel• Définition du « Génie Logiciel » : « lensemble des activités de conception et de mise en œuvre des produits et des procédures tendant à rationaliser la production du logiciel et son suivi » Journal officiel du 19 février 1984 Génie Logiciel ( Laurent Guérin - Février 2013 ) | 4
  • 5. Notions de MOA - MOE• La MOA confie une réalisation à la MOE MOA MOE Maitrise d’Ouvrage Maitrise d’Oeuvre ( Maître d’Ouvrage ) ( Maître d’Oeuvre ) Exprime un besoin et définit Réalise le projet . objectifs . budget . calendrier (délais) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 5
  • 6. Différentes méthodes « Waterfall » Spécification Conception Implémentation Test Effet tunnelCahier descharges Livraison mode prédictif, rigide « Méthodes Agiles » S C I T S C I T S C I T mode adaptatif, itératif, incrémental Génie Logiciel ( Laurent Guérin - Février 2013 ) | 6
  • 7. Cycle de vie du logiciel • Formaliser le Gestion de …Préoccu- • Livrer une système avec une • Maîtrise des application de Avancementpations vision utilisateur développements qualité tant d’un Reste à faire • S’assurer que • Points de point de vue PlanificationMOA / MOE tous les besoins visibilité pour fonctionnel que sont pris en éviter l’effet tunnel technique Assurance qualité compte … Spécifications et conception Développement Validation interne Recette ça ne Ateliers de travail et s’arrête Intégration Recette modélisation continue fonctionnelle pas là Maintenance (curative et Gestion des Normalisation de la évolutive) Recette technique exigences production MCO, … technique Génie Logiciel ( Laurent Guérin - Février 2013 ) | 7
  • 8. Industrialisation• On s’inspire des principes de l’industrie… Industrialisation Qualité• Notion de « Software Factory » Taylorisme ? Fordisme ? Toyotisme ?• Mais un logiciel est une œuvre originale, on ne « fabrique » pas 2 fois le même logiciel Génie Logiciel ( Laurent Guérin - Février 2013 ) | 8
  • 9. Qualité logicielle• Les contrôles qualité sont indispensables pendant toute la durée de vie d’un logiciel• Sinon … – Le logiciel subit des évolutions plus ou moins bien maîtrisées… – Il vieillit, sa qualité se dégrade progressivement – Plus le temps passe, plus il est coûteux de le remettre à niveaux – On accumule une « dette technique » Génie Logiciel ( Laurent Guérin - Février 2013 ) | 9
  • 10. Notion de « Dette Technique »• Métaphore : référence à la « dette financière »• Le coût nécessaire pour remettre le logiciel à un niveau de qualité acceptable• cf http://techdebt.org/ Génie Logiciel ( Laurent Guérin - Février 2013 ) | 10
  • 11. 1- Génie logiciel – Introduction2- ALM (Application Lifecycle Management)3- SCM (Source Code Management)4- Maven5- Intégration continue et qualité logicielle6- Génération de code Génie Logiciel ( Laurent Guérin - Février 2013 ) | 11
  • 12. ALM• ALM = « Application Lifecycle Management » processus global de gestion du cycle de vie de lapplication• Une application a un cycle de vie Naissance, vie et mort …• Elle fait partie du patrimoine de l’organisation/entreprise (elle a une valeur)• Il faut la gérer et l’entretenir… Génie Logiciel ( Laurent Guérin - Février 2013 ) | 12
  • 13. Cycle de vie d’une application• Le cycle de vie des applications (lifecycle) couvre toute la période durant laquelle une organisation engage des moyens (€, ressources) sur son patrimoine applicatif Génie Logiciel ( Laurent Guérin - Février 2013 ) | 13
  • 14. ALM = Multi-fonctionsIdéalement… Des DesProductivité Guides équipes processus Gestion des risques et desCollaborationPartage des connaissances exigencesGestion de projet Méthodes Agiles Des technologies Interopérables Outillage Sécurité Performances Administration … Génie Logiciel ( Laurent Guérin - Février 2013 ) | 14
  • 15. Principaux domaines de l’ALM Génie Logiciel ( Laurent Guérin - Février 2013 ) | 15
  • 16. Des outils et des serveurs Development ToolArch. & Design Test Tool Tool Design Documents Source Test Cases Code Versions Requirements Project Statistics Serveurs ProjectRequirements Management Tool Tool Génie Logiciel ( Laurent Guérin - Février 2013 ) | 16
  • 17. ALM• Gestion des exigences Génie Logiciel ( Laurent Guérin - Février 2013 ) | 17
  • 18. ALM• Collaboration / Travail en équipe / Support méthode Génie Logiciel ( Laurent Guérin - Février 2013 ) | 18
  • 19. ALM• Modélisation Génie Logiciel ( Laurent Guérin - Février 2013 ) | 19
  • 20. ALM• Gestion des tâches Génie Logiciel ( Laurent Guérin - Février 2013 ) | 20
  • 21. ALM• Pilotage / Tableaux de bord Génie Logiciel ( Laurent Guérin - Février 2013 ) | 21
  • 22. ALM• Tests fonctionnels Génie Logiciel ( Laurent Guérin - Février 2013 ) | 22
  • 23. ALM• Automatisation des builds Génie Logiciel ( Laurent Guérin - Février 2013 ) | 23
  • 24. ALM• Qualimétrie Analyse de code Tests unitaires et couverture de tests Génie Logiciel ( Laurent Guérin - Février 2013 ) | 24
  • 25. Les principales solutions d’ALM « Baromètre 2012 du Développement Logiciel » Etude Borland – MicroFocus novembre 2012Parmi les différents éditeurs de solutions ALM,quels sont ceux dont vous connaissez/utilisez les offres ? Génie Logiciel ( Laurent Guérin - Février 2013 ) | 25
  • 26. Points importants de l’ALM « Baromètre 2012 du Développement Logiciel » Etude Borland – MicroFocus novembre 2012Classez du plus important au moins important de (1 à 7) les thèmes quiselon vous caractérisent le mieux la démarche ALM 1er (618 points) (700 points possibles) 2ème (605 points) 3ème (560 points) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 26
  • 27. 1- Génie logiciel – Introduction2- ALM (Application Lifecycle Management)3- SCM (Source Code Management)4- Maven5- Intégration continue et qualité logicielle6- Génération de code Génie Logiciel ( Laurent Guérin - Février 2013 ) | 27
  • 28. Notion de SCM SCM ? Source Control Revision control Management Version control Source Code Management Source controlSoftware Configuration Management Supply Chain Management Rien à voir ! Génie Logiciel ( Laurent Guérin - Février 2013 ) | 28
  • 29. SCM• Quelques outils : Source Control Software Configuration Management Management CVS Visual Source Safe PVCS Subversion *** Perforce BitKeeper ClearCase Git *** Mercurial Plus complet : Gestion des demandes d’évolution, Gestion des sources uniquement Liaison demande – modifications réalisées (fichiers en tous genres) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 29
  • 30. Subversion Client Interface Repository Interface FSFS GUI client Apache apps mod_dav Repository TortoiseSVN access mod_dav_svn DAV Subversive Client Internet (Any TCP/IP Network) Library SVN svnserveWebClient for SVN Subversion Local Repository Command line client apps Working Copy Management Library Berkley DB Client Serveur Génie Logiciel ( Laurent Guérin - Février 2013 ) | 30
  • 31. Subversion• Différents protocoles :• file:// – Direct repository access to local or network drive.• http:// – Access via WebDAV protocol to Subversion-aware Apache server.• https:// – Same as http://, but with SSL encryption.• svn:// – Unauthenticated TCP/IP access via custom protocol to an svnserve server.• svn+ssh:// – Authenticated, encrypted TCP/IP access via custom protocol to an svn server. Génie Logiciel ( Laurent Guérin - Février 2013 ) | 31
  • 32. Subversion• Chaque commit produit un nouveau numéro de révision• Un commit sur Subversion est comparable à une transaction sur une base de données 0 1 2 3 4 0 1 2 3 4 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 4 2 3 3 2 2 2 3 3 3 3 Génie Logiciel ( Laurent Guérin - Février 2013 ) | 32
  • 33. Subversion – Checkout & Commit RéférentielCopie de travail« working copy » « Commit » Validation des modifications Génie Logiciel ( Laurent Guérin - Février 2013 ) | 33
  • 34. Subversion - Conflits Harry doit mettre à jour sa copie de travail pour y intégrer les modifications déjà commitéesÉchec du commit“working copy outof date” Génie Logiciel ( Laurent Guérin - Février 2013 ) | 34
  • 35. Subversion / Système d’exploitation En ligne de commande Dans l’explorateur de fichiers Génie Logiciel ( Laurent Guérin - Février 2013 ) | 35
  • 36. Subversion / IDEExemple :Eclipse + SubclipseNavigation dansle repository Visibilité sur les différentes révisions Commandes subversion Génie Logiciel ( Laurent Guérin - Février 2013 ) | 36
  • 37. Subversion / IDEAccès à tout l’historique comparaison de deux révisions Révision courante Révision 30 ( workspace ) ( repository ) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 37
  • 38. Subversion / InternetNavigateur Exemple : Google code Serveur Subversion Repository Génie Logiciel ( Laurent Guérin - Février 2013 ) | 38
  • 39. Subversion - Arborescence• Organisation standard de l’arborescence « trunk » « tags » « branches » Génie Logiciel ( Laurent Guérin - Février 2013 ) | 39
  • 40. Subversion - Arborescence• Les « tags » pour fixer les « releases » Root Project 1 trunk Le « tag » est une copie des sources à un instant T tags Ex : release 2.1.4 Release x.x.x Génie Logiciel ( Laurent Guérin - Février 2013 ) | 40
  • 41. Subversion - Arborescence• Les « branches » pour travailler en parallèle Main line Feature 1 (new UI) Feature 2 (multilingualism) Il va falloir faire un « merge » Après le « merge » les branches n’ont plus de raison d’être Génie Logiciel ( Laurent Guérin - Février 2013 ) | 41
  • 42. GIT• Créé pour le développement du noyau Linux – Distribué – Référentiel local• Successeur de Subversion ?• NB : suppose une organisation d’équipe différente• Progression importante depuis 2010 ( notamment grâce à GitHub : https://github.com/ ) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 42
  • 43. 1- Génie logiciel – Introduction2- ALM (Application Lifecycle Management)3- SCM (Source Code Management)4- Maven5- Intégration continue et qualité logicielle6- Génération de code Génie Logiciel ( Laurent Guérin - Février 2013 ) | 43
  • 44. Maven• Maven = = outil Open Source (Apache) d’automatisation des builds• Dans la lignée de « make » pour Unix, ou « ant » pour Java (en plus puissant)• Avantages : – Normalisation des répertoires d’un projet – Normalisation de l’identification des « artifacts » (group id, artifact id, version ) – Normalisation du cycle de construction d’un projet ( phases ) – Gestion des dépendances ( récupère des artefacts nécessaires sur des référentiels via internet ) – Tout est déclaré dans un fichier : « pom.xml » – Extensible ( système de « plugins » ) – Héritage ( « pom parent » ) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 44
  • 45. Maven• Maven repose sur des conventions principe de « Convention over Configuration » ( CoC )• Répertoires src/main/java src/main/resources Application src/main/webapp src/test/java Tests src/test/resources• Identification des « artifacts » (objet utilisé ou produit par le build) Produit Utilisé (dépendance) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 45
  • 46. Maven – Cycle de vie du « build »Code 23 phasessource generate-test-sources validate process-test-sources pre-integration-test initialize generate-test-resources integration-test process-test-resources post-integration-test generate-sources process-sources test-compile verify generate-resources process-test-classes process-sources test install compile prepare-package deploy process-classes package Génie Logiciel ( Laurent Guérin - Février 2013 ) | 46
  • 47. Maven – PluginsMaven a été conçu pour déléguer les traitements à un jeu de« plugins » associés aux différentes phases. Pour chaque plugin : pom.xml 1 à N « goals » Phases Plugins Goals compile compile compiler testCompile test-compile test surefire jar test testJar jar ejb package ejb install javadoc javadoc install aggregate etc...Les plugins sont associés aux phases dans le fichier pom.xml Génie Logiciel ( Laurent Guérin - Février 2013 ) | 47
  • 48. Maven - Commandes• On invoque Maven en lui indiquant jusqu’à quelle phase il doit exécuter les traitements• Exemples : mvn compile mvn install Génie Logiciel ( Laurent Guérin - Février 2013 ) | 48
  • 49. Maven - Commandes• Il est également possible de demander l’exécution d’un « goal » particulier• Syntaxe : mvn plugin_name : goal_name• Exemples : mvn compiler:compile mvn jar:jar mvn ejb:ejb mvn surefire:test mvn deploy:deploy mvn sonar:sonar• Dans ce cas seul le goal demandé est exécuté Génie Logiciel ( Laurent Guérin - Février 2013 ) | 49
  • 50. Maven – Autres cycles de vie Nettoyage Génération du site web Cycle de vie « clean » Cycle de vie « site » pre-clean pre-site clean site post-clean post-site site-deploymvn clean mvn sitemvn post-clean mvn pre-site Génie Logiciel ( Laurent Guérin - Février 2013 ) | 50
  • 51. Maven / IDEEditeur pour le pom.xml Génie Logiciel ( Laurent Guérin - Février 2013 ) | 51
  • 52. Maven / IDEGestion des dépendances Commandes intégréesà partir du pom.xml Configuration de « .launch » Génie Logiciel ( Laurent Guérin - Février 2013 ) | 52
  • 53. 1- Génie logiciel – Introduction2- ALM (Application Lifecycle Management)3- SCM (Source Code Management)4- Maven5- Intégration continue et qualité logicielle6- Génération de code Génie Logiciel ( Laurent Guérin - Février 2013 ) | 53
  • 54. Avant l’intégration continue …• Des phases bien séparées (trop séparées) Développement Intégration Livraison (tests d’intégration)Temps Mais ça c’était avant … Génie Logiciel ( Laurent Guérin - Février 2013 ) | 54
  • 55. Intégration continue• Principe développé par Martin Fowler : Pratique de développement dans laquelle les membres d’une équipe intègrent leurs travail fréquemment (au moins une fois par jour). Chaque intégration est vérifiée par un « build » automatisé (incluant les tests) afin de détecter les erreurs d’intégration le plus tôt possible. http://www.martinfowler.com/articles/continuousIntegration.html Lintégration continue est le principe de faire dun processus dintégration logiciel un «non-évènement». Génie Logiciel ( Laurent Guérin - Février 2013 ) | 55
  • 56. Intégration continue - Outillage• Un outil surveille les modifications du code dans le référentiel des sources (SCM)• Quand un changement est détecté l’outil va automatiquement compiler et exécuter les tests automatisés• Si une erreur survient (on dit qu’on a « cassé le build ») l’outil va alerter les développeurs pour qu’ils corrigent immédiatement le problème• Autres fonctions de l’outil : Objectifs : . maintenir la « dette technique » – surveillance de la qualité du code au niveau le plus bas possible – métriques de couverture de test . donner de la visibilité aux – etc… indicateurs de qualité (motiver les développeurs)• L’outil d’Intégration Continue devient un outil de communication transparence & management visuel Génie Logiciel ( Laurent Guérin - Février 2013 ) | 56
  • 57. Intégration continue - Outillage• Solutions d’intégration continue : – CruiseControl ( SourceForge ) – Bamboo (Atlassian) – Hudson ( repris pas Oracle) – Jenkins ( fork de Hudson, désaccord du créateur avec Oracle ) Application Java/web (.war) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 57
  • 58. Jenkins• Il faut indiquer à Jenkins où se trouvent les sources SCM au choix : . CVS . Subversion . Git Génie Logiciel ( Laurent Guérin - Février 2013 ) | 58
  • 59. Vue d’ensemble Apports • Intégration et détection des régressions au fil CheckStyle Corbertura de l’eauPoste de Développement • Mise à disposition de versions de test • Production quotidienne de métriques • Coaching technique obligatoireAutomate de Fabrication Référentiel Unique des Sources et Composants Plugins MAVEN CheckStyle, Cobertura, CPD, PMD JavaDOC JDepend, SureFire, XRef Génie Logiciel ( Laurent Guérin - Février 2013 ) | 59
  • 60. Qualité• Rappel : l’application a un cycle de vie• Elle doit avoir un niveau de qualité suffisant pour évoluer pendant des années Pensez à celui qui va devoir reprendre le code ! Génie Logiciel ( Laurent Guérin - Février 2013 ) | 60
  • 61. Sonar• Un tableau de bord pour une vue globale (multi-projets) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 61
  • 62. Sonar • Un tableau de bord pour chaque projet … Compteurs (lignes, classes,.. ) Règles non respectéesComplexitécyclomatique(McCabe) Taux de couverture du code par les tests unitaires Génie Logiciel ( Laurent Guérin - Février 2013 ) | 62
  • 63. Sonar• Suivi de la qualité du code dans le temps Génie Logiciel ( Laurent Guérin - Février 2013 ) | 63
  • 64. 1- Génie logiciel – Introduction2- ALM (Application Lifecycle Management)3- SCM (Source Code Management)4- Maven5- Intégration continue et qualité logicielle6- Génération de code Génie Logiciel ( Laurent Guérin - Février 2013 ) | 64
  • 65. Approche « Model First »• Démarche « MDD » classique ( MDA, etc… )• « Model - First » => concevoir un model ! – investissement initial important – nécessite de respecter le processus (formation)• Incompatible avec un démarrage rapide MODEL Service name +port 0..n Port Binding Port Type XMI ( XML ) 1 +binding name name name 1 +type Param name StartWithExtensions +output 0..1 +operation 0..n +operation 0..n +input Input 0..1 +input BindingOperation Operation 0..1 name name 1 0..1 Output +output +message 1 +fault 0..n +fault 0..n Message Fault +message BindingFault name name 1 1 +part 0..n Part name Code Template TOOL Génie Logiciel ( Laurent Guérin - Février 2013 ) | 65
  • 66. Approche « scaffolding »• Scaffolding de type « Database - First » Database• Très efficace ( rapide )• Mais pas d’action possible sur l’outil Metadata de génération• Pas assez d’informations :-( – Noms/types des attributs Java TOOL – Règles de validation : min, max, regexp, … – Représentation des Booléens (1/0, "T"/"F", … ) Template – etc …• Il faudrait ajouter (et conserver) des Code informations complémentaires… … un modèle ? Génie Logiciel ( Laurent Guérin - Février 2013 ) | 66
  • 67. Approche « scaffolding + modèle léger »• Combinaison du « scaffolding » et du « MDD »• Scaffolding + un modèle ultra léger pour ajouter des informations ou modifier les informations issues de la base Génie Logiciel ( Laurent Guérin - Février 2013 ) | 67
  • 68. Génération de code• Démo avec « Telosys Tools » ( plugin Eclipse ) http://marketplace.eclipse.org/content/telosys-tools Génie Logiciel ( Laurent Guérin - Février 2013 ) | 68
  • 69. Annexes Génie Logiciel ( Laurent Guérin - Février 2013 ) | 69
  • 70. Publications Sogetihttp://www.fr.sogeti.com/presse-et-publications/nos-publications WORLD QUALITY REPORT "The World Quality Report 2012-2013" est le quatrième volet dune série denquêtes annuelles qui examinent létat de la qualité des applications et des pratiques de test dans toutes les industries. Tmap NEXT Lapproche de TMap Next’s Business Driven Test Management (BDTM) offre aux managers une panoplie doutils de test pour traduire les objectifs daffaires des systèmes dinformation explicites et concrètes, les plans de test pragmatique et contrôlables, et ainsi atteindre un meilleur équilibre entre les résultats, les risques, les délais et les coûts. TPI NEXT La démarche numéro 1 dans le monde pour améliorer les processus de testLivres au format PDF (téléchargement libre) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 70

×