TD
Transcript of TD
UFRMI 2016 [email protected]
TD Génie Logiciel (L3 SI)
Culture logicielle
Qualité Quels sont les caractéristiques d’un logiciel modulaire ?
Rappelez les niveaux de maturité du CMMI.
Citez des propriétés permettant de caractériser la qualité d’un logiciel.
Quels sont les conséquences d’une complexité élevée selon Mc Cabe ?
Architecture logicielle Expliquez le pattern architectural MVC.
Donnez des exemples d’architecture logicielle.
Donnez le modèle de référence pour un compilateur.
Qu’est-ce qu’un design pattern (patron de conception) ?
Donnez des exemples de design pattern et des cas d’utilisation de ces patterns.
Modélisation Citez les différents modèles de la méthode MERISE ?
Citez les diagrammes de la notation UML ?
Quelles sont les types relations d’un diagramme de classe ?
Processus de développement Rappelez les quatre principaux points du manifeste Agile ?
Donnez une raison pour un chef de projet de développer en utilisant la méthode en spirale.
POO Expliquez les concepts suivants : encapsulation, délégation, héritage et polymorphisme.
Enoncez les principes Open/Close et de substitution de Liskov.
Que peut-on dire d’une classe ayant un WMC et NOC élevés. Que recommandez-vous ?
Environnement de développement Qu’est-ce que la gestion de configuration ?
Citez des exemples d’outils de gestion de configuration.
Gestion de projet
Cycle de vie On souhaite développer un système dont les clients ne sont pas sûrs de ce qu’ils souhaitent.
De ce fait les exigences sont souvent mal définies. Quel serait un modèle de processus
approprié pour ce type de développement ?
L’équipe d’un projet développant un nouveau système est expérimenté dans le domaine. Bien
que le nouveau projet soit assez large, il est peu différent de d’applications qui ont été
développées dans le passé. Quel modèle de processus serait approprié pour ce type de
développement ?
Réalisation du WBS Vous êtes recrutés pour un stage de fin d’étude dans une SSII. Vous devez réaliser un logiciel
de mutualisation de ressources documentaires. Le projet se termine par la rédaction d’un
mémoire et une soutenance. Identifier les activités et la structure de votre WBS.
Chemin critique avec PERT On considère le diagramme de PERT suivant.
Q1 : Quel est le chemin critique de A à J.
Q2 : Quelle est la longueur du chemin critique.
Q3 : Quelle est la date de démarrage au plutôt de l’activité F.
GANTT On considère cet extrait d’un diagramme de GANTT. Combien de ressources au minimum
sont nécessaires pour mener à bien le projet ?
Estimation avec points d’application (voir Annexes) L’objectif de cet exercice est d’illustrer les points d’application dans la méthode COCOMO II,
qui permet de faire des estimations pour les applications graphiques avant la phase de
conception.
On souhaite développer un logiciel de réservation de vol de la compagnie Africa Airlines à
développer en C/C++. Le serveur de base de données héberge déjà les tables nécessaires au
développement.
Dans la phase de spécification, on identifie 3 écrans et un rapport :
o Un écran de réservation pour l’enregistrement d’une nouvelle réservation.
o Un écran de tarification affichant les prix quotidiens par vol.
o Un écran de disponibilité montrant les vols disponibles.
o Un rapport de vente montrant les totaux des ventes pour le mois et l’année, et les
comparants avec les mois et années précédentes
L’écran de réservation requiert trois tables de données, à savoir la table d’information de
contact des clients, la table qui enregistre l’historique du client et la table des slots de temps
disponible. Une vue est suffisante pour l’écran.
Q 1: Quelle est la complexité de cet écran ?
On supposera que les écrans de facturation, de disponibilité et le rapport des ventes sont
respectivement de complexité simple, simple et moyenne. On suppose qu’il n’y a pas de
composant complexe de troisième génération.
Q2 : Quel est le nombre de points d’applications ?
Une évaluation de l’environnement et des développeurs révèle que l’expérience des développeurs est très faible et que le CASE est de catégorie faible.
Q3 : Quel est en hommes-mois l’estimation de l’effort du projet selon COCOMO II ?
Q4 : Que devient l’effort si le taux de réutilisation du projet est estimé à 40% ?
Estimation en points de fonction (voir Annexes) Dans cette question, on souhaite développer un système de gestion de stock. La conception
générale a identifié les fonctions suivantes : o Ajout d’un enregistrement o Suppression d’un enregistrement o Affichage d’un enregistrement o Modification d’un enregistrement o Impression d’un enregistrement
Q1 : Classifier les fonctions selon leur type. On suppose que toutes les fonctions sont simples à l’exception de l’impression qui est complexe. Q2 : Quel est le nombre de points de fonction pour cette application. Q3 : On suppose qu’un point de fonction correspondant correspond à 128 LOC pour le langage et 53 LOC pour le langage Java. Estimez la taille du logiciel si le langage choisi est Java (Idem langage C). Q4 : Après estimation des facteurs d’échelle et des facteurs d’ajustement de l’effort, quel est l’effort nécessaire pour réaliser ce système ?
Inspection MCD Dans le cadre d’un projet un étudiant produit le MCD suivant. Vous êtes chargé de vérifier les
cardinalités du modèle.
Les règles de gestion sont les suivantes :
Un étudiant est inscrit dans une seule filière.
Le nombre de classes par filières est variable mais n’excède pas 10.
Le nombre d’étudiants par classe est variable mais n’excède pas 40.
Diagrammes de classe et de cas d’utilisation (UML) Cas d’étude support – le club vidéo
Un club vidéo a une activité de prêt de cassettes magnétoscope (un film par cassette). Le club dispose
de plusieurs boutiques ou ses adhérents peuvent emprunter des cassettes qu’ils rapportent par la
suite.
Un adhérent peut emprunter un nombre quelconque de cassettes en une ou plusieurs fois. On devra
lui interdire de faire plusieurs emprunts le même jour dans la même boutique mais il pourra le même
jour faire des emprunts dans des boutiques différentes. On devra lui interdire d’emprunter une
cassette s’il a dépassé la date de retour prévue d’une des cassettes qu’il a en emprunt. Lorsqu’il peut
emprunter une cassette, l’adhérent donne le nombre de jours pendant lesquels il compte il compte la
garder (le boutiquier s’arrangera toujours avec l’adhérent pour que la date de retour prévue ne soit
pas un jour de fermeture avant de saisir ce nombre de jours).
L’adhérent peut rendre des cassettes (toutes ou en partie) empruntées par lui ou par un autre
adhérent et il n’est pas obligé d’effectuer ce retour dans la ou les boutiques ou l’emprunt a eu lieu. Le
prix de la location d’une cassette est proportionnel au nombre de jours d’emprunt. Le club veut
pouvoir :
Gérer son stock de cassettes, les emprunts et les retours des cassettes des adhérents.
Enregistrer de nouveaux adhérents (on ne prévoir pas la suppression des adhérents).
Effectuer des statistiques.
Le club a déjà prévu l’ensemble des informations suivantes :
Nom, adresse, numéro de téléphone d’une boutique
Nom, adresse, numéro de téléphone d’un adhérent
Titre, classification (aventure, historique, policier,…), durée de projection, prix journalier de
location d’un film.
Il y’a bien sur plusieurs exemplaires de cassettes pour un même film, on les distinguera par un numéro
d’exemplaire. De plus les cassettes peuvent être situées dans des boutiques différentes.
Eventuellement un certain nombre d’informations seront ajoutées afin d’effectuer les opérations
suivantes :
Prêt et retour de cassettes
Enregistrement d’un nouvel adhérent
Edition des films disponibles, des films empruntés,
Edition de statistiques afin de déterminer les films les plus demandés, les adhérents qui sont
les plus gros consommateurs…
Le gérant du club souhaite automatiser les requêtes suivantes :
Pour un prêt
o Vérifier le droit d’un adhérent d’emprunter une cassette.
o Vérifier qu’au titre du film qu’il veut emprunter correspond une cassette disponible
dans la boutique ou le prêt est demandé.
o Le cas échéant, renseigner cet adhérent, c’est-à-dire lui fournir les noms des boutiques
éventuelles où il y’a des cassettes disponibles correspondant à ce film.
o Quand le prêt peut être réalisé dans la boutique où se trouve l’adhérent, mettre à jour
toute la base.
Pour un retour :
o Fournir le prix à payer pour chaque cassette rendue et mettre à jour toute la base, que
le retour d’une cassette soit celui de l’adhérent présent dans la boutique ou celui qu’il
effectue pour un autre.
Q1: Réaliser le diagramme de cas d’utilisation. Développez le cas d’utilisation « Gestion des prêts » Q2 : Réaliser le diagramme de classe (métier) correspondant à ce problème.
Génération de code (Java) à partir d’un diagramme de classe Le CROU gère des logements en ville pour les étudiants. Il dispose de renseignements concernant des
propriétaires de villas, appartements, garages…
- nom, prénom et adresse des propriétaires.
- nature et adresse du bien possédé par un propriétaire
Un propriétaire peut vouloir louer des biens. Nous ne souhaitons pas toutefois d’auto-location. En
outre, la location se fait à partir d’une date donnée, pour une période donnée et moyennant un loyer
mensuel précis.
Le CROU envisage de percevoir sur les loyers un pourcentage, variable selon la nature du bien. Cela
pourrait servir à alimenter un fond social d’aide aux étudiants en difficulté.
Q1 : Proposez un diagramme de classes. Q2 : Transformez le diagramme de classes en code Java. Q3 : Comparez avec votre AGL (StarUML ou ArgoUML).
Test Logiciel Au cours d’un de vos projets, il vous est demandé d’écrire un programme vérifiant la validité
d’un numéro de sécurité social.
Le numéro de sécurité social est constitué de 9 chiffres :
o Le premier chiffre correspond au sexe (1 : homme, 2 : femme)
o Les chiffres 2 et 3 correspondent au mois de naissance
o Les chiffres 4 et 5 correspondent à l’année de naissance (89 pour 1989 et 01 pour
2001)
o Les chiffres 6, 7, 8 correspondent au département de naissance (Il y’a 108
départements dans le pays – les codes des départements sont compris entre 001 et
108, la valeur 000 est réservée pour l’étranger)
o Le dernier chiffre est une la somme des 8 premiers chiffres modulo 10.
Rédigez les cas de tests nécessaires pour tester le logiciel.
On considère les deux programmes erronés ci-dessous. Chacun inclus un cas de test qui
provoque un échec du programme :
Répondez aux questions suivantes pour chaque programme :
Q1 : Identifiez la faute. Q2 : Si possible identifiez un cas de test qui n’exécute pas la faute.
Q3 : Si possible identifiez un cas de test qui exécute la faute mais qui ne résulte pas en un état erroné. Q4 : Si possible identifiez un cas de test qui résulte en une erreur, mais pas un échec. Q5 : Pour ce cas de test, identifiez le premier état d’erreur. Q6 : Corrigez la faute et vérifiez que le test produit désormais le résultat attendu.
Annexe 1: Estimation des Points d’application dans Cocomo II d’après B. Boehm.
Step 1: Assess Application Counts: estimate the number of screens, reports, and 3GL components that will comprise this application. Step 2: Classify each element instance into simple, medium and difficult complexity levels depending on
values of characteristic dimensions. Use the following scheme:
For Screens For Reports
Numbe
r of
Views
contain
ed
# and source of data tables Number of
Sections
contained
#and source of data tables
Total<4
(<2srvr<3
clnt)
Total<8
(2/3 srvr
3-5 clnt)
Total 8+
(>3 srvr
>5 clnt)
Total<4
(<2srvr<3
clnt)
Total<8
(2/3 srvr
3-5 clnt)
Total 8+
(>3 srvr
>5 clnt)
<3 Simple simple medium 0-1 simple simple medium
3-7 Simple medium difficult 2 or 3 simple medium difficult
>8 Medium difficult difficult 4+ medium difficult difficult
Step 3: Weigh the number in each cell using the following scheme. The weights reflect the relative effort
required to implement an instance of that complexity level:
Element Type Complexity-Weight
Simple Medium Difficult
Screen 1 2 3
Report 2 5 8
3GL Component 10
Step 4: Determine application Points: add all the weighted element instances to get one number, the Application Point count. Step 5: Estimate percentage of reuse you expect to be achieved in this project. Compute the New
Application Points to be developed, NAP=(Application Points) (100-%reuse)/100.
Step 6: Determine a productivity rate, PROD=NAP/person-month, from the following scheme.
Developers’ experience and capability Very Low Low Nominal High Very High
CASE maturity and capability Very Low Low Nominal High Very High
PROD (Productivity factor) 4 7 13 25 50
Step 7: Compute the estimated person-months: PM=NAP/PROD.
Annexe 2 : Estimation des facteurs d’échelle
(COCOMO II / Estimation en points de fonction)
Name Very low
(0.05)
Low
(0.04)
Nominal
(0.03)
High
(0.02)
Very High
(0.01)
Extra High
(0.00)
Precedentedness Thoroughly
unprecedented
Largely
unprecedented
Somewhat
unpreceden
ted
Generally
familiar
Largely
familiar
Thoroughly
familiar
Flexibility Rigorous Occasional
relaxation
Some
relaxation
General
conformity
Some
conformity
General
goals
Significant risks
eliminated
Little (20%) Some (40%) Often (60%) Generally
(75%)
Mostly
(90%)
Full (100%)
Team interaction
process
Very
difficult
Some difficult Basically
cooperative
Largely
cooperative
Highly
cooperativ
e
Seamless
interaction
s
Process maturity Level 1 Level 2 Level 2+ Level 3 Level 4 Level 5
Annexe 3 : Estimation des facteurs d’ajustement de l’effort
(COCOMO II / Estimation en points de fonction)
Identifier Name Ranges
(VL – EH)
VL/L/N/H/VH/EH
RCPX product Reliability and
ComPleXity
0.5 – 1.5
RUSE required reusability 0.5 – 1.5
PDIF Platform DIFficulty 0.5 – 1.5
PERS PERSonnel capability 1.5 – 0.5
PREX PeRsonnel EXperience 1.5 – 0.5
FCIL FaCILities available 1.5 – 0.5
SCED SChEDule pressure 1.5 – 0.5
Annexe 4 : COCOMO II / Estimation des points de fonction
Type of functions Complexity
Low Average High
External input 3 4 6
External output 4 5 7
Internal file 7 10 15
External file 5 7 10
External Inquiry 3 4 6