35
TRAVAUX PERSONNELS ENCADRÉS SUPERVISEUR: HO TUONG VINH ÉTUDIANT: NGUYEN QUOC KHAI Étude & Implémentation d’une plateforme pour intégration continue dans le développement de logiciels 1 7/14/15 NGUYEN QUOC KHAI P19

Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

TRAVAUX  PERSONNELS  ENCADRÉS

SUPERVISEUR:  HO  TUONG VINH

ÉTUDIANT:  NGUYEN  QUOC  KHAI

Étude  &  Implémentationd’une  plateforme

pour  intégration  continuedans  le  développement  de  logiciels

17/14/15 NGUYEN  QUOC KHAI -­‐ P19

Page 2: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Sommaire

1. Contexte

2. Problématique

3. Intégration  Continue

4. Modèle  proposé

5. Expérimentation

6. Conclusion  &  Perspectives

7/14/15 NGUYEN  QUOC KHAI -­‐ P19 2

Page 3: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Intégration  Continue

1. Contexte

2. Problématique

3. Intégration  Continue

4. Modèle  proposé

5. Expérimentation

6. Conclusion  &  Perspectives

7/14/15 NGUYEN  QUOC KHAI -­‐ P19 3

Page 4: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Contexte  – Développement  de  logiciels

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 4

oMéthode traditionnelne peut pas satisfaire les exigences des projets de développement actuel.

oL’efficacité des projets sont souvent faible.

oLes projets sont souvent en retard, dépassé le budget,…

oLe coûte de la maintenance est plus élevé que le coûte de développement.

Page 5: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Contexte  -­‐ Enquête  de  CHAOS  en  2014

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 5

• 16% logiciels sont succès, livrés à temps, lebudget, et satisfait des exigences

• 52% logiciels sont en retard, dépassé lebudget,…

• 32% logiciels sont échec!

Succeed,  16%

Challenged,  52%

Failed,  32%

Source:  http://www.projectsmart.co.uk/docs/chaos-­‐report.pdf

Page 6: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Contexte  – Problèmes  de  développement  de  logiciels

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 6

ØPourquoi  est-­‐il  si  long  pour  développement  un  système  informatique?

ØPourquoi  les  coûts  de  développement  sont-­‐ils  si  élevés?

ØPourquoi  ne  trouve-­‐t-­‐on  pas  tous  les  bogues  avant  la  livraison  du  système?

ØComment  peut-­‐on  mesurer  la  progression  du  développement?

ØComment  survivre  avec  cette  mondialisation  des  marchés?

Page 7: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Intégration  Continue

1. Contexte

2. Problématique

3. Intégration  Continue

4. Modèle  proposé

5. Expérimentation

6. Conclusion  &  Perspectives

7/14/15 NGUYEN  QUOC KHAI -­‐ P19 7

Page 8: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Problématique  – Histoire  d’un  build  cassé  (1/5)

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 8

LUNDI  SOIR

Richard  – un  développeur  dans  un  l’équipe  de  développement:

o Finir  un   tâche  importante  du  projet

o Exécuter  le  build  local  et  les  tests  unitaires

o Commettre  ses  modifications  du  CVS

o Rentre  à  la  maison  et  fier  de  son   travail  !!!

Page 9: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Problématique  – Histoire  d’un  build  cassé  (2/5)

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 9

MARDI  MARTIN  – 9H15Sandeep,  Jason,  Eric et  Chris  – les  membres  dans  le  même  groupe  avec  Richard:oMettre  à  jour  CVS  pour  s’intégrer  avec  le  nouveau  code  du  Richardo Lancer  son  build   localo Attendrons  de  voir  “BUILD  SUCCESSFUL”  …o…  mais  ils  voient:

Page 10: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Problématique  – Histoire  d’un  build  cassé  (3/5)

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 10

PROBLÈME  ???

o Le  build  est  cassé,  car  Richard  a  oublié  d’ajouter  une  nouvelle  bibliothèque   du  3ème  partie

oMais,  Richard  est  hors  du  bureau  et  il  va  revenir  à  13  heures  !!!

Page 11: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Problématique  – Histoire  d’un  build  cassé  (4/5)

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 11

CONSÉQUENCES

◦ Sandeep,   Jason,  Eric et  Chris  ne  peuvent  pas  travailler  jusqu’à  13  heures   lorque Richard  arrive  et  soumet  le  lib  manquant!

◦ Les  gens  sont  libre  dans  4  heures  (ils  ne  travaillent  pas!)

◦ 5  QA  ne  peuvent  tester  les  nouvelles   fonctions   jusqu’à  14  heures.

Page 12: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Problématique  – Histoire  d’un  build  cassé  (5/5)

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 12

RÉSULTAT  DU  SEUL  BUILD  CASSÉ

oAgent: 45  heures-­‐homme   ~  $4.500

o Temps: Projet  est  glissé  5  heures  sur  la  linge  de  temps  ($100.000  d’amande  par  un  jour  de  retard)

o Équipe:@#$%$%%!!!

Page 13: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Intégration  Continue

1. Contexte

2. Problématique

3. Intégration  Continue

4. Modèle  proposé

5. Expérimentation

6. Conclusion  &  Perspectives

7/14/15 NGUYEN  QUOC KHAI -­‐ P19 13

Page 14: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Intégration  Continue  (1/4)oUn des pratiques d’Agile.

oPeut-­‐être appliquer séparément

oL’idée principalede l’intégration continue:ØLes programmeurs dans une équipe vont intégrerleurs code plusieurs fois par jour.

ØChaque intégration va vérifier par un automatiquebuild pour détecter les erreurs le plus rapidementpossible.

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 14

Page 15: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Intégration  Continue  (2/4)

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 15

« Continuous Integration is a software development practice wheremembers of a team integrate their work frequently, usually each personintegrates at least daily -­‐ leading to multiple integrations per day. Eachintegration is verified by an automated build (including test) to detectintegration errors as quickly as possible. Many teams find that thisapproach leads to significantly reduced integration problems and allows ateam to develop cohesive software more rapidly. »

<Martin  Fowler,  Continuous  Integration,  2000>

Page 16: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Intégration  Continue  (3/4)

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 16

1. Développeur commettre son code vers uncontrôle de code source.

2. CI système prend le code source, fait lebuild automatique

3. CI système lance des tests de la façonautomatiquement.

4. Le résultat des tests et aussi le statu duprojet va annoncer au l’équipe.

Source:  http://www.meranetworks.com/services/processes/integration

Page 17: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Intégration  Continue  (4/4)

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 17

Source:  https://blog.sei.cmu.edu/post.cfm/continuous-­‐integration-­‐in-­‐devops

Page 18: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

CI  – 11  pratiques  de  l’intégration  continue

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 18

1. Maintenir tous les code sources dans un référentiel unique

2. Automatiser le build

3. Rendre le build autotestant

4. Tout le monde commet à la main-­‐line chaque jour

5. Chaque commettre devrait construire la main-­‐line sur une machine d’intégration

6. Fixer les builds cassés immédiatement

7. Maintenir le build rapide

8. Tester dans un environnement qui est une copie de la production

9. Assurer qu’il est facile pour quiconque d’obtenir le dernière exécutable

10. Tout le mondepeut voir ce qu'il se passe

11. Automatiser le déploiement

Page 19: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

CI  – Avantages  de  l’intégration  continue

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 19

La plupart des projets de logiciels échouent parce qu'ils sont en retard, dépassent le budget, ousont incapables de répondre aux exigences. L’intégration continue permet de:

o Savoir où nous sommes. Ce qui fonctionne, ce qui ne fonctionnepas et combien de bogues

o Réduire le temps pour détecter des erreurs et leurs fixer

o Réduire le glissement de calendrier

o Réduire le temps de développement et de frapper le marché avant que les concurrents

o Ajouter plus de fonctionnalités rapidement, donner un feedback rapide

Page 20: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

CI  – Outils

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 20

Category Open Source  Outils ComercialOutils

CI  Server Jenkins – Hudon – Cruise  Control TeamCity – Bamboo – TFS

Source  Code  Repository Subversion –Github Polytron – Version  Control

Build  Tools Maven -­‐ Ant MSBuild

Unit Testing TestNG – Junit – NUnit JTest

Functional  Testing Selenium – Watir Quick  Test – Silk  Test

Issue Tracking SonarQube – Bugzilla Quality – Center

Security Testing RatProxy – WebScarab AppScan – WebInspect

Static Code  Analysis FindBugs – PMD – CheckStyle Fortify Source  Code  Analyzer

Page 21: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Intégration  Continue

1. Contexte

2. Problématique

3. Intégration  Continue

4. Modèle  proposé

5. Expérimentation

6. Conclusion  &  Perspectives

7/14/15 NGUYEN  QUOC KHAI -­‐ P19 21

Page 22: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Modèle  proposé  – Plateforme de  Jordi  Cuenca-­‐Aubets

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 22

Souce:  http://www.sonatype.org/nexus/2015/03/20/free-­‐continuous-­‐integration-­‐platform-­‐at-­‐a-­‐glance/

Page 23: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Modèle  proposé  (1/3)

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 23

Page 24: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Modèle  proposé  (2/3)

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 24

Page 25: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Modèle  proposé  (3/3)oAvec le rôle de développeur, on utiliseNetBeans pour réaliser un projet un utilisant lalangage Java. De plus, on utilise TestNG pour lestests unitaires, Maven pour la gestion etl’automatisation deproduction deprojet.

oAvec le rôle de serveur, on va installer desservices comme: Jenkins, Subversion, ApacheTomcat, Sonarqube…

oPour la notification automatique, on utilisel’émail.

14/07/2015 NGUYEN  QUOC KHAI -­‐ P19 25

Page 26: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Modèle  proposé  – Comme  ça  marche?

14/07/2015 NGUYEN  QUOC KHAI -­‐ P19 26

oÉtape 1: Le développeur prend le code source de serveur vers Subversion. Ensuite, il va modifierquelques choses ou développer une nouvelle fonction, réaliser un tâche, … Après cela, il vacommettre son modifié au serveur.

oÉtape 2: Subversion gère tous les fichiers du projet et aussi des changements.

oÉtape 3: Jenkins prend le code soude vers Subversion. Il fait un build et lance aussi des testsunitaires. S’il y a des erreurs, Jenkins va annoncer aux tous les membres du projet. Jenkins faitaussi le lien avec SonarQubequi va analyser la qualité de code source.

oÉtape 4: Après avoir lancé le projet, Jenkins va envoyer un émail au l’équipe de développementpour leurs informer de l’état du projet.

Page 27: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Intégration  Continue

1. Contexte

2. Problématique

3. Intégration  Continue

4. Modèle  proposé

5. Expérimentation

6. Conclusion  &  Perspectives

7/14/15 NGUYEN  QUOC KHAI -­‐ P19 27

Page 28: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Expérimentation  -­‐ Subversion

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 28

Page 29: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Expérimentation  -­‐ Jenkins

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 29

Page 30: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Expérimentation  -­‐ SonarQube

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 30

Page 31: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Intégration  Continue

1. Contexte

2. Problématique

3. Intégration  Continue

4. Modèle  proposé

5. Expérimentation

6. Conclusion  &  Perspectives

7/14/15 NGUYEN  QUOC KHAI -­‐ P19 31

Page 32: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Conclusion  &  PerspectivesNous  avons  atteint  les  objectifs  assignés  au  départ  pour  ce  travail:

oÉtudier  l’intégration  continue

oProposer  une  conception  pour  une  plateforme  d’intégration  continue

oImplémenter  cette  conception

Dans  l’avenir,  on  va  continuer  de  développer  cette  plateforme  pour:

oAppliquer  dans  la  réalité

oCréer    et  lancer  des  tests  fonctions  automatique

oAjouter  des  autres  outils  comme:  RedMine,  Nexus,  OpenDJ,  …

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 32

Page 33: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Références[1].Martin Fowler, Continuous Integration, 05-­‐2006

[2]. Jordi Cuenca-­‐Aubets, Free Continuous Integration Platform at a Glance, 03-­‐2015

[3]. Preetam Palwe, Aftek Limited, Continuous Intergration: Improving Software Quality and ReducingRisk

[4]. Lasitha Ishan Petthawadu, Configure Jenkins with SonarQube for static code analysis andintegration, 05-­‐2014

[5]. C. Aaron Cois, Continuous Integration in DevOps, 01-­‐2015

[6]. Slava Imeshev, Continuous Integration – Benefits, Challenges and Best Practices, 07-­‐2006

[7]. Chistian Rehn, Continuous Integration: Aspects in Automation and Configuration Management, 02-­‐2012

[8]. Thomas Stiehm and Gene Gotimer, Building Security In Using Continuous Integration, 2010.

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 33

Page 34: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

RemerciementsJe tiens à exprimer ma profonde gratitude et mes sincèresremerciements à mon encadreur Monsieur HO Tuong Vinhpour tout le temps qu'il m’a consacré, leur directiveprécieuse, et pour la qualité de leur suivi tout au long de laréalisation de ce travail.

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 34

Page 35: Étude’&’Implémentation d’une’plateforme pour ... · Intégration’Continue(2/4) 7/14/15 NGUYENQUOC+KHAI+3 P19 15 « Continuous Integration is a software development practice

Merci  de  votre  aimable  attention  !!!

7/14/15 NGUYEN  QUOC  KHAI  -­‐ P19 35