So I'm confused. Nothing new there but I went to a Softricity presentation the other day (a very neat piece of technology by the way) where the presenter said that Softricity was "Software as a Service". Well to me it was more of a software deployment and management technology, a very smart deployment tool but not what I thought of as "software as a service". I then had a think about what I think of as "software as a service" and how that is different from other names for software and services delivery such as outsourced, managed service, on demand, terminal server, hosted service, application service provider (ASP), utility computing etc. I ended up very confused so went to my favorite source for technical definitions, wikipedia, and looked up the definitions on there but was no wiser at the end.
We have a couple of very smart guys in my group (Fred Chong and Gianpaolo) who are working on Software as a Service and who have written some great papers about it so I went and had a look at their definitions but feel that they rather skipped over the issue of SaaS in the wider sense. Back to square one.
So what I need to understand software and service delivery is some sort of taxonomy or model which covers all the possibilities and that I can map the present wooly names into and give some examples of. I sat down this morning and tried to come up with such a model.
First the issue is what is being delivered, software or services (that are implemented as software). Clearly if software is being delivered then its about the movement of code over a network and this is software deployment such as is done by SMS (or softricity). To me this is not software as a services, it's software deployment or software on demand.
If we look at services being delivered then we have a source, a destination and a transmission medium. I think we can safely assume that most of the delivery methods we are interested in today are on a network, either internal or the internet.
There seem to be three places that we can deliver services too, the business part of an enterprise, third party organizations (suppliers, agents, ect) and consumers. The difference between the users of the service is mainly to do with access and billing control rather than any architectural principle so I will lump these together as service consumers.
The service users can consume the service as either a web application, a smart web application (ajax), a smart clients application or a p2p application. Again this becomes mainly about software delivery rather than service delivery so I lump these together as clients.
The really interesting part of Software as a Service is the supply of the service. This can be from a IT organization within the enterprise (Client server or terminal services), from a software Hosting organization (managed service), a software supplier or a certification supplier (for P2P apps).
There are then a set of types of service which can be supplied such as basic service (domain names, web pages), standard services (mail, search), specialized services (CRM, ERP, collaboration) or custom services (enterprise specific applications).
Hence we can produce a table of the types of service delivered against the delivery sources to describe a MultiChannel Service Delivery model (MCSD):
|Internal IT||Software Hoster||Software Supplier|
|Standard||CS / TS||Managed Service||SaaS|
|Specialized||CS / TS||Managed Service||SaaS|
|Custom||CS / TS||Outsourced||None|
Works for me anyway.