Posts Tagged ddd

DDD : Eric Evans au ParisJUG

Posted by on Lundi, 15 juin, 2009

Lors de la troisième édition du Java Barcamp j’avais proposé un sujet sur le DDD, on s’était retrouvé moins d’une dizaine. Lors de la quatrième édition le sujet avait été re-proposé et avait attiré plus d’une vingtaine de personnes. Cette fois-ci l’intervention de Eric Evans organisée à l’arrache par le JUG team (bravo à eux et merci twitter) a rameuté 111 personnes en 5 jours. Décidément ce concept à l’air de prendre. En effet c’est séduisant : faire en sorte de comprendre et d’être compris, en tant que développeur, par les gens du métier, avoir un code qui se base sur le métier et prend en compte les différents contextes. C’est un peu complexe à appréhender au départ, et ça me fait penser à l’AOP dans le sens où, de la même manière au départ, c’était flou et maintenant on l’utilise avec facilité. A la question “Existe t il des framework implémentant les concepts de DDD ?” Eric Evans répond Qi4J. Décidément il est temps que j’implémente tout ça dans mon logiciel.

Java BarCamp Paris 4th ed. : Cloud and DDD

Posted by on Dimanche, 5 avril, 2009

A big success! It was full of people in the great Google’s office. 2 schedules / 4 rooms and a total of 7 sessions, I present the both where I participated :

Cloud computing
Not really a Java subject but it attract people. We tried to define the cloud computing and we fixed that there is 3 offers :

  • IAAS (Infrastructure as a Service): this is typical Amazon services products, S3 for storage and EC2 for virtualized servers. Amazon offer very basic service now with a very powerful management tool in Eclipse plug-in (see the demo). There is also Elastic Grid proposing to develop and deploy easily on the Amazon infrastructure, GoGrid an Amazon concurrent. I believe that the recent IBM / Sun merge will create new offerings.
  • SAAS (Software as a Service): we find a lot of solutions (often based on the previous offer), for example Amazon SimpleDB, Amazon SQS, Google Apps, Microsoft Azure Services CloudMQ, ZumoDrive … and I could continue like a long time…
  • PAAS (Platform as a Service): is hosting the application on a common and scalable platform, it is typically Google AppEngine, it is possible to deploy all yours web application if you know Python. Microsoft probably has a deal in Azure (I should have a look) and Sun has just launched Zembly.

A lot of discussion on what about offline, security, and where is java in the cloud. For me offline mode is really important in a world of increasingly nomad people. Cloud is primarily storage space allowing me to share my data between my devices, then an area of services, and finally deployment platform of my apps.
Finished managing a backup that is never done, losed time finding  a way to share data and finally used USB key, now my data are in the cloud and synchronized on all my devices. I have set up Zumodrive in my company and it’s very cool, the documents are shared even outside the company and I don’t care about backup.
Security is the most bigger difficulty for acceptance in the company, I hear the same remarks when talking about the payment on Internet ten years ago. All these services are secure and there is no zero risk.
Java have his place in the cloud on client and server side. The multi platform aspect facilitates the developments on the client (eg: ZumoDrive client is in Java), I want to see more and more Java APIs “cloud-ready” facilitating the integration of service in code. Similarly on the server side I look forward to Google AppEngine in Java.
Finally the advantage of cloud computing is primarily economic, smalls company are the first customers and have found lower cost and flexible capabilities.

DDD (Domain Driven Design)
I had little success at the last barcamp with this subject, this time it was proposed by others much more stronger than me and have made relevant arguments on the benefits of the concept. One of the important point raised we used talking too much technical and framework implementation than focus more on the reality, something that we tend to forget wanting to put our new framework in our code. I talked about Qi4j, that is not pure DDD implementation, but is for me the best way to modelling reality. I want make a demo of my medical record implemented with Qi4j to really prove that this approach is relevant.
Of course I’m convinced that a DDD refactoring of an existing code is difficult. DDD is a best practice and a new way of development vision. Have to follow for sure …

Thank you again to the organizers. It is always a good opportunity to exchange. And i hope Google will open their doors as often as possible;)

Java BarCamp IV : Cloud et DDD

Posted by on Dimanche, 5 avril, 2009

Encore un succès ! C’était plein et on a été très bien accueilli dans les locaux de Google. Super bouffe au passage, j’ai beaucoup aimé les macarons en dessert et puis le fromage, trop la classe…
2 créneaux / 4 salle et au total 7 sessions, je vous résume les deux auxquelles j’ai participé :

Cloud computing
Un sujet pas vraiment Java au premier abord mais qui a attiré du monde. J’ai essayé de définir le cloud computing comme je le ressentais, Didier a été plus clair que moi en le décomposant en 3 offres :

  • IAAS (Infrastructure As A Services) : c’est typiquement Amazon avec ces offres S3 pour le stockage et EC2 pour les serveurs virtualisés. On a aussi Gandi avec une offre plus “end user” la où Amazon est vraiment très bas niveaux (encore qu’ils mettent en place de plus en plus de service à valeur ajoutée autour de leurs offres de base et aussi des outils de gestion en plugin dans Eclipse (demo)). On trouvera aussi Elastic Grid qui propose de faciliter le développement et déploiement sur l’infrastructure Amazon, ou encore GoGrid une offre concurrente à Amazon. Bientôt je pense qu’avec la fusion IBM/Sun de nouvelles offres vont apparaître.
  • SAAS (Software As A Services) : la on va trouver beaucoup d’acteur (s’appuyant souvent sur l’offre précédente), Amazon SimpleDB, Amazon SQSGoogle Apps (cf mon dernier article), Microsoft Azure Services, CloudMQ, ZumoDrive, … et je pourrais en lister pas mal et la liste va augmenter rapidement
  • PAAS (Platform As A Services) : c’est la plus un hébergement d’application sur une plate-forme commune s’adaptant au besoin selon la demande, c’est typiquement Google AppEngine, ou il est possible à tous de déployer son application web si on sait faire du Python. Microsoft a surement une offre dans Azure faudrait que je jette un oeil et Sun vient de lancer Zembly.

Pas mal de débat sur quid du mode déconnecté, la sécurité, et où java la dedans. Perso le mode déconnecté a pour moi une importance capitale dans ce monde de plus en plus nomade ou le cloud est en priorité un espace de stockage me permettant de partager mes données entre mes différents terminaux, ensuite un espace de service, et au final une plate-forme de déploiement de mes applis.
Fini de gérer son backup qu’on fait jamais, fini de chercher un moyen de partager ses données en réseau pour au final s’échanger un fichier avec une clé parce qu’on a pas réussi à faire parler un mac et un pc, mes données sont dans le cloud et synchronisées sur tout mes terminaux. J’ai mis en place Zumodrive dans ma société et c’est un vrai régal, les documents sont partagés même à l’exterieur de l’entreprise et je me pose plus la question du backup. J’ai prévu un prochain article sur l’experience avec cette offre cloud que je comparerais à Google Docs.
La sécurité reste le point crucial de l’implémentation de ces offres dans l’entreprise, j’ai l’impression d’entendre les mêmes remarques que lorsque l’on évoquait le paiement sur Internet il y a dix ans. Tous ces services sont bien sécurisés et il n’y a pas de risque zéro.
Java pour moi a sa place dans le cloud tant coté client que coté serveur. L’aspect multi plate-forme permet de faciliter les développements au niveau client (ex: le client ZumoDrive est en Java), j’aimerais voir proliférer des APIs Java “cloud-ready” facilitant l’intégration de service dans son code. De même côté serveur j’attends avec impatience Google AppEngine en Java.
Au final l’avantage du cloud computing est avant tout économique, les PME sont les premiers clients et voient leurs cout diminuer tout en ayant des capacités flexibles.

DDD (Domain Driven Design)
J’avais eu peu de succès la dernière fois avec ce sujet mais j’avais quand même attisé les curiosités, cette fois-ci il a été proposé par d’autres bien plus connaisseurs que moi et qui ont apportés des arguments pertinents sur les bienfait de ce concept. Un des points importants évoqués était cette habitude de trop parler technique et imbrication de framework pour s’orienter plus sur le métier, une évidence que l’on a tendance à oublier en voulant mettre nos nouveaux framework dans notre code. J’ai reparlé de Qi4j qui, je l’ai appris, n’est pas du pur DDD mais en tout cas reste à mes yeux une implémentation concrète de ce qui est pour moi la meilleure manière de modéliser du réel. Faut vraiment que je m’y mette et que je me fasse une démo de mon dossier médical implémenté avec Qi4j pour vraiment prouver que cette approche est pertinente.
Bien sur je reste persuadé que son implémentation dans un code existant reste difficile mais j’en suis pas encore là.
Le DDD c’est avant tout une bonne pratique et une nouvelle manière d’appréhender son développement. A suivre c’est sûr …

Merci encore aux organisateurs. C’est toujours une bonne occasion d’échanger. Et pourvu que Google nous ouvre leur porte le plus souvent possible ;)
Retrouvez les autres blogs sur le JavaBarCamp IV:

JavaCamp III : TDD et DDD

Posted by on Samedi, 31 janvier, 2009

Une participation légère (une quinzaine de personnes) pour cette troisième édition du JavaCamp Paris organisée par Valtech. Au départ le wiki montrait une prédominance sur le thème des tests, au final 7 sessions proposées. Je ne vous en présenterais rapidement que 2, j’ai participé que le matin.

Session sur les tests :
N’étant pas un connaisseur j’y suis allé plus par curiosité que pour participer au débat. C’est surtout Eric et Thomas qui ont animé cette session. J’ai retenu des outils et des concepts :

  • La pyramide de Mike Cohn
  • TDR pour Test Driven Requirements
  • BDD pour Behavior Driven Development, adapté aux tests fonctionnels
  • et bien sûr le TDD pour Test Driven Development basé sur les tests unitaires.

Je ne saurais expliciter correctement ces concepts et vous invite à suivre les liens qui les définissent. Eric nous a conseillé la lecture de “Bridging the Communication Gap” où Gojko Adzic explicite que la meilleure approche pour les tests est avant tout une bonne communication entre les différents acteurs du projets.

En terme d’outils, nous avons parlé de :

  • Selenium : surement le plus connu et le plus simple à mettre en oeuvre avec son enregistreur, vous trouverez un quickstart sur le blog de Thomas,
  • SWTBot : dédié à RCP uniquement, il n’existe pas d’enregistreur
  • Fitnesse : une approche par wiki, où l’on écrit ses tests dans des tableaux et qui génère des classes,
  • GreenPepper : même principe, s’appuie sur confluence, payant,
  • Twist : plate-forme collaborative pour automatiser et maintenir ses tests,
  • Concordion : ou comment réaliser ses tests en partant de la spécification
  • Plus particulièrement pour le BDD : JBehave et RSpec
  • Et enfin une approche un peu particulière : Bumblebee, génération de docs par/pour les tests, une approche intéressante qui oblige à nommer ses tests correctement pour rendre un rapport lisible

J’ai ensuite proposé une session sur DDD qui a été retenue, malheureusement je ne suis pas un spécialiste et j’ai brièvement présenter le concept et sa mise en application à travers le framework Qi4J
Xebia vient juste de publier un article sur le sujet et l’explique bien mieux que moi. Je vous conseille tout de même de jeter un coup d’oeil au framework Qi4J que je trouve très séduisant et dont j’ai déjà parlé dans ce blog. Je continue à l’étudier et je pense l’implémenter dans mon logiciel médical dans ma phase de refactoring en cours.

Dommage que l’on est pas été plus, c’est vrai que le samedi c’est peut être pas le meilleur jour, mais quand on aime Java … C’est comme toujours une occasion de rencontrer des gens intéréssants (Thomas, Eric, et les autres pour qui j’ai pas trouvé le blog).
Merci aux organisateurs Eric et Anthony, et à la prochaine.