working with the development platform, and in subsequent applications we've been able to reuse the look and feel, the code and many of the templates we developed at the start. From a user perspective, every application developed on this platform has the same look-and-feel, which makes it effortless for users to start using new applications.
Lessons Learned: Design Matters
The strategy of embracing changing specifications and the ability to implement changes quickly in an agile fashion seems to imply, on first sight, that there is no plan and projects are done in an ad-hoc fashion with a lot of back-and-forth. Nothing could be further from reality; agile development methodology in our projects actually does put much greater demands on design. Anticipating specification changes forces a greater level of abstraction, which leads to a clearer, more generic and robust design. Starting out with little detail or information about features means you need to focus on core business processes and design the application in a way that enables evolution and re-factoring instead of recurring re-implementation. Abstracting even further, strategies such as interface-driven design and service orientation are used in all of our projects and enable a maintainable, modular software infrastructure. This in turn gives us the ability to implement application changes quickly in a non-disruptive way. In the case of ARMS, we had to make sure to implement the workflow in a generic way, thus limiting anticipated changes to the tracked objects and their properties. Along the way we have build necessary infrastructure modules (authentication, authorization, general data services) that have been decoupled from the actual application to allow reuse in future projects.
Developing and maintaining the design becomes the responsibility of each developer, which is ideal since everyone is involved in design and nobody gets stuck with doing ‘just implementation' The selection of a development platform is, however, an important success factor to enable this focus on design. The platform we selected supports change management with rapid deployment features, built-in error checking, on-screen capture of user feedback, and automatic creation of documentation, which has turned out to greatly facilitate our agile projects. It integrates graphical editors for each layer of the application (presentation, business logic and database) and allows for compilation and publishing of the project at a click of a button, including verification of dependencies and consistency. That way changes to application behavior can be implemented extremely quickly, sometimes even in the course of a user presentation meeting.
A number of software development platforms, including some with ‘software as a service', are available that make it easy to generate and change applications quickly. The ability to make changes quickly can, by itself, be the road to disaster if there is no sound concept and design of the application. The easier it is to create functionality and make changes the more time there is for conceptual and design work, and that time needs to be invested.
Agile is a good fit for XDx - it's exactly what we need to communicate with our users and add value quickly and effectively. Everyone loves the fact that each person is now part of the development project - everyone knows what's going on and participates in the team effort. Since planning and decisions are done jointly by users, developers, and SQA there is no longer the need to compile long lists of wanted features up front to make sure everything one could possibly think of is on the list; instead, the most important features are developed first and enable subsequent, refined specification of the next round of features. When the process has been started