mercredi 28 novembre 2007

Les notes de TD et de "DS" sont affichées

J'ai noté largement (j'ai considéré parfois que la réponse, bien qu'ayant aucun sens, était forcément une étourderie comme tout le monde en fait. Et j'ai mis la note max à la question. Bof ! on ne donne pas un diplôme de médecin, n'est-ce pas. Et il faut être productif.)

Il se peut qu'il y ait des erreurs de recopie de notes. Vous pouvez venir vérifier vos copies et dossiers. M'adresser un courriel pour un rdv.

Il me reste à refaire ce cours en Bac+4 dans deux mois. Et ce sera fini pour moi de ce cours au moins dans notre bonne université.

Peut-être une autre vie professionnelle ailleurs ...

Heureusement, les écrits servent à d'autres. Ce courriel semble le dire :

"
Bonjour,

Juste un petit mot de félicitations pour
votre excellent livre sur la

mesure du logiciel. Je l'avais lu il y a
7 ou 8 ans mais je l'ai

redécouvert cette semaine durant le calme
d'août... Il est simple et

agréable à lire. J'ai eu votre email via
google et suis arrivé sur IUT

de Nantes. Vos élèves ont de la chance.
Bravo.


XXXXXXX
Direction du Pilotage des Systèmes
d'Information

Groupe XXXXXX

Je n'ai donc pas perdu tout mon temps
et volé ma paye.

Il s'agit d'un très grand groupe qui
vient de signer un très très
gros contrat dont nous a parlé la presse.

Si j'ai des notes de 0,1 en TD j'ai mis
un 19,9 à un étudiant.


Pour clore ce bloc-notes, cette citation
extraite de

Erik Orsenna, Voyage au pays du coton,
Petit précis

de mondialisation, Le livre de poche

"- Comment vois-tu l'avenir de la Chine ?
- Pas différent de son passé. Mon pays
a toujours été la première puissance du monde.

Sauf durant les deux derniers siècles.
Dans vingt ans,

elle aura recouvré son rang.
- Et vous ne craignez pas la concurrence
indienne ?

- L'Inde est trop démocratique. Elle y
perd beaucoup d'énergie.

Bo nous parle souvent de Paris , où il
est resté 6 ans [...]

Une question le préoccupe :
- Pourquoi, en France, n'aimez-vous pas
les enfants ?

Je m'étonne, me récrie, le prie de développer.
- En France, vous ne travaillez pas
assez. Donc vous préparez mal

l'avenir de vos enfants.
Et il enfonce le clou :
- Chaque année, la dette de la France
augmente. Seuls ceux qui

ne travaillent pas assez s'endettent.
Et qui doit rembourser ?

Les enfants.
Que répondre? "

page 275-276

dimanche 25 novembre 2007

Des copies non identifiées !!!

J'en fait quoi ?

On lance une expertise graphologique ?

samedi 24 novembre 2007

Où la plupart d'entre vous ont trouvé une partie des réponses faites

aux questions :
  • Qu'est ce qu'un test fonctionnel,
  • Qu'est ce qu'un test structurel,
  • Qu'est ce qu'un test statique,
  • Qu'est ce qu'un test dynamique,
  • Qu'est ce qu'un test boîte blanche,
  • Qu'est ce qu'un test boîte noire
  • Qu'est-ce qu'un oracle de test
du "DS" ?

Les réponses étaient dans le poly et répétées, commentées en cours.

Dans un blog d'ancien étudiant ?

Je vous rappelle qu'il vaut mieux consulter, si vous voulez voir ailleurs, les sites d'universités reconnues ou lire les livres recommandées dans notre bibliographie.

Dans d'autres matières, des collègues m'ont signalé de telles pratiques. Désolantes !

Lire des dizaines de fois la même réponse fumeuse - qui est passée au téléphone arabe -, parfois erronée, bien sûr non illustrée par le moindre exemple, ou pire un exemple en contradiction avec les interprétations possibles du texte fourni ....

Exemple :

Test structurel :
"On a un succès à l'état complet du système que l'on vérifie à chaque ligne"

mercredi 7 novembre 2007

Les pièges de la Toile

lire ici

Ce que je lis dans les copies

quand il y a quelque chose à lire ... Rappelons que nous vous avions annoncé la plupart des questions lors des cours ("je vous demanderai cela lors du contrôle car c'est le b a ba"), que les autres questions étaient dans le poly, etc.



- J'ai lu des choses étonnantes sur les chemins dans un graphe de contrôle. J'ai donné un graphe (celui d'un if then else) : 3 noeuds, 4 arcs. Certains m'ont donné comme chemin, une suite de 4 noeuds.

- J'ai demandé "Qu'est-ce que l'homme-mois ?", dans plus des 3/4 des cas je n'ai pas obtenu la réponse. Au mieux des choses comme "si 6 hommes travaillent sur un projet pendant un mois, on dira que le projet vaut 6 homme-mois ou 1 homme pendant 6 mois".
Je suis inquiet. J'avais bien insisté en fournissant même deux graphiques pour faire comprendre et utilisé l'analogie avec une surface. Si on prend comme unité de mesure 20 m2. Si on a un rectangle de 2 mètres sur 10 mètres il est mesuré par 1 "vingt mètres carrés"?. Si on a un rectangle de 4 mètres sur 5, il est mesuré par 1 "vingt mètres carrés".

En conséquence, à la question "Quelle critique fait-on à cette unité ?" j'obtiens un discours dont il est difficile d'inférer du sens.

- "un homme-mois est une unité de mesure de l'efficacité d'un programme" suit un blabla dont j'extrais : "cette unité de mesure n'est pas très efficace" !!! Veuillez me rappeler combien d'heures d'économie et gestion en deux ans ?

Je peux changer "programme" par "programmeur", ce n'est pas mieux !

J'ai aussi obtenu des réponses comme : "un homme-mois représente la quantité de travail fournie par un homme travaillant un mois" ! Etonnant, n'est-ce pas !
C'est comme la mesure du niveau d'étude. Etudiant-année mesure la quantité de connaissances (de travail ?!) fournie par un étudiant au statut d'étudiant pendant un an". Les fameux "Bac + 2, Bac + 4". Moi, j'ai un sacré niveau : Bac + 43.

Et voici encore :

"Un homme-mois est une évaluation du nombre de ligne de code fournit par un développeur en 1 mois".

SSII vous pouvez prendre de la graine là dedans pour vos facturations ! Pour l'orthographe, attention ! il reste encore des gens qui tiquent quand ils reçoivent des factures bourrées de fautes d'orthographe.

Rappel : l'homme-mois sert à mesurer l'effort. Si on a dépensé la paye d'un homme pendant un mois, on a fait un effort d'un homme-mois. C'est commode pour facturer ! ce n'est pas fameux pour faire de la planification !
On peut faire beaucoup d'effort pour former les étudiants, ça ne veut pas dire que les étudiants ont fait beaucoup de travail !

J'ai trouvé aussi 'Un homme-mois est une unité de mesure représentant le nombre d'hommes affectés à un projet pendant un mois" !
Et 1O hommes-mois, ça fait combien ?
Le même étudiant note comme critique "Cette unité n'est pas fixe". Facile, la critique. On écrit une c... et en suite on dit que c'est une c...

Bien sûr ces étudiants se sont dispensé d'étudier le cours sur la théorie de la mesure. Ils savaient, voyons !


Dans une société où la mesure se généralise ....ouille yayaye !

- Qu'est-ce qu'un oracle de test ? "Cela correspond à la succession de test automatique" !!!
L'étudiant fournit l'exemple donné en cours (ouf ! un qui a écouté ! merci, merci !) : "ex. d'oracle automatique : Pour le calcul de la racine carré c'est : résultat au carré = entrée ?" Vous voyez la relation entre la réponse à la question et l'exemple ? J'ai enfin compris !
J'avais aussi donné l'exemple du logiciel de calcul de la taxe d'habitation, en demandant comment obtient-on l'oracle de test.
Quel plaisir que la lecture des copies ! des énigmes à résoudre !

J'avais en cours fait référence à l'oracle de Delphes (lors de la présentation de la méthode de Delphes pour estimer). Mais en lisant les copies, je pense que beaucoup ne savent pas ce qu'est qu'un oracle.

P.S. je viens de lire la même "définition" de l'oracle de test dans une autre copie. Il semble qu'au lieu d'utiliser le polycopié des étudiants soient allés sur la Toile (ç'est bien mieux !) et comme souvent, y prennent le plus mauvais.

Je pense aussi au futur plaisir des utilisateurs de logiciels et d'informaticiens devant lire "spécifications" et "commentaires de code".

- Je demandais d'exposer en quelques lignes la méthode "agile" X-Programming. J'avais insisté sur le fait que la méthode consistait à commencer par écrire les jeux de tests AVANT de commencer à coder. Très bien ! (une manière de dire sans le dire explicitement, qu'il faut spécifier avant de coder. Beaucoup (parmi ceux ayant écrit quelque chose) ont écrit des choses comme "aucune analyse, juste du code". Coco, ça c'est une méthode de nouvelle génération ! C'est comme la prose, vous la pratiquiez sans le savoir. Comme quoi, l'enseignement ne sert à rien.

- Il y a eu un cours et un td sur "la méthode des points de fonctions" (avec analyse critique de cette méthode). J'ai demandé en contrôle d'exposer cette méthode. Je lis des choses comme :

"La méthode des points de fonction permet de voir la rentabilité du programme. C'est une alternative au nombre de lignes de codes." !!!!
"Elle sert à calculer l'efficacité d'une tâche" !!!

- j'avais des questions sur le vocabulaire élémentaire des tests.
A test boîte blanche, j'ai eu plusieurs fois cette phrase (où a-t-elle été recopiée ?) : "On vérifie à chaque ligne l'état complet du système"

- Je demandais de dire en quelques lignes ce qu'est le CMM (maintenant on a le CMMI). J'avais adressé à tous le courriel de la région des Pays de la Loire qui finance la formation des entreprises de la région pour qu'elles "montent les gradins" du CMM (je ne sais plus trop comment motiver ! il en fait des efforts le prof !), je n'ai obtenu que quelques réponses. En voici une :

"Le CMM est un ensemble de 24 macros-processus organisés en 5 catégories"
Processus de quoi , de qui , de ??? mystère et boule de gomme. Je ne pense pas que ceux qui n'ont pas écouté le cours, n'ont pas lu le poly des transparents vont savoir avec de texte ce qu'est le CMM.

- Orthographe

Plusieurs fois j'ai lu
"dans cette exemple",

"résonnement".
Raisonner comme un tambour ... Résonner ...

et j'ai sous les yeux :

"dinamique"
"on vérifit"
"avec les entrées définient à partir de ces entrées" !!!!
Ceci en deux lignes !
"les votants souhaiterais"
"valeure"
"l'invariant est définie", j'ai aussi "est définit" et du "on définie", "ont définit". Et je vais retrouver cela dans les rapports de stage ! Prions Saint Taxeror




- Plus de la moitié de la promo (chut !) est incapable de passer d'un code en pseudo pascal avec un while dans lequel est imbriqué un if then, au graphe de contrôle (la promo a eu un cours sur les graphes !) . Dire qu'il y a 35 ans dans les initiations à l'informatique en 1 semaine, on obtenait du 90 % de bon résultat à cet exercice. Le niveau monte. Il faut maintenant de nombreuses années pour atteindre le niveau.
Vous me direz que "pas de problème, il y a des logiciels qui font le boulot. Donner le graphe de contrôle d'un programme" (d'ailleurs, je vous en ai fait utiliser un)... mais si on ne comprend pas ce qu'ils affichent !


- A la question annoncée et donc posée sur les échelles de mesure, question essentielle, au bout de 40 copies, je n'ai trouvé qu'une seule réponse ! On continuera à faire n'importe quoi avec les entiers !

J'exagère ! j'ai eu par exemple "types d'échelles : mètre, décimètre, centimètre, micromètre, picomètre" Eh ! je n'avais mis que 5 cases ! J'ai donc évité le nanomètre. Il faut dire que le mètre convient bien pour faire de la mesure en informatique, non ?
Rappelons que nous avons donné : nominale, ordinale, intervalle, ratio, absolue.

Bof, les profs peuvent ajouter 10 points à chaque étudiant, même si la notation est sur une échelle ordinale (rappel : quand il fait 10 ° celsius, il ne fait pas deux fois plus chaud que quand il fait 5° celsius !), la théorie c'est inutile, voyons.

Au fait, avec les mètres, centimètres etc on a une échelle ratio. La transformation admissible est M' = aM avec a >0. On apprend cela dans les petites classes. Si vous mesurez 1 mètre, vous mesurez 100 centimètres.

Bon, j'arrête.

P.S. : je rappelle que les corrigés ont été distribués AVANT le contrôle. On fait des efforts !

mardi 23 octobre 2007

Corrigé Gestion de version

Q1. Donner deux raisons d'utiliser un système de gestion de version
lors du développement d'un projet.

R1. Plusieurs réponses possibles parmi
- gérer le développement entre plusieurs personnes
- système de sauvegarde
- un même référentiel pour tous les développeurs
- mise à disposition d'outils pour gérer la sauvegarde/restauration,
les conflits, l'historiques...
- gérer plusieurs distributions ou branches de développement
- conserver un historique et revenir en arrière

Q2. Donner les grandes étapes de la mise en versionning initiale d'un
projet à l'aide de subversion.

R2. J'ai volontairement donné une description étendue des étapes (je
ne m'attends pas à autant de la part des étudiants)
0. Création d'un répertoire référentiel sur un serveur subversion
(svn) (réalisée par l'administrateur du serveur svn)
1. Création sur une machine locale des sources du projet à versionner
selon une structure en 3 répertoires trunk, tags et branches (réalisée
par un développeur)
2. L'Import des sources au sein du référentiel (réalisée par le développeur)
3. La suppression des sources en local (réalisée par le développeur)
4. La récupération d'une première copie locale (checkout) (réalisée
par le développeur)
Par la suite, une fois une première récupération réalisée, le
développeur met à jour le référentiel avec des commandes "commit" et
récupère les mises à jour effectuées par d'autres à l'aide de la
commande "update".

corrigé du DS

Presque toutes les questions ont fait l'objet de solutions dans le poly des transparents du cours ou lors des TD.

Le sujet du DS

Sans les graphes (sujet donc incomplet)

Question sur Gestion de version (sur 5)
Réponse à faire sur une feuille annexe séparée.
Q1. Donner deux raisons d'utiliser un système de gestion de version
lors du développement d'un projet.
Q2. Donner les grandes étapes de la mise en versionning initiale d'un
projet à l'aide de Subversion.

Question 1 (sur 5)
Dudule a prévu de coder sur quatre positions les valeurs des cinq critères a, b, c et d. Chacun de ces cinq critères prennent leur valeur dans l’ensemble 0..5.
Question :
Si on considère abcd comme un entier, abcd  0000 … n, quelle est la valeur de n.

Question 2 (sur 4)
Soit le programme suivant :
1. pos_sum(a, num_of_entrie, sum)
2. sum = 0
3. int i = 1
4. while (i<=num_of_entries) 5. if a[i] > 0
6. sum = sum + a[i]
7. endif
8. i = i+1
9. end while
10. end pos_sum


Question 2.1 Faire le graphe de contrôle dont les nœuds seront des séquences. Vous les étiquetterez par le ou les numéros de lignes du programme. Vous étiquetterez les arcs par les prédicats.














Question 2.2 Faire le graphe de contrôle selon la notation de Warnier (norme AFNOR).















Question 2.3 Donnez un cas de test qui couvre toutes les décisions

Question 3 (sur 4)
Soit le programme suivant
Procedure REWRITEFICHIER (option:byte;var avorter:boolean);
(* INSTRUCTION REWRITE AVEC MESSAGE D'ERREUR *)
(* option : 0 = ECHECS.CAT, 1 = PARTIE *)
Var erreur:integer;
reponse:char;
Begin
avorter:=false;
repeat
rewrite(fichier);
erreur:=ioresult;
if erreur<>0
then
begin
case option of
0:ERREURDISQUE(5,reponse);
1:ERREURDISQUE(11,reponse);
end;
case reponse of
'a','A':avorter:=true;
end;
end;
until (erreur=0) or (avorter);
End;


Question 1
Faites le graphe de contrôle dont les nœuds seront des séquences. (utiliser une feuille annexe). Vous avez bien lu : les nœuds sont des séquences (ne faites pas un nœud par instruction, à moins que ce soit une séquence maximale).
Question 2
Quelle est la formule du nombre cyclomatique ?



Question 3
Critique de la « mesure de Mc Cabe » (complexité cyclomatique )







Question 4
Quelle est la valeur de la mesure de McCabe pour ce programme ?




Questions 4 (sur 7 )
Question 1
Qu’est-ce qu’un oracle de test ?



Question 2
Qu’appelle-t-on
- test fonctionnel

- test structurel

- test statique

- test dynamique

- test boîte blanche

- test boîte noire


Question 5 (sur 2)
Qu’est-ce que le CMM ?







Question 6 (sur 2 )
Soit le graphe de flot de contrôle suivant :














Quels sont les chemins :
- sensibles aux erreurs

- révélateurs d’erreurs


Question 7 (sur 3)
Soit le graphe de flot de contrôle suivant :












Question 1 Donnez un jeu de test (une seule valeur peut suffire) qui sensibilise un chemin couvrant tous les nœuds.

Question 2 Est-ce que la couverture de tous les nœuds est suffisante pour faire apparaître l’anomalie de ce programme ?

Question 3 Passez au critère « couverture de tous les arcs ». Est-ce que votre DT réponse à la question 1 couvre tous les arcs ?


Question 8 (sur 5)

Quels sont les types d'échelles de mesure ? Pour chacun, donnez le nom du type, un exemple, la transformation admissible entre représentations dans le même type d'échelle.
Réponse 6
TYPE D'ECHELLE (nom) TRANSFORMATION ADMISSIBLE EXEMPLES




















Question 9 (sur 2)
Le comité de pilotage du projet Titanic est composé de 85 personnes. Il est réuni pour classer trois candidats au poste de chef de ce projet titanesque. Nous respecterons ici l'anonymat de ces candidats que nous désignerons pas une lettre.
Voici le résultat du vote :
Pour A > B > C : 23 voix
Pour A > C > B : 5 voix
Pour B > A > C : 12 voix
Pour B > C > A : 17 voix
Pour C > A > B : 10 voix
Pour C > B > A : 18 voix

Quel est le résultat de l'agrégation des préférences de tous les membres du comité ? (vous devez donner comme réponse un ordre, par exemple A>C>B)


Vos commentaires.














Quel problème peut-on rencontrer ?









Question 10 (sur 4)
Question 1 A quoi sert la « méthode des points de fonction » ?





Question 2 Exposez la méthode des points de fonction




















































Question 11 (sur 2)
Exposez en quelques phrases la méthode « agile » X-Programming




















Question 12 (sur 2)
Soit le programme
1 sum = 0
2. read(n),
3. i = 1
4. while (i<=n) 5. read(number) 6. sum = sum + number 7. i=i+1 8.end while 9.print (sum) donnez la dr chaîne pour la variable sum « Tester les dr chaîne », est-ce du test du flot de contrôle ou du test du flot de données ? Question 13 (sur 6 ) Question 1 (sur le langage metoo) Soit : double(x) == {i * 2 | i<- x}; = DOUBLE; Donnez un exemple d'application de cette fonction, i.e. écrivez d'abord l'application et ensuite le résultat de cette application (dit autrement, ce que vous fournissez à me too et ce qu'il vous répond). Je fournis par exemple : Metoo répond : Question 2 Si l'on saisit ce qui suit, que répondra me too ? double(double({3,4})); Question 3 Soit : sq(x) == {i*i | i <- x}; =SQ; Si l'on saisit : sq({3,4,5,6}); que répondra me too ? Question 4 Soit : cp(x, y) == {(p,q) | p <-x, q<- y}; me too répond : CP; cpsq(x) == cp(sq(x),sq(x)); me too répond : = CPSQ; Si on saisit : cpsq({1,2,3}); Que répondra me too rappel : (2, 8) est le couple (2, 8) en me too comme habituellement dans les livres de maths. Question 5 Quelle(s) différence(s) entre un invariant de machine B et un invariant en me too ? Question 14 (sur 2) Qu'est-ce qu'un homme-mois ? Critiques de cette unité de mesure Question 15 (sur 6) Soit la spécification algébrique suivante : Spec BOOL0 Sorte Bool Opérations vrai, faux : --> Bool
not_ : Bool --> Bool
_and_ : Bool Bool --> Bool
_ or_ : Bool Bool --> Bool
Axiomes
not vrai = faux
not not a = a
a and vrai = a
a and faux = faux
(a and b) and c = a and (b and c)
a and b = b and a
a or b = not((not a) and (not b))
Une spécification algébrique SPEC ne donne que des règles de syntaxe. Pour lui donner une sémantique dénotationnelle, on lui associe une Algèbre A.
On va prendre trois algèbres : B, B0 et B1 interprétant BOOL0 (en fait on ne vous en fournira que 2, l’autre est dans le polycopié)
Avec les ensembles supports de Bool
Bbool = {v, f}
B0Bool = {f}
B1Bool = {v, f, bottom}

Dans l’algèbre B, on prend Bbool = {v, f}
Et on interprète les opérateurs comme des fonctions :

fauxB, vraiB : --> Bbool
not B : Bbool --> Bbool
andB, orB : Bbool * Bbool --> BBool
Avec les définitions :
fauxB = f, vraiB = v
notB(f) = v, notB(v) = f
andB(f,f) = andB(f,v) = andB(v, f) = f, andB(v,v) = v
orB(f,f) = f, orB(f,v) = orB(v,f) = orB(v,v) = v

Dans l’Algèbre B0, on prend B0Bool = {f}
Et on interprète les opérateurs comme des fonctions :
fauxB0, vraiB0 : --> B0Bool
notB0 : B0Bool --> B0Bool
andB0, orB0 : B0Bool * B0Bool --> B0Bool
Avec les définitions :

fauxB0 = vraiB0 = f
notB0(f) = f, andB0(f,f) = orB0(f,f) = f

Question 1
Evaluez le terme
t = not faux and vrai
dans l’algèbre B
Donnez le détail de cette évaluation.



Question 2
Evaluez le terme t dans l’algèbre B0



Question 3
Quand dit-on qu’une algèbre est un modèle d’une spécification ?




Question 4
Qu’appelle-t-on confusion ?
Donnez un exemple pris dans les interprétations ci-dessus.






Question 5
Qu’appelle-t-on rossignol (junk) ? Donnez un exemple pris dans les interprétations ci-dessus.



Question 16 finale (sur 2)
Qu’est-ce que MVC (Modèle Vue Contrôleur) ? Expliquez en quelques lignes

Notation de dossiers de TD identiques

la note sera égale à : note "normale" du dossier de TD/ nombre de dossiers identiques à ce dossier

vendredi 19 octobre 2007

Réécriture

Dans le TD sur Spéc algébriques nous avons deux petits exos de réécriture.

Une très bonne présentation de la réécriture sur wikipedia

mercredi 17 octobre 2007

Le dernier cours

a eu lieu ce matin. Pour ceux, nombreux, qui étaient absents, voici ce qui a été traité :
  • design patterns
  • modèle MVC
  • spécifications algébriques
Vous devez étudier la partie Fiabilité. Je vous ai fourni ici le corrigé du TD sur Fiabilité.

Le prochain TD, le dernier, portera sur Spécifications algébriques.

metoo et lambda expressions

Revoir le cours de Spec1 sur B

Application à metoo

Ex. 1
Vous avez entré
union-a-b(a1, b1);
Tapez
union-a-b;
metoo répond
lambda(a1, b1). '(metoo set union a1 b1)'.

Ex2
Tapez
union_a_b();
metoo attendait un ensemble (c'est le type des opérandes de l'opérateur union), mais il a trouvé False. En effet, les arguments non trouvés étant remplacés par False, metoo essaie quand même d'évaluer la lambda expression. Dans ce cas, l'échec est patent.

Ex 3
essai(ens, dom, ran) == ens overwr {dom -> ran};
construit un ensemble de maplets (de couples)

Tapez
essai({}, d1, r1);
metoo renvoie une image du maplet créé
{d1 -> r1};
Tapez
essai({d1 -> r1}, d2, r2);
metoo renvoie
{d1 -> r1, d2 -> r2};
Tapez maintenant
essai({d1 -> r1});
Il manquait deux arguments, mais metoo a quand même évalué la fonction et on observe :
'd1-> r1, false -> false};
Tapez maintenant
union_a_b(1, 2);
metoo repond encore que les types des opérandes sont erronés, car on trouve des integers au lieu d'ensembles

Voyons les fonctions prédéfinies de metoo telles que :

inv_

Tapons
inv_cte;
metoo répond
TRUE;
On constate qu'alors que nous avons oublié de définir cet invariant, metoo le considère comme vrai. Normal. Un invariant est une contrainte. TRUE c'est le moins contraignant !

mk_

Tapons
mk_cpte;

metoo répond

lambda(arg-2, arg-1). '(metoo-construct-rec (quote cpte) (quote (comp1 comp2)) (list arg-2 arg-1) inv_cpte)';

Ainsi vous voyez que :
mk_cpte est une lambda expression :
  • qui a deux arguments, les champs définis
  • qui évalue inv_cpte
  • et qui rend une liste enregistrant les constructions faites, pour les stocker en mémoire.
Tapons
mk_cpte();
metoo répond
mk_cpte(false, false).

mardi 16 octobre 2007

CMMI (voir deuxième cours de TGL)

Madame, Monsieur,

Vous êtes une société de service ou un éditeur de logiciel des Pays de la Loire ?… Connaissez-vous le CMMI ?

Le CMMI est un modèle Qualité constitué des bonnes pratiques du développement logiciel, qui visent ainsi à améliorer la visibilité et l’efficacité de vos projets.

Le Syntec Informatique, La DRIRE et la région Pays de la Loire ont élaboré le « Programme CMMI des Pays de la Loire » à destination des sociétés de service des Pays de la Loire pour les aider à mettre en place le modèle CMMI. Cette aide se traduit par des subventions pour l’accompagnement et par le financement à 100% de la formation officielle de 3 jours « Introduction to CMMI ».

Le groupe FORTEAM a été choisi pour être l’assistant à maîtrise d’ouvrage de ce programme ainsi que le maître d’œuvre.

Si vous souhaitez de plus amples renseignements, contactez-nous.

Plus de renseignements :
L’extranet du programme CMMI des Pays de la Loire : www.cmmipdl.com
Le programme CMMI des Pays de la Loire : conseil.e-testing.fr/cmmi-pdl.asp

Dossier de TD et DS

Conformément au réglement écrit dans le dossier des sujets de TD, votre dossier doit être fourni à l'issue du DS (i.e. AVANT de quitter l'amphi).

Le DS est un ensemble de questions qui portent sur tout le programme. J'ai annoncé plusieurs fois en cours "ceci sera demandé lors du DS" (et ce le sera).

Un barème accompagnera le sujet. Il sera respecté.

Gestion de versions des logiciels

Le poly des transparents du cours de Nicolas Hernandez sont à récupérer lors du prochain TD pour les deux groupes qui ne les ont pas.

Corrigé de TD sur fiabilité, etc.

Corrigé du dernier TD du poly.
Il est fortement conseillé de l'étudier !

====================

Université de Nantes

Département informatique

Module TGL

Sujet rédigé le 4-09-06 par H. Habrias

Version n° 1

Exercices sur analyse des risques, fiabilité…


Exercice n° 1


Q1 - Dans un projet, une entreprise a estimé qu’elle avait 0,5 % de chance de devoir payer 100 000 € de pénalité pour un défaut oublié. Calculez le montant du risque auquel elle est exposée.


0,005 * 100 000 = 500 €


Q2 – Le chef de projet propose un contrôle supplémentaire qui coûterait 100 € et qui supprimerait le défaut une fois sur deux. Calculez le nouveau montant du risque auquel l’entreprise est exposée. Cette solution est-elle préférable à celle de la Q1 ?


0,0025 * 100 100 + 0,9975 * 100 = 250,25 + 99,75 = 350 €

2eme approche préférable


Q3 – Le sous-chef de projet Dudule estime que l’efficacité du contrôle n’est que de 10 %. Même question que la Q2.


Efficacité du contrôle est de 10% soit risque que dans 90% des cas on ait à payer. Comme sans contrôle c’était 0,5 %, ça donne 0,005 * 9/10 soit 0,0045.

0,0045 * 100 100 + 0,9955 * 100 = 450, 45 + 99,55 = 550 €

Solution moins intéressante que l’absence de contrôle.


Exercice n° 2


L’entreprise Zébulon++ tient des statistiques sur les erreurs dans les logiciels qu’elle développe. Sur des données historiques de nombreuses années, on trouve un taux d’erreurs de 0,0036 par milliers de lignes de code. Dudule a fait une étude d’après laquelle un contrôle technique à 1 000 € pour 100 000 lignes de code permettrait de réduire le nombre d’erreurs de 50 %. Les données de l’entreprise actualisées indiquent que chaque erreur coûte 100 000 € en moyenne à Zébulon++.

Le projet que l’on considère est de 50 000 lignes de code. Calculez les risques, avec et sans contrôle technique et indiquez si ce contrôle est rentable.


Exercice n° 3


La fiabilité est la probabilité qu’a un logiciel de ne pas connaître de défaillance pendant une tranche de temps donnée. Elle est notée F(n), où n est le nombre d’unités temporelles (grain temporel). Si l’unité est le jour, F(1) désigne la probabilité que le logiciel n’ait pas de défaillance pendant un jour. La probabilité que le logiciel ait une défaillance pendant une durée n est :

D(n) = 1 – F(n)


Taux d’erreur

Si une erreur se produit tous les deux jours, le taux d’erreur instantané est de 0,5 erreur par jour. Le taux d’erreur est égal à l’inverse de la durée entre deux erreurs successives et peut servir à estimer la probabilité de défaillance d’un logiciel.


Rappels de proba :


Si F(1) est connue alors la probabilité de pouvoir exécuter n tests sans défaillance est égale à F(n) = F(1)n.

N.B. : D(n) n’est pas égal à D(1)n, mais à 1 – (1 –D(1))n


Dudule connaît différents modèles de fiabilité du logiciel dont celui de Jelinski-Moranda. La formule est la suivante :

MTTFi = alpha/ (N-i + 1).

MTTFi est le MTTF jusqu’à la ième faute.

N est le nombre de fautes initialement contenues dans le programme.

1/ est le taux selon lequel une faute provoque une erreur. Un taux de 4 indique 4 erreurs par an par faute.


Q1 – Considérez N = 100 défauts et 1/=5,

Calculez le MTTF de la première faute, celui de la 81ème faute.

Q2 – Comment caractérisez-vous ce modèle ?

Q3 – Quelles sont les hypothèses faites par ce modèle ?


Q1 MTTF(1) = 0,002 MTTF(81) = 0,01

Le modèle suppose que le dégogage commence lorsque le programme contient N fautes et que chaque faute contribue pour le même poids dans l’occurrence des pannes. Les fautes sont supposées être supprimées lorsqu’on observe une panne, et chaque fois le taux d’occurrence des pannes est réduit de 1/.


Dudule lui estime que, faute de connaître une tendance précise sur les découvertes d’erreur relativement au temps d’exécution, le comportement présent du logiciel constitue la meilleure estimation pour son comportement dans un futur proche. Il est comme ça Dudule. Il estime de la même manière les hommes et les femmes. Ainsi, si un jour il se produit 20 erreurs, il considère que la meilleure estimation possible pour le lendemain est de 20 erreurs. Peut-être chez lui y-a-t-il des scènes de ménage tous les jours : 4 verres cassés le lundi, 4 verres cassés le mardi !


En suivant le « modèle à Dudule »,


Q1 – S’il se produit une erreur après deux jours, quelle est la probabilité pour que le système ne connaissance pas de défaillance (d’ « erreur » selon le vocabulaire utilisé chez les informaticiens anglo-saxons) pendant 1, 2, 3 et 4 jours ?


Si une erreur se produit tous les deux jours, le taux d’erreur instantané peut être estimé à 0 ,5. Cela correspond à la propriété de défaillance pour une journée.

La fiabilité pour 1 journée est de 1- 0,5, deux journées 0, 25, 3 journées 0,125, 4 journées 0,00625


Q2 – Si un logiciel a connu 5 défaillances au cours de 100 tests réalisés sur 10 jours, à combien peut-on estimer la fiabilité du logiciel pour le jour suivant et pour la semaine suivante ?


D(1) = 5/100 = 0,05

soit F(1) = 0,95

Pour le jour suivant, en supposant 10 tests par jour (ce qui est égal à 100/10, moyenne des 10 jours précédents), on a le taux de fiabilité F(10) = F(1)10 = 0,9510 = 0,598736


Pour la semaine suivante, en supposant le même taux de nombre de tests (soit 70 tests), on a F(70) = F(1)70 = 0,9570 = 0,027


Exercice n° 4



Utilisez le modèle de Mills pour l’estimation du nombre de défauts dans un programme.

30 défauts sont injectés dans un composant. A un certain moment du test, on a détecté 12 défauts indigènes et 18 défauts injectés.


Q1 - Quelle est l’estimation du nombre de défauts indigènes ?

Quel est le nombre de défauts résiduels ?


nombre de défauts résiduels = (nb de défauts indigènes détectés* nb de défauts injectés que l’on a détectés) /

nb de défauts que l’on a injectés


soit 12 * 30 / 18 = 20


nombre de défauts résiduels = 20 – 12 = 8


Toujours le virtuel

"... la banque en convint, et l'opération fut annulée. Malencontreusement, trois mois plus tard, notre lecteur constatait qu'on avait débité son compte de 1 200 euros correspondant aux agios au taux de 18,97% pour une facilité de caisse qu'il n'avait jamais demandée. L'ordinateur en recréditant son ancien PEL des 20 800 euros restés sur son compte courant, avait créé un découvert fictif, à cause des dates de valeur."

Le Monde de hier

voir exo de prototypage

lundi 15 octobre 2007

vendredi 12 octobre 2007

Groupe 2

Ce matin (encore un vendredi matin), :
1 présent à l'heure de début de TD
Finalement on a fini à 13 présents sur ... 25 inscrits !

Bof, l'informaticien de nouvelle génération n'a pas besoin de ce que nous enseignons, n'est-ce pas ?

Curieux, en Inde, par exemple, ils enseignent la même chose que nous.


Il a été dit hier soir par des anciens dut de Nantes (40ième anniversaire de l'IUT de Nantes) que c'est à l'IUT qu'ils ont appris les bases. Aujourd'hui, sans doute que les bases, les absents les avaient avant d'entrer à l'IUT.

Doc sur mulisp

La seule trouvée sur la Toile.

http://www.retroarchive.org/docs/mulisp_mustar.pdf


merci à J. Termeau qui m'a retrouvé ce fichier.

mulisp est disponible à l'IUT. metoo est écrit en mulisp.


sous metoo, on passe à mulisp par l'appel de la fonction

lisp();

Pour retourner au Shell metoo, on appelle la fonction suivante

(metoo)

Des expressions Lisp peuvent être incluses dans des expressions metoo ou évaluées par par en tant que telles par le Shell metoo comme dans :

'(car (list 1 2))'

Sur LISP nous vous conseillons wikipedia en anglais (qui a fait l'objet de bonnes relectures)
http://en.wikipedia.org/wiki/Lisp_programming_language

" Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, object-oriented programming, and the self-hosting compiler. "

dynamic typing : nous vous avons "montré" l'inférence de type l'an dernier et cette année sur un texte metoo.

jeudi 11 octobre 2007

Un logiciel d'analyse de code C et C++

http://www.sgvsarc.com/

version d'essai disponible

L'art d'avoir toujours raison

L'art d'avoir toujours raison

Un petit livre de Schopenhauer, dans la collection Mille et Une Nuits, 2000 (100 pages, je sais que 100 pages même format 10 x 15 cm ça peut faire peur à un étudiant "nouvelle génération" (coco, "de nouvelle génération" ç'est trop schnock !)) mais on ne sait jamais ...

Extrait

"Stratagème 33
"C'est peut-être vrai en théorie, mais en pratique c'est faux." Grâce à ce sophisme, on admet les fondements tout en rejetant les conséquences ; en contradiction avec la règle a ratione ad rationatum valet consequentia (la conséquence tirée de la raison première valide le raisonnement). Cette affirmation pose une impossibilité : ce qui est juste en théorie doit aussi l'être en pratique ; si ce n'est pas le cas, c'est qu'il y a une erreur dans la théorie, qu'on a omis quelque chose, qu'on ne l'a pas fait entrer en ligne de compte ; par conséquent, c'est également faux en théorie."

mardi 9 octobre 2007

Le prochain TD portera sur un langage fonctionnel

metoo

Préparez vous en faisant quelques manipulations

Allez à
Programmes
Développement
metoo


Sur les concepts de la programmation fonctionnelle :
voir le concept de transparence référentielle
de lambda expression

et les deux opérations de base bien connues quand on a fait du B :
  • application de fonction
  • composition de fonction
Certains, quoique en deuxième année, m'ont demandé c'est quoi "l'application d'une fonction". Répétons ...

C'est ce que fait le vendeur qui ne vous facture pas "sur la g...le", quand il fait :
prix du produit n° 251 = tarif (251)
Il a appliqué à la fonction tarif au n° produit 251.

Le corrigé de l'exercice à faire chez soi

ici

lundi 8 octobre 2007

Bug

"Mer 04 Oct, 2006 15:08 Sujet du message: Bug du site de la sncf - J'ai essayé il y a un mois d'acheter un billet idtgv sur le site de la sncf. J'ai essayé à quatre reprises, et à quatre reprises j'ai reçu un mail de leur part me disant que ma commande et mon paiement avaient été annulés suite à une erreur technique. J'ai abandonné l'opération après ces quatre essais infructueux. Quelques jours plus tard j'ai constaté sur mon relevé de compte que j'avais été débitée deux fois, pour deux de ces transactions qui n'ont pas abouti, pour un montant total d'environ 70 euros. J'ai donc envoyé un mail expliquant la situation ... Finalement j'ai reçu une réponse me demandant la référence de mon dossier, référence que je n'ai pas, les transactions n'ayant pas abouti. J'ai donc répondu que je n'avais aucun numéro de dossier à leur transmettre; ils m'ont renvoyé un mail me donnant la marche à suivre pour retrouver mon numéro de dossier(!!!) sur leur site dans la rubrique "ma commande" ou quelque chose du style, mais mes commandes de ce soir là n'ayant pas abouti, impossible d'avoir un numéro!!!! C'est à se taper la tête contre les murs. Je me demande si je serai un jour enfin remboursée... Comment dois-je procéder pour régler cette situation ?"

Extrait du cours d'une collègue de l'Ecole des Mines de Nancy

jeudi 4 octobre 2007

Si vous avez raté Nantes, allez à Las Vegas

http://www.testinginstitute.com/superweek/

Vous constaterez que l'on y parle du test de certification dont je vous ai fait faire un des exercices en TD.

Etonnant, n'est-ce pas ...

Après deux TD ce matin, j'ai pu constater que des étudiants, au lieu d'appliquer ce qu'on a dit en cours et qui se trouve dans le polycopié, sont allés sur la Toile recopier lire des pages ... extraites d'un livre de "gestion d'entreprise", absolument pas adaptées au travail à faire. Mais c'est ce qui devait venir en tête sur la liste de Google. A question mal posée ...

Mais c'est tellement mieux sur la Toile. Pas besoin d'écouter. On peut garder la musique aux oreilles. Merveilleux !


Les bons ouvriers ont les bons outils !

La Toile, la meilleure et la pire des choses.

Danger

- Il est dangereux d'entrer dans un amphi avant l'heure officielle de début du cours. Attendez assis sur les marches de l'escalier ou dans le couloir, ou même assis sur le trottoir.
- Idem pour les salles de TD. Mais si ces salles vous permettent d'aller sur le web, alors aucun danger pour la santé !
- Il est encore plus dangereux pour la santé d'entrer dans la bibliothèque de l'iut. Et si par hasard vous y êtes entré (on peut être étourdi), surtout ne consultez pas, n'emprunter pas les livres conseillés par l'enseignant, surtout si c'est ce même enseignant qui les a écrits.
- Il est tout aussi dangereux de lire les pages web de cours et exos d'universités reconnues.

mercredi 3 octobre 2007

Cours de ce jour

J'ai traité :
- des différents types de test
- ai fourni du vocabulaire
- test particionnel, test aux limites, etc.
- traité plus à fonds de la mesure de McCabe (théorie sous-jacente, qui est une mauvaise théorie : plus exactement, elle ne s'applique pas à un programme !)

dimanche 30 septembre 2007

Exercice pour diplômés de Grandes écoles de commerce

Un produit est vendu 100 euros.
Le dir co a décidé une réduction de prix de 10 %. Ce qui fait un nouveau prix de P1.
Puis, comme le stock en est toujours pléthorique, d'une nouvelle réduction de 10 % sur le prix précédent (P2). Ce qui donne le prix P2.

Vérifiez le calcul de votre Sup de co et autre diplômé d'école (en général privée, oui, à Sup de co, on paye ... donc c'est un diplôme de qualité, évident n'est ce pas ! d'ailleurs les sup de co se recrutent entre eux. Idem d'ailleurs d'autres "Grandes Ecoles". D'où la proposition de classement des écoles que vient de proposer l'EM de Paris pour "concurrencer" le classement de Shanghaï (voir le Monde)).

Je vous ai déjà cité un grand informaticien, Leslie Lamport :
" ce qui m'a été utile est ce que j'ai appris au lycée".

Ici c'est ce qu'on est censé avoir appris en primaire. Mais le niveau monte ! comme celui des eaux. Pollution, pollution !


Hier soir une rencontre avec un commercial (un vieux, peu diplômé) m'a éclairé...

Le cours et les td de notre collègue

Marc Frappier à l'U de Sherbrooke

http://www.dmi.usherb.ca/%7Efrappier/ift514/ift514.html

COSMIC

aller à http://www.cosmicon.com/

"La durée d'une minute dépend de quel côté de la porte des toilettes vous vous trouvez"

Zall, cité par Richard Robinson

"Le meilleur moyen d'être en retard est de se dire qu'on a le temps"

Aux groupes 1 et 3

A faire chez soi et à fournir REDIGE en entrant en TD lors de la première séance de la semaine prochaine :

Exercice n° 3 jusqu'à la question 4 incluse.

Vous avez dû répondre aux questions de l'exo 1. Je fournirai le corrigé la semaine prochaine.

"Il faut 90% des efforts pour faire les 90 premiers % du travail

Et il faut 90% des efforts pour faire les 10 derniers % du travail."
Arthur Bloch, Murphy's Law)

vendredi 28 septembre 2007

Au groupe 2

8 h 45 à 10 h 15
7 étudiants sur une groupe de 25 présents en TD.

Bof ! les tests du logiciel, quelle importance ! le client testera, voyons !

voir http://lefenetrou.blogspot.com/

sur ce qui vient de paraître dans Le Monde (que je vous avais annoncé... "ça va finir par sortir dans la presse")

A faire chez soi et à fournir REDIGE en entrant en TD lors de la première séance de la semaine prochaine :

Exercice n° 3 jusqu'à la question 4 incluse.

Vous avez dû répondre aux questions de l'exo 1. Je fournirai le corrigé la semaine prochaine.

mercredi 26 septembre 2007

Pour ceux qui n'écoutent pas le cours

Vous pouvez vous payer le cours de Cap Sogeti, c'est 1895,66 euros les deux jours.

ici

Réponse à fournir par écrit commenté

à l'entrée du prochain TD.

Soit un programme qui vaut 95 points de fonction.
Ce programme de 10 000 LOC COBOL est écrit et mis au point en 60,5 mois par le programmeur Dudule.

Le "même" programme est réalisé en 25,5 mois par Duchnock avec un générateur pour lequel il a fallu écrire 2000 lignes (comme exemple, voir PAC de l'ex CGI, rachetée par IBM. PAC rest utilisé par la DGI), lignes dont le générateur produira 14 000 lignes de code COBOL.


Analysez la productivité dans les deux cas.

Les codes que vous lisez sur la présentation...

pointée par le précédent message, sont ceux de COCOMO. Vous en trouverez la définition dans mon livre La mesure du logiciel. De même que vous y trouverez la présentation de COCOMO

Sur les Points de fonction

Un ensemble de transparents sur une application réelle :
http://synergies.modernisation.gouv.fr/IMG/pdf/20061204_SDAE_synthese_experimentation_PF.pdf

Cours du 26 sept

De 8 h à 9 h
J'ai traité :
- réponse à l'exercice sur l'agrégation d'ordres
- des modèles de prévision d'effort
- de la "méthode des points de fonction"

Prochain cours sur les tests du logiciel.

Rappel : fin de l'enseignement avant l'interruption des enseignements de Toussaint

Rappel : venir en cours à 8 heures pour ne pas écouter les cours c'est ....

jeudi 20 septembre 2007

Le dernier cours

a porté sur la théorie de la mesure (essentiel si on ne veut pas faire n'importe quoi sur des données numériques) et sur l'estimation.

Le prochain portera sur les méthodes d'estimation de charges de développement, en particulier "La méthode des Points de Fonction" .

Ensuite sur les tests.

Vous pouvez préparer vos question sur le poly dont vous disposez.

Des cahiers des charges

En TD je vous ai fourni celui des machines à voter. En voici d'autres dont celui du DAB qui a fait l'objet d'une école d'été CEA, EDF, INRIA à laquelle j'ai eu l'honneur de participer comme enseignant.

http://www.iut-nantes.univ-nantes.fr/~habrias/portailHabrias/projets_et_stages.html

Le cas a été traité en B.

Ne perdez pas votre temps

... à des choses inutiles.

Les consignes ....voir
http://www.iut-nantes.univ-nantes.fr/~habrias/portailHabrias/planification.html

Sites sur la gestion de projets

http://www.gestiondeprojet.com/

et bien d'autres.... utilisez Google

et un guide québécois (merci à eux) pour Ms Project

TD sur la "gestion de projet"

Vous devez avoir préparé avant la prochaine séance :
- le cycle de vie choisi
- l'architecture fonctionnelle (vous avez eu trois exemples lors du td) de votre logiciel de notes
La séance sera consacrée à la planification, allocation des ressources avec Ms project

Sur le poly de cours, OBS, PBS, WBS sont illustrés par un petit exemple.

Les TD

Rappel : vous devez fournir l'ensemble des réponses aux questions de TD (sauf questions supprimées bien sûr) même si vous ne les avez pas rédigées pendant la séance.

Il va y avoir un ramassage de tous les dossiers sous peu et notation servant à la note finale.

mercredi 12 septembre 2007

Pour information

A l'occasion de la soutenance de HDR de Christian Attiogbé et
de la venue à Nantes de plusieurs experts,
l'équipe COLOSS organise dans le cadre AtlanStic,
un atelier (workshop) sur le thème :
"Variété de la nature des systèmes informatiques
et méthodes de construction/vérification formelle"

le 13 septembre 2007 - Salle 003 - laboratoire Lina
(bâtiment 11, fac sciences)

Vous êtes cordialement invités à assister aux exposés
/travaux présentés lors de cet atelier.

Le programme préliminaire (susceptible de petites
modifications) est le suivant :


09:30 - 10:00 - B. Stoddard, "La thermodynamique
des logiciels et son rapport avec les methodes formelles"

10:00 - 10:30 - D. Mery, "Le e-voting et la technique
de raffinement"

10:30 - ... C. Attiogbé, (Soutenance HDR),
Contributions aux approches formelles de développement de logiciels :
Intégration de méthodes formelles et analyse multifacette"

Pause déjeuner

14:30 - 15:00 - D. Bert, "Spécification et preuve de
propriétés de vivacité en B événementiel"

15:00 - 15:30 - C. Jard, "Le langage ORC d'orchestration
de services Web ; semantique d'ordre partiel, ..."

15:30 - 16:00 - ???, ???, Irccyn

16:00 - ... Discussions

Pot en fin de journée, au lina

Pour les étudiants venant de la PST ou d'un autre IUT

Vous trouverez ici mon polycopié de première année.

A rendre pour le 2ième TD

L'exercice sur les organisations mafieuses de la pénisule italienne.

Le corrigé sera fait immédiatement.

Gestion de versions des logiciels

La semaine 14, c'est Sébastien Faucou et Nicolas Hernandez qui prennent en charge une partie de l'enseignement de TGL. L'un fera un cours d'une heure, l'autre fera les 3 TD.

Thème : Gestion de versions de logiciel

Nous en sommes au 3ième cours

Jusqu'ici qu'avons nous fait ?

- cours sur Cycles de vie du logiciel, MOA, MOE
- cours sur Architectures fonctionnelles du logiciel

et un premier TD où vous deviez réutiliser ce qui a été traité largement en 1ière année. Des étudiants en rendu un dossier de premier TD vide !

Nous vous avons fourni:
  • le polycopié de tous les transparents de tous les cours
  • le polycopié des sujets de TD qui comprend les consignes à respecter
Sur mes pages web vous trouverez des pages relatives au module TGL