vendredi 6 août 2010

Veille technologique semaine 31

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • sortie de la version 1.0.0 de Gemfire qui est un produit de gestion de données distribuées. Ce produit est interropérable Java, C++ et C# (DotNet), compatible des transactions (JTA), ...
  • Sortie de OpenCL 1.1 : du GPGPU (General-Purpose computation on Graphics Processing Units) par une API normalisée. Comment faire du calcul numérique par le processeur graphique (GPU).
  • Le W3C propose une spécification pour l'expression des émotions : EmotionML (ce n'est pas un poisson d'avril).
  • Les cinq pièges à l'adoption des méthodes agiles.
  • Un chapitre d'un livre qui vient de sortir sur la méthode agile Scrum : le product backlog
  • Un exemple de programmation par contract avec le langage Groovy : une extension du langage Groovy par les annotations. C'est un exemple de DSL (Domain Specific Langage) interne.
  • La compatibilité ascendante : cela concerne chaque niveau. La compilation, le binaire, l'execution. Détail de chaque niveau par l'équipe du JDK.
  • Un article de Dell sur le multi-core versus l'hyperthreading : et le multi-core hyperthreadé ?
  • La programmation fonctionelle et le JDK 7 : le projet Lambda.

Bonne lecture

Spring Releases Gemfire 1.0.0.M1 for Java and .NET

Spring GemFire (for short SGF) brings the Spring concepts and programming model to GemFire, SpringSource's distributed data management platform. The release is available for both Java and .NET.
The features in 1.0.0.M1 include:
  • declarative dependency injection style configurations for the GemFire infrastructure (such as Cache, Region, Interest, etc)
  • exception translation to Spring's portable DataAccess exception hierarchy
  • Template and callback support for easy native API access
  • transaction management support
  • Spring-backed wiring for GemFire managed objects
  • auto-generation of non-reflection based Instantiators

Note that some of these features are currently available only in the Java version.

Through SGF, Spring users should feel right at home when interacting with GemFire while developers familiar with GemFire will see the benefits and flexibility of the Spring container, its powerful AOP integration, and versatile service abstractions. But don't take my word for it – download the project and take the sample application for a spin. It's a console based 'shell' which allows for ad-hoc interaction with the data grid; one can start and stop nodes and see the information shared transparently between multiple clients.



OpenCL 1.1 enhances performance with backward compatibility
The Khronos Group, the organization responsible for maintaining a number of open standards such as OpenGL, WebGL, and OpenMAX, has announced the release of OpenCL 1.1, an update to the cross-platform standard for making it easier to target GPUs and other specialized hardware for parallel processing. The latest update includes a number of performance improvements and added instructions while maintaining full backward compatibility for OpenCL 1.0. The release also establishes an 18-month cadence for updates to the standard.


Expressing Emotions with a New W3C Markup Language, EmotionML
W3C has published the first public working draft of the Emotion Markup Language (EmotionML), a language meant to express emotions in three main ways in today's computer-based communication: annotating data, the recognition of emotional-based states, and generating emotion-related system behavior.

According to the language authors, EmotionML can have applications in various fields like:
  • Opinion mining / sentiment analysis in Web 2.0, to automatically track customer's attitude regarding a product across blogs;
  • Affective monitoring, such as ambient assisted living applications for the elderly, fear detection for surveillance purposes, or using wearable sensors to test customer satisfaction;
  • Character design and control for games and virtual worlds;
  • Social robots, such as guide robots engaging with visitors;
  • Expressive speech synthesis, generating synthetic speech with different emotions, such as happy or sad, friendly or apologetic;
  • Emotion recognition (e.g., for spotting angry customers in speech dialog systems);
  • Support for people with disabilities, such as educational programs for people with autism.


Agilité : Cinq pièges à l'adoption des méthodes agiles
Mike Griffiths, blogueur et agiliste travaillant au PMI, nous présente dans son article les Anti-Patterns nuisant à l'adoption des méthodes agiles. Bien que les bénéfices tirés des méthodes agiles ne soient plus à prouver, le passage à l'agilité n'est pas forcément couronné de succès. Nombreux sont les pièges et les digressions dans lesquels on peut tomber. Mike décrit ensuite cinq pièges courants, mais c'est à vous d'identifier les autres selon le contexte de votre projet.
  • L'agilité n'est pas un miracle
Oui, l'agilité permet de gagner du temps, d'accroître la valeur métier, et de développer un produit de meilleure qualité. Cependant, ce n'est pas une recette magique, qui va permettre à un projet anémique voué à l'échec d'être un succès. Bien au contraire, vous pourriez arriver encore plus rapidement en situation d'échec, ou au mieux vous en rendre compte avant avec des nouveaux indicateurs.
  • L'agilité ne veut pas dire aucune discipline
Certaines personnes ne connaissant pas bien l'agilité ont l'idée reçu que les méthodes agiles font preuves de très peu de discipline, de planification et d'estimation. Les méthodes agiles sont parfois appelées « méthodes légères » par opposition aux anciennes méthodes.
On peut quand même constater de nombreuses cérémonies et activités de haut niveau nécessitant de la discipline, comme: le stand-up daily meeting, le sprint planning, la rétrospective, la démo, etc.
Même si les documents afférents aux cérémonies sont peu nombreux, ils ne sont pas une excuse pour manquer de discipline et éviter de rendre des comptes. Ils contiennent les indicateurs suffisants pour réaliser des plannings, des estimations, etc.

  • L'agilité sans aucune explication
Une équipe agile ne travaille pas toute seule en silo. Elle interagit avec d'autres équipes, comme le marketing, l'architecture applicative, etc. Le caractère itératif d'un projet agile peut les perturber. Ainsi, il convient d'expliquer le processus agile aux autres équipes, avant d'arriver à des situations de blocages ou pire de rejets.
  • L'importance du feedback client
L'une des contraintes importantes des méthodes agiles est d'avoir le client sur site. Cela permet entre autre d'avoir un feedback régulier au cours d'une itération. La réunion de démonstration a aussi pour rôle d'avoir un retour et une validation du client. Attention, même si le client ne fait pas ou peu de retours, cela ne veut pas pour autant dire que tout va bien et que son réel besoin est satisfait. Au contraire, il peut avoir fait preuve d'inattention. Pour éviter cela, Mike propose des sessions de revue, où le client est assisté par un membre de l'équipe.
  • Obsédé par le processus agile
La recherche de l'amélioration du processus agile au sein d'un projet est bonne chose en soi.
Cependant, il ne faut pas tomber dans le cas extrême du scrum master obnubilé par le process et le sur-outillage avec des indicateurs inutiles. Il faut rester pragmatique et garder à l'esprit que l'objectif de l'agilité est de satisfaire le client et répondre à des contraintes business. Il faut donc garder son attention sur lui et non sur le process. Mike suggère d'utiliser des métriques orientées sur l'objectif final: satisfaction client, fonctionnalités réalisées et acceptées, plutôt que le pourcentage de pratiques agiles suivies, ou le temps passé en pair-programming.



Effective Java, second edition – Book Review
This book is the book to read if you want to write good Java code. All the advices are really useful. It's really comfortable to read book from a person who master Java. In fact, Joshua led the design and implementation of numerous Java features.


Working with the Product Backlog
Agile Product Management with Scrum is the product owner's guide to creating great products with Scrum. It
covers a wide range of agile product management topics including envisioning the product, stocking and grooming the product backlog, planning and tracking the project, working with the team, users and customers, and transitioning into the new role.
This article is an excerpt (Chapter 3 'Working with the Product Backlog') from the book; it introduces the product backlog together with its DEEP qualities. It explains how product backlog grooming works, shares advice on discovering and describing product backlog items, and on structuring the product backlog. ScrumMasters, coaches, team members will also benefit from reading the extract as managing the product backlog is teamwork in Scrum.


An Introduction to Programming by Contract
Programming by Contract is known under the name of Design by Contract first implemented by Eiffel, a programming language introduced by Bertrand Meyer.

The main principle of programming by contract is to actually add a program's specification as expressions in the form of meta-data to certain elements in the source code. Contracts, contracts, everywhere…

So far we have seen class invariants, preconditions and postconditions and how they can be applied on class or method declarations. But where do all those contracting takes place? As you might have already supposed, a contract in terms of Design by Contract is an agreement between the supplier (the programmer, the creator) and the client (the one who makes use of it) of a class.


Kinds of Compatibility
When evolving Java code, compatibility concerns are taken very seriously. However, different standards are applied to evolving various aspects of the platform. From a certain point of view, it is true that any observable difference could potentially cause some unknown application to break.
Indeed, just changing the reported version number is incompatible in this sense because, for example, a JNLP file can refuse to run an application on later versions of the platform. Therefore, since making no changes at all is clearly not a viable policy for evolving the platform, changes need to be evaluated against and managed according to a variety of compatibility contracts.


Threads or Cores: Which Do You Need?
Intel and AMD have done their best to differentiate the x86 architecture as much as possible while retaining compatibility between the two CPUs, but the differences between the two are growing. One key differentiator is hyperthreading; Intel does it, AMD does not.

Multicore and HyperThreading (referred to as "HT") are not the same, but you can be suckered into believing they are, because hyperthreading looks like a core to Windows. My computer is a Core i7-860, a quad-core design with two threads per core. To Windows 7, I have eight cores.


Functional Programming Concepts in JDK 7
There's much excitement about JDK 7 and in particular Lambdas! I've waded through the bloat to help you get an understanding of it.
My take is that lambdas will be in JDK 7 - you can see plenty of evidence of that around the web and in the snapshot builds. That said, no decision is concrete (which is a wise tip from The Pragmatic Programmer no less!). This article is aimed at those who don't know much about functional programming or what Lambdas, Closures or Currying are and want to get 'primed'.

Aucun commentaire: