Ok

En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Ces derniers assurent le bon fonctionnement de nos services. En savoir plus.

07 mai 2009

Forum des architectes - MicroSoft 4 mai 2009

Cette année encore j'ai été invité au forum des architectes de la région de Montréal organisé par MicroSoft, en particulier par Joël Quimper et son équipe. On se souviendra que lors du dernier forum j'avais présenté notre expérience de développement agile et de l'utilisation de WPF. Pour cette itération j'y étais comme simple participant.

La première conférence traitait de l'efficacité énergétique et était présentée par Hydro-Québec. À part un survol des initiatives d'HQ dans le domaine, il n'y avait pas grand-chose de neuf ou de spécifique aux architectes. On a probablement eu droit à une présentation générique. Compte tenu de l'importance du sujet du "green IT", c'est dommage que l'on n’ait pas eu quelque chose de spécifique à notre industrie.

La seconde présentation, par Alexis Gouslisty, était pour ma part la meilleure de la journée. Elle traitait de l'architecture d'entreprise et de la déconnexion entre les besoins d'affaires et la gouvernance des TI. Il est clair qu'il y a une place pour une gouvernance qui vise à contrôler les coûts et optimiser le portefeuille, tout en gérant la complexité. L'idée proposée par Alexis est de considérer aussi les besoins du client en terme d'avantage compétitif et de valeur d'affaires. Parfois, ces besoins vont à l'encontre de la logique de gouvernance. Une façon de le voir est de considérer que les TI optimisent pour le budget et la réduction de la complexité alors que la business optimise pour la rapidité d'exécution et la valeur. Coté TI on pense à "standardisation, à valorisation des actifs (style SAP) alors que coté "business" on veut une solution minimale qui permet de résoudre un nouveau problème rapidement (on pense access, excel, sharePoint et bientôt le cloud computing). Le développement du "end-user computing" montre bien comment les TI ne sont pas toujours alignées sur la business.

Pour les conférences suivantes, il y avait deux pistes :  développement et infra. J'ai participé à la piste développement.

On a eu droit à une présentation de Adam Gallant, que j'ai rencontré au forum national de 2008 à Vancouver. Adam nous a présenté la nouvelle cuvée de VisualStudio 2010 du point de vue d'un architecte. La trop courte partie qui a présenté les nouvelles fonctionnalités de modélisation UML dans la version 2010, nous a permis de voir des nouveautés intéressantes entre autres au niveau de la rétro-ingénierie de projets existants, en particulier pour les équipes de maintenance. L'exemple était cependant trop simple et le temps accordé trop court. C'est donc un dossier à suivre.

Après le dîner qui nous a donné une belle période d'échange, j'ai assisté à la présentation intitulée "Adressing system connectivity with the MicroSoft platform". ce fut une présentation intéressante de par le fait que l'on a survolé les différentes façons de faire de pur WCF à "Dublin" et "Azure" (cloud computing) en passant par le "Microsoft service engine - MSE" de CodePlex et l'incontournable BizTalk. Le MSE semble très intéressant pour la gestion du cycle de vie d'un service. Jim Bowye a cependant passer trop de temps sur MSE et BizTalk au détriment de Dublin et Azure.

Finalement, on a eu une excellente présentation de SilverLight pour les applications de ligne d'affaires. Comme ma présentation de novembre portait essentiellement sur le même sujet (WPF au lieu de Silverlight) je n'ai pas appris grand-chose, mais ce ne semblait pas être le cas de la majorité des gens dans la salle. Ces technologies sont donc encore peu répandues.

Donc un bon forum qui nous aura permis de prendre du recul et de regarder en avant.

19 mars 2009

Script et code du video sur Grails

Un menuisier à plus d’un outil dans son coffre. A l’inverse, quand on a seulement un marteau, tous les problèmes ressemblent à un clou. C’est un peu l’état de la situation pour notre développement Java dans les petits développements et à la limite pour les projets de moyennes envergures. Dans le but de garnir notre coffre à outils, nous en sommes à évaluer divers cadres logiciel (framework). Un des plus prometteurs est Grails (http://www.grails.org ), un framework inspiré de Rails, que j’ai beaucoup aimé, mais qui est un peu compliqué à introduire dans une grande entreprise en raison du langage sous-jacent : Ruby.

 

Grails utilise la même philosophie de « convention over configuration » que Rails, mais fonctionne dans un environnement Java (JEE) standard. Comme nous utilisons Tomcat et WebSphere comme environnement de déploiement, Grails est très intéressant. C’est cependant sa simplicité et sa rapidité de développement qui en font un outil de premier plan pour nos besoins.

 

Dans la suite du document nous allons bâtir une application simple de suivi d'un portefeuille de projet.

Un environnement de développement en 20 minutes

 

Pour débuter le développement, il s’agit d’installer le JDK le plus récent (1.6.0_12) et spécifier les deux variables d’environnement PATH et Java_Home et de vérifier que Java peu être invoqué à la ligne de commande.

 

java

 

Ensuite, on installe Grails et on ajuste le PATH et on spécifie le Grails_Home et on vérifie que Grails est correctement installé.

 

grails help

 

Pour les besoins de rapportage nous allons utiliser JasperReport. Pour créer les rapports nous installerons iReport.

 

Comme nous utiliserons la base de données HSQLDB pour la démo, il faut copier le driver HSQLDB  (1.0.8) de Grails dans celui de HSQLDB (1.0.7) afin que les deux utilisent la même version.

 

En incluant les temps de téléchargement, vous devriez être à pied d’œuvre en une vingtaine de minutes.

Une première page avec validations

 

Pour la majorité du développement nous allons utiliser une fenêtre de commande DOS.

 

Créez un nouveau répertoire pour l’application :

mkdir demos

 

Créez l’arborescence, le squelette, de la nouvelle application (appelons là « gest »)

grails create-app gest

 

Allez dans le nouveau répertoire

cd gest

 

Créez une classe pour l’entité de projet

grails create-domain-class projet

 

Avec un éditeur de texte ajoutez les attributs de la classe projet (dans /grails-app/domain) et sauvegarder les modifications.

 

String nom

String unite

Integer noProposition

String urlProposition

Integer mehari

 

A ce point ci nous avons une classe de « model » du pattern MVC (model-view-controller). Cet objet persistant peut déjà être utilisé par programmation. Nous allons cependant ajouter le contrôleur et la vue qui nous permettrons d’interagir avec la classe via une page web en trois ligne.

 

D’abord, créez le contrôleur :

grails create-controller projet

 

Avec un éditeur de texte modifier le code du contrôleur de projet (dans /grails-app/controller) et sauvegarder les modifications. Inscrivez :

 

def scaffold = Projet

 

Cette ligne de code va créer les vues du MVC de façon dynamique.

 

Il ne reste plus qu’à lancer l’application

grails run-app

 

Maintenant que l’application tourne, ouvrez le fureteur à l’adresse suivante, et ajouter un projet.

 

http://localhost:8080/gest

 

Voilà, une application fonctionnelle en quelques minutes!

 

Oui, mais notre travail n’est pas terminé. Nous allons d’abord ajoutez quelques validations. Modifiez la classe de domaine pour « projet ».

 

static constraints = {

   nom(blank :false, maxSize :10, unique:true)

   mehari(range:1..4)

   noProposition()

   urlProposition(url:true)

   unite()

}

 

Sauvegardez les modifications et actualisez la fenêtre du fureteur. Saisissez un nouveau projet sans nom de projet ou avec plus de 10 caractères de long.

 

On a créé une application fonctionnelle en une dizaine de minutes.

Ajouter une liste déroulante

Nos « projets » sont associés à un « marché ». Nous allons donc ajouter une nouvelle classe et son contrôleur (« marche ») et l’associer à la classe « projet ».

 

grails create-domain-class marche

 

Ajouter la propriété « nom » dans la classe  « marche »

 

String nom

 

Créez le contrôleur

grails create-controller marche

 

Modifiez le code du contrôleur de « marche » pour que la vue se gère automatiquement.

 

def scaffold = Marche

 

Sauvegarder les modifications.

 

Pour associer Projet et Marche, modifiez la classe Projet en ajoutant la propriété suivante :

 

Marche marche

 

Pour que ces modifications prennent effet il faut arrêter l’application et la redémarrer dans la fenêtre de commande.

 

Ctrl-C

O

grails run-app

 

Lorsque l’application est redémarrée, rafraîchissez la fenêtre du fureteur.

 

Ajouter deux marchés, puis un projet.

 

Notez la liste déroulante qui montre le nom de la classe et l’identifiant.

 

Comme ce n’est pas très joli, nous allons corriger la situation. Ajouter le code suivant à la classe « marche » (dans /grails-app/domain).

 

String toString() { return nom}

 

Notez qu’à chaque modification l’application est réinitialisée. Donc ajoutez deux marchés, puis un projet. Remarquez la liste déroulante.

 

Pour établir la relation dans l’autre sens, ajouter le code suivant à la classe de domaine « marche ».

 

static hasMany = [projet :Projet]

 

Pour s’assurer que les projets sont détruits lorsqu’on supprime un marché, ajoutez le code suivant à la classe du domaine « projet ».

 

static belongsTo = [marche :Marche]

 

Voilà une application fonctionnelle en quelques lignes de code. Pour savoir combien,  arrêter l’application, dans le fenêtre de commande et faites la commande suivante :

 

grails stats

 

Le tout nous aura pris une dizaine de minutes supplémentaires.

Modifier l’apparence

L’application que nous avons créée ne respecte pas nos normes visuelles. Pour les fins de la démonstration, j’ai modifié légèrement la feuille de style. Le but ici n’est pas montrer le produit final, mais simplement comment il est facile de modifier le look de l’application. Essentiellement, j’ai supprimé les images, changé la police de caractère et les couleurs.

 

Copier le fichier main.css dans /web-app/css

 

Lancer l’application pour voir l’effet du changement.

grails run-app

 

Grails supporte divers type de données, pour en faire la démonstration, ajoutez les propriétés suivantes à la classe de domaine « projet ».

 

Boolean implicationDpas

Date dateDeDemande

 

Dans le fureteur notez comment les libellés sont construits.

 

Vous avez remarqué que l’application « perd » ses données à chaque redémarrage, déclenché par les modifications que nous apportons au code. La raison de ce comportement est simple. Par défaut, en développement, Grails utilise une base de données HSQLDB mémoire qui est en mode de recréation. Pour rendre les données persistantes entre les redémarrages, modifiez le fichier de configuration (/grails-app/conf/DataSource).

 

dbCreate = "update"

url = "jdbc:hsqldb:file:devBD"

 

Grails peu utiliser toutes les bases de données que Hibernate supporte car sous Grails c’est ce composant qui est utilisé. Dans le même ordre d’idée, on trouve aussi le framework Spring sous le capot. Deux composants qui ont fait leurs preuves dans les grandes entreprises.

 

Un autre petit dix minutes bien utilisé.

Rapportage et recherche

Nous allons maintenant ajouter un rapport à la page de liste de projet. Pour ce faire nous utiliserons JasperReport qui est fournit en plugin. Pour l’installer :

 

grails install-plugin jasper

 

Pour modifier la vue de liste de projet, il faut avoir le code. Actuellement, il est généré dynamiquement à l’aide du « scaffolding » de Grails.

 

grails generate-all projet

 

A la fin de la page de liste, ajouter le tag suivant :

 

<g :jasperReport jasper= «ListeProjet » format= « PDF » name= « Rapport » />

 

Créez un rapport avec IReport nommé ListeProjet.jrxml et sauvegardé dans le répertoire :

 

/web-app/reports/

 

Pour ajoutez une recherche à la page de liste, modifiez le code de list.gsp (en haut de la liste) pour ajouter :

 

<g:form action="search" method="post" >

     <div class="dialog">

          <table>

                <tr class="prop">

                     <td class="name">

                          <label for="nom">Nom de projet</label>                       

                     </td>

                </tr>

                <tr class="value">

                     <td class="name">

                          <input type="text" name="nom" value=""/>                     

                     </td>

                </tr>

          </table>

          <div class="buttons">

                <input type="submit" value="Rechercher"/>

                <g:link action="list">Tout afficher</g:link>

          </div>

     </div>

</g:form>

 

Ensuite il faut modifier le contrôleur de Projet afin d'ajouter l'action "search" et modifier "list" pour passer le critère de recherche via un flash.

 

def search = {

     flash.nom = params.nom

     redirect(action:list)

}

 

def list = {

     if (!flash.nom)

          [projetInstanceList: Projet.list(params), projetInstanceTotal:Projet.count()]

     else

          [projetInstanceList: Projet.findAllByNomLike("%" + flash.nom + "%"), projetInstanceTotal:Projet.count()]

}

 

 

Il ne reste qu'a le déployer sur notre environnement de test

 

grails war

14 mars 2009

Démonstration de Grails

Depuis deux semaines j'explore avec succès le framework Grails, pour le développement web rapide. Pour vous faire partager l'expérience j'ai monté une série de courtes démo de 5 minutes qui montre comment développer avec Grails.

Après avoir installer je JDK de java et downloadé Grails, (une vingtaine de minutes avec l'installation) on démarre le développement. En cinq minutes on va avoir une application web!


Introduction à Grails from jean desbiens on Vimeo.

 Dans le prochain 10 minutes on ajoute une relation à notre principale entité.


Ajout d'une relation from jean desbiens on Vimeo.

 Afin de respecter plus les normes de notre entrepise on change la feuille de style CSS de l'application.


Modification du look de l'application grails from jean desbiens on Vimeo.

On ajoute maintenant un rapport PDF avec JasperReport.


Rapportage dans Grails from jean desbiens on Vimeo.

Finalement on ajoute une fonction de recherche et on package le tout pour le déploiement.


Recherche dans Grails et préparation du déploiement from jean desbiens on Vimeo.

 

16 octobre 2008

Gartner 2008 - 16 oct

Orlando 16 octobre

Extracting value from application from cradle to grave
Je suis juste resté 5 minutes, la présentation démarrait trop lentement a mon goût.

PPM Strategy
Finalement, c'était peut-être moi qui n’étais pas complètement allumé, car celle-là aussi m'a semblé peu intéressante. Pour ceux qui ne le savent pas, PPM veut dire Projet Portfolio Management. Cependant, j'ai noté que le PPM permet ou conduit au APM (pour ceux que ne le savent pas APM veut dire Application Portfolio Managment, ce que nous appelons Gestion de portefeuille applicatif GPA) qui conduit éventuellement au ITPC que je ne suis pas certain de savoir ce que c'est (IT portfolio management?).

What will Google do : Can it reach 100 B$ in 2015
Google est actuellement une entreprise de 23 G$ dont les revenus proviennent principalement du domaine publicitaire. Google en moins de dix ans a amassé des quantités phénoménales d'information (on parle ici en EXObytes) et d'argent (beaucoup de cash actuellement, ce qui est un avantage dans un marché d'acheteur comme actuellement). Elle est aussi un des meilleurs exploitants d'infrastructure. Elle possède un capital et de la propriété intellectuelle de premier plan. Tous ces éléments permettent de croire que d'ici 2015, Google pourrait passer le cap des 100 G$. Google est similaire à WalMart dans la mesure où elle change la façon de fonctionner d'un secteur de l'économie. Nul doute qu'on verra le logo de Google de plus en plus dans le futur.


Keynote de Steeve Balmer de Microsoft
Pendant trois quarts d'heure, Steve Ballmer a répondu aux questions de deux analystes de Gartner. Et il faut admettre que, les questions n'étaient pas sucrées, si le ton était jovial, le contenu des questions et la mise en contexte mettait Ballmer devant un portrait relativement sombre ou agressif. Mais Steeve s'en est tiré avec aisance. Par contre, on a pas appris grand-chose sur la vision d'avenir de MicrosOft, à part le nom "officiel" de la prochaine version de Windows (Windows 7) et que l'on devrait avoir des annonces importantes au PDC08 dans deux semaines, probablement autour du "Cloud computing".

itxpo

One on One with Matthew Hotle
On a abordé ensemble trois sujets : comment développer de petites applications afin de voir comment être productif dans ce domaine, comment passer au niveau 3 du CMMI afin de comprendre la démarche d'implémentation et de prioriser les actions à prendre et enfin comment mesurer la capacité de changement d'une organisation et comment gérer un portefeuille de changement. La discussion fut riche et je vais continuer cette discussion avec Matt dans les prochaines semaines.

The CIO communication handbook
Comme mon one on one avec durait une demi-heure, j'ai manqué la première partie de cette conférence. Cependant, le titre était vraiment approprié. La conférencière présentatait des situations typiques auxquelles fait face le CIO et un plan pour adresser chacune d'elle. Qui fait quoi, quand. Quels messages. Ça ferait un bon livre...

Content in the cloud
Dernière conférence de la semaine à
16h30, avec 15 personnes dans une salle qui peut en contenir 800! Excellent présentateur, mais contenu un peu éparpillé. Je ne suis pas sût d'avoir compris les messages. Mettez ça sur mon compte, la fatigue probablement.