Estimation for Mobile and Cloud Environments

(Extracted fromModern Software Engineering Methodologies for Mobile and Cloud Environments’)
Estimation of cost, effort and schedule is generally very important for commercial software development and maintenance. However, until recently it was not an issue for mobile and cloud software. Mobile was the domain of young developers who crafted the first version of an app and distributed it to the world. Bringing software to the cloud was usually a boardroom decision where the result was more important than the estimation of cost and effort.
But mobile and cloud are maturing as fast as they gain market share. For all business software that requires serious computing power, cloud is becoming the standard. Mobile is no longer the exclusive domain of hip young techies, since more and more business software is available on mobile platforms, backed up by the computing power of a back-office in the cloud. Now that mobile and cloud has become serious business, the estimation of cost, effort and schedule requires serious attention as well.
By far the biggest driver of effort, and hence cost, to develop all types of software is its size. Methods to measure a ‘functional’ size of software from its requirements were first developed by IBM in the late 1970’s. These methods enable companies to estimate costs before any code is written, and they are still widely used today. But the early methods were based on a model whereby storage, processing and presentation of data all takes place within a single application.
Nowadays, mobile and cloud software use architectures in which these elements are separated. Apps present functionality to end-users without knowing how this data has been assembled and processed, nor where the base data might be stored. Storage and processing of data take place in the cloud and are – at least logically – separated. Cloud functionality is offered to all or authorized mobile devices by means of standard interfaces (or API’s). The result is that modern mobile and cloud software is distributed over an architecture of multiple layers, each with its well-defined role and interfaces (see the diagram for a simplified view).
Context of cloud applications
Traditional methods of measuring functional size have very limited use in these environments.
The COSMIC method of measuring functional size (see www.cosmic-sizing.org) was designed using basic software engineering principles to be applicable to almost all types of software in any architecture. This means that all software, whether it is only a small component, all the software in a given layer, or a full-range business system, can be sized with this method. The method is thus well-suited to measure software in mobile and cloud environments and to serve as a basis for estimating cost, effort and schedule to realize such software.
The COSMIC method is developed and maintained by an open-source community and is actively supported and used by companies and research institutions all over the world.
This article is based on part of a chapter in the book ‘Modern Software Engineering Methodologies for Mobile and Cloud Environments’, Antonio Miguel Rosado da Cruz and Sara Paiva (Editors), ISBN 9781466699175 (ebook, 2016).
The chapter shows how the development and maintenance of these types of software can be estimated by using the COSMIC method. If you are responsible for estimating mobile or cloud software, this chapter will give you the basics you need, illustrated with examples.
Download the article from the Knowledge Base.