It's not all clear cut obviously, but I've seen good architectures going to waste because there were no longer enforced (either no more architects on board or clients no longer cared).
The best architecture is the one that feel rights and (almost) no one argues.
Otherwise, as the application evolves, it's likely the original design will get less and less understood and the new code might completely diverge from it, ending up with an Atlantean Architecture.
In short, architectures can outsmart developers, and that's bad. Even the best UML diagrams, or any quick-read/cheatsheet documentation may not help developers understand the essence of the chosen design(s) and how to maintain it or make it evolve.
It's the same in any industry though. A small change in a house doesn't require an architect, unlikely, but a big change (e.g. adding new rooms) does. A software however goes through many such small changes, that any house with that many changes would end up being a Winchester House. It's easy when building a house to realize something's going wrong (e.g. when a staircase leads to the ceiling) but not so easy with a software application.
There's no unit test for architecture...or is there?
No comments:
Post a Comment