Une des solutions informatiques que la plupart des programmeurs ont à exprimer dans leur carrière est celle du magasin.
Le magasin est un univers qui a un contenu - les marchandises, et des interactions avec l’extérieur -les clients.
Ce problème est similaire à la gestion de stocks, la vente en ligne et hors ligne, la facturation - dans sa forme la plus simple.
Il est également cliché tellement il inclut 4 CRUD et de la sécurité. C'est un peu le B-A BA, donc pas si simple.
Le magasin est un système où
Mais cela n'est pas possible sans un magasin déjà rempli
Vos utilisateurs vont finir par effectuer un achat après :
C'est le moment d'ajouter toutes les action manquante : on s'attend
La vérification du CRUD sur ces cas d'utilisation révèle les manquants :
La sauvegarde du panier à l'enregistrement
La création de sections, produits et le changement de section
La modification dans l'écran "Mon panier"
Le détail des cas d'utilisation dans le "Parcours du site", qui reviennent tous à modifier les "filtres" de la la liste de produits
Pour chaque usecase il faut tracer un diagramme de séquence !
Commencons par réduire le nombre de Usecase nécessaire
Exemple 1 : Pour faire de la création et de la modification, on a souvent besoin d'une seule fonction
Il suffit de faire une fonction foobar() qui
Le système a besoin d'une fonction createOrUpdateProduct(productId:String, properties:KeyValue*)
Exemple 2 : La plupart des lectures sont des "recherches avec filtres" dont le cas général - filtres à blanc - provoque la recherche de tout
Il suffit d'avoir une seule fonction qui "peut le plus" :
Le système a besoin d'une fonction findProducts(nameFilter:String, sectionFilter:String):Product*
Pour le CRUD des objets, les méthodes suivantes sont nécessaires à l'administrateur
Le système comprends deux fonctions pour lister les sections et lister les produits.
Pour l'utilisateur qui a un navigateur - ou une GUI - c'est suffisant :
Le navigateur liste les sections, par exemple http://example.com/shop/data/products/search?filter=filter
Le navigateur liste les produits, par exemple http://example.com/shop/data/section/search?filter=filter2
Il combine ces données en une page HTML - ou GTK. Le usecase "Browse" est donc rempli.
Le usecase "Clear" devrait être facile à remplir également.
Le cas standard de navigation anonyme est géré. A un moment donné de la navigation, l'utilisateur va cliquer sur "Ajouter au panier".
Le système doit donc exposer les méthodes suivantes :
Avec ces méthodes on a couvert la gestion du panier, hors paiement :
Les usecase non couverts sont donc :