A few weeks ago I attended a talk organised by Thoughtworks about "Building Evolutionary Architectures". This was a very interesting and important subject, which addressed the issues that most software development teams will encounter at one point or another. The main one being Tech Debt, and how to monitor, reduce and prevent the same type of Tech from re-occurring.
This topic addresses the new kid on the block, Microservices, and how this new architecture has made us rethink how we design software.
"For many years, software architecture was described as "the parts that are hard to change later". But then microservices showed that if architects build evolvability into the architecture, change becomes easier."
"Incremental change is critical for the mechanics of evolution, while uncontrolled evolution leads to undesirable side effects. Predictability is impossible when the foundation architects plan against changes constantly in unexpected ways. Instead, prefer evolvability over predictability."
One of the focus of the talk was "Fitness Function", which is described as follows:
"Mathematically speaking, a function takes input from some allowed set of input values and produces an output in some allowed set of output values. In software, we also generally use the term function to refer to something that is actually implementable. However, as with acceptance criteria in agile software development, the fitness functions for evolutionary architecture may not be implementable in software (e.g., a required manual process for regulatory reasons), but architects must still define manual fitness functions to help guide the evolution of the system. While automated checks are preferable, some projects cannot automate all fitness functions. Thus, it is still useful for architects to elucidate architectural verifications explicitly as fitness functions for many reasons that will become evident."
Conveniently some of the people at ThoughtWorks have just published a book called "Building Evolutionary Architectures", you can download a free chapter here.