Mobile delivery factory: What structure should we follow? (Part 1)
Christian Karasiewicz 270005XS4E Visits (856)
This blog post is contributed by Mohamed El-Refai, Executive Architect with GBS and the Chief Architect for China GDC.
The concept of mass delivery is very enticing, but is it realistic and can it be achieved? We have not yet reached the demand that justifies that kind of delivery model, but we are quickly approaching it. With the amount of devices in the market and the technical enablement needs for consumers, it is only a matter of time until the market starts to standardize and come up with a structured way of delivering these mobile solutions faster and with higher quality.
In mass delivery, or what we call a factory model, we need to have a very structured process, module-based decomposition and specific input/output for every component we are building. The hard work is usually on integration and testing to make sure these pieces can all fit together at the end.
In mobile application development there are several models:
Apple has led mobile application development for the last several years on iOS. The application structure they use, which is based on the model view controller (MVC), has set the required level of discipline needed for mass delivery. Even with the added flexibility introduced under Android it is wise to follow MVC. This also applies to hybrid mobile application development.
So taking MVC as an assumption we can break our mobile applications into four major components:
In a factory we have different types of work cells that specialize in specific areas. I would like to think of our factory as a structured factory where there are super cells that consist of multiple smaller, more specialized cells. So if we focus on the super cells we can map these to the top-level components, and we would have a view build cell, a model build cell, a controller build cell and an interface build cell. But these cells are not enough to completely manufacture our final product; we have to first design that product, so we need a design cell. We also have to integrate all the components we are building, so we need an integration cell And finally we need to test our product, so we need a test cell.
For each of these top-level components, we can define the inputs that define its specification and the outputs that we expect to have when it is manufactured by our application delivery factory. And we can build a manufacturing line for each of these components as follows:
View component manufacturing line:
Model component manufacturing line: