Skip to main content

Big Ball of Mud Software

In the space of Software Architecture, the “Big Ball of Mud” represents “natural growth” – or the system that just adds and changes without ANY planned architecture.  (More on the Big Ball of Mud here.)  While we hear about it, and sometimes run into it as we have to solve project problems, how do you spot a software product in that mode?

Side note… while traditionally a Big Ball of Mud is discussing gradual changes to a system or program, we also see a Big Ball of Mud in enterprise architecture in unplanned natural growth of the addition of various systems and technologies, and interfaces and interconnections between them.  While dealing with spaghetti code is tough, dealing with spaghetti connections and systems is extremely expensive and risky – but is all too frequent.

Here’s a software product conversation I had this week

 

Please wait for a site operator to respond.   You are now chatting with 'Randy'.   Your Issue ID for this chat is LTK1219208815693X

Randy: Welcome to Unnamed Product Corporation Sales Support. My name is Randy, how may I help you today?

Akiva: Hello Randy. I wish to sync Outlook between my Outlook, which is on my office network and exchange service, and an Outlook that's on an isolated (no internet connection) secure network. So my questions are:

1 – is Product the tool for this (I actually only need to sync calendar)?

2 - will I be able to install it without an internet connection (since the sync computer is on a non-internet-connected network)?

(isolated computer does have a normal USB)

Randy: Product has a feature to synchronize Outlook with a USB stick.  But to install Product Internet connection is necessary.

Akiva: would seem to reduce the value of a USB sync.  (In other words, WHY IN THE WORLD would you sync by USB stick if you have an Internet connection?)

Randy: Could you please clarify your two computers are connected to the same network?

Akiva: no they are not.  Computer 1 is a normal internet connected laptop, connecting to an exchange server in office 1.  Computer 2 is on a disconnected private network with a private exchange server, with no external network connections.

Randy: In this case the only option to synchronize your Outlooks is USB stick profile (great, this is what I want to do), but to install Product is necessary Internet connection.

Akiva: Can you please confirm that? Your download page as a link that says "Full Standalone Installation* *Internet connection is not required during installation"

Randy: Just a second.  I just talked with our technician, he confirmed that you are able to install Product without an Internet connection, sorry for the mistake.

Akiva: It's ok. However, I’m trying it – it says it requires a particular KB patch to .Net 4.0 as a supporting component - which it tries to download. and of course fails - the computer has no internet. I'm now trying to download and pre-install that component. (So tell your tech you were 1/2 right.)

Randy: You are able to download Product trial version which has 14 days trial period and try it.

Akiva: Ok, important question for the tech. When I buy it, does it require an internet connection to verify/certify/check the license id you provide?

Randy: Internet connection is required to activate your license.  Also to renew it.

Akiva: So, to confirm, you can install it stand alone but not buy it and use it that way. You have a stand alone install, but it requires an internet component to download. So... the product CANNOT be used on a stand-alone computer for sync.

Randy: Yes, you are right.  May you have more questions for now?

Akiva: Well that's just frustrating. Kind of makes the USB sync feature useless. Oh well, thanks anyway.

So what happened here?  This company developed a non-network based sync option, then later developed an internet based licensing requirement that invalidates the non-network based sync option – basically making the product useless.  I wonder if they actually sell any of these, or sell them and have people demand refunds since it effectively is useless now.  Bad planning, no overall architecture to understand the impact of one feature set on the rest of the system.

Popular posts from this blog

Integration Spaghetti™

  I’ve been using the term Integration Spaghetti™ for the past 9 years or so to describe what happens as systems connectivity increases and increases to the point of … unmanageability, indeterminate impact, or just generally a big mess.  A standard line of mine is “moving from spaghetti code to spaghetti connections is not an improvement”. (A standard “point to point connection mess” slide, by enterprise architect Jerry Foster from 2001.) In the past few days I’ve been meeting with a series of IT managers at a large customer and have come up with a revised definition for Integration Spaghetti™ : Integration Spaghetti™ is when the connectivity to/from an application is so complex that everyone is afraid of touching it.  An application with such spaghetti becomes nearly impossible to replace.  Estimates of change impact to the application are frequently wrong by orders of magnitude.  Interruption in the integration functioning are always a major disaster – both in terms of th

Solving Integration Chaos - Past Approaches

A U.S. Fortune 50's systems interconnect map for 1 division, "core systems only". Integration patterns began changing 15 years ago. Several early attempts were made to solve the increasing problem of the widening need for integration… Enterprise Java Beans (J2EE / EJB's) attempted to make independent callable codelets. Coupling was too tight, the technology too platform specific. Remote Method Invocation (Java / RMI) attempted to make anything independently callable, but again was too platform specific and a very tightly coupled protocol. Similarly on the Microsoft side, DCOM & COM+ attempted to make anything independently and remotely callable. However, as with RMI the approach was extremely platform and vendor specific, and very tightly coupled. MQ created a reliable independent messaging paradigm, but the cost and complexity of operation made it prohibitive for most projects and all but the largest of Enterprise IT shops which could devote a focused technology

From Spaghetti Code to Spaghetti Connections

Twenty five years ago my boss handed me the primary billing program and described a series of new features needed. The program was about 4 years old and had been worked on by 5 different programmers. It had an original design model, but between all the modifications, bug fixes, patches and quick new features thrown in, the original design pattern was impossible to discern. Any pattern was impossible to discern. It had become, to quote what’s titled the most common architecture pattern of today, ‘a big ball of mud’. After studying the program for several days, I informed my boss the program was untouchable. The effort to make anything more than a minor adjustment carried such a risk, as the impact could only be guessed at, that it was easier and less risky to rewrite it from scratch. If they had considered the future impact, they never would have let a key program degenerate that way. They would have invested the extra effort to maintain it’s design, document it property, and consider