Posts Tagged qi4j

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;)

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.