Dépassé par les technos ? Pas le temps de faire de veille ? Trop de boulot pour passer du temps à vous former sur ce qui ne vous concerne pas directement ?
Un nouveau projet à démarrer ?

Et quand bien même vous décideriez de remettre le pied à l’étrier et rattraper le temps perdu, par où allez-vous commencer ?
Creuser les technos une à une, sans savoir vraiment comment elles se positionnent dans le cadre d’un projet concret…avouons que c’est assez décourageant.

Cette suite d’articles se propose d’introduire les techniques de développement actuelles, dans le cadre d’un besoin et d’un projet concret.

  1. Développer un projet aujourd’hui : comment faire, par où commencer ? (vous êtes ici Star)
  2. Architecture et découpage du projet
  3. Le Stockage des données
  4. La publication des données
  5. Migration dans Azure
  6. L’application Windows Phone basique
  7. Ajout de la fonction d’aide à l’achat
  8. Ajout des notifications sur les vins en promotions
  9. L’application Silverlight

Une série de tutoriels accompagnera ces articles pour mettre en place la solution from scratch.

Introduction

Un poste de développeur, de chef de projet, d’architecte, un projet, un planning, des délais trop courts, des besoins qui changent tout le temps, des tests, une maintenance perpétuelle de l’application et des mises à jour…

Effectivement, bien souvent on travaille d’arrache-pied sur un projet, la tête dans le guidon, et lorsqu’enfin on finit par la relever, des mois voir des années ont passé. Entre temps, beaucoup de choses ont évolué, aussi bien du côté des usages que du côté des technologies.
Tout le monde ne peut pas se payer le luxe de faire une veille technologique de fond et/ou à large bande. D’autant plus que l’on consacre souvent notre peu de temps de veille, à creuser des sujets qui nous concernent directement et qui sont donc très ciblés.

Les techniques de développement d’aujourd’hui ne sont plus celles d’hier, même si les concepts généraux restent valables.
Mais alors qu’entend-on par “le développement d’aujourd’hui” ? C’est simplement l’intégration de nos usages et contraintes actuelles à savoir :

D’un point de vue fonctionnel:

- des applications disponibles sur le poste de travail, mais aussi sur nos appareils nomade (téléphone, tablette,…)- des applications qui savent mieux exploiter leur environnement de fonctionnement (interaction avec d’autres applications connexes ou communautaires)

- de plus en plus de données en ligne, pour les partager de manière publique ou privée

- une meilleure réactivité (exploitation de nos machines multi-cores)

- une ergonomie “sexy” et pensée pour l’utilisateur

- des services disponibles depuis n’importe où et tout le temps

D’un point de vue technique:

- l’avènement des application web

- l’arrivée de plateformes et de services dans les nuages

- les applications naissent/vivent/évoluent/co-existent/meurent mais les données perdurent

- le besoin d’une architecture générique et adaptable (adaptation au développement agile)

- une meilleure lisibilité du code

- une meilleure testabilité

- une amélioration du confort de développement et de la productivité du développeur


Bref, tout un programme !

Si vous démarrez un développement aujourd’hui sans prendre en compte ces concepts devenus légion, vous risquez fort d’obtenir un résultat décevant et peu pérenne.

Tout un programme !

Comme je vous le disais, nous allons partir sur un cas concret en essayant de répondre à un besoin fonctionnel, à savoir :

CaveAVins : Une application de gestion de cave à vins et d’aide à l’achat en boutique.

Bon j’en vois déjà qui lèvent les yeux au ciel : elle parle encore de vins !
Ben oui, et alors ? Déjà j’aime bien ça (quelque chose me dit que je ne suis pas la seule) et surtout cela évite d’expliquer en long en large et en travers le besoin fonctionnel que l’on comprend immédiatement, ce qui fait gagner un temps fou à tout le monde Nyah-Nyah.
Ce prétexte métier de cave à vins peut être remplacé par n’importe quel autre, qui s’appuierait sur un catalogue de données et fournirait des services et applications autour de celui-ci. 
Finalement, cela correspond à la majorité de nos applications.

Cahier des charges fonctionnel

Alors là je joue le rôle du client…

Besoin 1: Gestion de ma cave à vins

- Ajouter/supprimer des bouteilles dans ma cave
- Filtrer, trier les bouteilles selon les cépages, les prix, les années, les mets qui s’y accordent…
- Noter les bouteilles et pouvoir partager cet avis avec les autres utilisateurs

Besoin 2: Aide à l’achat en boutique

Je ne sais pas pour vous, mais quand je vais au supermarché choisir une bouteille de vins, je vis un grand moment de solitude. Quel vin vais-je choisir ?
Bon j’ai mes préférences, mais si je dois choisir une bouteille de Bordeaux, comment savoir laquelle des 25 bouteilles proposées entre 4 et 6 euros sera la meilleure ?
D’où l’idée de pouvoir prendre une bouteille en photo avec son téléphone et de visualiser les notes que lui ont données les autres amateurs de vins disposant de la même application que moi.

Besoin 3: Bénéficier des meilleurs tarifs

Etre notifié de promotions sur mes vins préférés, par le producteur ou le distributeur.

Voilà pour mon besoin. C’est déjà pas mal pour un début.
En fonction du temps que je peux octroyer à ces articles, de l’actualité, et aussi de vos attentes, nous pourrons compléter ces besoins par d’autres scenarios.

Analyse technique

Un petit schéma de l’idée générale à ce stade:

image

Passons au premier débriefing technique après avoir pris connaissance du besoin. Les idées arrivent en vrac, de manière décousue…
J’utiliserai volontairement des termes techniques correspondant à des technologies mais pas de panique, inutile de savoir à quoi elles font référence à ce stade:

Besoin 1:

- Pour stocker les données (vins, caractéristiques, notes…) on va bien évidemment utiliser une base de données.
A la base, il n’y a pas de catalogue de bouteilles existant, ce sont les utilisateurs qui enrichissent la base de données au fil de leurs achat et de leur notation.
Les données devront donc être mutualisées et non pas être stockées localement sur leur poste de travail et/ou leur téléphone, avec un catalogue présent dans une base de données distante.
Je pense à SQL Server, SQL Azure

- Nous aurons besoin d’une techno qui nous permet de requêter efficacement ces données, si possible qui fonctionne depuis plusieurs plateformes clientes (doit fonctionner sur le poste de travail et sur le téléphone).
Je pense à Entity Framework, Linq, OData, WCF Data Services

- Les données et services doivent être hébergés et accessibles facilement
Je pense à Azure et SQL Azure

- Nous devrons développer 2 applications : l’une pour le PC, l’autre pour notre cher Windows Phone.
Les cas d’utilisation sur le PC et sur le téléphone ont l’air assez similaires, mais certains usages se révèleront être inutiles sur les deux plateformes.
En tout cas, nous essaierons de factoriser un maximum le code des deux applications
Je pense à Silverlight, Portable Library, Html5

- Une manière sexy de représenter un catalogue de données sur PC, avec filtrage, tri, regroupement.
Je pense à Pivot Viewer

Besoin 2:

- Prise de photo pour interprétation du code barre et/ou de l’étiquette de la bouteille
Je pense aux services OCR (Reconnaissance optique de caractères)

Besoin 3:

- Pouvoir être notifié des bonnes affaires sur les vins que je préfère ?
Je pense aux notifications Push sur Windows Phone


Les éléments techniques introduits en bleu correspondent aux premières associations d’idées. Ca ne veut pas dire que dans les faits, ils correspondront le mieux aux besoins du développeur et du client.
Nous découvrirons au fil des articles, quels choix techniques seront retenus et quelles seront les solutions les plus adaptées.
Je risque également de modifier la liste des besoins: soit parce que trop compliqué à mettre en œuvre dans des articles “basiques”, soit parce qu’un autre scénario auquel je n’avais pas pensé se révèlera être plus intéressant à expliquer.
Vous l’aurez compris, j’écrirai cette suite d’articles en temps réel. Winking smile

Voici le premier jet pour le sommaire de cette série d’articles :

  1. Développer un projet aujourd’hui : comment faire, par où commencer ? (vous êtes ici Star)
  2. Architecture et découpage du projet
  3. Le Stockage des données
  4. La publication des données
  5. Migration dans Azure
  6. L’application Windows Phone basique
  7. Ajout de la fonction d’aide à l’achat
  8. Ajout des notifications sur les vins en promotions
  9. L’application Silverlight

…sachant que je risque de revoir la décomposition de tout cela en fonction de la longueur des articles et des notions en plus ou en moins que j’aborderai.

Tchin tchin ! Martini glass