Wednesday 22 November 2006

So, what IS 'enterprise'?

Time to bite the bullet, I guess. What do we mean by 'enterprise'?

Consulting the Oracle, more formally known as Wikipedia, we find, in the Enterprise software entry:

Enterprise application software is application software that performs business functions such as accounting, production scheduling, customer information tracking, bank account maintenance, and the like. It is almost always hosted on servers, and is used by multiple employees of the same organisation. It can also be any software application hosted on a server which simultaneously provides services to a large number of users, typically over a computer network. This definition contrasts the more common single-user software applications which run on the user's own local computer, and serve only one user at a time.

Actually, y'know? That's not bad. The first half is the 'traditional' definition of 'enterprise', perhaps, but I want to zoom in on the bolded sentence: "It can be any software application hosted on a server which simultaneously provides services to a large number of users, typically over a computer network.". The main reason I'm aiming for that is that it then covers not only internal CMS's, publishing applications and the like, but also end-user facing systems (such as, for example, Amazon or Flickr).

Let's take that second sentence as our prototype definition, and dissect it to see what it implies. I'm very aware that I'm reaching, just a touch, with some of this, but it's a very good jumping off point to allow us to reach a definition of 'enterprise'.


"...software application..."

It may seem odd to pick this one out, but bear with me. Implicit in this is the concept that it's something you can point at and say "this was built to do X". In and of itself, that's perhaps not much, but what follows on from this is: its functionality is well defined, and from there, it's a very short leap to saying it is designed using good software engineering principles.

"... hosted on a server..."

Instantly this implies it has a client/server architecture of some sort. Maybe its true that most of such applications will have a web browser as their client, but let's not assume that: a mail server is just as clearly an enterprise application.

"...simultaneously provides services... "

I dunno about you, but to me that screams a requirement that the software is thread and transaction safe - no one user's changes should be able to overwrite another's.

"... to a large number of users..."

Following on from thread and transaction safety, that adds to our requirements the obvious one that it must be scalable.

"... over a computer network..."

Again, a little bit of a stretch, but that phrase should ring alarm bells in any sysadmin's head. It should be secure against unauthorised use.



How's that?

No comments: