Un projet de très gros tutoriel ou de plusieurs tutoriels interconnectés (à voir) au travers duquel ou desquels j'espère vous emmener assez loin en profondeur sur le sujet du développement d'une application web utilisant des technologies telles que PHP, MySQL, XML, et bien d'autres.
Le but ici est bel et bien d'emmener le lecteur à découvrir de multiples facettes du développement d'un site web quand l'étude est faite en profondeur. On va parler d'analyse de projet avec les différentes facettes et nombreux diagrammes UML, la réalisation de maquettes pour visualiser le look de notre application à tel ou tel moment, la réalisation de diagrammes MCD, MLD et MPD pour décrire notre base de données et la générer à la volée, et identifier tous les problèmes qui peuvent se présenter avant même d'avoir commencé à coder. Ce sera aussi l'occasion d'attaquer les design patterns et l'orienté objet en général à ce stade. On commencera aussi à parler de développement en couche, vers la fin quand nos diagrammes commenceront à être très proches du futur code.
Etape suivante, on parlera de la notion de peristance des données, et de fil en aguïlle on arrivera à la manipulation de XML. La persistance des données passe aussi par la base de données mais ce sera abordé dans un second temps seulement. Ici, on apprendra à rédiger efficacement des documents XML, à les définir via XSD, à y naviguer en XPath, et le transformer en n'importe quoi à l'aide d'XSLT.
Ensuite, on s'intéressera à la manière d'interroger et de manipuler notre base de données. Avec MySQL en fil rouge, il y aura beaucoup de chose à dire, des requêtes DDL et DML jusqu'aux transactions, fonctions, procédures et triggers. Le but clairement affiché étant de détacher la structure des tables de l'application.
Etape suivante, conception d'IHM. Autrement dit : HTML et CSS. On verra aussi un peu de programmabilité JavaScript mais ce ne sera pas l'essentiel de ce tutoriel.
Enfin, l'application proprement dite sera abordée en PHP. On y découvrira la notion de programmation en couches, en allant au-delà du MVC classique. On répondra à un certain nombre de problématique plus techniques qui n'étaient pas forcément mise en évidence pendant l'analyse, et d'autres petites astuces ou subtilités liées à PHP.
Tout au long de ces étapes, le fil rouge sera la réalisation d'une application web n-tiers au travers de laquelle on sera à même de rencontrer un maximum de problématiques, au-delà de celle de son simple site : interactions sur le net, utilisation de web services, etc…
Un projet de tuto assez ambitieux, qui demandera donc un peu de temps. En attendant, si vous avez des conseils, idées, ou autres, je suis tout ouïe.
J'éditerai le présent message au fur et à mesure de l'évolution de la réflexion.
Edit : abandon du thème "concevoir son site de A à Z" au profit de la seule partie "analyse". Il y aura déjà beaucoup à en dire…
–
Plan prévu
- Pourquoi analyser ? (MOA, MOE, gestion prévisionnelle, pilotage, processus, modèle en cascade, modèle en V, modèle iétratif, quelques mots surMerise et CDM, aperçu de l'UML, logiciels utilisés pour le tutoriel)
- Expression du besoin (dialogue avec le client ou la MOA pour savoir ce dont on a besoin, mise en place des exigences et de la vision du projet)
- Capture du besoin fonctionnel (Cas d'utilisation, table de traçabilité, table de priorisation)
- Analyse du domaine (Diagramme d'activités, scénari, séquence système, maquettage, diagramme de collaboration, classes d'analyse, Etat/Transitions)
- Analyse des données (Présentation générale des bases de données, MCD, MLD)
- Capture du besoin technique (Réflexion techniques, diagramme de composants, diagramme de déploiement)
- L'orienté objet (nécessaire de parler de la théorie "Objet" avant d'attaquer la suite)
- Conception préléminaire (Classes participantes, séquence objet, diagramme de communication, diagramme de packages)
- Conception détaillée (Affinage des diagrammes de classes afin d'être prêt à coder. On commence à aborder les solutions davantages spécifiques aux techniques et technologies choisies. Découverte des design patterns)
- Le testing (je ne sais pas encore comment je vais m'y prendre ici, je manque de connaissance… pour l'instant. )
- SCRUM et les méthodes agiles (Présentation des méthodes agiles et de leur intérêt, présentation de SCRUM)