DÉVELOPPEMENT DE LOGICIELS D’ENTREPRISES IICOURS 01
PLAN▸ Présentation
▸ Plan de cours
▸ Méthodologie et outils du cours
▸ Agile
▸ Git
▸ TP 1 - Analyse de devis 🤓
▸ Configuration des outils et des équipes
▸ Accueil des 1ère année: 28 septembre, 12h30 à 18h30
Présentation
PRÉSENTATION▸ James Hoffman 💻 📚 🏃 🎮 🏍 🏕 👷
▸ MIO ou [email protected]
▸ Bureau: 1131A
▸ Ressources du cours: https://jh.shawinigan.info
▸ À votre tour! 🙂
▸ Qui était en stage?
▸ Qu’est-ce qui a occupé votre été?
Plan de cours
PLAN DE COURS▸ 420-B7B-SW
▸ https://jh.shawinigan.info/sessions/2018A/B7B/420-B7B-SW.pdf
▸ Pondération 2 - 3 - 2
▸ Complément de formation en programmation qui vise à assurer le développement et la mise en œuvre d’une application à partir d’un devis client en exploitant la technologie des bases de données relationnelles.
▸ Analyse et planification → Prototypage → Code → Documentation → Livraison
2h Théorie 3h Lab/Pratique 2h À la maison
COMPÉTENCES▸ Concevoir et développer une application dans un environnement de base de
données
▸ Analyse d’un devis
▸ Programmation
▸ Interaction avec une base de données relationnel
▸ Produire une interface utilisateur
▸ Prototypage
▸ Implémentation de l’interface et de l’expérience utilisateur
APPRENTISSAGES ET CONTENUS ESSENTIELS
ÉVALUATIONS
VARIA▸ Tout retard à la remise d’un travail entraîne une pénalité de 25% par jour de
retard à partir de la date de remise.
▸ Les présences seront prises au début de chaque cours.
▸ Vous êtes responsable de votre réussite, je suis là pour vous guider et vous aider dans votre apprentissage.
▸ Matériel requis
▸ Écouteurs
Agile
MÉTHODOLOGIE AGILE?▸ Description d’un ensemble de principes et recommandations à appliquer
dans un contexte de développement logiciel dans le but de faciliter et favoriser le travail d’équipe collaboratif et organisé.
▸ Agile?
▸ Planification dynamique, s’adaptant aux changements
▸ Développement itératif et évolutif
▸ Livraison rapide pour une rétroaction rapide
▸ Réponse favorable aux changements
POURQUOI AGILE?
▸ Toutefois, on s’est rendu compte que cette mentalité provenant d’un contexte de fabrication matérielle n’était pas adapté au domaine abstrait et malléable du logiciel
▸ Dès les années 60, les premières méthodes itératives/incrémentales commencent à apparaître
▸ En 2001, le Manifeste Agile est publiéhttp://agilemanifesto.org/
‣ Initialement, les projets de développements logiciel utilisaient la même approche que les secteurs manufacturier et de la construction, un milieu où les changements tardif sont très coûteux, voire impossibles!
CASCADE VS. AGILEChangements Changements Changements
CASCADE VS. AGILE
MANIFESTO▸ Individuals and Interactions over processes and tools
Environnement auto-organisé favorisant la motivation, valorisation et implication des membres d’une équipe multifonctionnelle
▸ Working Software over comprehensive documentation Alléger les artéfacts et mettre l’accent sur un produit fonctionnel accélère le cycle rétroaction -> réaction
▸ Customer Collaboration over contract negotiationIl est très difficile de définir l’ensembles des exigences/besoins dès le départ, le client doit être un partenaire impliqué dans le développement
▸ Responding to Change over following a planPrivilégier l’amélioration continue et la réponse rapide au changement
http://agilemanifesto.org
LES 12 PRINCIPES AGILES1. Customer satisfaction by early and continuous delivery of valuable software
2. Welcome changing requirements, even in late development
3. Working software is delivered frequently (weeks rather than months)
4. Close, daily cooperation between business people and developers
5. Projects are built around motivated individuals, who should be trusted
6. Face-to-face conversation is the best form of communication (co-location)
http://agilemanifesto.org/principles.html
LES 12 PRINCIPES AGILES, SUITE…7. Working software is the principal measure of progress
8. Sustainable development, able to maintain a constant pace
9. Continuous attention to technical excellence and good design
10.Simplicity—the art of maximizing the amount of work not done—is essential
11.Best architectures, requirements, and designs emerge from self-organizing teams
12.Regularly, the team reflects on how to become more effective, and adjusts accordingly
http://agilemanifesto.org/principles.html
OBJECTIFS▸ Offrir une méthode de travail aux équipe
▸ Réduire les risques associés aux projets logiciels
▸ Assurer un apport positif(valeur) maximal constant
▸ Offrir une mesure de l’avancement du projet
▸ Faciliter la collaboration
▸ Encourager la qualité et l’efficacité
PROPOSITION DE VALEUR
STRATÉGIEPréparation Exécution
IMPLÉMENTATION▸ Agile représente un ensemble de concepts de haut niveaux qui sont ensuite
implémentés par des processus concret
IMPLÉMENTATION - SCRUM▸ Gestion des tâches, équipe, communication, etc.
IMPLÉMENTATION - VALEURS SCRUM▸ Gestion des tâches, équipe, communication, etc.
IMPLÉMENTATION - ÉQUIPE SCRUM▸ Gestion des tâches, équipe, communication, etc.
IMPLÉMENTATION - EXTREME PROGRAMMING, XP
IMPLÉMENTATION - PRINCIPES XP
IMPLÉMENTATION - VALEURS XP
RESPECTSimplicité
Communication
Courage
Rétroaction
“L’IDÉAL” AGILE
LECTURES▸ Agile
https://en.wikipedia.org/wiki/Agile_software_development https://www.versionone.com/agile-101/https://www.versionone.com/agile-101/agile-methodologies/ https://www.versionone.com/agile-101/agile-development-success/ https://www.agilealliance.org/agile101/http://www.allaboutagile.com/what-is-agile-10-key-principles/
▸ SCRUM https://www.scrum.org
▸ Extreme Programminghttp://www.extremeprogramming.org/
▸ Atlassianhttps://www.atlassian.com/agile
Git
SYSTÈME DE CONTRÔLE DE VERSIONS - VCS▸ Logiciel permettant de faire le suivi des changements apportés aux fichiers
ajoutés au système. Bien que ce type de mécanisme puisse être utilisé dans différents contextes, l’emploi le plus commun est au niveau du développement logiciel. Il est donc possible de garder une trace de tous les changements apporté à chacun des fichiers et d’en naviguer l’historique.
▸ SVN, Git, SourceSafe, Perforce, etc…
CENTRALISÉ VS. DISTRIBUÉ
CENTRALISÉ VS. DISTRIBUÉ▸ Centralisé
▸ La copie de travail plus petite car elle ne contient qu’une version
▸ L’interaction avec le serveur, surtout le téléchargement initial, est plus rapide car on ne télécharge pas l’ensemble des versions
▸ Distribué
▸ Les actions effectués sur la copie de travail sont très rapides
▸ On peut organiser un suivi des changements localement, sans les publier au serveur ▸ Travail en mode hors-connexion
▸ Flexibilité au niveau de l’organisation et partage des versions
GIT - SYSTÈME DISTRIBUÉ▸ Créé en 2005, par Linus Torvalds
▸ Open source et multi-plateformes
▸ Actuellement en version 2.X ▸ git-lfs: large file storage
▸ Git est un outils en ligne de commande, mais il existe plusieurs interfaces graphiques permettant d’y accéder
▸ Il existe des hébergeurs git: GitHub, BitBucket, GitLab, etc.
▸ Standard de l’industrie
GIT - STATUS
GIT - INTERACTIONS
GIT - BRANCHES
GIT - FUSION DES BRANCHES
GIT - USAGE▸ Commits fréquents, petite unité fonctionnelle
▸ Ne JAMAIS commit du code incomplet/non-fonctionnel
▸ Pull régulièrement
▸ Push régulièrement
▸ Gérer les conflits localement: Commit, Pull, Push
▸ Utiliser les branches abondamment: feature-x, test-y
▸ https://www.git-tower.com/learn/git/ebook/en/command-line/appendix/best-practices
▸ Usage collaboratifhttps://www.atlassian.com/git/tutorials/comparing-workflows
EXERCICE▸ https://www.katacoda.com/courses/git
▸ Scénarios 1 à 7
LECTURES▸ https://guides.github.com/introduction/git-handbook/
▸ https://www.atlassian.com/git/tutorials/what-is-version-control ▸ https://www.git-tower.com/learn/git/ebook/en/command-line/basics/what-is-version-
control#start ▸ https://www.atlassian.com/git/tutorials
▸ Ligne de commandehttp://gitref.org/ https://git-scm.com/docs/gittutorial
▸ BitBuckethttps://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud
▸ Documentationhttps://git-scm.com/doc
TP 1
MISE EN CONTEXTE▸ Nous sommes une startup qui souhaite développer un produit sur appareils
mobiles. Nous avons choisi de viser la plateforme iOS pour tester le marché avec notre produit avant de s’attaquer aux autres environnements mobiles.
▸ À partir d’une idée initiale, nous allons concevoir et développer l’application en utilisant une approche itérative Agile.
▸ Vous constituez l’équipe de développement, mon rôle est de vous épauler et de m’assurer de la livraison du projet.
PROJET▸ Vous devrez réaliser un projet concret de développement d’application mobile.
▸ Vous réaliserez ce travail en équipe, je vous supporterai et fournirai un encadrement très suivi tout au long du projet
▸ Chaque membre de l’équipe devra s’impliquer dans toutes les sphères du projet
▸ Conception(modèle de données, interfaces, architecture) ▸ Programmation(logique, interfaces, base de données)
▸ Documentation
▸ Vous présenterez finalement le résultat de votre travail en classe
PROJET▸ Pour favoriser votre motivation à réaliser le travail, vous pouvez proposer un
concept d’application que vous développerez. Votre idée devra être approuvée, puis, nous élaboreront ensemble l’étendue des fonctionnalités à intégrer.
▸ L’application suggérée doit obligatoirement utiliser une base de données, être suffisamment complexe pour correspondre aux besoins académiques du cours et exploiter les spécificités de la plateforme mobile.
FONCTIONNALITÉS MOBILE▸ Votre projet devra exploiter certaines fonctionnalités spécifiques à
l’environnement mobile
▸ Géolocalisation/Carte
▸ Multimédia
▸ Senseurs
▸ Bluetooth/NFC
▸ Animations
▸ Notifications locale
▸ Base de données embarquées
EXEMPLE 1: SHAWI-INFO, LE RÉSEAU SOCIAL DU DÉPARTEMENT▸ Utilisateurs: Inscription, Connexion, Profil
▸ Amis: Messages, Amis de mes amis, “check-in”-> Où sont mes amis?
▸ Fil d’actualités: Publications, commentaires, réactions
▸ Événements: Horaire, Billetterie
▸ Entreprises: Offres d’emploi, Cartes d’affaires numériques
EXEMPLE 2: eTROC, PLATEFORME DE COMMERCE ÉLECTRONIQUE▸ Utilisateurs: Inscription, Connexion, Profil
▸ Commerçants: Catalogue, Produits, Avis/Notes
▸ Achats: Panier, Commandes
▸ Amis: Recommandation de produits, Un recommandations peut entraîner une discussion, Fil: Qui a recommandé quoi,
▸ Livraisons: Suivi des commandes, événements, affichage sur une carte
EXEMPLES DE PROJETS▸ Gestionnaire et calendrier d'événements, ex: activités au département, festivals
▸ Application de gestion d'une conférence: horaire, conférenciers, billeterie
▸ Mini réseau social/meetup pour les amateurs de XYZ
▸ Application de gestion de budgets, séparation entre colocs, suivi des dépenses
▸ Journal, garder un historique de nos activités, randonnées, road trip
▸ Gestion de projet, suivi de tâches
▸ Tinder pour les sorties/événements
CONFIGURATION▸ Équipes: 3 équipes de 3 et 2 équipes de 4
Imposées ou à votre choix?
▸ Bitbucket: https://bitbucket.org/
▸ Discord: https://discordapp.com/
▸ Une salle de discussion commune
▸ Une salle d’informations en lecture seule
▸ Une salle privée par équipe
À maintenir à jourtout au long du projet
LIVRABLES1. Analyse de devis
2. Prototypage
3. Application fonctionnelle1- Ajout et listes/affichage ET procédurier mis à jour2- Modification ET procédurier mis à jour 3- : Suppression ET procédurier mis à jour
4. Manuel d’utilisateur
5. Livraison- Présentation de l’application fonctionnelle complète - Procédurier complet- Standards de développement(UI, UX, Code, BD)- Guide de déploiement et sauvegarde
TP 1 - ANALYSE DE DEVIS▸ https://jh.shawinigan.info/sessions/2018A/B7B/AnalyseDeDevis.pdf
▸ Brainstorm!