0% ont trouvé ce document utile (0 vote)
205 vues6 pages

Ateliers de Génie Logiciel - Examen 2011

Le document présente un examen principal pour des étudiants de 2ème année en Génie logiciel à l'Université de Tunis. Il contient des questions sur les diagrammes de la vue logique, la conception d'interfaces, le concept de réutilisation, et des exercices pratiques sur la gestion d'un festival de documentaires. Les étudiants doivent également générer du code C++ basé sur un diagramme de classes fourni.

Transféré par

utilisateur em
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
205 vues6 pages

Ateliers de Génie Logiciel - Examen 2011

Le document présente un examen principal pour des étudiants de 2ème année en Génie logiciel à l'Université de Tunis. Il contient des questions sur les diagrammes de la vue logique, la conception d'interfaces, le concept de réutilisation, et des exercices pratiques sur la gestion d'un festival de documentaires. Les étudiants doivent également générer du code C++ basé sur un diagramme de classes fourni.

Transféré par

utilisateur em
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ﺍاﻟﺟـﻣـــﻬﮭـﻭوﺭرﻳﯾﺔ ﺍاﻟﺗــــﻭوﻧـﺳـﻳﯾـﺔ‬ 
        ‫ ﻭوﺯزﺍاﺭرﺓة ﺍاﻟـﺗﻌﻠﻳﯾﻡم ﺍاﻟﻌﺎﻟﻲ‬ 
‫ ﺟﺎﻣــــﻌــﺔ ﺗــﻭوﻧــﺱس ﺍاﻟﻣــﻧـﺎﺭر‬ 
‫ ﺍاﻟﻣﻌـﻬﮭـﺩد ﺍاﻟـﻌﺎﻟـﻲ ﻟﻺﻋـﻼﻣـﻳﯾـﺔ‬ 
Année Universitaire : 2010/2011
EXAMEN PRINCIPAL

Niveau d’étude : 2ème année ARS Documents non autorisés


Matière : Ateliers de Génie logiciel

Question de cours : (5 pts)


1. Donner le (les) diagramme(s) faisant partie de la vue logique (1pt)

a- diagramme de déploiement

b- diagramme de classes

c- diagramme de séquence

2- A la conception d’une IHM, on doit s’intéresser au modèle d’interaction,


qu’est-ce que c’est ? (1pt)

a- Le contenu et l’esthétique de l’interface

b- La facilité d’utilisation de l’interface

c- La connaissance des utilisateurs

d- La connaissance de la tâche

3- Qu’est-ce que le Reuse ? (1pt)

a- L’étude d’un objet pour déterminer son fonctionnement interne

b- La réutilisation des objets ou éléments déjà existants en utilisant


des bibliothèques de composants

c- L’analyse sémantique du code

4- Les outils de l’AGL doivent connaitre la structure logique et


l’organisation des fichiers qu’ils utilisent. A quel niveau de l’intégration se
trouve-t-on ? (1pt)

a- Intégration des données

b- Intégration des activités

c- Intégration de l’interface

1  
 
5- Un IDE est un AGL qui intervient principalement dans la phase : (1pt)

a- Conception

b- Développement

c- Spécification

Exercice 1 (2 pts)

Donner le diagramme de classes correspondant à cette fenêtre (concentrez-vous


sur les composantes de cette fenêtre).

Barême :

• Classes : (1)
• Composition (1) ou Agrégation (0.5)
• Héritage (optionnel) (+0.5)

2  
 
Exercice 2 (7 pts)
1/ Description Textuelle (2)

Résumé  
  Titre  :  Gestion  du  festival  «  Doc  A  Tunis  »  
  But  :   Création   d’une   application   pour   la   classification   des   documentaires   du   festival   et   la  
gestion  des  notes,  des  rôles  et  des  utilisateurs.  
  Acteurs  :   Personne,   Responsable   des   inspections,   Responsable   d e   p roduction,   Jury   et   Président  
du  jury  
  Responsable  :  Moi-­‐même  
  Date  de  création  :  01/05/2011  
Préconditions  
  1.  Chaque  acteur  manipulant  le  système  doit  s’authentifier  
  2.  Les  rôles  des  d ifférents  acteurs  sont  définis  par  le  créateur  du  système  au  préalable  
  3.  Cette  application  doit  être  hébergée  sur  internet  
  4.  Un  jury  doit  choisir  l’ensemble  des  films  qui  pourront  participer  au  festival  
Enchaînements  
  Evènement  déclencheur  :  les  films  qui  vont  participer  au  festival  sont  sélectionnés  
  Séquences  nominales  :  
  1.  Enregistrement  des  films  :  Le  responsable  des  inspections  doit  enregistrer  les  documentaires  
dans  le  système  et  les  classifier.  
  2.  Publication  du  planning  de  projection  :  Le  responsable  de  production  doit  établir  le  planning  
de  projection  des  différents  documentaires  sur  la  d urée  du  festival  et  les  publier  sur  le  site.  
  3.  Saisie  des  notes  :  les  différents  membres  du  jury,  dont  le  président  du  jury,  visualisent  les  
différents  documentaires  et  leu  attribuent  des  notes  d’évaluation.  Une  fois  toutes  les  notes  attribuées,  
le  président  du  jury  les  réunit  et  les  saisit  dans  le  bulletin  de  n otes  final.  
  Séquences  exceptionnelles  :  
  1.  A  l’établissement  du  planning  de  projection,  le  système  doit  informer  le  responsable  de  
production  en  cas  de  chevauchement  d’horaire  
  2.  Le  président  du  jury  ne  pourra  saisir  les  notes  q ue  si  tous  les  membres  du  jury  ont  terminé  
leur  évaluation.  
Postconditions  
  Le  système  classe  les  d ocumentaires  selon  les  notes  qui  leur  sont  attibuées  et  affiche  le  
documentaire  gagnant.  
Besoins  d’IHM  
  Ce  site  web  soit  être  facile  à  utiliser  pour  la  plupart  des  personnes,  et  doit  fournir  une  interface  
personnalisée  pour  chacun  des  acteurs  prédéfinis  
Contraintes  non  fonctionnelles  
  1.  L’accès  aux  différentes  parties  du  site  doit  être  sécurisé  par  login/mdp  
  2.  Le  site  doit  s’adapter  à  tous  les  navigateurs  web  

3  
 
2/ Diagramme du cas d’utilisation. (3)

3/ Diagramme de séquence du cas d’utilisation “Saisir notes” (2)

4  
 
Exercice 3 (6 pts)

Générer le code C++ correspondant à ce diagramme de classes.

Barême :

• Déclaration des classes, méthodes et attributs simples : (1)


• Déclaration des attributs hérités des autres classes (0.25 chacun -> 2)
• Initialisation des attributs dans les constructeurs : (0.5 chacun -> 2.5)
• Delete dans le destructeur de la classe Employé : (0.5)

5  
 
class  Employé{   class  Fonction{  
       private  :     private  :  
  string  nom_  ;       string  nom_  ;  
  string  prenom_  ;  
    int  RTT_  ;  
  date  dateNaissance_  ;  
  date  dateEmbauche_  ;     public  :  
  real  quotite_  ;   Fonction(string,  int)  ;  
  Fonction  *  fonction_  ;       ~Fonction()  ;  
  Service  *  service_  ;   }  ;  
  List<Salaire>  *  salaires_  ;       Fonction  ::Fonction(string  nom,  int  RTT)  :  
  List<Congé>  *  congés_  ;     nom_(nom),  RTT_(RTT){}  
       public  :  
Fonction  ::~Fonction(){}
Employé(string,string,date,date,real,  
   Service*,Fonction*)  ;  
class  Congé{  
  ~Employé()  ;  
  private  :  
  int  Age()  ;  
  int  congésRestants()  ;       date  dateDebut_  ;  
  int  congésTotaux()  ;       date  dateFin_  ;  
int  congésPris()  ;     public  :  
void  prendreCongés(date,date)  ;   Congé(date,  date)  ;  
void  changerSalaire(real,real,real)  ;       ~Congé()  ;  
}  ;  
    int  nbJours()  ;  
Employé  ::Employé(string  nom,  string    
prenom,  date  dateNaiss,  date     }  ;  
dateEmb,  real  quotite,  Service*  service,   Congé  ::Congé(date  deb,  date  fin)  :  
Fonction*  fonction)  :     dateDebut_(deb),  dateFin_(fin){}  
          nom_(nom),     Congé  ::~Congé(){}  
        prenom_(prenom),                            
          dateNaissance_(dateNaiss),   class  Salaire{  
          dateEmbauche_(dateEmb),     private  :  
        quotite_(quotite),       real  chargesPatronales_  ;  
        service_(service),  
    real  chargesSalariales_  ;  
          fonction_(fonction){  
  salaires_  =  new  List<Salaire>()  ;       real  brut_  ;  
  congés_  =  new  List<Congé>()  ;       date  dateDebut_  ;  
}       date  dateFin_  ;  
Employé  ::~Employé(){     public  :  
  delete  salaires_  ;   Salaire(real,real,real,date,date)  ;  
}  
    ~Salaire()  ;  
class  Service{       real  salaireChargé()  ;  
  private  :       real  SalaireNet()  ;  
    string  nom_  ;       boolean  SalaireEnCours  ?()  ;  
    int  RTT_  ;   }  ;  
  public  :   Salaire  ::Salaire((real  charPat,real  charSal,  
Service(string,  int)  ;   real  brut,date  deb,date  fin)  :  
    ~Service()  ;     chargesPatronales_(charPat),    
}  ;   chargesSalariales_(charSal),  
Service  ::Service(string  nom,  int     brut_(brut),    
RTT)  :     nom_(nom),  RTT_(RTT){}   dateDebut(deb),dateFin(fin){}  
Service  ::~Service(){}    Salaire  ::~Salaire(){}  
6  
 

Vous aimerez peut-être aussi