Cost Estimation Methods For Software Engineering

114
Cost Estimation Methods For Software Engineering By Andre Ladeira Dissertation submitted in partial fulfillment of the requirements for the degree Magister lngeneriae in Engineering Management In the faculty of Engineering at the Rand Afrikaans University Supervisor: Prof L Pretorius January 2002

Transcript of Cost Estimation Methods For Software Engineering

Page 1: Cost Estimation Methods For Software Engineering

Cost Estimation Methods

For Software Engineering

By

Andre Ladeira

Dissertation submitted in partial fulfillment of the requirements for the degree

Magister lngeneriae in

Engineering Management

In the faculty of Engineering

at the

Rand Afrikaans University

Supervisor: Prof L Pretorius

January 2002

Page 2: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Executive Summary

This dissertation summarizes several classes of software cost estimation models

and techniques. Experience to date indicates that expertise-based techniques

are less mature than the other classes of techniques (algorithmic models), but

that all classes of techniques are challenged by the rapid pace of change in

software technology. The primary conclusion is that no single technique is best

for all situations, and that a careful comparison of the results of several

approaches is most likely to produce realistic estimates.

As more pressure on accurate cost estimation increase, research attention is

now directed at gaining a better understanding of the software-engineering

process as wall as constructing and evaluating software cost estimation tools.

This dissertation evaluated four of the most popular algorithmic models used to

estimate software cost (SLIM, COCOMO II, Function points and SLOC)

This dissertation also provides an overview of the baseline cost estimation model

tailored to these new forms of software engineering. The major new modeling

capabilities are an adaptable family of software sizing models, involving Function

Points and Source Lines of Code. These models are serving as a framework for

an extensive current data collection and analysis effort to further refine and

calibrate the model's estimation capabilities.

Page 3: Cost Estimation Methods For Software Engineering

Index

Chapter 1

Cost Estimation Methods for Software Engineering

Introduction .......................................................................... &

1.1. Background to the problem .................................................................... 6

1.2. Background literature ............................................................................. 6

1.3. Problem Statement .............................................................................. 10

1.4. Research objective .............................................................................. 11

1.5. Conclusion ........................................................................................... 11

Chapter 2

Estimation Processes ....................................................... 12

2.1 . Software Cost ...................................................................................... 12

2.2. Software Cost Estimation Process ....................................................... 13

2.3. Estimation and the software process ................................................... 13

2.4. Inputs and Outputs to the Estimation Process ..................................... 15

2.5. The Estimation Process ....................................................................... 19

2.6. Timing of the estimates ........................................................................ 21

2.7. Estimation Constraints .......................................................................... 22

2.8. Data gathering ..................................................................................... 24

2.9. Problems with the Cost Estimation Process ......................................... 25

2.1 0. Problems with Requirements ............................................................... 26

2.11. Conclusion ........................................................................................... 28

Chapter 3

Size Estimation .................................................................. 30

3.1 Lines of code ........................................................................................ 30

3.2 Function Point Analysis ........................................................................ 34

3.3 Conclusion ........................................................................................... 42

2

Page 4: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Chapter 4

E:!itirrlettiC>rl ~E!tll()cJ!i .......................................................... 44

4.1. Software Life-cycle Management (SLIM) method ................................ 44

4.2. Constructive Cost Model (COCOMO II) ............................................... 49

4.3. Expertise-Based Technique ................................................................. 57

4.4. Cost Estimation method ....................................................................... 59

4.5. Conclusion ........................................................................................... 61

Chapter 5

Case Stucty ......................................................................... 64

5.1 Project description .............................................................................. 64

5.2 Project Size estimation ....................................................................... 64

5.3 Effort estimation .................................................................................. 66

5.4 Conclusion .......................................................................................... 70

Chapter 6

Conclusions a net Recorr1rt1enctations .............................. 71

6.1 Conclusions ........................................................................................ 71

6.2 Recommendations .............................................................................. 73

6.3 Further Investigation ........................................................................... 76

References ............................... Error! Bookmark not defined.

~IC>!iSCir)f ............................................................................. ~~

3

Page 5: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Appendix A ......................................................................... 82

Scaling Drivers ........................................................................... 86

Appendix 8 ......................................................................... 85

Architecture I Risk Resolution ....................................................... 89

Appendix C ......................................................................... 86

Team Cohesion .......................................................................... 90

Appendix 0 ......................................................................... 86

Process Maturity ......................................................................... 90

Appendix E ......................................................................... 87

Product Complexity ..................................................................... 91

Appendix F ......................................................................... 88

Effort multipliers .......................................................................... 92

Appendi>e c:J ...•••••••.........••.........•••............•••..........••••.......... !JE;

Nu Metro Server Technical Specification .......................................... 99

List of figures

Figure 1.1: Influencing factors to be evaluated to produce an accurate estimate .9

Figure 1.2: Information to be used to predict scenarios on future projects ......... 10

Figure 1.3: Estimation principle .......................................................................... 11

Figure 2. 1: Classical view of software estimation process ................................. 16

Figure 2.2: Actual cost estimation process ......................................................... 18

4

Page 6: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Figure 3.1: Definition checklist for source statements counts ............................. 32

Figure 4.1: Rayleigh curve ................................................................................. 44

List of tables

Table 1.1: Project levels of complexity ........................................................ 8

Table 3.1: Function point complexity matrix ................................................ 37

Table 3.2: Function point complexity-weight matrix ..................................... 37

Table 4.1: Rating scheme for the COCOMO II scale factors ........................... 55

Table 4.2: Effort multipliers cost driving rating for the post-architecture model. .. 58

Table 4.3: Early design and post-architecture cost driver .............................. 57

5

Page 7: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Chapter 1

Introduction

1.1. Background to the problem

"If there is one management danger zone to mark

above all others, it is software cost estimation."

Robert Glass - Building Software Quality

The reason for the strong emphasis on software engineering cost estimation is

that it provides the vital link between the general concepts and techniques of

economic analysis and the particular world of software engineering. There is no

good way to perform a software cost-benefit analysis, breakeven analysis, or

make-or-buy analysis without some reasonably accurate method of estimating

software engineering costs, and their sensitivity to various product, project, and

environmental factors. Software engineering cost estimation techniques also

provide an essential part of the foundation for good engineering management.

Cost in a project is also due to the requirements for software, hardware and

human resources. The bulk of the cost of software development is due to the

human resources needed, and most cost estimation procedures focus on this

aspect. Most cost estimates are determined in terms of person-months (PM).

1.2. Background literature

As the cost of the project depends on the nature and characteristics of the

project, at any point, the accuracy of the estimate will depend on the amount of

reliable information that is available about the final product [4][27]. When the

project is being initiated or during the feasibility study, the analysts have only

6

Page 8: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

some idea of the data the system will get and produce and the major functionality

of the system. There is a great deal of uncertainty about the actual specifications

of the system. As the user specifies the system more fully and accurately, the

uncertainties are reduced and more accurate cost estimates can be made.

Despite the limitations, cost estimation models have matured considerably and

generally give fairly accurate estimates.

By far, the project sizing technique that delivers the greatest accuracy and

flexibility is function point analysis [24]. Based upon logical, user-defined

requirements, function points permit the early sizing of the software problem

domain. In addition, the function point methodology presents the opportunity to

size a user requirement regardless of the level of detail available. An accurate

function point size can be determined from the detailed information included in a

thorough user requirements document, or an adequate function point size can be

derived from the limited information provided in an early proposal.

An alternative sizing method is counting lines of code [20]. It dependent upon

information that is not available until later in the development life cycle. Function

points accurately size the stated requirement. If the problem domain is not clearly

or fully defined, the project will not be properly sized. When there are missing,

brief, or vague requirements, a simple process using basic diagramming

techniques with the requesting user can be executed to more fully define the

requirements.

In addition to the project size, project complexity must be properly evaluated

[Matson]. To some extent, complexity levels are evaluated by 14 general system

characteristics:

• Data communication

• Distributed data processing

• Performance

• Heavily used configuration

7

Page 9: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

• Transaction rate

• Online data entry

• End-user efficiency

• Online update

• Complex processing

• Reusability

• Installation ease

• Operational ease

• Multiple sites

The assessment of a project's complexity should also take into consideration

complex interfaces, database structures, and contained algorithms. The

assessment of complexity can be based upon five varying levels of complexity as

shown in table 1.1 :

Level1: Simple addition/subtraction Simple logical algorithms Simple data relationships

Level2: Many calculations, including multiplication/division in series More complex nested algorithms Multidimensional data relationships

Level3: Significant number of calculations typically contained in payroll/actuarial/rating/scheduling applications Complex nested algorithms Multidimensional and relational data relationships with a significant number of attributive and associative relationships

Level4: Differential equations typical Fuzzy logic Extremely complex logical and mathematical algorithms typically seen in military/telecommunications/real-time/automated process control/navigation systems Extremely complex data

LevelS: Online, continuously available, critically timed Event-driven outputs that occur simultaneously with inputs Buffer area or queue to determine processing priorities Memory, timing, and communication constraints

Table 1.1: Project levels of complexity [19]

8

Page 10: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

The capability to deliver software is based upon a variety of risk factors that

influence a development organization's capability to deliver software in a timely

and economical fashion. Risk factors include such things as the software

processes that will be used, the skill levels of the staff (including user personnel)

who will be involved, the automation that will be utilized, and the influences of the

physical (development conditions) and business environment (competition and

regulatory requirements). In fact, numerous factors influence our ability to timely

deliver software with high quality. Categorized in Figure 1.1 are some examples

of influencing factors that must be evaluated to produce an accurate estimate.

MANAGEMENT DEFINITION DESIGN • Team Dynamics • Clearly Stated • Formal Process • High Morale Requirements • Rigorous reviews

• Project Tracking • Formal Process • Design Reuse

• Project Planning • Customer • Customer

• Automation Involvement Involvement

• Management • Experience Level • Experience Skills • Business Impact Development Staff

• Automation

BUILD TEST ENVIROMEMENT • Code Review • Formal Testing • New Technology

• Source Code Methods • Automated Tracking • Test Plans Process

• Project tracking • Development Staff • Adequate Training • Project Planning Experience • Organizational • Automation • Effective Test Dynamics

• Management Tools • Certification Skills • Customer

Involvement

Figure 1.1: Influencing factors to be evaluated to produce an accurate estimate [19].

This information can be used to predict and explore "what-if' scenarios on future

projects (see Figure 1.2).

9

Page 11: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Estimate Project Completion

Access: Size \ ~ Complexity Size Influence ,__~ Rate of delivery •, ..... ~ Complexity

Factors Influence Factors

Select a baseline profile

Baseline of Performance

Create Profile Rate of Delivery Time to Market

Defects

Figure 1.2: Information to be used to predict scenarios on future projects

An organization should develop profiles that reflect the rate of delivery for a

project of a given size, complexity, and risk factors [12].

1.3. Problem Statement

At the core of the estimating challenge are two issues [14]: the need to

understand and express (as early as possible) the engineering problem domain,

and the need to understand the capability to deliver the required software

solution within a specified environment. Only then it will be able to accurately

predict the effort required to deliver a project.

The current engineering problem domain can be defined simply as the scope of

the required software. The problem domain must be accurately assessed for its

size and complexity. To complicate the situation, experience tells that at the point

in time that an initial estimate is required (early in the system's life cycle) it cannot

be presumed that all the necessary information is available. Therefore, there

must be a rigorous process that permits a further clarification of the problem

domain.

An effective estimating model considers three elements: size, complexity, and

risk factors. When factored together, they result in a more accurate cost estimate

(see Figure 1.3).

10

Page 12: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Definition

~ ( Project Size ) *

\~

Project Complexity

Capability

* ( Risk Factors = ~

Figure 1.3: Estimation principle

1.4. Research objective

The objective in this dissertation is as follows:

Estimates -Schedule -Effort -Costs

• Determining the software engineering cost estimation principle and

process.

• Investigating different size estimation methods and determining the

difference between the different methods.

• Investigating different effort estimation methods or techniques and

determining the difference between the methods or techniques.

1.5. Conclusion

The structure of the research dissertation will be as follows:

• Chapter two will cover a comprehensive literature review of the subject

matter and related fields.

• Chapter three will cover an investigation into two different size estimation

methods (function points calculation and source line of code count).

• Chapter four will cover an investigation into three different effort and cost

estimation methods used in the software engineering industry.

• Chapter five will cover a case study where the estimated methods were

used.

• Chapter six contains the conclusion and recommendations on the findings

made.

11

Page 13: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Chapter 2

Estimation Processes

2.1. Software Cost

Despite the terminology, software engineering cost does not refer directly to a

monetary value associated with software development. Such a value is almost

impossible to arrive at and not always useful. The questions are "What's the

effort involved?" and "How long will it take?" The answers to these two questions

can then be translated to the monetary value. This leads to the following

definition of software cost.

Software cost consists of three elements [9]:

• Manpower loading is the number of engineering and management

personnel allocated to the project as a function of time.

• Effort is defined as the engineering and management effort required to

complete a project, usually measured in units such as person-months. The

types and the levels of skills for the resources influence the cost of the

project.

• Duration is the amount of time (usually measured in months) required to

complete the project.

Arriving at a cost estimate involves using a number of different factors to try to

determine the overall cost of a system. Deciding which factors to include and

combining them to arrive at the estimate make up the engineering cost

estimation process that is defined as follows [14]:

Direct costs include items such as analysis, design, coding, testing and

integration. Depending on who is doing the engineering and why, software cost

12

Page 14: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

may also include a number of other items such as training, customer support,

installation, level of documentation, configuration management, and quality

assurance.

2.2. Software Cost Estimation Process

A software cost estimation process is the set of techniques and procedures that

an organization uses to arrive at a software cost estimate. Generally there is a

set of inputs to the process (e.g., system requirements) and an output of effort,

manpower loading, and/or duration.

It is very difficult to examine the software cost estimation process without the

overall context of the software development process in use within a given

organization.

The set of procedures, techniques, and standards that an organization uses for

organizing, managing, and controlling software development projects is called

the software process.

Organizations have different software processes, depending on the type of

software they are developing. For many organizations, the development process

is very informal; in other cases it is well documented and stringently monitored.

2.3. Estimation and the Software Process

Cost of a project can be estimated for a number of reasons. Why it is done is an

important factor in determining when and how it is done. The reasons why a cost

estimation process is undertaken include the following [14]:

• Project approval. For every project there must be a decision by the

organization to undertake the project. Such a decision requires an

estimate of the money and resources required to complete it.

13

Page 15: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

• Project management. Project managers are responsible for planning and

control of projects. Both activities require an estimate of the activities

required to complete a project and the resources required for each activity.

• Project team understanding. For members of a project team to work

together more efficiently on a project, it is necessary that each one

understand his/her role in the project and the overall activities of the

project. A project task definition, which can be used for this purpose, is

generated by a cost estimate.

The "why" of the cost estimation process can be any of the above reasons and is

one of the factors determining when the estimate is done. Project approval

requires estimates to be performed very early in the project life cycle, often

before requirements have been clearly specified. The project approval process

typically has a number of points where a "go/no go" decision must be made. At

each of these points, an estimate may be required to permit management to

make the decision. Early in the project life cycle, these may be approximate order

of magnitude estimates sufficient to allow the organization to determine whether

they should continue to look at a project. Late in the project, management can

get much more detailed estimates of cost to completion in order to decide

whether to cancel an ongoing project.

For managing and understanding a project, an estimate can be done early in the

development of the project to arrive at an initial estimate, and then repeated on a

regular basis during development to keep the estimate current [1][2][3]. For

these estimates the prime concern is not necessarily the absolute "cost," but the

estimated set of tasks required to complete the project, the results of each of

these tasks, how these tasks fit together, and the resources required to complete

each task.

14

Page 16: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Re-estimates are required throughout the development cycle regardless of why

the estimate is done. As a project progresses, more information is available on

the product and the process being used to develop it. This information can be

used to increase the accuracy and detail of the estimate.

2.4. Inputs and Outputs to the Estimation Process

The software cost estimation process computes a set of outputs as a function of

a set of inputs. The inputs to the estimation process depend on when the

estimate is being performed. Very early estimates are necessarily based on

sparse and incomplete data regarding the project and the development process.

Preliminary estimates are needed before requirements are known or architecture

has been defined [22]. Such estimates will necessarily be based on sketchy data

and will not have a high degree of accuracy. Estimates performed late in the

development cycle are based on a much wider set of information. Computing

cost to completion late in the development cycle allows a great deal of project

and process information to be used. Given that more information is available,

more detailed estimates can be made, which have a much greater degree of

accuracy than the initial estimates.

Most models of cost estimation view the estimation process as being a function

computed from a set of cost drivers. These drivers are assumed to be the

characteristics of a system that determine the final cost of production. In most of

the advocated cost estimation techniques, the primary cost driver is assumed to

be the software requirements [2][3][1 0]. In this model of software cost estimation

(illustrated in Figure 2.1 ), the requirements are the primary input to the process

and form the basis for the estimate. The estimate is then adjusted according to a

number of other cost drivers (such as experience of personnel and complexity of

system) to arrive at the final estimate.

15

Page 17: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

In this classical view, the effort, duration, and loading are computed as fixed

numbers (perhaps with tolerances), or a set of relationships between the values

is given, allowing managers to trade off costs in order to minimize any of the

three values.

Cost drivers

Requirement

Other cost drivers

Software cost estimation process

Figure 2.1: Classical view of software estimation process [22]

Loading

In fact, the cost estimation process can be much more complex than that

portrayed in Figure 2.1. There is interdependency between many items of

information, all of which are relevant to the cost estimation process (Figure 2.2).

Many of the data items that are inputs to the cost estimation process are

modified and output by the process. Thus, rather than viewing the cost estimation

process as a function of the requirements, it is often more accurate to view this

process as trying to satisfy a set of constraints. The inputs to the system are a

set of constraints on the requirements, software architecture, financial resources,

etc., while the outputs are a cost estimate and a set of assumptions that satisfy

all the constraints.

This view allows the constraints to be imposed on any of the factors that affect

the cost. These factors range far beyond requirements to include issues such as

delivery date, finances and software process.

Requirements are viewed as constraints that must be satisfied. In a few cases,

these requirements are fixed, complete, and correct. In most cases, however,

16

Page 18: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

during estimation the estimator detects inconsistencies and ambiguities in the

requirements. As part of the estimation process, the estimator will resolve some

of these ambiguities by imposing new constraints on the requirements. In other

cases, the problems with the requirements remain, with a corresponding affect

on the accuracy of the estimate.

Financial, calendar, manpower, architectural, and software process constraints

are also significant to the cost estimation process. Financial, calendar, and

manpower constraints limit the amount of resources that can be allocated to a

project. Financial constraints limit the amount of money that can be budgeted for

the project; calendar constraints specify a delivery date that must be met; and

manpower constraints limit the number of people that can be allocated to the

project. For example, if a fixed amount of money is available for a project, then

the estimated cost should satisfy this financial constraint, perhaps by varying the

functionality.

The software architecture defines the different components used to construct the

system and the interrelationships between these components. The stage in the

development life cycle determines whether the software architecture is a factor

for the estimation process. For example, maintenance organizations that are

working with an existing system are constrained to use the existing architecture

and can base their estimates on this architecture.

The cost estimation process for new development may not make any

assumptions on the software architecture and base the estimate entirely on the

basis of system functionality. For many larger contracts, the software process

becomes one of the constraints that must be satisfied by the estimating process.

Many organizations have within their software process a standard Work

Breakdown Structure (WBS), which defines the tasks to be performed to

complete a project. Frequently, the estimating process will be working under the

17

Page 19: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

constraint that the standard WBS must be used for a project. The estimating

process will then tailor the WBS to the specific project, adding sufficient detail.

For example, one situation where constraints to the software process affect the

estimation process is the requirement to develop according to the ISO 9000

standard. Significant cost is incurred by adhering to this standard; for small

changes, ISO 9000 can actually be the dominant cost factor. When estimating a

system developed to this standard, estimators must be aware of the cost incurred

by use of the standard.

Cost drivers

Cons1raints

Other inputs

Vaque requirements

Other cos drivers

Sofhvare cost estimation process

Figure 2.2: Actual cost estimation process [22]

Less vaque (and modified) requirements

Loading

Contingency

Tentative WBS

Less fuzzy architecture

Aside from the various constraints, other factors that must be included as part of

the estimation process are the risks associated with the project. These risks

could include, for example, dependency on outside contractors, lack of

experience in the application domain, etc. These risk factors should be identified

18

Page 20: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

as early as possible in order include them in the decision making and project

management processes.

2.5. The Estimation Process

An estimate is arrived at by taking the identified constraints, applying the

estimation process, and generating results that satisfy all the constraints. A

variety of techniques are used by different organizations to arrive at these

estimates. The processes used can be classified as either model based or

analogy based.

Model-based estimation builds a costing model of system development based on

the characteristics of the system being built, the process being used to build it,

and it's the development environment.

A model can be a formal mathematical model or a set of informal guidelines used

by an estimator. Informal models are used by experienced developers who have

gained sufficient knowledge about system development by working on previous

projects. The informal model used by such an estimator is expressed as a set of

"rules of thumb" or, at an even more primitive level, as a "gut feel" [30]. When

questioned as to how they developed their model and how they apply it,

estimators are usually unable to say exactly what it is they do. It appears to be an

issue of gaining the required experience in order to arrive at accurate estimates.

Formal models attempt to quantify all inputs to the cost estimation process, and

then apply a set of equations that describes the relationships between the inputs

and the outputs of the cost estimation process. The equations are developed

through analysis of historical data and must be calibrated to each individual

development environment. The best known formal models are Boehm's

COCOMO II [2][4] function points, and Putnam's application of Rayleigh curves

to the development process [27].

19

Page 21: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

The usual method of applying the formal model is to transform the requirements

into a measure of the "size" of the system. This size measure, which can be

either SLOG (Source Lines of Code) or FPs (Function Points), is used as the

basis for creating the cost estimates. The estimator can also quantify a set of

other cost drivers, examples of which include:

• Product attributes, e.g., required reliability, product complexity, etc.

• Computer attributes, e.g., memory constraints.

• Personnel attributes, e.g., applications experience, programming language

experience.

These cost drivers become multipliers that can be used to increase or decrease

the initial estimate. The bulk of the current literature and research on cost

estimation is devoted to formal models, particularly as relates to new system

development [2][4][27].

Analogy-based estimating processes estimate costs by comparing the current

development project with previous development projects undertaken by the

organization. An analogy-based technique requires maintenance of a history of

past projects; this information can be used as a reference point. Past projects

with properties similar to the current project are identified and their costs used as

a basis for estimating the current project.

At the most informal-level of analogy based techniques, the history of past

projects is maintained in the estimator's memory. Finding past projects with

properties similar to the current project involves the estimator thinking of similar

project and what cost was involved in those projects. Such an approach is highly

dependent on the memory of the individual estimators and a very low employee

turnover.

The analogy-based approach can be made more rigorous in a number of ways.

The history of past projects can be maintained as a computerized database, with

20

Page 22: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

detailed metrics and descriptions of characteristics recorded for each project.

Using a historical database, an estimator can query the database searching for

projects with similar characteristics and then base the estimate on actual costs

and process of the previous projects. Such an approach avoids the fallibility of

human memory and provides a much more detailed historic record of what

occurred in the course of a project [9].

2.6. Timing of the estimates

Estimation is not a task done once, at the beginning of a project. Rather,

estimates and re-estimates are undertaken throughout the life of a project

[7][8][10]. The success of an estimator is not necessarily the accuracy of the

initial estimates, but rather the rate at which the estimates converge to the actual

costs. The timing of estimates depends on the type of organization involved and

why the estimate is being performed.

Contractors usually perform two estimates early in the development life cycle.

The first is done to prepare a bid for the contract, usually in a relatively quick

fashion, with the objective of arriving at a winning bid. The timing of this bid is

very much dependent on the procuring agency that issues the Request for

Proposal (RFP). The contractor is required to generate an estimate at this point,

basing it on information within the RFP and obtained informally from the

contracting agency.

Upon winning a bid, most contracting organizations immediately undertake a

second, more detailed, estimation process. The objective of this estimate is to

develop a more accurate and detailed cost estimate and project plan which are

based on the previous estimate and WBS. Frequently, much discussion between

the contractor and the agency is necessary to deal with previously undetected

issues and problems in the requirements.

21

Page 23: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

2. 7. Estimation Constraints

An estimation process involves arnvmg at an estimate that satisfies the

constraints. These constraints vary depending on the timing of the estimate and

the organization performing the estimate, but can include:

• System requirements.

• Delivery date.

• Financial.

• Manpower resources.

• System architecture.

• Software process.

When preparing a bid to develop new software, a contracting organization is

usually faced with constraints on system requirements, delivery date, manpower

resources, and software process. Depending on the system under construction,

constraints may be placed upon the architecture. The constraints on the

requirements of the system vary considerably among projects. Some projects

have requirements which are well understood and well documented within the

RFP. In these cases, the constraints on the requirements are well understood by

all parties involved. However, in many cases, requirements are not clearly

understood up front, or are flexible in terms of the actual functionality to be

delivered as part of the end product.

Delivery date and financial resources are constraints that are very firm and have

a large impact upon a contractor's preparation of a bid for estimation purposes.

There are two reasons that these constraints are imposed upon contractors.

First, the procuring agency has a budget and timetable, which they are under

pressure to meet and which they are not willing to exceed. Second, there will be

competing bids submitted.

22

Page 24: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Once the bid has been won, the contractor performs another more detailed

estimate [8][10]. This estimate is in many ways more realistic because there is

less pressure to satisfy financial constraints; it is usually done by the project

manager to determine how much the system is really going to cost. Although

financial constraints affect the process, the manager usually defines in much

more detail the functionality of the system and the process used to develop the

system. This results in a more accurate estimate and can determine whether the

system may be built for the contracted price.

Re-estimates done by contractors during development involve modifying the

duration, effort, and functionality. As understanding of the tasks increases, more

accurate estimates can be made regarding effort and duration. As the

requirements of the system are better understood, they can be re-estimated and

appropriate modifications made to the effort and duration estimates.

From a procuring agency's perspective, estimates are performed under a

different set of constraints. Project Directors try to balance the following

constraints while getting approval for the project:

• Financial. How much money is the organization willing to put into this

project?

• Calendar. When do I have to show results to keep management satisfied?

• Requirements. What is the functionality required of the system?

Each of these constraints has a different level of priority, depending on the

particular project. Once project development begins, control of the project passes

from the Project Director to the Project Manager (PM). At this point budgetary

approval has been received and all previous estimates are considered to be cast

in stone. Thus, here is great pressure on the PM not to change any of the

previous estimates.

23

Page 25: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

The PM must decide in what order to sacrifice the financial, calendar, and

requirements constraints. Different PMs have different approaches; generally

they try to maintain the functionality of the system, but let either the calendar or

financial constraints slip. In reality, however, it appeared that if the original

estimates were incorrect, all of the constraints were affected.

2.8. Data gathering

It seems obvious that without knowledge of the past, it is impossible to predict

what may happen on future projects. (Even with knowledge of the past, there is

still no guarantee 1that the future can be predicted.) A corollary is that if an

organization wants to improve its cost estimation process, should gather relevant

data on previous projects.

The simplest way to gather data is to have a stable work force so that project and

process data are maintained in the memory of the individuals of the organization.

The individuals can then use this information to estimate costs of other projects.

However, relying on individuals' imperfect memories is barely sufficient for small

projects; for large projects it is completely inadequate.

Even if this information is gathered, it is often done for financial purposes and is

not used by software managers to estimate the cost of future projects. There are

a number of reasons why this data may not be useful [27][30]:

• The data is not accurate. If the primary perceived purpose of time sheets

is to monitor the staff, the accuracy of the figures in the time sheets must

be questioned.

• The data is not accessible. Often time sheets are gathered for the benefit

of the financial department rather than to assist estimators. Thus, they are

kept on systems not easily accessible to estimators, or worse, are simply

stored as m asses of paper files.

• The data is not broken down in a useful way. The overall cost of a project

has a limited usefulness. What is usually of more interest to an estimator

24

Page 26: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

is how the project was broken down into activities and the cost of each of

these individual activities.

2.9. Problems with the Cost Estimation Process

What factors make software cost estimation difficult? There are situations where

a high level of accuracy in cost estimation can be found; many of these situations

were identified by the following characteristics [3]:

• The users are experienced in the system, know what they want, and can

express what they want.

• The requirements are clear, precise, correct, and complete.

• The project duration is short.

• The manpower loading is small.

• The people doing the estimation are experienced in the application

domain and have developed similar systems.

• The development environment and development process are familiar to all

people involved.

• Staff turnover is low both among the developers and the users.

• No unfamiliar software or hardware from outside suppliers is to be

integrated with the final product.

A project satisfying the above characteristics frequently resulted in accurate

cost estimates. However, most of the projects did not satisfy the above

conditions and therefore the estimates produced were not accurate. The

characteristics needed for accurate estimates can be reversed in order to

enumerate problems leading to inaccurate estimates:

• Problems with the requirements.

• Issues in maintenance.

• Procurement process.

• System size.

• Software process and process maturity.

• Monitoring progress of the project.

25

Page 27: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

• Lack of historical data.

• Lack of application domain expertise.

• Embedded software.

2.10. Problems with Requirements

Almost universally and without exception, organizations blame problems with the

requirements as a major reason why cost estimates were inaccurate. The

problems are numerous: incomplete, ambiguous, inconsistent, incorrect, and

incomprehensible.

The problem of users not understanding the requirements existed for all types of

systems and all types of developments. For new development projects, users

would request systems (and quotes) before there was a complete understanding

of the problem or the solution.

Cost estimates can be made without a clear understanding of the requirements

of the system being built; it must be accepted that these estimates have a very

high likelihood of error.

Requirements creep. As projects progress and the knowledge of the problem

increases, it seems inevitable that users (and developers) request more and

more features and changes to be included in the product. Thus, over the

development of the project, new features work their way into the requirements,

leading to "requirements creep" (or, as Boehm described it, "requirements

gallop"). New feature requests come from many sources and for many reasons,

but the problem seems to be universal. Correct and complete requirements for

complex systems are impossible to achieve. A fact that must be accepted is that

a complete statement of the requirements cannot be defined before development

begins [14]. This has nothing to do with the competence of the users or the

developers but rather is inherent in the nature of complex computer system

26

Page 28: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

applications. Unless the system being developed is almost identical to a

previously developed system, the requirements will invariably be wrong and/or

incomplete. As a project evolves, users and developers gain a better

understanding of the problem and of the solutions. As people gain a better

understanding of the problem being solved the requirements evolve.

One frequent assumption is that the requirements will be firm before

development begins. Anyone working under this assumption will meet serious

problems when trying to estimate software costs accurately.

Since the requirements are probably wrong or incomplete, it is unlikely that the

estimates based on those requirements will be accurate. If the requirements are

included as part of the RFP put out by a procurement agency and a contractor is

expected to submit a firm bid based on those requirements, a frequent result

later in the development stages is confrontation between the contractor and the

agency as they argue over the meaning of each requirement and the cost

associated with the changing requirements.

Long development time, leading to requirements that are obsolete before the

system is delivered [8][10]. The rate of change in technology is so fast that any

attempts to predict what the technology will be in a few years are doomed to

failure. As the technology changes, so do the range of solutions to problems, and

the users' expectations of the solutions. Projects with a long time between

initiation and expected delivery suffer in that the solution is usually obsolete by

the time it is delivered. The customer is dissatisfied because the product does

not satisfy the new requirements. Large staff turnover for end users, resulting in

changing requirements as new staff arrive. Developing software systems

requires a consistent users' base throughout the development cycle. If the users'

base changes too frequently, requirements continually change, and it is difficult

for developers to obtain consistent answers and comments from the end users.

27

Page 29: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

2.11. Conclusion

All private businesses have two concepts in common. These are

• Ensure that a profit is made

• Ensure their survival

To ensure that this happens, all projects taken on must ensure that the business

is not worse of than when started with the project. This can be accomplished

when the initial cost estimate is complete and accurate.

To determine the cost of a software project, being low level software integration

or high level web page development, the process is no different. The estimation

process has many unknown factors that must be determined before the

estimation process can be started. The following factors must be considered

• The software process. Most software engineering firms or companies

have a different management methodology on developing software. These

differences can influence the cost estimation processes. There can be

more documentation or formal processes that must be completed before

the development process can move into the next step.

• There are more inputs to be considered than in previous year of software

cost estimation. Previously the only considerations taken into account was

were the system requirement and cost drivers. Today there are more

factors to consider. Some of them are the company software process,

financial constraints, risk factors and the specific software architecture

• System requirement. In some cases the required software to be

engineered is a new system based on new technology released. There is

no data or experienced manpower available. A steep learning curve must

be taken into consideration.

Another obstacle in the cost estimation process is the specific requirements set

by the client. In many cases these requirements are vague, incomplete and

28

Page 30: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

ambiguous. The system analyst or project manager must set up a task team to

determine the complete and correct requirements. This process can be time

consuming and sometimes expensive.

Time brackets allocated for request for proposal (RFP) are inadequate. The

project manager or the specific member assigned with the RFP must create a

cost estimation with the vague information supplied. This in turn may cause that

the estimation process is inaccurate.

These obstacles can be resolved by firstly estimating the size of the project with

available requirement. Different size estimation methods are available; the most

popular methods are the counting of source lines of code and function point

counting.

These methods will be discussed in more detail in the next chapter. The goal of

the chapter is to determine what method would be best suited for one of the

biggest obstacles, accurate estimations with limited requirements.

29

Page 31: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Chapter 3

Size Estimation

3.1 Lines of code

The traditional size metric for estimating software development effort and for

measuring productivity has been lines of code (LOC). A large number of cost

estimations models have been produced, most of which are functional lines of

code, or thousands of lines of code (KLOC). The definition of KLOC is important

when comparing these models. Some models include comment lines, and others

do not. Similarly, the definition of what effort (E) is being estimated is equally

important. Effort may represent only coding at one extreme of the total analysis,

design, coding and testing effort at the other extreme. As a result, it is difficult to

compare these models.

The abbreviation NCLOC is used to represent a non-commented source line of

code. NCLOC is also sometimes referred to as effective lines of code (ELOC).

NCLOC is therefore a measure of the uncommented length.

The commented length is also a valid measure, depending on whether or not line

documentation is considered to be a part of programming effort. The abbreviation

CLOC is used to represent a commented source line of code [11]

By measuring NCLOC and CLOC separately the total length can be defined:

Total length (LOC) = NCLOC + CLOC Equation 3.1

KLOC is used to denote thousands of lines of code.

A logical source statement has been chosen as the standard line of code.

Defining a line of code is difficult due to conceptual differences involved in

30

Page 32: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

accounting for executable statements and data declarations in different software

languages. The goal is to measure the amount of intellectual work put into

program development, but difficulties arise when trying to define consistent

measures across different languages.

To minimize these problems, the Software Engineering Institute (SEI) definition

checklist for a logical source statement is used in defining the line of code

measure. The Software Engineering Institute (SEI) has developed this checklist

as part of a system of definition checklists, report forms and supplemental forms

to support measurement definitions [12][20].

Figure 3.1 shows a portion of the definition checklist as it is being applied to

support the development of the COCOMO II model. Each checkmark in the

"Includes" column identifies a particular statement type or attribute included in the

definition, and vice-versa for the excludes. Other sections in the definition clarify

statement attributes for usage, delivery, functionality, replications and

development status.

There are also clarifications for language specific statements for ADA, C, C++,

CMS-2, COBOL, FORTRAN, JOVIAL and Pascal.

31

Page 33: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Definition Checklist for Source Statements Counts

1•11~ !<kal ~nun:t· litH.·~

LH;.tkal ·mlllT\' .. t:iknwut' Statenwn! type

Vtlt~P:"? a ,Jnp or stntA't)£..:~: t";Ottt;;'lt:?S nlOt8 th"~'! t>ne :ypit. t~ta:;.:;.d~< ;: ~3> Nte lypB< ·/r:U: tr-t: n:gtJ?St J:! t!' ... >:den<:t:,

1 Ex>>cutablo?:

2 Noru,;,x<'::vt<ib!oi:i 3 Df?cJar,1tlons

4 C<;I!IPII,-r (hrectiv"'" !) Comrnt?nts

On !h&lr v.vn hn<'s f

8 g

ClftlinBs ·hith S(lUh~"> cod;, Banwtrs and m>t1·1Aant; SfMCt.:r::.

B!;mk 1 .;;mpty) .:::ornmt'nts

10 BL:mk llm:-s

Hmv produced 1 Pn)\1! arm tM:>d

[),:.1u1ition

:? (71\on;:.r.atf.td wlt11 :;ourcof!o ~~<)fle \JRn;,r-.tors 3 Conv•:rted mth <Jlllf.lmat.;:d transli:ltrm; 4 CopiBd m reused ,.;ithNJt ch;ul(!*

5 l'.k:-dified

On!,nn De!irulion ! N;:.w v.'0rk no prk>r ;:,xlf.Jfii!C;:.

2 !Ynor wo1k: !ake-n or <~<lapted from 3 A, f•tB'ViOtJ$ vBr$iOn bvHd, 01 t~h;asi1

4 \>>mmerd$11. <>ff-the-~he!f soft-v:,~re (COTS> •:.th&r than ht>r<~riBS S Gt•\'ernnwnt fumrsh,;d &<•ft·Nnm ·GFSJ t:>lher thrn1 tBur,.;; hhr:~rins 6 Another product 7 A v.;;ndor-suppl~d h1t1quage support llhrDry (lmmodified! 8 A ve-uda·supphed t>pet.:1tin9 ::;y::;tem vr ttti!!ly o_vnrn<Y.htte\l.' g A lo::ri1 or modified !l'lnlJH<'H~e support hor,~ty or or:-F<ralh'l\') system iO Cltllt-r cummtm:10! hbrary i'l A reuse library (Softwani df<si(lned for ret;so:,• 12 Other t;ofl•f;drt:: compon•:nt <X l!brm,·

i3

14

Figure 3.1: Definition checklist for source statements counts [4]

Some changes were made to the line-of-code definitions that depart from the

default definition provided in [20]. These changes eliminate categories of

32

Page 34: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

software which are generally small sources of project effort. Not included in the

definition are commercial-off-the-shelf software (COTS), government furnished

software (GFS), other products, language support libraries and operating

systems, or other commercial libraries. Code generated with source code

generators is not included though measurements will be taken with and without

generated code to support analysis.

There are a number of problems with using LOG as the unit of measure for

software size. The primary problem is the lack of a universally accepted definition

for exactly what is a line of code really is.

Another difficulty with lines of code as a measure of system size is its language

dependence. It is not possible to directly compare project development by using

different languages.

Still another problem with the lines of code measure is the fact that it is difficult to

estimate the number of lines of code that will be needed to develop a system

from the information available at requirements or design phase of development

[7][8].

If cost models based on size are to useful, it is necessary to be able to predict

the size of the final product as early and accurately as possible. Unfortunately,

estimating software size using the lines of code metric depends so much on

previous experience with similar project that experts can make radically different

estimates.

Finally, the lines of code measure places undue emphasis on coding, which is

only one part of the implementation phase of a software development project. It

is stated that coding accounts only for 10% to 15% of the total effort on a large

engineering system. It is also questioned whether the total effort is really linearly

dependent on the amount of code [28].

33

Page 35: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

3.2 Function Point Analysis

The function point cost estimation approach is based on the amount of

functionality in a software project and a set of individual project factors

[3][17][15]. Function points are useful estimators since they are based on

information that is available early in the project life cycle.

Software engineers have been searching for a metric that is applicable for a

broad range of software engineering environments. The metric should be

technology independent and support the need for estimating, project

management, measuring quality and gathering requirements. Function Point

Analysis is the measure that accomplishes all these requirements.

There have been many misconceptions regarding the appropriateness of

Function Point Analysis in evaluating emerging environments such as real time

embedded code and Object Oriented programming. Since function points

express the resulting work-product in terms of functionality as seen from the

user's perspective, the tools and technologies used to deliver it are independent.

Introduction to Function Point Analysis

One of the initial design criteria for function points was to provide a mechanism

that both software engineers and users could utilize to define functional

requirements. It was determined that the best way to gain an understanding of

the users' needs was to approach their problem from the perspective of how they

view the results an automated system produces. Therefore, one of the primary

goals of Function Point Analysis is to evaluate a system's capabilities from a

user's point of view. To achieve this goal, the analysis is based upon the various

ways users interact with computerized systems. From a user's perspective a

system assists them in doing their job by providing five (5) basic functions. Two

of these address the data requirements of an end user and are referred to as

34

Page 36: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Data Functions. The remaining three addresses the user's need to access data

and are referred to as Transactional Functions.

Function point calculations

Function points (FP) measure size in terms of the amount of functionality in a

system. Function points are computed by first calculating an unadjusted function

point count (UFC). Counts are made for the following categories [Fenton]:

Internal Logical Files - The first data function allows users to utilize data they

are responsible for maintaining. For example, a pilot may enter navigational data

through a display in the cockpit prior to departure. The data is stored in a file for

use and can be modified during the mission. Therefore the pilot is responsible for

maintaining the file that contains the navigational information. Logical groupings

of data in a system, maintained by an end user, are referred to as Internal

Logical Files (ILF).

External Interface Files - The second Data Function a system provides an end

user is also related to logical groupings of data. In this case the user is not

responsible for maintaining the data. The data resides in another system and is

maintained by another user or system. The user of the system being counted

requires this data for reference purposes only. For example, it may be necessary

for a pilot to reference position data from a satellite or ground-based facility

during flight. The pilot does not have the responsibility for updating data at these

sites but must reference it during the flight. Groupings of data from another

system that are used only for reference purposes are defined as External

Interface Files (ElF).

The remaining functions address the user's capability to access the data

contained in ILFs and EIFs. This capability includes maintaining, inquiring and

outputting of data. These are referred to as Transactional Functions.

35

Page 37: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

External Input - The first Transactional Function allows a user to maintain

Internal Logical Files (ILFs) through the ability to add, change and delete the

data. For example, a pilot can add, change and delete navigational information

prior to and during the mission. In this case the pilot is utilizing a transaction

referred to as an External Input (EI). An External Input gives the user the

capability to maintain the data in ILF's through adding, changing and deleting its

contents.

External Output - The next Transactional Function gives the user the ability to

produce outputs. For example a pilot has the ability to separately display ground

speed, true air speed and calibrated air speed. The results displayed are derived

using data that is maintained and data that is referenced. In function point

terminology the resulting display is called an External Output (EO).

External Inquiries - The final capability provided to users through a

computerized system addresses the requirement to select and display specific

data from files. To accomplish this a user inputs selection information that is used

to retrieve data that meets the specific criteria. In this situation there is no

manipulation of the data. It is a direct retrieval of information contained on the

files. For example if a pilot displays terrain clearance data that was previously

set, the resulting output is the direct retrieval of stored information. These

transactions are referred to as External Inquiries (EQ).

In addition to the five functional components described above there are two

adjustment factors that need to be considered in Function Point Analysis.

Functional Complexity - The first adjustment factor considers the Functional

Complexity for each unique function. Functional Complexity is determined based

on the combination of data groupings and data elements of a particular function.

The number of data elements and unique groupings are counted and compared

to a complexity matrix that will rate the function as low, average or high

36

Page 38: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

complexity. Each of the five functional components (ILF, ElF, El, EO and EQ)

has its own unique complexity matrix.

Tables 3.1 shows the complexity rating matrix for the different categories

calculated.

For ILF and ElF For EO .and EQ ForEI

Record Data Elements File Data Elements File Data Elements

Elements 1 - 20 - 51+ Types 1 - 6- 19 20 + Types 1 - 5 -19 50 5 4 15

1 Low Low Avg 0 or 1 Low Low Avg 0 or 1 Low Low

2-5 Low Avg High 2-3 Low Average High 2-3 Low Avg

6+ Avg High High 4+ Avg High High 3+ Avg High

Table 3.1: Function point complexity matrix [11]

Table 3.2 shows the complexity weight matrix that must be applied after the

function points have be categorized and complexities determined.

Function Type Complexity-Weight

Low Average High

Internal Logistic Files 7 10 15

External Interfaces Files 5 7 10

External Inputs 3 4 6

External Outputs 4 5 7

External Enquiries 3 4 6

Table 3.2: Function point complexity-weight matrix [11]

All of the functional components are analyzed in this way and added together to

derive an Unadjusted Function Point count (UFP).

37

16 +

Avg

High

High

Page 39: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

UFP= ~X *W ~ 1 1 Equation 3.2

Where Xi is the specific number for specific function type andWi is the complexity

weight value listed in table 3.2

Value Adjustment Factor

The Technical complexity factor (TCF) is when the Unadjusted Function Point

count is multiplied by the second adjustment factor called the Value Adjustment

Factor. This factor considers the system's technical and operational

characteristics and is calculated by answering 14 questions [1 ][29]. The factors

are:

• Data Communications. The data and control information used in the

application are sent or received over communication facilities.

• Distributed Data Processing. Distributed data or processing functions are

a characteristic of the application within the application boundary.

• Performance. Application performance objectives, stated or approved by

the user, in either response or throughput, influence (or will influence) the

design, development, installation and support of the application.

• Heavily Used Configuration. A heavily used operational configuration,

requiring special design considerations, is a characteristic of the

application.

• Transaction Rate. The transaction rate is high and influences the design,

development, installation and support.

• On-line Data Entry. On-line data entry and control information functions

are provided in the application.

• End -User Efficiency. The on-line functions provided emphasize a design

for end-user efficiency.

• On-line Update. The application provides on-line update for the internal

logical files.

38

Page 40: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

• Complex Processing. Complex processing is a characteristic of the

application.

• Reusability. The application and the code in the application have been

specifically designed, developed and supported to be usable in other

applications.

• Installation Ease. Conversion and installation ease are characteristics of

the application. A conversion and installation plan and/or conversion tools

were provided and tested during the system test phase.

• Operational Ease. Operational ease is a characteristic of the application.

Effective start-up, backup and recovery procedures were provided and

tested during the system test phase.

• Multiple Sites. The application has been specifically designed, developed

and supported to be installed at multiple sites for multiple organizations.

• Facilitate Change. The application has been specifically designed,

developed and supported to facilitate change.

Each component is rated from 0 to 5, where 0 means the component has no

influence on the system and 5 means the component is essential [26]. The

technical complexity factor (TCF) can then be calculated as [19]:

TCF = 0.65 + 0.01 (LFi) Equation 3.3

Where Fi is the function counts determined in the initial analysis process. The

TCF can range from 0.65 to 1.35 because a figure of 0.65 would result if all the

complexity factors had no influence, and a figure of 1.35 would indicate all the

complexity factors had a significant influence.

Each of these factors is scored based on their influence on the system being

counted. The resulting score will increase or decrease the Unadjusted Function

Point count by 35%. This calculation provides us with the Adjusted Function

Point count. The final function point figure can then be calculated [Matson]

39

Page 41: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

FP=UFP*TCF Equation 3.4

Function Points as a Sizing Metric

Function points are a synthetic method, much the same as square feet or meters

that permit the calculation of a relative size for individual software projects,

applications, or subsystems even in their early requirements stages. Function

point counting is typically performed when a developer wants to size and

estimate development time and effort for an application or a project. In addition to

functional size, other risk and complexity factors must be considered when

estimating effort. These factors include, but are not limited to [19]:

• Development and/or maintenance tasks to be performed

• Application complexities; e.g., logical complexity, mathematical

complexity, security requirements, etc.

• Performance considerations

• Source code languages used

• Extent of reusable components from previously developed documents and

code

• Skill sets of both development and user personnel in all phases

• The process and technology to be applied in development and

maintenance

• The environment in which development and/or maintenance will take

place

• When the impact of selected risk and complexity factors is considered, the

effort required for development or maintenance of a certain range of

function points can be estimated accurately.

40

Page 42: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

An Approach to Counting Function Points

Function point counting can be accomplished with minimal documentation.

However, the accuracy and efficiency of the counting improves with appropriate

documentation. Examples of appropriate documentation are:

• Design specifications

• Display designs

• Data requirements (Internal and External)

• Description of user interfaces

Function point counts are calculated during the workshop and documented with

both a diagram that depicts the application and worksheets that contain the

details of each function discussed.

Benefits of Function Point Analysis

Organizations that adopt Function Point Analysis as a software metric realize

many benefits including: improved project estimating; understanding project and

maintenance productivity; managing changing project requirements; and

gathering user requirements. Each of these is discussed below.

Estimating software projects is as much an art as a science. While there are

several environmental factors that need to be considered in estimating projects,

two key data points are essential. The first is the size of the deliverable. The

second addresses how much of the deliverable can be produced within a defined

period of time. Size can be derived from Function Points, as described above.

The second requirement for estimating is determining how long it takes to

produce a function point. This delivery rate can be calculated based on past

project performance or by using industry benchmarks. The delivery rate is

expressed in function points per hour (FP/Hr) and can be applied to similar

proposed projects to estimate effort (i.e. Project Hours = estimated project

function points FP/Hr).

41

Page 43: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Productivity measurement is a natural output of Function Points Analysis [19].

Since function points are technology independent they can be used as a vehicle

to compare productivity across dissimilar tools and platforms. More importantly,

they can be used to establish a productivity rate (i.e. FP/Hr) for a specific tool set

and platform. Once productivity rates are established they can be used for

project estimating as described above and tracked over time to determine the

impact continuous process improvement initiatives have on productivity.

3.3 Conclusion

The basis of the Measure LOC is that program length can be used as a predictor

of program characteristics such as effort and ease of maintenance. The

advantage of SLOC is that it is simple to measure. The disadvantages of SLOC

include:

• It cannot measure the size of specification.

• It characterises only one specific view of size, namely length; it

takes no account of functionality or complexity

• Inadequate software design may cause excessive line of code

• It is language dependent

• Users cannot easily understand it

On the other hand the function points can be used as an estimation variable that

is used to determine the size each element of the software or as baseline metrics

collected from past projects and used in conjunction with estimation variables to

develop cost and effort projections.

The advantages of function points include:

• It is not restricted to code

• Languageindependent

• The necessary data is available early in a project.

42

Page 44: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

• Layout independent

The disadvantages of function points include:

• Subjective counting 1

• Hard to automate and difficult to compute

• Ignores quality of output

• Oriented to traditional data processing applications

Selecting a size estimation method will depend on the preference and experience

of the firm. For the best result it is best to use both methods and compare results

once completed but will increase the cost of the estimation process.

Once the size is estimated the effort and cost must be determined. These values

may be presented to possible customers or management for new projects or

form part of a motivation for new developments. These methods will be

discussed in chapter 4.

1 In a paper by [JEFFERY] they concluded that there was a 30% variation between analysts counting function points

43

Page 45: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Chapter 4

Estimation Methods

4.1. Software Life-cycle Management (SLIM) Method

Putnam developed a constraint model called SLIM to be applied to projects

exceeding 70,000 lines of code. Putnam's model [27] assumes that effort for

software projects is distributed similarly to a collection of Rayleigh curves.

Putnam suggests that staffing rises smoothly during the project and then drops

sharply during acceptance testing. The SLIM model is expressed as two

equations describing the relation between the development effort and the

schedule. The first equation, called the software equation, states that

development effort is proportional to the cube of the size and inversely

proportional to the fourth power of the development time [Fenton]. The second

equation, the manpower-buildup equation, states that the effort is proportional to

the cube of the development time.

The Rayleigh curve represents manpower as a function of time [25]. SLIM uses

separate Rayleigh curves for design and code, test and validation, maintenance,

and management. A typical Rayleigh curve is shown in Figure 4.1

Percent of total effort

Time

Figure 4.1: a Typical Rayleigh curve

44

Page 46: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Development effort is assumed to represent only 40 percent of the total life cycle

cost. Requirements specification is not included in the model. Estimation using

SLIM is not expected to take place until design and coding.

The Software Equation

Putnam used some empirical observations about productivity levels to derive the

software equation from the basic Rayleigh curve equation [11]. The software

equation is expressed as:

Size =CE±(,~ J Equation 4.1

Where

• C is a technology factor. The technology constant, C, combines the effect

of using tools, languages, methodology, quality assurance procedures.

standards etc. It is determined on the basis of historical data (past

projects). C is determined from project size, area under effort curve, and

project duration.

• Size is the quantity of function created in source lines of code written,

function points, objects, or other measures of function.

• E is the total project effort in person years. It includes all categories of

labor used on the project.

• Time is the elapsed calendar development time from the start of detailed

design until the product is ready to enter into operational service

(frequently this is a 95% reliability level).

SLIM is applicable to all types and sizes of software projects. It computes

schedule, effort, cost, staffing for all software development phases and reliability

for the main development phase. It works with software languages, and function

points as well as other sizing metrics. It is specifically designed to address the

concerns of senior management, such as:

45

Page 47: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

• What options are available if the schedule is accelerated by four months to

meet a tight market window?

• How many people must be added to get two months schedule compression

and how much will it cost?

• When will the defect rate be low enough so that a reliable product can be

marketed and have satisfied customers?

• If the requirements grow or substantially change, what will be the impact on

schedule, cost, and reliability?

• How can the quantifying value of the process improvement program?

SLIM can record and analyze data from previously completed projects which are

then used to calibrate the model; or if data are not available then a set of

questions can be answered to get values of FP from the existing database.

The Rayleigh-Putnam Curve uses a negative exponential curve as an indicator of

cumulative staff-power distribution over time during a project. The technology

factor is a composite cost drivers involving the following primarily components:

• Overall process maturity and management practices

• The extent to which good software engineering practices are used

• The level of programming languages used

• The state of the software environment

• The skills and experience of the software team

• The complexity of the application

The software equation includes a fourth power and therefore has strong

implications for resource allocation on large projects. Relatively small extensions

in delivery date can result in substantial reductions in effort [26].

46

Page 48: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

The Manpower-Buildup Equation

To allow effort estimation, Putnam introduced the manpower-buildup equation

[11 ]:

Equation 4.2

where D is a constant called manpower acceleration, E is the total project effort

in years, and t is the elapsed time to delivery in years.

The manpower acceleration is 12.3 for new software with many interfaces and

interactions with other systems, 15 for standalone systems, and 27 for re­

implementations of existing systems [Putman].

Using the software and manpower-buildup equations, the effort [11] can be

solved:

Equation 4.3

This equation is interesting because it shows that effort is proportional to size to

the power 9/7 or -1.286, which is similar to Boehm's factor [4] which ranges from

1.05 to 1.20.

Inputs

The primary input for SLIM is SLOC, function points or any valid measure of

function to be created [27]. The model uses size ranges for input: minimum,

most likely, and maximum. Other important inputs include:

• Language: Multiple choices and mixes.

• System Type: One of nine (business, scientific, command & control, real

time, etc.).

• Environmental Information: Tools, methods, practices, database usage;

standards in place and adherence and usage of those standards.

• Experience: Personnel skill and qualifications.

47

Page 49: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

• Process Productivity Parameter: a macroscopic factor determined by

calibration from historical data. It is a reliable tuning factor that accurately

reflects application complexity and the efficiency of the organization in

building software. This is a sensitive parameter that is capable of

measuring real productivity and process improvement. SLIM contains and

expert system to determine the Process Productivity Parameter when the

user has no historical data. This (non-linear) parameter is dealt with in

terms of a linear scale ranging from 0 to 40.

• Management Constraints: Maximum allowable schedule, minimum cost,

maximum and minimum staff size, required reliability at the time the

software goes into service as well as the desired probabilities for each of

these constraints.

• Accounting: Labor rates, inflation rates, and other economic factors.

• Flexibility: Extensive tailoring for milestones, phase definitions, and fraction

of time and effort applied to each phase based on the organization's own

history.

Processing

There are three primary modes of operation: building and using an historical

database, performing estimating and analysis, and creating presentations and

reports [27].

For estimation, SLIM uses the software equation in conjunction with

management constraints for schedule, cost, staffing and required reliability to

determine an optimal solution with the highest probability of successful

completion. Through Monte Carlo simulation techniques, the size range

estimates are mapped through the software equation to provide estimates of the

uncertainty in schedule, cost staffing and reliability. The solution obtained can be

compared with the user's historical data to test its reasonableness. This

discloses impossible or highly improbable solutions so that expensive mistakes

are avoided.

48

Page 50: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Outputs

The primary output of SLIM is the optimal solution, which provides development

time, cost, effort and reliability expected at delivery [27]. It also provides

comprehensive sensitivity and risk profiles for all key input and output variables,

and a consistency check with similar projects. SLIM's graphical interactive user

interface makes it easy to explore quickly extensive tradeoff and "what if'

scenarios including design to cost, schedule, effort and risk. It has 181 different

output tables and graphs from which the user can choose. These outputs

constitute a comprehensive set of development plans to measure and control the

project while it is underway.

Calibration

The process productivity parameter for SLIM can (and should) be obtained by

calibration using historical data. All that is required are project size, development

time and effort. These numbers are input into the software equation to solve for

the process productivity. The historical data can also be used to compare with

any current solution to compare for reasonableness.

4.2. Constructive Cost Model (COCOMO II)

The COCOMO (Constructive Cost Model) cost and schedule estimation model

was originally published by Boehm [3]. It became one of most popular parametric

cost estimation models of the 1980s. But COCOMO '81 experienced difficulties in

estimating the costs of software developed to new life-cycle processes and

capabilities. The COCOMO II research effort was started in 1994 at University of

South California to address the issues on non-sequential and rapid development

process models, reengineering, reuse driven approaches and object oriented

approaches.

49

Page 51: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

COCOMO II was initially published in the Annals of Software Engineering in 1995

[5]. The model has three sub models, Applications Composition, Early Design

and Post-Architecture, which can be combined in various ways to deal with the

current and likely future software practices marketplace.

The Application Composition model is used to estimate effort and schedule on

projects that use Integrated Computer Aided Software Engineering tools for rapid

application development. These projects are too diversified but sufficiently simple

to be rapidly composed from interoperable components. Typical components are

GUI builders, database or objects managers, middleware for distributed

processing or transaction processing and domain specific components such as

financial, medical or industrial process control packages.

The Early Design model involves the exploration of alternative system

architectures and concepts of operation. Typically, not enough is known to make

a detailed fine-grain estimate. This model is based on function points (or lines of

code when available) and a set of five scale factors and 7 effort multipliers.

The Post-Architecture model is used when top level design is complete and

detailed information about the project is available and as the name suggests, the

software architecture is well defined and established. It estimates for the entire

development life-cycle and is a detailed extension of the Early-Design model. It

uses Source Lines of Code and/or Function Points for the sizing parameter,

adjusted for reuse and breakage; a set of 17 effort multipliers and a set of 5 scale

factors that determine the economies/diseconomies of scale of the software

under development.

Cost factors are also evaluated and weighted within COCOMO II for application

complexity and software reliability; execution, memory, and environmental

constraints; development personnel skill levels; tools and technologies; and a

variety of other considerations.

50

Page 52: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

COCOMO avoids estimating labor costs in monetary value because of the large

variations between organizations in what is included in labor costs, and because

person-months are a more stable quantity than monetary value, given current

inflation rates and international money fluctuations. In order to convert COCOMO

person-month estimates into rand estimates, the best compromise between

simplicity and accuracy is to apply a different average rand per person-month

figure for each major phase, to account for inflation and the differences in salary

level of the people required for each phase

COCOMO II Model Rationale and Elaboration

The rationale for providing this mix of models (application composition, early

design and post-architecture models) rests on three primary premises.

First, current and future software projects will be tailoring their processes to their

particular process drivers. These process drivers include reusable software

availability; degree of understanding of architectures and requirements; market

window or other schedule constraints; size; and required reliability (see [5] for an

example of a tailoring guidelines).

Second, the granularity of the software cost estimation model used needs to be

consistent with the granularity of the information available to support software

cost estimation. In the early stages of a software project, very little may be known

about the size of the product to be developed, the nature of the target platform,

the nature of the personnel to be involved in the project, or the detailed specifics

of the process to be used.

Third, given the situation in premises 1 and 2, COCOMO II enables projects to

furnish coarse-grained cost driver information in the early project stages, and

increasingly fine-grained information in later stages. Consequently, COCOMO II

does not produce point estimates of software cost and effort, but rather range

estimates tied to the degree of definition of the estimation inputs.

51

Page 53: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Modeling Software Economies and Diseconomies of Scale

Software cost estimation models often have an exponential factor to account for

the relative economies or diseconomies of scale encountered as a software

project increases its size. This factor is generally represented as the exponent B

in the COCOMO effort equation [5]:

PM nominal =A* (Size Y Equation 4.4

Where

PMnominal orE is person-months of estimated effort.

A is a coefficient that is provisionally set to a default value of 2 .5, but should be

set to reflect a specific organization's cost and culture.

B is an exponential factor to account for the relative economies or diseconomies

of scale encountered in different size software projects.

If the value of B is smaller than 1.0, the project exhibits economies of scale. This

means that if the product's size is doubled, the project effort is less than doubled.

The project's productivity increases as the product size is increased.

Some project economies of scale can be achieved via project-specific tools (e.g.,

simulations), but in general these are difficult to achieve. For small projects, fixed

startup costs such as tool tailoring and setup of standards and administrative

reports are often a source of economies of scale.

If B = 1.0, the economies and diseconomies of scale are in balance. This linear

model is often used for cost estimation of small projects. It is used for the

COCOMO II Applications Composition model.

52

Page 54: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

If B > 1.0, the project exhibits diseconomies of scale. This is generally due to two

main factors: growth of interpersonal communications overhead and growth of

large-system integration overhead. Larger projects will have more personnel, and

thus more interpersonal communications paths consuming overhead. Integrating

a small product as part of a larger product requires not only the effort to develop

the small product, but also the additional overhead effort to design, maintain,

integrate, and test its interfaces with the remainder of the product.

A multiplicative constant, A, is used to calibrate the model locally for a better fit

and it captures the linear effects of effort in projects of increasing size. The

coefficient A in the equation is provisionally set at 3.0 Initial calibration of

COCOMO II to the original COCOMO project database [5] indicates that this is a

reasonable starting point. This value must be adjusted as the size of the project

varies.

Scaling Approach

The COCOMO II scaling value is integrated into a single rating-driven model.

Table 4.1 list a summary of the scale divers and the rating criteria. A project's

numerical ratings Wi are summed across all of the factors, and used to determine

a scale exponent B via the following equation [6]:

B = 1.01 + 0.01 * l)¥; Equation 4.5

Thus, a 100 KSLOC project with Extra High (0) ratings for all factors will have

Wi= 0, B = 1.01, and a relative effort E = 1001.01= 105 PM.

A project with Very Low (5) ratings for all factors will have Wi= 25, B = 1.26, and

a relative effort E = 331 PM. This represents a large variation, but the increase

involved in a one-unit change in one of the factors is only about 4. 7%. Thus, this

approach avoids the 40% swings involved in choosing a development mode for a

100 KSLOC product in the original COCOMO model.

53

Page 55: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Scale Very Low Low Nominal High Very High Extra High Factors (Wt)

PREC thoroughly largely somewhat generally largely throughly unprecedented unprecedented unprecedented familiar familiar familiar

FLEX rigorous occasional some general some general relaxation relaxation conformity conformity goals

RESL Little (20%) some (40%) often (60%) generally mostly full (100%) (75%) (90%)

TEAM Very difficult some difficult basically largely highly seamless interactions interactions cooperative cooperative cooperative interactions

interactions

PMAT Weighted average of "Yes" answers to CMM Maturity Questionnaire

Table 4.1 Rating scheme for the COCOMO II scale factors2 [6]

Appendix A list a full description of the meaning of each scaling driver

Cost Factors: Effort-Multiplier Cost Drivers

COCOMO II uses a set of effort multipliers to adjust the nominal person-month

estimate obtained from the project's size and exponent drivers [6]:

(

17 )

p Madjusted = p Mno min a/ * D EM; Equation 4.6

Table 4.2 summarizes the COCOMO II effort-multiplier cost drivers by the four

categories of Product, Platform, Personnel, and Project Factors. The superscripts

following the cost driver names indicated the differences between the COCOMO

II cost drivers and its counterpart in the original COCOMO model.

2 * % significant module interfaces specified,% significant risks eliminated.

t The form of the Process Maturity scale is being resolved in coordination with the SEI. The intent

is to produce a process maturity rating as a weighted average of the project's percentage

compliance levels to the 18 Key Process Areas in Version 1.1 of the Capability Maturity Model­

based [Paulk 1993] rather than to use the previous 1-to-5 maturity levels. The weights to be

applied to the Key Process Areas are still being determined.

54

Page 56: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Very Low Low Nominal High Very High Extra High

RELY slight low, easily Moderate, high financial risk to inconvenience recoverable easily loss human

losses recoverable life losses

DATA DB bytes/Pgm 10 < D/P < 100 < D/P < D/P < 1000 SLOC < 10 100 1000

CPLX Appendix C RUSE none Across project Across across across

program product multiple line product

lines DOCU Many life-cycle Some life-cycle Right-sized to Excessive for Very

needs needs life-cycle life-cycle needs excessive uncovered uncovered. needs for life-cycle

needs TIME 50% use of 70% 85% 95%

available execution time

STOR 50% use of 70% 85% 95% available storaqe

PVOL major change major: 6 mo.; major: 2 mo.; major: 2 wk.; every 12 mo.; minor: 2 wk. minor: 1 wk. minor: 2 minor change days every 1 mo.

ACAP 15th percentile 35th percentile 55th 75th percentile 90th percentile percentile

PCAP 15th percentile 35th percentile 55th 75th percentile 90th percentile percentile

PCON 48% I year 24% /year 12% /year 6% I year 3% I year AEXP < 2 months 6 months 1 year 3 years 6 years PEXP < 2 months 6 months 1 year 3 years 6years LTEX < 2 months 6 months 1 year 3 years 6 years TOOL edit, code, simple, front- basic lifecycle strong, mature strong,

debug end, backend tools, lifecycle tools, mature, CASE, little moderately moderately proactive life integration integrated integrated cycle tools,

well integrated with processes, methods, reuse

SITE: International Multi-city and Multi-city or Same city or Same Fully Collocati Multi-company Multi-company metro. Area building collocat on Or complex ed SITE: Some phone, Individual Narrowband Wideband Wide band lnteracti Commun mail phone, FAX email electronic elect. ve icatlons communication. comm, multi me

occasional dia video conf

SCED 75% of 85% 100% 130% 160% nominal

Table 4.2: Effort multipliers cost driving ratmg for the post-architecture model [6].

55

Page 57: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Table 4.2 provides the COCOMO II effort multiplier rating scales. Appendix F lists a full description of the meaning of each effort multipliers cost drivers.

Development Schedule Estimates

The initial baseline schedule equation for all three COCOMO II models is3 [6]:

[ (-~ozs+o2(B-Iol))J SCED% TDEV = 3.67* PM) *---

100 Equation 4. 7

where TDEV is the calendar time in months from the determination of its

requirements baseline to the completion of an acceptance activity certifying that

the product satisfies its requirements. PM is the estimated person-months

excluding the SCED effort multiplier, and SCEDPercentage is the schedule

compression I expansion percentage in the SCED cost driver rating.

Early Design effort multiplier cost drivers

In Early Design, however, a reduced set of effort multiplier cost drivers is used.

These are obtained by combining the Post-Architecture cost drivers as shown in

Table 4.3.

The resulting seven cost drivers are easier to estimate in early stages of software

development than the 17 Post-Architecture cost drivers. However, their larger

productivity ranges (up to 5.45 for PERS and 5.21 for RCPX) stimulate more

variability in their resulting estimates. This situation is addressed by assigning a

higher standard deviation to Early Design (versus Post-Architecture) Estimates.

3 PM is the estimated person-months excluding the SCED effort multiplier. SCED% is the compression I expansion percentage in the SCED effort multiplier in table

56

Page 58: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Early Design Cost Driver Counterpart Combined Post-Arch.

Cost Driver

CPLX RELY,DATA,CPLX,DOCU

RUSE RUSE

PVOL TIME, STOR, PCON

ACAP ACAP, PCAP, PCON

PREX AEXP, PEXP, L TEX

TOOL TOOL, SITE

SCED SCED

Table 4.3: Early design and post-architecture cost driver [5].

4.3. Expertise-Based Technique

Expertise-based technique is useful in the absence of quantified, empirical data.

They capture the knowledge and experience of practitioners seasoned within a

domain of interest, providing estimates based upon a synthesis of the known

outcomes of all the past projects to which the expert is privy or in which he or she

participated. The obvious drawback to this method is that an estimate is only as

good as the expert's opinion, and there is no way usually to test that opinion until

it is too late to correct the damage if that opinion proves wrong. Years of

experience do not necessarily translate into high levels of competency.

Delphi Technique

The Delphi technique [13] was developed at The Rand Corporation in the late

1940s originally as a way of making predictions about future events. More

recently, the technique has been used as a means of guiding a group of informed

individuals to a consensus of opinion on some issue.

Participants are asked to make some assessment regarding an issue,

individually in a preliminary round, without consulting the other participants in the

exercise. The first round results are then collected, tabulated, and then returned

57

Page 59: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

to each participant for a second round, during which the participants are again

asked to make an assessment regarding the same issue, but this time with

knowledge of what the other participants did in the first round. The second round

usually results in a narrowing of the range in assessments by the group, pointing

to some reasonable middle ground regarding the issue of concern. The original

Delphi technique avoided group discussion; the Wideband Delphi technique [5]

accommodated group discussion between assessment rounds.

This is a useful technique for coming to some conclusion regarding an issue

when the only information available is based more on "expert opinion" than hard

empirical data.

It becomes more obvious that a number of parameters need to be determined

based on as expert's (or designer's) estimates. The accuracy of these is crucial

to the performance of the model that has to be calibrated to the needs of the

specific software organization. One may also expect that a group of experts

(designers) can do a better job than a single individual. The Delphi method helps

coordinate a process of gaining information and generating reliable estimates.

The group estimating procedure governed by the Delphi method comprises a

series of the following steps:

• Coordinator presents each expert with a specification of the proposed

project and other relevant information.

• Coordinator calls a group meeting where experts discuss the estimates.

• Experts fill out estimation forms indicating their personal estimates of total

project effort and total development effort. The estimates are given in a

interval format: the expert provides the most likely value along with an

upperandlowerbound.

• Coordinator prepares and circulates the summary report indicating the

group estimates and the individual estimates.

58

Page 60: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

• Coordinator calls a meeting during which experts discuss current

estimates.

This process is repeated until a consensus is reached. The group estimate is

taken as an average of the weighted individual estimates, computed as [24]

. Lower bound of estimate + 4 *most likely estimate + upper bound of estiamte Estzmate = _____ .:....._ ___________________ _ 6

Equation 4.8

The variance of the individual estimate is defined as [24]

Upper bound- Lower bound

6 Variance Equation 4.9

The group variance is the average of the variances of the individual estimates.

4.4. Cost Estimation method

Once the effort required has been determined the resources must be allocated to

the project. The number of resources required will depend on the person-month

and the time to complete the project. Equation 4.10 indicates how the amount of

resources can be determined [24]

Effort Estimated Number of resources required=----------

Calender months estimated Equation 4.10

For an estimated 12 month project, with an estimated person months of 120 the

required number of resources will be 120/12 which is ten resources (full time

development engineers). An assumption is made that all developer engineers will

be fulltime allocated to the project and will part of the project in all phases of the

project (calendar months estimated).

59

Page 61: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

In the case that only a limited number of resources are available, equation 4.7 is

not valid. The person months must then be divided by the number of available

resources to get the estimated calendar months.

The effort cost will consists of the sum of all the salaries of the development

engineers for the specific period. The effort cost can be calculated a follow

(expressed in rand value) [24]

Effort cost= TDEV *~)Cost to companyJ Equation 4.11

Where

• TDEV is the calendar time in months from the determination of its

requirements baseline to the completion of an acceptance activity

certifying that the product satisfies its requirements.

• Cost to company is the direct cost of each engineer allocated to the

project.

Other resources like analysts and project managers are not incorporated in the

effort formula. These values must be determined separately and then added to

the effort cost.

Direct cost like operating systems, development tools and licensing must also be

added. Indirect cost like travel expenses, training and stationary must then also

be added. The sum of all these values will result in the cost of the project

(equation 4.14)

Total Cost = Direct Cost + Indirect Cost + Effort Cost Equation 4.12

60

Page 62: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

4.5. Conclusion

The cost estimation process is an interesting mix of formal models and

experience. In this sense, the overall modeling process is not straight forward

and requires a significant level of skill. To produce a meaningful and reliable

estimate, the cost estimation process needs to be thoroughly arranged and

carefully followed.

From this section it seems that all estimation tools have specific strong points for

specific types of project. It would be best when estimating the cost that more than

one estimation method be used to get a global view on the possible cost.

The advantages and disadvantage of the methods and techniques discussed are

summarized in table 4.4

Method Advantages Disadvantages

SLIM Uses linear programming A study carried out by [PENGELLY]

to consider development indicated that SLIM did not perform

constraints on both cost accurately on small projects. However,

and effort [LONDIEX] reported that SLIM is

suitable for software developments that

meet the following of

1) Software size is greater than 5000

lines

2) Effort greater than 1.5 man years

3) Over 6 months development time.

SLIM estimates are extremely sensitive

to the technology factor

Process is not transparent

61

Page 63: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

COCOMO COCOMO is transparent Extremely vulnerable to mis-

11 and it can be seen how it classification of the development mode

works

Success depends largely on tuning the

Drivers are particularly model to the needs of the organization,

helpful to the estimator to using historical data which is not

understand the impact of always available

different factors that affect

project cost COCOMO estimates assume that the

project will enjoy good management by

both the developer and the customer.

COCOMO assumes that the

requirements specification is not

substantially changed after the plans

and requirements phase, although

some refinements and reinterpretations

are inevitable. Any significant

modifications or added capabilities

should be covered by a revised cost

estimate.

Expert- Group of experts are The process is extremely sensitive to

Based involved in the estimation the technology factor

technique process and not one

individual Large amount of human resource

required

Large amount of time required

Table 4.4: Advantages and disadvantages of cost estimation methods.

62

Page 64: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Although the COCMO II method is the most popular method used for estimation,

it does not mean that the other methods are less accurate. The best scenario

would be that all three methods are used and that a comparison is made, but this

will add a cost component to the whole estimation process.

Firms should keep a database of project history and this can also be a useful

reference to measure the end result of the current estimation process with

historical projects.

63

Page 65: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Chapter 5

Case Study

5.1 Project description

To demonstrate how the cost estimation is used in practice a use case will be

presented. The project under discussion is a server application to be developed

to interface with a terminal. The full technical specification of the project is listed

in Appendix G but a summary of the project is as follows:

• Clients will be given a member card to be used at any Nu Metro cinemas.

• The card will be swiped and the system must determine the following

o Is the user a valid user

o Has the user used the card the same day

o How many tickets are allowed

• The terminal will receive a valid list of users with all the required detail

from the server

• The terminal will initialize a connection to the server on the predefined

time each day and receive the required information.

• The terminal will send client usage information to the server once all the

relevant detail has been received

The first step of estimating the cost of a project would be to analyze the

requirements of the system (Appendix G) and determine the size of the project.

5.2 Project Size estimation

In the case of this project both the function point count and source line of code

was used. Firstly the SLOG size estimation method will be discussed.

Once all requirements was available a workgroup was set up with the following

staff members:

64

Page 66: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

• Project manager

• Head software developer

• Developer assigned for the project

• Specialist developer working with the terminal

The project was assessed and broken into modules. Each member had to give

her/his view on the difficulty of the project and the number of non-commented

lines of code to be generated.

A variance between 800 and 1500 lines of code was given. The specialist giving

the lowest value and the assigned engineer giving the highest value. A value of

1000 SLOC was agreed on by all parties reached.

Once this was completed the same team started with the function point count.

The final results were as follows:

• External inputs. The inputs were the parameter files to be received from

the terminal and the request for connection file.

• External output. The external file was the parameter file sent to the

terminal.

• External Inquiries. None

• Internal Logical Files. The processing file

• External Interface Files. The audit files and database queries.

All the function types were marked as highly complex and the value adjustment

factor would have no influence meaning that the value of TCF = 0.65.

From equation 3.2 the UFP is

UFP = 2*6 + 1*7 + 1*15 + 2*10 =54

Using equation 3.4 the FP is

65

Page 67: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

FP = 0.65 * 54 = 35

To bring the two values into perspective [5] has a conversion table between

SLOG and FP for each development language. The project in question was

developed in Visual Basic 6 and the conversion value from FP to SLOG is 36.

The number of SLOG for the function point count was 1200, differing by 100 from

the SLOG calculation.

On completion the number of source line of code developed was 1253. Table 5.1

shows the difference.

SLOC FP [!}ctual ·· ...... .: ..........

Estimated 1000 1200 1253

Variance 253 53

Table 5.1: Estimation method variations

5.3 Effort estimation

For this project only the GOGOMO II method and the expert-base technique was

used. The individual results are listed below.

COCOMO II

To determine the effort, equation 4.4 will be used. The inputs needed are A, 8

and the Size. The default value for A is used. The value for A can be different

from organization to organization. The Post-Architecture model is used because

the requirements are already defined.

The Size has already been determined as 1.2 KLOG or 1200 LOG. The only

value that still needs to be determined is the B scale driver. To determine B,

66

Page 68: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

equation 4.5 will be used. The summary of the values for the effort estimation is

shown in table 5.2.

Scale Factor Rating Value

PREC Considerable 3.5

Development flexibility Considerable 2.3

Architecture I Risk Some 3.4

Resolution

Team Cohesion Medium 2.5

Process maturity Medium 1.63

Table 5.2: Summary of effort estimation values

After all the scale driver values have been determined, B van be determined with

B=l.01+0.01*LW; = 1.01 +0.01(3.5+2.3+3.4+2.5+ 1.63)= 1.143

Now the nominal person-month value can be determined with

PMnominal =A*(SizeY = 1.25(1.2)1·143 == 1.2

The A coefficient value is taken as 1.25. From previous project data it was found

that the default of 2.5 gave an over estimation and it was found that the

calibration of the coefficient to 1 .25 gave a more accurate value.

Now the nominal person month has to be adjusted. To adjust the person month

the cost drivers have to be determined. Table 5.3 provides a summary of the 17

cost driver's values. The description of each value is listed in appendix A.

67

Page 69: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Driver Value

Required Software Reliability 4

Data Base Size 5

Product Complexity 4

Required Reusability 2

Documentation to life cycle needs 3

Execution time constraints 3

Main storage constraint 3

Platform Volatility 3

Analyst capability 3

Engineering capability 3

Application experience 4

Platform experience 3

Language and tool experience 3

Personal continuity 2

Use of software tools 3

Multi-site development 3

Required development schedule 2 (75%)

Table 5.3: Summary of cost dnver values

The Adjusted Person-Months is determined with equation 4.6:

PMadjusted = PMnominal *( D EM;)

= 1.2*(1.1705)

= 1.4

PMadjusted without SCED driver is 1.2*(1.7558) =2.1

To determine the schedule equation 4.7 is used

[ (-~o28+o2(s-Lol))J SCED% TDEV = 3.67 * PM j * ---

100

= 3.67(2.1)0·3066 * (0.75) == 3 Months

68

Page 70: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

The cost for just the development for the code would be the cost to company of

one developer. Other expenses would include the hardware cost, development

software and overheads

Expert base technique

The expert base technique is started having a work session. The following

members of the project was involved in the estimation process:

• Project manager

• Head software developer

• Developer assigned for the project

• Specialist developer working with the terminal

Each member had to give there estimation on how long they expected the

development to last. The results are listed in table 5.4.

Member Months

Project manager 2

Head software developer 2.5

Developer assigned for the project 3

Specialist developer working with the 2.5

terminal

Table 5.4: Summary of team estimation values

From equation 4.8 the estimated time= (3 + 4*2.5 + 2)/6 = 2.5 months

The project took 2.5 months to complete, which is exactly in line with the expert

base technique prediction

COCOMO II Expert Actual

3 months 2.5 Months 2.5 Months

Table 5.5: Companson between COCOMO II and Expert Based Techmque

69

Page 71: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

5.4 Conclusion

From the results of the size estimation it can be seen that the function point count

was more accurate than the source line of code estimation. This can be

contributed to the fact that the project at hand is small of size and that the

requirements were available.

Function points are very accurate for small project and starts to become less

accurate as the size and complexity increases. The same goes for SLOG

estimation.

Function point counting is currently more accurate than SLOG because there are

fewer dependants on early accurate requirements and takes complex

development functions into account.

On the effort side it can be seen that the expert-based scenario is more accurate

than the GOGOMO II method. This can also be attributed to the fact that the

project is small in size. Most of the cost drivers are used for medium to large

projects with medium to large man power teams.

The conclusion is that the expert method would be well suited for small projects.

Where small projects can be seen as projects where one or two developers are

involved and the project life span is less than months.

70

Page 72: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Chapter 6

Conclusions and Recommendations

6.1 Conclusions

This dissertation has presented an overview of a variety of software estimation

techniques, providing an overview of several popular estimation models currently

available. Literature to date [4] indicates that estimate based techniques are less

mature than the other classes of techniques, but that all classes of techniques

are challenged by the rapid pace of change in software technology.

The baseline COCOMO II family of software cost estimation models presented

here provides an adaptable cost estimation capability well matched to the major

current and likely future software process trends. It is currently serving as the

framework for an extensive data collection and analysis effort to further refine

and calibrate its estimation capabilities.

Thus, it can be see that the COCOMO II rating scales and effort multipliers

provide a rich quantitative framework for exploring software project and

organizational tradeoff and sensitivity analysis. The framework would enable the

project manager to explore alternative staffing options involving various mixes of

application, platform, and language and tool experience. An organization-level

manager could also explore various options for transitioning a portfolio of

applications from their current application/platform/language configuration to a

desired new configuration (e.g., by using pilot projects to build up experience

levels).

Software cost estimation is an important part of the software development

process. Models can be used to represent the relationship between effort and a

primary cost factor such as size. Cost drivers are used to adjust the preliminary

71

Page 73: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

estimate provided by the primary cost factor. Although models are widely used to

predict software cost, many suffer from some common problems. The structure

of most models is based on empirical results rather than theory. Models are often

complex and rely heavily on size estimation. Despite these problems, models are

still important to the software development process. Models can be used most

effectively to supplement and corroborate other methods of estimation.

The following points were observed by the author:

• Experience and informal analogy are the primary cost estimation methods.

The majority of organizations relied on individuals' expertise and

experience to arrive at cost estimates. Managers received little or no

training in estimation. Estimators were expected to arrive at accurate

estimates by relying on their knowledge of the software process used

within the organization and recollections of their previous projects

• Few organizations have sufficient historical data to be used for cost

estimation. With a few notable exceptions, organizations did not have

information regarding past projects recorded in a manner that was useful

and accessible to estimators. However, a number of organizations had

recently implemented programs to gather and store this data, but it will be

a few years before the impact of the data gathering on estimation

accuracy can be determined.

• Estimation cannot be improved without a well-defined and well controlled

software process. Organizations without a defined and controlled software

process cannot achieve consistency in their software development.

Without consistency in software development, consistently accurate

estimates are not possible.

• Requirements creep is a major reason for cost overruns. It can be

minimized, but cannot be eliminated. Two conclusions are drawn. First, if

72

Page 74: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

cost estimates are to be accurate, the initial software requirements must

be as complete and correct as possible. Second, for complex systems, it

is impossible to generate requirements that are 100% complete and

correct. Thus, one must accept the fact that complete accuracy for

estimates of complex systems is not possible.

6.2 Recommendations

The solution to improving estimation accuracy is not a high technology issue. No

existing tools, models, or methodologies can be brought to bear on the problem

that by themselves will have a significant impact. Rather, the problem is one of

applying simple technologies, an effective software development process, and

proper management and control to achieve a consistency in development, which

allows more accurate cost estimation. Solutions to the cost estimation problem

must address the issues in all of these areas or they will not be effective.

The cost estimation problem varies considerably among organizations that do

their estimation under very different constraints. The recommendations are

general in nature and must be tailored to the individual organizations needs,

depending on whether they are maintenance groups, procurement organizations,

commercial developers, etc.

The following recommendations are based on two assumptions:

• There is significant room for improvement in the accuracy of cost

estimates for software intensive systems.

• Although there is room to improve the level of accuracy of software cost

estimates, there will continue to be a large margin of error; organizations

must adapt to accept this fact.

73

Page 75: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Software Process Improvements

Improving software cost estimation accuracy must begin with a solid and

effective software development process. An effective software process can be

used to increase accuracy in cost estimation in a number of ways.

• Formalizing when and how estimates and re-estimates costs are

performed. A critical aspect to estimation accuracy is to have a well­

defined process that defines when and how cost estimates are performed.

• The process used to perform the estimates, including who performs the

estimate and who has sign off authority on the estimate.

• Permit effective monitoring and control of software costs. No cost estimate

will be accurate without effective monitoring and control of software costs.

If there is no effective technique for monitoring and controlling the project,

there is an increased risk of the costs of the project escalating without

management being able to recognize or identify the problem at a time

when action can be taken to minimize the effect.

• Objective measure of completeness. Each WBS work item should have

clearly identified output items and an objective means of determining the

completeness of these items.

• Analyzing problems reported during the development process. Every

reported problem with either a product or a process should be traced back

to its cause. This requires determining which Work Breakdown Structure

activity, and which work item of that activity, was the cause of the problem.

This is a prerequisite to determining whether a particular activity within the

organization is a cause of the problem.

• Management must recognize that cost estimates based on the initial

requirements are wrong because the requirements are wrong. This means

there must be a provision within the software process to re-estimate costs

as requirements are changed. The re-estimation depends on the

constraints under which the system is being developed.

74

Page 76: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Maintaining a Historical Database

Organizations should maintain a database, which can be used as a basis for

estimating costs of future projects. The database should include both project

metrics (which describe the features of the system built) and process metrics,

which describe features of the process used to build the system. It is impossible

to identify specific metrics that should be recorded and used by every

organization; each organization and each situation are unique. However, metrics

recorded for the purpose of improving cost estimation should be able to satisfy

the following:

• Actual cost of the system development. Unless the actual cost of the

system development is known, it is impossible to determine the accuracy

of the estimates.

• All estimates and re-estimates are recorded. To determine the accuracy .of

estimates, and the rate of convergence of the estimates to the actual cost,

a complete record of all estimates must be maintained

• The characteristics of the completed product. This includes the size

measured in some suitable units (e.g., Source Lines of Code, Function

Points), a description of the functionality of the system, classification of

type of software, and any other information that characterizes the system.

This information is required if any rigorous estimation by analogy is to be

performed or if any costing models are to be developed.

These processes will simplify the cost estimation process and will in turn

increase management capabilities to ensure that cost effective and on budget

software is engineered.

75

Page 77: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

6.3 Further Investigation

One of the statements made in this dissertation is that cost estimation methods

should stay up to date with software trends. The current cost estimation methods

express effort in a value of man months. This gives a good indication on the

amount of human resource will be required.

It happens that a project requires a senior engineer of the architectural design

and the junior engineers can complete the project while a database administrator

is required half way trough the project

Future cost estimation research should be inclined towards delivering indications

on what skills will be needed for what period to complete a specific project.

76

Page 78: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Glossary

Algorithmic Models (also known as parametric models): produce a cost

estimate using one or more mathematical algorithms using a number of variables

considered to be the major cost drivers. These models estimate effort or cost

based primarily on the hardware/software size, and other productivity factors

known as cost driver attributes.

Analogy (or Comparative) Models: Models that use a method of estimating that

compares a proposed project with one or more similar and completed projects

where costs and schedules are known. Then, extrapolating from the actual costs

of completed projects, the model(s) estimates the cost of a proposed project.

Constructive Cost Model (COCOMO): A software cost estimation model

developed by Barry Boehm and is described in his book, Software Engineering

Economics.

Cost Analysis: The review and evaluation of the separate cost elements and

proposed profit of (a) an offeror's or contractor's cost or pricing data and (b) the

judgmental factors applied in projecting from the data to the estimated costs in

order to form an opinion on the degree to which the proposed costs represent

what the cost of the contract should be, assuming reasonable economy and

efficiency.

77

Page 79: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Cost Driver Attributes: Productivity factors in the software product development

process that include software product attributes, computer attributes, personnel

attributes, and project attributes.

Cost Drivers: The controllable system design or planning characteristics that

have a predominant effect on the system's costs. Those few items, using

Pareto's law, that have the most significant cost impact.

Cost Model: An estimating tool consisting of one or more cost estimating

relationships, estimating methodologies, or estimating techniques used to predict

the cost of a system or one of its lower level elements.

Delphi Technique: A group forecasting technique, generally used for future

events such as technological developments, that uses estimates from experts

and feedback summaries of these estimates for additional estimates by these

experts until a reasonable consensus occurs. It has been used in various

software cost-estimating activities, including estimation of factors influencing

software costs.

Domain: A specific phase or area of the software life cycle in which a developer

works. Domains define developers and users areas of responsibility and the

scope of possible relationships between products. The work can be organized by

domains such as Software Engineering Environments, Documentation, Project

Management etc.

Expert Judgment Models: use a method of software estimation that is based on

consultation with one or more experts that have experience with similar projects.

An expert-consensus mechanism such as the Delphi technique may be used to

produce the estimate.

Function Points: Function Points are those pieces of code that perform some

specific activity related to inputs, inquiries, outputs, master files, and external

system interfaces.

78

Page 80: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Life Cycle: The stages and process through which hardware or software passes

during its development and operational use. The useful life of a system. Its length

depends on the nature and volatility of the business, as well as the software

development tools used to generate the databases and applications.

Metric: Quantitative analysis values calculated according to a precise definition

and used to establish comparative aspects of development progress, quality

assessment or choice of options.

New Line of Code: A source line of code that will be developed completely, i.e.,

designed, coded and tested.

PM: Person Months, A person month is the amount of time one person spends

working on the software development project for one month.

Price Analysis: The process of examining and evaluating a proposed price

without evaluating its separate cost elements and proposed profit.

Process: The sequence of activities (in software development) described in

terms of the user roles, user tasks, rules, events, work products, resource use,

and the relationships between them. It may include the specific design

methodology, language, documentation standards etc.

Rayleigh Distribution: A curve that yields a good approximation to the actual

labor curves on software projects.

Real-Time: 1) Immediate response. The term may refer to fast transaction

processing systems in business; however, it is normally used to refer to process

control applications. For example, in avionics and space flight, real-time

computers must respond instantly to signals sent to them. 2) Any electronic

operation that is performed in the same time frame as its real-world counterpart.

For example, it takes a fast computer to simulate complex, solid models moving

79

Page 81: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

on screen at the same rate they move in the real world. Real-time video

transmission produces a live broadcast.

Security: The protection from accidental or malicious access, use, modification,

destruction, or disclosure. There are two aspects to security, confidentiality and

integrity.

Software Development Life Cycle: The stages and process through which

software passes during its development. This includes requirements definition,

analysis, design, coding, testing, and maintenance.

Software Engineering Institute (SEI): SEI is a federally funded research and

development center established in 1984 by the DoD with a broad charter to

address the transition of software engineering technology. The SEI is an integral

component of Carnegie Mellon University and is sponsored by the Office of the

Under Secretary of Defense for Acquisition and Technology. SEI developed the

Software Acquisition Capability Maturity Model (CMM) and the Checklist and

Criteria for Evaluating the Cost and Schedule Estimating Capabilities of Software

Organizations.

Software Method (or Software Methodology): Focuses on how to navigate

through each phase of the software process model (determining data, control, or

uses hierarchies; partitioning functions; and allocating requirements) and how to

represent phase products (structure charts; stimulus-response threads; and state

transition diagrams).

Source Lines of Code (SLOC): All executable source code statements including

deliverable Job Control Language (JCL) Statements, Data declarations, Data

Typing statements, Equivalence statements, and Input/Output format statements.

SLOG does not include any statement that upon its removal, the program will still

compile, e.g., comments, blank lines, and non-delivered programmer debug

statements.

80

Page 82: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Validation: In terms of a cost model, a process used to determine whether the

model selected for a particular estimate is a reliable predictor of costs for the type

of system being estimated.

Work Breakdown Structure: A work breakdown structure is a product-oriented

family tree, composed of hardware, software, services, data and facilities which

results from system engineering efforts during the development and production of

a defense material item, and which completely defines the program. A work

breakdown structure displays and defines the product(s) to be developed or

produced and relates the elements of work to be accomplished to each other.

81

Page 83: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Appendix A

Scaling Drivers

Development Flexibility (FLEX)

To determine the flexibility of the development process the following features has to be taken into account.

• Need for software conformance with pre-established requirements

• Need for software conformance with external interface specifications

• Premium on early completion

Feature Very low Nominal High Extra

High

Need for software Full Considerable Considerable Basic conformance with pre-established requirements Need for software Full Considerable Considerable Basic conformance with external interface specifications Premium on early High Medium Medium Low completion

Table A 1 Development Flexibility scaling drivers

82

Page 84: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Scaling Drivers

Precedentedness includes the following features

Feature Very low Nominal High Extra High

Organizational understanding of General Considerable Considerable Thorough product objective Experience in working with related Considerable Considerable Extensive software systems Moderate

Concurrent development of Extensive Moderate Moderate Some associated new hardware and operational procedures Need for innovative data processing Considerable Some Some Minimal architecture and algorithms

Table A2: Precedentedness scaling drivers

The PREC rating is the subjective weighted average of the listed characteristics.

Architecture I Risk Resolution (RESL)

The RELS rating is the subjective weighted average of the listed characteristics (see Appendix B).

Team Cohesion (TEAM)

The Team Cohesion scale factor account for the source of project turbulence and entropy due to difficulties in

synchronizing the project's stakeholders: users, customers, developers, maintainers, interfaces and others. These

83

Page 85: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

difficulties may arise from differences in stakeholder's objectives and cultures, difficulties in reconciling objectives or stack

holder's lack of experiences and familiarity in the operating team. Appendix C provides a detailed definition for the overall

TEAM rating levels. The final rating is the subjective weighted average of the listed characteristics (see Appendix C).

Process Maturity (PMAT)

To determine the process maturity the following Key Process Areas (KPA) questionnaire must be completed and the

weight average must be determined (See Appendix D).

• Check Almost Always when the goals are consistently achieved and are well established in standard operating

procedures.

• Check Frequently when the goals are achieved relatively often, but sometimes are omitted under difficult

circumstances.

• Check About Half when the goals are achieved about half of the time

• Check occasionally when the goals are sometimes achieved, but less than often.

• Check Rarely If ever when the goals are rarely if ever achieved.

• Check Does Not Apply when the engineers have the required knowledge about the project or organization and the

(KPA).

• Check Don't Know when uncertain about how to respond to the KPA

After the KPA in completed each compliance level is weighted and a PMAT factor is calculated, as in equation A1

84

Page 86: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

s-[t(KPA%*i *2_)] 1=1 100 18

Equation A1

Appendix B

Architecture I Risk Resolution (RESL)

Characteristics Very Low Low Nominal High Very Extra High high

Risk Management Plan identifies all critical risk items, establishes None Little Some Generally Mostly Fully milestones for resolving them by Product Design Review Schedule, budget and internal milestones through Product design None Little Some Generally Mostly Fully Review compatible with Risk Management Plan Percentage of development schedule devoted to establishing 5 10 17 25 33 40 architecture, given general product objectives Percent of required top software architects available to the project. 20 40 60 80 100 120 Tool support available for resolving risk items, developing and None Little Some Good Strong Full verifying architectural specs Level of uncertainty in Key architecture drivers: mission, user Extreme Significant Considerable Some Little Very little interface, hardware, technology and performance Number and criticality of risk items > 10 5-10 Critical 2-4 Critical 1 Critical > 5 Non- < 5 Non-

Critical Critical Critical -

Table 81: Architecture/Risk resolution scaling table

85

Page 87: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Appendix C

Team Cohesion (TEAM)

Characteristics Very low Low Nominal High Very High Extra High Consistency of stakeholder objectives and cultures Little Some Basic Considerable Strong Full Ability, willingness of stakeholders to accommodate other Little Some Basic Considerable Strong Full stakeholders objectives Experience of stakeholders in operating team None Little Little Basic Considerable Extensive Stakeholder teambuilding to achieve shared vision and commitments None Little Little Basic Considerable Extensive

Table C1: Team cohesion scaling table

Appendix D

Process Maturity (PMAT)

Key Process Area Almost Always Often About Half Occasionally Rarely if Does Not Don't >90% 60-90% 40-60% 10-40% Ever <10% Apply Know

Requirements Management Software Project Planning Software Project Tracking Software Subcontract Management Software Quality Assurance Software Configuration Management Organization Process Focus Organization Process Definition Training Program Integrated Software Management Software Product Engineering Intergroup Coordinating

86

Page 88: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Peer Review Quantitave Process management Software Quality Management Defect Prevention Technology Change management Process Change Management

Table 01: Process maturity scaling table

Appendix E

Product Complexity (CPLX)

Very Low Low Nominal High Very High Extra high Control Straight-line Straight forward Mostly simple Highly nested Reentrant and recursive Multiple resource Operations code without a nesting nesting. Decision programming coding. Fixed-priority scheduling with

few non-nested programming tables and simple operators with interrupt handling and dynamically charging structure operators callbacks or many compound complex callbacks priorities and microcode-programming message passing. predicates. Queues level control operators and stack control.

Computation Evaluation of Evaluation of Use of standard Basic numerical Difficult but structured Difficult and unstructured al Operations simple moderate-level math and statistical analysis: numerical analysis: near numerical analysis:

expressions expressions routines. Basic multivariate singular matrix equations, Highly analysis of noisy, matrix/vector interpolation, partial differential stochastic data Complex Operation ordinary differential equations. parallelization

equations.

87

Page 89: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Device Simple read, No cognizance 1/0 processing Operation at Routines for interrupt Device timing dependent dependent write needed of includes devices physical 1/0 level. diagnosis, servicing, coding, micro-Operations statements with particular processor selection, status Optimized 1/0 masking. Communication programmed operations I

i simple formats. or 1/0 device checking and error overlaps. line handling

characteristics. 1/0 processing done at GET/Put level.

Data Simple arrays Single file Multi-file input and Simple triggers Distributed database Highly coupled, dynamic management in main subsetting with no single file output. activated by data coordination. Complex relational and object Operations memory. data structure Simple structural stream contents. triggers. Search structures. Natural

Simple COST- changes, no edit, changes, simple Complex data optimization. language data DB queries, no intermediate edits. restructuring. management updates files.

User Simple input Use of simple Simple use of Widget set Moderately complex Complex multimedia, : Interface forms, report graphic user widget set development and 2D/3D, dynamic graphics, virtual reality Management generators interface (GUI) extension. Simple multimedia. Operations builder voice 1/0,

multimedia -----

Table E1: Product complexity scaling table

Appendix F

Effort multipliers

Required Software Reliability (RELY)

This is the measure of the extent to which the software must perform its intended function over a period of time. If the

effect of a software failure is only slight inconvenience then RELY is low. If a failure would risk human life then RELY is

very high

88

Page 90: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Data Base Size (DATA)

This measure attempts to capture the effect large data requirements have on product development. The rating is

determined by calculating D/P. the reason the size of the database is important to consider is because of the effort

required to generate the test data that will be used to exercise the program.

D DataBaseSize(Bytes) E t· F1 -= qua 1on P Pr ogramSize(SLOC)

DATA is rated as low if D/P is less than 10 and very high if it is greater than 100

Product Complexity (CPLX)

Complexity is divided into five areas: Control operations, computational operations, device-dependent operations, data

management operations, and user interface management operations. Select the combination of areas that characterize

the product or a sub-system of the product. The complexity rating is the subjective weighted average of these areas. If the

Control operations are Low and the Data Management Operations is high then the Complexity is the average of 1 and 4,

which are 2.5. Always round of to the value closes to the Nominal value, which are 3 (see Appendix E).

Required Reusability (RUSE)

89

Page 91: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

This cost driver accounts for the additional effort needed to construct components intended for reuse on the current or

future projects. This effort is to be consumed with creating generic design of software, more elaborate documentation and

more extensive testing to ensure components are ready fore use in other applications.

Documentation Match to Life-Cycle Needs (DOCU)

Several software cost models have a cost driver for the level of required documentation. In COCOMO II, the rating scale

for the DOCU cost driver is evaluated in terms of the suitability of the project's documentation to its life-cycle needs. The

rating scale goes from Very Low (many life-cycle needs uncovered) to Very high (very excessive for live-cycle needs).

Execution Time Constraint (TIME)

This is a measure of the execution time constraint imposed upon a software system. The rating is expressed in terms of

the percentage of available execution time expected to be used by the system or subsystem consuming the execution

time resource. The rating ranges from nominal, less than 50% of the execution time resource used, to extra high, 95% of

the execution time resource is consumed.

Main Storage Constraint (STOR)

This rating represents the degree of main storage constraint imposed on a software system or subsystem. Given the

remarkable increase in available processor execution time and main storage, one can question whatever resources are

available, making these cost drivers still relevant.

90

Page 92: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Platform Volatility {PVOL)

"Platform" is used here to mean the complex of hardware or software (OS, DBMS) the software product calls on the

perform its tasks. If the software to be developed is an operating system then the platform is the computer hardware. If a

database management system is to be developed then the platform is the hardware operating system. The platform

includes any compilers or assemblers supporting the development of the software system. This rating ranges from low,

where there is a major change every 12 months, to very high, where there is a major change every two weeks

Analyst Capability {ACAP)

Analyst is personnel that work on requirements, high-level design and detailed design. The major attributes that should be

considered are the rating is Analysis and design ability, efficiency and thoroughness, and the ability to communicate and

cooperate. The rating should not be considered the level of experience of the analyst. Analysts that fall in the 15th

percentile are rated very low and those that fall in the 951h percentile are rated as very high.

Programmer Capability {PCAP)

Current trends continue to emphasize the importance of highly capable analyst. However the increasing role of complex

software packages, and the significant productivity leverage associated with programmer's ability to deal with these

software packages, indicates a trend towards higher importance of programmer capability as well.

91

Page 93: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Evaluation should be based on the capability of the programmers as a team rather than individuals. Major factors, which

should be considered in the rating, are ability, efficiency and thoroughness and the ability to communicate and cooperate.

The experience of the programmer should not be considered. Programmers that fall in the 15th percentile are rated very

low and those that fall in the 95th percentile are rated as very high.

Applications experience (AEXP)

This rating is dependent on the level of applications experience of the project team developing of the software system or

subsystem. The ratings are defined in terms of the project team's equivalent level of experience with this type of

application. A very low rating is id for application experience of less than two months. A very high rating is for experience

of six years or more.

Platform Experience (PEXP)

The Post-Architecture model broadens the productivity influence of PEXP, recognizing the importance of understanding

the use of more powerful platforms, including more graphic user interface, database, networking, and distributed

middleware capabilities.

Language and Tool Experience (L TEX)

This is a measure of the level of programming language and software tool experience of the project team developing the

software system or subsystem. Software development includes the use of tools that perform requirements and design

92

Page 94: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

representation and analysis, configuration management, document extraction, library management, program style and

formatting, consistency checking, etc. In addition to experience in programming with a specific language the supporting

tool set also effects development time. A low rating given for experience of less than two months. A very high rating is

given for experience of six or more years.

Personnel Continuity (PCON)

Staff turnaround has an important impact on a project. The rating scale for PCON is in terms of the project's annual

personnel turnover: from 3 %, very high, to 48 %, very low.

Use of Software Tools (TOOL)

Software tools have improved significantly since the 1970's projects used to calibrate COCOMO. The tool rating ranges

from simple edit and code, very low, to integrated lifecycle management tools, very high.

Multi site Development (SITE)

Given the increasing frequency of multi site developments, and indications that multi site development effects are

significant, the SITE cost driver has been added in COCOMO II. Determining its cost driver rating involves the

assessment and averaging of two factors: site collocation (from fully collocated to international distribution) and

communication support (from surface mail and some phone access to full interactive multimedia)

93

Page 95: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Required Development Schedule (SCED)

This rating measures the schedule constraint imposed on the project team developing software. The ratings are defined in

terms of the percentage of schedule stretch- out or acceleration with respect to a nominal schedule for a project requiring

a given amount of effort. Accelerated schedules tend to produce more effort in the later phases of development because

more issues are left to be determined due to lack of time to resolve them earlier. A schedule compress of 74 % is rated

very low. A stretch - out of a schedule produces more effort in the earlier phases of development where there is more

time for thorough planning, specification and validation. A stretch- out of 160% is rated very high.

94

Page 96: Cost Estimation Methods For Software Engineering

Cost Estimation Methods for Software Engineering

Appendix G

Nu Metro Server Technical Specification

95

Page 97: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

NU Metro Server Product: Nu Metro Server Project: Brasilia

Technical Specification

Author: Andre Ladeira

Electric Liberty

N U Metro Server FreeStyle

Revision 0.01

Document Status: Draft

Document Source: BSL-Template-TDD Nu-metro.doc Print Date: 2003/03/04

Revision 0.01

Page 98: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

Contents

NU Metro Server Product: Nu Metro Server Project: Brasilia

DOCUMENT CONTROL. ....................................................................................................................... 98

INTRODUCTION ................................................................................................................................. 100

Overview .................................................................................................................................... 1 00

Overall Architecture ................................................................................................................... 100

TECHNICAL FLOW ............................................................................................................................. 101

DATABASE DESIGN ........................................................................................................................... 102

Data related issues .......................................................................................................... 1 03

TECHNICAL COMPONENTS .............................................................................................................. 108

Communication Protocol ........................................................................................................... 108

Author: Andre Ladeira Print Date: 2003/03/04 Document Source: BSL-Template-TDD Nu-metro.doc Revision 0.01

Page 99: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

NU Metro Server

Document Control

c f f on 1gura 1on c t on ro

Project: Brasilia

Title: NU Metro Server

Category: Technical Specification

VSS Reference: VSS\Brasilia\Specifications\Technical

Template Used: VSS\Brasilia\Templates\BSL-Template-TDD

Created By:

Creation Date:

D t H" t ocumen IS ory

Date Version Status Who

0.01 Draft

R H" t eVISIOn 1s ory

Date Version Changes

0.01 New document created

R H" t ev1ew IS ory

Product Nu Metro Server Project Brasilia

VSS Version

-

Date Version Status Management Minute Reference

1.00

Author: Andre Ladeira Print Date: 2003/03/04 Document Source: BSL-Template-TDD Nu-metro.doc Revision 0.01

Page 100: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

References

Description

Related Documents

Related Specifications

Author: Andre Ladeira Document Source: BSL-Template-TDD Nu-metro.doc

NU Metro Server

Source

Product: Nu Metro Server Project: Brasilia

Print Date: 2003/03/04 Revision 0.01

Page 101: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

Introduction

Overview

NU Metro Server Product: Nu Metro Server Project: Brasilia

This document describes the functionality of the NuMetro Server and the interface components involved. The document must be read in conjunction with the NuMetro Functional specification document

Overall Architecture

The architecture diagram below is a logical interpretation of the production environment implementation of the NuMetro server.

Client Side

Engenico Terminal -.

Author: Andre Ladeira

Server Side

Protocol converted converts data to a readable ascii format

Terminal connects to protocal converted via x25 radio pad

Nu Metro Server determines which message is being send

and sends the relevant data back to protocal converter to be send

to terminal

.. Protocal converter

Nu Metro Server connected to protocal converter via TCP/IP

Nu Metro Server

Valid data is retrieved

Print Date: 2003/03/04 Document Source: BSL-Template-TDD Nu-metro.doc Revision 0.01

Page 102: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

Technical Flow

NU Metro Server Product: Nu Metro Server Project: Brasilia

The Nu Metro server uses only one external com+ component for data access namely the modFreestyle class.

An external application (protocol converter) is used to translate messages received from the terminals to ASCII strings and visa versa.

To determine when a message arrives the Microsoft Winsock TCP/IP component is used. The following methods are used:

tcpCiient_DataArrival: Once the data has arrived at the protocol converter this event will be triggered and the process will start. A string check is also put in place to ensure that the full message has arrived. In the case that the full message has not arrive the message will be placed in memory until the full message has been retrieved.

All the data will be checked to determine that no corrupted data has arrived (check sum and string length count, see message protocol)

SendData: Once the message has been compiled the data is send to the protocol converter.

Note: most of the application is string manipulation to ensure that the agreed data protocol is met.

Data flow process

• Login. The terminal ID will be checked to determine if the terminal may be given access. In the case that the terminal ld is not valid the terminal will be locked out.

• Once the terminal has been successfully logged in all the parameters will be send. See database detail

• After successful completion of the parameter file upload the good card list (GCL) will be send.

• After successful completion of the CGL all vouchers issued will be send from the current terminal to the server, to be stored in the database.

• After successful completion of the voucher download the terminal will logout

Note: The server can not initiate communication with the terminal, the terminal initiates communications and send commands to the server. The server only responds on the valid commands. The terminal will connect at the time as specified in the parameter file send.

Author: Andre Ladeira Print Date: 2003/03/04 Document Source: BSL-Template-TDD Nu-metro.doc Revision 0.01

Page 103: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

Database Design

Database tables used

NuMetroStatusHist

PK (:2kiNMStatusHistld

fkiMemberCustld qwfldinfo_NMstat dtEffectiveDate dtTerminationDate dtTimeStamp

NUMetroTerminal

PK (:2kiNUMetroTerminall!;!

fkiBUOrgld sTerminalld dtEffectiveDate dtTerminationDate dtTimeStamp

NUMetroMemberDetail

PK (:2kiNUMetroMemberDetailld

sTransactionType ~ sCardNo INoOfDependants dtTimeStamp

NUMetroVoucherDetail

PK 1:21siNUMetroVoucherDetailld

fkiNUMetrologinHistoryld sControiData sVoucherNo sCardNo dtVoucherlssued INoOmckets sManagerPinNo dtTimeStamp

Author: Andre Ladeira

NU Metro Server

NUMetrologinHistory

PK (:2kiNUMetroLoginHisto0£1d

fkiBUOrgld dtloginRequested bloginSuccessfull bDataTransferCompleted dtlogout

~~

NUMetroMemberDetaiiUpload

PK (:2kiNUMetroMemberDetaiiU(:21oadld

FK1 fkiN UMetrolog in H istoryld sSeqNo INoOfCards dtTimeStamp bSent dtSent

·~

NUMetroMemberDetaiiSeqNo

PK (:2kiNUM!iltroMemberDetaiiSegNold

FK2 fkiNUMetroMemberDetaiiUploadld FK1 fkiNUMetroMemberDetailld

dtTimeStamp

NUMetroMemberDetaii_Processed

pkiNUMetroMemberDetailld sTransactionType sCardNo INoOfDependants dtTimeStamp

Document Source: BSL-Template-TDD Nu-metro.doc

Product: Nu Metro Server Project: Brasilia

NUMetroParameter

PK (:2kiNUMetrQParameterld

fkiBUOrgld sMerchantNo sSiteVenue sAccountSiteNo sNextCaiiTime sNextCaiiMethod sNextCaiiNo sNextSeqNo !Velocity IMaxTicketsPerVoucher sManager _1_PinNo sManager_1_CardNo sManager_2_PinNo sManager_2_CardNo dtEffectiveDate dtTerminationDate dtTimeStamp NUA_No_1 NUA_No_2 NUA_No_3

Print Date: 2003/03/04 Revision 0.01

Page 104: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

Data related issues

Table: FS BAckoffice.NuMetroParameter ..

NU Metro Server Product: Nu Metro Server Project: Brasilia

Description: This contains all the relevant data to be loaded onto the terminal (see communication protocol for detail)

Column Value Description

pkiNUMetroParameterld lnt Primary key

fkiBUOrgld lnt Unique organization id

sMerchantNo Char Cinema merchant number

sSiteVenue Varchar Cinema name

sAccountSiteNo Varchar Freestyle account number

sNextCaiiTime Char Login time every day

sNextCaiiMethod Char Call method (X25)

sNextCaiiNo Char Other call number

sNextSeqNo Varchar Next voucher sequence number

IVeloci!Y_ Tinyjnt Velocity

IMaxTicketsPerVoucher Tinyint Max number of tickets to be issued

sManager 1 Pin No Char Manager one's pin number for supervisors card

sManag_er 1 Card No Char Managersone's card number for supervisors card

sManager 2 Pin No Char Manager two's pin number for supervisors card

sManager 2 Card No Char Managers two's card number for supervisors card

dtEffectiveDate Datetime From when active

dtTerminationDate Datetime To when active

dtTimeStamp Datetime Date creates

NUA No 1 varchar NUA number to access

NuMetroLobginHistory

Table: FS BAckoffice. NuMetrolobginHistory

Description: Inserts all the detail of terminal that is requesting connection

Column Value Description

pkiNUMetrologinHistoryld lnt Primary key

fkiBUOrgld lnt Organization ld

dtloginRequested Datetime Date of login

bloginSuccessfull Bit Was login successful

bDataTransferCompleted bit Was data transfer completed

dtlogout Datetime Date of logout

Author: Andre Ladeira Print Date: 2003/03/04 Document Source: BSL-Template-TDD Nu-metro.doc Revision 0.01

Page 105: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

NU Metro Server

N uMetroStatusH ist

Table: FS BAckoffice. NuMetroStatusHist

Description: Store status detail of nu metro members

Column Value Description

pkiNMStatusHistld lnt Pkey

fkiMemberCustld lnt Customer ID

qwfldinfo NMstat lnt

dtEffectiveDate Datetime Effective date

dtTerminationDate Datetime Termination date

dtTimeStamp datetime

NuMetroTerminal

Table: FS BAckoffice. NuMetroTerminal

Description: Store all the terminal detail

Column Value Description

pkiNUMetroTerminalld lnt Pkey

fkiBUOrgld lnt Organization ID

sTerminalld varchar TerminaiiD

dtEffectiveDate Datetime Effective date

dtTerminationDate Datetime Termination Date

dtTimeStamp Datetime

NuMetroMemberdetaiiUpload

Table: FS BAckoffice. NuMetroMemberdetaiiUpload

Product: Nu Metro Server Project: Brasilia

Description: Store the detail of all the member detail uploaded to each terminal

Column Value Description

pkiNUMetroTerminalld lnt Pke_y_

fkiBUOrgld lnt Organization ID

sTerminalld varchar TerminaiiD

dtEffectiveDate Datetime Effective date

dtTerminationDate Datetime Termination Date

dtTimeStamp Datetime

Author: Andre Ladeira Print Date: 2003/03/04 Document Source: BSL-Template-TDD Nu-metro.doc Revision 0.01

Page 106: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

NuMetromemberdetail

Table: FS BAckoffice. NuMetromemberdetail

NU Metro Server Product: Nu Metro Server Project: Brasilia

DescriQ_tion: All members that must be uploaded, edited or currently in the terminal memory

Column Value Description

pkiNUMetroMemberDetailld int Pkey

sTransactionTYQ_e char Transaction type (Add or delete))

sCardNo Char Member card number

INoOfDependants Tinyint Number of dependants

dtTimeStamp Datetime

NuMetromemberdetaiiSeqNo

Table: FS BAckoffice. NuMetromemberdetaiiSeqNo

Description: Member detail upload sequence number linked table

Column Value Description

pkiNUMetroMemberDetaiiSeqNold lnt Pkey

fkiNUMetroMemberDetaiiUploadld lnt Link to numetroMemberdetailupload

fkiNUMetroMemberDetailld int Link to Numetromemberdetail

dtTimeStamp Datetime

NuMetroVoucherDetail

Table: FS BAckoffice. NuMetroVoucherDetail

Description: Store the detail of all the member detail uploaded to each terminal

Column Value Description

pkiNUMetroVoucherDetailld lnt Pke_y

fkiNUMetrologinHistoryld lnt Link to Numetromemberloginhistory table

sControiData Varchar

sVoucherNo Varchar Voucher number

sCardNo Char Card number

dtVoucherlssued Datetime Date voucher issued

INoOfTickets Tinyint Number of tickets for member

Author: Andre Ladeira Print Date: 2003/03/04 Document Source: BSL-Template-TDD Nu-metro.doc Revision 0.01

Page 107: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

sManagerPinNo

dtTimeStamp

Char

datetime

NuMetroMemberDetaii_Processed

NU Metro Server

Table: FS BAckoffice. NuMetroMemberDetail Processed

Product: Nu Metro Server Project: Brasilia

Was the ticket overridden

Description: Store the detail of all the member detail uploaded to each terminal

Column Value Description

pkiNUMetroMemberDetailld int Pkey

sTransactionTy:pe Char Transaction type

sCardNo Char Member card number

INoOfDependants Tinyint No of dependants

dtTimeStamp Datetime

Store Procedures Used

NuMetroMemberFilePopulate.

Select the member details to be uploaded to terminal. Only 13 members can be uploaded per message. This store procedure retrieves 13 members at a time.

NuMetroRetrieveMemberDetail

Retieve all the member detail

NuMetroUpdateMemberDetai/Send

Update table NuMetroMemberDetaiiUpload to indicate that data has been sent

Numetro Termina/PasswordValidate

Validates terminal password

NuMetroLoginHistoryLog

Inserts record into NUMetrologinHistory table

Author: Andre Ladeira Print Date: 2003/03/04 Document Source: BSL-Template-TDD Nu-metro.doc Revision 0.01

Page 108: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

NuMetroVoucherDetaillnsert

NU Metro Server

Insert all voucher detail uploaded from terminal

NuMetroParameterSelect

Retrieve parameter detail for specific terminal

MemberValidationdetail

Product: Nu Metro Server Project: Brasilia

Select all valid Nu metro clients. Used to determine the amount of packages (messages to be send)

NuMetroCinemasNotEntered

Selects all cinemas that has not entered for a specific day

Author: Andre Ladeira Print Date: 2003/03/04 Document Source: BSL-Template-TDD Nu-metro.doc Revision 0.01

Page 109: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

Technical Components

Communication Protocol

NU Metro Server

Operational and Protocol specification

Product: Nu Metro Server Project: Brasilia

HOST (Server) ~lngenico communication (Client)

Communication Protocol

Direction STX CMD LEN DATA ETX CHK

HOST=> TERM [STX] F[XXX] 4 Bytes As per [ETX] [CHK]

TERM=> HOST I[XXX] specification

2 Bytes

lXXXl = Name of process

Description

Field Description

STX Ox02

CMD Example 'FLIN'

LEN Length of data to follow, in ASCII '0012' indicates a lenqth of 12

DATA Depends on CMD

ETX Ox03

CHK XOR of all data, excluding STX. Result in ASCII 'FD' indicates a CHK of OxFD

All numeric data in the DATA tag from Host and terminal will be compressed numeric.

Login and Logout

Login- Terminal to Host Request

I Direction I STX I CMD

Author: Andre Ladeira Document Source: BSL-Template-TDD Nu-metro.doc

I DATA I CHK

Print Date: 2003/03/04 Revision 0.01

Page 110: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

TERM=> HOST I [STX] IILIN [Y] = TerminaiiD (8 Bytes, Numeric)

Login - Host to Terminal Reply

Direction STX CMD

HOST=> TERM [STX] FUN

NU Metro Server

I ooo8

LEN DATA

00013 [X][Zl

[X] =Valid login (1 -accepted, 0- rejected, 1 Byte, Numeric)

[Z] = Host date and time (DDYYMMDDHHMM, 12 Bytes, Numeric)

Logout- Terminal to Host Request

Direction STX CMD

TERM=> HOST [STX] I LOT

lY] = TerminaiiD ( 8 Bytes, Numeric)

Logout- Host to Terminal Reply

Direction STX CMD

HOST=> TERM [STX] FLOT

Voucher batch upload

Batch detail

Request

Direction STX CMD

TERM=> HOST [STX] IVBU

Author: Andre Ladeira

LEN

0008

LEN

0000

LEN

4 Bytes

Document Source: BSL-Template-TDD Nu-metro.doc

DATA

[Yl

DATA

DATA

[A][B][X][C1 ][C2]

Product: Nu Metro Server Project: Brasilia

I [ETXl I [CHK]

ETX CHK

[ETXl [CHK]

ETX CHK

[ETXl [CHK]

ETX CHK

[ETX] [CHK]

ETX CHK

[ETX] [CHK]

Print Date: 2003/03/04 Revision 0.01

Page 111: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

I Notes

I I

NU Metro Server

I rc3JrC4l rc5J I

Product: Nu Metro Server Project: Brasilia

I

[A] = Packet number to be retrieved (2 bytes length, truncated with nulls if needed , Numeric)

[B] = Total number of packets to be send (2 bytes length, truncated with nulls if needed , Numeric)

[X] = Number of record sent (2 bytes, Numeric)

[C1] =Voucher number (8 Bytes, Numeric)

[C2] = Card Number (14 Bytes, Numeric)

[C3] = Current Date Time (YYYYMMDDHHMM, 12 Bytes, Numeric)

[C4] = Number of tickets (2 Bytes, Numeric)

[C5] =Manager Number (1 Bytes, Numeric)

Fields [C1] to [C5] are repeated [X] times.

Field [C] is repeated [X] times where [X] may not be > 5

LEN = Variable

Description • Number of records in the voucher file for the specific package send • Voucher number. The number that was printed on the voucher • Card Number. The number of the card that was used • Current Date Time. The date and time the ticket was issued • Number of tickets. Number of tickets requested • Manager Number. The manager number as per the parameter file. If manager number= 1 then it

is 'Manager One Card Number' as per parameter file. The same if the manager number= 2. If the manager number= 0 then there was no override.

Reply

Batch detail Response

Direction STX CMD LEN DATA ETX CHK

TERM=> HOST [STX] FVBU 0002 [X] [ETX] [CHK]

Notes

Author: Andre Ladeira Print Date: 2003/03/04 Document Source: BSL-Template-TDD Nu-metro.doc Revision 0.01

Page 112: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

NU Metro Server

[X]= Number of record received (2 bytes, Numeric)

LEN= 2

Parameter File - Host to terminal

Request

Direction STX CMD LEN

TERM= HOST [STX] IPAF 0000

Notes

This will be a request for the parameter file

Reply

DATA

Product: Nu Metro Server Project: Brasilia

ETX CHK

[ETX] [CHK]

Direction STX CMD LEN DATA ETX CHK

HOST => [STX] FPAF 0153 TERM

Notes

[A]= Merchant Number (14 Bytes, Numeric)

[B] = Site Venue (24 Bytes, Alpha Numeric)

[C] =Account Site Number (10 Bytes, Numeric)

[D] = Next Time (HHMM, 4 Bytes, Numeric)

[E] = Next Call Method (3 Bytes, Alpha Numeric)

[F] =Next Call Number (10 Bytes, Numeric)

[H] = Next Sequence Number (8 Bytes, Numeric)

[I] =Velocity Values (2 Bytes, Numeric)

[J] =Tickets Per Voucher (2 Bytes, Numeric)

[A][B][C][D][E][F][H] [ETX] [CHK]

[I][ J ][K][L ][M][N][O ][P][Qj_

[K] =Manager One Pin Number (6 Bytes, Numeric)

Author: Andre Ladeira Print Date: 2003/03/04 Document Source: BSL-Template-TDD Nu-metro.doc Revision 0.01

Page 113: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

NU Metro Server

[L] =Manager One Card Number (14 bytes, Numeric)

[M] = Manager Two Pin Number (6 Bytes, Numeric)

[N] =Manager Two Card Number (14 bytes, Numeric)

[0] = NUA1 (12 Bytes, Numeric)

[P] = NUA2 (12 Bytes, Numeric)

[Q] = NUA3 (12 Bytes, Numeric)

Description

Product: Nu Metro Server Project: Brasilia

• Merchant Number. Unique number allocated by Freestyle to each individual card reader. This number will be used to uniquely identify the site.

• Site Venue. Indicates the site and the venue of the card reader • Account Site Number. Number for accounting purposes. • Next Call Date and Time. Next time for upload • Next Call Method. Will not be used for launch, but may be used in the future if a different medium

is available to transfer data. The default value will be "X25" • Next Call Number. Number needed to use for different medium. The value will be populated with

10 nulls. • Next Sequence Number. Specifies the next number to be printed on the next voucher issued. If

this value is not provided, the next sequential number in the card reader must be used. The voucher number will be as follow MMDDXXXX where XXXX is the sequential number.

• Velocity Values. Specifies the time required to elapse before a card can be approved as a valid re-swipe. Default will be 24 hours.

• Tickets Per Voucher. Specifies the maximum amount of tickets that can be issued on a voucher. Default value of 000 will mean according to max number of participating members on the card.

• Manager Pin Number. Stores the manager's pin number. If this pin number is not provided the old number must be retained.

• Manager Card Number. Card number of manager to be used to override system.

Good List Upload- Member Data

Data upload

Request

Direction STX CMD LEN

TERM=> HOST [STX] IGLU 0012

Notes

DATA ETX CHK

[A] [ETX] [CHK]

[A] = Sequence Number [CCYYMMDDXXXX] (12 Bytes, Numeric) where XXXX indicates the package to be send

Reply

Author: Andre Ladeira Print Date: 2003/03/04 Document Source: BSL-Template-TDD Nu-metro.doc Revision 0.01

Page 114: Cost Estimation Methods For Software Engineering

Electric Liberty Technical Specification

Direction

HOST=> TERM

Notes

STX CMD

LSTX] FGLU

NU Metro Server

LEN DATA

4 Bytes lAJLB]lCJLDJLEl

[A]= Next sequence number [CCYYMMDDXXXX] (12 Bytes, Numeric)

[B] = Number of Cards [X] to follow (up to max of 13) (2 Bytes, Numeric)

[C] =Add "A" or Delete "D" (1 bytes, Alpha Numeric)

[D] =Card Number (14 Bytes, Numeric)

[E] = Number of dependants (2 Bytes, Numeric)

Field [C][D][E] is repeated [X] times where [X] may not be > 13

LEN = Variable

Product: Nu Metro Server Project: Brasilia

ETX CHK

JET)9 LCHKl

If the host returns the same sequence value, it would indicate that there are no more cards to download. In this case [X] will also= zero

Supervisors Card

There will be two cards issued per site. The cards will have the following detail: • Track One- "NU" +Card number (5555XXXXXXXXC) where XXXXXXXX is the unique number

and C the check sum. • Track Two - Merchant Number

Each manager will be allocated with a 6 digit password. Once the supervisor's card is swiped the manager will be prompted to enter the password.

The password will be validated against the data that has been downloaded in the parameter file.

Author: Andre Ladeira Print Date: 2003/03/04 Document Source: BSL-Template-TDD Nu-metro.doc Revision 0.01