Examen de Génie Logiciel I

École Nationale des Sciences de l'Informatique (ENSI)
1/4
100%
Rendu du PDF...
Page 1 sur 4Lecteur de document UniversityLib

Examen de Génie Logiciel I

École Nationale des Sciences de l'Informatique (ENSI) · Informatique, Programmation · exam

Browse all programmation documents

UNIVERSITE DE LA MANOUBA

-----¤¤¤¤-----

ECOLE NATIONALE DES

SCIENCES DE L'INFORMATIQUE

ANNEE UNIVERSITAIRE

2014-2015

Examen – Session de Rattrapage

Matière : Génie Logiciel I

Niveau : II2

Date : 26 Mai 2015

Durée : 2H

Documents : non autorisés

Enseignantes : R. DRIRA, N. BEN YAHIA, R. AMRI, S. ZBIDI

La précision, la consistance, la clarté seront appréciées

Exercice (8 points)

1. Définir et comparer les approches de test statique et test dynamique. Donner des

exemples de techniques utilisées pour chaque approche. (1pt)

2. Définir et comparer les tests boîte noire et les tests boîte blanche. Donner des

exemples de techniques utilisées pour chaque approche. (1pt)

3. Proposer un graphe de contrôle G1 et des données de test DT1 minimales

(nombre minimum de DT) montrant que le critère de couverture des instructions

est insuffisant pour détecter une erreur. (1,5pts)

4. Proposer un graphe de contrôle G2 et des données de test DT2 minimales

montrant que le critère de couverture des arcs est insuffisant pour détecter une

erreur. (1,5pts)

5. Soit le code suivant qui calcule l’inverse de la somme des éléments, d’indice entre

inf et sup, d’un tableau A contenant des entiers strictement positifs :

lire (inf, sup) ;

i :=inf ;

Advertisement

som :=0 ;

tant que (i<= sup) faire

début

som :=som+A[i] ;

i :=i+1;

fin

écrire (1/som)

a) Donner le graphe de contrôle correspondant à ce code en numérotant les

nœuds. (1pt)

b) On appelle critère de couverture des i-chemins, le critère qui garantit que l’on

passe sur tous les chemins possibles en répétant de 0 à i fois chaque boucle.

Par quelle suite de nœuds faut-il passer pour satisfaire le critère de couverture

des 2-chemins? Donner des données de test qui satisfont ce critère. (2pts)

1/4

Étude de cas : Un système de gestion de réunions virtuelles (12 points)

Il s'agit de concevoir et réaliser une application permettant de faire des réunions

virtuelles multimédia sur Internet. L'objectif de cette application est de permettre

d'imiter le plus possible le déroulement de réunions classiques de travail.

L’application devra permettre de planifier et de gérer le déroulement de plusieurs

réunions simultanées sur plusieurs plateformes (Mac, Windows, Unix) afin de

permettre à des utilisateurs distants d’organiser des réunions virtuelles ou y

participer.

Après s'être connecté au serveur (à l'aide d'un nom de login et d'un mot de passe

mémorisé par le système), un utilisateur a la possibilité de planifier des réunions

virtuelles (choix d'un nom, définition du sujet, date de début et durée prévue, ordre

du jour), de consulter les détails d'organisation d'une réunion, de les modifier

(seulement

l'organisateur), d'ouvrir et de clôturer une réunion (seulement

l'animateur), d'entrer (virtuellement) dans une réunion précédemment ouverte, et

Advertisement

d'en sortir. En cours de réunion, un participant peut demander à prendre la parole.

Quand elle lui est accordée, il peut entrer le texte d'une intervention qui sera

transmise en ``temps-réel'' par le serveur à tous les participants de la réunion.

Plusieurs sortes de réunions doivent pouvoir être organisables :

– Réunions standards, avec un organisateur qui se charge de la planification de

la réunion et désigne un animateur chargé de choisir les intervenants

successifs parmi ceux qui demandent la parole.

– Réunions privés, qui sont des réunions standards dont l'accès est réservé à un

groupe de personnes défini par l'organisateur.

– Réunions démocratiques, qui sont planifiées comme des réunions standards,

mais où les intervenants successifs sont choisis automatiquement par le

serveur sur la base d'une politique premier demandeur-premier servi.

Partie1

1. Proposer deux cycles de vie qui conviennent pour mener le développement de

cette application. Justifiez votre réponse. (1,5pt)

2. Identifier les acteurs de cette application. (1pt)

3. Déterminer pour chaque acteur les besoins fonctionnels. (1,5pt)

4. Donner deux besoins non fonctionnels vérifiables. (1pt)

5. Proposer un diagramme de contexte pour cette application. (2pts)

6. Proposer une architecture logique pour cette application. Justifiez votre

réponse. (1pt)

7. Proposer une architecture physique pour cette application. Justifiez votre

réponse. (1pt)

2/4

Partie2

Soit la classe suivante :

/ classe qui permet la gestion des différentes réunions virtuelles /

import ….

public class MeetingManager {

Advertisement

//Liste des utilisateurs connectés

List<object> listActiveUser

//Liste des réunions

List<object> listMeeting

//Liste des réunions en cours

List<object> listActiveMeeting

public void connectUser(String login, String password)

{

//(1) Ouverture de la connexion SQL et accès à la base pour vérifier les

paramètres de connexion de l’utilisateur

//(2.a)Créer et envoyer un message d’erreur

//(2.b) ou bien créer et afficher l’écran d’accès aux réunions

//(2.c) ou bien créer et afficher l’écran de création d’un profil

}

public void disConnectUser(String login)

{

// Fermer la session et déconnecter l’utilisateur

}

public void addUser(object informationUser)

{

// Vérifier les données

// Ouverture de la connexion SQL, accéder à la base et ajouter un utilisateur

}

//Renvoyer la liste des réunions auxquelles l’utilisateur est membre

public void checkUserMeeting(object user) { … }

//Connecter l’utilisateur à une réunion

public void accessMeeting(object user) { … }

//Envoyer l’intervention d’un participant

public void sendIntervention(object user, object intervention, object meeting)

Advertisement

{

//(1) Ouverture de la connexion SQL, vérifier les paramètres de connexion de

l’utilisateur

//(2.a)Créer et envoyer un message d’erreur

//(2.b) ou bien diffuser l’intervention et l’enregistrer dans la BB

}

3/4

//Ajout d’une réunion

public void addMeeting(String login, String password, object infoMeeting)

{

//(1) Connexion à la BDD et vérifier les paramètres de connexion de

l’utilisateur

//(2.a)Créer et envoyer un message d’erreur

//(2.b) ou bien créer et afficher l’écran de création d’un profil

//(3) Vérifier les données de la réunion à créer

//(3.a)Créer et envoyer un message d’erreur

//(3.c) ou bien créer et afficher l’écran de validation de la création de la réunion

}

}

8. Quelles sont les problèmes de couplage et de cohésion liés à cette classe ?

(1,5pts)

9. Proposez une solution pour palier à ces problèmes. (1,5pts)

Bon travail !

4/4