In every single project that we develop, we need to be measured. Nowadays
customers need to know that what they are buying has the quality they need,
otherwise they cannot use it and they will not buy it. For example, when you are
intended to get a new car, you look for the one that meets the requirements,
while you are doing that, you can check at the measures of every car in order to
know whether it is helpful for you or not.

Software development is not the exception, even though software is
completely different from any other discipline, this means that we
cannot have references from previous work, because every time that
you are developing a new project , the requirements are different,
therefore the time, the resources needed and the cost is going to be
different, software needs to be measured. A customer cannot be sure if
the project has quality or simply solve the main problem unless there
are some measures that evaluate these characteristics, and here is
when the problem arises.


Software Measurements are extracted from data, this is measuring software
processes and source codes, in order to identify areas of the code where you
need to work.
The most common examples of software metrics are the following:
• Lines of code
• Number of classes & interfaces
• Code to comment ratio
• Code coverage
• Bugs to lines of code ratio
• Cohesion
• Coupling
• Failed tests per build
• Version control commits per day
As it was mentioned above, software metrics are a very important
instrument for developing software the main purpose is to let
programmers monitor and control software production, however, it is
very difficult to do it in an accurate way. As it was stated in [1]
“Practitioners want short-term, useful results. Their projects are in trouble
now, and they are not always willing to be a testbed for studies whose results
won’t be helpful until the next project”, it is hard to establish software measures
if we do not have anything to measure indeed. Although it might look insignificant, measurement helps us to see where we are within a project and
hopefully to update our estimates.



Last year I work for a company doing security application and solutions for
banking and government companies, because we are talking about information
security issues, we had to be extremely carefully about compliance and use a
security checklist. Thus, the projects were mostly large-scale software projects.
At the very beginning, the company did not have any methodology for software
measures, as the time went by, the customers started to ask for a way to
evaluate the projects. At this point, the company had to implement a
methodology for the subsequent projects. The first try, it failed because nobody
in the company knew how to follow the methodology.
After some time, the company had to invest resources and time explaining the
personal how to follow and how to execute the methodology.
In most companies this might look as a waste of time and money, because they
do not like to invest without a reason, but the truth is that at the end, you save
more money and increase profits, because in the following projects it was so
much easier to work on the projects while increasing productivity and reducing
costs. And also it was a way to guarantee the customers that the solution meets
the requirements.


Software metrics are usually used to measure some aspects associated with
software development. These aspects may include estimation, detection and
prevention of issues, product assessment, etc. Their utilization within a
measurement framework and the use of automated tools can help towards
development process control and higher quality software.



[1] S.L. Pfleeger, R. Jeffery, B. Curtis, B. Kitchenham. “Status Report on Software
Measurement.” IEEE Software, March/April 1997
[2] R.J. Offen, R. Jeffery.” Establishing Software Measurements Programs”, IEEE Software,
March/April 1997.