Manuel complet sur les fonctionnalités de Windev
...
Windev est une application Windows qui permet de fabriquer d’autres applications Windows. Cette fabrication se fait à partir d’un éditeur qui dessine l’interface et d’un langage simple et intuitif (le W-Langage).
Sans exagérer, l’interface de programmation est extrêmement simple avec cet outil : on crée un bouton et on y attache le code susceptible de répondre à un évènement comme le clic de la souris sur un bouton. Windev masque en effet la réelle complexité à concevoir une application graphique Windows comme avec des langages comme le C++.
3.1. L’orientation
Windev est particulièrement interactif, ce qui se traduit par le fait que vous pouvez passer directement de votre imagination à sa mise en œuvre sur l’ordinateur. Vous pouvez remanier votre application à volonté et la corriger ou la compléter sans difficulté.
Cette facilité pose d’ailleurs le problème de ne pas se lancer trop vite dans le développement pur et de réfléchir à toute la logique de conception d’un programme. Cet aspect n’est pas abordé dans ce manuel, mais je vous encourage à lire d’autres supports comme la Conduite de projets ou l’Etude préalable
3.2. Limitations de Windev
Windev s’appuie d’ailleurs sur une méthodologie de type Merise et depuis la version 7, est supporté la méthode UML. Ce manuel traitant principalement de l’approche d’un débutant face à l’AGL, nous n’aborderons pas ces méthodes d’analyse dans le détail.
Rappelons enfin que Windev a des limites. Que l’AGL ne peut pas servir à créer n’importe quel type d’application. Si Windev permet la création de programmes de gestion relativement puissants et rapides, il pêchera dans d’autres domaines (temps réel, multimédia...).
On ne peut donc pas tout faire, ce qui ne veut pas dire que le produit soit limité. L’éditeur a prévu trois ouvertures pour donner à Windev plus de puissance :
3.3. Limitations du support
Ce support dans un soucis de simplification, n’aborde pas certains aspects jugés complexes ou trop pointus pour démarrer avec Windev. Il s’agit de :
3.4. Le langage
Par rapport à d’autres langages, Windev apporte une simplification considérable avec un langage intuitif : le fameux W-Langage. D’abord parce qu’il est en français et qu’il est composé d’ordre facilement mémorisable : Ouvre ouvrira tout simplement une fenêtre.
Remarque :
Pour les anglophiles, le W-Langage deviendra le W-Language. Les ordres sont bilingues avec par exemple, Open pour Ouvre ou Close pour Ferme.
Ensuite parce que Windev est enrichi de nombreux assistants à la saisie du code qui facilite la création de procédures complexes.
Windev est fondé sur la notion d’objet, ou plus précisément de programmation événementielle. Un programme sous Windows est donc d'abord et avant tout, une interface munie d’objets (des contrôles le plus souvent). Chaque composant est doté de propriétés et réagit à des événements.
Un programme Windev, comme n’importe quel programme informatique, implique deux étapes distinctes :
4.1. Le projet
L’ensemble d’une application Windev, lorsqu’elle n’est pas compilée (en mode conception), porte le nom de projet. Le projet rassemble ainsi un ensemble logique d'objets et de traitements dont le but est de réaliser un objectif donné. Le projet gère les relations des objets entre eux.
Techniquement un projet est un assemblage de fichiers. Ce super fichier porte l’extension .WDP (abréviation de Windev Développement de Projet). Une fois ouvert dans l’AGL, ce fichier de projet référence tous les fichiers dont Windev a besoin pour travailler.
Les fichiers composants un projet peuvent être de plusieurs natures :
Astuce :
Pour afficher la liste des composants d’un projet, sélectionnez le menu Projet / Liste des composants du projet.
Enfin, lors de la création d’un projet, Windev crée une structure spécifique de sous-répertoires décrite comme suit :
4.2. Les composants
Le concept d’objet en programmation a un sens particulier. Pour ne pas trop corrompre le terme, on parle plutôt sous Windev de composants. Il s’agit ici d’une belle abstraction qui demandera un petit effort au novice.
Un composant est une interface graphique pour une fonction précise. Derrière cette interface, il existe un certain nombre de propriétés et de traitements. Chaque traitement peut gérer un évènement à travers du code.
Remarque :
Sous Windev, on parle plus de champ que de composant. Pour des raisons de clarté, on utilisera indifféremment les deux termes.
Prenons par exemple, le composant bouton qui est largement utilisé dans les interfaces sous Windows.
Les propriétés sont codés par le nom du composant et du nom de la propriété séparés par deux points de suite. Ainsi le changement du libellé d’un bouton se codera
monBouton..Libellé = "Test"
Le détail des propriétés se résume comme suit (liste non exhaustive) :
Il possède deux évènements dont le traitement sera différent :
Il existe également d’autres évènements qui sont liés cette fois à l’interaction des périphériques souris et clavier. On peut ainsi exécuter du code si le bouton est survolé par la souris. Dans la majorité des cas, ils ne sont pas utilisés sauf à ajouter des fonctionnalités plus élaborés.
Enfin, on notera également qu’un composant peut contenir d’autres composants. Une fenêtre contiendra par exemple un ensemble de champs texte et de boutons.
5.1. Notions élémentaires
Pour notre première application, nous allons créer une fenêtre avec trois composants (deux boutons et un champ texte).
Dans ce programme, le texte change au-dessus en fonction du clic de l’utilisateur sur le bouton Gauche ou Droite.
Avant toute chose, il vous faut créer un projet. Pour cela, procédez comme suit : Sélectionnez le menu Fichier / Nouveau / Projet. L’assistant de création de projet s’ouvre.
Spécifiez alors les informations voulues dans les différentes étapes du projet.
Le projet créé devient le projet en cours et s’affiche dans la barre de titre de Windev. Une boîte s’affiche pour vous demander la création d’une fenêtre.
Pour des raisons de prise en main, choisissez comme Nouvelle fenêtre, un modèle vierge.
Une fenêtre vide de type standard apparaît dans l’éditeur de fenêtre de Windev. Modifiez la taille de la fenêtre en agissant sur les poignées et placez sur celle-ci un composant « champ de saisie » et deux « boutons ».
A chaque création, les composants portent des noms par défaut, la fenêtre s’appelle Fenêtre1, les boutons Bouton1 et Bouton2, etc. C’est ce nom que vous devrez utiliser lorsque vous allez coder vos évènements.
Il est évident que de garder de tels noms ne sera pas aisé pour la compréhension du code par d’autres développeurs. Il est donc indispensable de les changer.
Appelez le volet des propriétés d’un composant par un clic droit sur celui-ci puis de choisir Description dans le menu contextuel.
Si vous êtes libre de nommer vos composants comme bon vous semble, je vous encourage à les préfixer. Ainsi pour les boutons, vous mettrez un b minuscule pour signifier qu’il s’agit d’un Bouton. Même chose pour les champs de saisie où vous ferez commencer chaque nom par un s minuscule.
Dans la propriété Nom, changez Bouton1 pour bGauche et la propriété Libellé avec « Gauche ». Faîtes la même chose pour Bouton2 avec bDroite comme Nom et « Droite » comme Libellé. Comme Nom pour le champ Saisie1, donnez sResultat et comme Libellé « Bouton appuyé ».
Enregistrez maintenant votre projet en cliquant sur l’icône « Disquette » ou en appuyant sur Ctrl + S. Confirmez l’enregistrement de la fenêtre en validant ou en modifiant son nom.
Remarque :
Comme toujours et c’est valable pour toutes applications informatique, il est recommandé de sauvegarder régulièrement.
5.2. Premier test
Nous allons maintenant tester notre application en lançant le mode exécution. Pour cela, choisissez le menu Projet / Tester le projet ou appuyez sur Ctrl + F9.
La première fois que vous lancez un test, Windev vous demande quel sera la première fenêtre à faire apparaître. Choisissez l’unique fenêtre de votre projet.
Une fois validé, Windev se met en icône et lance votre projet. La fenêtre de votre application apparaît alors.Bien sûr le fait de cliquer sur les boutons ne déclenchent rien. C’est normal car jusque là, nous n’avons pas créer le code évènementiel des boutons.
En revanche, tout ce qui concerne l’interface graphique fonctionne. Vous pouvez ainsi déplacer la fenêtre, la dimensionner, la mettre en icône ou la maximiser. Vous pouvez également la fermer (bouton [x]).
Cette dernière action va mettre fin au test et rendre la main à Windev. 5.3. Coder les évènements
Comme on l’a préciser plus haut, chaque composant doit être codé pour réagir et interagir avec l’utilisateur. Il s’agit donc de construire des couples composant/évènement.
L’accès au code d’un composant se fait en sélectionnant celui-ci (un seul clic) et en appuyant sur la touche F2. L’éditeur de fenêtre Windev se transforme alors en éditeur de code.
Dans notre projet, seuls les boutons auront leur évènement « Clic » codifié. Commençons par le code du bouton bGauche, cliquez une fois et appuyez sur F2. Dans l’éditeur de code, saisissez le texte :
Histoire de voir qu’il n’y a pas qu’un seul moyen d’arriver au même résultat, nous allons coder différemment le bouton bDroite.
L’éditeur de code de Windev 7 est devenu assez sophistiqué. Il vous suggère au fur et à mesure de la saisie, les fonctions du W-Langage, les noms des composants ou leurs propriétés associées.
Enregistrez votre projet et relancez un test par Ctrl + F9 pour vérifier que tout fonctionne correctement.
5.4. Procédure ou fonction
Afin de ne pas enfermer du code dans un couple composant/évènement, il est possible de définir des procédures ou des fonctions. Celles-ci permettent d’économiser du code qui serait Bien sûr le fait de cliquer sur les boutons ne déclenchent rien. C’est normal car jusque là, nous n’avons pas créer le code évènementiel des boutons.
En revanche, tout ce qui concerne l’interface graphique fonctionne. Vous pouvez ainsi déplacer la fenêtre, la dimensionner, la mettre en icône ou la maximiser. Vous pouvez également la fermer (bouton [x]).
Cette dernière action va mettre fin au test et rendre la main à Windev. 5.3. Coder les évènements
Comme on l’a préciser plus haut, chaque composant doit être codé pour réagir et interagir avec l’utilisateur. Il s’agit donc de construire des couples composant/évènement.
L’accès au code d’un composant se fait en sélectionnant celui-ci (un seul clic) et en appuyant sur la touche F2. L’éditeur de fenêtre Windev se transforme alors en éditeur de code.
Dans notre projet, seuls les boutons auront leur évènement « Clic » codifié. Commençons par le code du bouton bGauche, cliquez une fois et appuyez sur F2. Dans l’éditeur de code, saisissez le texte :
Histoire de voir qu’il n’y a pas qu’un seul moyen d’arriver au même résultat, nous allons coder différemment le bouton bDroite.
L’éditeur de code de Windev 7 est devenu assez sophistiqué. Il vous suggère au fur et à mesure de la saisie, les fonctions du W-Langage, les noms des composants ou leurs propriétés associées.
Enregistrez votre projet et relancez un test par Ctrl + F9 pour vérifier que tout fonctionne correctement.
5.4. Procédure ou fonction
Afin de ne pas enfermer du code dans un couple composant/évènement, il est possible de définir des procédures ou des fonctions. Celles-ci permettent d’économiser du code qui serait exécuter dans plusieurs traitements avec des modifications minimes.
Quelle est la différence entre une procédure et une fonction :
Pourtant en W-Langage, il n'existe pas de distinction entre les deux termes. Les procédures et les fonctions sont gérées de la même façon. Une procédure comme une fonction peut retourner ou non un résultat. Le compilateur de Windev ne posera pas de problème.
Ensuite une procédure ou une fonction peut être de niveau global ou local. Si elle est déclarée comme globale, son code sera accessible partout dans le projet. Si elle est déclarée comme locale, son code ne sera accessible que dans la fenêtre où elle se trouve.
Important :
Il ne faut pas déclarer deux procédures ou fonction avec le même nom (notamment une globale et une locale).
Dans notre projet, nous allons réaliser une procédure locale que nous allons placer dans les deux évènements clic des boutons. Placez vous dans le traitement clic du bouton bGauche :
Saisissez à la place du code existant le nom de la procédure et appuyez sur la touche F4.
Une boîte de dialogue s’affiche avec le nom de la procédure que vous avez tapé.
Validez pour ouvrir l’éditeur et en saisir son code.
N’oubliez pas le traitement clic du bouton bDroite :
...
Détaillons ensemble le code. La procédure est appelée dans le traitement clic. On lui passe un paramètre, un caractère qui identifie le bouton. Puis dans la procédure, on récupère ce paramètre et on en teste la valeur pour afficher le bon résultat.
Bien sûr, l’exemple a été volontairement complexifié car on aurait pu directement passé le libellé complet comme paramètre : modifieResultat("Droite")
Mais dans ce cas, le test dans la procédure aurait été inutile et la procédure elle-même n’aurait plus de justification.
5.5. Amélioration de l’interface
En règle général, une application possède une barre de menu. Celle-ci permet à l’utilisateur de retrouver toutes les fonctions du programme.
Pour notre exemple, nous allons créer un menu ultra simple. Une barre de menu principal qui contiendra deux éléments : Fichier et Aide. Dans le menu Fichier, deux éléments Exécuter et Quitter. L’élément Exécuter aura deux sous-éléments Gauche et Droite qui feront la même chose que les boutons du même nom. Dans le menu Aide, un élément A propos.
Placez vous sur votre fenêtre et appelez le menu Insertion / Ajouter le menu principal Sur votre fenêtre apparaît par défaut une barre de menu avec le mot Menu. A partir de là, vous allez gérer votre menu directement sur votre fenêtre.
Vous pouvez utiliser le menu contextuel sur le composant menu mais il est plus simple de créer ses éléments avec le clavier.
Voici quelques raccourcis :
Rappel :
N’oubliez jamais qu’un élément de menu doit avoir une lettre d’appel (souligné). Vous devez faire précéder cette lettre du symbole &.
Nous allons maintenant coder chaque élément. Pour cela, cliquez sur l’élément désiré et appuyez sur la touche F2.
...
Il est plus simple d’appeler l’évènement d’un autre composant que de faire une copie de son code. En effet si vous devez modifier les lignes du traitement, vous n’aurez à le faire qu’à un seul endroit.
Pour l’option de menu « A propos », nous allons d’abord créer une nouvelle fenêtre. Appuyez sur Ctrl + N et choisissez l’option Fenêtre et sélectionnez la fenêtre A propos.
Revenez enfin sur votre fenêtre principale et appelez le code de l’élément de menu A propos.
5.6. Finition
Il s’agit maintenant de transformer votre projet pour en faire un fichier exécutable autonome. Pendant cette opération, l’application recevra quelques finitions qui lui donneront un aspect un peu plus professionnel.
... ... ...
Explication des facteurs :
RELY indique quelle doit être la fiabilité du logiciel. Très fort et exceptionnel pour des logiciels en temps réel où la vie humaine est mise en danger (guidage de missile).
DATA représente le volume des données hébergé sur le système. On appliquera la formule
R = nombre de Ko (kilo-octets) / KISL
Faible si R < 10
Moyenne si 10 < R < 100
Forte si 100 < R < 1.000
Très forte si R > 1.000
CPLX indique quelle sera la complexité des traitements. Compter un facteur exceptionnel en cas de programmation avec des classes (POO).
TIME indique l'occupation CPU tolérée. Moyen pour un taux de 50 %, forte pour 70 %, très forte pour 85 % et exceptionnel pour un taux de 95 %.
STOR indique l'occupation en mémoire de l'application. Même taux que pour TIME.
VIRT représente la stabilité de l'environnement si le logiciel doit subir des modifications dans l'année.
TURN indique le temps de réponse que le logiciel devra offrir à l'utilisateur. ACAP correspond à la compétence du chef de projet ou des analystes. AEXP correspond à l'expérience du chef de projet ou des analystes. PCAP correspond à la compétence de l'équipe sur le projet.
VEXP correspond à l'expérience de l'équipe sur des projets du même type. LEXP correspond à l'expérience de l'équipe dans l'AGL.
MODP indique si l'équipe utilise des méthodes d'estimation, de planification et de suivi pour le projet.
TOOL indique si l'équipe utilise des outils pour la planification et le suivi du projet. SCED indique si le projet a des contraintes de délai vis-à-vis du client.
Calcul de la charge nette
On détermine ensuite la charge nette en multipliant la charge brute par le produit des 15 facteurs correctifs.
On pourra appliquer à cette charge nette, trois autres facteurs supplémentaires de minoration : L'instabilité des spécifications (jusqu'à 1,6) La qualité de gestion du projet (de 1 à 2) La qualité des relations avec les utilisateurs (de 1 à 2)
Calcul du délai total normal
Le délai total est une fonction dépendant d'abord de la charge totale nette puis du mode de développement. La formule est la suivante :
TDEV = 2,5 x (MH)c
...
Ces méthodes nécessitent, elles aussi, un calibrage des coefficients sur des projets réels de l'entreprise. Elles reflètent bien, alors, l'expérience d'une équipe donnée dans un environnement donné et fournissent ainsi une estimation avec une bonne précision.
Cependant, il n'y a pas de méthode universelle, ni magique. Il conviendra toujours de faire l'analyse la plus détaillée possible afin de définir les tâches et leur enchaînement. La productivité est très variable selon les personnes, les méthodes et les outils. La difficulté technique entre aussi en ligne de compte mais il est certain qu'elle décroît avec la taille du projet.
Chaque fois que les enjeux le justifient (forfait, pénalité de retard...), il conviendra de faire plusieurs estimations à l'aide de plusieurs méthodes et en demandant l'avis à plusieurs estimateurs avant de s'arrêter sur une estimation raisonnable. Celle-ci servira de base à la planification, au suivi de projet. Il suffira de faire la comparaison de l'estimation au réel avec détection des écarts et correction de ceux-ci. Ce sera aussi à la fin du projet, un élément fondamental pour calibrer les règles, coefficients et formules qui permettront une meilleure estimation lors des projets ultérieurs.