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 » :
« l'ensemble 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 tunnel
Cahier des
charges 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 Avancement
pations vision utilisateur développements
qualité tant d’un Reste à faire
• S’assurer que • Points de
point de vue Planification
MOA / 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
12. ALM
• ALM = « Application Lifecycle Management »
processus global de gestion du cycle de vie de l'application
• 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-fonctions
Idéalement…
Des Des
Productivité Guides
équipes processus Gestion des risques et des
Collaboration
Partage des connaissances exigences
Gestion de projet Méthodes Agiles
Des
technologies
Interopérables Outillage
Sécurité Performances
Administration …
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 14
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 2012
Parmi 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 2012
Classez du plus important au moins important de (1 à 7) les thèmes qui
selon 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
28. Notion de SCM
SCM ?
Source Control Revision control
Management
Version control
Source Code
Management Source control
Software 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 svnserve
WebClient 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érentiel
Copie 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 out
of 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 / IDE
Exemple :
Eclipse + Subclipse
Navigation dans
le repository
Visibilité sur
les différentes
révisions
Commandes
subversion
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 36
37. Subversion / IDE
Accè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 / Internet
Navigateur 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
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 phases
source
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 – Plugins
Maven 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-deploy
mvn clean mvn site
mvn post-clean mvn pre-site
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 50
51. Maven / IDE
Editeur pour le pom.xml
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 51
52. Maven / IDE
Gestion des dépendances Commandes intégrées
à partir du pom.xml
Configuration
de « .launch »
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 52
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
L'intégration continue est le principe de
faire d'un processus d'inté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’eau
Poste de Développement • Mise à disposition de
versions de test
• Production
quotidienne de
métriques
• Coaching technique
obligatoire
Automate 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ées
Complexité
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
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
70. 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
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)
Génie Logiciel ( Laurent Guérin - Février 2013 ) | 70