Posts Tagged ‘Agile Programming’

Afterwork dédié à l’agilité, mercredi 18 février

Thursday, February 12th, 2009

Après les Afterwork GWT, qui ont rencontré un très gros succès avec presque 150 personnes sur deux soirées, Valtech poursuit sur sa lancée avec une session dédiée à l’Agilité.

Cet évènement gratuit se déroule dans les locaux de Valtech Training, au rez de chaussée du bâtiment “coeur Défense”, et débutera aux environs de 18h45.

Cette session est ouverte à toutes et tous. C’est un moyen privilégié de découvrir l’agilité et Valtech dans une ambiance conviviale.

Au programme:

  • Une approche pragmatique de l’agilité, avec des retours d’expérience de vrais projets menés par Valtech,
  • Une introduction aux pratiques TDD et TDR,
  • Des démonstrations en live,
  • Et bien sûr, une pause pour se restaurer et échanger sur les sujets qui vous intéressent.

Une soirée à ne pas manquer! Les places sont limitées, et pour les inscriptions ça se passe ici :

Inscription pour l’AfterWork Agilité

ParisOnRails du 1er décembre 2008 : ce qu’il s’y est dit ! (après midi)

Monday, December 1st, 2008

suite de Paris On Rails 2008 première partie

Tests d’interface Web avec Rails par Jean Michel Garnier

Jean Michel a commencé par une présentation de RSpec, et a enchaîné sur le TDD JavaScript : Screw Unit pour tester son JavaScript.
Ensuite il a continué sur les tests fonctionnels (plus de la moitié des erreurs apparaissent dans les spécifications fonctionnelles), en présentant Cucumber (ou Rspect Story Runner), framework de tests fonctionnels pour Ruby On Rails (qui va être intégré dans RSpec) , mais peut être utilisable en Java ou .Net via JRuby ou IronRuby.
Cucumber permet un formalisme à la RSpec, aussi bien que FIT (tableaux exécutables).
Pour les tests d’acceptance Web, WebRat (Ruby Acceptance Testing), basé sur HTMLUnit (Java), s’utilise via JRuby, et propose une interface pour plusieurs types de session; dont Webrat::SeleniumSession, une des plus avancées.

Enfin, sont évoqués les serveurs d’intégration continus pour Ruby, comme CruiseControl.rb et Hudson, via JRuby.

Ce qui nous amène à la seconde présentation orientée tests fonctionnels du jour (Gilles t’aurais du venir ! ;-) )

Tests d’acceptance Web à forte valeur ajoutée (par Philippe Hanrigou , de ThoughtWorks)

Les tests d’acceptance Web avec Selenium ou Watir sont compliqués à maintenir, ou sont trop longs à exécuter.
Fit est parfait pour tester le backend, tests du code métier, mais pas pour IHM.
Philippe nous décrit la difficulté de maintenir des tests d’acceptance, et insiste sur le fait que l’ensemble des développeurs de l’équipe doivent prendre en compte la difficulté à maintenir et écrire des tests d’acceptance web, pas juste les nouveaux venus sur le projet !

Pour faciliter le travail, l’outil qu’il utilise est Selenium Rspec Report, qui ajoute des fonctionnalités à RSpec : un maximum d’informations sont remontées : l’état du DOM lorsque le test a planté, un screenshot, les logs Selenium, pour pouvoir mieux suivre les tests d’acceptance et pourquoi ils ont échoué.
Pour accélérer ces tests,q ui peuvent être longs, on peut utiliser Selenium Grid pour paralléliser l’exécution des tests.

Philippe a aussi expliqué que les fixtures rails n’étaient pas la meilleure solution pour initialiser l’état lors des tests fonctionnels.
Pour pouvoir initialiserle domaine métier, pas juste le modèle, il a introduit Object Mother : design pattern pour tests d’acceptance implémenté par Object Daddy et Factory Girls, opposé aux Mocks car contient tout le domaine métier, pas juste un objet !
En conclusion, les tests d’acceptance Web sont difficiles, mais pas insurmontables : il faut paralléliser (avec Deep Test ?), isoler, être le plus précis possible.

Rails Performance par Michael Koriaski, membre de l’équipe core rails

Tout d’abord, a t on besoin d’optimiser ?Si oui, se concentrer sur quels axes d’amélioration ?

A priori, monter en puissance avec l’achat de nouveau matériel est ce qui coûterait le moins cher (sauf si on s’appelle Google ou Microsoft!)

Pour savoir ce qu’il faut optimiser, il faut se baser sur la performance perçue par l’utilisateur, et on se rend compte que le temps de chargement d’une page html représente 0.5% du temps que l’utilisateur attend; les images, les javascript, les CSS, etc… pèsent beaucoup plus lourd dans la balance !

Ainsi, on doit se concentrer sur sur le serveur front qui sert les fichiers statiques !

Enfin, on peut se poser des questions sur son appli rails :

  • Qu’est ce qui est lent ? (on utilise des outils de benchmarks pour le savoir, avec éventuellement un Ruby instrumenté comme Ruby ENterprise Edition pour connaître les allocations des objets)
  • Pourquoi est ce lent ? (essayer d’optimiser les allers retours sur le réseau en se servant des entêtes HTTP, et les Entity tags ce que Rails 2.2 peut faire, on dit au navigateur : “cest bon, t’as déjà la bonne version en cache !”
  • Rendre plus rapide (contrer le syndrome des N+1 requêtes en remaniant ses boucles et relations, régler le Garbage Collector de Ruby (augmenter sa tailel de départ par exemple) , etc…

Interview de David Heinemeier Hansson à Chicago, créateur de Ruby on Rails, via Ichat


Rails 2.2 a de meilleures performances par rapport aux versions précédentes, en particulier l’équipe de développement s’est concentrée sur HTTP (Etag, MemCache, etc..)
Rails 2.2 est compatible avec JRuby et Ruby 1.9, l’équipe essaie de faire fonctionner Rails sur le maximum de serveurs Web (via Rack).
Beaucoup de ménage a été fait, toute le code déprécié a été enlevé.

Liquid : moteur de templates en Ruby par Didier Lafforgue

Inspiré de smarty (issu de la communauté PHP)
Présentation des drops, filtres
S’installe en Gem ou en plugin.
Didier a évoqué un service qui a l’air excellent : hébergement (+git) et déploiement Rails : Heroku.com

La fin


Enfin Thomas Lissajou a amené un débat de clotûre sur le thème : “Agile Web Development with Rails, et vous ?”

Et bien, on découvre qu’il y a 2 groupes dans la communauté Rails : ceux qui en font et en sont convaincus (TDD, tests d’acceptance) et ceux qui considèrent que c’est réservé aux autres projets, car ils n’ont pas le temps ni les moyens; il y a beaucoup à parier que ces personnes, au fil de leur carrière ne tarderont pas à en être convaincu !

J’ai été ravi d’assister pour la 1ère fois à ParisOnRails, vivement l’an prochain !

ParisOnRails du 1er décembre 2008 : ce qu’il s’y est dit ! (matinée)

Monday, December 1st, 2008

Ce Lundi 1er Décembre 2008 avait lieu pour la 3ème fois la conférence annuelle des développeurs Ruby On Rails, j’ai nommé ParisOnRails, qui avait lieu à la Cité de la Science, dans le quartier de la Villette à Paris.

La journée a commencé vers 9h30 par une présentation de la journée par les 2 organisateurs Richard Piacentini & Laurent Julliard.

La première présentation était celle de Ruby 1.9, par Guillaume Desrat

Guillaume a tout d’abord commencé par présenter brièvement l’association ruby france, puis est rentré dans le vif du sujet.

Ruby 1.9 prépare la 2.0, en celà beaucoup d’incompatibilités apparaissent, notament au niveau de la syntaxe (en particulier les tableaux et hash).

Du coup, au chapitre des nouveautés, on a des hashes plus simpes à écrire , les paramètres ne sont plus obligatoires dans les appels de méthodes, enumération plus simple à utiliser, multilingualization (m17n) pour un support utf8 simplifié, les f ibers : thread controlables, que l’on arrête et reprend où et quand l’on veut, et enfin pour les regexp : on a désormais un nommage des matches avec un tag <mon_match> à insérer dans son expression.

De plus, il est à noter que ruby 1.9 est plus rapide (les exemples de Guillaume le donne presque 5 fois plus rapides sur des algos type suite de fibonnaci)

Reste que sa non compatibilité avec les versions précédentes représenteront peut être un frein à son adoption massive…

Présentation de moo tools(librairie javascript) par Matthieu Fosse

Cette librairie JavaScript est encore peu populaire (utilisé par 8% des utilisateurs de librairis JS), en même temps, elle n’est pas utilisée par défaut dans Rails…

Pour l’historique, Moo Tools basé sur protoype à l’origine, et est aujourd’hui plus modulaire que ses concurrents, on peut utiliser la délégation d’événements MooTools pour séparer le code HTML du code Javascript.

Après cette présentation, et avant la pause de milieu de matinée, un débat s’est improvisé sur “doit on ou pas écrire du JavaScript ?” cette question est assez répandue car il existe, même parmi la communauté RoR, 2 clans : ceux qui aiment écrire du JavaScript, et ceux qui … n’aiment pas , pour rester politiquement correct… Pas mal d’avis convergeaient pour dire que finalement JavaScript dans un site de contneu, ou communautaire, doit être utilisé avec parcimonie et contrôle, pour garantir l’accessibilité et le référencement, et que le sgéénrateurs de JavaScript type GWT doivent être réservés pour des applications riches (RIA, remplacement d’application lourdes, etc..); en tout cas, je ne vous cache pas que c’est aussi mon avis ;-) .

Après la pause, a eu lieu la présentation

Design pattern en Ruby par Russ Olsen

en conf call de New York.(5heures du matin pour lui!)

Russ a 30 ans d’expérience en programmation et a découvert Ruby quand il a voulu apprendre la programmation à l’un de ses enfants; aujourd’hui il est l’auteur d’un livre sur les design pattern en Ruby.

Il nous a tout d’abord présenté 2 éléments de l’histoire de la civilisation :

  • au début de la civilisation, les gens utilisaient des paniers pour transporter des biens, la poterie est arrivée, mais a repris la forme des paniers pour ne pas gêner les gens lors de la migration technologique (!)
  • au debut de sa carriere, domino etait utilisé partout, avec son langage Fortran, les gens savaient que c’était nul, mais restaient coincé avec, et ne pensait pas que les choses changeraient

Les gens ont du mal à quitter une technologie pour une autre.

Aujourd’hui, en Ruby, le concept le plus utilisé est convention over configuration; pour expliquer ceci à ses pairss (plutot habitué à Java), il a utilisé les design patterns.

Pour exemple, Adapter , pour faire communiqer des interfaces différentes, on utilise en Ruby active record qui permet de faire communiquer son appli avec des bdd différentes.

Iterator, en Java c’était une classe à part entière, une mécanique à mettre en place, en Ruby, on appelle juste .each sur son tableau, c’est déjà tout intégré.

Pour le pattern Factory, en Java, la classe représente tout, c’est figé; en Ruby, on peut on la changer en cours de route on peut rajouter des comportements à la volée. (il y a bien Spring qui facilite les choses en Java, mais c’est une autre histoire..)

Il a rencontré beaucoup de résistance à démontrer l’intérêt d’un nouveau livre sur les design pattern au début, car tout le monde pensait : “Les design pattern sont écrits une fois pour toutes pour tous les langages”.

Ce qui lui rappelle que les gens qui pensaient que les paniers étaient le dernière trouvaille pour transporter des biens, ou les gens qui pensaient que Fortran était le dernier langage de progammation , ont finalement eu tort ;-) !

Pour chaque nouvelle techno, les développeurs doivent comprendre les avantages de cette dernière : les premiers programmes en C++ utilisaient énormément l’héritage, un peu trop d’ailleurs; c’est la même chose en Ruby aujourd’hui, en Ruby doit on utiliser le changement de la classe dynamique ? si oui dans quelles proportions ?

En Ruby il y a encore des progrès à apporter, on peut améliorer l’utilisation de Ruby, en facilitant le passage de plusieurs blocs à une méthode, l’utilisation des closures, ou encore la programmation multi threads : il y a encore du travail pour faciliter l’utilisation de ces concepts.

Aussi, si Russ fait toujours sauter au plafond ses clients en leur parlant de Ruby On Rails, il les rassure en utilisant JRuby, où il peut toujours livrer l’application avec un fichier war (je pense aussi que JRuby est un des meileurs leviers d’adoption de Rails en entreprise)

En conclusion, il appelle les participants à ne pas être “des programmeurs Ruby” ni des “programmeurs Rails”, mais simplement des programmeurs ouverts à la nouveauté et l’évolution !

La suite dans un prochain épisode, après la pause déjeuner !

Valtech à la conférence Agile 2008

Tuesday, July 15th, 2008

La conférence Agile 2008 a lieu dans 3 semaines seulement! Ce sont déjà les tout derniers moments pour s’inscrire (plus de 1200 inscrits il y a une semaine, sur 1600 attendus).

Valtech sera présent à cette conférence. 3 des sujets que nous avons présentés ont été retenus:

Par ailleurs, Eric Lefèvre a co-organisé la track Breaking Acts, une serie de sessions cherchant à faire avancer nos connaissances sur l’agilité.

Nos collègues des autres filiales de Valtech ne sont pas en reste. En particulier, Valtech US assure 8 sessions (!), plus une pour Valtech UK:

Avec un total de 12 sessions, il semblerait que Valtech fournisse le plus gros contingent de présentateurs :-)

Si vous vous rendez à Agile 2008, certains d’entre nous serons reconnaissables à leurs polos Valtech.

Si vous ne pouvez pas vous joindre à nous à Toronto, n’hésitez pas à assister à la présentation de Gilles sur TDR dans nos locaux, lundi 28.

Coplien and Martin Debate TDD, CDD and Professionalism

Monday, February 18th, 2008

On JAOO 2007 I could, with the help of Floyd, organize a debate between Bob Martin and James Coplien about TDD and DbC. This is the most interesting debate about the subject I’ve ever heard of. A lot of things I wanted to say have been said here. And I am proud to announce it :)

http://www.infoq.com/interviews/coplien-martin-tdd

Thanks Cope, thanks Bob.

 

Communicating Intent through Idiom and Paradigm Selection

Friday, February 15th, 2008

What about using idioms and programming conventions as signals to achieve more readability and expressiveness? This is what Reg Braithwaite advocates for, suggesting that syntax or even paradigm choices can be a means to communicate the intent.

(more…)

Refex:: Does code become better as it approaches English?

Friday, January 18th, 2008

Achieving readability and expressiveness by writing English-like code is one of the trends on the rise in today’s industry. Michael Feathers advocates for considering other alternatives that can be instrumental for improving code expressiveness. He argues that in some circumstances symbolic approach is more appropriate than the narrative one and highlights some trades-offs between them.

(more…)

Crosswords :: Decisions driven by productivity concerns: Reasons, implications and limitations

Friday, January 4th, 2008

Often the necessity to rapidly adapt software projects to new clients’ needs results in adopting approaches focused on productivity. Reasons, implications and limitations of this were recently discussed in the blog sphere.

(more…)

Separating business logic from technology: Kathleen Dollard on a new view of code generation

Thursday, December 20th, 2007

Even the most successful project becomes a failure when a new technology comes out and everything has to be rewritten from the ground. This is why business logic has to be separated from technology. And, according to Kathleen Dollard, code generation is a promising approach to achieve it.

(more…)