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).