Estimation of cost, effort and schedule is a very important aspect in commercial software development and maintenance. For most types of development and maintenance, effort is usually the predominant cost driver in software development. Until recently, estimation 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 mobile and cloud has become serious business, the estimation of cost, effort and schedule requires serious attention as well.
For all types of software, the dominant determinant for effort is the size of the software. Organizations engaged in software engineering have struggled for years in search of acceptable quantitative methods for measuring process efficiency and effectiveness, and for managing software costs, for the systems they acquire, develop, enhance or maintain. One critical, and particularly elusive, aspect of this measurement requirement has been the need to determine software size. In the late 1970’s the concept of ‘functional size’ was developed, which enabled companies to build estimates on that figure before any code was written. IFPUG and Nesma established function point analysis methods to formalize the way functional size was calculated. These methods are based on the model that storage, processing and presentation of data takes place within a single application.
Mobile and cloud software use architectures in which these elements are separated. Apps present functionality to end-users without knowledge how this data has been assembled and processed and totally oblivious about where the base data might be stored. In the cloud, storage and processing of data are – at least logically – separated, offering functionality to all or authorized mobile devices by means of an API. Traditional methods to determine functional size have very limited use in these environments.
|The basic COSMIC principles|
For mobile and cloud environments the COSMIC method is well-suited to serve as a basis for estimating cost, effort and schedule. The basic principles on which the method is built, are architecture-independent. This means that all software, whether it is only a small component or a full-range business system, can be sized with this method. This size can be used to estimate the investment in money, development capacity and time to realize this software. The method is developed and maintained by an open-source community from all over the world and is actively supported by a number of companies and research institutions.
Last week, the latest book in the series on Advances in Systems Analysis, Software Engineering, and High Performance Computing was released: Modern Software Engineering Methodologies for Mobile and Cloud Environments. It also contains a chapter 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.
If you want to know more about the COSMIC method, please visit their website cosmic-sizing.org.