In Principles of Package Design Matthias Noback tells you everything about designing software components, also known as packages. In the first part you'll revisit the SOLID principles of class design. They will help you prepare your classes for use in packages. The second part covers the important, yet lesser known package design principles. When you've finished this book, you'll be ready to design packages that have high cohesion, low coupling and are at the same time user- and maintainer-friendly.
Looking for the printed edition? They are available on Amazon.com (also in Germany and the UK).