Interface Oriented Design: With Patterns (Pragmatic Programmers)
Ken Pugh has extensive experience in the area of software analysis and design, both as a doer and as a teacher. He's a well-known, frequent conference speaker.