Dessine moi un logiciel

Ecris le 11 décembre 2007
Dans la catégorie Articles | Leave a Comment

Choisissez un collègue informaticien, n’importe lequel, qu’il porte le titre de développeur, d’architecte, d’urbaniste ou de manager. Demandez-lui de dessiner une application informatique.

Il y a toutes les chances que le dessin qu’il vous fera sera constitué de boites, de flèches, et peut être de cylindres. Tous les livres, toutes les méthodologies d’architectures ou d’urbanisme reprennent ce même type de schéma. Certains en ont mêmes fait une science en tant que telle. Il existe autant de types de boite que d’applications. J’ai résumé pour vous ceux que je croise les plus souvent : base de données, écrans, couche service, framework techniques, socle d’échange, gestion des authentifications, référentiel, gestion des habilitations, mapping objet-relationnel, moteur de workflow, etc… etc…

Dés lors que nous avons fait ce constat, nous ne sommes plus surpris par la manière dont sont construites les applications dans la vaste majorité des cas. L’équipe, ou le manager, choisit une boite et commence à l’implémenter. Il commence par exemple par la base de données. Puis il passe à la suivante. Puis une autre. Jusqu’à ce que toute l’application ait été construite. Ce chemin de construction est parfois résumé dans un diagramme de Gantt.

Cette approche présente l’avantage d’être facile à comprendre, par tout le monde. Elle est facile à expliquer et donne le sentiment d’être facile à suivre, facile à piloter.

Elle présente aussi des inconvénients :

Si vous choisissez de suivre une approche agile pour la construction de votre application, vous aurez le choix de procéder autrement. Vous pourrez bénéficiez d’une caractéristique unique de la “matière” informatique : tout peut changer, tout le temps.

Ralph Johnson nous le rappel dans un article de Martin Fowler :

There is no theoretical reason that anything is hard to change about software.

Plus qu’un jeu d’éléments qui s’emboitent les uns dans les autres, je vois la construction de logiciel comme la création d’un tableau. L’artiste commence par une esquisse. Le sujet est posé et les grandes masses apparaissent. Mais les détails sont encore flous et la finition n’est pas idéale. Puis il rajoute de la peinture, il fait des mélanges pour voir ce que ca donne. Il revient parfois en arrière par endroit, pour mieux garder une harmonie d’ensemble. Petit à petit, le tableau devient de plus en net, plus précis. Jusqu’au moment où c’est terminé.

L’informatique vous offre la liberté de procéder de la même manière pour construire votre logiciel. Vous avez le choix de commencer par l’implémentation de plusieurs boites dés les premières itérations de votre projet. Vous aurez déjà un premier aperçu de votre application. Ce sera un embryon de ce que vous pourrez obtenir plus tard, mais vous pourrez déjà le montrer à vos clients et obtenir leurs feedback. Ils vous diront ce qu’ils aiment dans ce que vous avez déjà réalisé, ce qu’ils souhaitent que vous changiez et ce qui leur manquent. Tenez en compte pour la suite de votre projet.

Puis ajoutez, affinez, complétez votre application. D’itération en itération, votre vision deviendra plus précise et convergera vers le meilleur compromis possible compte tenu du temps impartis, du budget et ce qui apporte le plus de valeur à vos clients. La construction d’application peut être autre chose qu’un assemblage de briques d’un jeu d’enfant. Elle peut aussi être la création d’une image de plus en plus nette, que vous pourrez recadrer, retravailler tout au long de votre projet.

Social Bookmarking
Add to: Mr. Wong Add to: Webnews Add to: Icio Add to: Oneview Add to: Folkd Add to: Yigg Add to: Linkarena Add to: Digg Add to: Del.icio.us Add to: Reddit Add to: Simpy Add to: StumbleUpon Add to: Slashdot Add to: Netscape Add to: Furl Add to: Yahoo Add to: Spurl Add to: Google Add to: Blinklist Add to: Blogmarks Add to: Diigo Add to: Technorati Add to: Newsvine Add to: Blinkbits Add to: Ma.Gnolia Add to: Smarking Add to: Netvouz Information

Commentaires

Agile incremental construction: some tips

Ecris le 31 août 2005
Dans la catégorie Uncategorized | Leave a Comment

Since some time now, I help my customers to design and build their Information System by an incremental approach. I noticed that obviously the term “incremental” does not mean the same thing for every body. For the most common case, the team try to slice its system into layers and build each layer one after the other: for instance the data layer comes first, then the process and finally the GUI. This slicing is driven by technical constraints as you can see in the future application where the database will stand, and when the associated tools will be used to build this particular part.

The drawback of this approach is well known by the agile community: if you fail to finish one of the layers in the planned time and budget, you can be sure you will exceed the project budget. Unfortunately, if your budget was fixed, you project will be a total failure for one problem on one layer.That?s why the agile approach suggests slicing your project into iterations, but also that all iterations must be functionally and technically coherent to be production candidate. That mean each iteration should have a little bit of data, a little bit of process and a little bit of GUI.The question is: how can I slice my big project into coherent slices (or iterations)?

In most case, after some study, or not, the project is launched for a given budget, estimated with more or less precision (generally, the precision is very low at this stage). Let say your budget is 1000. You want to slice your project into 5 iterations of 200. The approach I follow generally is to apply the following simple algorithm:

The idea is that if you burn all your budget (1000) on the first iterations, at least, their functional scope has been designed to have the highest value for the customers. XP calls this practice “the planning game”. Of course, downsizing a 1000 project to a 200 one is not easy and request to have a strong knowledge of the domain to know what is REALLY the core of the business. Domain Driven Design can help you during this process.

Anyway, slicing a project in such a way is a difficult task, but that’s the cost of monitoring your risk efficiently: nothing comes for free!

Social Bookmarking
Add to: Mr. Wong Add to: Webnews Add to: Icio Add to: Oneview Add to: Folkd Add to: Yigg Add to: Linkarena Add to: Digg Add to: Del.icio.us Add to: Reddit Add to: Simpy Add to: StumbleUpon Add to: Slashdot Add to: Netscape Add to: Furl Add to: Yahoo Add to: Spurl Add to: Google Add to: Blinklist Add to: Blogmarks Add to: Diigo Add to: Technorati Add to: Newsvine Add to: Blinkbits Add to: Ma.Gnolia Add to: Smarking Add to: Netvouz Information

Commentaires

20 years old agility advices

Ecris le 17 juillet 2005
Dans la catégorie Uncategorized | Leave a Comment

I was recently reading one of the online available books on the Stephane Ducasse web site: Smalltalk V 286 Tutorial from Digitalk Inc. The book has been published in 1986, and it is amazing by itself to see what was possible on such simple PC in those days, compared to the visual C. The book by itself is a very good tutorial, strongly advised if you plan to learn Smalltalk, or just programming. If you are more advanced, you could have a look to chapter 12.

Here is an extract from the conclusion:

A very nice piece of early agile concepts, isn’t?

Those advices are almost 20 years old. It’s time to apply them.

Social Bookmarking
Add to: Mr. Wong Add to: Webnews Add to: Icio Add to: Oneview Add to: Folkd Add to: Yigg Add to: Linkarena Add to: Digg Add to: Del.icio.us Add to: Reddit Add to: Simpy Add to: StumbleUpon Add to: Slashdot Add to: Netscape Add to: Furl Add to: Yahoo Add to: Spurl Add to: Google Add to: Blinklist Add to: Blogmarks Add to: Diigo Add to: Technorati Add to: Newsvine Add to: Blinkbits Add to: Ma.Gnolia Add to: Smarking Add to: Netvouz Information

Commentaires

Agile Open 2005 : the feedback

Ecris le 8 mai 2005
Dans la catégorie Uncategorized | Leave a Comment

Open Agile was a very interesting event. It was great for the content of the conference, but also for the form

The form

It was an Open Space format. It was the first I intend this kind of conference. The benefices are numerous:

The sessions

I intended the following sessions:

All of those sessions were very interesting, and you can look to the wiki pages to have some ideas of the outputs.

Balancing act

This session was special to me. It is strange, because at first, I did not vote for it: it seemed to complex or out of my scope. Basically, it was an experiment around the Virginia Satir model of communication. I read about it in some books of Gerald Weinberg, but I did not know it in details.

Willem, Nynke and Marc exposed the model to all of us, and encouraged to try it during the session. The session was very interesting, however I did not get the “aha!” effect during it. The effect came later.

I always had the feeling that it what not possible to improve my communication or management skills. It was possible to improve the technical skills, but not the “soft” skills: one was a communicator or was not. Actually, this is false. It is possible to improve your communication and your management skills: that’s what did the Balancing Act for me.

I did get many positive feedback from my improvements, from many different sources. However, I dont want to share those experiences here: this is not the purpose of this blog. All I can say is a recommandation: seek for the Congruence in Action session in the agile conferences to come, which seems to be an improved version of the Agile Open Balancing Act.

Social Bookmarking
Add to: Mr. Wong Add to: Webnews Add to: Icio Add to: Oneview Add to: Folkd Add to: Yigg Add to: Linkarena Add to: Digg Add to: Del.icio.us Add to: Reddit Add to: Simpy Add to: StumbleUpon Add to: Slashdot Add to: Netscape Add to: Furl Add to: Yahoo Add to: Spurl Add to: Google Add to: Blinklist Add to: Blogmarks Add to: Diigo Add to: Technorati Add to: Newsvine Add to: Blinkbits Add to: Ma.Gnolia Add to: Smarking Add to: Netvouz Information

Commentaires