Genie logiciel eseo-v1.1-1spp

Post on 14-Jun-2015

1.410 views 1 download

description

Conférence ESEO Février 2013

Transcript of Genie logiciel eseo-v1.1-1spp

E S E O - Angers

Génie Logiciel,

ALM et outillage

E S E O - AngersMardi 19 février 2013Laurent Guérin

laurent.guerin@sogeti.com

@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)