Archive for the ‘GPP’ Category

h1

5 points pour rendre la maintenance d’un programme la plus inaperçu possible pour l’utilisateur

mars 4, 2012

La maintenance des programmes est toujours mieux acceptée si les utilisateurs sont informés au préalable et si la durée de l’intervention est limitée dans le temps. Voici cinq points qui rendront l’intervention plus douce.

  1. S’il est préférable de faire une maintenance de programme dans un environnement de développement, il est parfois plus rapide de faire certains changements directement en production après avoir fait une copie des fichiers d’origine, surtout les changements rapides. L’utilisateur est dans l’indisponibilité d’utiliser le programme durant cet intervalle de temps.
  2. Idéalement la maintenance sera planifiée. Les utilisateurs seront informés une semaine à l’avance par email de la date et durée d’indisponibilité. Ils pourront ainsi adapter leur travail en fonction.
  3. Le créneau horaire sera choisi de préférence en dehors des heures d’utilisation les plus fréquentes (le week-end, le matin, le soir).
  4. Un email informera du début de la maintenance.
  5. Un autre email confirmera la fin de la maintenance et donc la remise à disposition du service.
h1

Macro : mini-programmes/routines pour tester la validité d’un nom de variable

juin 27, 2010

Après avoir appris les bases de la programmation, vous allez vous rendre compte que certaines tâches se répètent de programme à programme. Une partie d’entre eux peut se résumer à quelques lignes. Il est alors tentant d’écrire un programme de manière « officielle » et de le valider au lieux d’avoir à écrire le code à chaque fois.

Voici un petit exemple. Il s’agit du descriptif d’une macro qui va indiquer si le nom de variable donné est conforme aux règles requises par SAS. Ici vous avez la spécification et les tests de validation.

1. Spécification : Quelles sont les règles ?

Le nom d’une variable ne peut pas avoir plus de 32 caractères.

Le premier caractère est une des 26 lettres de l’alphabet ou un chiffre.

Les autres caractères  peuvent être des lettres de l’alphabet, un chiffre ou un tiret bas (underscore).

2. Spécification : Quelques contraintes ?

Vous développez une macro disons VARNAME_VALID ayant un paramètre VARNAME où vous pourrez entrer le nom d’une variable à tester. Si ce nom entre dans les critères de définition de SAS, alors une macro variable varname_ok=1 sinon la macro variable varname_ok=o.

3. Test Cases : Quand tout va bien: un nom de variable avec une seule lettre, deux lettre, commençant par un tiret bas, écrit en majuscule, avec un chiffre au milieu, avec un chiffre à la fin

Qu’est ce qui est testé : un nom de variable suivant les règles requises par SAS.

Quel est le code à soumettre :

%varname_valid(varname=a);
%varname_valid(varname=ab);
%varname_valid(varname=_ab);
%varname_valid(varname=AB);
%varname_valid(varname=ab1a);
%varname_valid(varname=ab1);

Quel est le résultat attendu :

La macro variable garde la valeur un

&varname_ok.=1

Un message dans la log est affiché :

NOTE: (VARNAME_VALID) Nom de variable correct.
NOTE: (VARNAME_VALID) Valeur actuelle :  ab

D’autres programmes peuvent être appelés après.

4. Test Cases : Violation des pré-requis de la macro

4.1 Violation pré-requis : le paramètre est manquant

Qu’est ce qui est testé : Un nom de variable doit être donné dans le paramètre de la macro

Quel est le code à soumettre : %varname_valid(varname=);

Quel est le résultat attendu :

La macro variable VARNAME_OK prend la valeur zéro

&varname_ok.=0

Un message dans la log est affiché :

WARNING: (VARNAME_VALID) Nom de variable incorrect.
WARNING: (VARNAME_VALID) Valeur actuelle:
EARNING: (VARNAME_VALID) Valeur attendue: un nom de variable.

D’autres programmes peuvent être appelés après.

4.2 Violation pré-requis : plus d’un nom de variable est entré

Qu’est ce qui est testé : Plus d’une variable est entrée dans le paramètre de macro

Quel est le code à soumettre : %varname_valid(varname= ab cd );

Quel est le résultat attendu :

La macro variable prend la valeur zéro

&varname_ok.=0

Un message dans la log est affiché :

WARNING: (VARNAME_VALID) Nom de variable incorrect.
WARNING: (VARNAME_VALID) Valeur actuelle : ab cd
WARNING: (VARNAME_VALID) Valeur attendue : un seul nom de variable.

D’autres programmes peuvent être appelés après.

5. Test Cases : Les règles définies par SAS pour nommer une variable

5.1  Un nom de variable : Au maximum 32 caractères

Qu’est ce qui est testé : un variable avec plus de 32 caractères

Quel est le code à soumettre : %varname_valid(varname=abcdefghijklmnopqrstuvwxyz1234567890);

Quel est le résultat attendu :

La macro variable prend la valeur z éro

&varname_ok.=0

Un message dans la log est affiché :

WARNING: (VARNAME_VALID) Nom de variable incorrect.
WARNING: (VARNAME_VALID) Valeur actuelle : abcdefghijklmnopqrstuvwxyz1234567890
WARNING: (VARNAME_VALID) Valeur attendue : 32 caractères au maximum.

D’autres programmes peuvent être appelés après.

5.2 Un nom de variable : commence par une lettre de l’alphabet (a-z) ou un tiret bas

Qu’est ce qui est testés : Un premier caractère différent d’une lettre de l’alphabet ou d’un tiret bas

Quel est le code à soumettre : %varname_valid(varname=é);

Quel est le résultat attendu :

La macro variable prend la valeur zéro

&varname_ok.=0

Un message dans la log est affiché :

WARNING: (VARNAME_VALID) Nom de variable incorrect.
WARNING: (VARNAME_VALID) Valeur actuelle : é
WARNING: (VARNAME_VALID) Valeur attendue : La première lettre est une des 26 lettres ou un tiret bas.

D’autres programmes peuvent être appelés après.

5.3 Un nom de variable : Après le premier caractère on peut avoir des lettres (a-z), des chiffres (0-9) et des tirets bas.

Qu’est ce qui est testé : un caractère différent d’une lettre de l’alphabet, d’un chiffre ou d’un tiret bas parmi les autres caractères de l’alphabet

Quel est le code à soumettre : %varname_valid(varname=1é);

Quel est le résultat attendu :

La macro variable prend la valeur zéro

&varname_ok.=0

Un message dans la log est affiché :

WARNING: (VARNAME_VALID) Nom de variable incorrect.
WARNING: (VARNAME_VALID) Valeur actuelle : 1é
WARNING: (VARNAME_VALID) Valeur attendue : La première lettre est une des 26 lettres ou un tiret bas.

WARNING: (VARNAME_VALID) Nom de variable incorrect.
WARNING: (VARNAME_VALID) Valeur actuelle : 1é
WARNING: (VARNAME_VALID) Valeur attendue : A partir du deuxième caractères, seuls des lettres,
WARNING: (VARNAME_VALID) des chiffres et un tiret bas sont autorisés.

Lecture complémentaire

h1

7 conseils pour collaborer avec un programmeur SAS

novembre 13, 2008

Vous devez travaillez avec programmeur SAS et souhaitez connaître quelques petits trucs qui faciliteront cette collaboration. Cet article est fait pour vous. Les exemples traiteront principalement de la pharmaceutique mais peuvent être aisément généralisés.

1. Répondez rapidement à leurs questions

Maintenez le flux d’information : Lorsqu’un programmeur pose une question, il a souvent besoin de la réponse immédiatement pour pouvoir continuer à avancer dans son travail. Vous avez à peu prêt une marge d’une demi-journée pour réponse. Si vous répondez dans les 5 minutes c’est encore mieux. Faute de réponse, il sera obligé d’arrêter de travailler sur le projet. Le temps de réimmersion dans un projet est long et pesant pour un programmeur. En effet, le programmeur oublie très rapidement ce qu’il a fait et pourquoi même si il documente ces programmes. Imposez lui ces contraintes et il sera encore moins enclin à reprendre le processus et c’est vous qui risquez de voir vos dates butoires passer aux oubliettes.

2. Coupez vos réponses

Ecrire un mail par problématique vous donnera plus de chance d’en voir une partie de traitées rapidement. Si vous envoyez un bloc, cela effrayera le programmeur. Il aura tendance à traiter les réponses simples et rapide en premier. Faites partie de ses priorités.

3. Soyer précis dans vos demandes

Apportez votre expertise sur les données : Bien sûr, vous ne connaissez pas tous les surprises dans les données qui seront visibles une fois seulement le travail du programmeur en partie accomplie. Néanmoins, vous êtes le spécialiste sur ces données. Vous savez quand des valeurs sont aberrantes, comment les variables doivent être définies.

4. Garder un document de référence commun

Encouragez le programmeur à rédiger un document résumant les choix qu’il fait lors de l’écriture de ses programmes. Dans le cas de la rédaction d’une macro, il est obligé d’écrire divers documents :

  • un document technique (specification)
  • un manuel utilisateur (user manual)
  • un récapitulatif des tests effectués (test plan)
  • un diagramme décrivant le processus du programme (flowchart).

A tord, il rédige souvent ce type de document après avoir fini la partie programmation. Incitez-le à commencer la rédaction dès le début et à poursuivre les mises à jour au fur-et-à mesure.

Reste que dans le cas de la programmation lié au transfert de données ou à la création de tables statistiques aucun document n’est souvent demandé. Les Statistical Analysis Plan (SAP) pour les tables statistiques ne sont pas encore généralisées. Il est très pratique d’avoir un document sur lequel le programmeur listera les choix fais, les points en suspend demandant clarification de votre part, etc.

5. Informez-le des délais à respecter et vos attentes

Informez-lui de l’agenda de l’étude, des décisions majeures : Tenez compte du fait que le programmeur n’est impliqué que sporadiquement dans une étude clinique. Il sera consulté seulement à une certaine période du processus. Il n’aura quasiment pas d’information sur l’étude à part le protocole. Il n’aura pas été invité aux réunions pour présenter les enjeux de l’études, pour écouter les discussions sur les spécificités des patients et n’est en général pas tenu au courant des résultats de l’études à part un : les résultats sont positifs ou pas. De plus, il remplacera parfois un autre programmeur en cours de projet ou sera remplacé par un autre.

6. Expliquez les enjeux du projet

Faites-lui partager vos motivations et les enjeux que représentent l’étude sur laquelle vous l’impliquez. Le programmeur doit travailler sur plusieurs études et projets à la fois. Il n’a pas donc les moyens de se motiver pour chaque particularité d’une étude.

7. Ne modifiez pas le travail effectué par le programmeur

Si vous ne vous sentez pas à l’aise avec la programmation sous SAS, ne commencez pas à ajouter des programmes qui affecteront les travaux de votre programmeur. Respectez le rôle de chacun.

h1

C’est quoi la programmation sous SAS ?

septembre 4, 2008

Le mot programmation est un nom abstrait pour celui qui n’a jamais touché à un ordinateur. Voici donc quelques pistes pour qui veut expliquer à ses proches ce qu’est la programmation sous SAS en termes de tous les jours.

1. Emploi du temps : programmation 2h

La programmation, c’est comme les mathématiques : c’est un terme généraliste qui sert par exemple à l’école pour désigner une matière.

2. Aujourd’hui, c’est moi le chef !

En programmation, le but est de parler avec son ordinateur pour lui demander de faire le boulot à votre place. Ce n’est pas sympa ça ! Au lieu de cliquer sur des boutons, tout est écrit noir sur blanc, comme une lettre. Cela a le mérite de pouvoir être relu et réutilisé.

3. Je parle en chinois ou quoi ?

La lettre peut être écrite en différentes langues avec ses avantages et ses inconvénients tant sur l’apprentissage que sur le niveau de sophistication. Dans un même langage, le vocabulaire a un niveau de précision plus ou moins avancé. En SAS, les blocs de texte sont regroupés en deux grands groupes.

  • L’étape DATA : les blocs de texte donnant des actions primaires commencent par le mot DATA.
  • L’étape PROC : les groupes de texte faisant appel à des ordres pré-enregistrées sont introduits par le mot PROC.

J’ai parlé ici de langage et non de langue. En fait, c’est le mot langage est le terme français pour désigner une langue destinée à un ordinateur.

4. C’est vrai ou c’est faux ? Une information binaire

Créer des mots : Les informaticiens de la première heure ont créé des langages différents. En effet, à la base l’ordinateur comprend une information basique : vrai ou faux. Il y a du courant ou il n’y en as pas. Pas très simple pour dire à l’ordinateur d’imprimer une feuille.

Il a fallu composer des mots qui correspondent à une série d’actions primaires pour pouvoir faire ensuite avec des choses un peu plus évoluées.

C’est le même principe que les lettres de l’alphabet. Avec ces lettres, des mots simples sont formés.

Des langages qui évoluent : Comme la langue française, le vocabulaire évolue en permanence, mais cette fois-ci aux grés des informaticiens passionnés. Ce sont des langues vivantes : de nouvelles naissent, d’autres meurt. Mais, dans l’ensemble, il y en a quelques unes qui font leur bout de chemin et deviennent des standards, comme l’anglais.

Des langages gratuits et d’autres payants : Le logiciel SAS fait la traduction du langage SAS en 0 et 1. Sachant que ce logiciel est payant, on parle de langage propriétaire.

5. Buongiorno ou Bonjour ?

La logique de programmation est sensiblement la même d’un langage à l’autre. Les francophones comprennent mieux l’italien que l’allemand en lisant le journal car les deux langues ont une origine latine. Et tout cela grâce aux ressemblances et juste par devinettes, sans avoir appris.

Ainsi il est plus facile pour une personne maîtrisant un langage de pouvoir évoluer vers un autre langage.

6. Vas-tu entrer cela dans ta mémoire ?

L’ordinateur a comme l’être humain une mémoire. C’est très pratique pour lui faire stocker des nombres et des lettres. Une manière de visualiser certaines de ces données est un tableau avec des lignes et des colonnes. Le but du programmeur sera entre autres d’agencer ces tableaux pour éviter les informations redondantes et les cases vides fautes d’un mauvais agencement. La mémoire de la « bébête » risque de saturer.

7. Toucher couler

Pour identifier une case dans le tableau, il faut donner deux informations :

  • le nom de la colonne,  appelé en terme technique la variable
  • le nom de la ligne qui est un simple numéro.

C’est le principe du jeu toucher-couler.

Pour distinguer les multiples tableaux, des noms leur sont également assignées.

8. Le passage à la moulinette

Sélectionner des données : En programmation SAS, il s’agit de sélectionner les lignes et les colonnes intéressantes de chaque tableau, souvent basées sur la valeur de certaines cases. Il faut alors s’adresser à l’ordinateur de manière conditionnelle. Si la case=5 alors supprime la ligne, sinon ajoute 2 à la valeur d’origine.

Grouper des données dans un seul tableau : Si besoin ces informations sont regroupées pour former un nouveau tableau. C’est un travail très important de la part du programmeur. Les tableaux n’ont pas toujours le même nombre de lignes et certaines colonnes sont souvent identiques pour permettre de lier l’information. Il faut parfois changer l’ordre dans lequel les lignes sont triées. Il faut souvent avoir un aperçu de ces données. A chaque fois c’est un nouvel ordre donné à l’ordinateur.

Faire des calculs : Après, il est possible d’effectuer des calculs mathématiques comme sur une calculatrice. L’avantage de l’ordinateur, c’est que l’opération peut être répétée de nombreuses fois tout en étant écrite qu’une seule fois et que certains calculs sont pré-enregistrés. Il suffit alors d’un mot ou deux pour demander de faire l’opération.

Conclusion

En résumé, la programmation est un terme généraliste comme les mathématiques. Elle désigne un ensemble de langues (langages) pour donner des ordres à son ordinateur avec des mots. Dans le cas de la programmation sur SAS, les ordres ont à voir avec la manipulation de tableaux stockés dans la tête de l’ordinateur. Le logiciel SAS est l’outil qui permettra de traduire les mots-clés en langages binaires seul compris par l’ordinateur.