I. Introduction▲
Si vous souhaitez faciliter la maintenance de votre application, pour par exemple corriger certaines erreurs d'exécution, pour améliorer certaines fonctions, ou simplement pour la faire évoluer, vous aurez intérêt à bien la documenter au fur et à mesure de son développement et de son utilisation.
De cette façon, si par la suite vous souhaitez passer le relai à une autre personne, avec cette documentation, elle sera normalement en mesure d'assurer sa maintenance.
Malheureusement, le logiciel Access ne propose pas de vrai outil pour documenter sa base de données. Il y a bien une documentation de disponible pour les différents objets, mais sans table des matières ni possibilité de personnaliser son contenu avec par exemple des illustrations.
Cependant, on peut déjà facilement récupérer dans Access de l'information et des vues sur les différents objets de la base de données, puis réaliser cette documentation à l'aide d'un logiciel de traitement de texte classique (Word, LibreOffice, etc.), ou comme dans notre cas, avec un éditeur XML. Cet outil va permettre de présenter les différents objets de l'application à l'aide d'une table des matières, et de documenter le code avec des balises dédiées.
Pour réaliser cette documentation, je vous propose donc une méthodologie décomposée en trois étapes principales :
- Quelques conseils avant de commencerQuelques conseils avant de commencer ;
- Présenter les fonctions et la structure générale de l'applicationPrésenter les fonctions et la structure générale de l'application ;
- Décrire le rôle et la structure des objets de la baseDécrire le rôle et la structure des objets de l'application.
Pour illustrer cette démarche, on se propose de documenter une gestion de stock du matériel informatique utilisé dans une société de conseil et d'expertise aux entreprises.
L'objectif n'est pas d'expliquer comment concevoir et développer une application à l'aide de méthodes type UML, mais juste de fournir les éléments permettant d'assurer sa maintenance.
II. Quelques conseils avant de commencer▲
Commençons par donner quelques conseils pratiques pour tenir une bonne documentation.
II-A. Respecter une norme pour les noms de vos objets▲
Pour faciliter l'identification des objets de votre base de données et donc la lecture de votre documentation, faites en sorte que leur nom respecte une norme :
- Tables : T_Fournisseur, T_Materiel, etc. ;
- Requêtes : R_Fournisseurs, R_Liste_Materiels, etc. ;
- Formulaires : F_Fournisseur ;
- Colonnes ou champs : Id_Fournisseur, Nom_Fournisseur, etc. ;
- …
Pour plus d'information sur le sujet, je vous invite à consulter Normalisation des noms des objets des bases de donnéesgenerer-numeros-auto.zip.
II-B. Utiliser des schémas et des captures d'écran▲
Pour garder une vision d'ensemble de l'application et mieux comprendre le fonctionnement de tous ses composants, accompagnez vos explications de schémas et de captures d'écran.
II-C. Respectez certaines règles pour l'écriture de votre code source▲
Pensez à bien indenter votre code et à choisir des noms de variables et de fonctions explicites pour faciliter sa relecture.
Utilisez des fonctions génériquesfonctions génériques pour éviter les redondances dans le code et ainsi simplifier sa maintenance. Idéalement, ces fonctions peuvent être regroupées dans des modules séparés, de manière à pouvoir éventuellement les « transporter » rapidement d'une appli à l'autre.
Si vous souhaitez, par exemple, piloter une autre application (Excel, Word, etc.), optez pour des variables objet à liaison anticipée (early binding), c'est-à-dire déclarées dans un type d'objet spécifique, car elles offrent plusieurs avantages :
- les objets à liaison anticipée permettent au compilateur d’allouer de la mémoire et d’effectuer d’autres optimisations avant l’exécution d'une application. Ils sont donc plus rapides que les objets à liaison tardive ;
- l'utilisation du early binding rend également votre code plus lisible et facilite sa gestion. En effet, cette solution permet d'afficher les membres (propriétés, méthodes…) de vos objets au fur et à mesure de l'écriture de votre code (complétion - CTRL + Espace), et vous donne accès à l'aide dynamique sur la syntaxe.
Enfin, pour une meilleure compréhension du code, commentez-le à bon escient, en donnant le rôle de chacune des fonctions et en décrivant ses parties importantes.
II-D. Mettre à jour votre documentation régulièrement▲
Mettez à jour la documentation à chaque fois que vous modifiez le code source ou les objets de la base de données. Si vous enregistrez plusieurs versions de votre application, prévoyez une documentation par version.
III. Présenter les fonctions et la structure générale de l'application▲
Commencez votre documentation en décrivant le logiciel de façon globale.
III-A. Fonctions principales▲
Présentez tout d'abord votre application, en énumérant brièvement ses fonctions principales.
Dans notre exemple, notre base Access permet de :
- gérer le matériel informatique de l'entreprise par catégorie (ordinateur, imprimante, serveurs, claviers, etc.) ;
- gérer le stock du matériel : en prêt, en réparation, en stock, hors service, obsolète ;
- gérer les alertes de fin de garantie du matériel ;
- enregistrer et visualiser le journal d'activité des utilisateurs.
- …
III-B. Structure globale▲
Pour avoir une vue d'ensemble de l'application, vous pouvez ensuite ajouter un schéma montrant les interactions entre les différents formulaires, accompagné d'une copie d'écran du formulaire d'accueil avec ses différents menus.
Pour notre gestion de stock, nous présentons tout d'abord sa structure générale :
Puis, le sommaire permettant d'accéder aux différents formulaires :
Et enfin, le formulaire permettant le suivi du stock des matériels informatiques, accessible depuis le sommaire :
Si votre application est utilisée en mode multiutilisateurmultiutilisateurs, vous pouvez également donner ici un schéma de l'architecture frontale/dorsale.
IV. Décrire le rôle et la structure des objets de l'application▲
Décrivez ensuite plus en détail ses différents composants.
IV-A. Rôle et structure des tables▲
Dans cette partie, commençons par afficher la fenêtre Relations d'Access pour avoir une vue d'ensemble des tables de notre base de données (Onglet Outils de base de données, puis Relations).
Puis décrivons le rôle et la structure de ces tables. Pour cela, on utilise des tableaux comportant trois colonnes pour indiquer le nom des champs, leur type de données et leur description.
IV-A-1. Table T_Materiel▲
Elle permet d'enregistrer les informations relatives aux matériels informatiques utilisés dans l'entreprise.
Nom du champ |
Type de données |
Description |
---|---|---|
Id_Materiel |
Numéro-auto |
Identifiant du matériel informatique |
Id_Interne |
Texte |
Numéro identifiant le matériel en interne |
Id_Modele |
Texte |
Numéro identifiant le modèle de matériel |
… |
… |
… |
IV-A-2. Table T_Fournisseur▲
Elle permet d'enregistrer les informations relatives aux fournisseurs.
Nom du champ |
Type de données |
Description |
---|---|---|
Id_Fournisseur |
Numéro-auto |
Identifiant du fournisseur |
Nom_Fournisseur |
Texte |
Nom du fournisseur |
Adresse |
Texte |
Adresse du fournisseur |
… |
… |
… |
IV-A-3. …▲
On poursuit notre description des autres tables de la base de données…
IV-B. Rôle et structure des requêtes▲
Détaillons ensuite le rôle et la structure des requêtes. Pour mieux décrire leur composition, on va réaliser des copies d'écran de chaque requête affichée en mode création. Vous pouvez pour cela utiliser la touche « Impression écran » de votre clavier, puis coller votre image dans Paint ou Photoshop, pour ensuite la modifier comme vous le souhaitez.
IV-B-1. Requête R_Liste_Fournisseurs▲
Basée sur la table T_Fournisseur, elle permet d'afficher la liste des fournisseurs classée par ordre croissant de leur nom :
Fournisseur
:
Majuscule
(
[Nom_Fournisseur])
IV-B-2. …▲
Poursuivre la description des autres requêtes…
IV-C. Rôle et structure des formulaires▲
Décrivons ensuite les formulaires. Pour nous aider, on va réaliser des copies d'écran de chaque formulaire affiché en mode création.
IV-C-1. Formulaire F_Sommaire▲
Ce formulaire de démarrage comporte un certain nombre de boutons de commande permettant d'accéder aux différents formulaires :
Nous décrivons ensuite ces différents boutons de commande et leur procédure associée
IV-C-1-a. Bouton de commande Cmd_Liste_Materiels▲
Ce bouton permet d'ouvrir la liste des matériels pour identifier ceux qui sont en stock, en réparation, ou hors service.
Private
Sub
Cmd_Liste_Materiels_Click
(
)
DoCmd.OpenForm
"F_LISTE_MATERIELS"
End
Sub
IV-C-1-b. Bouton de commande Cmd_ajout_Fiche_Fournisseur▲
Ce bouton permet d'ouvrir le formulaire F_Fournisseur en mode ajout.
Private
Sub
Cmd_Ajouter_Fiche_Fournisseur_Click
(
)
DoCmd.OpenForm
"F_FOURNISSEUR"
, , , , acFormAdd
End
Sub
IV-C-1-c. …▲
Poursuivre la description des autres boutons de commande…
IV-C-2. Formulaire F_Liste_Materiels▲
Il s'ouvre depuis le sommaire :
On remarque qu'il comporte un sous-formulaire et des listes déroulantes pour filtrer les données de ce sous-formulaire.
On présente ici un exemple de liste déroulante en plus du contrôle sous-formulaire.
IV-C-2-a. Liste déroulante Cmb_Categorie_Materiel▲
Elle permet de filtrer le sous-formulaire en fonction de la catégorie de matériel choisie.
Elle a comme source de données la table T_Categorie_Materiel :
Private
Sub
Cmb_Categorie_Materiel_AfterUpdate
(
)
' rafraîchit la liste des matériels en fonction des choix effectués sur les listes déroulantes
RefreshListeMateriels
End
Sub
IV-C-2-b. Sous-formulaire SF_Liste_Materiels▲
IV-C-3. …▲
Décrire de la même manière les autres formulaires…
IV-D. Documentation des modules▲
On présente dans cette partie les fonctions et les procédures, et on commente leur code. On utilise pour cela la balise de code disponible dans l'éditeur XML.
IV-D-1. Module M_Automation_Outlook▲
Il contient les fonctions génériques permettant d'interagir avec Outlook. Comme conseillé précédemment, on utilise des variables objet à liaison anticipée (early binding) qui nécessitent de référencer la librairie Microsoft Outlook XX.X Object library.
IV-D-1-a. Fonction isOpenOutlook▲
Indique si l'application Outlook est déjà chargée en mémoire.
Public
Function
IsOpenOutlook
(
) As
Boolean
Dim
olkApp As
Outlook.Application
' variable objet pour faire référence à l'application Outlook
On
Error
Resume
Next
' passe à la ligne suivante en cas d'erreur
Set
olkApp =
GetObject
(
, "Outlook.Application"
)
On
Error
GoTo
0
' annule la gestion d'erreur
If
olkApp Is
Nothing
Then
' si outlook n'est pas ouvert
IsOpenOutlook =
False
Else
' sinon
IsOpenOutlook =
True
End
If
End
Function
IV-D-1-b. Procédure sendEmail▲
Elle permet d'envoyer un e-mail avec Outlook à l'utilisateur dont l'adresse e-mail est enregistrée dans la base :
Sub
sendEmail
(
olkApp As
Object, emailAddr As
String
, subj As
String
, msg As
String
)
' envoie l'e-mail d'objet subj et de contenu msg à l'adresse emailAddr
Dim
emailItem As
olMailitem ' variable objet pour faire référence à l'objet MailItem
' Création de l'objet olMailitem
Set
emailItem =
olkApp.CreateItem
(
olMailItem)
With
emailItem ' mise à jour des propriétés de l'objet olMailItem
.To
=
emailAddr ' adresse e-mail du destinataire
.Subject
=
subj ' objet du message
.BodyFormat
=
olFormatRichText ' format texte enrichi pour le message
.HTMLBody
=
msg ' contenu du message
.Send
' envoi du message
End
With
' on libère la variable objet
Set
emailItem =
Nothing
End
Sub
Vous pouvez constater que les variables sont bien déclarées dans un type d'objet spécifique.
IV-D-2. Module M_Alertes_Garanties▲
Il contient les fonctions permettant d'envoyer des messages d'alertes de fin de garantie aux utilisateurs du matériel.
IV-D-2-a. Fonction SendAlertes▲
Elle permet d'envoyer une alerte aux utilisateurs dont la garantie du matériel arrive à échéance.
Déroulé de la fonction :
- ouverture du jeu d'enregistrements basé sur la requête R_Liste_Alertes_Garanties ;
- ouverture d'Outlook, si pas chargé ;
- parcours de la liste des alertes de garantie ;
- pour chacune des alertes de garantie, envoi de l'e-mail correspondant à l'utilisateur.
IV-D-3. …▲
Décrire de la même manière les autres modules…
Pensez à mettre à jour régulièrement la documentation du code source.
V. Documentation générée à partir du xml▲
Lien vers un extrait de la documentationdocumentation ayant servi d'exemple pour le tutoriel.
VI. Remerciements▲
Je tiens à remercier Pierre Fauconnier de m'avoir conseillé pour la réalisation de cet article, ainsi que Claude Leloup pour sa relecture.