IFT2251
Introduction au génie logiciel
Travail pratique #3
par:
Nicola Grenon GREN30077303
le mercredi quatre avril mars deux mille six
a) Le style architectural client-serveur.
b)
t e r m in a l : c lie n t V o t e
le c t e u r :le c t e u r D e C a r t e
s e r v e u r E le c t io n :s e r v e u r D e V o t e
s it e :s e r v e u r W e b
n a v ig a t e u r :c l ie n t W e b
« c o m m u n ic a t io n » a c c è s f t p
« c o m m u n ic a t io n » a c c è s h t t p
« c o m m u n i c a t i o n » R é c u p é r a t i o n d e s l i s t e s
« c o m m u n i c a t i o n » E n v o i d e s v o t e s a u t h e n t if ic a t io n ( p o r t s é r ie )
v e r s l' u t ilis a t e u r ( s o u r is , c la v ie r , é c r a n )
v e r s l' u t ilis a t e u r
( s o u r i s , c la v ie r , é c r a n )
a)
b)
É l e c t e u r
p a g e id e n t if ic a t o n
le c t e u r d e c a r t e v a lid a t i o n
a f f i c h a g e p a g e id e n t if ic a t i o n
r é c u p é r a t io n
c o d e s e c r e t c o m p a r a is o n d u c o d e
a f f ic h a g e p a g e i n f o r m a t io n s
p a g e in f o r m a t io n s
c o n f ir m a t io n d e l ' a c c o r d
r é c u p é r a t io n
d e l a li s t e é le c t o r a l e L is t e é l e c t o r a l e
a f f ic h a g e p a g e c h o ix d ' é le c t i o n p a g e d e c h o ix
d ' é le c t io n
s u it e . . .
c o m p a r a is o n a v e c le n o m d e l' é le c t e u r
E le c t e u r E le c t i o n V é r if ic a t io n d e s h e u r e s d e s é l e c t io n s ( o k ? )
C li e n t _ d e _ v o t e
É l e c t e u r
: P a g e I d e n t i f i c a t i o n
1 . V é r if i e r V a li d i t é ( )
: P a g e I n f o r m a t i o n
1 . 1 Af f i c h er P a g eI D
3 .4A fi c ha ge Pa ge Ch oix Éle ct i on ()
: E l e c t e u r 3 .3V
é rifierÉ lig ib ilité
3 C o n f ir m a t io n A c c o r d ( )
P a g e C h o i x É l e c t i o n
: E l e c t i o n : L e c t e u r
: L i s t e E l e c t o r a l e : C l i e n t d e V o t e
2 . 1 R é c u p é r e r C o d e ( ) 2 . 2 C o n f i r m e r C o d e O k ( )
2 R e ce v o i r Co d e S ec e t ( )
2 . 3A f fi c he r Pa g eI n fo s ()
3 . 1 D eb u te r () 3 .2Vé rifie rHe ures ()
3 .2 .1Co nfirme rHe ure 3 .3.1
É lig ib ilité Ok
3 . 3 . 1 R é cu p é r e r I D 3 . 3 . 2 R e tou r I D
a)
b)
É l e c t e u r
p a g e i d e n t i f ic a t o n
a f f ic h a g e p a g e id e n t if i c a t io n
r é c u p é r a t io n
c o d e s e c r e t c o m p a r a is o n d u c o d e
p a g e d e v o t e
v é r if ic a t io n
d ' é l ig i b i lit é lis t e
é l e c t o r a le
E le c t i o n r é c u p é r a t io n d e s
c h o ix d e v o t e a f f ic h a g e
p a g e d e v o t e
p a g e d e
c o n f i r m a t io n a f f i c h a g e p a g e
d e c o n f ir m a t io n
g é n è r a t io n d u b u lle t in
c r y p t a g e d u b u l le t in
e n r e g i s t r e m e n t a f f i c h a g e p a g e
c o n f i r m a n t l ' e n r e g i s t r e m e n t p a g e c o n f i r m a n t
l' e n r e g i s t r e m e n t
s u i t e . . .
B u lle t i n C lie n t _ d e _ v o t e
E l e c t e u r
: P a g e i d e n t i f i c a t i o n
1 . 4 V é r if ie r é lig ib ilit é
: P a g e d e v o t e
: P a g e c o n f i r m a t i o n
: P a g e c o n fi r m a n t v o t e e x é c u t é
: C l i e n t d e v o t e
: L i s t e
é l e c t o r a l e : É l e c t i o n : B u ll e t i n
1 d e m a n d e d u c o d e 1 . 1 « S a is ie d u c o d e »
1 . 2 R é c u p é r e r C o d e
1.3ComparerCode
1 . 5 R é c u p é r e r C h o ix
1 . 6 C r é e r ( )
1 . 7 A f f ic h e r ( )
2 d e m a n d e r u n c h o ix d e v o t e 2 . 1 « E n t r e r u n c h o ix d e v o t e »
2 . 2 C r é e r ( ) 2 . 3 A f f ic h e r ( ) 2 . 4 d e m a n d e r u n e c o n f ir m a t io n
2 . 5 « E n t r e r la c o n f ir m a t io n »
3 G é n é r e r le b u lle t in
3.1Crypter 3.2 Enregistrer/expédier
3 . 3 C r é e r ( ) 3 . 4 A f f ic h e r ( )
L i s t e _ E l e c t o r a l e
- D a t e _ d e r _ m a j : D a t e - C o m m e n t a i r e : S t r i n g
+ n o m P r e s e n t ? ( I D : s t r i n g ) + d e j a V o t e ? ( I D : s t r i n g )
E l e c t e u r - I d e n t i f i a n t : S t r i n g - N o m : S t i n g - P r e n o m : S t r i n g - D a t e _ n a i s s a n c e : D a t e - A d r e s s e : S t r i n g
E l e c t i o n - N u m e r o : I n t e g e r - D a t e : D a t e - H e u r e _ d e b u t : T i m e - H e u r e _ F i n : T i m e
+ H e u r e O k ? ( ) + g e t C h o i x ( )
C h o i x _ d e _ v o t e - N u m e r o : I n t e g e r - N A S _ C a n d i d a t : S t r i n g - N o m _ C a n d i d a t : S t r i n g - P r é n o m _ C a n d i d a t : S t r i n g - D a t e _ n a i s s _ C a n d i d a t : S t r i n g - N o m _ p a r t i : S t r i n g
+ g e t L i b e l l é ( )
B u l l e t i n _ d e _ v o t e - N u m é r o : I n t e g e r
- D a t e _ v o t e : D a t e - H e u r e _ v o t e : T i m e
+ s e t C h o i x ( u n C h o i x : C h o i x D e V o t e ) + c r y p t a g e ( )
+ e n r e g i s t r e m e n t _ e x p é d i t i o n ( )
C l i e n t _ d e _ v o t e - N u m é r o : S t r i n g
+ g e t C o d e S u r L a C a r t e ( ) + v e r i f C o d e S e c r e t ( c o d e : s t r i n g ) P a g e _ d e _ l _ i n t e r f a c e
+ a f f i c h e r ( )
P a g e I d e n t i f i c a t i o n
é l e c t e u r
P a g e d ' i n f o r m a t i o n s
+ c o n f i r m e r ( )
P a g e d e c h o i x d ' é l e c t i o n
P a g e d e v o t a t i o n
P a g e d e c o n f i r m a t i o n
+ c o n f i r m e r ( )
P a g e c o n f i r m a n t l ' e n r e g i s t r e m e n t
d u v o t e 0 . . n
1
I n s c r ir e
V o t e r
0 . . n 0 . . n 1
0 . . n 1
2 . . n
C o n t e n ir
C o n c e r n e r
0 . . n
0 . . n
1 1
S é le c t io n n e r
U t ilis e r
A f f ic h e r
0 . . n 0 . . n
a)
Les paires de parenthèses n'ont pas besoin d'être une classe, mais un simple attribut de l'expression. On pourrait utiliser un booléen pour indiquer lorsqu'on veut s'en servir... ou un int pour signifier qu'un expression comme (((a))) est valable.
b)
E x p r e s s i o n
- n o m b r e P a i r e s P a r e n t h è s e s : i n t e g e r
I t e m
+ e v a l u e r ( ) + t o S t r i n g ( )
V a r i a b l e - t y p e : e n u m - v a l e u r : S t r i n g + g e t T y p e ( ) + g e t V a l ( )
C o n s t a n t e v a l e u r : r e e l O p é r a t i o n
n b O p e r a n d e s : i n t e g e r
1 . . n
O p é r a t e u r t y p e : e n u m ( + , - , * , / , . . . )
+ c a l c u l e r ( o p é r a n d e s )
F o n c t i o n
+ c a l c u l e r ( o p é r a n d e s )
0 . . 1 0 . . n
0 . . n
I c i é v i d e m m e n t c e s o n t e n q u e l q u e s o r t e d e s p s e u d o - c l a s s e s q u i n ' o n t p a s à ê t r e c o n c r è t e m e n t i m p l a n t é e s e n p r a t i q u e c o u r a n t e , m a i s q u i
p o u r r a i e n t l ' ê t r e s i o n d é s i r a i t c r é e r u n m o d è l e d e s i m u l a t i o n .
a :I t e m b :I t e m c :I t e m d :I t e m e :I t e m f :I t e m g :I t e m
+ # 1 :F o n c t io n
f u n c :F o n c t io n + # 2 :F o n c t io n
/ # 1 :F o n c t io n
/ # 2 :F o n c t io n
* # 1 :F o n c t io n - # 1 :F o n c t io n
+ # 3 :F o n c t io n