Author Archive

Soft-Shake 2010 – conference on Agile, Java, iPhone and InnovationOctober 21st, 2010

The SoftShake 2010 logoThe first edition of Soft-Shake took place in Geneva on 18.10.2010, and blue-infinity was present with a session in the Agile track: “Integration of User Centered Design in Agile Development of RIA“. (see previous post)

I attended a number of sessions as part of the Agile track, and found them both interesting and insightful.

After attending a presentation on an Agile project at Orange from the point of view of a Business Analyst, Julia Borkenhagen and I gave a presentation on how to integrate User Experience specialists in the Agile process. We also attended a session which looked at Scrum from a developer’s perspective.

I found the Lean engineering methodology presentation particularly interesting, and even if (in my opinion) it might have been outside of the scope of the Agile track, it was a very good overview of this “industrial” methodology.

Despite problems such as cancellations of sessions due to the strikes in France, the organisers did a great job, running some sessions over Skype, which proved to be rather efficient!

The topics where quite “hands-on”, since this seminar mainly targeted operational teams (developers, architects, business analysts, project managers) rather than executives, and considering that all the speakers were volunteers, the sessions were excellent!

See you at Soft-Shake 2011!

jacques.desmazieres

Written by Jacques Desmazières

October 21st, 2010 at 10:05 am

Posted in HQ News

Tagged with , , ,

Integration of User Centered Design in Agile Development of RIA – Soft-Shake 2010October 21st, 2010

Recently, Julia Borkenhagen and I held a presentation at Soft-Shake 2010 on the blue-infinity way of integrating the UX team with an Agile software development process.

Over the past few years, the software user interface has evolved around new technology and concepts such as Web 2.0, RIA and portlets, introduced by major players such as Google with Gmail, or Apple with the iPhone / iPad apps. Thus the level of expectation from the end  users has increased in terms of usability, design and innovation.

So what are the steps to combine a user centered design approach with Agile development? In our presentation, we emphasized 5 key points:

  1. Do your homework first
    Before starting to sketch out screens and workflows, take some time interviewing key stakeholders and representative end users and analyze existing applications as well as competitors / best-in-class. Developing personas and scenarios might help to better understand the users’ context, needs, motivation and behavior patterns.
  2. Build a hi-level concept
    Instead of jumping right into the sprint process, it is important to have  a sprint 0 and come up with the general UI framework for the application (just as you need to define the technical architecture upfront). This includes process flows, a sitemap, hi-level wireframes, UI patterns, graphic design templates.
  3. UX works one sprint ahead of development
    Probably the most important point to consider for Agile development, the User Experience team needs to be able to work one sprint ahead and come up with detailed wireframes and specifications. Ideally, they should also be able to do some quick usability testing to validate the screens and flow with the users.
  4. Agile usability testing
    Testing should happen all throughout the project, starting in the initial analysis phase to test the existing, doing paper testing with the wireframe concepts and finally also test actual working software before it gets released.
  5. Collaboration throughout
    Any agile project will fail if the team members are not able to collaborate effectively with each other.  Since this is an iterative process, it is essential that developers are involved in the initial concept phase and the UX team in the development phase. and both sides are open-minded, flexible and respect each other.

Below is an excerpt of the slides we presented:


SoapUI in Test Driven Development approachJune 4th, 2010

SoapUI-logo

As mentioned in  a previous post on this blog Testing with Eviware SOAP UI written by Josselin Lebret, SoapUI is one of the best tools in a Web Services development environment (SOAP, REST etc.).

In the context of  TDD, you can find some articles focusing on SoapUI versus JUnit, but these are no longer relevant as SoapUI also provides some interesting solutions to reuse your TestSuites developed with the SoapUI interface, in your unit and integration test environment.

The use of SoapUI, in conjunction with Maven and Jetty Server, allows for building significant unit tests, and somehow even functional tests.

In my last project we had to provide a Web Service interface to an ECM (Enterprise Content Management) system to realise CRUD operations (Create, Read, Update, Delete). During implementation we used SoapUI and we have built some test scenarios such as nominal and alternative (exceptions) use case tests. These scenarios were used for stress and load testing, and integrated into Hudson to achieve very high quality services.

To reuse the SoapUI TestSuite in your test environment you have 2 solutions (although these may not be the only ones):

Read the rest of this entry »

jacques.desmazieres

Written by Jacques Desmazières

June 4th, 2010 at 8:35 am

JMX – an answer to application manageability issueMay 3rd, 2010

Spring source logoRunning application manageability is a feature that is often forgotten about on a project, not only by the development team, but also by the customer when defining the requirements.

A good application is one that fits business requirements, is developed in compliance with quality criteria,  is stable and scalable etc..

A very good application also addresses operational needs. And one of these is the ability to easily control and monitor the running application, in real-time.

Lacking the capability to control and monitor usually results in reduced up-time. By monitoring real-time business and technical indicators, problems can be detected before they occur. The application can then be controlled and configurations changed without interrupting or stopping it.

Http servers, application servers and Java Virtual Machine (JVM) provide out-of-the-box management features, but these are usually of a technical and low level nature, and do not allow for accurate monitoring (Http access logs, memory usage, database connections etc..).

One great solution is to add the Java Management Extensions (JMX) services to your applications. JMX is a standard way of exposing services and contains a built-in JVM service, including the graphical JMX console (jconsole) and most of the monitoring applications provide out-of-the box JMX connectors.

JMX offers three valuable features:

  • MBean managed attributes access : read access on Java class managed attributes
  • MBean managed operations: managed Java class methods invocation, including setters methods
  • MBean notification : managed Java class ability to send notifications to JMX listeners

These features provide hot deploy configuration management ability and application or business dedicated metrics.
Personally I usually use JMX to provide metrics on the access and response time of high and medium level services (external services such as web services or EJB, DAO, interfaces with external systems..), and sometimes some useful statistics, usually defined in conjunction with the production operators. I also use JMX to control some service parameters, such as logging level.

You may think “That sounds great, architects always have great ideas but they do not have to suffer the process of implementing them!”. But in this case there is an easy, straightforward and powerful solution: Spring.

Read the rest of this entry »

jacques.desmazieres

Written by Jacques Desmazières

May 3rd, 2010 at 10:56 am

Posted in Java,Methodology,Open Source

Tagged with , , ,

Spring 3: What’s new ?April 13th, 2010

 Spring, the well-known J2EE framework, has recently come out with its latest version, Spring 3.  So, what’s the scoop and why should Java developers be excited about this latest release?

To  summarise, the new Spring version is going one step forward in the ease of development with the enhanced use of annotations and the integration of SpEL to make our configurations dynamic, based on growing technologies such as REST and ongoing standards like JPA 2.0.

Spring 3 adds some features that will help us in some situations where we were stuck in  previous versions, using the dynamic configuration offered by SpEL. But more importantly, this release seems to focus on REST, which is increasingly becoming the way to build web services. And the good news is that you will find it familiar to use, as it is an extension of the Spring-MVC annotations, specialised for REST resource mapping but with the same basis and concepts.

So even if Java 6 offers an implementation of the Dependency Injection and Inversion of Control paradygms, the Spring addicted developers will still use it for all the other features it offers.

Below you’ll find the requirements and features of Spring 3:

Read the rest of this entry »

jacques.desmazieres

Written by Jacques Desmazières

April 13th, 2010 at 7:52 am

Posted in Java

Tagged with ,

Google Chrome OS: All Quiet on the Western FrontFebruary 23rd, 2010

Google Chrome logoYou can always count on Google for creating a buzz  on the internet with its innovative applications, such as Google Wave for example.   In November, Google  released its first preview of its new operating system: Google Chrome OS.

Google said that this new operating system targets  netbooks that use on-line applications only, without local storage support. The entire system is stored on SDD disks – and nothing else.

That said, I wanted to see for myself what could be this new Google concept. So I downloaded the Chrome OS VMWare image (also available for Sun’s VirtualBox) from engadget web site and ran it on my PC.

Chrome OS screenshot

Actually, Chrome OS is built on a Linux kernel with an enhanced Chrome browser as the user interface. Only on-line and some off-line (based on HTML 5 off-line access features) applications can be used. Chrome OS does not handle local storage systems such as hard drives or USB keys. So, no way to use your netbook as a video or music player, except for on-line resources (YouTube, Deezer, …).

This new Google operating system left me skeptical. This OS is based on a linux kernel but restricted by Google specifications. I do not think I would ever pay for a netbook that will only work if I can access the internet, on which I cannot store my music and video library, without any way to store my files on a local device or handle external devices (at the time being, Google has not announced any solution to handle printers for instance :( ). It reminds me of the  Sun’s Network PC concept,  a comeback of  the old passive terminal, applied to the Cloud. Google seems to target the iPad-like devices, but the restrictions are so drastic that I think that Apple can sleep on both ears ;)

But we will see, as Google always surprises us …

Resources:

jacques.desmazieres

Written by Jacques Desmazières

February 23rd, 2010 at 12:50 pm

Book: Maven the complete referenceFebruary 10th, 2010

You may have read interesting posts on Continuous Integration (CI), Test Driven Development (TDD) or source code and build management process (maybe even on this blog ;) ). Most of them show solutions based on Apache Maven tool.

I am not going into details about what Maven is or is not, and how to use it, as Sonatype has released a very good on-line book on the subject “Maven the complete reference“, and on top of it it’s  free. I have read it and I think this book is THE reference to learn Maven or deepen your knowledge on the subject.

Also,  take a look Nicolas Frankel’s review,  a consultant I am working with on a project.  I definitely agree with his opinions.

Maven the complete reference's cover

Resources:

Google Waves: the definitive collaboration tool ?February 4th, 2010


Google Wave logoUntil I looked at this Google wave podcast, I have to confess that, in my mind, Google was no more than a cool web application editor, adding innovation to existing concepts. But with regards to Google Wave technology, I definitely changed my mind and I now think Google is imagining the next generation of applications (and not only web applications).

Google Wave concept is to federate in a single application features of several domains such as email, chat, syndication, blog, collaboration and much more.

To describe Wave in a few words, I would say that Wave is a “real time” communication application, where collaboration is the core concept. You can use Wave like email, as the waves are persistent do not need on-line participants, but you can also use it like a chat, concurrently editing a wave with other participants. But that is only the tip of the iceberg, as Google tried to federate the best-of-breed of (Google) web applications.

But the reason why I think that Wave is the definite revolution in communication and collaboration is that it is more group_reportthan just an application. Wave is built on an open protocol, really similar to the main concept of email protocols, allowing Wave servers to communicate with each other. Wave is open source, and you can have your own wave server, opened or not onto the internet, and I think this is a key feature for companies that want to host all of their IT resources or use Wave only in their Intranet with securtiy and confidentiality concerns.
And finally, like Google Maps, Google Waves provides a Wave API allowing you to embed Wave components in web applications  to implement, customize and extend Wave client and server. Actually Wave as been built as an integration platform around a collaboration platform.

The only drawback I see  is that as a user, you need to change your way of communicating and collaborating. This may take some time, but not always, if the concept is really good and matches with the ways users actually think and act (just think of Apple with the iPhone …) .

Read the rest of this entry »

Syndication within applications: beyond simple newsDecember 17th, 2009

rssHave you ever  subscribed to receive thematic news  on topics such as stock exchange, technology or updates of a friend’s blog? These feeds are what we call Syndication, and their format is standardized by the W3C and called RSS or more recently Atom.

But beyond this feature of propagating news through the Internet, syndication can be a really good feature within your applications, leveraging the user experience by proposing to interact  with the application in a non intrusive, lightweight “push”-like way.

This sounds good, no? I use Syndication for in my application. At first glance I can see two main feed audience.

First you can provide feeds for application monitoring. This aims mainly at technical users such as administrators or project leaders. The objective is not to replace reports from products such as Nagios, but rather to provide a higher level view on the application behaviour. For instance you can provide a feed giving an aggregate view on the application logs and alerts in order to follow its health over time.

But personally, I feel that the real added value  is the business feed. Imagine the impact on you client when you will tell him that he will be able to access targeted business data from his brand new smartPhone, using his usual RSS reader, getting only the valuable pieces of information without bothering with the application. Your boss may need the application to provide feeds such as statistics digged from the database or audit trails. The marketing guy may want to have feeds back on final users navigation habits while the infrastructure manager would need performance and volume data. The head of finance would want to know the quantities sold of each product during the last week.

Very often, applications will  offers such pieces of data, but you usually need to connect to the application, navigate to the proper statistics or dashboard page. This is not always easy and efficient, especially from a mobile device, and worse if you cannot connect to the application! One of the benefits of such a solution is that most of the feed readers provide you a way to access feeds off-line, keeping the information available at any time.

My point of view is that this approach can be really valuable. Syndication can be a way to provide a multi-channel access to these data: the feeds can be integrated within the application using web technologies such as Ajax (jQuery, JFeed) but can also be accessed directly using feed readers.

Behind the scene, implementing such a functionality is easier and easier, as frameworks such as CXF, Abdera and others provide solutions to implement syndication services.

Resources:
RSS News feed: http://www.w3.org/2001/10/glance/doc/howto
Atom syndication format: http://www.w3.org/2005/Atom
RFC 4287 – IETF Atom Syndication Format: http://www.ietf.org/rfc/rfc4287.txt
RFC 5023 – IETF Atom Publishing Protocol: http://www.ietf.org/rfc/rfc5023.txt
Jquery Jfeed plugin: http://sourceforge.net/projects/jfeed/
Apache CXF – JAX-RS: http://cwiki.apache.org/CXF20DOC/jax-rs.html
Apache Abdera project: http://abdera.apache.org/

jacques.desmazieres

Written by Jacques Desmazières

December 17th, 2009 at 10:56 am

Java EE 6: Context and Dependency injectionDecember 14th, 2009

javaAs in its previous release, Sun seems to focus on including de facto standards in the Java EE new release. In Java EE 1.5, one of the major improvements was to add a persistence API (aka JPA – part of JSR-220), based on Hibernate and other ORM api.

In Java EE 6, Sun has included an implementation of the JSR-330 to provide the best-of-breed dependency injection features from standard libraries such as Jboss seam, Spring or Juice, and to extend those by adding some innovations.

In JavaEE 5, dependency injection was only possible within the Enterprise container, restricted to resources such as JMS connection factories, datasources, JPA entity managers and factories and EJB. JavaEE 6 extends this to any bean, still in an annotation-driven programming. This new feature is based on the existing JSR-330 (Dependency injection for Java), adding new annotations such as @Injection, @Qualifier or @ScopeType.

The Context and Dependency Injection allows defining the bean’s scope. Several scopes are available, such as Dependent, ApplicationScoped, RequestScoped, SessionScoped and, Seams users would recognize this one, ConversationScoped.

As we can see, enhanced IOC and context management becomes part of JavaEE core, and I think all Spring or other IOC framework users would agree this new Java EE feature is going in the way of facilitating JavaEE programming.

Resources:

Java EE 6 specification: http://java.sun.com/javaee/technologies/index.jsp
JSR-220: Enterprise JavaBeans 3.0, http://jcp.org/en/jsr/detail?id=220
JSR-330: Dependency injection for Java, http://jcp.org/en/jsr/detail?id=330
TheserverSide.com article, http://www.theserverside.com/tt/articles/article.tss?l=DependencyInjectioninJavaEE6

jacques.desmazieres

Written by Jacques Desmazières

December 14th, 2009 at 2:30 pm

Posted in Java

Tagged with ,