Tuesday, July 26, 2016

Guarding your software investement (Blueriq)

Blueriq Model Complexity

Organizations struggle to sustain the added value of custom developed software. After implementing a new piece of software, often new functionality is added to respond to the changing environment, regulations and user expectations. As a new functionality is added, the maintainability of the software often deteriorates. The reason for this is that some changes require a (slightly) different setup of the structure of the software, the architecture. Changing the architecture is often costly compared to the business value of one single added feature. There is a chance that someone decides to realise the feature without changing the architecture. When more similar features are requested over time, changing the architecture will become costly as more features have been added along the way. In such a scenario it is likely that at a point in time, adding features becomes too costly compared to the business value that the feature brings. The organization is left with a piece of software that doesn’t fully support the organization’s processes and is too costly to change and to replace. A new investment is needed to turn the ship around.


How much better would it be to guard your investment and constantly look at the maintainability of your systems to make sure at all times that the right amount of effort is going to keep software ready for change? But how do you do this? How do you even know that maintainability is becoming an issue?


There is no easy answer to these questions because creating maintainable software is a craftsmanship. It requires a structured way of thinking of software developers. It requires analytical skills to oversee the models. And when the software system is too big to oversee, it requires tooling to help assess the maintainability. It is this tooling, specifically for software developed with Blueriq that I want to bring to your attention.


I’m currently involved in developing software for a big governmental organisation. We are using a combination of tools to create the software solution. In this constellation Blueriq is used as the rule and form engine. For some solutions, the amount and size of models has grown over time. It becomes hard to oversee the models and find out where improvements can best be made. Having a tool that provides quality metrics about the models is key. Many software development tools therefore provide complexity and maintainability metrics out of the box. But as much as I like Blueriq for knowledge modeling, there is no support to check model quality. I was left on myself without metrics and even without much theoretical guidance on how to find complexity of the specific models used. I decided to dive deeper into the subject and I have created a tool that gives me insight in the maintainability of the software models in Blueriq.


I have used the tool to analyse not only the solution I’m working on, but also other solutions realized on the platform. It gave me insight about the complexity of the models. As a team we are now targeting the parts with highest complexity; we are refactoring the models with biggest problems to improve the maintainability. We have already successfully refactored several models which resulted in a reduced amount of issues found in the operational software. Moreover we’ve made sure that the architecture of the solution is more capable to cater upcoming changes that we are working on. We’ve been able to add a new range of features with an effort corresponding to the business value of those feature.


With this tool the organization can guard its investments made and make sure that quality of the models can be kept under control.

Do you have a team working on building solutions in Blueriq, or are you struggling to get quality under control? Would you like to have facts and figures about this software, rather than on someone’s gut feeling? I can give you the facts and figures about the maintainability of your models. I can help your team in finding the best opportunities for improvement and give guidance on how to actually improve the models or the structure of solution. Feel free to contact me and discuss the options.