I’ve been thinking about business requirements-to-code kind of environments. They appear to be very attractive cutting down the additional layers. Specifically, this answer in Stack Overflow made me curious. In this blog, let us look at the importance of having an architecture and a design, howsoever small the software system be.
In the above link that I shared, the answer states that whether you consciously do it or not, architecture and the design happen anyway. It also states that when it happens unconsciously, the chances of them ending up being poor is high. To me, a little bit of care to sketch the architecture (the high-level layout), and the design (the details of how) will go a long way in thinking through the interfaces, protocols, contracts, etc., so that the quality of the produced software is superior.
From a Software Testing perspective too, it makes sense to insist on an architecture, so that validation and verification can be done on requirements to architecture conversion and architecture to design conversion.
You may wonder why go through all these, and why can’t we just do something BDD or ATDD to get the requirements to code. When you iterate and improvise, chances of some architectural aspects and some design aspects being missed is high, and it may require reworking the whole thing once more – which is waste, and does not align with Lean principles.
You may also argue that the requirements keep changing, so the architecture would keep changing. Well, today, there is really no problem with that. There are tools available to have architecture on the pipeline, and when requirements change, the architecture and hence the design needs to be updated!
I am wondering if there are automation tools available to convert requirements to architecture (don’t kill me for saying that)! May be we should look at it, you know, because that would be first step towards generating code from design, which is generated from architecture, which is generated from requirements.
Have an open mind, and think about these. A well-designed system is worth it to avoid the heartburns later. Don’t be pennywise and pound-foolish!
To chat about architectures and designs with me, feel free to setup a time. Glad to talk!