Wa0011.
Wa0011.
Module-3
Software Estimation Metrics
A software metric is a measure of software characteristics which are measurable or countable. Software metrics
are valuable for many reasons, including measuring software performance, planning work items, measuring
productivity, and many other uses.
Within the software development process, many metrics are that are all connected. Software metrics are similar to
the four functions of management: Planning, Organization, Control, or Improvement.
Classification of Software Metrics
Classification of Software Metrics
1. Product Metrics: These are the measures of various characteristics of the software product. The two important
software characteristics are:
2. Process Metrics: These are the measures of various characteristics of the software development process. For
example, the efficiency of fault detection. They are used to measure the characteristics of methods, techniques,
and tools that are used for developing software.
Types of Metrics
Types of Metrics
Internal metrics: Internal metrics are the metrics used for measuring properties that are viewed to be of greater
importance to a software developer. For example, Lines of Code (LOC) measure.
External metrics: External metrics are the metrics used for measuring properties that are viewed to be of greater
importance to the user, e.g., portability, reliability, functionality, usability, etc.
Hybrid metrics: Hybrid metrics are the metrics that combine product, process, and resource metrics. For example,
cost per FP where FP stands for Function Point Metric.
Project metrics: Project metrics are the metrics used by the project manager to check the project's progress. Data
from the past projects are used to collect various metrics, like time and cost; these estimates are used as a base of
new software. Note that as the project proceeds, the project manager will check its progress from time-to-time
and will compare the effort, cost, and time with the original effort, cost and time. Also understand that these
metrics are used to decrease the development costs, time efforts and risks. The project quality can also be
improved. As quality improves, the number of errors and time, as well as cost required, is also reduced.
Advantage of Software Metrics
For analysis, comparison, and critical study of different programming language concerning their characteristics.
In comparing and evaluating the capabilities and productivity of people involved in software development.
In making inference about the effort to be put in the design and development of the software systems.
In comparison and making design tradeoffs between software development and maintenance cost.
In providing feedback to software managers about the progress and quality during various phases of the software
development life cycle.
The application of software metrics is not always easy, and in some cases, it is difficult and costly.
The verification and justification of software metrics are based on historical/empirical data whose validity is difficult
to verify.
These are useful for managing software products but not for evaluating the performance of the technical staff.
The definition and derivation of Software metrics are usually based on assuming which are not standardized and
may depend upon tools available and working environment.
Most of the predictive models rely on estimates of certain variables which are often not known precisely.
Software Project Estimation
A Software Project is the complete methodology of programming advancement from requirement gathering to testing
and support, completed by the execution procedures, in a specified period to achieve intended software product.
Software Project planning starts before technical work start. The various steps of planning activities are:
Software Project Estimation
Software Project planning starts before technical work start. The various steps of planning activities are:
The size is the crucial parameter for the estimation of other activities. Resources requirement are required based on
cost and development time. Project schedule may prove to be very useful for controlling and monitoring the progress
of the project. This is dependent on resources & development time.
Software Cost Estimation
For any new software project, it is necessary to know how much it will cost to develop and how much
development time will it take. These estimates are needed before development is initiated, but how is this done?
Several estimation procedures have been developed and are having the following attributes in common.
Where C = Costs
L= size
a and b are constants
E=1.4L0.93
DOC=30.4L0.90
D=4.6L0.26
1. Get an initial estimate of the development effort from evaluation of thousands of delivered lines of source code
(KDLOC).
2. Determine a set of 15 multiplying factors from various attributes of the project.
3. Calculate the effort estimate by multiplying the initial estimate with all the multiplying factors i.e., multiply the
values in step1 and step2.
The initial estimate (also called nominal estimate) is determined by an equation of the form used in the static single
variable models, using KDLOC as the measure of the size. To determine the initial effort Ei in person-months the
equation used is of the type is shown below
Ei=a*(KDLOC)b
The value of the constant a and b are depends on the project type.
COCOMO Model
In COCOMO, projects are categorized into three types:
1. Organic
2. Semi Detached
3. Embedded
1.Organic: A development project can be treated of the organic type, if the project deals with developing a
well-understood application program, the size of the development team is reasonably small, and the team members
are experienced in developing similar methods of projects. Examples of this type of projects are simple business
systems, simple inventory management systems, and data processing systems.
2. Semi Detached: A development project can be treated with semidetached type if the development consists of a
mixture of experienced and inexperienced staff. Team members may have finite experience in related systems but
may be unfamiliar with some aspects of the order being developed. Example of Semidetached system includes
developing a new operating system (OS), a Database Management System (DBMS), and complex inventory
management system.
3. Embedded: A development project is treated to be of an embedded type, if the software being developed is
strongly coupled to complex hardware, or if the stringent regulations on the operational method exist. For Example:
ATM, Air Traffic control.
For three product categories, Bohem provides a different set of expression to predict effort (in a unit of person
month)and development time from the size of estimation in KLOC(Kilo Line of code) efforts estimation takes into
account the productivity loss due to holidays, weekly off, coffee breaks, etc.
COCOMO Model
According to Boehm, software cost estimation should be done through three stages:
1. Basic Model
2. Intermediate Model
3. Detailed Model
1. Basic COCOMO Model: The basic COCOMO model provide an accurate size of the project parameters. The following expressions give the basic
COCOMO estimation model:
Effort=a1*(KLOC) a2 PM
Tdev=b1*(efforts)b2 Months
Where
KLOC is the estimated size of the software product indicate in Kilo Lines of Code,
Effort is the total effort required to develop the software product, expressed in person months (PMs).
For the three classes of software products, the formulas for estimating the effort based on the code size are shown below:
The first method in scheduling a software plan involves identifying all the functions required to complete the project.
A good judgment of the intricacies of the project and the development process helps the supervisor to identify the
critical role of the project effectively. Next, the large functions are broken down into a valid set of small activities which
would be assigned to various engineers. The work breakdown structure formalism supports the manager to
breakdown the function systematically after the project manager has broken down the purpose and constructs the
work breakdown structure; he has to find the dependency among the activities. Dependency among the various
activities determines the order in which the various events would be carried out. If an activity A necessary the results
of another activity B, then activity A must be scheduled after activity B. In general, the function dependencies
describe a partial ordering among functions, i.e., each service may precede a subset of other functions, but some
functions might not have any precedence ordering describe between them (called concurrent function). The
dependency among the activities is defined in the pattern of an activity network.
Project Scheduling
Once the activity network representation has been processed out, resources are allocated to every activity. Resource
allocation is usually done using a Gantt chart. After resource allocation is completed, a PERT chart representation is
developed. The PERT chart representation is useful for program monitoring and control.
For task scheduling, the project plan needs to decompose the project functions into a set of activities. The time frame
when every activity is to be performed is to be determined. The end of every action is called a milestone.
The project manager tracks the function of a project by audit the timely completion of the milestones. If he examines
that the milestones start getting delayed, then he has to handle the activities carefully so that the complete deadline
can still be met.