Nick Rozanski is an enterprise technical architect at Marks and Spencer, where he focuses on integration and workflow. During his more than twenty years of experience he has worked for companies such as Logica, Capgemini, and Sybase. His technology experience covers enterprise application integration, relational databases, and object-oriented software development. He is also an experienced technical instructor and certified internal project auditor.
Eoin Woods is a principal consultant at Züehlke Engineering in London, where he works as a consultant software architect focusing on trading and investment management companies in the financial markets. He has worked in the software engineering field for fifteen years with a number of companies, including Ford Motor Company, Groupe Bull, InterTrust Technologies, and Sybase.
The authors of this book are both practicing software architects who have worked in this role, together and separately, on information system development projects for quite a few years. During that time, we have seen a significant increase in the visibility of software architects and in the importance with which our role has been viewed by colleagues, management, and customers. No large software development project nowadays would expect to go ahead without an architect--or a small architectural group--in the vanguard of the development team.
While there may be an emerging consensus that the software architect's role is an important one, there seems to be little agreement on what the job actually involves. Who are our clients? To whom are we accountable? What are we expected to deliver? What is our involvement once the architectural design has been completed? And, perhaps most fundamentally, where are the boundaries between requirements, architecture, and design?
The absence of a clear definition of the role is all the more problematic because of the seriousness of the problems that today's software projects (and specifically, their architects) have to resolve.
When we first started to take on the role of software architects, we looked for some sort of software architecture handbook that would walk us through the process of developing an architectural design. After all, other architectural disciplines have behind them centuries of theory and established best practice.
For example, in the first century A.D., the Roman Marcus Vitruvius Pollio wrote the first ever architectural handbook, De architectura libri decem ("Ten Books on Architecture"), describing the building architect's role and required skills and providing a wealth of material on standard architectural structures. In 1670, Anthony Deane, a friend of diarist Samuel Pepys, a former mayor of the English town of Harwich and later a member of Parliament, published a ground-breaking textbook, A Doctrine of Naval Architecture, which described in detail some of the leading methods of the time for large ship design. Deane's ideas and principles helped systematize the practice of naval architecture for many years. And in 1901, George E. Davis, a consulting engineer in the British chemical industry, created a new field of engineering when he published his text A Handbook of Chemical Engineering. This text was the first book to define the practical principles underpinning industrial chemical processes and guided the field for many years afterward.
The existence of such best practices has a very important consequence in terms of uniformity of approach. If you were to give several architects and engineers a commission to design a building, a cruise liner, or a chemical plant, the designs they produced would probably differ. However, the processes they used, the ways they represented their designs on paper (or a computer screen), and the techniques they used to ensure the soundness of their designs would be very similar.
Sadly, our profession has yet to build any significant legacy of mainstream industrial best practices. When we looked, we found a dearth of introductory books to guide practicing information systems architects in the details of doing their jobs.
Admittedly, we have an abundance of books on specific technologies, whether it's J2EE, CORBA, or .NET, and some on broader topics such as Web services or object orientation (although, because of the speed at which software technology changes, many of these become out-of-date within a few years). There are also a number of good general software architecture books, several of which we refer to in later chapters. But many of these books aim to lay down principles that apply across all sorts of systems and so are written in quite general terms, while most of the more specific texts are aimed at our colleagues in the real-time and embedded-systems communities.
We feel that if you are a new software architect for an information system, the books that actually tell you how to do your job, learn the important things you need to know, and make your architectural designs successful are few and far between. While we don't presume to replace the existing texts on software architecture or place ourselves alongside the likes of Vitruvius, Deane, and Davis, addressing these needs was the driving force behind our decision to write this book.
Specifically, the book shows you
Throughout the book we primarily focus on the development of large-scale information systems (by which we mean the computer systems used to automate the business operations of large organizations). However, we have tried to present our material in a way that is independent of the type of information system you are designing, the technologies the developers will be using, and the software development lifecycle your project is following. We have standardized on a few things, such as the use of Unified Modeling Language (UML) in most of our diagrams, but we've done that only because UML is the most widely understood modeling language around. You don't have to be a UML expert to understand this book.
We didn't set out to be the definitive guide to developing the architecture of your information system--such a book would probably never be finished and would require the collaboration of a huge number of experts across a wide range of technical specializations. Also, we did not write a book of prescriptive methods. Although we present some activity diagrams that explain how to produce your deliverables, these are designed to be compatible with the wide range of software development approaches in use today.
What we hope we have achieved is the creation of a practical, practitioner-oriented guide that explains how to design successful architectures for information systems and how to see these through to their successful implementation. This is the sort of book that we wish had been available when we started out as software architects, and one that we expect to refer to even now.
You can find further useful software architecture resources, and contact us to provide feedback on the book's content, via our Web page: www.viewpoints-and-perspectives.info. We look forward to hearing from you.
I bought this as a companion to "Evaluating Software Arhitectures-Methods and Case Studies". Read morePublished 5 months ago by Bazmundi
Couldn't have asked for more! Love it absolutely!!!
Total worth it - I had purchased an older used copy. Read more
This is one of the best books that I have ever read about software architecture. I am working as an IT-architect and use this book every time I am starting on a new project - just... Read morePublished 22 months ago by Amazon Customer
This book is wonderful to align one in the right direction as far as software architecture is concerned. Read morePublished on January 14, 2011 by Suresh B. Sikharam
This is an excellent book every architect should own one. I'm sure every architect will learn something from this book. Its content matches well with its title. Read morePublished on November 27, 2010 by R. Yang
I'm impressed. Rarely do the IT related books are written so concisely and clearly but at the same time providing extensive coverage of the subjects. Read morePublished on September 19, 2010 by docent
As the title indicates this book is one on software architecture. What sets it apart from many books in that area is that it presents a pragmatic approach to architecture. Read morePublished on September 4, 2010 by Omar Halabieh
I bought this book for my Software System Architecture Class..Book has good examples and explanation is very clear and understandable..Hope it works for me in future..:)Published on March 12, 2010 by DMK
I was lent this book by a mentor and very soon realised this was something I had to have my own copy of as it brought together many aspects of the software architect's job which I... Read morePublished on September 23, 2009 by Mark Foley