E S E O - Angers
Génie Logiciel,
ALM et outillage
E S E O - AngersMardi 19 février 2013Laurent Guérin
@ltguerin
1 - Génie logiciel – Introduction
2 - ALM (Application Lifecycle Management)
3 - SCM (Source Code Management)
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 2
4 - Maven
5 - Intégration continue et qualité logicielle
6 - Génération de code
• « Génie Logiciel » = « Software Engineering »
• « Génie Industriel » appliqué au domaine du logiciel
– méthodes de travail– bonnes pratiques – outils
Notion de Génie Logiciel
?
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 3
– 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..
• Définition du « Génie Logiciel » :
Notion de Génie Logiciel
« l'ensemble des activités de conception
et de mise en œuvre des produits et des
procédures tendant à rationaliser la
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 4
procédures tendant à rationaliser la
production du logiciel et son suivi »
Journal officiel du 19 février 1984
• La MOA confie une réalisation à la MOE
Notions de MOA - MOE
M O AMaitrise d’Ouvrage
M O EMaitrise d’Oeuvre
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 5
Maitrise d’Ouvrage
( Maître d’Ouvrage )
Maitrise d’Oeuvre
( Maître d’Oeuvre )
Exprime un besoin et définit . objectifs. budget. calendrier (délais)
Réalise le projet
Différentes méthodes
Effet tunnelCahier des charges Livraison
Spécification Conception Implémentation Test
« Waterfall »
mode prédictif, rigide
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 6
S C I T S C I T S C I T
« Méthodes Agiles »
mode adaptatif, itératif, incrémental
Cycle de vie du logiciel
Spécifications et conception Développement Validation interne Recette
• Formaliser le système avec une vision utilisateur• S’assurer que tous les besoins sont pris en compte
• Maîtrise des développements• Points de visibilité pour éviter l’effet tunnel
• Livrer une application de qualité tant d’un point de vue fonctionnel que technique
Gestion de …AvancementReste à fairePlanificationAssurance qualité…
Préoccu-pationsMOA / MOE
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 7
Gestion des exigences
Ateliers de travail et modélisation
Intégration continue
Recette fonctionnelle
Recette techniqueNormalisation de la production technique
ça ne
s’arrête
pas là
Maintenance
(curative et
évolutive)
MCO, …
Industrialisation
• On s’inspire des principes de l’industrie…
• Notion de « Software Factory »
Industrialisation
Qualité
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 8
• Notion de « Software Factory »
• Mais un logiciel est une œuvre originale , on ne « fabrique » pas 2 fois le même logiciel
Taylorisme ?Fordisme ?Toyotisme ?
• Les contrôles qualité sont indispensables pendant toute la durée de vie d’un logiciel
• Sinon …
Qualité logicielle
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 9
• 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 »
• 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/
Notion de « Dette Technique »
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 10
1 - Génie logiciel – Introduction
2 - ALM (Application Lifecycle Management)
3 - SCM (Source Code Management)
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 11
4 - Maven
5 - Intégration continue et qualité logicielle
6 - Génération de code
• ALM = « Application Lifecycle Management »
processus global de gestion du cycle de vie de l'application
• Une application a un cycle de vieNaissance, vie et mort …
A L M
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 12
• Elle fait partie du patrimoine de l’organisation/entreprise (elle a une valeur)
• Il faut la gérer et l’entretenir…
• Le cycle de vie des applications (lifecycle) couvre toute la période durant laquelle une organisation engage des moyens (€, ressources) sur son patrimoine applicatif
Cycle de vie d’une application
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 13
ALM = Multi-fonctions
Des processus
Des équipes� Productivité
� Collaboration� Partage des connaissances
� Guides� Gestion des risques et des
exigences
Idéalement…
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 14
� Interopérables� Sécurité� Administration
� Outillage� Performances� …
Des technologies
� Partage des connaissances� Gestion de projet
exigences� Méthodes Agiles
Principaux domaines de l’ALM
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 15
Des outils et des serveurs
Development
Tool
Design
Documents
Arch. & Design
ToolTest
Tool
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 16
Serveurs
Source Code
VersionsRequirements
Requirements
Tool
Project Statistics
Project
Management
Tool
Test Cases
• Gestion des exigences
ALM
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 17
• Collaboration / Travail en équipe / Support méthode
ALM
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 18
• Modélisation
ALM
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 19
• Gestion des tâches
ALM
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 20
• Pilotage / Tableaux de bord
ALM
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 21
• Tests fonctionnels
ALM
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 22
• Automatisation des builds
ALM
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 23
• Qualimétrie
ALM
Analysede code
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 24
Tests unitaireset couverturede tests
Les principales solutions d’ALM
Parmi les différents éditeurs de solutions ALM, quels sont ceux dont vous connaissez/utilisez les offres ?
« Baromètre 2012 du Développement Logiciel »Etude Borland – MicroFocus novembre 2012
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 25
Points importants de l’ALM
Classez du plus important au moins important de (1 à 7) les thèmes qui selon vous caractérisent le mieux la démarche ALM
« Baromètre 2012 du Développement Logiciel »Etude Borland – MicroFocus novembre 2012
(700 points possibles)1er (618 points)
2ème (605 points)
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 26
2ème (605 points)
3ème (560 points)
1 - Génie logiciel – Introduction
2 - ALM (Application Lifecycle Management)
3 - SCM (Source Code Management)
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 27
4 - Maven
5 - Intégration continue et qualité logicielle
6 - Génération de code
Notion de SCM
Revision control
Version control
Source Control
Management
Source Code
SCM ?
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 28
Source control
Source Code
Management
Supply
Chain Management
Software Configuration
Management
Rien à voir !
• Quelques outils :
SCM
Software Configuration
Management
Source Control
Management
���� PVCS���� CVS� Visual Source Safe
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 29
���� Perforce���� ClearCase
� Visual Source Safe� Subversion ***� BitKeeper� Git ***���� Mercurial Plus complet :
Gestion des demandes d’évolution,Liaison demande – modifications réaliséesGestion des sources uniquement
(fichiers en tous genres)
Subversion
FSFS
Client Interface Repository Interface
GUI client apps
ClientLibrary
Repositoryaccess
DAV
Apache
mod_dav
mod_dav_svn
Internet(Any TCP/IP Network)
TortoiseSVN
Subversive
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 30
Berkley DB
SubversionRepository
Command lineclient apps
Library
Working Copy Management
Library
SVN
Local
svnserve
(Any TCP/IP Network)
WebClient for SVN
Client Serveur
• Différents protocoles :
• file:// – Direct repository access to local or network drive.
• http:// – Access via WebDAV protocol to Subversion-aware Apache server.
• https://
Subversion
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 31
– 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.
• Chaque commit produit un nouveau numéro de révision• Un commit sur Subversion est comparable à une transaction
sur une base de données
Subversion
10
0 1 2 3 4
2 3 4
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 32
1
1
1
1
1
1
1
1
2
2
1
1
1
1
3
2
3
3
4
4
1
1
3
2
3
3
Subversion – Checkout & Commit
Référentiel
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 33
Copie de travail« working copy »
« Commit »Validation des modifications
Subversion - Conflits
Harry doit mettre à jour sa copie de travail pour y intégrer les modifications déjà commitées
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 34
Échec du commit“working copy out of date”
Subversion / Système d’exploitation
En ligne de commande
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 35
Dans l’explorateur de fichiers
Subversion / IDE
Navigation dansle repository
Exemple :Eclipse + Subclipse
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 36
Visibilité surles différentes révisions
Commandessubversion
Subversion / IDE
Accès à tout l’historique � comparaison de deux révisions
Révision courante( workspace )
Révision 30 ( repository )
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 37
Subversion / Internet
Exemple : Google codeNavigateur
Serveur
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 38
SubversionRepository
• Organisation standard de l’arborescence
Subversion - Arborescence
« trunk »
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 39
« tags »
« branches »
• Les « tags » pour fixer les « releases »
Subversion - Arborescence
Project 1
Root
trunkLe « tag » est une copie
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 40
tags
Release x.x.x
Le « tag » est une copiedes sources à un instant T
Ex : release 2.1.4
• Les « branches » pour travailler en parallèle
Subversion - Arborescence
Feature 2
Main line
Feature 1(new UI)
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 41
Feature 2(multilingualism)
Il va falloir faire un « merge »Après le « merge » les branches n’ontplus de raison d’être
• 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
GIT
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 42
• Progression importante depuis 2010( notamment grâce à GitHub : https://github.com/ )
1 - Génie logiciel – Introduction
2 - ALM (Application Lifecycle Management)
3 - SCM (Source Code Management)
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 43
4 - Maven
5 - Intégration continue et qualité logicielle
6 - Génération de code
• 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 »
Maven
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 44
– 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 » )
• Maven repose sur des conventionsprincipe de « Convention over Configuration » ( CoC )
• Répertoires
Maven
src/main/javasrc/main/resourcessrc/main/webappsrc/test/javasrc/test/resources
Application
Tests
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 45
• Identification des « artifacts » (objet utilisé ou produit par le build)
src/test/resources
Produit
Utilisé
(dépendance)
Maven – Cycle de vie du « build »
validate
initialize
process-sources
generate-sources
process-test-sources
generate-test-sources
process-test-resources
generate-test-resources
pre-integration-test
integration-test
post-integration-test
Code source
23 phases
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 46
process-sources
process-sources
generate-resources
compile
process-classes
test-compile
test
prepare-package
package
verify
install
deploy
process-test-classes
Maven – Plugins
Maven a été conçu pour déléguer les traitements à un jeu de
« plugins » associés aux différentes phases.
compilecompiler
test-compile
pom.xml
PluginsPhases
Goalscompile
testCompile
Pour chaque plugin :
1 à N « goals »
test
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 47
surefire
jar
test-compile
test
package
Les plugins sont associés aux phases dans le fichier pom.xml
jar
testJar
javadoc javadoc
aggregateinstall
ejb
etc...
test
ejb
install
• On invoque Maven en lui indiquant jusqu’à quelle phase il doit exécuter les traitements
• Exemples :
Maven - Commandes
mvn compile
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 48
mvn install
• Il est également possible de demander l’exécution d’un « goal » particulier
• Syntaxe :mvn plugin_name : goal_name
• Exemples :
Maven - Commandes
mvn compiler:compilemvn jar:jar
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 49
• Dans ce cas seul le goal demandé est exécuté
mvn jar:jarmvn ejb:ejbmvn surefire:testmvn deploy:deploymvn sonar:sonar
Maven – Autres cycles de vie
pre-site
site
pre-clean
clean
Cycle de vie « clean » Cycle de vie « site »
Nettoyage Génération du site web
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 50
site
site-deploy
post-site
clean
post-clean
mvn cleanmvn post-clean
mvn sitemvn pre-site
Maven / IDE
Editeur pour le pom.xml
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 51
Maven / IDE
Gestion des dépendances à partir du pom.xml
Commandes intégrées
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 52
Configurationde « .launch »
1 - Génie logiciel – Introduction
2 - ALM (Application Lifecycle Management)
3 - SCM (Source Code Management)
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 53
4 - Maven
5 - Intégration continue et qualité logicielle
6 - Génération de code
Avant l’intégration continue …
• Des phases bien séparées (trop séparées)
Développement Intégration
(tests d’intégration)
Livraison
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 54
Temps
Mais ça c’était avant …
Intégration continue
http://www.martinfowler.com/articles/continuousIntegration.html
• 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égrationle plus tôt possible.
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 55
L'intégration continue est le principe de
faire d'un processus d'intégration logiciel
un «non-évènement».
• 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
Intégration continue - Outillage
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 56
immédiatement le problème• Autres fonctions de l’outil :
– surveillance de la qualité du code – métriques de couverture de test – etc…
• L’outil d’Intégration Continue devient un outil de communication
� transparence & management visuel
Objectifs :. maintenir la « dette technique »au niveau le plus bas possible. donner de la visibilité aux indicateurs de qualité (motiver les développeurs)
• Solutions d’intégration continue :– CruiseControl ( SourceForge )
– Bamboo (Atlassian)– Hudson ( repris pas Oracle)– Jenkins ( fork de Hudson, désaccord du créateur avec Oracle )
Intégration continue - Outillage
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 57
Application Java/web (.war)
• Il faut indiquer à Jenkins où se trouvent les sources
Jenkins
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 58
SCM au choix :. CVS . Subversion. Git
Vue d’ensemble
Apports
• Intégration et détection des régressions au fil de l’eau
• Mise à disposition de versions de test
• Production quotidienne de métriques
• Coaching technique
Poste de Développement
CheckStyle Corbertura
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 59
• Coaching technique obligatoire
Automate de Fabrication
RéférentielUnique desSources etComposants
Plugins MAVENCheckStyle, Cobertura, CPD, PMD JavaDOC JDepend, SureFire, XRef
• Rappel : l’application a un cycle de vie
• Elle doit avoir un niveau de qualité suffisant pour évoluer pendant des années
Qualité
Pensez à celui qui va devoir reprendre le code !
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 60
Pensez à celui qui va devoir reprendre le code !
• Un tableau de bord pour une vue globale (multi-projets)
Sonar
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 61
• Un tableau de bord pour chaque projet …
Sonar
Règles non respectées
Compteurs(lignes, classes,.. )
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 62
Complexité cyclomatique(McCabe)
Taux de couverture du code par les tests unitaires
• Suivi de la qualité du code dans le temps
Sonar
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 63
1 - Génie logiciel – Introduction
2 - ALM (Application Lifecycle Management)
3 - SCM (Source Code Management)
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 64
4 - Maven
5 - Intégration continue et qualité logicielle
6 - Génération de code
• 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
Approche « Model First »
MODELService
name X M I
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 65
Code
Part
name
Message
name
0..n+part 0..n
Portname
0..n+port 0..nPort Type
nameBinding
name1
+binding
1
1
+type
1
Paramname
1+message 1
Output
Input
StartWithExtensions
BindingFaultFault
name1
+message
11
BindingOperation
name
0..n+operation 0..n0..1 +input0..10..1+output 0..1
0..n
Operation
name0..1
+input
0..10..1
+output0..1
0..n+fault 0..n
0..n+operation 0..n
11
1
+fault 0..n
X M I( XML )
TemplateTOOL
• Scaffolding de type « Database - First »• Très efficace ( rapide )• Mais pas d’action possible sur l’outil
de génération • Pas assez d’informations :-(
– Noms/types des attributs Java – Règles de validation : min, max, regexp, …
Approche « scaffolding »
Database
TOOL
Metadata
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 66
– Règles de validation : min, max, regexp, …– Représentation des Booléens
(1/0, "T"/"F", … )– etc …
• Il faudrait ajouter (et conserver) des informations complémentaires… … un modèle ?
Code
Template
• 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
Approche « scaffolding + modèle léger »
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 67
• Démo avec « Telosys Tools » ( plugin Eclipse )
Génération de code
http://marketplace.eclipse.org/content/telosys-tools
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 68
Annexes
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 69
Publications Sogeti
� http://www.fr.sogeti.com/presse-et-publications/nos-publications
� WORLD QUALITY REPORT
"The World Quality Report 2012-2013" est le quatrième volet d'une série d'enquêtes annuelles qui examinent l'état de la qualité des applications et des pratiques de test dans toutes les industries.
� Tmap NEXT
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 70
� Tmap NEXT
L'approche de TMap Next’s Business Driven Test Management (BDTM) offre aux managers une panoplie d'outils de test pour traduire les objectifs d'affaires des systèmes d'information 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 test
Livres au format PDF (téléchargement libre)
Top Related