New Zealand Customs Service.

Provoke invigorates aging ERP system with Domain Driven Design and Test-driven Development

"Maintainability in large software projects is always a challenge. Business systems are an investment, designed to be flexible to the rapidly-changing needs of their users, but all too often they end up brittle and costly to maintain by anyone other than the original developers.

That's why, when the opportunity arose for Provoke's Bespoke team to tackle an aging ERP system, we leapt at the chance. Over the past six months, we've worked hard to re-factor implicit and fragile logic towards a new standard, using Domain Driven Design to make code easier to understand, and Test-driven Development to make it easier to change.

Domain Driven Design (DDD) is a set of principles for establishing a clear model of the business domain that takes the front seat over the technology used to implement it. It's expressed using a Ubiquitous Language, where terminology used by the business is reflected and embraced directly in the source code. This commonality removes the wall of obfuscation between domain experts and developers that is common in traditional software projects, and transforms unrecognisable code fragments into well-established business concepts that can be easily understood by customer and vendor alike.

Test-Driven Development (TDD) is an agile programming technique where unit tests are written first, each demonstrating an individual behaviour the application is intended to exhibit. After production code is written and all the tests pass, the tests are kept as an executable specification of the software's behaviour. They decrease the cost of future changes by providing developers with a baseline level of confidence that they can click a button and receive nearly-instant feedback whether or not anything was broken. When practiced effectively, test-driven development has been proven to decrease defect rates in software, requiring fewer expensive human testing iterations later on.

Together, Test-Driven Development and Domain Driven Design have empowered Provoke to write bespoke software that is far more maintainable in the long term by being easier to understand and cheaper to modify. It has helped us achieve our goals of code quality, and is the first step in the client's long-term roadmap towards SOA and a distributed architecture. We look forward to using these techniques alongside user-centric design to bring future clients' ideas to life."

Richard Dingwall

Richard Dingwall, Bespoke Development

Latest News

NZFS | Station Management Station »

Station Management with the New Zealand Fire Service

The New Zealand Fire Service, you might think, is all about blokes rushing about in big red fire engines. In reality, ‘putting out fires’ is only part of the service’s emergency work (which also includes attending crashes, chemical spills and floods), and all of that incident response only takes up a minority of staff hours...

Continue Reading »