|
|
|
|
|
by _0w8t
1598 days ago
|
|
There are clear cases when the approach advocated in the paper just does not work. For example, one cannot hide behind an abstraction the difference between a reliable local and unreliable network storage. Another problem is that designing module boundaries to minimize the future changes require to anticipate what may change. But as the saying goes, “it is really hard to predict especially about the future”. If the prediction was wrong, then the initial split into components was hiding the wrong thing. For example, in the example in the paper they assumed that the task would stay the same, only hardware or the size of data set would change. But allow to change the task, and the whole proposed module split becomes wrong while design based on what was called flowcharts in the paper could require less rewrites. |
|
However, if you decide that sales should walk around with tablets to enter transactions into and those go to the cloud for processing, well you just have to rewrite the whole thing.
The point is, you look for the things that could change right now. But you know that if too much changes, you have to redesign it. It is not about predicting the future. It is not about writing software that can absorb any change.