Architecture has been an overlooked area of software development, but one which is finally starting to receive the attention it deserves. This book is a major step in that direction. Different types of architecture are defined, with case studies for illustration. The book presents new technology relevant to this field; discusses evaluation of complex shared information; and analyzes rules and languages for designing software architecture. The book also provides architectural tools.