In this post we look at key cost factors for developing an enterprise app and provide a quick reference for sizing the effort for developing and deploying the app. Please use this as a guideline only and actual cost may vary depending of various factors like company’s mobility strategy, experience/skill in mobility, off shore cost etc.
Now lets look at the primary cost drivers for developing and deploying an app for enterprise. There are six key cost factors to be considered.
1. Devices to be supported – various form factors like phone, tablets, special device like ruggedized device etc
2. Mobile Operating Systems to be supported – iOS, Android, Windows Phone, BlackBerry
3. Integration to Enterprise Backend – access to enterprise backends like ERP, CRM, CMS, Databases etc. that are behind the firewall
4. Native App or Cross-Platform development – Native iOS & Android vs apps developed using MEAPs (Mobile Enterprise Application Platform) or Mobile App frameworks
5. Deployment – via Apple App Store, Google Play or MAM ( Mobile App Management )
6. Support and Maintenance – is app support and enhancements required
How to size the development effort?
Having understood the key cost driving factors, now let’s start the estimate with a general thumb rule as a baseline and then consider the cost factors one by one to modify the baseline effort. For a typical sizing of effort, lets follow the general thumb rule of 25% + 50% + 25%. Use the general thumb rule, the total effort is a combination of:
1. 25% effort for UX Design and Functional Design – includes functional design, process flows, wireframes, screen mockups with HTML based clickable prototypes
While there is a base effort, the key factors that would affect the base effort are:
a. Support for multiple operating systems
More the number of operating system, typically there would be double the UX and VD effort. Efforts needs to get added for designing wireframes for different operating systems and visual assets catering to the UI guidelines of the mobile operating system. Also the support of portrait and landscape would add additional effort especially in cases where the apps transform into a different screen in portrait. As an example, in the portrait mode it could show sales numbers and in landscape mode it switches to a graphical view.
b. Support for multiple form factors table/phone
Tablet support would add UX efforts if the layout completely changes on a tablet vs phone. In addition there would be Visual Design effort to support different sizes of screens with different aspect ratios based on the screen sizes to be supported. If an iPhone app needs to be supported on iPad using “2X” option, all visual assets needs to be doubled in size and provided. So the visual design effort would get added to the base effort.
2. 50% effort for technical design and development – includes technical design, development, unit test, code reviews etc.
Here again the base effort of technical design and development would get added/modified based on a number of factors:
a. Number of mobile operating system support
Typically the development effort would repeat for each operating system you plan to support depending on the technology chosen to develop the app. In case of a cross platform development like a MEAP, there could be roughly 70-75% of effort saving depending on which MEAP is used. The usage of UI controls also plays an important factor in effort estimate. The efforts easily become overextended when custom UI are designed instead of using the native controls provided by the underlying operating system. Custom mobile menus require more polish than the built-in version. As an example, if the UI is designed with a dark iOS interface, the developer could start with a simple grouped table view in Xcode and set the new background color, but the other UI elements wouldn’t match the background colour. They need more effort in polishing the UI controls. In iOS 5, some interface elements can be given a tint. All these adds to the base effort of development. Similarly supporting portrait and landscape modes would take additional effort especially in cases where the screen transforms into a different layout all together when switched from portrait to landscape.
b. Integration to enterprise backend
This is the most important part of any enterprise mobile app and connecting to the enterprise backend is major effort driving factor. Authentication to LDAP, accessing systems behind the firewall, setting up a intermediate server in the DMZ would all add to the base development effort and also call for a new set of web services integration skills in addition to UI design. If the web services needs to be completely developed as compared to consuming existing tested web, services would all increase the development and integration effort.
3. 25% effort for integration testing, QA and deployment – includes app testing from end user perspective, mobile operating system perspective and hardware perspective. Which includes, usability testing, performance testing, security testing, end to end integrating testing with the enterprise backend.
a. Support of multiple operating system and multiple form factors would increase the testing effort as the app needs to get tested on different OS, different screen sizes ect. The test cases would get repeated of the backend integration code base is different for different operating system.
b.Integration to enterprise backend would also needs to be tested for app on each supported operating system if the integration code base is different. Here again the usage development technology plays a role. In case of MEAP, the framework would provide common code based for writing integration/source adaptors that are used across apps on different platform.
Now having understood the thumb rules, let’s review a use cased to do an effort estimate.
Use Case: An app on iOS and Android for SalesForce CRM
Please use this as a thumb rule and actual effort varies on number of factors. Expect around +-20% variance for the efforts.
This app is targeted for a sales personnel who is always on the move, uses SalesForce to update and maintain his customer data base, track leads and update the status.
Lets start with noting down the high-level requirement. Doing a white board session would help us arrive at a rough estimate on the number of main screens required to be designed for the app. Lets say 8 screens are needed to be designed. Apps needs to be developed for iPhone and Android. Support for iPad also using “2X” option.
High-level effort sizing
Lets start with a baseline of 1 week per mobile screen as a starting point for sizing the overall effort. Basic 8 screens would take 8 weeks of effort. Using our 25% + 50% + 25% thumb rule
2 weeks for UX, 4 weeks for technical design and development and 2 weeks of testing and integration. This is a good start as a base without having to go through the gory details of work breakdown structure.
Now next of level gets into the details:
UX design and Functional Design : 2 weeks of base effort
- Support for 2 operating systems would need two sets of wireframes catering to the UI guidelines of the mobile OS. Let us assume we use the same wire frames as it is an enterprise app and not a consumer app, let us not give too much importance to two sets of wire frames and do with one set for both. If the visual design need to be different then add 50% of effort i.e 1 more week. If you choose to keep the visual design also same, keep the effort same as base effort. In this case lets assume same set of visual assets too for both iOS and Android. However supporting “2X” option on iPad would need the visual assets to be created with two different sizes. So lets add 1 weeks to the base effort. The total effort would now be 3 weeks .
Technical Design and Development: 4 weeks of base effort
- Support of two operating systems doubles the development effort typically if the apps are developed using Native development languages as the app needs to be written using xCode for iOS and Android SDK for Android. So 4 weeks would become 8 weeks. Consider a case where cross platform development middleware like MEAP is used. Typically, MEAPS would save 75% of the development effort. In other words 75% of the code can be reused. So the 4 weeks effort would become 5 weeks.
- Integration to enterprise backend would again increase the effort. as in this case salesForce is a service on cloud, a lot of plumbing work in opening the firewall, authenticating to a LDAP behind the firewall etc gets avoided. Assuming web services already exists ( salesforce.com being popular cloud based CRM offering ), the web service development efforts also is not needed. However there needs to be an integration effort factored in interims of consuming the web services from the app. Lets factor in an additional 25% of development effort for web services integration with salesforce CRM. That would make the development effort to increase by 1 week.
- So in case of development using native, overall development effort would be 9 weeks and in case of development using MEAP, the overall development effort would be 6 weeks.
Integration testing, QA and deployment – 2 weeks of base effort
Usability testing on 2 different mobile operating system iOS and Android would increase the end user perspective testing effort in case of both native and cross platform app development. In case of native, 2 apps needs to be tested, so 2 weeks would become 4 weeks, whereas in cross platform ( MEAP) development, 50% efforts can be saved. Its not 75% saving in testing effort here (unlike development effort) as the app needs to get tested on different screens, different mobile operating systems though the code based is same. So the testing effort in case of cross platform development would be 3 weeks. Integrating testing with salesforce CRM would be less as the tested stable web services provided by salesforce is being used. Only the app side needs to get tested which can very well be covered by 4 weeks and 3 weeks of test effort in case and native development and cross platform development respectively.
So the total effort for the Enterprise Mobile App for Salesforce CRM would take:
Native app development: 3 weeks + 9 weeks + 4 weeks = 16 weeks of effort
Cross platform (MEAP) development: 3 weeks + 6 weeks + 3 weeks = 12 weeks.
Considering $100 for 1 hr, it would take 640 hrs and $64K cost +/- 20% for an app that is developed using native app development. For apps developed using cross platform app development like MEAP, it would take 480 hrs and $48K cost +/- 20%.