I firmly believe modularity is a requirement for large software systems. For small software systems (say > 10k loc), modularity isn't absolutely necessary, at least from a design perspective since smaller systems are inherently easier to understand. Of course, there are other reasons to use modularity, such as deploying different versions of a module alongside each other in the same JVM, hot deployment, or plugin architecture. Even for small systems, modularity can be beneficial. Like all things, modularity is a valuable tool in your arsenal of tools. I tend to shy away from absolutes, because there is always an exception. But I'd have to believe a system must be very small with very simple requirements not to benefit from modularity.
Visit the book's website at
modularity.kirkk.com where you can review all 18
patterns and download an excerpt of the book. There is also a
mobile web application available that you can take with you wherever you go.
--kirk
Twitter: @pragkirk