Keynote Presentation by Martin Fowler Patterns for Enterprise Architecture
Martin started off his talk in his usual flamboyant style declaring
PowerPoint's are outdated and he planned to wing this presentation.
The talk started by explaining where the whole concept of Patterns
originated from with emphasis on the seminal work by Eric Gamma and
his book on Patterns. Martin has created a web site consolidating
resources and links someone could use when starting in this field.
One of Martin's insight particularly resonated with me. Martin: -
"often you have programmers with few years of experience who come upon
patterns and they try to use every conceivable pattern's into the
simple application they are writing. Making the applications
horrendously complex and too unwieldy to manage. The only cure to this
malaise is experience."
The area of Enterprise Applications is made up of three distinct areas.
Enterprise Application Architecture
How to decide what logical layers should be? Generally there are
always three layers.
• User Interface layer
• Business Logic layer
• Data layer
With commonality of Patterns that cross platforms.
How you chunk up a system into layers, and how do you apply patterns
into those layers?
Enterprise Integration Patterns
The driving assumption about integration is we have little control on
how the applications are built and used.
One approach is to have a common database. This promotes tight
coupling across organisations in a loosely coupled world and generally
does not work.
Conway's law ("Organizations which design systems are constrained to
produce designs which are copies of the communication structures of
these organizations.'' We might put it more succinctly as "The means
determine the ends'', or even "Process becomes product''.)
The best option would be to use loose coupling.
Asynchronous Message oriented way has a better chance of success in a
loosely coupled way. Loose Coupling is hard and you have to think
differently in that world.
How do you organise your domain logic? In EAP there are 3 main ways of
organising this logic. Which approach to use is based on how complex
your logic is.
This organises the model into classes around how to use it.
The book that best catalogues this area is "Domain Driven Design"
subset is Analysis Model but that book is dated.
The second best book is Data Model Patterns: Conventions of Thought
Microsoft and Thoughtworks in conjunction with other pattern people
have put together an excellent website at http://www.patternshare.org/
. What was interesting is his comment on how ServerSide.Net is the
largest collection of useless patterns, in typical Martin style.
The whole purpose of Patterns is used to pass on the experience to
other people. There is a need to build a language to promote
communication among designers.
Design is evolutionary in software development. Often people wonder
with the adoption of agile methodology is design dead. His observation
was to refactor agile projects and the best resource on how to do this
is covered in the book Refactoring to Patterns (Addison-Wesley
The Main message when doing Agile development is: DON'T BE AFRAID TO
EXPERIMENT (POC'S). And invest in good refactoring tool. Martin's
recommendation is Jetbrains ReSharper but I like C# Refactory .
While working on Agile projects it is important to take test driven
approach and best reading material for the same is: Test-Driven
Development in Microsoft .NET (Microsoft Professional)
Microsoft Architectural Framework Gurpreet S. Pall
Sr. Director D&PE Architecture Strategy Microsoft Corporation
The talk started off with
Why Enterprise Architecture and the reasons outlined were
• IT costs too much
• Costs of managing complexity
• Eliminate redundancy
• Growing IT ecosystem
• Demanding rate of change
• Need for info sharing
• Outsourcing (BPO)
Definition of EA: "The enterprise architecture is the organizing logic
for a firm's core business processes and IT capabilities captured in a
set of principles, policies and technical choices to achieve the
business standardization and integration requirements of the firm's
operating model. "
Schools of thought
• Zachman Framework
• Meta Enterprise Architecture
• MS Model
• MS Solutions framework model
• Software factories
• Module Maps and motion methodology (this is new stuff from MS I need
to Google it)
So why do we need all these frameworks.
"Effective organization is critical to help us gain a full
understanding of the complex world surrounding us. Standard and
consistent organizing systems are used everywhere, from the Periodic
Table of the Elements and the Biological Classification of Organisms,
to the Dewey Decimal system in libraries. Such systems are also
plentiful in the world of Information Technology. For example, the DNS
system helps organize computers globally in a meaningful way, and file
systems provide a directory structure to organize files in storage.
Enterprise-level software and system architecture are ripe for a
similar organizing system. If you ask any group of technologists to
describe the architecture of a system, you are likely to hear
contradicting descriptions. Each person often has his or her own view
of the system, which is accurate but different from the view of other
technologists looking at the same system. A consolidated and
consistent view of enterprise software-intensive systems could help
technologists gain a shared understanding of the enterprise
architectural space that is more complete and accurate."
Model to deliver Artefacts
Zachman's Framework for EA, is built from perspective or views
ZAF Focus on artefacts, many people have failed because it is too comprehensive.
ZAF is somewhat of a static view and as everything else keeps on
changing you can end up chasing up your tail.
Best thing ZAF did was to start thinking along these lines.
EA Meta Group is simpler model.
Core is business strategy drives everything.
4+1 Framework by Rational
All based on IEEE 1431 standards.
MS Solutions Framework
Architect is the person who translates information between strata;
views are vertical across strata's.
What types of applications do we need to put in place to support?
• CRUD Affinity Matrices
• ER Model
• Class model
• XML Schemas
• Tech Service Portfolio
• Distributed System
Software factories move away from grid structure to more of an
amorphous structure. Check out the paper on Software factories on MSDN
Module map is a generic view of Business Capabilities
Capability = is what a business does.
Motion starts with a high-level, objective view of business and allows
Enterprise Architectural Space Organising Table
Microsoft Operations Framework process model and SMF's
• Business and IT alignment
• Stakeholders, viewpoints
• Architects need to understand other views and translate.
• Strata and need for details
• Domain specific concerns
Architects need to have the vision at the same time be able to
translate that to business people's level on how to get there.
EA is an evolutionary process; there exists a chasm between Business
Practise, Business Applications and Infrastructure.
Gurpreet then examined Discipline of Market Leaders
• Operational Efficiency
• Customer Intimacy
• Product Leadership
• Value Chain
• Business Practices
University of New South Wales and Dept of Defence are working on a
program for Enterprise Architect some sort of Master of Science in
http://www.itee.adfa.edu.au/courses/itpgcourses2004.html , I already
hold a Masters in Com Sci. from UTS so why waste more money. Also
Microsoft may be coming out with some sort of certification for
Architects don't know any details yet.
Overall the conference was well organised, as all Microsoft
Conferences are. Bill Gates was linked in via a pre-recorded video,
which may show how important this is on his radar. That point being
aside I was really glad to see MS getting serious in the Enterprise
Space. This is one place where you sow today and reap the fruits in
2-3 years time. The keynote on Usability and Software architecture was
a bit of a let down. In between I attended a Connected System's
workshop which did not turn out to be much of a fun as the person
hosting it was still coming to terms with connected systems as well.
Rodger Roberts (McKinsey) session on Aligning Business and IT
Architecture was extremely nice and I am still waiting to get my hands
on his presentation. He was focusing on why Business Process in an
organisation is important and how it affects Architecture and its
connection with SOA. The famous Harvard Article which talks about "IT
doesn't matter" missed point as it was focusing on applications. "IT
does matter" if organisations started focusing on their core processes
which make them competitive and stop this naval gazing at SAP's and
Baan's of this world.
The other information sessions were extremely nice as well my
favourite was Simon Guests on Interoperability as that is what I am
doing every day. Getting BEA weblogic to talk to .NET.
The closing session was good and bad, it was round table discussion
between all the keynote speakers on SOA. Martin believed SOA was
nothing new but just Same Old Architecture and OO world has been doing
it for years. This leads one to wonder if OO world has been doing
this for years how did we get it so wrong and ended up with
Information Silo's that we have. I have great respect for Martin but
when talking to him I am often reminded of the quote by Roger King "I
have a cat named Trash. In the current political climate it would seem
that if I were trying to sell him (at least to a Computer Scientist),
I would not stress that he is gentle to humans and is self-sufficient,
living mostly on field mice. Rather, I would argue that he is
For years computer professionals have been telling Business People
lets change this mainframe because it is not OO, with countless failed
projects we have lost all credibility. Now we have an architecture
which allows building business processes that build facades around
these mainframes and bring them into mainstream at fraction of a cost.
Enabling us to build organisations that are application agnostic with
application architecture that are Designed for Disassembly (DOD). Some
other time I will talk about my thought on this topic.