Correction étude de cas Equida BTS SIO SLAM 2013

Mission 1

Réponse 1

Il faut créer un diagramme de cas d'utilisations. Exemple ci-dessous:

use case diagramme

Réponse 2

Un logiciel développé en couches est plus facile à développer, à maintenir et à tester.

Chaque partie est indépendante l’une de l’autre, vous pouvez modifiez ou changer une partie sans forcément impliquer les autres couches.

Les tests sont beaucoup plus faciles car vous pouvez tester chaque couche indépendamment l'une de l'autre.

Dans le cas Equidia le réalisation des deux nouvelles fonctionnalités ne vont impacter que l’interface graphique, les autres couches n’auront pas à être modifiées.

Mission 2

Réponse 1

Si un client n’est pas intéressé par une catégorie, on ne sortira jamais de la boucle (while trouve == false).

Il faut rajouter un compteur qui regarde si on n’a pas dépasser les limites de la liste.

A rajouter : while (ind < Lescateg.count && trouve == false).

Réponse 2

 public static List<client> GetClientCategorie(int idCategVente)
        {
            string res;
            // constitution d'une commande basée sur une requête SQL  
            // en vue d'être exécutée sur une connexion donnée		
            string req = "select id, titre, nom, prenom, adressePartie1, adressePartie2, codePostal, ville, pays, adresseMessagerie from client, Interesser where Interesser.idClient = client.Id and Interesser.idCategVente =" + idCategVente
            ;
            SqlCommand cmd = new SqlCommand(req, Connect.Get());
            // demande d'exécution de la commande produisant un jeu d'enregistrements résultats
            SqlDataReader jeu = cmd.ExecuteReader();
            // lecture de la première ligne du jeu d'enregistrements résultats, 
            // opération à renouveler pour lire les enregistrements suivants éventuels           		
            // Déclaration d’une liste de client qui va ont être créés avec les infos de la base
            List<client> lesClients = new List<client>();
            while (jeu.Read())
            {
                Client unClient = new Client(jeu[0], jeu[1], jeu[2], jeu[3], jeu[4], jeu[5], jeu[6], jeu[7], jeu[8], jeu[9]);
                lesClients.add(unClient);
            }
            // libération du jeu d'enregistrements résultats	           		
            jeu.Close();
            return lesClients;
        }

Modification d’envoiCourriel.

    static public void EnvoiCourriel(Vente uneVente)
        {
            List<client> clients;
            int idCateg = uneVente.GetLaCateg().GetId();
            //La function GetClientCategorie nous retourne directement la liste des clients intéressés par une vente.
            clients = ClientDAO.GetClientCategorie(idCateg);
            if (clients != null)
            {
                CreationCourriel(uneVente, clients);
            }
        }

Mission 3

Réponse 1

La solution se trouve dans l’horrible table ci-dessous qui ne répond à aucune forme de normalisation.

Vente ( id, nom, idCategVente, idLieu, dateDebutVente, dateFinVente, dateDebutInscription, dateEnvoiMessage, objetMessage, corpsMessage)

Il faut créer une autre table (email) qui comprend dateEnvoiMessage, objetMessage et corpsMessage. Il faut ensuite faire un lien vers une autre table (pièceJointe) qui comprend le nom du fichier au minimum, la relation est de type n,n entre email et pièceJointe.

Vous pouvez utiliser le formalisme que vous voulez (schéma entité-relation ou schéma relationnel).

Réponse 2

Toutes les couches sont impactées, il faut traiter les nouvelles tables dans la base, modifier l’interface graphique pour les pièces jointes, il faut aussi modifier les classes métiers pour prendre en compte les nouvelles données et enfin la couche logique métier.

Réponse 3

Il faut ajouter la classe Email qui comprend toutes les colonnes de la table email comme champs, il y a une cardinalité 1 et * entre la classe Vente et Email. Il y aussi une classe PieceJointe qui reprend les champs de la table PieceJointe. Elle est reliée à la classe Email avec une cardinalité 1 et *.

Mission 4

Le plus simple est de refaire le schéma entité-association de l’annexe 5 et d’ajouter les nouvelles entités, il faut ajouter les entités suivantes: Lot, Enchère, Cheval (relation réflexive de type père et mère), Course et Intervenant (héritage avec Vendeur et Acheteur). L’entité Lot possède deux associations vers Vente et TypeCheval.

Mission 5

Développement en interne Equidia Android : (8*250) + 1500 = 3500

Développement en interne Equidia site web : (10*250) + 1120 + 1620 = 5240

Développement externe Android : 2500

Développement externe site web : 3500

Vous pouvez proposer des éléments de correction pour les dernières questions. La question développement interne vs externe revient tous les ans !