Software product branding involves change
in the labels, images & user messages that contain brand specific words
and/or product functionality remaining the same. And branding is product
marketing strategy for many companies. Branding also involves inclusion or
exclusion of certain product features across different brands. This depends on
your brand requirements. In this article I’m going to talk about how software
products are built for different brands from developers’ perspective.
What is a brand?
Brand is a company’s image; brand evolves from hard and
sustained work by the company. When customers start using a brand of products
and are delighted with it, then the company has successfully created a brand
and earned the customers; they start looking for products with the same brand
because they have trust on the brand now. This is how companies build brand
promise to the customers. Companies have brand promises in different regions of
the world. A company brand which is popular in one country or region may not be
popular in other countries. And hence it becomes important to brand your
product to different brands for different regions.
How to brand a
software product?
To understand this better, let’s us understand what is a
software product line. The software brands are made out of a single software product line. Wiki defines software product line as “a set of software-intensive systems that
share a common, managed set of features satisfying the specific needs of a particular
market segment or mission and that are developed from a common set of core
assets in a prescribed way”. For a
developer it means that it’s a common software product source code from which
various products can be built. This is best explained by seeing how software
for different mobile handsets is maintained. There are many phone models and
there may not be different source code bases for each model but a single
software line and an infrastructure to compile and build for different models.
The phone software for different features like camera, audio player etc is a
reusable asset. While building software for a phone model that does not support
camera feature, the build process needs to have infrastructure to exclude the
camera feature. Read below to understand how we can include or exclude product
features while building the software for brands.
Software Brand
Requirements
List all the brands you are going to support and collect the
branding requirements. Yes, there will
be branding requirements; probably the marketing people will be able to provide
these requirements. For example, what
name the product is going to be called in each brand. In my case this was true
because the product name was being called wasn’t really explain what the
product is going to be all about. As I said earlier in this post, for certain
brands, we may have to disable/remove certain product features. All these
variations are collected as brand requirements before starting the brand work.
Brand build
infrastructure
There are two parts, the first part is to process all the
labels, as best practice all the labels/user messages are stored under a
resource file and this resource file is processed to change the labels as per
the brand requirements. The second part is to add/remove or disable/enable the
product features across the brands. The first part can be achieved through
simple word processing script, kind of find and replace utility. The build tool
ant does this or else you can write your own logic (kind of utility program) to
process the resource file. The second
part is to handle variations in product features across different brands. For
achieving this, we may have to modify the source code files like .java, .cpp,
.xml files. For example, we may have to remove a piece of code or include
another piece of code (The code that is required for a specific product
feature) based on the brand that we are building. To handle the source code file variations
effectively we can use available tools used to manage Software Product Lines.
The one I used is BigLever SoftwareGears. I found this tool very useful while dealing with source code files
variations. The gears tool actuates the
source code as per the selected brand. Let me quickly explain how gears modify
the source files. The Gears tool requires the source code files to mark with
something called blocks. It has different syntaxes for different types of files
(ex: java, xml files).
No comments:
Post a Comment