section_developpement.tex 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. \section{Développement d'un logiciel}
  2. \begin{frame}{\large \insertsection}
  3. \begin{block}{Méthode pour écrire du code}
  4. \begin{itemize}
  5. \item comprendre le travail à faire (fonctionnalité/classe à implémenter)
  6. \item découper en étapes et les ordonner
  7. \item implémenter (coder, compiler, tester) étape par étape
  8. \end{itemize}
  9. \end{block}
  10. \end{frame}
  11. \begin{frame}{\large \insertsection}
  12. \begin{block}{Conseils sur le développement en équipe}
  13. \begin{itemize}
  14. \item faire le point régulièrement : travail fait, travail à faire
  15. \item répartir le travail de façon à éviter les conflits (fichiers différents)
  16. \item commits réguliers, branches si nécessaire
  17. \item faire attention à respecter le cahier des charges et la conception
  18. \end{itemize}
  19. \end{block}
  20. \end{frame}
  21. \begin{frame}{\large \insertsection}
  22. \begin{block}{Programmation en binômes}
  23. \begin{itemize}
  24. \item principe :
  25. \begin{itemize}
  26. \item un secrétaire + un relecteur \textbf{sur une même machine}
  27. \item les deux participent activement
  28. \item changer les rôles fréquemment
  29. \end{itemize}
  30. \item intérêts :
  31. \begin{itemize}
  32. \item moins d'erreurs
  33. \item réflexions complémentaires
  34. \item motivation, convivialité (ou pas, mais bon…)
  35. \end{itemize}
  36. \item[$\rightarrow$] à utiliser quand le travail n'est pas complètement trivial
  37. \\(donc tout le temps pour les projets L3)
  38. \end{itemize}
  39. \end{block}
  40. \end{frame}
  41. \begin{frame}{\large \insertsection}
  42. \begin{block}{Tests unitaires}
  43. \begin{itemize}
  44. \item souvent : test "avec un printf" $\rightarrow$ pas bien
  45. \item principe des tests unitaires :
  46. \begin{itemize}
  47. \item écrire des petites fonctions de test en même temps que le code
  48. \item compiler toutes les fonctions de test dans un programme de test
  49. \item exécuter le programme de test
  50. \item vérification et non-régression automatiques
  51. \item attention : détection d'erreurs $\neq$ preuve
  52. \end{itemize}
  53. \item[$\rightarrow$] à utiliser pour les modules de base (traitement de données) voire plus
  54. \end{itemize}
  55. \end{block}
  56. \end{frame}
  57. \begin{frame}{\large \insertsection}
  58. \begin{block}{Programmation par pseudo-code}
  59. \begin{itemize}
  60. \item principe :
  61. \begin{itemize}
  62. \item commencer par écrire le pseudo-code de l'algo en commentaire
  63. \item traduire chaque ligne de pseudo-code en code réel
  64. \item laisser le pseudo-code en commentaire
  65. \end{itemize}
  66. \item intérêt :
  67. \begin{itemize}
  68. \item code plus facile à écrire
  69. \item code plus facile à relire
  70. \end{itemize}
  71. \item[$\rightarrow$] très utile quand le code à écrire n'est pas trivial
  72. \end{itemize}
  73. \end{block}
  74. \end{frame}
  75. \begin{frame}{\large \insertsection}
  76. \begin{block}{Gestion d'erreurs}
  77. \begin{itemize}
  78. \item assertions
  79. \item logs
  80. \item codes de retour, variables d'état
  81. \item exceptions
  82. \item[$\rightarrow$] problème difficile
  83. \item[$\rightarrow$] se mettre d'accord sur la façon de faire au début du projet
  84. \end{itemize}
  85. \end{block}
  86. \end{frame}
  87. \begin{frame}{\large \insertsection}
  88. \begin{block}{Conventions de code}
  89. \begin{itemize}
  90. \item formatage du code, nommage des variables…
  91. \item conventions à définir et à respecter au niveau du projet
  92. \item permet d'avoir un code plus facile à lire
  93. \item utiliser des conventions classiques ou les expliciter dans la documentation
  94. \end{itemize}
  95. \end{block}
  96. \end{frame}
  97. \begin{frame}{\large \insertsection}
  98. \begin{block}{Exemple de conventions de code C++}
  99. \begin{itemize}
  100. \item notation dromadaire
  101. \item un nom de classe commence par une majuscule : \\
  102. \mintinline{c++}{class Event ... }
  103. \item préfixe \mintinline{c++}{_} pour les attributs : \\
  104. \mintinline{c++}{std::string _summary;}
  105. \item préfixe \mintinline{c++}{ptr} pour les pointeurs : \\
  106. \mintinline{c++}{icalcomponent * _ptrIcal;}
  107. \item un nom de fonction commence par un verbe : \\
  108. \mintinline{c++}{void updateDataFromIcal();} \\
  109. \mintinline{c++}{icalcomponent * getPtrIcal() const;}
  110. \item maximum 80 caractères par ligne
  111. \item …
  112. \end{itemize}
  113. \end{block}
  114. \end{frame}
  115. \begin{frame}{\large \insertsection}
  116. \begin{block}{Quelques outils de développement à décider}
  117. \begin{itemize}
  118. \item langages, bibliothèques…
  119. \item outils de compilation, test, déploiement
  120. \item outils de gestion de code source (svn, git…)
  121. \item outils de gestion de projets (redmine, trac, github, sourceforge…)
  122. \end{itemize}
  123. \end{block}
  124. \end{frame}