Software metrics and measurements (BILAL AHMED)
Measurements and Metrics A measurement is an indication of the size, quantity, amount or dimension of a particular attribute of a product or process. For example the number of errors in a system is a measurement.
A Metric is a measurement of the degree that any attribute belongs to a system, product or process. For example the number of errors per person hours would be a metric.
Thus, software measurement gives rise to software metrics.
Metrics are related to the four functions of management:
Metric Classification Software metrics can be divided into two categories; product metrics and process metrics.
Product metrics are used to asses the state of the product, tracking risks and discovering potential problem areas. The team’s ability to control quality is assessed.
Process metrics focus on improving the long term process of the team or organisation.
Goal Question Metric(GQM)
The GQM, developed by Dr. Victor Bossily defines a top-down, goal oriented framework for software metrics. It approaches software measurement using a three level model; conceptual, operational, and quantitative. At the conceptual level, goals are set prior to metrics collection. According to the GQM organizational goals are understood to shape project goals. Organizational goals may be set by upper management or by organization stakeholders. To establish Project goals Brainstorming sessions by the project team may be used. At the operational level, for each goal question(s) are established which when answered will indicate if the goal has been achieved. Finally, at the quantitative level, each question has a set of data associated with it which allow it to be answered in a quantitative way. File:Gqm.jpg
The GQM is described as a seven step process. (Some authors give a different number of steps, leaving out step 7 or merging two steps into one). The first three steps are crucial and correspond to the main activities at each level in the model as described above.
Step 1. Develop a set of Goals
Develop goals on corporate, division, or project level. These goals can be established from brainstorming sessions involving project team members, or they may be set by organisational goals or from stakeholder’s requirements.
Step 2. Develop a set of questions that characterise the goals.
From each goal a set of questions is derived which will determine if each goal is being met.
Step 3. Specify the Metrics needed to answer the questions.
From each question from step two it is determined what needs to be measured to answer each question adequately.
Step 4. Develop Mechanisms for data Collection and Analysis
It must be determined:
- Who will collect the data?
- When will the data be collected?
- How can accuracy and efficiency be ensured?
- Who will be the audience?
Step 5. Collect Validate and Analyse the Data.
The data may be collected manually or automatically. Metrics data can be portrayed graphically to enhance understanding.
Step 6. Analyse in a Post Mortem Fashion
Data gathered is analysed and examined to determine its conformity to the goals. Based on the findings here recommendations are made for future improvements.
Step 7. Provide Feedback to Stakeholders
The last step, providing feedback to the stakeholders is a crucial step in the measurement process. It is essentially the purpose behind the previous six steps. Feedback is often presented in the form of one goal per page with the questions, metrics and graphed results.
Metrics in Project Estimation
Software metrics are a way of putting a value/measure on certain aspects of development allowing it to be compared to other projects. These values have to be assessed correctly otherwise they will not give accurate measurements and can lead to false estimations, etc.
Metrics are used to maintain control over the software development process. It allows managers to manage resources more efficiently so the overall team would be more productive. Some examples of metrics include Size Projections like Source Byte Size, Source Lines of Code, Function pointers, GUI Features and other examples are Productivity Projections such as Productivity Metrics.
The metrics can be used to measure size, cost, effort, product quality of a project as well as putting a value on the quality of the process taken and personal productivity. There are certain factors that have to be taken into account when comparing different projects with each other using metrics. If one project has was written in a different language then the number of lines of code could be significantly different or perhaps the larger project has many more errors and bugs in it. Measurements such as Function Pointers give a better indication because they are the actual methods that are in the project rather than the amount of lines.
Using metrics companies can make much better estimations on the cost, length, effort, etc of a project which leads to them giving a more accurate view of the overall project. This better view will allow the company to bid for projects more successfully, make projects more likely to succeed and will greatly reduce the risk of late delivery, failure, being penalized for late delivery, bankruptcy, etc.
The processes that manage the project and its code can have issues such as build failures, patches needed, etc that can affect the software metric’s measures. By using ISO 9000 this can help alleviate these issues.
For smaller companies where customer retention is important, using metrics to better the software development process and improve on overall project quality, delivery time, etc will make the customers happy which may lead to continued business.
Source Byte Size
Source Byte Size is a measure of the actual size of the source code data (e.g. in Kilobytes). It measures the file size vs. packages, classes, methods, etc.
The overall byte size of the project can be estimated which would give a better indication of the type/size of hardware needed to use the software. This becomes an issue on systems/devices where they are of a limited nature (e.g. watch, washing machine, intelligent fridge, etc)
The byte size of the source code would vary greatly depending on which programming language was used to develop it. For example a program developed in Java could be much smaller than the same program coded in COBOL.
Software Engineering Productivity
Projecting productivity is all about measurements. In general these measurements involve the rate at which a software engineer produces software and the accompanied documentation. While quality is also an important aspect of the produced software the measurement is not quality oriented. In essence the goal is to measure the useful functionality produces in a unit of time.
Metrics on productivity come in two main categories.
- Size of product based on some output from the software process. i.e.. lines of delivered source code, object code instructions, etc.
- Function-related measurements based on the functionality of the deliverables. This is expressed in so called “Function-points”.
Function points are determined on the basis of a combination of programmer characteristics such as external inputs and outputs, user interactions, external interfaces and files used by the system followed by associating a weight with each of these characteristics. Finally a “function point count” is computed by multiplying each raw count by the weight and summing all values.
Challenges in Software Metrics
The biggest challenge that lie in measures is mainly the estimation process of the size, the total elapsed time assigned to programming. In addition it can be difficult to define elements such as “a line of code”, “Programs to determine part of the system”.
If we were to compare executable byte size of programs written in different languages we would see that there would be a difference too. The compiler compiles source code into byte code so different compilers would give out different executable file sizes.
As more development is done and the project increases, the overall byte size of the project increases. This will give estimations on how much space is needed to store, backup, etc the source files and also the size of transfers over the network. Although this is not much of a problem these days with the cost of storage, transfer bandwidth, etc being so cheap, it is a metric that can be used for this type of estimation (storage).
As the byte size builds up, searching and indexing will take slightly longer every time it increases.