As previously mentioned I want to write about my "Business Agility through Component Software" concept. This encompasses several aspects of software design and crucially includes operational considerations.
I'll be writing a series of posts covering all of this...however in true "reuse" style I want to provide a common "set the scene" post to explain the work I have been doing and give context and background to the actual post that will reference it.
I work for a Digital Media "supply chain" company. We ingest (take delivery) of media files (WMA,WMV, metadata & images) and perform a number of processing steps on them before eventual delivery to a consumer via a digital retail front end (website, WMP Online Store, gadget etc). This past twelve months I've been involved in re-developing the delivery services on our core retailer platform.
These services are used to...
All of these services are very much typical "service icebergs"...the endpoint interface is 1/9th of the implementation. Typically a service (http handler) has three or four parameters or a web service a simple object parameter with a handful of properties. Data returned is similarly pretty slim too.
The service endpoints are deployed per retailer - that is each retailer has a dedicated copy of the services; some of the services are redundant depending upon the retailer and their business model.
Overhaul...
Luckily a portion of the services were re-writes and I could learn from the mistakes made in the previous incarnation. These improvements were also incorporated into the approach/pattern/template for any new services created.
Ideas and objectives I wanted to incorporate included,
The following posts/articles I will write will cover these topic areas - some at a conceptual level, some at a technical level or combination. My objective with these articles is to evangalise about these ideas and objectives and for you to embrace them in your projects to increase business agility and software quality.
I hope you stick with it!
I'll be writing a series of posts covering all of this...however in true "reuse" style I want to provide a common "set the scene" post to explain the work I have been doing and give context and background to the actual post that will reference it.
I work for a Digital Media "supply chain" company. We ingest (take delivery) of media files (WMA,WMV, metadata & images) and perform a number of processing steps on them before eventual delivery to a consumer via a digital retail front end (website, WMP Online Store, gadget etc). This past twelve months I've been involved in re-developing the delivery services on our core retailer platform.
These services are used to...
- Deliver a media file (WMA, WMV) to a PC/Client
- Generate Windows Media Licences (rental, perpetual, subscription/chained)
- Manipulate (resize, crop, watermark etc) and deliver product images
- Subscription management (create, authorise, etc)
- Licence management (counts, reset etc)
- Product delivery manifest (download, licence, image urls, description etc)
All of these services are very much typical "service icebergs"...the endpoint interface is 1/9th of the implementation. Typically a service (http handler) has three or four parameters or a web service a simple object parameter with a handful of properties. Data returned is similarly pretty slim too.
The service endpoints are deployed per retailer - that is each retailer has a dedicated copy of the services; some of the services are redundant depending upon the retailer and their business model.
Overhaul...
Luckily a portion of the services were re-writes and I could learn from the mistakes made in the previous incarnation. These improvements were also incorporated into the approach/pattern/template for any new services created.
Ideas and objectives I wanted to incorporate included,
- Decoupling service endpoints from service implementation
- Service implementation must use dependency injection (DI) and Inversion of Control (IoC)
- Pluggable component architecture to allow customisation for retailer specific processing (using DI/IoC)
- Services must be able to provide a verbose, readable audit trail
- Use interface/behaviour driven design for components
- Understand what makes a useful design document, what level and type of information is actually useful committing to a document?
- Remove focus from data/database during design
- Utilise mock objects to provide known behaviour and improve development pace
The following posts/articles I will write will cover these topic areas - some at a conceptual level, some at a technical level or combination. My objective with these articles is to evangalise about these ideas and objectives and for you to embrace them in your projects to increase business agility and software quality.
I hope you stick with it!
Comments