After devoting my post graduate years in automated design synthesis, at times I feel the need to evaluate the relevance of my work against modern tool chains and trends. Automated design synthesis aligns with *DD frameworks and I feel, with tool chains supporting continuous integration, that automated design synthesis may now actually be a reality. A form of requirement automation if you will.
The core principle behind DDD, TDD, BDD and ATDD is about writing code that aims to deliver implementation for requirements. The mapping is 1 to 1 and it is often an iterative process. In order to illustrate that the code correctly behaves as designed, artifacts are produced to directly support testability and serves to illustrate conditions of satisfaction.
Peeling off yet another layer, all *DD principles focus on encapsulating requirements using regular language, then forming individual requirement pieces into regular expressions. Regular expressions are equivalent to deterministic finite automata (DFA) and therefore can be combined with other DFA via Kleene’s theorem. This is the crux of design synthesis and code generation.
I surmise that it is now possible to perform requirement automation iteratively, from synthesising verifiable design artifacts, to executable test cases, to rapidly deploying these new implementation into production environment that are ready to be acceptance tested and released with moments noticed.
I hope to further examine this notion in the coming blog posts in order to fully explore the possibility of delivering requirement automation.