123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- \section{Développement d'un logiciel}
- \begin{frame}{\large \insertsection}
- \begin{block}{Méthode pour écrire du code}
- \begin{itemize}
- \item comprendre le travail à faire (fonctionnalité/classe à implémenter)
- \item découper en étapes et les ordonner
- \item implémenter (coder, compiler, tester) étape par étape
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Conseils sur le développement en équipe}
- \begin{itemize}
- \item faire le point régulièrement : travail fait, travail à faire
- \item répartir le travail de façon à éviter les conflits (fichiers différents)
- \item commits réguliers, branches si nécessaire
- \item faire attention à respecter le cahier des charges et la conception
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Programmation en binômes}
- \begin{itemize}
- \item principe :
- \begin{itemize}
- \item un secrétaire + un relecteur \textbf{sur une même machine}
- \item les deux participent activement
- \item changer les rôles fréquemment
- \end{itemize}
- \item intérêts :
- \begin{itemize}
- \item moins d'erreurs
- \item réflexions complémentaires
- \item motivation, convivialité (ou pas, mais bon…)
- \end{itemize}
- \item[$\rightarrow$] à utiliser quand le travail n'est pas complètement trivial
- \\(donc tout le temps pour les projets L3)
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Tests unitaires}
- \begin{itemize}
- \item souvent : test "avec un printf" $\rightarrow$ pas bien
- \item principe des tests unitaires :
- \begin{itemize}
- \item écrire des petites fonctions de test en même temps que le code
- \item compiler toutes les fonctions de test dans un programme de test
- \item exécuter le programme de test
- \item vérification et non-régression automatiques
- \item attention : détection d'erreurs $\neq$ preuve
- \end{itemize}
- \item[$\rightarrow$] à utiliser pour les modules de base (traitement de données) voire plus
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Programmation par pseudo-code}
- \begin{itemize}
- \item principe :
- \begin{itemize}
- \item commencer par écrire le pseudo-code de l'algo en commentaire
- \item traduire chaque ligne de pseudo-code en code réel
- \item laisser le pseudo-code en commentaire
- \end{itemize}
- \item intérêt :
- \begin{itemize}
- \item code plus facile à écrire
- \item code plus facile à relire
- \end{itemize}
- \item[$\rightarrow$] très utile quand le code à écrire n'est pas trivial
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Gestion d'erreurs}
- \begin{itemize}
- \item assertions
- \item logs
- \item codes de retour, variables d'état
- \item exceptions
- \item[$\rightarrow$] problème difficile
- \item[$\rightarrow$] se mettre d'accord sur la façon de faire au début du projet
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Conventions de code}
- \begin{itemize}
- \item formatage du code, nommage des variables…
- \item conventions à définir et à respecter au niveau du projet
- \item permet d'avoir un code plus facile à lire
- \item utiliser des conventions classiques ou les expliciter dans la documentation
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Exemple de conventions de code C++}
- \begin{itemize}
- \item notation dromadaire
- \item un nom de classe commence par une majuscule : \\
- \mintinline{c++}{class Event ... }
- \item préfixe \mintinline{c++}{_} pour les attributs : \\
- \mintinline{c++}{std::string _summary;}
- \item préfixe \mintinline{c++}{ptr} pour les pointeurs : \\
- \mintinline{c++}{icalcomponent * _ptrIcal;}
- \item un nom de fonction commence par un verbe : \\
- \mintinline{c++}{void updateDataFromIcal();} \\
- \mintinline{c++}{icalcomponent * getPtrIcal() const;}
- \item maximum 80 caractères par ligne
- \item …
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Quelques outils de développement à décider}
- \begin{itemize}
- \item langages, bibliothèques…
- \item outils de compilation, test, déploiement
- \item outils de gestion de code source (svn, git…)
- \item outils de gestion de projets (redmine, trac, github, sourceforge…)
- \end{itemize}
- \end{block}
- \end{frame}
|