Philippe Kruchten of Rational has taken the Tao of Lao-Tsu, and created a modern translation focussed on the values and attitudes which an architect should adopt. He says many things which are also said on this site, but much more beautifully.
Author Archives: Andrew
Articles on Agile Modeling and Architecture
Here’s a list of useful articles by Scott Ambler on either the Agile Modeling or Agile Data web sites. A lot of that material is relevant, but I’ve picked out a few articles which are most relevant to the Agile Architect:
Review: Software Architecture Organizational Principles and Patterns
By David Dikel, David Kane & James Wilson
An excellent book on how to make architectural changes work
This book is about how to make architectural changes across an organisation. It’s very much about the softer aspects of selling ideas, getting buy-in, and then seeing changes through. It has wider applicability than the title and very focused text might suggest: although it’s written in terms of "architecture", "architects" and "product lines" it could equally easily apply to "strategy", "strategists" and "portfolio".
This is a practical book, who’s authors have realised that software architecture is about people and processes, not standards or definitions. Maybe it reflects the growing maturity of the field, but this book gets down to the meat in a way that most earlier books didn’t. The book includes some useful material for any architect trying to sell his efforts, particularly real business examples where major businesses succeeded or failed because of the quality and timing of architectural investments.
Review: VB.NET for Developers
By Keith Franklin
How Technical Books Should Be Written
The trouble with most books on technologies like .NET is they try to be all things to all people, and end up being either too shallow or far too long.
This book is a very welcome exception. This is how technical books should be written: no messing about, no unnecessary repetition, but all the material is covered clearly in about 250 pages. A very clear target audience (experienced VB6 developers), and clear objectives help – the book’s intention is clearly to communicate the essentials, and the practitioner will then get more detail from other sources. It’s one of the few books of its type which can be read from cover to cover.
The book isn’t perfect: I spotted a few proof-reading errors (in an early copy based on the Beta version of VS.NET); some examples are a little difficult to follow, and some topics inevitably rather sketchy.
However, I can thoroughly recommend this book, although I suggest that the serious VB developer will probably need other volumes as well: I also purchased "ASP.NET for Developers" by Amundsen & Litwin, and "The Visual Basic Programmer’s Guide to the .NET Framework Class Library" by Powers & Snell, both in the same series from Sams.
Review: ASP.NET for Developers
By Micael Amundsen & Paul Litwin
A Good Introduction
This book is a clear and well-written introduction to the latest version of Microsoft’s Active Server Pages. It is written how technical books should be written: no messing about, no unnecessary repetition, and a lot of material covered clearly in just over 400 pages. A clear target audience (experienced ASP and VB6 developers), and clear objectives help – the book’s intention is clearly to communicate the essentials, and the practitioner will then get more detail from other sources.
The book clearly presents the VB.NET language, the new ASP architecture, how to develop using server-side and user controls, and supporting technologies such as Web Services and ADO.NET. However, there are some omissions. For example, the book states that you can’t raise standard events from User Controls, not only is this possible, but the standard MSDN documentation has a very simple example of how to do so.
If I have a major complaint, it’s that the book was not developed around Visual Studio. Instead the examples are mainly pure text, similar to old server pages. This has two drawbacks: it fails to support the new paradigm of web development which Microsoft have finally raised above hacking with a copy of notepad; and it’s sometimes difficult to relate the text-only examples to code generated by the Visual Studio design tools, and vice-versa.
Another weakness is shared with many other books on web-based development, especially in the Microsoft arena, with very little focus on how to properly structure code and solution components. I have had to resort to Java-based architectural pattern books, and I think there’s a major gap in the market here.
This won’t be the only book you’ll buy on .NET: I also purchased "VB.NET for Developers" by Franklin, and "the Visual Basic Programmer’s
Guide to the .NET Framework Class Library" by Powers & Snell, both in the same series from Sams. However, I can recommend it as a good clear introduction to ASP.NET, which doesn’t require you to read thousands of pages.
Review: Realizing e-Business with Components
By Paul Allen
A very good, practical book
This is a very good, practical book. I found it very readable, with just an appropriate level of textual detail in most cases. It’s the first book I read which tries to tackle the problem of modelling and understanding Enterprise-level system interactions (this predated Tony Britton’s excellent book). If anything, Paul sells it a bit short by tying it to "e-Business", since a lot of the ideas and disciplines can apply to less forward-looking Enterprises who are trying to solve traditional integration problems but who may not identify with the e-Business tag.
The early part of the book discusses the principles of component-based development (CBD), and how this can be combined with process modeling to both help improve the business, and to provide a clear model for the systems needed to support it. Importantly, Paul sees the development of both business processes and systems as something which must happen progressively, so neither has to be the subject of "big bang" changes.
The next section of the book discusses the different types of components, and their role in a typical architecture comprised of both new and legacy systems. Paul then introduces his "CBD Process Framework", a way of defining components and then "provisioning" then by the most appropriate combination of new development, purchasing and re-using existing assets.
The core of the book takes a typical business process (car rental) and develops a worked example of the various business, logical and physical models which are required to define the component architecture. The models are each taken through several stages, corresponding to an evolving e-Business process and a system which is growing incrementally. This is much more realistic than presenting the final model "as is", and allows much better understanding of how the model develops. In many ways this is the part of the book which delivers the greatest real value.
The final part of the book discusses different provisioning and funding strategies for CBD, and how an e-Business team should be structured. There’s a lot of good stuff here, which may be very useful to someone new to object- and component-based development. However if I’m honest I found this less useful, since there are better specialist books on this subject and it doesn’t hold the interest as well as some of the earlier sections.
As an Appendix, Paul presents descriptions of all the major component technologies, and all the major UML-based modelling techniques. This could be a valuable reference for anyone.
I have one slight reservation on the book’s core – Paul follows a convention in which an "interface" is a collection of types, and says that "by convention" the interface includes access to all the types. This is a bit different to the Microsoft model, for example, and may make it more difficult to establish good navigation around the object model, or to support "stateless" models. However, this is something to be aware of rather than something which should detract from what is otherwise a very useful tutorial.
I like this book. The worked examples of developing the e-Business model are excellent, so much so that I now recommend this book to anyone trying to model such things using UML.
Review: The Universe in a Nutshell
By Stephen Hawking
An enjoyable but challenging book
This is the long-awaited follow-up to "A Brief History of Time". It’s quite amazing how some of the ideas around the Physics of the very large and very small have developed in recent years, and Stephen Hawking is determined to communicate them to us.
Review: Why Men Don’t Listen & Women Can’t Read Maps
By Allan and Barbara Pease
A humourous but serious book which explains a lot
This is a humourous but serious book which explains a lot. If you’ve ever been puzzled by why a partner, friend or relation of the opposite sex just doesn’t seem to "get it", this is the book for you.
The authors, themselves a husband and wife team, explain how most behavioral differences between the sexes can be explained by biological differences between men and women’s brains. In turn, these derive directly from millions of years of evolution to best fit traditional roles: "lunch chaser" and "nest defender". Political correctness is powerless to overturn things which are wired into our brains.
Review: The Hut Six Story
Breaking the Enigma Codes, By Gordon Welchman
An excellent, insightful and inspiring book
The men and women of Bletchley Park, who repeatedly broke German military cyphers throughout the Second World War, made an incalculable contribution to the allied success. This book, written by one of the code-breakers provides a fascinating insight into the process.
Despite the core subject, this is not really a book about cryptography, but about how to manage people and technology to solve complex, important problems. Welchman was the "glue" between the pure ideas men like Alan Turing, and the code-breaking production line.
His talents were clearly in building the organisation, and liaising between the different parties so that interception, decoding, understanding and using the intelligence became a repeatable success.
Review: Core J2EE Patterns
Best Practices and Design Strategies, By Deepak Alur, John Crupi & Dan Malks
A good book, but with a shorter book trying to get out
This is a good book, but with a shorter book trying to get out.
I’ll be honest, I was really was looking for a book called something like "Enterprise Java for an Architect who knows a lot about Microsoft DNA but not much about Java". This is the closest I’ve found. It is a very good presentation of how the different elements of the J2EE stack are meant to
fit together, common problems and patterns which address them.
There are some very good things about this book. It really tries to explain the design forces which lead to good and bad solutions, and does try to put all the different patterns into the context of a "roadmap" so you can see how they link together. One of the best ideas in the book is actually in the epilogue, where the authors introduce the idea of building an architecture via a UML diagram built from stereotypes for the patterns. I can see this being widely adopted as a useful technique.
The big problem with the book is it is dreadfully repetitive. It’s not sure whether it’s a textbook, a reference book or a design tutorial, so it tries to be all three. The same text gets repeated over and over again, not only between sections but even within a section. By attempting to make each pattern, and each
"strategy" within a pattern self-sufficient there’s an awful lot of repeated text, sometimes even on one page. Some patterns almost exact copies of one another and should arguably be strategies for a single pattern. Text is often repeated between the "Problem", "Forces" and other
sections of the same pattern, where a better trade-off would be references to a single list of more detailed descriptions. At the same time there are too many self-references in the text, even back to the start of the same section!
I found the repetition and overlap between the "design considerations", "bad practices" and "refactoring" sections confusing – it would be better if they all formed part of a single roadmap with the main set of patterns. There’s an established concept of "Anti-patterns", which could easily serve for bad practices and refactoring ideas, and these could also be reflected as part of the "forces" for the patterns.
Adopting all of these patterns could lead to a very complex layer structure, with a great many classes involved in the simplest task. Several patterns seem to be about wrapping the complexities of J2EE, and you wonder whether there ought to be a more systematic solution to this. The book doesn’t discuss
"managing complexity in the design", but if it did it might come up with some simplifications.
While I’m not aware of an equivalent book with a Microsoft focus, with a little effort you could also apply many of these patterns in the Microsoft world. However, there are some good Visual Basic patterns books which show how this should have been written. A provocative idea – does the difference between this and equivalent VB books reflect the difference in productivity of the languages?
My advice? If you need a good J2EE design pattern reference buy this book, but don’t try to read it cover to cover.
Review: Inside the Third Reich
By Albert Speer
A fascinating insight into Nazi Germany
This book is a fascinating insight into Nazi Germany and its key personalities, written by one of them. It contains the first explanation I have ever read of why intelligent and conciable individuals became caught up in Nazism, and is valuable for that reason alone.
Review: Software Architecture Bootcamp
By Rapheal Malveau and Thomas J Mowbray PhD
A Game of Two Halves
Like the famous description of soccer, this book is very much a "game of two halves". Half the book, maybe more, discusses the role of a software architect – the architect’s approach, attitude, responsibilities, processes and techniques. This is excellent: clear and concise, encouraging if you are a newcomer but still stimulating if you are a more seasoned architect. It is without doubt one of the best descriptions I have read.
Unfortunately, the other half of the book is less useful. The technical parts are either too simplistic, or too detailed when discussing a particular solution favoured by the authors. The text frequently tends to become a repetitive and thinly-disguised commercial for CORBA, and there is an obsession with standards such as RM-ODP which are simply not relevant to a great many commercial developers. The few examples are very simplistic, with no real discussion of many of the technical issues which a real architecture must address.
The book would have been much better for more care in its editing and presentation. The quality of proof-reading is in general poor, but becomes quite appalling in some of the technical sections – evidence perhaps that the authors allowed their technical stance to dictate a poor choice of word processor. The choice of diagrams seems random: some are good, but some difficult discussions cry out for a diagram (horizontal and vertical partitioning, for example), while in other places a diagram confuses where the text is clear. The reference list is incomplete, omitting even the authors’ "primary" reference which is quoted, frequently, in the text. All this is doubly disappointing when you consider that one of the authors is the series editor, and both were co-authors of the excellent "AntiPatterns" book.
My advice: if you are happy with the technological side of software architecture, and want advice on how to be a better architect, then buy this book, but read chapters 5 through 9 before you even attempt to read the first part. If, however, you are seeking technical guidance in the real world of software from Microsoft, Oracle and a host of legacy systems, then look elsewhere.