What will the Software Architecture discipline look like in 10 years’ time?

Introduction

This is a tricky question; after all, Bill Gates himself published a book in 1995, “The Road Ahead”, where he only slightly talks about the World Wide Web:

“The Road Ahead” appeared in December 1995, just as Gates was unveiling Microsoft’s master plan to “embrace and extend” the Internet. Yet the book’s first edition, with its clunky accompanying CD-ROM, mentioned the Web a mere seven times in nearly 300 pages. Though later editions tried to correct this gaffe, “The Road Ahead” remains a landmark of bad techno-punditry — and a time-capsule illustration of just how easily captains of industry can miss a tidal wave that’s about to engulf them. (Salon.com, 2000)

Thus, trying to extrapolate our own craftsmanship up to 2016 is inherently tricky, but a nice thought experiment after all. Continue reading

A SOA Versioning Covenant

This article on TheServerSide.NET is an interesting analysis on versioning issues of SOA solutions:

A SOA Versioning Covenant

When it comes to distributed systems, versioning is always the Achilles Heel… One goal of service-oriented (SO) design is to help address the versioning issue by ensuring that every service and client of a service is an autonomous, independent entity. However, that’s only part of the story. What makes this even more interesting is that in an SO world versioning is merely a subset of a bigger issue. That issue is the fluid nature of the agreements (contracts) established between software entities. I may create a PostOrder service that accepts various different types of request, but always performs the same action. Then, I might version some of those request types. But versioning merely means that I have increased the number of overall request types – there’s really no difference between a new version of a request and a brand new request. Before I go any further, a quick disclaimer. In this entry I am talking specifically about SO design. I am not talking about n-tier or client/server design. They are totally different from SO. In an n-tier model, we’re talking about an application that is designed as a set of interrelated logical layers. Those layers are then potentially deployed on different tiers (different processes or different machines). The fact that some layers of an application are physically separated from each other doesn’t change the reality that these are just logical layers of a single autonomous entity. In this article I am discussing solutions to some serious issues in the SO world. In most cases these solutions do not apply to the n-tier world, where good solutions already exist.

(local copy here in PDF format)

About code and eggs – excuse me?

The purpose of this article is to show that the current trends in software development owe a lot to ancient mindsets, and that some good old Object-Oriented Programming (OOP) programming constructs are no longer accepted in modern business development scenarios. It serves also as an introduction to Service-Oriented Architectures (SOA), putting it into context of what has been done in the past, and what can be done in the future with it.

Continue reading

MDA, Thales, Nestle and Microsoft

I haven’t blogged for a while; I must admit that this has been a busy month. In fact until June I will be working inside one of the biggest companies on Earth: Nestle. My task, as a Software Architect, is to set up the overall architecture of a worldwide, distributed application, whose details I shall not lay down here (for I have signed a non-disclosure agreement). But I can say that this is, by far, the most exciting time of my professional life; this architecture is already the biggest challenge I have ever faced. Continue reading