The Soul of a New Machine

by John Turner

Posted on May 07, 2010

I am currently undertaking an MSc in Advanced Software Engineering at UCD, Dublin and recently took a module on ‘Software Engineering Process Frameworks’. As part of the pre-reading for this module the class were asked to read Tracey Kidder’s ‘The Soul of a New Machine’.

The book chronicles the experience of an engineering team struggling to design and develop a new computer under huge pressure, both internal and external.

This is not the sort of book I would ordinarily pick up and read as I normally find myself reading books on specific technologies, frameworks or methodologies. I must admit that I enjoyed the book and found that despite being published in 1981, Tracey Kidder’s observations on the way the organisation approached projects and the associated challenges were very familiar.

It was most striking that I have worked with many characters similar to those portrayed in the book. Kidder’s observations on, and reasoning about, their behaviour was very insightful. Kidder also focused on how the individual team members collaborated and the intricate personal relationships within the group.

Overall, an extremely interesting case study of people, process and practice and how they interact in a knowledge based industry.

jBPM Developer Guide

by John Turner

Posted on March 01, 2010

Business Process Management (BPM) has been around in one guise or another for quite a while now and most people have had some exposure to its many facets. With so much promised, it is easy to see why it has generated so much interest.

jBPM is an open source BPM framework from JBoss that has matured into a real alternative to the many other BPM offerings. The ‘jBPM Developer Guide’ introduces to its readers the main artifacts of BPM and what is involved in implementing typical jBPM solution.

The book begins by providing a background to BPM and how it can be leveraged to deliver benefit to the business. This includes an introduction to processes, tasks and process management (Business Process Management or BAM). As any good book should, terminologies that are associated with BPM are introduced and defined. Thankfully, the definitions are void of the usual marketing hype.

With the help of an example, graph orientated programming (GOP) is then introduced and its relevance to jBPM discussed. Specifically the Node, Transition and Process Definition concepts are covered before the author works through sample implementations of each. Wait states (asynchronous system interactions and human tasks) and automatic nodes are compared before process execution is demonstrated through a sample process execution engine implementation.

The book goes on to give some background to the jBPM project and covers the setup of tools to be used throughout the remainder of the book (Maven, MySql, Eclipse etc.). It outlines how to install jBPM from a distribution and from source. I used the installer to install the version used for the examples (3.2.6.SP1).

Read More

Marshalling XML with Spring WS and JAXB

by John Turner

Posted on February 04, 2010

The ‘object-relational impedance mismatch’ is a well documented set of conceptual and technical difficulties that are often encountered when a relational database management system is being used by a program written in an object-oriented programming language. A similar impedance mismatch exists when XML is used by a program written in an object-oriented programming language.

Many popular ‘Object-Relational Mapping’ (ORM) frameworks exist that address the object-relational impedance mismatch and no doubt helped to inspire the evolution of ‘Object-XML Mapping’ (OXM) frameworks to address the object-xml impedance mismatch.

For the Java community, there are a number of OXM frameworks from which to choose Castor, XStream, JiBX, JAXB with each having particular strengths and weaknesses. The standard OXM framework for Java is JAXB.

In the following I work through a simple example that demonstrates object to XML marshalling (and demarshalling) using Spring, Spring WS and JAXB (and later JAXB Introductions!)

The source code is available on GitHub for Spring OXM and JAXB as well as Spring OXM, JAXB and JAXB Introductions Download.

Read More

Ron Jefferies - Annals of Kate Oneal

by John Turner

Posted on January 27, 2010

While I was re-reading JUnit Recipes recently I followed one of the suggested links to Ron Jefferies website on Extreme Programming. Ron provides some really interesting material on his website but one of the things that I really liked was the Annals of Kate Oneal.

Anyone who has read one of the Head First series of books will be familiar with a conversational style of writing that introduces concepts progressively through fictitious scenarios. Ron uses a similar approach with the ‘Annals of Kate Oneal’ through which he presents Agile ideas and concepts.

The ‘Annals of Kate Oneal’ are presented in a series of bite size stories centered on Kate Oneal, who is advocating Agile methods to a company that has had difficulty using traditional approaches to software development. As an advocate, Kate is often explaining the advantages of Agile from different perspectives and to different audiences. She also has to deal with the practical aspects of introducing Agile to a company that has no previous exposure, so is often found in the role of a mentor.

I am not going to describe her tales any further but, if you haven’t done so already, I do recommend you visit Ron Jefferies website and read the ‘Annals of Kate Oneal’.

Starting out with Spring and Hibernate JPA

by John Turner

Posted on January 21, 2010

More often than not, I am brought onto a project after the project initiation phase has been completed. By this stage major decisions regarding the development environment and code organisation have already been made. It would be fairly common that I would refactor and re-organise some of the code and in particular the Hibernate JPA code.

In this post I am going to outline how I prefer to implement and organise the Hibernate JPA code on projects I am involved with (where that option exists). I will also demonstrate how I implement the persistent entity classes, data access objects, associated configuration and unit tests. A fairly typical project would utilise Maven, Spring and Hibernate JPA.

Creating the Maven Project

My preferred project structure consists of a root project containing a model module and persistence module with the persistence module having a dependency on the model module. While this would seem pretty straight forward, one now has to decide if one is going to use annotations or XML configuration for the ORM mapping. The reason I prefer to make this decision now is that it affects the dependencies of the model module.

There are arguments for and against using annotations or XML for ORM (any XRM really) but if no precedent has been set I normally try to avoid using annotations in model classes. This way model classes are very clean and the model module does not have any dependencies on javax.persistence. I was involved in a project using JPA and JAXB annotations in model classes and they became difficult to work with very quickly.

The persistence module really does encapsulate all the information relating to the persistence mechanism with the exception of (some) transactional characteristics which would ordinarily be defined in service classes within a service module. Of course the price you pay for this is having some quite large XML files.

Read More
About - MonkeyLittle

Thoughts on Software Engineering, Infrastructure and everything in between.

Twitter Feed