Hello all,
There is a part in APOSD which has been bothering me for some time now:
"In an ideal world, each module would be completely independent of the
others: a developer could work in any of the modules without knowing
anything about any of the other modules. In this world, the complexity
of a system would be the complexity of its worst module. /
Unfortunately, this ideal is not achievable. Modules must work together
by calling each other's functions or methods. As a result, modules must
know something about each other. [...] The goal of modular design is to
minimize the dependencies between modules." (4.1)
I don't think that this is a good description of the ideal world; it
takes it too far. Modules that don't interact at all cannot function
together. The goal is a functioning program, and thus any ideal must
still be a functioning program.
I think that the distinction i'm trying to make is between these
two positions:
1. Dependencies are bad. Our work is to eliminate them.
2. Dependencies are essential. Our work is to identify, organize,
simplify, and clarify them.
It's not about ideal versus practical---it's about our basic
values and where they take us in the extreme.
I don't think that having to know things about other modules is a
problem. Learning about and using a good module is one of my
favorite experiences in programming. I think that the problem is
when that knowledge is difficult to acquire or use---namely,
complexity.
Even just the idea of using a module at all---"creating a
dependency"---is the essence of modularity. It's a way to manage
complexity. Perhaps i am saying that dependencies in themselves
aren't a source of complexity, but obscure dependencies are.
Many thanks for the discussion,
paul
--
You received this message because you are subscribed to the Google Groups "software-design-book" group.
To unsubscribe from this group and stop receiving emails from it, send an email to software-design-...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/software-design-book/434e3bf2-8df5-4a52-b70b-741f139a13f0n%40googlegroups.com.
I think that the distinction i'm trying to make is between these two positions:
1. Dependencies are bad. Our work is to eliminate them.
2. Dependencies are essential. Our work is to identify, organize, simplify, and clarify them.
It's not about ideal versus practical---it's about our basic values and where they take us in the extreme.
I don't think that having to know things about other modules is a problem. Learning about and using a good module is one of my favorite experiences in programming. I think that the problem is when that knowledge is difficult to acquire or use---namely, complexity.
Even just the idea of using a module at all---"creating a dependency"---is the essence of modularity. It's a way to manage complexity. Perhaps i am saying that dependencies in themselves aren't a source of complexity, but obscure dependencies are.