02 November 2007

Specification and Instance in SID

SID uses extensively the concepts of “Specification” and “Instance”. The Specification provides the definition of the concept, whether it be a Product Offering, Resource or even Customer Facing Service (CFS), whilst the Instance allows as the name indicates allows individual instances of the specification be identified and linked, where appropriate to a particular Customer Account.

The Specification is easy to understand if you think of your car; every component in the car has a part number. The part number for, say the silencer (muffler), is the same for every car of the same year, model and manufacturer as your car. This allows you to go to the car parts shop and buy a new one. The silencer you buy will also have a serial number on it which is unique to that particular silencer, no other silencer with that part number will have the same serial number. So the part number identifies the Specification and the serial number identifies the Instance.

It is fairly easy to see how this model extends to customer equipment like a SIM card or handset. For example, each handset has a unique serial number (in the case of GSM handsets, the IMEI) and is identified by a part number, or name such as Motorola Raza or Nokia 6300. However this notion extends to Product Offering which is a specification of the Offering and Product Subscription which is the instance of a Customer’s use of the Product Offering and down to Installed Customer Facing Service which is the instantiation of the CFS (which is a specification too).

When defining a specification for a piece of equipment like a handset there are a set of properties that all handsets have, like

  • Weight
  • Talk time
  • Size
  • Colour
  • Frequency band

as well as the capabilities of the handset, such as Bluetooth, camera, tones, MP3 player etc etc. So we can define a set of parameters relevant to the Resource Specification and then for a particular model define a set of Parameter Values (e.g. 100 grams, 4 hours, 10x5x1 cm, silver, 1800 MHz) that define the model.

We can then extend this idea to CFS where we can, for example, for “Voice Mail” (a CFS) we can define a set of parameters like

  • Language
  • Personalised greeting
  • Message capacity
  • Message latency, etc
that are relevant to Voice Mail and then when a Customer (or more correctly End User) personalises his Voice Mail we can define the particular values he/she has chosen against the Installed CFS.

This is a very powerful way of defining both the capabilities of services, products and hardware and recording the particular parametrisation relevant to individual customer's usage of them.

2 comments:

Wedge Greene said...

I like to think of this as the specification is “metadata” and the Instance is physical or logical information. Another way of seeing this is the specification is immutable characteristics and the Instance is arbitrary characteristics. The specification tells what it is and the instance tells which it is and via associations how, where, and why it is. The specification and the instance are “dependent” on the core entity.

Unknown said...

I have to say that the hardest part of implementing the SID is to know what goes where and how the specification is instansiated to he real instance.

If I take the ProductOffering, it has a ProductSepcification that might have ProductCharacteristic(s) and ProductCharacteristicValue(s). That is all fine but then when we instansiate it what information is transferred to the product in the installed base.

As I see it the Product that a subscription has will contain just the values ProductCharacteristicValue(s) that are specific for the different ProductCharacteristic(s) that made up the product specification I guess. But on the other hand there will be attributes in the ProductSpecification class that are not specification values so where do they go into the product? Do we create a specific product for each ProductSpecification that mimics the specifications structure or what?

Another thing is pricing on products. We have a ProductOfferingPrice that specifies what the offering will cost the subscriber if he/she buys it. But we also have price on ProductSpecification. So I dont understand how the final price off the product is defined. I guess the service will go through all the prices on all levels and decide on a final price by creating a number of ProducPrice instances or?


As I see it for someone to start using SID he/she first has to solve the basic understanding how it will be implemented. And the documentation is poor to say the least. I would want practical case-studies but no such luck :-. ANyways any thoughts on this by the gurus on this blog?