John Deere

Using Architecture for Agile Software Development

In modern agricultural technology, it has become impossible to conceive of products that do not include a major proportion of software. Current agricultural machinery in general, and tractors in particular, are usually equipped with a multitude of electronic control units, which take over tasks ranging from engine control via safety-relevant functions to interconnected agricultural applications. Many of the formerly purely mechanical operating elements have been replaced in modern tractors by interactive graphical displays. The largest manufacturer of agricultural machinery worldwide, John Deere, has recently started to develop display software in an “agile” manner. This is easy to understand if we look at the expectations regarding agile development: early customer feedback as well as shorter time to market due to fast release cycles. If software development is changed to agile methods, in practice this entails more liberties for the development team. However, with regard to the distributed development of such displays, which in the case of John Deere takes place in the USA and in Kaiserslautern, the resulting liberties lead to additional challenges, which pose obstacles to smooth software development. In addition to challenges regarding communication and tool support, in agile software development the question quickly arises whether requirements regarding the implementation of particular development activities are necessary and how specific such requirements should and must be. Particularly the development and communication of a clear vision – supported by all developers – of the system and of the software architecture often turns out to be difficult to achieve for distributed teams developing software in an agile manner.

In their transition to agile development methods, John Deere ISG (Intelligent Solutions Group) was supported by Fraunhofer IESE experts in using architecture principles in such a way that communication across sites was improved in order to develop a joint vision of the software architecture and firmly establish it in the development process.