Uncle Bob (Apparently Robert C. Martin?) writes about Architecture as a secondary effect .
I had not thought about this before this round table. Here we were, a bunch of architects and designers, strongly debating the role and procedure of architecture, and the conclusion we come up with is that all the effort and struggle we go through results in a secondary improvement in flexibility, maintainability, and scalability. Writing tests (writing them first) has the primary effect
</Quote>
I think Bob is missing/downplaying one very important aspect - and that is level of abstraction.
However since code is (obviously) detailed design you just can't go straight to code (test code or otherwise). In order to cope with a large/complex problem you need to tackle the problem at higher levels of abstractions first. Even more so there may be a need to go through several abstractions levels before you start coding anything. Unfortunately there aren't any real options to test models*.
In my opinion you cannot escape designing architecture in other (non-code) models for any, but the most trivial, system.
The way I see it the correct approach is to
So - Is Architecture a secondary effect?
No, sorry, but I really, really don't think so.
* There are some options to allow simulation and validation (i.e. tests ) of models in the embedded world (e.g. http://www.embeddedplus.com/EmbPlusSMST.php or http://www.ilogix.com/sublevel.aspx?id=286) - however I find that these approaches don't scale well to IT problems (which have a lot more variables and are usually much larger than embedded systems) or even to complex embedded system. You just have to specify too much before you get a usable simulation rendering the whole effort useless.
Subscribe to RSS headline updates from: