Thursday, February 28, 2008

Enterprise Software

I hear the term "enterprise software" used extremely "loose" in the geospatial software market. Now to elude to the term not being used "correctly"...I'm forced to define "what is enterprise software".

Here is a stab at "enterprise software" on wikipedia. I love wikipedia, but that reading is "wikidiculous". "Enterprise Software" is not defined by "solving" an enterprise (entire business level) problem, that would allow almost any software be enterprise. All business units need to "compress" files to make them smaller for distributing them in e-mail...does that make WinZip an "enterprise software"?

There are lots of search engine permutations that you can attempt to find information on "enterprise", "enterprise computing", "enterprise requirements", "what is enterprise"...all leading to a dead end of NO DEFINITION. Its strange that we can probably name 5 enterprise class softwares off the top of our head (I would say Oracle, SAP, E-Bay, Google, and of course, the Leica Image Manager). What "separates" these softwares from the non enterprise class?

...lets start with defining "properties" of enterprise software so we can come up with a "Websters-like" Dictionary definition.

1. Collaborative - all enterprise softwares are multi-user by design. The architecture must support many concurrent user connections and the ability to process each individual users requested as a single transactional unit. This multi user ability allows the users as a whole to collaborate on a single system.

2. Security - all enterprise softwares have security, it is inherent in supporting many concurrent users. In general, if you don't log into it, it's probably not an enterprise software. We can argue public web services and their classification as "enterprise", but we'll get to that later.

3. Scalable - all enterprise system are scalable, meaning they have the ability to increase or decrease with the demand on the system. There are IT standards that define "scalability" as well. You probably hear the words real application clusters (RAC) or GRID or High Performance Computing (HPC). IT wants to use clearly defined and market accepted scalability techniques, meaning if you design your own "scalability", your trying to make something enterprise that is not meant to be.

4. Compatible - Enterprise systems must be compatible with many IT standards in today environments. Operating systems, databases, hardware configurations, virtualization, transport protocols (TCP, IPv6, etc), web protocols, etc., etc. They must also pass some criteria of being "modern" in terms of support development languages and customization techniques (nobody buys COBALT or COM solutions anymore). So enterprise system have an architecture that supports deployment on any type of "server".

5. Standards - Enterprise software must be build on standards, not only IT standards, but in the geospatial market, ISO interoperability standards and OGC application profile standards. It is these standards that standardize the data into something "usable" by other systems (not a stovepipe) and enable any business system who want to consume GI with standard interpretable services and data without the requirement to deploy massive SDK's and middleware.

So lets collate our findings:

Enterprise Software is secure and collaborative software, scalable with IT standard technologies, compatible with IT standard technologies.

A good exercise is to look at your software and see if it "fits" into this definintion!

No comments: