La qualité au-delà du code - ConFoo 2012

Preview:

DESCRIPTION

Les cycles de développement des applications raccourcissent de plus en plus. La pression se fait plus forte sur les équipes de développement qui sont poussées à développer en mode mercenaire, où seul le résultat immédiat compte. Cette vision est généralement contre-productive sur le long-terme car on passe beaucoup plus de temps à maintenir une application qu'à la développer. Il est donc primordial de s'assurer de sa qualité au delà de l'adéquation avec le besoin fonctionnel.Cela passe par de nombreux éléments dont bien entendu la qualité du code source mais pas seulement. La présence de documentations pertinentes et à jour, les types et l'étendue des tests mis en place, l'architecture de l'application ou encore sa portabilité sont autant de facteurs clés du succès d'un projet.

Citation preview

1

La qualité au-delà du codeConFoo 2012

Passionné de web depuis 1996, de PHP depuis 2000 et de musique depuis 1977

Jean-Marc Fontaine

‣ Consultant PHP chez Alter Way‣ Ex-Président de l’AFUP‣ Co-Auteur du livre blanc

«Industrialisation PHP»‣ Auteur du blog

industrialisation-php.com

2

3

La qualité au-delà du code

4

“C'est seulement quand l'hiver est arrivé qu'on s'aperçoit que le pin et le cyprès perdent leurs feuilles après tous les autres arbres”

Confucius

5

70%Environ 70% du temps consacré à un applicatif l’est dans sa maintenance

6

Compréhensibilité 1Cohérence 2Exhaustivité 3Concision 4

Portabilité 5Testabilité 6Fiabilité 7Maintenabilité 8

7

Compréhensibilité

8

DocumentationLa documentation doit être de qualité, exhaustive et à jour

9

CommentairesLes commentaires doivent compléter le code pas le paraphraser

10

ComplexibilitéToute chose devrait être rendue aussi simple que possible, mais pas plus. - Albert Einstein

11

Mise en forme du codeFaire en sorte que la forme ne vienne pas perturber la compréhension du fond

12

Cohérence

13

NommageLe nommage des éléments doit être logique, cohérent et pertinent

14

DocumentationLe style et la langue de la documentation doivent être uniformes d’un bout à l’autre

15

Mise en forme du codeL’ensemble du code doit suivre les règles de codage. Pas d’exception !

16

Exhaustivité

17

Application complèteL’application est-elle totalement fonctionnelle ?

18

Eléments temporairesLes éléments temporaires doivent être absent de la version finale

19

Interfaces externesEst-ce que les interfaces externes sont disponibles ?

20

DonnéesEst-ce que les données nécessaires sont présentes ?

21

Concision

22

23

DocumentationLa documentation doit être complète mais éviter les longueurs inutiles

24

LibrariesChaque librairie présente doit avoir son utilité

25

Code mortLe code mort augmente inutilement la taille de l’application

26

Code dupliquéLe code dupliqué doit être factorisé pour simplifier sa maintenance

27

Portabilité

28

Nouveaux environnementsLa configuration de l’application doit permettre de la déployer facilement sur de nouveaux environnements

29

Dépendances logiciellesAvoir un minimum de dépendances logicielles permet de diffuser plus largement son application

30

Testabilité

31

Critères d’acceptationPour tester une application il faut connaître les critères d’acceptation du client

32

Séparation des responsabilitésUne application dont les responsabilités sont clairement séparées pourra évoluer plus facilement

33

Code testableUn code fonctionnel n’est pas forcément un code testable

L’injection de dépendance permet de découpler le codeInjection de dépendance

34

Il existe de nombreux types de tests qui sont plus ou moins adapté au contexte d’une application

35

Types de test

‣ Tests unitaires‣ Tests fonctionnels‣ Tests de charge‣ Tests de sécurité

36

Fiabilité

37

Tolérance aux erreursUne application ne devrait pas être indisponible dès que survient un problème mineur

38

Mode dégradéUn service réduit est mieux que pas de service du tout

39

SécuritéQuelque soit le domaine économique, la sécurité est un enjeu important pour une application

40

Maintenabilité

41

Installation / Mise à jourL’installation et la mise à jour d’une application doit être le plus simple possible

42

LogsUn système de logs permet de comprendre la vie interne de l’application

43

DébogageIl faut éviter les pratiques compliquant le débogage de l’application

44

Compréhensibilité 1Cohérence 2Exhaustivité 3Concision 4

Portabilité 5Testabilité 6Fiabilité 7Maintenabilité 8

45

Merci !

‣ Commentaires et slides : https://joind.in/5966‣ Blog : http://www.industrialisation-php.com/‣ Twitter : @jmfontaine / @indusphp‣ Email : jean-marc.fontaine@alterway.fr

Les photos et illustrations suivantes ont été utilisées dans cette présentation. Merci à leurs auteurs !

46

Crédits photographiques

‣ https://secure.flickr.com/photos/jorgempf/17271202/

‣ https://secure.flickr.com/photos/26053177@N03/4503264891/

‣ https://secure.flickr.com/photos/irisslootheer/4359044679/

‣ https://secure.flickr.com/photos/marcovdz/4520986339/

‣ https://secure.flickr.com/photos/houseofantiquehardware/5183160228/

‣ http://geekandpoke.typepad.com/geekandpoke/2010/01/documentation-is-key.html

‣ https://secure.flickr.com/photos/daimlerag/6640914329/

‣ https://secure.flickr.com/photos/cglosli/3296946161/

‣ https://secure.flickr.com/photos/44442915@N00/4371880134/