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.