Exceptions...

Exceptions...

Lors d’une conversation, nous sommes rentrés en conflit mon interlocuteur et moi au sujet du traitement des exceptions.

Celui-ci recourait systématiquement à un MessageBox.Show() afin d’informer l’utilisateur que son action avait échouée et de la raison de cet échec. Me demandant, pourquoi il ne fallait pas recourir à ce genre de reflexe, je lui ai cité un premier exemple.


Durant le développement d’un intranet de gestion de production, l’ensemble de l’équipe de développement avait jugé bon d’informer l’utilisateur des erreurs qui surgissaient lors des différents accès aux données.
15 jours de mise en pré-production plus tard, l’étude des logs de l’application présenta une situation pour le moins surprenante : "Une seule personne s’était connectée à l’application, mais celle-ci s’était connectée une quarantaine de fois".

En fait, lors d’un dépannage, nous avions demandé à l’utilisatrice de se connecter à l’aide d’un autre compte. Le problème en question était une erreur dans la gestion des droits et le problème fut rapidement résolu. Cependant, face aux erreurs semblables (même message d’erreur) que rencontraient certaines de ses collègues, cette personne leur a recommandé de se connecter avec un couple login/mot de passe qui fonctionnait beaucoup mieux :D .

En cas d’exceptions donc, il ne faut pas prévenir l’utilisateur de la cause de l’exception, juste des conséquences que cela entraîne.

Cette anecdote n’a vraiment suffit à convaincre mon interlocuteur et celui-ci me posa implicitement des questions essentielles auxquelles, il est vrai, j’ai eu du mal à répondre de façon claire et concise.

Profitant du week-end, je me suis plongé dans mes bouquins et notamment "Conception et Programmation Orientées Objet" de Bertrand Meyer. Ce dernier présente tout un chapitre à la définition et au traitement des exceptions.

Voici donc les questions et ce que je peux en retenir :

Qu’est-ce qu’une exception ?

 Il faut d’abord définir ce qu’est un échec. Il s’agît tout simplement du cas où une partie de l’application ne sait pas ou ne peut pas remplir son rôle. Cette échec intervient à l’exécution et est causé par une exception. Une exception est donc un évènement provoquant l’échec de la méthode due à un état anormal du système.

Que signifie traiter l’exception ?

Traiter l’exception consiste dans un premier temps à identifier l’exception, sa nature, en soit, ce qui a changé dans le système pour provoquer un échec.
Dans un second temps, il faut adapter la méthode (B Meyer parle de routine) afin que celle-ci tente de remplir son rôle.

Alors mon interlocuteur a-t-il réellement traité l’exception en informant l’utilisateur qu’une exception a eu lieu et que l’action a échoué ?

Oui, en partie, il a identifié l’exception et assure ainsi la survie de l’application (pas de crash) et l’intégrité des résultats (aucun résultat renvoyé donc pas de résultat inattendu).
Cependant, le simple fait de renvoyer un message d’erreur à l’utilisateur revient à baisser les bras face au problème "tenter de modifier la méthode pour qu’elle tente de remplir son rôle".
 Cette mauvaise habitude l’incite à ne jamais tenter de résoudre le problème. Nous sommes d’accord qu’il sera toujours délicat de modifier une méthode pour que celle-ci accède à un fichier qui n’existe pas ou bien qu’elle tente une division par zéro. Cependant, un certain nombre d’exception est gérable et le fait de se poser la question incitera à créer des fichiers secondaires ou à s’assurer que la variable ne contienne jamais 0.

En conclusion, on peut dire qu’une exception n’est pas une erreur et encore moins un simple évènement dont il faut avertir l’utilisateur. Il faut aussi tenter de gérer cette situation afin que l’application puisse remplir son rôle dans un maximum de circonstaces.

 


DevDay's et nouveautés

VS 2005, SQL Server 2005 et autres Software Factory…

 

Après deux sessions de DevDay’s à Strasbourg et à Lille, je me penche désormais sur un rapide tour d’horizon de ce qui nous a été présenté et des réactions que j’ai pu observer.

 

VS 2005 : "70% de code en moins"

 

De part le nombre d’assistants, de raccourcis, de fonctionnalités présentés, on est en droit de s’attendre réellement à une chute vertigineuse de la quantité de code à écrire. A cela, on peut réagir de deux façons différentes.

 -         "houla, c’est quoi ce truc qui fait tout tout seul, je vais servir à rien, je vais perdre ma place, il n’y a plus rien à faire."

 -         "Waou, c’est génial, j’ai plus rien à faire, je vais enfin avoir le temps de m’entraîner à Rally Sport Challenge (clin d’œil aux devday’s 2003)"

Pour ma part, d’un naturel optimiste, je tends plutôt vers la deuxième réaction, à la différence que je trouve que ce genre d’assistanat va nous permettre de nous concentrer sur le nœud du problème plutôt que de tourner autour avec de sempiternel question de format, présentation et autres tâches "Chronophage" ( Merci JB).

     

    Les sceptiques diront que Microsoft est allé trop loin en privant le développeur de toute liberté.

    Cette réaction est la répétition de ce qui arriva lors de la présentation de ASP.NET v1. Je me souviens des Devday’s 2002, de la présentation du ViewState et de la réaction des participants. A l’heure d’aujourd’hui, on se rend compte que cette fonctionnalité nous simplifie la vie et qu’elle n’entrave en rien la construction.

     

    SQL Server 2005

     

    De nouvelles fonctionnalités, plus alléchantes les une que les autres. Les réactions sont enthousiastes et tout le monde réfléchit déjà à la façon dont ils vont corriger leurs bases. Pour ma part, je suis heureux de ces arrivées bien qu’aucune ne soit réellement essentielle, je pense. Ces apports permettront de répondre aux problèmes autrefois insolvables ou presque mais devront se contenter de cela. Hors de question pour moi, d’ajouter des champs XML un peu partout, de coder toutes mes procédures en C# ou d’utiliser du Pivot à tout bout de champ.

     

    Software Factory

     

    Sujet sensible dont l’echo renvoit aux projets off-shore, Software Factory est le sujet à la mode. Si on peut penser que Microsoft suit cette mode comme tout le monde, on peut difficilement nier que l’ensemble des outils de l’éditeur devrait permettre rapidement et simplement la mise en place d’usine à logiciels.

    Enfin, nous pourrons industrialiser les développements (certains n’ont pas attendu), informer, rassurer, convaincre les clients potentiels et ainsi relancer le secteur du développement.

    Que ce sujet ou cette transition soit un risque pour le marché national, possible, mais ce genre d’outils et de méthode, réclament de nouvelles compétences et de nouveaux profils qu’il conviendra d’acquérir ou de proposer.

     

Soirée MSDN ASP.NET v2.0

Aujourd’hui, nous avons eu la chance, Vincent Bourdon, François Michaël Dain et moi-même, d’assister à la soirée des abonnés MSDN. Cette soirée était animée par Scott Guthrie membre de la Web Platform and Tools Team, à l’origine d’ASP.NET v2.0.

En un peu moins de 4 heures, Scott s’est attaché à nous présenter les nouvelles fonctionnalités d’ASP.NET, un aperçu du développement sous Visual Studio 2005 et pour finir, les effets de la migration de vos applications ASP.NET v1.X vers des applications v2.0. Détaillons rapidement (encore plus rapidement que le conférencier?, si si c’est possible) ces différentes chapitres.

Les nouvelles fonctionnalités d’ASP.NET 2 ont ici été regroupées à l’aide des ASP.NET 2.0 Application Services API’s.
Ont été présentés, les services Membership et Role manager qui vous permettront de rapidement (presque sans code) implémenter un système d’authentification ainsi qu’une gestion des droits d’utilisateurs sur votre site ou encore le service site navigation vous permettant de définir rapidement une carte de votre site, carte qui permettra la génération automatique des menus par exemple.
Si on ajoute, le service personalization qui offre à l’utilisateur la possibilité de modifier la présentation du site ou les services Database Caching et Management, on se dit que la session était bien remplie.
Et on n’a pas tort.


Pourtant, ce planning chargé n’a pas empêché notre présentateur d’ajouter une description des fonctionnalités de Visual Studio 2005 propre à ASP.NET 2, à savoir et en vrac :
  • les outils d’aide à la modélisation de la couche d’accès aux données.
  • le respect de votre norme et de votre présentation dans le code HTML.
  • la complétion présente dans tous les types de fichiers et paramétrable suivant le type de validation ou navigateur ciblé.
  • L’absence de fichier de projet ou de solution.
  • La facilité de mise en production son projet.

Et bien d’autres choses…


Après une courte pause (plus courte pour le présentateur que pour les participants ;) ), Visual Studio 2005 nous a été présenté et plus particulièrement les fonctions d’architectes avec les diagrammes de classes et les fonctions de testeurs avec les tests unitaires et les tests de montée en charge des applications ASP.NET 2.

Si après ce programme et déjà 3 heures de conférences, on est en droit de s’attendre à un répit, Scott Guthrie n’était pas de cet avis et a aussitôt enchaîné sur les aspects de la migration.

Si on peut être sceptique voire effrayé par le travail à fournir, que l’on semble justifié lorsque l’on liste l’ensemble des nouvelles fonctionnalités, nous avons été rapidement été rassurés. Certes, le premier exemple de migration ne concernait que la version du Framework utilisé par l’application déjà compilée, l’Issue Tracker Starter Kit. Cependant, les exemples suivants traitant de la mise à niveau du code et des fonctionnalités de vos applications ASP.NET v2.0 ont permis de se rendre compte du travail effectué par les équipes de Microsoft. Sans vouloir m’avancer, cette migration ne devrait être une barrière infranchissable.

Cette soirée abonnés MSDN a donc permis d’avoir un avant-goût des DevDay’s qui auront lieur dans un peu plus d’un mois (sans remettre en cause la qualité de la présentation d’aujourd’hui) et de lancer la campagne pour la version 2.0 du Framework de Microsoft en France.

SP2 pas toujours facile!!!

Si l'installation du SP2 s'est très bien passée sur mon portable, j'ai eu énormément de mal à l'installer sur mon poste à domicile.

En effet, lors de la première tentative, l'installation m'a signalé que je n'avais pas assez de place sur la disque. On me demande donc de rectifier cela et de réessayer. Je fais de la place sur mon disque et je retente : l'installation reste bloquée à l'initialisation. Je retente plusieurs fois sans succès.  Il m'aura fallu recourir à la restauration système pour pouvoir reexécuter la mise à jour.

Affaire à suivre également, depuis l'installation du SP sur mon portable, celui ci refuse de se connecter au WLAN de mon domicile si le WEP est activé. Génant mais peut être une simple coincidence.

 

 

C# un langage en carton???

A la recherche de l'ensemble des standardisations qu'avai subit C#, je me suis retrouvé à rechercher le sens de l'acronyme ECMA.

ECMA signifie donc, pour ceux qui ne le saurait pas, European Carton Makers Association.

Voila qui plaira aux détracteurs du C#, et qui prouve par a + b + Google, que celui ci est un langage en carton.

Je finirais par rappeler à Madame Linda de Souza que nous attendons toujours impatiemment son article sur la portabilité des applications C#.  

Serveur applicatif

A SUPINFO, nous avons la chance d'avoir un super cours "SERVEUR APPLICATIF" utilisant la plate-forme Websphere d'IBM comme support. Le cours d'aujourd'hui portait sur les Entreprise Java Bean. A la fin de ce cours , ayant reconnu la puissance de ce genre de technologie, je me suis tout de même demandé l'intérêt de l'utilisation de ce genre de composant...

Sans ouvrir un débat et sachant que des lecteurs utilisent AUSSI J2EE ;), j'aimerais que ces personne m'aident à répondre à la question:
Pourquoi utiliser un EJB pour intégrer un processus métier là où un Webservice peut faire la même chose?

 

Merci de répondre en comments si cela intéresse certaines personnes.

 

Echelle

Suite à une conversation qui est parvenue jusqu'a mes oreilles, j'ai décidé de rédiger ce que peut vivre un développeur tout au long du cycle de vie de son produit (0.1 c'est vraiement dur c'est vrai). Cette échelle devra servir d'echelle de notation, un peu l'echelle de Richter mais ça s'appelle l'echelle de Szablowski (vais pas me priver non mais...).

J"invite quiconque ayant des recommandations pour cette échelle à m'en faire part bien entendu.

Echelle de Szablowski

Elargissement de l'Europe

01net a consacré un dossier spécial concernant l'implication des nouveaux entrants dans les technologies de l'information. On y apprend en autre la création d'un techno-pôle à Chypre, que Kazaa et Skype sont des produits estoniens et que le taux de piratages dans quasiment tous ces pays est supérieur à 50% ( ce qui soit dit en passant devrait relever le classement relatif de la france, toujours aux environs de 40%...).

 

<< la dossier "Les nouveaux entrants sont-ils techno ?" >>

Qui dit mieux???

Bon je sais que d'habitude je suis en retard mais là je crois avoir battu tous les records.

Motivation

Voyez les gars que je suis super motiv pour l'année prochaine...

Je m'entraine avec mon petit neveu qui passe le mois prochain la 70-306.

PS : Quand il est pas sage et que je veux le punir, je l'envoie sur le site de Sun lire la doc complète du WebServices SDK :D

Hello World

Bonjour,

je m'appelle Mathieu Szablowski, j'ai 25 ans et je suis en 3° année à SUPINFO (tout en majuscules svp :D ). Informatiquement parlant, je suis né avec Basic et un MSX de chez Philips. Après une courte pause ( 15 ans), j'ai retrouvé l'informatique en préparant un BTS par alternance. Durant mon stage, j'ai découvert DotNet, le développement ASP.Net et Crystal Report. C'est cette première expérience qui m'a conduit à rejoindre le labo DotNet à mon arrivée à SUPINFO ( toujours en majuscules svp).
Bon, voilà pour la présentation du garçon. Passons désormais à la desciption du Blog. Pour ma part, je parlerais bien sûr de DotNet et de C# (comptez pas sur moi pour du VB :-) ) de Crystal Report et de programmation en générale et plus précisement (sans doute) des incompréhensions, des erreurs, des surprises (bonnes ou mauvaises), des oublis, des fautes de frappes, des fuites mémoires, des heures de recherche et de lecture, des pétages de plombs, des plantages machines, des pertes de sauvegarde, des freezes soudains, des réinstallations qui surviendront durant les heures passées devant ma machine et qui font que nous aimons cela.  

Batswirl