Directed at the design of systems for commercial and scientific applications; however, the material can be applied to the design of any computer system, including compilers, operating systems, or process-control systems.
Although the illustrations are quite dated, this is still a great introduction to important ways of thinking about the relationships between program components (these days, we would say "objects"). Considering the renewed interest in refactoring, brought on by the Agile processes, a little back-to-basics study on "what makes a good boundary definition" is eminently useful.
The first 3rd contains timeless knowledge about information systems communicated clearly and usefully, the last 2 3rds is mostly a walk down memory lane about ancient boomer technology that is interesting to develop a historical in understanding of system design but is not very practical today. A forgotten gem!