Category Archives: Agile & Architecture

Agile Development & Software Architecture

Domain-Specific Languages

There seems to be quite a lot of activity on the “Domain Specific Language” front at the moment. Martin Fowler published “Language Workbenches: The Killer-App for Domain Specific Languages?”, in which he concludes that the common programming pattern of setting up repeating data structures via either very similar lines of code, or an external configuration file, is actually a DSL. He also republished a paper by Dave Thomas entitled “Design to Accomodate Change” on the related topic of table-driven programming.

However, Martin’s essay goes beyond common programming and data techniques to look at the development of specialist tools which he calls “Language Workbenches”. I’m not completely convinced that we need these in the world of XML and XSD. If you have a defined schema for you XML-based DSL (and aren’t all the many *ML langauges just different DLSs?) then any schema-sensitive editor will provide you with good design and editing support. The leading IDEs (e.g. Visual Studio) all have such a tool built into their core capabilities. Surely we now have a sufficiently sophisticated set of XML-based tools and standards that we have an opportunity to exploit synergies rather than re-inventing the wheel?

See http://www.martinfowler.com/articles/languageWorkbench.html
Posted in Agile & Architecture, Code & Development, Thoughts on the World | Leave a comment

The Fear Premium

In an interesting echo of my last piece (Why Software Isn’t Like Building Construction), Scott Ambler has analysed bureaucratic processes as a response to management fear about what can go wrong in software development. His conclusion is that these processes only give the illusion of addressing the underlying fear. His article is well worth reading.

See http://www.sdmagazine.com/documents/s=6977/sdmam0506/
Posted in Agile & Architecture, Thoughts on the World | Leave a comment

Why Software Isn’t Like Building Construction

Many software development and management methods are founded on a basic assumption – that constructing software is rather like building a bridge or a house. Once we’ve “done the design”, actually generating the software ought to be a completely predictable, relatively low-skilled process. However four decades of failure to achieve this vision might suggest that we should revisit
the assumption.

In a paper entitled “The New Methodology” Martin Fowler, the guru of object-oriented development, suggests a couple of reasons why this might be.

My article answers Martin’s, suggesting a couple of other considerations, and whether we have to completely abandon the physical construction analogy as a result.

Read the full article
Posted in Agile & Architecture, Thoughts on the World | Leave a comment

Application Development Strategies

I recently attended a day of the Butler Group “Application Development Strategies” Symposium. I’ve just posted a short report on some of the more interesting discussions and presentations.

Almost all of the presentations shared a reminder that we still have a “software crisis” – the vast majority of software projects fail to deliver to their original targets and estimates. The presentations suggested three independent, but not exclusive, approaches to try and resolve the problem:

  • Adopting better, more agile processes to address fundamental weaknesses in “waterfall” processes,
  • Adopting better tools and techniques to improve development productivity and the integration of the application life-cycle,
  • Enforcing a stronger “enterprise architecture” framework for development.

This last one was surprising, with several papers echoing my view that a strong architecture is essential if agile development is to succeed on a large scale or in complex and critical applications.

There was also surprising agreement on things which won’t solve the problem:

  • No-one was promising a technical or product “silver bullet”. This includes web services!
  • No-one was suggesting that we should just “try harder” with old-fashioned tools and processes.
  • There’s no “one size fits all” solution. For example it’s a mistake to force a formal, high-ceremony process onto small business systems developments.
  • Excessive technical standardisation is also not the answer. The drawbacks include “lowest common denominator” technical solutions and inflated costs where the standard solution is “overkill”.

Read my report for more details.

Read the full article
Posted in Agile & Architecture, Thoughts on the World | Leave a comment

Growing a Language

I’ve just read a wonderful paper by Guy L Steele, “Growing a Language“. He argues strongly that programming languages must be “small”, but able to grow. Such a language will have a relatively simple structure, syntactic rules, and a small core vocabulary. However it must also be able to “grow”, integrating new data types and functions, in the form of user code accessed in exactly the same way as core functions.

Steele’s argument is highlighted by the paper’s unique style – he uses a small but growing language himself. He writes using only words of one syllable, gradually adding other words he has defined in these terms.

The paper works at many levels. As well as the fascinating intellectual exercise in style, it makes a strong case for:

  • simple but extensible programming languages,
  • improving the extensibility of Java, rather than its core vocabulary,
  • an agile community process for developing languages, rather than up-front design of great monoliths,
  • the communication power of simple language and words.

Steele exhorts us to think about extensibility mechanisms – if we get these right then the core functionality can always grow. And by example, he encourages us to use simple, direct language and benefit from its discipline. On both accounts I agree wholeheartedly.

See http://homepages.inf.ed.ac.uk/wadler/steele-oopsla98.pdf
Posted in Agile & Architecture, Code & Development, Thoughts on the World | Leave a comment

Enterprise Integration Patterns

Integration, like other design activities, can benefit from sharing ideas and proven strategies in the form of patterns. An excellent starting point is Gregor Hohpe and Bobby Woolf’s Enterprise Integration Patterns website and book.

In my recent work I’ve discovered a few patterns of my own, and I’ve started a page to document them.

First up is entitled “Change Indicator” . You may have a legacy system with an EAI adaptor, or a similar source of messages, which reports on the current state of key business objects. The messages will typically tell you when something has changed, but not necessarily what has changed, but the latter may be important to downstream systems. This pattern shows how to use EAI elements to add this information in a way which is totally transparent to the legacy system and existing users of the EAI scheme.

Read the full article
Posted in Agile & Architecture, Code & Development, Thoughts on the World | Leave a comment

I Told You So

In Extensibility Points, Gregor Hohpe describes architecture as a guessing game, trying to understand future changes to a business, and designing a system to cater for those changes. He’s written a good article on types of extensibility and where they can be applied.

But Gergor’s article doesn’t really touch on understanding the dynamics of business change, and how these should dictate the form of architectural extensibility. Neither does he discuss the problem of being an architect who understands what flexibility is required, but being unable to get either the customers, or the suppliers, to agree. I seem to spend a lot of my time saying “I told you so” when a problem I predicted occurs – this is frustrating, even if I’m being proven right.

If you want to understand more about the dynamics of change, you might look at my previous postings on the subject:

Architects – Masters of Order and Unorder

Business Flexibility

Strategies for Flexibility

See http://www.enterpriseintegrationpatterns.com/ramblings/22_extensibility.html
Posted in Agile & Architecture, Thoughts on the World | Leave a comment

Web Service Challenges

In a recent article, Gregor Hohpe asks “Is SOA Like Drunk Driving?” In our attempts to address the shortcomings of component-based development have we “swung too far” and introduced new problems?

One recent experience suggests to me that we may well be at risk of this. Read about my first experience of Web Service development and judge for yourself: have we thrown the baby out with the bath-water?

Read the full article
Posted in Agile & Architecture, Thoughts on the World | Leave a comment

Enterprise Architecture Design and the Integrated Architecture Framework

I’ve recently been catching up on the Microsoft Architecture Journal. This is an occasional MS publication, which can be downloaded from the

.NET Architecture Center
. It’s got a lot of good articles, with a software architecture and process focus.

Of particular interest, there’s an article in the first edition by Cap Gemini on “Enterprise Architecture Design and the Integrated Architecture Framework”. Obviously every consultancy has their own architecture framework, and they all share some features, but what makes this one a bit different is the strong focus on the contextual (business context), conceptual (vision) and logical (solution independent capability) aspects, with technical details relegated to a bottom physical layer. It also has one of the best discussions I’ve seen on the relationship and differences between enterprise and project architectures.

See http://www.microsoft.com/architecture/library.aspx?pid=journal.1&abver=FEEB2E89-4412-4C58-A7F8-9B2CA0E0BDAC&id=http://msdn.microsoft.com/architecture/journal/default.aspx?pull=/library/en-us/dnmaj/html/aj1entarch.asp
Posted in Agile & Architecture, Thoughts on the World | Leave a comment

Business Flexibility

Inspired by an article on Richard Veryard’s SOAPBox Blog, this piece considers the business equivalents of expansion capabilities like the spare slots in a desktop PC.

Read the full article
Posted in Agile & Architecture, Thoughts on the World | Leave a comment

Architects – Masters of Order and Unorder?

Do you work in an ordered environment, where things follow rules in a nice, predictable way? Or does your environment exhibit “unorder”, characteristics of complexity or chaotic behaviour. If the latter, you need to read this paper to understand how your domain may differ from others, and appropriate techniques to use as an architect, analyst or designer.

Read the full article
Posted in Agile & Architecture, Thoughts on the World | Tagged | 5 Comments

Domain-Specific Modelling Techniques

Sometimes formalised modelling techniques like UML are not the best solution. Microsoft have recently started talking about “Domain-Specific Languages”, specialised modelling techniques for specific tasks. My Domain-Specific Modelling Techniques page outlines some useful DSLs I have developed or discovered.

Read the full article
Posted in Agile & Architecture, Thoughts on the World | 1 Comment