Extending the Bounded Context Canvas with BDD Examples

Ever since Nick Tune introduced the world to the Bounded Context Canvas, I incorporate it in my workshops and trainings. Nick sees the canvas as a checklist for designing our Bounded Context canvas. For me, it is also perfect as a visualisation tool to make the Bounded Context explicit. The one thing I am missing is examples in the form of acceptance criteria discovered and eventually formalised during our Behaviour Driven Development flow. In this post, I explain how I extended the Bounded Context Canvas with BDD examples from Example Mapping to show how to formalise the behaviour of a Bounded Context.

Read more →

Incident management: what we can learn from a crisis

In information security we have a saying: ‘never waste a good crisis’. As grim as this may sound, there are valuable lessons to be learned from situations like the recent corona outbreak. As seen in the news a lot of companies close down their offices to limit the transmission of the virus. However, this can impact your efficiency or introduce new risks. What can you do to assess this?

Read more →

Quality pattern 2: Automate your acceptance tests

Welcome to my second blog in the series of five quality patterns in Agile development that can help you to deliver the right software with great quality. In my previous blog, I’ve introduced Example Mapping as a method to get to specific examples for scenarios or rules that your user story is made up of. The output of the refinement sessions are your requirements and thus your tests. In this blog, we will take a further look at these test cases and why it is important to automate these acceptance tests. Not just from a development team perspective, but also what they can bring to your business.

Read more →

Mutation testing with Pitest

Mutation testing promises to help ensure quality tests. It does this by making changes to a code base and running all tests. If all is well, some changes in code should result in failing tests. So making a bunch of changes like inverting the condition in an if-statement, should cause the tests to fail. If not, the test isn’t good enough.

I’ve tried this technique a couple of years ago, and wanted to find out what had changed.

more…

Scientist, a novel software QA method

This article describes a situation we found ourselves in during refactoring an existing application running in production, the implementation of a novel QA method dubbed “Scientist”, and advantages and drawbacks of this new approach. A future blog post will detail the architecture of a serverless implementation for this new QA method.

Read more →

Using Value Stream Mapping to Eliminate Waste

You perceive your time to market for new features to be slow and want to speed up

You experience that things are slow, and it’s hard to finish anything within an iteration. You’ve tried to deliver smaller increments, but it is still a struggle to complete these in a reasonable amount of time. One of the reasons of the perceived slowness might be that wasteful activities and unnecessary handovers are hiding in your development process.

Read more →

A layman’s introduction to socio-technical systems

Nowadays, there is an increasing interest and mentioning of socio-technical engineering, socio-technical systems. And although the words do not strike as odd on its own I personally have struggled quite a bit with the different meanings of the terms and understanding the field of socio-technical systems. So in this article, I will provide a layman’s introduction to socio-technical systems. Knowledge about socio-technical engineering can help you to understand what constraints might prevent or help you to succeed in your current project.

Read more →

How to reduce AWS Lambda latency using custom runtimes

When using AWS Lambda functions you typically want to return a response to the client ASAP. However, imagine a situation where you calculate the response for the client and want to do some actions after sending the response to the client (e.g., write some metrics). Since standard AWS Lambda functions do not allow you to execute any actions after returning the response,  the client will experience extra latency due to the other actions which must be completed first. This blog explains how to use AWS Lambda custom runtimes to reduce the added latency and still do the additional processing.

Read more →