The Art of Software Architecture by Stephen Albin