Вы находитесь на странице: 1из 17

[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

CONTROLE MAJEURE INFORMATIQUE,


INF301
Ingnierie du Logiciel et des Donnes
14 janvier 2014 de 09h00 12h00 - Dure 3h
Sujet 17 pages

Observations (ne rien crire dans ce cadre)

Candidat
Prnom :

Nom :

Barme
Les barmes indiqus sont donns pour information et pourront tre modifis au moment de la
correction.
Partie Barme Note Page
1 Analyse et conception logicielle 7 5
2 Base de donnes 6 8
3 Programmation 7 11

Restrictions
Tous les documents papiers sont autoriss. Lusage doutils informatiques est interdit, lusage des
tlphones portables est interdit y compris pour la simple consultation de lheure.

Tlcom Bretagne INF301| Candidat 1 sur 17


[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

Consignes
Vos rponses aux questions poses dans cet examen doivent tre justifies, prcises et courtes. Vous
n'hsiterez pas utiliser des schmas pour illustrer vos propos, ceux-ci permettent souvent de
clarifier. Merci de rpondre directement sur le sujet dans les cases prvues. Ces dernires sont
suffisantes pour vos rponses.
Si vous avez besoin d'une feuille supplmentaire, faites figurer la date, vos noms et prnoms et la
rfrence du contrle, c'est dire : INF 301, UV1 sur chaque feuille. Rfrencez sur cette feuille les
questions auxquelles vous rpondez. Aucun brouillon joint la copie ne sera corrig.
Pour les questions choix multiple, noter quon peut trouver 0, 1 ou plusieurs rponses
slectionner.
Attention lcriture des rponses et des programmes, toute portion de code illisible ou mal
indente ne sera pas corrige.
N'oubliez pas de lire en entier lnonc avant de commencer, de lire les NB, les notes de bas de page
qui donnent les indications pour rsoudre les exercices. Respectez les noms donns aux variables,
attributs, fonctions, etc. Ces noms sont crits avec la police courrier.
Les phrases ou paragraphes sur fond gris permettent de contextualiser les exercices ou de donner des
exemples. Leur lecture n'est pas ncessaire pour russir les rsoudre.

Tlcom Bretagne INF301| Consignes 2 sur 17


[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

Sujet
Lentreprise ProClean spcialise dans lentretien des espaces publiques a dcid dinvestir
dans les nouvelles technologies pour rduire le cot de ses prestations. Son projet nomm
WALL-E consiste utiliser des robots autonomes pour collecter les dchets et dbris se
trouvant sur les espaces quelle entretient comme les plages, les parcs ou les terrains affrts
pour des festivits.
ProClean reoit des missions (Assignment) de la part de ses clients. Ces derniers sont des
mairies, des collectivits locales, des associations ou des entreprises. Chaque client a un nom, une
adresse mail, un numro de tlphone et ladresse de son sige (rue, code postal et ville). Les
entreprises et les associations ont un numro de SIREN. Les mairies et collectivits locales ont un
numro COG (Code Officiel Gographique). ProClean applique un taux de rduction pour les
clients fidles qui dpend du type de client (mairie, collectivit, association ou entreprise). Un
client est considr fidle sil sollicite sur lexercice prcdent un certain nombre de missions
dfini au dbut de chaque anne.
Un client (Client) peut transmettre plusieurs missions ProClean. Chaque mission
concerne un et un seul terrain. Une mission est identifie par un numro compos de lanne
civile sur quatre chiffres et dun numro squentiel sur quatre chiffres. Au dbut de chaque anne
civile, le numro squentiel est initialis zro. Une mission dfinit la date de dbut
dintervention et la date limite dintervention.
Un terrain (Ground) est dfini par son numro de parcelle, son adresse et par une suite de
coordonnes GPS de ses extrmits. Une coordonne GPS est dfinie par trois attributs : altitude,
latitude et longitude.
Lors de la rception dune mission, ProClean procde aux vrifications habituelles des
donnes. Elle planifie la date dintervention de la mission. Si aucune date nest trouve. Elle
contacte le client pour ngocier la plage dintervention propose. Si aucune solution nest
trouve, elle rejette la mission et informe formellement le client par mail.
Dans le cas o ProClean accepte la mission, elle rserve une quipe dintervenants (Team)
et un ensemble dquipements (EnginSet). Lquipe comporte un chef dquipe, un technicien,
un roboticien et un ou plusieurs collaborateurs de nettoyage. Un personnel a un matricule, un
nom, un prnom, un numro de tlphone, un mail et une adresse de domiciliation.
En ce qui concerne les quipements, ProClean rserve un drone (Drone), plusieurs robots
ramasseurs de dchets (GarbageCollector), une ou plusieurs stations de rechargement
(PowerStation) et un collecteur (Garbage) par type de dchet (WasteType) amnag pour
les robots. Les types de dchet que ProClean traite sont : le plastique, le mtal, le verre, le papier
et les matires organiques.
Chaque robot ramasseur est spcialis dans la collecte dun seul type de dchet. Il possde
un identifiant, une batterie avec une autonomie exprime en nombre de km quil peut parcourir,
une file dattente des tches raliser dune taille prdfinie et un bac de ramassage dune
capacit exprime en kg. Il dispose aussi dun GPS intgr lui permettant de se go-localiser et
dune balance pour peser chaque dchet ramass.
Le drone est capable de survoler le terrain et de dtecter tous les types de dchet. Il
possde un identifiant, une batterie avec une autonomie exprime en nombre de km quil peut
survoler et son champ de perception sphrique exprim en mtres. Il dispose aussi dun GPS
intgr lui permettant de se go-localiser.
Une station de rechargement est caractrise par un identifiant, le temps ncessaire pour
recharger un robot exprim en minutes, le nombre de robots quelle peut charger simultanment
et sa localisation grce un GPS intgr. Sa source dnergie est illimite.
Tlcom Bretagne INF301| Sujet 3 sur 17
[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

Un collecteur de dchets est caractris par un identifiant, le type de dchet quil doit
contenir, sa capacit maximale en kg et sa localisation grce un GPS intgr. Il ne peut accepter
quun seul robot la fois.
Lors dune mission de nettoyage, le drone et les robots sont dploys par le technicien et
mis en marche par le roboticien. Tous les lments (robots, station de rechargement et
collecteur) communiquent entre eux de faon autonome via une liaison sans fil.
Une fois le drone activ, il analyse les coordonnes GPS du terrain et le survole la
recherche des dchets. Ds quil en dtecte un, il dtermine son type et sa localisation. Il cre une
instance dun dchet et lajoute une liste de dchets partage avec les robots spcialiss dans la
collecte du type de dchet en question. Les listes de dchets sont gres par une entit appele
tableau noir (Blackboard).
Chaque robot scrute la liste de dchets qui lintresse. Ds quun dchet est insr, les
robots lancent une ngociation pour dterminer celui qui sera charg de le ramasser. Le principe
est que le robot le plus proche sen charge condition que sa file dattente des tches ne soit pas
pleine. Le robot qui emporte la ngociation rordonne ses tches pour rduire ses dplacements.
Quand un robot une tche dans sa file dattente, il se dirige vers le dchet, le ramasse, le pse,
et le place dans son bac. Sil narrive pas le ramasser, il transmet la tche lensemble des
agents dentretien. Il retire ensuite de sa file dattente la tche en question. Si la file dattente des
tches est vide, le robot simmobilise. Ds quun robot remplit son bac, il interrompt ses activits
pour se diriger vers le bon collecteur et vider son bac.
Les robots et le drone surveillent leur autonomie de dplacement en permanence. Si ce
dernier atteint un seuil ne leur permettant pas datteindre une station de rechargement, ils
interrompent leur activit pour se diriger vers la station la plus proche et se recharger.
La mission se termine, ds que le drone termine de parcourir tout le terrain, que toutes les
listes de dchets sont vides et que les files des tches des robots sont vides. Ds lors, les robots
rejoignent leur localisation de dpart au dbut de la mission.

Tlcom Bretagne INF301| Sujet 4 sur 17


[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

Partie 1 : Analyse et conception logicielle


Question 1.1. Donner la dfinition et le symbole UML dune relation dagrgation et dune
relation de composition. Quelle est la diffrence entre ces deux relations ?
Illustrer la comparaison par un exemple.
Une relation dagrgation

Une relation de composition

La diffrence

Exemple dagrgation :

Exemple de composition :

Question 1.2. Dans un diagramme dactivit, quoi sert un fork Node ?

Question 1.3. Expliciter les oprations de vrification des donnes que doit effectuer
ProClean lors de la rception dun ordre de mission.

Tlcom Bretagne INF301| Analyse et conception logicielle 5 sur 17


[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

Question 1.4. Complter la description de la fonctionnalit ajouter un ordre de


mission

Description

Droit d'accs

vnement
dclencheur

Entres

Sorties

Contraintes

Importance

Question 1.5. Proposer le diagramme de squence du drone en se basant sur le


paragraphe dcrivant son fonctionnement.

Tlcom Bretagne INF301| Analyse et conception logicielle 6 sur 17


[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

Question 1.6. Raliser le diagramme de classe UML de la partie encadre de lnonc.

Expliquer et justifier les choix de conception.

Tlcom Bretagne INF301| Analyse et conception logicielle 7 sur 17


[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

Partie 2 : Base de donnes


Le diagramme de classe UML suivant modlise partiellement la partie non encadre du sujet.
Pour des raisons de lisibilit, les associations avec WasteType, WasteState et Waste ne sont pas
prsentes. Elles sont dclares sous forme dattributs.

Tlcom Bretagne INF301| Base de donnes 8 sur 17


[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

Question 2.1. Pour les classes suivantes, cocher la case des attributs qui doivent tre
persistants :
Engin WasteEngin AbstractRobot
identifier wasteType autonomy
location capacity thread
weight blackboard
run
PowerStation GarbageCollector Drone
chargingTime; DEFAULT_TASK_SIZE radius;
maxSimultaneousRobot; taskQueue;
wasteEngin;

Question 2.2. Pour stocker les donnes manipules dans le programme dans une base de
donnes, il est possible de gnrer sur un brouillon le schma conceptuel de donnes
partir du diagramme de classe ci-dessus. partir de ce schma conceptuel, on peut alors
obtenir, par drivation, un schma logique. Dans la zone suivante, ne noter pas le schma
conceptuel, mais juste le schma logique sous forme textuelle avec notation des
contraintes de cls primaires et rfrentielles (on pourra limiter la drivation aux classes
BlackBoard , EngineSet , Engin et ses sous classes, et aux associations qui
les relient).

Tlcom Bretagne INF301| Base de donnes 9 sur 17


[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

Expliquer et justifier particulirement le choix de drivation des associations et des relations


d'hritage.

Combien dautres solutions, est-il possible de trouver ?

0 1 2 3 4 plus

On propose le schma logique suivant utilis pour stocker dans une base de donnes
certaines informations du systme :
waste_type(code,type)
waste_state(code, state)
garbage(id,purchase_date,type) avec type rfrence waste_type(code)
waste(number,type,state,weight,id_ref) avec type rfrence waste_type(code), state rfrence
waste_state(code) et id_ref rfrence garbage(id)
Dans la table waste, id_ref vaut nul tant que state est diffrent de THROWN

Question 2.3. crire les requtes SQL permettant de rpondre aux questions suivantes :
1. Donner la liste des dchets (waste) ayant un poids compris entre 500 et 1000.

Zone rserve la
correction
Ne pas remplir
G A B C D
1
1
2
3

2. Donner les id des collecteurs (garbage) achets aprs le 1er janvier 2012 et qui sont destins
collecter les dchets mtalliques (type = METALIC ).

Zone rserve la
correction
Ne pas remplir
G A B C D
1
1
2
3

Tlcom Bretagne INF301| Base de donnes 10 sur 17


[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

3. Donner les types de dchets qui ont plus de 5 collecteurs (garbage).

Zone rserve la
correction
Ne pas remplir
G A B C D
1
1
2
3

4. Donner la liste des dchets de type plastique ou verre qui ne sont pas encore jets dans les
collecteurs.

Zone rserve la
correction
Ne pas remplir
G A B C D
1
1
2
3

5. Donner les id des collecteurs organiques ayant un poids de dchets collects infrieur 100 kg.

Zone rserve la
correction
Ne pas remplir
G A B C D
1
1
2
3

Partie 3 : Programmation
Question 3.1. Cocher les bonnes cases.
Affirmation Oui Non
Une interface peut hriter de plusieurs interfaces.

Une interface peut hriter dune seule interface.

Une classe peut hriter dune seule inteface.

Une classe peut la fois hriter dune classe et de plusieurs interfaces.

Une classe peut la fois hriter de plusieurs classes et dune seule interface.

Une interface peut hriter dune ou plusieurs classes.

Tlcom Bretagne INF301| Programmation 11 sur 17


[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

Question 3.2. Complter le tableau suivant, pour le langage Java, en mettant si


partir de la classe X il est possible daccder au champ de la classe A et dans le cas
contraire.
Champ Classe X
A B C D E
privateField
packageField
protectedField
publicField
Dclaration des attributs de la classe A en Java :
private int privateField ;
int packageField;
protected protectedField;
public publicField;

Question 3.3. Quels sont les invariants de sret quil faut dfinir pour grer laccs dun
robot une station de recharge et un collecteur de dchet ? Exprimer-les en franais.
Invariant dune station de recharge :

Invariant dun collecteur de dchets :

Question 3.4. Identifier les variables qui permettent dexprimer les deux invariants de
sret prcdents. Utiliser ces variables pour exprimer ces invariants sous forme de
prdicat.
NB : Ne pas hsiter ajouter les variables et/ou proprits manquantes dans le diagramme de classe
pour exprimer les invariants de sret.

Invariant dune station de recharge :

Les variables sont :

Le prdicat :

Tlcom Bretagne INF301| Programmation 12 sur 17


[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

Invariant dun collecteur de dchets :

Les variables sont :

Le prdicat :

Question 3.5. Complter le code suivant de la classe AbstractRobot


1 package org.enstb.inf.proClean.robot;
2
3 public abstract class AbstractRobot extends Engin implements Runnable {
4 private float autonomy;
5 private Thread thread;
6 private boolean run=false;
7
8
9
10
11
12
13 public AbstractRobot(String identifier,float autonomy) {
14 super(identifier);
15 this.setAutonomy(autonomy);
16 this.thread=new Thread(this);
17 this.run=true;
18 }
19 public float getAutonomy() {
20 return autonomy;
21 }
22 public void setAutonomy(float autonomy) throws IllegalArgumentException{
23
24
25
26
27
28
29
30
31 }
32 */
33 public Blackboard getBlackboard() {
34 return blackboard;
35 }
36 public void setBlackboard(Blackboard blackboard) throws NullPointerException {
37 if(blackboard==null)
38 throw new NullPointerException("The blackboard cannot be null.");
39 this.blackboard = blackboard;
40 }
41
42
43
Tlcom Bretagne INF301| Programmation 13 sur 17
[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

44 public void start(){


45
46
47
48
49
50
51 }
52
53 public void stop(){
54
55
56
57 }
58 public void run() {
59 while(this.run){
60 this.task();
61 }
62 }
63
64 protected abstract void task();
65
66 }
Question 3.6. Complter le code suivant de la classe GarbageCollector.
NB : Ne pas hsiter ajouter les mthodes ncessaires pour crer un code propre et modulaire
respectant le principe de la programmation oriente objet.

On suppose la prsence de la mthode private void moveTo(GPS gps) dans la classe


AbstractRobot permettant de dplacer un robot de sa position courante la nouvelle position
GPS reu en paramtre.

1 package org.enstb.inf.proClean.robot;
2 import java.util.PriorityQueue;
3 import org.enstb.inf.proClean.dump.Waste;
4 import org.enstb.inf.proClean.dump.WasteType;
5 import java.util.Collection;
6
7 public class GarbageCollector extends AbstractRobot {
8 private static final int DEFAULT_TASK_SIZE = 5;
9 private PriorityQueue<Waste> taskQueue;
10 private WasteEngin wasteEngin = null;
11 public GarbageCollector(String identifier,float autonomy,int taskSize,
12 WasteType wasteType,float capacity) {
13 super(identifier,autonomy);
14 if(taskSize<1)
15 taskSize=DEFAULT_TASK_SIZE;
16 this.taskQueue=new PriorityQueue<>(taskSize);
17 this.wasteEngin=new WasteEngin(identifier,wasteType, capacity) {
18 public void clean() {
19 moveToWaste();
20 emptyWaste();
21 this.setWeight(0);
22 }
23 };
24 }
25

Tlcom Bretagne INF301| Programmation 14 sur 17


[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

26 private void emptyWaste() {


27
28
29
30
31
32
33
34 }
35 private void moveToWaste() {
36
37
38
39
40
41
42
43 }
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

Tlcom Bretagne INF301| Programmation 15 sur 17


[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
Tlcom Bretagne INF301| Programmation 16 sur 17
[INGNIERIE DU LOGICIEL ET DES DONNES UV1] 14 janvier 2014

130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180 }

Tlcom Bretagne INF301| Programmation 17 sur 17

Вам также может понравиться