by Max H



Earlier this week, I attended a colloquium hosted by the Minnesota chapter of the IASA. The presenter was Roger Sessions, CTO of ObjectWatch, and the topic was “The IT Complexity Crisis”. The presentation was well-received by most of the audience, but I found myself somewhat at odds with the material.

The primary aim of the presentation was to outline a new approach to creating software architecture, which he says simplifies the architecture and reduces costs. Roger has written several books, the latest of which addresses the same topic (or so I would assume by the title, as I’ve not yet read it); and the presentation followed the same basic outline as a whitepaper that Roger authored, “The IT Complexity Crisis: Danger and Opportunity”. When it was published in November 2009, the paper drew much discussion and criticism; and I think it speaks highly of Mr. Sessions’s integrity that the download site for the paper lists many of the discussions; giving equal prominence to the critical ones as to those which are in agreement.

To cut to the chase, I do not take issue with the failure rates that were presented. I know that failure rates are high; and I’m not so much concerned with precise numbers, as with the relationship between project size and failure rates. I take him at his word on this; it corresponds closely enough with my own thoughts. I don’t take issue with the numbers used to illustrate the costs of these failures. The precise costs may or may not be estimable. Many companies simply don’t have the metrics to make decent estimates; but perhaps they can be inferred. Either way, I believe the costs are high, and while that waste contributes to IT employment, it also contributes to higher costs to taxpayers and consumers… which is a bad thing.

Where I have a problem is with the proposed solution. It’s not that I think it doesn’t work; it just seems like it’s been done before, only perhaps better… at least in some respects.

I mean no disrespect to Mr. Sessions. He is well-known and respected in the industry, he has substantial experience in business and IT architecture, and he clearly has done a great deal of study on the topic of IT Complexity. Despite his qualifications, however, it was my impression that the solutions he proposed were analogous, though somewhat inferior to, solutions that already exist. I am not the first to arrive at a similar conclusion ( see “David Sprott’s Blog”).

One of the first issues that Mr. Sessions brought up as a contributor to project failure, is mid-stream requirements changes. This is certainly an issue, and his methodology may do a little to alleviate that simply in forcing the originating organization to more closely analyze business requirements. That in itself is a tried and true method of reducing costs that is too often overlooked. However, other than that, his approach offered no real solution, just an assertion that any change would have a smaller impact due to a better defined division of responsibility. If we look at his Inter-library loan example, however, he gives us no requirements; only business functions. So let’s look at a possible requirement… “A borrower will receive a response from the lender within 30 seconds of making a request.” This requirement obviously affects at least the borrower and lender components; so I’m not sure that his approach offers any real advantage in this respect.

The first thing I noticed was that Mr. Sessions’s SIP process looks an awful lot like common use case analysis, with scenarios elaborated. In the example, his synergistic analysis really just groups the use case with its scenario dependencies. He uses this to establish the equivalent of “Knowledge Domains”, in MDA fashion. However he doesn’t continue the decomposition, instead he seems to consider the architecture to be only the top level domains. This is the first place where the approach falls down — it doesn’t decompose far enough.

Perhaps it was an ill-considered example; but the simplified “architecture” he proposed for inter-library loan was problematic. The white-paper doesn’t illustrate this as well as the slides he presented. Mr. Sessions’s SIP Generated Architecture for the Inter-library loan system resulted in three “synergy groups”, each one representing a discrete subsystem. The three components are the Borrower, the Lender, and the Inter-Library Loan Agency (ILLA). He asserts that each of these subsystems is self-contained, including a business function layer, a technical/code layer, and a data layer; and that each subsystem could be outsourced to a different vendor; and that vendor would have full latitude for all technical decisions, so long as the interfaces were met; and he stated that each vendor could select a different DBMS if they desired. In the white paper, the great simplification of his process is that the ILLA is no longer involved in the coordination of borrowing and lending; but now only maintains the catalog of available books. The presentation showed it a bit differently, in that the simplification was that it moved from a monolithic structure to a modular system of subsystems.

The first problem in the above example is that the end users aren’t Borrowers and Lenders; they are Libraries; and at any given time a library may borrow from or lend to any number of other libraries. This means that if the vendors select different database systems, as Mr. Sessions suggested they might; the Borrower and Lender subsystems will both be house in a single library using completely different codebases and completely different database systems. This is going to greatly increase operational and support costs for each of the using libraries.

The next issue I see is deployment issues. The SIP Generated architecture fails to consider that, at some point, changes will be required, and if each library has point-to-point connections with all other libraries, then interface versions must always be in sync among all sites. The design is much more robust when the ILLA brokers all transactions. The ILLA is kept up to date with any changes and can act as a communication bridge should versions get out of sync. I don’t see keeping the ILLA as a broker as being a significant contributor to complexity. Even without the point-to-point considerations, it effectively serves as a queueing mechanism, which may or may not be of value, and the added complexity is linear.

When I questioned Mr. Sessions about how his approach was superior to the use-case driven, domain oriented approach of Model-Driven Architecture, he said that MDA did not account for complexity, and in-fact had no concept of complexity. While complexity determination is not inherently required in MDA; reducing complexity is a best practice in all forms and at all levels of software development. The two most important design principles from the structured methods of the 70′s was coupling and cohesion; which are all about reducing complexity. Similarly, in the Agile/OO age, we have S.O.L.I.D. principles, several of which are about complexity reduction. As such, I don’t think it’s valid to say there is no concept of it in MDA; it’s just that the concept is assumed. Calculating or estimating complexity is something I tend to do in all of my larger modeled projects; and I do partition my designs accordingly, as I was educated to do. Most folks measure complexity less formally than Sessions suggests, but any relative measure should be equally valid. Another formalized approach is Function Point Analysis (FPA); which is widely used. There are also others, including more than a few variants of FPA; typically simplifications.

When another attendee asked Mr. Sessions about the duplication of code among systems, his response was that code re-use was not a consideration because nobody had found a way to make code re-use work anyway. While this statement at least rings of truth; it does not really address the question. I have worked on a large number of symmetric systems (as in the symmetry between borrow and lend); and almost always, both sides of the system are able to share much of the same “plumbing code” and structure. Data structure sharing is even more common. This is a form of complexity reduction. I find it difficult to accept that Mr. Sessions methodology actually creates enough efficiencies to overcome the loss of these reductions.

MDA is based upon the Shlaer-Mellor method of the early 90′s. In Shlaer-Mellor and MDA, the application is decomposed into many domains. While MDA is targetted directly for automated generation; Shlaer-Mellor was algorithmic, but automation was the pinnacle. The method embraced the concept that a domain could be produced externally or within the method, provided the interfaces and dependencies were fully defined. In Shlaer-Mellor, the first iteration looks much like SIP. The difference is that the initial domains would then be analyzed for their dependencies, which would be also organized into cohesive domains, and those domains for their dependencies, and so on, until the platform level is reached. Once the dependencies have been discovered then the interfaces are defined. At this point, each domain can be farmed out to a different group or vendor; and they can implement by any method, so long as they adhere to the interface specification. This maps well to Mr. Sessions view, except that it requires even more up front definition, and results in even smaller, but much more cohesive subsystems.

Mr. Sessions has a background in enterprise IT, while my background is primarily on the engineering side; which may account for our differing perspectives. I know that what he says is true; that large IT project fail at a rate that is functionally proportional to their size; but I don’t believe the cause of that is entirely due to complexity.

I suspect that much of the blame for IT large project failures tends to lay in the knowledge level of the average software developer. I will concede that this is not much more than conjecture on my part; and I can’t back it with numbers. It seems to me that large projects are implemented by large teams, and quite often such teams tend to be staffed with a higher concentration of less experienced developers. In addition to that, developers on the enterprise side tend to be graduates of CIS programs, where the emphasis on software design principles is less than in traditional CS programs. Hence, their designs may not scale well. The analogy that comes to mind is that of putting a home builder to work building a sky-scraper.

Embedded and process control applications, despite smaller typical sizes, can be extraordinarily complex when compared to business applications; performing complex calculations and brokering communications among several devices simultaneously, with very tight timing tolerances. Yet in my world it seems to me that the lowest success rates tend toward applications of moderate complexity. Why? My guess is that because codebase is much smaller, the highly complex projects are more often recognized as such, and the teams can be more easily staffed with more qualified personnel.

As a final point, I say again: I’m not saying Mr. Sessions’s methodology won’t work; I just believe that better methodologies exist. So why do we still have a problem? It seems that the more discipline and up-front planning a methodology requires, the less likely it is to go mainstream. It’s easier to let the planning work slip downstream for perceived short-term gains in schedule. If there is one advantage to Sessions’s approach, it is that it seems to make a clean break between the business-function allocation phase and the rest of development; and places that responsibility squarely in the hands of the customer. This means that the business analysis and high-level requirements will likely more complete than they might otherwise be.

If you wish to learn more about Roger Sessions ideas here are some more of his publications:
WhitePaper: “The IT Complexity Crisis: Danger and Opportunity”
WhitePaper: SIP Briefing: Part 1
WhitePaper: SIP Briefing: Part 2
WhitePaper: SIP Briefing: Part 3
Book: “Simple Architectures for Complex Enterprises”

So there you have it. A seasoned expert makes a well-reasoned argument with hard numbers and facts, and I challenge his conclusions with hubris, conjecture, and gut feel. It’s not rocket science, just My2Cents.

By the way — for those who are not in the know about S.O.L.I.D. design principals, I stumbled across this excellent tutorial by their creator, Robert Martin.