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
Review: Adobe Photoshop Elements
A Visual Introduction to Digital Imaging, By Philip Andrews
Beautifully produced, clear introductory book
If you’re new to digital imaging, and trying to get to grips with Photoshop Elements (or any of its relations including its big brother Photoshop) it’s often difficult to understand some of the concepts, and how all the different pieces fit together. If that describes your situation, this book is a very good place to start.
Review: Why Buildings Fall Down
By Matthys Levy and Mario Salvadori
A clear and entertaining book
Such is our morbid fascination that this book is inevitably more attractive than one called “Why Buildings Stay Up”. That said, I think I have not only learned more about structural engineering than I would have done from a positive counterpart, but I have also learned vastly more about the other factors, human and natural, that influence the ultimate success or failure of structures.
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: 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: 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: 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.