• Aucun résultat trouvé

Documentation de projets en XML

N/A
N/A
Protected

Academic year: 2022

Partager "Documentation de projets en XML"

Copied!
11
0
0

Texte intégral

(1)

Cahiers

enberg

GUT GUT GUT

m DOCUMENTATION DE PROJETS EN XML

P Frédéric Boulanger , Yolaine Bourda Cahiers GUTenberg, n  35-36 (2000), p. 15-23.

<http://cahiers.gutenberg.eu.org/fitem?id=CG_2000___35-36_15_0>

© Association GUTenberg, 2000, tous droits réservés.

L’accès aux articles des Cahiers GUTenberg (http://cahiers.gutenberg.eu.org/),

implique l’accord avec les conditions générales

d’utilisation (http://cahiers.gutenberg.eu.org/legal.html).

Toute utilisation commerciale ou impression systématique

est constitutive d’une infraction pénale. Toute copie ou impression

de ce fichier doit contenir la présente mention de copyright.

(2)
(3)

Documentation de projets en XML

Frédéric Boulanger etYolaine Bourda

SupélecServiceInformatique

Plateau deMoulon

3rueJoliot-Curie, F-91192Gif-sur-Yvettecedex

{Frederic.Boulanger, Yolaine.Bourda}@supelec.fr

Résumé. Lemanquededocumentation delaplupartdes logiciels, etnotamment

de ceux développéspar nos étudiants,nous amèneà envisager uneapproche dela

documentation par annotation du code dans les commentaires. Nous généralisons

cetteapprocheandepouvoirdocumenterducodeenn'importequellangage,etde

créerdeladocumentationàn'importequelformat.XMLesttoutefoisleformatque

nousprivilégionscarce travail s'inscritdansun projetplusvastedetraitementdes

documents.

Abstract. Thelackofdocumentationinmostsoftwareprojects,andparticularlyin

ourstudents'projects,leadustodevelopawaytodocumentsoftwarebyannotatingit

incomments.Wegeneralizethisapproachtobeabletodocumentcodeinanylanguage

andto create documentation inany format. However, XML is our preferred choice

sincethis workispart ofabroaderdocumentprocessingproject.

Mots-clés: Documentation,annotationsdocumentaires,programmation.

Keywords: Documentation,documentaryannotations,programming.

1. Introduction

Àdetropraresexceptionsprès,laplupart deslogicielssourentd'unmanque

dedocumentationquinuitàleurmaintenanceetàlaréutilisationdeleurcode,

quandcelanenuitpasdirectementàleurdéveloppement.

Les quelques rares exceptions sont soit l'÷uvrede développeurs particulière-

ment consciencieux, soit le résultat d'une programmation littéraire très peu

répandue,bienqued'importancepournotrecommunautéT

E

X .Nousneconsi-

dérons pas le cas de JavaDoc qui, bien qu'intéressant pour documenter les

servicesfournisparducodeJava(cequel'onappelleuneAPI 1

),nepermetde

documenterni l'utilisationd'unprogramme,nisonfonctionnementinterne.

(4)

Laprogrammationlittéraireestune bonneidéeen cequ'elleregroupelecode

et la documentation dans le même document. C'est en eet une condition

nécessaire (mais hélas pas susante) pour que la documentation soit àjour

visàvisducodequ'elleestcenséedocumenter.

Malheureusement,cestyledeprogrammation,telqu'ilexisteàl'heureactuelle

avecwebetcweb,aquelquesinconvénientsquiexpliquentpeut-êtresonmanque

de succès. Tout d'abord, avant de pouvoir compiler un programme, il faut

extrairelecodedusourceweb.Ilfautpourceladisposerdesoutilsassociésau

style de programmation. Pour éviter ce problème lorsqu'on distribue le code

source d'un programme, on peut être tenté de distribuer le code déjà extrait

duméta-source.Danscecas,ondistribueuncodeillisible,cequirevientà

interdireàl'utilisateurpotentieldecomprendrecommentilfonctionneetmême

del'adapteràsaplateformeouàsesbesoins.

L'approchechoisieparD.E. Knuth étaitpertinente àl'époqueàlaquelleT

E X

a été créé, car les outils de développement n'oraient pas ce qu'apportait le

système web,et lesperformances desordinateurs incitaientàne fourniràun

compilateur quelestrictminimumpermettantd'obtenir leprogrammevoulu.

De nosjours,leslangagesde programmationsupportentlamodularitéetdis-

posent demécanismes puissantsde véricationdu respect desinterfaces. Les

performancesdesmachinespermettentdetolérerqu'uncompilateurtraiteplus

delignesdecommentairesquedelignesdecode.Uneautreapprochedelado-

cumentationdecodeestdoncpossible,etnouspensonsqu'ellepeutêtreutilisée

pourtout typede développement,et pasuniquementpourlaprogrammation

enC, C++

ouJava.

2. Principe

Le principe de notre approchede la documentation de code est que ce code

doitrestercompilabledirectement,sanstransformationpréalable.Celapermet

de distribuerle code sourcedocumenté sansobligerlesutilisateursàinstaller

l'outildedocumentation,toutenlesfaisantbénécierdecettedocumentation.

La conséquenceimmédiatede ce principeest queladocumentation setrouve

danslescommentaires.

Sur ce point, nous sommes en retrait par rapport à la programmation litté-

rairepuisquenouscommentonsducodealorsquedansunsourceweb,oncode

lecommentaireduprogramme.Cet inconvénientnous semble largementcom-

penséparlesautresavantagesdenotre approche.

Une autre conséquence de ce principe est que la seule chose que l'outil de

(5)

Celapermetdoncdeconstruireunoutilcapabledefonctionneravecplusieurs

langages,etaussid'utiliserplusieurslangagesdansunmêmeprojet.

D'autresoutilsappliquentleprinciped'uncodesourcedirectementutilisable,

maisilsnefonctionnentquepourunlangagedeprogrammationetunformatde

documentation.Par exemple,c2latexdeJohnD.Ramsdell,quenousavons

utilisé avant delancer ce projet,ne fonctionnequ'avec Cou C++

pour créer

deladocumentationenL A

T

E X .

Deuxproblèmessubsistent:lescommentairespeuventnepasêtreentièrement

consacrésàladocumentation,etcettedocumentationdoitêtrestructuréean

depouvoirêtreexploitéeautomatiquement(documentationen ligne,environ-

nementdeprogrammationgérantladocumentationetc).Lepremierproblème

est important car les commentaires sont une niche syntaxique dans laquelle

trouventrefugedenombreusesespècesd'annotations:outrelescommentaires

brutsduprogrammeur,onytrouvedesindicationssémantiquespourdiversou-

tilsdevéricationoud'aideàlaprogrammation,et onrisquemaintenantd'y

trouverdeladocumentationuncomble!Ladocumentationseradoncisolée

danslescommentairesentredeuxchaînesdecaractèresdénissablesparl'uti-

lisateur,etquenousreprésentonsiciparlespseudo-balises<xdoc>et</xdoc>.

Cettefaçond'exploiterdesstructuresparticulièresdanslescommentairesd'un

langage est assez classique, et nous incite à considérer cette approche de la

documentationdecodecommedeladocumentationparannotationplutôt

quecommedelaprogrammationlittéraire.C'esteneetladocumentationqui

suit le l du code et non le contraire. Si cette façon de présenter les choses

ne convientpas, il est toujours possibled'exploiter ensuite la structure de la

documentation, ande changerl'ordredans lequellesdiérentesparties sont

présentées.

Pourstructurerladocumentation,L A

T

E

Xauraitpuconvenir,maisilest para-

doxalementtrop puissant pour ne décrire qu'une structure logique. En eet,

mêmesiL A

T

E

Xdonnedel'importanceàlastructurelogiqued'undocumentet

tente d'isoler les problèmesde mise en forme dans des classes de documents

etdesextensions,ils'agitquand mêmed'unlangagequipermetdefairedela

miseenforme.Deplus,lastructurelexicaledeT

E

Xrenddicilel'analysed'un

document, tout simplement parce que certaines instructions ont le pou-

voirde modier lesrèglesde grammairele faitque lesprogrammesautres

queT

E

X qui tentent delire duL A

T

E

X s'étranglentau premierchangementde

\catcodenonprévuillustreleproblème...

À l'autre extrême, HTML est trop pauvre car il ne permet pas de choisir la

façondestructurerladocumentation.Deplus,ilcomporteàlafoisdesbalises

exprimantune structurelogique(parexemple<LI>pourélémentd'uneliste),

(6)

donc unlangagedebalisagelogique quine permette pasd'exprimer desindi-

cationsdemiseenforme,etquinouspermettedestructurerladocumentation

ànotreguise.Ils'agitbiensûrd'XML.

3. Détails pratiques

Lorsqu'ondocumenteducode,ilpeutêtreintéressantd'eninclureuneportion

dans la documentation. Dupliquer le code dans la documentation n'est pas

envisageablecar laredondance entraîne tôtoutarddesoublisde mise-à-jour.

Il faut donc intégrer àla documentation le véritable code source et non une

copie dececode.

Cela signie que tout ce qui apparaîtradans la documentation n'estpas for-

cémentdans lescommentaires. Autrement dit, lesbalises <xdoc>et </xdoc>

ne sont pasforcémentéquilibrées dans un commentaire. Lorsqu'onsort d'un

commentaireà l'intérieur d'unblocde documentation,le lexème qui faitsor-

tir ducommentaireest ignoré, de mêmeque lelexème qui fait entrerdans le

commentairecontenantle</xdoc>correspondant.Ilestainsipossibledefaire

apparaîtredescommentairesdanslecodeintégréàladocumentation.

Parexemple,lefragmentdecodeCsuivant:

/* <xdoc>La nature des tableaux en C permet d'écrire

des choses comme : <code language="C"> */

assert(tab[i] == i[tab]); /* c'est vrai ! */

/* </code> qui sont vraies bien que troublantes.

</xdoc> */

donnelecodeXML:

La nature des tableaux en C permet d'&eacute;crire

des choses comme : <code language="C">

assert(tab[i] == i[tab]); /* c'est vrai ! */

</code> qui sont vraies bien que troublantes.

Onremarquequelafermeturedupremiercommentaireetl'ouverturedutroi-

sièmecommentaireontdisparu lorsdel'extractionducodeXML. Parcontre,

le second commentaireest conservétel quel. Onremarque aussi quele `é' de

`écrire'aététransforméen&eacute;pourrespecterlecodageASCIIstandard

duchierXML.

(7)

LanaturedestableauxenCpermet d'écriredeschosescomme:

assert(tab[i] == i[tab]); / c'est vrai ! /

quisontvraiesbienquetroublantes.

Ladocumentationcomplèteestcomposéedeladocumentationextraiteducode,

maisaussi dechiersdedocumentation pure qui pourrontfaireréférence

auxannotationsducodesource.

4. Quelle(s) DTD?

Une fois construite, la documentation doitêtre exploitée de diverses façons:

manueld'utilisation,référencepourdéveloppeurs,descriptiondesalgorithmes

utilisésetc.Chacunedecesvuesdeladocumentationpeututiliserdiérents

média : aideen ligne, documentation papier, documentation interactivedans

unenvironnementdedéveloppement...

L'outild'extractiondedocumentationn'imposeaucunecontraintesurlaDTD,

chacunpeutdoncutiliserlaplusadaptéeàchacundesesprojets.Toutefois,le

développementd'outilsoudefeuillesdestyleXSLpermettantd'exploitercette

documentationbrutebénécieraitdel'existenced'uneDTD dedocumentation

susammentgénéraleet souplepours'adapteràdiérentstypesdeprojets.

Ilsemble toutefoisprobablequ'uneDTD uniquene pourrapassatisfaire tous

lesbesoinsdedocumentation,àmoinsdedevenirtellementlâchequ'ellenedé-

nissemêmeplusunvéritabletypededocument.Uneautreapprocheconsiste

àdénir une DTD paramétrable, unpeu de la même façon qu'uneclasse de

documentsL A

T

E

Xpeutêtreutiliséeavecdiérentesoptions.

La DTD de base,assez pauvre,codeuniquement lastructure minimale pour

qu'une documentation puisse être traitée par des outils génériques archi-

vage, indexation... Pour un type dedocumentation particulier,on utilise des

extensionsdelaDTD debaseandeconstruireuneDTD surmesure.

Les domaines nominaux d'XML permettent d'utiliser des éléments de DTDs

d'extensions dans un document respectant une DTD de base (on peut ainsi

coder des équations à l'aide de MathML dans un rapport technique). Cela

conduittoutefois àundocumentqui n'est valideni parrapport àlaDTD de

base,niparrapportauxDTDd'extensions.Deplus,dansnotrecas,lasyntaxe

deladocumentationseraitalourdiecarilfaudraitpréxerchaqueélémentdu

(8)

Une solutionestdegénérerautomatiquementlaDTDd'undocumentàpartir

de saDTD de baseet desextensions utilisées.Nousétudionscette possibilité

qui permettraitd'allégerlasyntaxedeladocumentation.

Cetaspectestimportantcar,mêmesilesoutilsdel'environnementdedévelop-

pementpermettentdesaisir ladocumentationde façonnaturelle,soncodage

danslescommentairesdoitresterlisible.Ilfautdoncabsolumentéviterqueles

balisesetlesattributsprennentplusdeplacequeladocumentation.

5. Généralisation

Extraire deladocumentationrevientnalementàdéterminercequi est dela

documentationdans lechiersource, et àl'écriredans unchierdestination.

Ceci nous amène àenrichir les marqueursde documentation an de pouvoir

préciserdansquelchierladocumentationdoitêtreplacée.Deplus,rienn'em-

pêchedetraiterautrechosequedeladocumentationausensclassiqueduterme

puisquenotreoutiln'interprètepasce qu'ilextrait.

Ladocumentationd'unprojetpeutparfoisêtreexpriméedemanièreformelle,

c'est-à-dire exploitablesystématiquement. L'intérêt d'unedocumentation for-

melleestqu'ellenepeutêtreinterprétéequed'uneseulefaçon,etquesavalidité

peutêtrevériéeautomatiquement.

Parexemple,dansunprogrammeécritenlangageCet destinéàcontrôlerun

composantprogrammable,leprogrammeurfaitdeshypothèsessurlefonction-

nementducomposant.Ceshypothèsesdoiventêtredocumentéesanqu'ilsoit

possibledevérierqu'ellesontenaccordaveclesspécicationsducomposant.

Danslecasd'uncomposantprogrammable,ceshypothèsespeuventprendrela

formed'unchierdetestsquel'outildeprogrammationpourrafairepasserau

composant.Onvoitdoncqueladocumentationd'uncodesourcepeutprendre

laformed'unautrecodesource!

L'exemple suivant montre comment le contenu du chier de test peut être

inclus dansladocumentation.Pourcela,lespseudo-balisesxdocet/xdocont

un attribut outqui permet de préciser queleur contenudoit être placé dans

(9)

/* <xdoc><prerequis>

On suppose ici que les sorties <var>s1</var>

et <var>s2</var> du composant ne sont jamais

actives ou inactives en même temps.

Le fichier <fichier href="./compoZZZ.tst"/>

contient un test vérifiant ce prérequis.

</prerequis>

</xdoc>

<xdoc out="./compoZZZ.tst">

s1 .xor. s2 = true;

</xdoc>

*/

void uneFonction() {

...

}

Notre outil d'extraction peut donc être considéré comme unprogramme qui

repère des portions balisées dans un chier source et les écrit dans d'autres

chiers.Maisnousallonsvoirquelireouécrireunchierexigecertaines

précautions.

6. Espaces d'entrée et de sortie

Nousavonsdéjàvuquelorsqu'onécritdansunchierXML,certainscaractères

littérauxdoiventêtretraduits:un&doitêtreécrit&amp;.Sionécrivaitdans

unchierL A

T

E

X ,lemême&devraitêtreécrit\&.

Lanécessitédecodercertainscaractèresdefaçonparticulièrepeutêtrerepré-

sentée par la notion d'espace de sortie. Ainsi, dans l'espace de sortie XML,

l'esperluette se code &amp; et le signe inférieur strict &lt;. Il faut bien

noter qu'il s'agit de l'esperluette et du signe inférieur strict en tant que

symboles, pasen tantquecaractères. En eet,une baliseXML débuteparle

caractère <,qui nedoit pasêtre remplacépar &lt;.Demême, le caractère&

délimite àgauchelesentitésXML, et lorsqu'il est utilisé pourcela, il nedoit

pasêtreremplacé par&amp;.

Lanotiond'espacedesortiepermetànotreoutild'extrairedeladocumentation

sousd'autresformatsqu'XMLil suraitdecoderl'espacedesortieL A

T

E X

dansnotreoutilpourqu'ilpermetted'écriredesdocumentsnormauxet

decréerdeschiersendiverslangages.Maiscette notionn'estpassusante:

il est aussinécessaired'indiquer commentinterpréterlescaractèresdu chier

(10)

Nousavonsvudansunexemplequelecaractère`é'danslechiersourceétait

traduiten&eacute;dansl'espacedesortieXML.Cettefaçondedireleschoses

est partiellement fausse : c'est en eet le symbole e accent aigu qui est

codéainsi enXML. Ilmanquece qui apermis àl'outilde reconnaîtreun e

accentaigu danslecaractère `é'duchiersource.Cequ'on alu n'estqu'un

nombre, et ilfaut connaîtrelecodagedudocumentpourl'interprétercomme

un`é'.Toutefois,l'interprétationducontenuduchiersourceneselimite pas

àl'utilisationd'uncodagedescaractères.

Reprenonsnotreexempleduchierdetestspouruncomposantprogrammable,

etsupposonsquedanslelangageutilisépourexprimercestests,leOUexclusif

senote*/.LecodedecestestsfaitpartiedeladocumentationducodeCchargé

de communiqueravec ce composant; il setrouve doncdans un commentaire

dulangageC.EnC,lescommentairessontdélimitésparleslexèmes/*et */,

ce quifaitque l'apparitiond'un OUexclusif denotrelangage detest dansun

commentaireapoureetdeclorelecommentaire...

ÊtredansuncommentairedulangageCestdoncuneconditionquinousinterdit

d'utilisercertainscaractères.NousdevonsdonccoderleOUexclusifdenostests

à l'aide de caractères autorisés, mais dans le chier de tests, ce OU exclusif

doit apparaître sous la forme */. De la même façon qu'un espace de sortie

indiquecommentcodercertainssymboles,unespaced'entréeindiquecomment

interpréter certainscaractères. Dans notrecas, on pourra déciderde coder le

OUexclusifsouslaforme.xor.parexemple,etconstruireunespaced'entrée

danslequel.xor.s'interprèteen*/.

7. Conclusion

L'approchedeladocumentationquenousproposonstentedeconservercertains

bonsaspectsdelaprogrammationlittérairetoutens'appuyantplusfortement

surlesmécanismesfournisparleslangagesdeprogrammationactuels.Elleper-

metladistributionducodesourcedocumentéenéliminantl'étaped'extraction

du code compilable, ce qui lui permet de plus de s'appliquer à tout langage

de programmationdont onsait isolerlescommentaires,et d'utiliser plusieurs

langagesdansunmêmeprojet.

En choisissantXML pour structurer la documentation, nous souhaitons per-

mettre à des outils de projeter diérentes vues de cette documentation

qui pourronts'adresseràdiérentspublics: utilisateurs,programmeurs,tech-

niciensdemaintenance.Chacunedecesvuespourradeplusêtreprésentéesur

diérentsmédia:manuelpapier,aideenligne,systèmedemaintenanceassistée

(11)

Lamiseaupointd'unsystèmedeDTDsparamétrablespermettradestructurer

ladocumentationdelamanièrelaplusappropriée,toutenbénéciantd'outils

capablesdelatraiterselonune DTDdebase.

Lesupportdeplusieurschiersdedocumentationetlesnotionsd'espaced'en-

tréeetdesortiepermettentdetraitercorrectementdesportions dedocumen-

tationexpriméesdansunlangageformel, etcequelquesoitlelangagehôtede

ladocumentation.

Cet outil est actuellementen versiondedéveloppementet devrait êtremis à

la disposition d'étudiants n'ayant pas participé à son développement dès la

rentréeprochaine.Nouspourronsalorsjugerdesonimpactsurlaqualitédela

Références

Documents relatifs

Exit, voice and loyalty a ainsi pour objectif d’étudier les conditions de développement, conjoint ou non, des deux modes d’action, leur efficacité respective dans

Démontrer le théorème de Cauchy-Goursat pour tout contour polygonal fermé.

Problème au sens de problématique scientifique et didactique, problématique scolaire, problème au sens d’énigme, problème reformulé par l’élève dans un

Tout comme pour la courbe dans le cas d’une charge résistive, nous constatons une diminution de plus en plus importante de la tension secondaire en fonction de l’augmentation

M. Chauvin vous fait remarquer que les produits sont donc manipulés par plusieurs intermédiaires avant de se trouver sur la table du consommateur. Il veut que vous preniez

• Il existe pleins d’applications propriétaires (chez IBM par exemple), mais le langage le plus populaire pour écrire des documents est DocBookA. • Une autre application SGML

Soit S l’ensemble des points Mx,y,z de l’espace tel que a Montrer que S est une sphère dont on déterminera le centre et le rayon.. d Montrer que le plan coupe S’ suivant

Besoin d’information défini: se constituer une culture personnelle autour de la notion de résistance à partir de documents de référence. Type de produit de